From 500caaeda74dd9c660279036293f4b2997cf0b03 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 9 Sep 2017 09:42:37 +0200 Subject: Add vendor --- vendor/github.com/llgcode/draw2d/.gitignore | 23 + vendor/github.com/llgcode/draw2d/AUTHORS | 2 + vendor/github.com/llgcode/draw2d/LICENSE | 18 + vendor/github.com/llgcode/draw2d/README.md | 143 + vendor/github.com/llgcode/draw2d/draw2d.go | 239 + .../github.com/llgcode/draw2d/draw2dbase/README.md | 7 + .../github.com/llgcode/draw2d/draw2dbase/curve.go | 161 + .../llgcode/draw2d/draw2dbase/curve_test.go | 134 + .../github.com/llgcode/draw2d/draw2dbase/dasher.go | 89 + .../llgcode/draw2d/draw2dbase/demux_flattener.go | 35 + .../llgcode/draw2d/draw2dbase/flattener.go | 127 + .../github.com/llgcode/draw2d/draw2dbase/line.go | 58 + .../llgcode/draw2d/draw2dbase/stack_gc.go | 203 + .../llgcode/draw2d/draw2dbase/stroker.go | 90 + .../github.com/llgcode/draw2d/draw2dbase/text.go | 68 + vendor/github.com/llgcode/draw2d/draw2dgl/doc.go | 3 + vendor/github.com/llgcode/draw2d/draw2dgl/gc.go | 411 + vendor/github.com/llgcode/draw2d/draw2dgl/notes.md | 6 + vendor/github.com/llgcode/draw2d/draw2dgl/text.go | 82 + .../github.com/llgcode/draw2d/draw2dimg/README.md | 8 + .../llgcode/draw2d/draw2dimg/fileutil.go | 46 + vendor/github.com/llgcode/draw2d/draw2dimg/ftgc.go | 385 + .../github.com/llgcode/draw2d/draw2dimg/ftpath.go | 30 + vendor/github.com/llgcode/draw2d/draw2dimg/text.go | 82 + .../github.com/llgcode/draw2d/draw2dkit/README.md | 7 + .../llgcode/draw2d/draw2dkit/draw2dkit.go | 47 + .../llgcode/draw2d/draw2dkit/draw2dkit_test.go | 29 + .../github.com/llgcode/draw2d/draw2dpdf/README.md | 42 + vendor/github.com/llgcode/draw2d/draw2dpdf/doc.go | 41 + .../llgcode/draw2d/draw2dpdf/fileutil.go | 11 + vendor/github.com/llgcode/draw2d/draw2dpdf/gc.go | 379 + .../llgcode/draw2d/draw2dpdf/path_converter.go | 44 + .../llgcode/draw2d/draw2dpdf/samples_test.go | 65 + .../llgcode/draw2d/draw2dpdf/test_test.go | 39 + .../llgcode/draw2d/draw2dpdf/vectorizer.go | 22 + vendor/github.com/llgcode/draw2d/font.go | 154 + vendor/github.com/llgcode/draw2d/gc.go | 87 + vendor/github.com/llgcode/draw2d/matrix.go | 222 + vendor/github.com/llgcode/draw2d/output/README.md | 11 + .../llgcode/draw2d/output/curve/.gitignore | 4 + .../llgcode/draw2d/output/draw2dkit/.gitignore | 4 + .../llgcode/draw2d/output/raster/.gitignore | 4 + .../llgcode/draw2d/output/samples/.gitignore | 6 + .../llgcode/draw2d/output/samples/geometry.png | Bin 0 -> 24841 bytes .../llgcode/draw2d/output/samples/postscript.png | Bin 0 -> 41596 bytes vendor/github.com/llgcode/draw2d/path.go | 192 + .../llgcode/draw2d/resource/font/COPYING | 42 + .../github.com/llgcode/draw2d/resource/font/README | 24 + .../llgcode/draw2d/resource/font/luximb.ttf | Bin 0 -> 74076 bytes .../llgcode/draw2d/resource/font/luximbi.json | 1 + .../llgcode/draw2d/resource/font/luximbi.ttf | Bin 0 -> 69872 bytes .../llgcode/draw2d/resource/font/luximbi.z | Bin 0 -> 31788 bytes .../llgcode/draw2d/resource/font/luximr.ttf | Bin 0 -> 71784 bytes .../llgcode/draw2d/resource/font/luximri.ttf | Bin 0 -> 69496 bytes .../llgcode/draw2d/resource/font/luxirb.ttf | Bin 0 -> 87160 bytes .../llgcode/draw2d/resource/font/luxirbi.ttf | Bin 0 -> 85756 bytes .../llgcode/draw2d/resource/font/luxirr.ttf | Bin 0 -> 88732 bytes .../llgcode/draw2d/resource/font/luxirri.ttf | Bin 0 -> 86396 bytes .../llgcode/draw2d/resource/font/luxisb.ttf | Bin 0 -> 69972 bytes .../llgcode/draw2d/resource/font/luxisbi.ttf | Bin 0 -> 65568 bytes .../llgcode/draw2d/resource/font/luxisr.ttf | Bin 0 -> 67548 bytes .../llgcode/draw2d/resource/font/luxisri.ttf | Bin 0 -> 66372 bytes .../llgcode/draw2d/resource/image/geometry.pdf | Bin 0 -> 38780 bytes .../llgcode/draw2d/resource/image/gopher.png | Bin 0 -> 67555 bytes .../llgcode/draw2d/resource/image/postscript.pdf | Bin 0 -> 52078 bytes .../llgcode/draw2d/resource/image/tiger.ps | 2733 ++++ .../llgcode/draw2d/resource/result/TestAndroid.png | Bin 0 -> 4597 bytes .../draw2d/resource/result/TestBigPicture.png | Bin 0 -> 1883 bytes .../llgcode/draw2d/resource/result/TestBubble.png | Bin 0 -> 4317 bytes .../draw2d/resource/result/TestCurveRectangle.png | Bin 0 -> 9670 bytes .../llgcode/draw2d/resource/result/TestDash.png | Bin 0 -> 4835 bytes .../llgcode/draw2d/resource/result/TestDrawArc.png | Bin 0 -> 5332 bytes .../draw2d/resource/result/TestDrawArcNegative.png | Bin 0 -> 6539 bytes .../draw2d/resource/result/TestDrawCubicCurve.png | Bin 0 -> 8271 bytes .../draw2d/resource/result/TestDrawImage.png | Bin 0 -> 23445 bytes .../draw2d/resource/result/TestFillString.png | Bin 0 -> 3267 bytes .../draw2d/resource/result/TestFillStroke.png | Bin 0 -> 5887 bytes .../draw2d/resource/result/TestFillStyle.png | Bin 0 -> 10021 bytes .../llgcode/draw2d/resource/result/TestGopher.png | Bin 0 -> 13826 bytes .../llgcode/draw2d/resource/result/TestLineCap.png | Bin 0 -> 2234 bytes .../draw2d/resource/result/TestLineJoin.png | Bin 0 -> 3710 bytes .../resource/result/TestMultiSegmentCaps.png | Bin 0 -> 2228 bytes .../llgcode/draw2d/resource/result/TestPath.png | Bin 0 -> 2295 bytes .../draw2d/resource/result/TestPathTransform.png | Bin 0 -> 10413 bytes .../draw2d/resource/result/TestRoundRectangle.png | Bin 0 -> 5122 bytes .../llgcode/draw2d/resource/result/TestStar.png | Bin 0 -> 12855 bytes .../draw2d/resource/result/TestTransform.png | Bin 0 -> 6210 bytes vendor/github.com/llgcode/draw2d/samples/README.md | 88 + .../llgcode/draw2d/samples/android/android.go | 76 + .../llgcode/draw2d/samples/appengine/app.yaml | 8 + .../llgcode/draw2d/samples/appengine/server.go | 73 + .../draw2d/samples/frameimage/frameimage.go | 60 + .../llgcode/draw2d/samples/geometry/geometry.go | 334 + .../llgcode/draw2d/samples/gopher/gopher.go | 73 + .../llgcode/draw2d/samples/gopher2/gopher2.go | 122 + .../draw2d/samples/helloworld/helloworld.go | 40 + .../draw2d/samples/helloworldgl/helloworldgl.go | 119 + .../github.com/llgcode/draw2d/samples/line/line.go | 39 + .../draw2d/samples/linecapjoin/linecapjoin.go | 52 + .../draw2d/samples/postscript/postscript.go | 49 + .../draw2d/samples/postscriptgl/postscriptgl.go | 114 + .../llgcode/draw2d/samples/postscriptgl/tiger.ps | 2733 ++++ .../github.com/llgcode/draw2d/samples/samples.go | 24 + vendor/github.com/llgcode/draw2d/samples_test.go | 60 + vendor/github.com/llgcode/draw2d/test | 8 + vendor/github.com/llgcode/draw2d/test_test.go | 30 + vendor/github.com/llgcode/ps/.gitignore | 24 + vendor/github.com/llgcode/ps/LICENSE.md | 18 + vendor/github.com/llgcode/ps/README.md | 7 + vendor/github.com/llgcode/ps/interpreter.go | 312 + vendor/github.com/llgcode/ps/operators.go | 41 + vendor/github.com/llgcode/ps/operators_array.go | 99 + vendor/github.com/llgcode/ps/operators_conflict.go | 96 + vendor/github.com/llgcode/ps/operators_control.go | 80 + .../github.com/llgcode/ps/operators_dictionary.go | 193 + vendor/github.com/llgcode/ps/operators_graphics.go | 489 + vendor/github.com/llgcode/ps/operators_math.go | 177 + vendor/github.com/llgcode/ps/operators_misc.go | 38 + .../github.com/llgcode/ps/operators_relational.go | 40 + vendor/github.com/llgcode/ps/operators_stack.go | 98 + vendor/github.com/llgcode/ps/procedure.go | 46 + .../llgcode/ps/result/TestPostscript.png | Bin 0 -> 161418 bytes vendor/github.com/llgcode/ps/samples/3dcolor.ps | 57 + .../github.com/llgcode/ps/samples/JavaPlatform.ps | 12684 +++++++++++++++++++ vendor/github.com/llgcode/ps/samples/Koch.ps | 76 + vendor/github.com/llgcode/ps/samples/Mand.ps | 68 + vendor/github.com/llgcode/ps/samples/bell_206.ps | 3537 ++++++ vendor/github.com/llgcode/ps/samples/colorcir.ps | 125 + vendor/github.com/llgcode/ps/samples/doretree.ps | 2485 ++++ vendor/github.com/llgcode/ps/samples/escher.ps | 380 + vendor/github.com/llgcode/ps/samples/golfer.ps | 1398 ++ vendor/github.com/llgcode/ps/samples/grade.ps | 917 ++ vendor/github.com/llgcode/ps/samples/grayalph.ps | 65 + vendor/github.com/llgcode/ps/samples/manylines.ps | 939 ++ vendor/github.com/llgcode/ps/samples/maze.ps | 275 + vendor/github.com/llgcode/ps/samples/snowflak.ps | 91 + vendor/github.com/llgcode/ps/samples/test1.ps | 50 + vendor/github.com/llgcode/ps/samples/tiger.ps | 2733 ++++ vendor/github.com/llgcode/ps/samples/vasarely.ps | 588 + vendor/github.com/llgcode/ps/samples/vw.ps | 2743 ++++ vendor/github.com/llgcode/ps/samples/whitepaper.ps | 5043 ++++++++ vendor/github.com/llgcode/ps/samples_test.go | 58 + vendor/github.com/llgcode/ps/scanner.go | 572 + 143 files changed, 47404 insertions(+) create mode 100644 vendor/github.com/llgcode/draw2d/.gitignore create mode 100644 vendor/github.com/llgcode/draw2d/AUTHORS create mode 100644 vendor/github.com/llgcode/draw2d/LICENSE create mode 100644 vendor/github.com/llgcode/draw2d/README.md create mode 100644 vendor/github.com/llgcode/draw2d/draw2d.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/README.md create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/curve.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/curve_test.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/dasher.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/demux_flattener.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/flattener.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/line.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/stack_gc.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/stroker.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dbase/text.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dgl/doc.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dgl/gc.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dgl/notes.md create mode 100644 vendor/github.com/llgcode/draw2d/draw2dgl/text.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dimg/README.md create mode 100644 vendor/github.com/llgcode/draw2d/draw2dimg/fileutil.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dimg/ftgc.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dimg/ftpath.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dimg/text.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dkit/README.md create mode 100644 vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit_test.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/README.md create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/doc.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/fileutil.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/gc.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/samples_test.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/test_test.go create mode 100644 vendor/github.com/llgcode/draw2d/draw2dpdf/vectorizer.go create mode 100644 vendor/github.com/llgcode/draw2d/font.go create mode 100644 vendor/github.com/llgcode/draw2d/gc.go create mode 100644 vendor/github.com/llgcode/draw2d/matrix.go create mode 100644 vendor/github.com/llgcode/draw2d/output/README.md create mode 100644 vendor/github.com/llgcode/draw2d/output/curve/.gitignore create mode 100644 vendor/github.com/llgcode/draw2d/output/draw2dkit/.gitignore create mode 100644 vendor/github.com/llgcode/draw2d/output/raster/.gitignore create mode 100644 vendor/github.com/llgcode/draw2d/output/samples/.gitignore create mode 100644 vendor/github.com/llgcode/draw2d/output/samples/geometry.png create mode 100644 vendor/github.com/llgcode/draw2d/output/samples/postscript.png create mode 100644 vendor/github.com/llgcode/draw2d/path.go create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/COPYING create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/README create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luximb.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luximbi.json create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luximbi.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luximbi.z create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luximr.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luximri.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxirb.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxirbi.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxirr.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxirri.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxisb.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxisbi.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxisr.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/font/luxisri.ttf create mode 100644 vendor/github.com/llgcode/draw2d/resource/image/geometry.pdf create mode 100644 vendor/github.com/llgcode/draw2d/resource/image/gopher.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/image/postscript.pdf create mode 100644 vendor/github.com/llgcode/draw2d/resource/image/tiger.ps create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestAndroid.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestBigPicture.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestBubble.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestCurveRectangle.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestDash.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestDrawArc.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestDrawArcNegative.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestDrawCubicCurve.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestDrawImage.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestFillString.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestFillStroke.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestFillStyle.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestGopher.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestLineCap.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestLineJoin.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestMultiSegmentCaps.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestPath.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestPathTransform.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestRoundRectangle.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestStar.png create mode 100644 vendor/github.com/llgcode/draw2d/resource/result/TestTransform.png create mode 100644 vendor/github.com/llgcode/draw2d/samples/README.md create mode 100644 vendor/github.com/llgcode/draw2d/samples/android/android.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/appengine/app.yaml create mode 100644 vendor/github.com/llgcode/draw2d/samples/appengine/server.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/frameimage/frameimage.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/geometry/geometry.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/gopher/gopher.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/gopher2/gopher2.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/helloworld/helloworld.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/helloworldgl/helloworldgl.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/line/line.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/postscript/postscript.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/postscriptgl/postscriptgl.go create mode 100644 vendor/github.com/llgcode/draw2d/samples/postscriptgl/tiger.ps create mode 100644 vendor/github.com/llgcode/draw2d/samples/samples.go create mode 100644 vendor/github.com/llgcode/draw2d/samples_test.go create mode 100755 vendor/github.com/llgcode/draw2d/test create mode 100644 vendor/github.com/llgcode/draw2d/test_test.go create mode 100644 vendor/github.com/llgcode/ps/.gitignore create mode 100644 vendor/github.com/llgcode/ps/LICENSE.md create mode 100644 vendor/github.com/llgcode/ps/README.md create mode 100644 vendor/github.com/llgcode/ps/interpreter.go create mode 100644 vendor/github.com/llgcode/ps/operators.go create mode 100644 vendor/github.com/llgcode/ps/operators_array.go create mode 100644 vendor/github.com/llgcode/ps/operators_conflict.go create mode 100644 vendor/github.com/llgcode/ps/operators_control.go create mode 100644 vendor/github.com/llgcode/ps/operators_dictionary.go create mode 100644 vendor/github.com/llgcode/ps/operators_graphics.go create mode 100644 vendor/github.com/llgcode/ps/operators_math.go create mode 100644 vendor/github.com/llgcode/ps/operators_misc.go create mode 100644 vendor/github.com/llgcode/ps/operators_relational.go create mode 100644 vendor/github.com/llgcode/ps/operators_stack.go create mode 100644 vendor/github.com/llgcode/ps/procedure.go create mode 100644 vendor/github.com/llgcode/ps/result/TestPostscript.png create mode 100644 vendor/github.com/llgcode/ps/samples/3dcolor.ps create mode 100644 vendor/github.com/llgcode/ps/samples/JavaPlatform.ps create mode 100644 vendor/github.com/llgcode/ps/samples/Koch.ps create mode 100644 vendor/github.com/llgcode/ps/samples/Mand.ps create mode 100644 vendor/github.com/llgcode/ps/samples/bell_206.ps create mode 100644 vendor/github.com/llgcode/ps/samples/colorcir.ps create mode 100644 vendor/github.com/llgcode/ps/samples/doretree.ps create mode 100644 vendor/github.com/llgcode/ps/samples/escher.ps create mode 100644 vendor/github.com/llgcode/ps/samples/golfer.ps create mode 100644 vendor/github.com/llgcode/ps/samples/grade.ps create mode 100644 vendor/github.com/llgcode/ps/samples/grayalph.ps create mode 100644 vendor/github.com/llgcode/ps/samples/manylines.ps create mode 100644 vendor/github.com/llgcode/ps/samples/maze.ps create mode 100644 vendor/github.com/llgcode/ps/samples/snowflak.ps create mode 100644 vendor/github.com/llgcode/ps/samples/test1.ps create mode 100644 vendor/github.com/llgcode/ps/samples/tiger.ps create mode 100644 vendor/github.com/llgcode/ps/samples/vasarely.ps create mode 100644 vendor/github.com/llgcode/ps/samples/vw.ps create mode 100644 vendor/github.com/llgcode/ps/samples/whitepaper.ps create mode 100644 vendor/github.com/llgcode/ps/samples_test.go create mode 100644 vendor/github.com/llgcode/ps/scanner.go (limited to 'vendor/github.com/llgcode') diff --git a/vendor/github.com/llgcode/draw2d/.gitignore b/vendor/github.com/llgcode/draw2d/.gitignore new file mode 100644 index 0000000..3527a30 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +**/*.[568ao] +**/*.ao +**/*.so +**/*.pyc +**/._* +**/.nfs.* +**/[568a].out +**/*.exe +**/*~ +**/*.orig +**/*.out +**/*.test +core +_obj +_test +out.png +_test* + +**/*.dll +**/core*[0-9] +.private + diff --git a/vendor/github.com/llgcode/draw2d/AUTHORS b/vendor/github.com/llgcode/draw2d/AUTHORS new file mode 100644 index 0000000..6490085 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/AUTHORS @@ -0,0 +1,2 @@ +Laurent Le Goff +Stani Michiels, gmail:stani.be \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/LICENSE b/vendor/github.com/llgcode/draw2d/LICENSE new file mode 100644 index 0000000..c495dbc --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/LICENSE @@ -0,0 +1,18 @@ +Copyright (c) 2010, Laurent Le Goff +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/README.md b/vendor/github.com/llgcode/draw2d/README.md new file mode 100644 index 0000000..d2e408b --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/README.md @@ -0,0 +1,143 @@ +draw2d +====== +[![Coverage](http://gocover.io/_badge/github.com/llgcode/draw2d?0)](http://gocover.io/github.com/llgcode/draw2d) +[![GoDoc](https://godoc.org/github.com/llgcode/draw2d?status.svg)](https://godoc.org/github.com/llgcode/draw2d) + +Package draw2d is a pure [go](http://golang.org) 2D vector graphics library with support for multiple output devices such as [images](http://golang.org/pkg/image) (draw2d), pdf documents (draw2dpdf) and opengl (draw2dgl), which can also be used on the google app engine. It can be used as a pure go [Cairo](http://www.cairographics.org/) alternative. draw2d is released under the BSD license. See the [documentation](http://godoc.org/github.com/llgcode/draw2d) for more details. + +[![geometry](https://raw.githubusercontent.com/llgcode/draw2d/master/output/samples/geometry.png)](https://raw.githubusercontent.com/llgcode/draw2d/master/resource/image/geometry.pdf)[![postscript](https://raw.githubusercontent.com/llgcode/draw2d/master/output/samples/postscript.png)](https://raw.githubusercontent.com/llgcode/draw2d/master/resource/image/postscript.pdf) + +Click on an image above to get the pdf, generated with exactly the same draw2d code. The first image is the output of `samples/geometry`. The second image is the result of `samples/postcript`, which demonstrates that draw2d can draw postscript files into images or pdf documents with the [ps](https://github.com/llgcode/ps) package. + +Features +-------- + +Operations in draw2d include stroking and filling polygons, arcs, Bézier curves, drawing images and text rendering with truetype fonts. All drawing operations can be transformed by affine transformations (scale, rotation, translation). + +Package draw2d follows the conventions of the [HTML Canvas 2D Context](http://www.w3.org/TR/2dcontext/) for coordinate system, angles, etc... + +Installation +------------ + +Install [golang](http://golang.org/doc/install). To install or update the package draw2d on your system, run: + +Stable release +``` +go get -u gopkg.in/llgcode/draw2d.v1 +``` + +or Current release +``` +go get -u github.com/llgcode/draw2d +``` + + +Quick Start +----------- + +The following Go code generates a simple drawing and saves it to an image file with package draw2d: + +```go +package main + +import ( + "github.com/llgcode/draw2d/draw2dimg" + "image" + "image/color" +) + +func main() { + // Initialize the graphic context on an RGBA image + dest := image.NewRGBA(image.Rect(0, 0, 297, 210.0)) + gc := draw2dimg.NewGraphicContext(dest) + + // Set some properties + gc.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff}) + gc.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff}) + gc.SetLineWidth(5) + + // Draw a closed shape + gc.MoveTo(10, 10) // should always be called first for a new path + gc.LineTo(100, 50) + gc.QuadCurveTo(100, 10, 10, 10) + gc.Close() + gc.FillStroke() + + // Save to file + draw2dimg.SaveToPngFile("hello.png", dest) +} +``` + +The same Go code can also generate a pdf document with package draw2dpdf: + +```go +package main + +import ( + "github.com/llgcode/draw2d/draw2dpdf" + "image/color" +) + +func main() { + // Initialize the graphic context on an RGBA image + dest := draw2dpdf.NewPdf("L", "mm", "A4") + gc := draw2dpdf.NewGraphicContext(dest) + + // Set some properties + gc.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff}) + gc.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff}) + gc.SetLineWidth(5) + + // Draw a closed shape + gc.MoveTo(10, 10) // should always be called first for a new path + gc.LineTo(100, 50) + gc.QuadCurveTo(100, 10, 10, 10) + gc.Close() + gc.FillStroke() + + // Save to file + draw2dpdf.SaveToPdfFile("hello.pdf", dest) +} +``` + +There are more examples here: https://github.com/llgcode/draw2d/tree/master/samples + +Drawing on opengl is provided by the draw2dgl package. + +Testing +------- + +The samples are run as tests from the root package folder `draw2d` by: +``` +go test ./... +``` +Or if you want to run with test coverage: +``` +go test -cover ./... | grep -v "no test" +``` +This will generate output by the different backends in the output folder. + +Acknowledgments +--------------- + +[Laurent Le Goff](https://github.com/llgcode) wrote this library, inspired by [Postscript](http://www.tailrecursive.org/postscript) and [HTML5 canvas](http://www.w3.org/TR/2dcontext/). He implemented the image and opengl backend with the [freetype-go](https://code.google.com/p/freetype-go/) package. Also he created a pure go [Postscript interpreter](https://github.com/llgcode/ps), which can read postscript images and draw to a draw2d graphic context. [Stani Michiels](https://github.com/stanim) implemented the pdf backend with the [gofpdf](https://github.com/jung-kurt/gofpdf) package. + + + +Packages using draw2d +--------------------- + + - [ps](https://github.com/llgcode/ps): Postscript interpreter written in Go + - [gonum/plot](https://github.com/gonum/plot): drawing plots in Go + - [go.uik](https://github.com/skelterjohn/go.uik): a concurrent UI kit written in pure go. + - [smartcrop](https://github.com/muesli/smartcrop): content aware image cropping + - [karta](https://github.com/peterhellberg/karta): drawing Voronoi diagrams + - [chart](https://github.com/vdobler/chart): basic charts in Go + - [hilbert](https://github.com/google/hilbert): package for drawing Hilbert curves + +References +--------- + + - [antigrain.com](http://www.antigrain.com) + - [freetype-go](http://code.google.com/p/freetype-go) + - diff --git a/vendor/github.com/llgcode/draw2d/draw2d.go b/vendor/github.com/llgcode/draw2d/draw2d.go new file mode 100644 index 0000000..92a7344 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2d.go @@ -0,0 +1,239 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +// Package draw2d is a pure go 2D vector graphics library with support +// for multiple output devices such as images (draw2d), pdf documents +// (draw2dpdf) and opengl (draw2dgl), which can also be used on the +// google app engine. It can be used as a pure go Cairo alternative. +// draw2d is released under the BSD license. +// +// Features +// +// Operations in draw2d include stroking and filling polygons, arcs, +// Bézier curves, drawing images and text rendering with truetype fonts. +// All drawing operations can be transformed by affine transformations +// (scale, rotation, translation). +// +// Package draw2d follows the conventions of http://www.w3.org/TR/2dcontext for coordinate system, angles, etc... +// +// Installation +// +// To install or update the package draw2d on your system, run: +// go get -u github.com/llgcode/draw2d +// +// Quick Start +// +// Package draw2d itself provides a graphic context that can draw vector +// graphics and text on an image canvas. The following Go code +// generates a simple drawing and saves it to an image file: +// package main +// +// import ( +// "github.com/llgcode/draw2d/draw2dimg" +// "image" +// "image/color" +// ) +// +// func main() { +// // Initialize the graphic context on an RGBA image +// dest := image.NewRGBA(image.Rect(0, 0, 297, 210.0)) +// gc := draw2dimg.NewGraphicContext(dest) +// +// // Set some properties +// gc.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff}) +// gc.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff}) +// gc.SetLineWidth(5) +// +// // Draw a closed shape +// gc.MoveTo(10, 10) // should always be called first for a new path +// gc.LineTo(100, 50) +// gc.QuadCurveTo(100, 10, 10, 10) +// gc.Close() +// gc.FillStroke() +// +// // Save to file +// draw2dimg.SaveToPngFile("hello.png", dest) +// } +// +// +// There are more examples here: +// https://github.com/llgcode/draw2d/tree/master/samples +// +// Drawing on pdf documents is provided by the draw2dpdf package. +// Drawing on opengl is provided by the draw2dgl package. +// See subdirectories at the bottom of this page. +// +// Testing +// +// The samples are run as tests from the root package folder `draw2d` by: +// go test ./... +// +// Or if you want to run with test coverage: +// go test -cover ./... | grep -v "no test" +// +// This will generate output by the different backends in the output folder. +// +// Acknowledgments +// +// Laurent Le Goff wrote this library, inspired by Postscript and +// HTML5 canvas. He implemented the image and opengl backend with the +// freetype-go package. Also he created a pure go Postscript +// interpreter, which can read postscript images and draw to a draw2d +// graphic context (https://github.com/llgcode/ps). Stani Michiels +// implemented the pdf backend with the gofpdf package. +// +// Packages using draw2d +// +// - https://github.com/llgcode/ps: Postscript interpreter written in Go +// +// - https://github.com/gonum/plot: drawing plots in Go +// +// - https://github.com/muesli/smartcrop: content aware image cropping +// +// - https://github.com/peterhellberg/karta: drawing Voronoi diagrams +// +// - https://github.com/vdobler/chart: basic charts in Go +package draw2d + +import "image/color" + +// FillRule defines the type for fill rules +type FillRule int + +const ( + // FillRuleEvenOdd determines the "insideness" of a point in the shape + // by drawing a ray from that point to infinity in any direction + // and counting the number of path segments from the given shape that the ray crosses. + // If this number is odd, the point is inside; if even, the point is outside. + FillRuleEvenOdd FillRule = iota + // FillRuleWinding determines the "insideness" of a point in the shape + // by drawing a ray from that point to infinity in any direction + // and then examining the places where a segment of the shape crosses the ray. + // Starting with a count of zero, add one each time a path segment crosses + // the ray from left to right and subtract one each time + // a path segment crosses the ray from right to left. After counting the crossings, + // if the result is zero then the point is outside the path. Otherwise, it is inside. + FillRuleWinding +) + +// LineCap is the style of line extremities +type LineCap int + +const ( + // RoundCap defines a rounded shape at the end of the line + RoundCap LineCap = iota + // ButtCap defines a squared shape exactly at the end of the line + ButtCap + // SquareCap defines a squared shape at the end of the line + SquareCap +) + +// LineJoin is the style of segments joint +type LineJoin int + +const ( + // BevelJoin represents cut segments joint + BevelJoin LineJoin = iota + // RoundJoin represents rounded segments joint + RoundJoin + // MiterJoin represents peaker segments joint + MiterJoin +) + +// StrokeStyle keeps stroke style attributes +// that is used by the Stroke method of a Drawer +type StrokeStyle struct { + // Color defines the color of stroke + Color color.Color + // Line width + Width float64 + // Line cap style rounded, butt or square + LineCap LineCap + // Line join style bevel, round or miter + LineJoin LineJoin + // offset of the first dash + DashOffset float64 + // array represented dash length pair values are plain dash and impair are space between dash + // if empty display plain line + Dash []float64 +} + +// SolidFillStyle define style attributes for a solid fill style +type SolidFillStyle struct { + // Color defines the line color + Color color.Color + // FillRule defines the file rule to used + FillRule FillRule +} + +// Valign Vertical Alignment of the text +type Valign int + +const ( + // ValignTop top align text + ValignTop Valign = iota + // ValignCenter centered text + ValignCenter + // ValignBottom bottom aligned text + ValignBottom + // ValignBaseline align text with the baseline of the font + ValignBaseline +) + +// Halign Horizontal Alignment of the text +type Halign int + +const ( + // HalignLeft Horizontally align to left + HalignLeft = iota + // HalignCenter Horizontally align to center + HalignCenter + // HalignRight Horizontally align to right + HalignRight +) + +// TextStyle describe text property +type TextStyle struct { + // Color defines the color of text + Color color.Color + // Size font size + Size float64 + // The font to use + Font FontData + // Horizontal Alignment of the text + Halign Halign + // Vertical Alignment of the text + Valign Valign +} + +// ScalingPolicy is a constant to define how to scale an image +type ScalingPolicy int + +const ( + // ScalingNone no scaling applied + ScalingNone ScalingPolicy = iota + // ScalingStretch the image is stretched so that its width and height are exactly the given width and height + ScalingStretch + // ScalingWidth the image is scaled so that its width is exactly the given width + ScalingWidth + // ScalingHeight the image is scaled so that its height is exactly the given height + ScalingHeight + // ScalingFit the image is scaled to the largest scale that allow the image to fit within a rectangle width x height + ScalingFit + // ScalingSameArea the image is scaled so that its area is exactly the area of the given rectangle width x height + ScalingSameArea + // ScalingFill the image is scaled to the smallest scale that allow the image to fully cover a rectangle width x height + ScalingFill +) + +// ImageScaling style attributes used to display the image +type ImageScaling struct { + // Horizontal Alignment of the image + Halign Halign + // Vertical Alignment of the image + Valign Valign + // Width Height used by scaling policy + Width, Height float64 + // ScalingPolicy defines the scaling policy to applied to the image + ScalingPolicy ScalingPolicy +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/README.md b/vendor/github.com/llgcode/draw2d/draw2dbase/README.md new file mode 100644 index 0000000..3296f5e --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/README.md @@ -0,0 +1,7 @@ +draw2d/draw2dbase +================= + +[![Coverage](http://gocover.io/_badge/github.com/llgcode/draw2d/draw2dbase?0)](http://gocover.io/github.com/llgcode/draw2d/draw2dbase) +[![GoDoc](https://godoc.org/github.com/llgcode/draw2d/draw2dbase?status.svg)](https://godoc.org/github.com/llgcode/draw2d/draw2dbase) + +Base package implementation that is used by pdf, svg, img, gl implementations. diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/curve.go b/vendor/github.com/llgcode/draw2d/draw2dbase/curve.go new file mode 100644 index 0000000..211e107 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/curve.go @@ -0,0 +1,161 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 17/05/2011 by Laurent Le Goff + +package draw2dbase + +import ( + "math" +) + +const ( + // CurveRecursionLimit represents the maximum recursion that is really necessary to subsivide a curve into straight lines + CurveRecursionLimit = 32 +) + +// Cubic +// x1, y1, cpx1, cpy1, cpx2, cpy2, x2, y2 float64 + +// SubdivideCubic a Bezier cubic curve in 2 equivalents Bezier cubic curves. +// c1 and c2 parameters are the resulting curves +func SubdivideCubic(c, c1, c2 []float64) { + // First point of c is the first point of c1 + c1[0], c1[1] = c[0], c[1] + // Last point of c is the last point of c2 + c2[6], c2[7] = c[6], c[7] + + // Subdivide segment using midpoints + c1[2] = (c[0] + c[2]) / 2 + c1[3] = (c[1] + c[3]) / 2 + + midX := (c[2] + c[4]) / 2 + midY := (c[3] + c[5]) / 2 + + c2[4] = (c[4] + c[6]) / 2 + c2[5] = (c[5] + c[7]) / 2 + + c1[4] = (c1[2] + midX) / 2 + c1[5] = (c1[3] + midY) / 2 + + c2[2] = (midX + c2[4]) / 2 + c2[3] = (midY + c2[5]) / 2 + + c1[6] = (c1[4] + c2[2]) / 2 + c1[7] = (c1[5] + c2[3]) / 2 + + // Last Point of c1 is equal to the first point of c2 + c2[0], c2[1] = c1[6], c1[7] +} + +// TraceCubic generate lines subdividing the cubic curve using a Liner +// flattening_threshold helps determines the flattening expectation of the curve +func TraceCubic(t Liner, cubic []float64, flatteningThreshold float64) { + // Allocation curves + var curves [CurveRecursionLimit * 8]float64 + copy(curves[0:8], cubic[0:8]) + i := 0 + + // current curve + var c []float64 + + var dx, dy, d2, d3 float64 + + for i >= 0 { + c = curves[i*8:] + dx = c[6] - c[0] + dy = c[7] - c[1] + + d2 = math.Abs((c[2]-c[6])*dy - (c[3]-c[7])*dx) + d3 = math.Abs((c[4]-c[6])*dy - (c[5]-c[7])*dx) + + // if it's flat then trace a line + if (d2+d3)*(d2+d3) < flatteningThreshold*(dx*dx+dy*dy) || i == len(curves)-1 { + t.LineTo(c[6], c[7]) + i-- + } else { + // second half of bezier go lower onto the stack + SubdivideCubic(c, curves[(i+1)*8:], curves[i*8:]) + i++ + } + } +} + +// Quad +// x1, y1, cpx1, cpy2, x2, y2 float64 + +// SubdivideQuad a Bezier quad curve in 2 equivalents Bezier quad curves. +// c1 and c2 parameters are the resulting curves +func SubdivideQuad(c, c1, c2 []float64) { + // First point of c is the first point of c1 + c1[0], c1[1] = c[0], c[1] + // Last point of c is the last point of c2 + c2[4], c2[5] = c[4], c[5] + + // Subdivide segment using midpoints + c1[2] = (c[0] + c[2]) / 2 + c1[3] = (c[1] + c[3]) / 2 + c2[2] = (c[2] + c[4]) / 2 + c2[3] = (c[3] + c[5]) / 2 + c1[4] = (c1[2] + c2[2]) / 2 + c1[5] = (c1[3] + c2[3]) / 2 + c2[0], c2[1] = c1[4], c1[5] + return +} + +// TraceQuad generate lines subdividing the curve using a Liner +// flattening_threshold helps determines the flattening expectation of the curve +func TraceQuad(t Liner, quad []float64, flatteningThreshold float64) { + // Allocates curves stack + var curves [CurveRecursionLimit * 6]float64 + copy(curves[0:6], quad[0:6]) + i := 0 + // current curve + var c []float64 + var dx, dy, d float64 + + for i >= 0 { + c = curves[i*6:] + dx = c[4] - c[0] + dy = c[5] - c[1] + + d = math.Abs(((c[2]-c[4])*dy - (c[3]-c[5])*dx)) + + // if it's flat then trace a line + if (d*d) < flatteningThreshold*(dx*dx+dy*dy) || i == len(curves)-1 { + t.LineTo(c[4], c[5]) + i-- + } else { + // second half of bezier go lower onto the stack + SubdivideQuad(c, curves[(i+1)*6:], curves[i*6:]) + i++ + } + } +} + +// TraceArc trace an arc using a Liner +func TraceArc(t Liner, x, y, rx, ry, start, angle, scale float64) (lastX, lastY float64) { + end := start + angle + clockWise := true + if angle < 0 { + clockWise = false + } + ra := (math.Abs(rx) + math.Abs(ry)) / 2 + da := math.Acos(ra/(ra+0.125/scale)) * 2 + //normalize + if !clockWise { + da = -da + } + angle = start + da + var curX, curY float64 + for { + if (angle < end-da/4) != clockWise { + curX = x + math.Cos(end)*rx + curY = y + math.Sin(end)*ry + return curX, curY + } + curX = x + math.Cos(angle)*rx + curY = y + math.Sin(angle)*ry + + angle += da + t.LineTo(curX, curY) + } +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/curve_test.go b/vendor/github.com/llgcode/draw2d/draw2dbase/curve_test.go new file mode 100644 index 0000000..fa954df --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/curve_test.go @@ -0,0 +1,134 @@ +package draw2dbase + +import ( + "bufio" + "fmt" + "image" + "image/color" + "image/draw" + "image/png" + "log" + "os" + "testing" +) + +var ( + flatteningThreshold = 0.5 + testsCubicFloat64 = []float64{ + 100, 100, 200, 100, 100, 200, 200, 200, + 100, 100, 300, 200, 200, 200, 300, 100, + 100, 100, 0, 300, 200, 0, 300, 300, + 150, 290, 10, 10, 290, 10, 150, 290, + 10, 290, 10, 10, 290, 10, 290, 290, + 100, 290, 290, 10, 10, 10, 200, 290, + } + testsQuadFloat64 = []float64{ + 100, 100, 200, 100, 200, 200, + 100, 100, 290, 200, 290, 100, + 100, 100, 0, 290, 200, 290, + 150, 290, 10, 10, 290, 290, + 10, 290, 10, 10, 290, 290, + 100, 290, 290, 10, 120, 290, + } +) + +func init() { + os.Mkdir("test_results", 0666) + f, err := os.Create("../output/curve/_test.html") + if err != nil { + log.Println(err) + os.Exit(1) + } + defer f.Close() + log.Printf("Create html viewer") + f.Write([]byte("")) + for i := 0; i < len(testsCubicFloat64)/8; i++ { + f.Write([]byte(fmt.Sprintf("
\n", i))) + } + for i := 0; i < len(testsQuadFloat64); i++ { + f.Write([]byte(fmt.Sprintf("
\n
\n", i))) + } + f.Write([]byte("")) + +} + +func drawPoints(img draw.Image, c color.Color, s ...float64) image.Image { + for i := 0; i < len(s); i += 2 { + x, y := int(s[i]+0.5), int(s[i+1]+0.5) + img.Set(x, y, c) + img.Set(x, y+1, c) + img.Set(x, y-1, c) + img.Set(x+1, y, c) + img.Set(x+1, y+1, c) + img.Set(x+1, y-1, c) + img.Set(x-1, y, c) + img.Set(x-1, y+1, c) + img.Set(x-1, y-1, c) + + } + return img +} + +func TestCubicCurve(t *testing.T) { + for i := 0; i < len(testsCubicFloat64); i += 8 { + var p SegmentedPath + p.MoveTo(testsCubicFloat64[i], testsCubicFloat64[i+1]) + TraceCubic(&p, testsCubicFloat64[i:], flatteningThreshold) + img := image.NewNRGBA(image.Rect(0, 0, 300, 300)) + PolylineBresenham(img, color.NRGBA{0xff, 0, 0, 0xff}, testsCubicFloat64[i:i+8]...) + PolylineBresenham(img, image.Black, p.Points...) + //drawPoints(img, image.NRGBAColor{0, 0, 0, 0xff}, curve[:]...) + drawPoints(img, color.NRGBA{0, 0, 0, 0xff}, p.Points...) + SaveToPngFile(fmt.Sprintf("../output/curve/_test%d.png", i/8), img) + log.Printf("Num of points: %d\n", len(p.Points)) + } + fmt.Println() +} + +func TestQuadCurve(t *testing.T) { + for i := 0; i < len(testsQuadFloat64); i += 6 { + var p SegmentedPath + p.MoveTo(testsQuadFloat64[i], testsQuadFloat64[i+1]) + TraceQuad(&p, testsQuadFloat64[i:], flatteningThreshold) + img := image.NewNRGBA(image.Rect(0, 0, 300, 300)) + PolylineBresenham(img, color.NRGBA{0xff, 0, 0, 0xff}, testsQuadFloat64[i:i+6]...) + PolylineBresenham(img, image.Black, p.Points...) + //drawPoints(img, image.NRGBAColor{0, 0, 0, 0xff}, curve[:]...) + drawPoints(img, color.NRGBA{0, 0, 0, 0xff}, p.Points...) + SaveToPngFile(fmt.Sprintf("../output/curve/_testQuad%d.png", i), img) + log.Printf("Num of points: %d\n", len(p.Points)) + } + fmt.Println() +} + +func BenchmarkCubicCurve(b *testing.B) { + for i := 0; i < b.N; i++ { + for i := 0; i < len(testsCubicFloat64); i += 8 { + var p SegmentedPath + p.MoveTo(testsCubicFloat64[i], testsCubicFloat64[i+1]) + TraceCubic(&p, testsCubicFloat64[i:], flatteningThreshold) + } + } +} + +// SaveToPngFile create and save an image to a file using PNG format +func SaveToPngFile(filePath string, m image.Image) error { + // Create the file + f, err := os.Create(filePath) + if err != nil { + return err + } + defer f.Close() + // Create Writer from file + b := bufio.NewWriter(f) + // Write the image into the buffer + err = png.Encode(b, m) + if err != nil { + return err + } + err = b.Flush() + if err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/dasher.go b/vendor/github.com/llgcode/draw2d/draw2dbase/dasher.go new file mode 100644 index 0000000..6f8260c --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/dasher.go @@ -0,0 +1,89 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package draw2dbase + +type DashVertexConverter struct { + next Flattener + x, y, distance float64 + dash []float64 + currentDash int + dashOffset float64 +} + +func NewDashConverter(dash []float64, dashOffset float64, flattener Flattener) *DashVertexConverter { + var dasher DashVertexConverter + dasher.dash = dash + dasher.currentDash = 0 + dasher.dashOffset = dashOffset + dasher.next = flattener + return &dasher +} + +func (dasher *DashVertexConverter) LineTo(x, y float64) { + dasher.lineTo(x, y) +} + +func (dasher *DashVertexConverter) MoveTo(x, y float64) { + dasher.next.MoveTo(x, y) + dasher.x, dasher.y = x, y + dasher.distance = dasher.dashOffset + dasher.currentDash = 0 +} + +func (dasher *DashVertexConverter) LineJoin() { + dasher.next.LineJoin() +} + +func (dasher *DashVertexConverter) Close() { + dasher.next.Close() +} + +func (dasher *DashVertexConverter) End() { + dasher.next.End() +} + +func (dasher *DashVertexConverter) lineTo(x, y float64) { + rest := dasher.dash[dasher.currentDash] - dasher.distance + for rest < 0 { + dasher.distance = dasher.distance - dasher.dash[dasher.currentDash] + dasher.currentDash = (dasher.currentDash + 1) % len(dasher.dash) + rest = dasher.dash[dasher.currentDash] - dasher.distance + } + d := distance(dasher.x, dasher.y, x, y) + for d >= rest { + k := rest / d + lx := dasher.x + k*(x-dasher.x) + ly := dasher.y + k*(y-dasher.y) + if dasher.currentDash%2 == 0 { + // line + dasher.next.LineTo(lx, ly) + } else { + // gap + dasher.next.End() + dasher.next.MoveTo(lx, ly) + } + d = d - rest + dasher.x, dasher.y = lx, ly + dasher.currentDash = (dasher.currentDash + 1) % len(dasher.dash) + rest = dasher.dash[dasher.currentDash] + } + dasher.distance = d + if dasher.currentDash%2 == 0 { + // line + dasher.next.LineTo(x, y) + } else { + // gap + dasher.next.End() + dasher.next.MoveTo(x, y) + } + if dasher.distance >= dasher.dash[dasher.currentDash] { + dasher.distance = dasher.distance - dasher.dash[dasher.currentDash] + dasher.currentDash = (dasher.currentDash + 1) % len(dasher.dash) + } + dasher.x, dasher.y = x, y +} + +func distance(x1, y1, x2, y2 float64) float64 { + return vectorDistance(x2-x1, y2-y1) +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/demux_flattener.go b/vendor/github.com/llgcode/draw2d/draw2dbase/demux_flattener.go new file mode 100644 index 0000000..13b6c40 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/demux_flattener.go @@ -0,0 +1,35 @@ +package draw2dbase + +type DemuxFlattener struct { + Flatteners []Flattener +} + +func (dc DemuxFlattener) MoveTo(x, y float64) { + for _, flattener := range dc.Flatteners { + flattener.MoveTo(x, y) + } +} + +func (dc DemuxFlattener) LineTo(x, y float64) { + for _, flattener := range dc.Flatteners { + flattener.LineTo(x, y) + } +} + +func (dc DemuxFlattener) LineJoin() { + for _, flattener := range dc.Flatteners { + flattener.LineJoin() + } +} + +func (dc DemuxFlattener) Close() { + for _, flattener := range dc.Flatteners { + flattener.Close() + } +} + +func (dc DemuxFlattener) End() { + for _, flattener := range dc.Flatteners { + flattener.End() + } +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/flattener.go b/vendor/github.com/llgcode/draw2d/draw2dbase/flattener.go new file mode 100644 index 0000000..c62d1bc --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/flattener.go @@ -0,0 +1,127 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 06/12/2010 by Laurent Le Goff + +package draw2dbase + +import ( + "github.com/llgcode/draw2d" +) + +// Liner receive segment definition +type Liner interface { + // LineTo Draw a line from the current position to the point (x, y) + LineTo(x, y float64) +} + +// Flattener receive segment definition +type Flattener interface { + // MoveTo Start a New line from the point (x, y) + MoveTo(x, y float64) + // LineTo Draw a line from the current position to the point (x, y) + LineTo(x, y float64) + // LineJoin use Round, Bevel or miter to join points + LineJoin() + // Close add the most recent starting point to close the path to create a polygon + Close() + // End mark the current line as finished so we can draw caps + End() +} + +// Flatten convert curves into straight segments keeping join segments info +func Flatten(path *draw2d.Path, flattener Flattener, scale float64) { + // First Point + var startX, startY float64 = 0, 0 + // Current Point + var x, y float64 = 0, 0 + i := 0 + for _, cmp := range path.Components { + switch cmp { + case draw2d.MoveToCmp: + x, y = path.Points[i], path.Points[i+1] + startX, startY = x, y + if i != 0 { + flattener.End() + } + flattener.MoveTo(x, y) + i += 2 + case draw2d.LineToCmp: + x, y = path.Points[i], path.Points[i+1] + flattener.LineTo(x, y) + flattener.LineJoin() + i += 2 + case draw2d.QuadCurveToCmp: + TraceQuad(flattener, path.Points[i-2:], 0.5) + x, y = path.Points[i+2], path.Points[i+3] + flattener.LineTo(x, y) + i += 4 + case draw2d.CubicCurveToCmp: + TraceCubic(flattener, path.Points[i-2:], 0.5) + x, y = path.Points[i+4], path.Points[i+5] + flattener.LineTo(x, y) + i += 6 + case draw2d.ArcToCmp: + x, y = TraceArc(flattener, path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3], path.Points[i+4], path.Points[i+5], scale) + flattener.LineTo(x, y) + i += 6 + case draw2d.CloseCmp: + flattener.LineTo(startX, startY) + flattener.Close() + } + } + flattener.End() +} + +// Transformer apply the Matrix transformation tr +type Transformer struct { + Tr draw2d.Matrix + Flattener Flattener +} + +func (t Transformer) MoveTo(x, y float64) { + u := x*t.Tr[0] + y*t.Tr[2] + t.Tr[4] + v := x*t.Tr[1] + y*t.Tr[3] + t.Tr[5] + t.Flattener.MoveTo(u, v) +} + +func (t Transformer) LineTo(x, y float64) { + u := x*t.Tr[0] + y*t.Tr[2] + t.Tr[4] + v := x*t.Tr[1] + y*t.Tr[3] + t.Tr[5] + t.Flattener.LineTo(u, v) +} + +func (t Transformer) LineJoin() { + t.Flattener.LineJoin() +} + +func (t Transformer) Close() { + t.Flattener.Close() +} + +func (t Transformer) End() { + t.Flattener.End() +} + +type SegmentedPath struct { + Points []float64 +} + +func (p *SegmentedPath) MoveTo(x, y float64) { + p.Points = append(p.Points, x, y) + // TODO need to mark this point as moveto +} + +func (p *SegmentedPath) LineTo(x, y float64) { + p.Points = append(p.Points, x, y) +} + +func (p *SegmentedPath) LineJoin() { + // TODO need to mark the current point as linejoin +} + +func (p *SegmentedPath) Close() { + // TODO Close +} + +func (p *SegmentedPath) End() { + // Nothing to do +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/line.go b/vendor/github.com/llgcode/draw2d/draw2dbase/line.go new file mode 100644 index 0000000..a83bbc3 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/line.go @@ -0,0 +1,58 @@ +// Copyright 2011 The draw2d Authors. All rights reserved. +// created: 27/05/2011 by Laurent Le Goff + +package draw2dbase + +import ( + "image/color" + "image/draw" +) + +func abs(i int) int { + if i < 0 { + return -i + } + return i +} + +// PolylineBresenham draws a polyline to an image +func PolylineBresenham(img draw.Image, c color.Color, s ...float64) { + for i := 2; i < len(s); i += 2 { + Bresenham(img, c, int(s[i-2]+0.5), int(s[i-1]+0.5), int(s[i]+0.5), int(s[i+1]+0.5)) + } +} + +// Bresenham draws a line between (x0, y0) and (x1, y1) +func Bresenham(img draw.Image, color color.Color, x0, y0, x1, y1 int) { + dx := abs(x1 - x0) + dy := abs(y1 - y0) + var sx, sy int + if x0 < x1 { + sx = 1 + } else { + sx = -1 + } + if y0 < y1 { + sy = 1 + } else { + sy = -1 + } + err := dx - dy + + var e2 int + for { + img.Set(x0, y0, color) + if x0 == x1 && y0 == y1 { + return + } + e2 = 2 * err + if e2 > -dy { + err = err - dy + x0 = x0 + sx + } + if e2 < dx { + err = err + dx + y0 = y0 + sy + } + } +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/stack_gc.go b/vendor/github.com/llgcode/draw2d/draw2dbase/stack_gc.go new file mode 100644 index 0000000..77622bb --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/stack_gc.go @@ -0,0 +1,203 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +package draw2dbase + +import ( + "fmt" + "image" + "image/color" + + "github.com/llgcode/draw2d" + + "github.com/golang/freetype/truetype" +) + +var DefaultFontData = draw2d.FontData{Name: "luxi", Family: draw2d.FontFamilySans, Style: draw2d.FontStyleNormal} + +type StackGraphicContext struct { + Current *ContextStack +} + +type ContextStack struct { + Tr draw2d.Matrix + Path *draw2d.Path + LineWidth float64 + Dash []float64 + DashOffset float64 + StrokeColor color.Color + FillColor color.Color + FillRule draw2d.FillRule + Cap draw2d.LineCap + Join draw2d.LineJoin + FontSize float64 + FontData draw2d.FontData + + Font *truetype.Font + // fontSize and dpi are used to calculate scale. scale is the number of + // 26.6 fixed point units in 1 em. + Scale float64 + + Previous *ContextStack +} + +/** + * Create a new Graphic context from an image + */ +func NewStackGraphicContext() *StackGraphicContext { + gc := &StackGraphicContext{} + gc.Current = new(ContextStack) + gc.Current.Tr = draw2d.NewIdentityMatrix() + gc.Current.Path = new(draw2d.Path) + gc.Current.LineWidth = 1.0 + gc.Current.StrokeColor = image.Black + gc.Current.FillColor = image.White + gc.Current.Cap = draw2d.RoundCap + gc.Current.FillRule = draw2d.FillRuleEvenOdd + gc.Current.Join = draw2d.RoundJoin + gc.Current.FontSize = 10 + gc.Current.FontData = DefaultFontData + return gc +} + +func (gc *StackGraphicContext) GetMatrixTransform() draw2d.Matrix { + return gc.Current.Tr +} + +func (gc *StackGraphicContext) SetMatrixTransform(Tr draw2d.Matrix) { + gc.Current.Tr = Tr +} + +func (gc *StackGraphicContext) ComposeMatrixTransform(Tr draw2d.Matrix) { + gc.Current.Tr.Compose(Tr) +} + +func (gc *StackGraphicContext) Rotate(angle float64) { + gc.Current.Tr.Rotate(angle) +} + +func (gc *StackGraphicContext) Translate(tx, ty float64) { + gc.Current.Tr.Translate(tx, ty) +} + +func (gc *StackGraphicContext) Scale(sx, sy float64) { + gc.Current.Tr.Scale(sx, sy) +} + +func (gc *StackGraphicContext) SetStrokeColor(c color.Color) { + gc.Current.StrokeColor = c +} + +func (gc *StackGraphicContext) SetFillColor(c color.Color) { + gc.Current.FillColor = c +} + +func (gc *StackGraphicContext) SetFillRule(f draw2d.FillRule) { + gc.Current.FillRule = f +} + +func (gc *StackGraphicContext) SetLineWidth(lineWidth float64) { + gc.Current.LineWidth = lineWidth +} + +func (gc *StackGraphicContext) SetLineCap(cap draw2d.LineCap) { + gc.Current.Cap = cap +} + +func (gc *StackGraphicContext) SetLineJoin(join draw2d.LineJoin) { + gc.Current.Join = join +} + +func (gc *StackGraphicContext) SetLineDash(dash []float64, dashOffset float64) { + gc.Current.Dash = dash + gc.Current.DashOffset = dashOffset +} + +func (gc *StackGraphicContext) SetFontSize(fontSize float64) { + gc.Current.FontSize = fontSize +} + +func (gc *StackGraphicContext) GetFontSize() float64 { + return gc.Current.FontSize +} + +func (gc *StackGraphicContext) SetFontData(fontData draw2d.FontData) { + gc.Current.FontData = fontData +} + +func (gc *StackGraphicContext) GetFontData() draw2d.FontData { + return gc.Current.FontData +} + +func (gc *StackGraphicContext) BeginPath() { + gc.Current.Path.Clear() +} + +func (gc *StackGraphicContext) GetPath() draw2d.Path { + return *gc.Current.Path.Copy() +} + +func (gc *StackGraphicContext) IsEmpty() bool { + return gc.Current.Path.IsEmpty() +} + +func (gc *StackGraphicContext) LastPoint() (float64, float64) { + return gc.Current.Path.LastPoint() +} + +func (gc *StackGraphicContext) MoveTo(x, y float64) { + gc.Current.Path.MoveTo(x, y) +} + +func (gc *StackGraphicContext) LineTo(x, y float64) { + gc.Current.Path.LineTo(x, y) +} + +func (gc *StackGraphicContext) QuadCurveTo(cx, cy, x, y float64) { + gc.Current.Path.QuadCurveTo(cx, cy, x, y) +} + +func (gc *StackGraphicContext) CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64) { + gc.Current.Path.CubicCurveTo(cx1, cy1, cx2, cy2, x, y) +} + +func (gc *StackGraphicContext) ArcTo(cx, cy, rx, ry, startAngle, angle float64) { + gc.Current.Path.ArcTo(cx, cy, rx, ry, startAngle, angle) +} + +func (gc *StackGraphicContext) Close() { + gc.Current.Path.Close() +} + +func (gc *StackGraphicContext) Save() { + context := new(ContextStack) + context.FontSize = gc.Current.FontSize + context.FontData = gc.Current.FontData + context.LineWidth = gc.Current.LineWidth + context.StrokeColor = gc.Current.StrokeColor + context.FillColor = gc.Current.FillColor + context.FillRule = gc.Current.FillRule + context.Dash = gc.Current.Dash + context.DashOffset = gc.Current.DashOffset + context.Cap = gc.Current.Cap + context.Join = gc.Current.Join + context.Path = gc.Current.Path.Copy() + context.Font = gc.Current.Font + context.Scale = gc.Current.Scale + copy(context.Tr[:], gc.Current.Tr[:]) + context.Previous = gc.Current + gc.Current = context +} + +func (gc *StackGraphicContext) Restore() { + if gc.Current.Previous != nil { + oldContext := gc.Current + gc.Current = gc.Current.Previous + oldContext.Previous = nil + } +} + +func (gc *StackGraphicContext) GetFontName() string { + fontData := gc.Current.FontData + return fmt.Sprintf("%s:%d:%d:%d", fontData.Name, fontData.Family, fontData.Style, gc.Current.FontSize) +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/stroker.go b/vendor/github.com/llgcode/draw2d/draw2dbase/stroker.go new file mode 100644 index 0000000..640b228 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/stroker.go @@ -0,0 +1,90 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package draw2dbase + +import ( + "math" + + "github.com/llgcode/draw2d" +) + +type LineStroker struct { + Flattener Flattener + HalfLineWidth float64 + Cap draw2d.LineCap + Join draw2d.LineJoin + vertices []float64 + rewind []float64 + x, y, nx, ny float64 +} + +func NewLineStroker(c draw2d.LineCap, j draw2d.LineJoin, flattener Flattener) *LineStroker { + l := new(LineStroker) + l.Flattener = flattener + l.HalfLineWidth = 0.5 + l.Cap = c + l.Join = j + return l +} + +func (l *LineStroker) MoveTo(x, y float64) { + l.x, l.y = x, y +} + +func (l *LineStroker) LineTo(x, y float64) { + l.line(l.x, l.y, x, y) +} + +func (l *LineStroker) LineJoin() { + +} + +func (l *LineStroker) line(x1, y1, x2, y2 float64) { + dx := (x2 - x1) + dy := (y2 - y1) + d := vectorDistance(dx, dy) + if d != 0 { + nx := dy * l.HalfLineWidth / d + ny := -(dx * l.HalfLineWidth / d) + l.appendVertex(x1+nx, y1+ny, x2+nx, y2+ny, x1-nx, y1-ny, x2-nx, y2-ny) + l.x, l.y, l.nx, l.ny = x2, y2, nx, ny + } +} + +func (l *LineStroker) Close() { + if len(l.vertices) > 1 { + l.appendVertex(l.vertices[0], l.vertices[1], l.rewind[0], l.rewind[1]) + } +} + +func (l *LineStroker) End() { + if len(l.vertices) > 1 { + l.Flattener.MoveTo(l.vertices[0], l.vertices[1]) + for i, j := 2, 3; j < len(l.vertices); i, j = i+2, j+2 { + l.Flattener.LineTo(l.vertices[i], l.vertices[j]) + } + } + for i, j := len(l.rewind)-2, len(l.rewind)-1; j > 0; i, j = i-2, j-2 { + l.Flattener.LineTo(l.rewind[i], l.rewind[j]) + } + if len(l.vertices) > 1 { + l.Flattener.LineTo(l.vertices[0], l.vertices[1]) + } + l.Flattener.End() + // reinit vertices + l.vertices = l.vertices[0:0] + l.rewind = l.rewind[0:0] + l.x, l.y, l.nx, l.ny = 0, 0, 0, 0 + +} + +func (l *LineStroker) appendVertex(vertices ...float64) { + s := len(vertices) / 2 + l.vertices = append(l.vertices, vertices[:s]...) + l.rewind = append(l.rewind, vertices[s:]...) +} + +func vectorDistance(dx, dy float64) float64 { + return float64(math.Sqrt(dx*dx + dy*dy)) +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dbase/text.go b/vendor/github.com/llgcode/draw2d/draw2dbase/text.go new file mode 100644 index 0000000..4283bad --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dbase/text.go @@ -0,0 +1,68 @@ +package draw2dbase + +import "github.com/llgcode/draw2d" + +var glyphCache map[string]map[rune]*Glyph + +func init() { + glyphCache = make(map[string]map[rune]*Glyph) +} + +// FetchGlyph fetches a glyph from the cache, calling renderGlyph first if it doesn't already exist +func FetchGlyph(gc draw2d.GraphicContext, fontName string, chr rune) *Glyph { + if glyphCache[fontName] == nil { + glyphCache[fontName] = make(map[rune]*Glyph, 60) + } + if glyphCache[fontName][chr] == nil { + glyphCache[fontName][chr] = renderGlyph(gc, fontName, chr) + } + return glyphCache[fontName][chr].Copy() +} + +// renderGlyph renders a glyph then caches and returns it +func renderGlyph(gc draw2d.GraphicContext, fontName string, chr rune) *Glyph { + gc.Save() + defer gc.Restore() + gc.BeginPath() + width := gc.CreateStringPath(string(chr), 0, 0) + path := gc.GetPath() + return &Glyph{ + path: &path, + Width: width, + } +} + +// Glyph represents a rune which has been converted to a Path and width +type Glyph struct { + // path represents a glyph, it is always at (0, 0) + path *draw2d.Path + // Width of the glyph + Width float64 +} + +func (g *Glyph) Copy() *Glyph { + return &Glyph{ + path: g.path.Copy(), + Width: g.Width, + } +} + +// Fill copies a glyph from the cache, and fills it +func (g *Glyph) Fill(gc draw2d.GraphicContext, x, y float64) float64 { + gc.Save() + gc.BeginPath() + gc.Translate(x, y) + gc.Fill(g.path) + gc.Restore() + return g.Width +} + +// Stroke fetches a glyph from the cache, and strokes it +func (g *Glyph) Stroke(gc draw2d.GraphicContext, x, y float64) float64 { + gc.Save() + gc.BeginPath() + gc.Translate(x, y) + gc.Stroke(g.path) + gc.Restore() + return g.Width +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dgl/doc.go b/vendor/github.com/llgcode/draw2d/draw2dgl/doc.go new file mode 100644 index 0000000..0d7128a --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dgl/doc.go @@ -0,0 +1,3 @@ +// Package draw2dgl provides a graphic context that can draw vector +// graphics and text on OpenGL. +package draw2dgl diff --git a/vendor/github.com/llgcode/draw2d/draw2dgl/gc.go b/vendor/github.com/llgcode/draw2d/draw2dgl/gc.go new file mode 100644 index 0000000..d512ccc --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dgl/gc.go @@ -0,0 +1,411 @@ +package draw2dgl + +import ( + "errors" + "image" + "image/color" + "image/draw" + "log" + "math" + "runtime" + + "github.com/go-gl/gl/v2.1/gl" + "github.com/golang/freetype/raster" + "github.com/golang/freetype/truetype" + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dbase" + "github.com/llgcode/draw2d/draw2dimg" + + "golang.org/x/image/font" + "golang.org/x/image/math/fixed" +) + +func init() { + runtime.LockOSThread() +} + +type Painter struct { + // The Porter-Duff composition operator. + Op draw.Op + // The 16-bit color to paint the spans. + cr, cg, cb uint8 + ca uint32 + colors []uint8 + vertices []int32 +} + +const M16 uint32 = 1<<16 - 1 + +// Paint satisfies the Painter interface by painting ss onto an image.RGBA. +func (p *Painter) Paint(ss []raster.Span, done bool) { + //gl.Begin(gl.LINES) + sslen := len(ss) + clenrequired := sslen * 8 + vlenrequired := sslen * 4 + if clenrequired >= (cap(p.colors) - len(p.colors)) { + p.Flush() + + if clenrequired >= cap(p.colors) { + p.vertices = make([]int32, 0, vlenrequired+(vlenrequired/2)) + p.colors = make([]uint8, 0, clenrequired+(clenrequired/2)) + } + } + vi := len(p.vertices) + ci := len(p.colors) + p.vertices = p.vertices[0 : vi+vlenrequired] + p.colors = p.colors[0 : ci+clenrequired] + var ( + colors []uint8 + vertices []int32 + ) + for _, s := range ss { + a := uint8((s.Alpha * p.ca / M16) >> 8) + + colors = p.colors[ci:] + colors[0] = p.cr + colors[1] = p.cg + colors[2] = p.cb + colors[3] = a + colors[4] = p.cr + colors[5] = p.cg + colors[6] = p.cb + colors[7] = a + ci += 8 + vertices = p.vertices[vi:] + vertices[0] = int32(s.X0) + vertices[1] = int32(s.Y) + vertices[2] = int32(s.X1) + vertices[3] = int32(s.Y) + vi += 4 + } +} + +func (p *Painter) Flush() { + if len(p.vertices) != 0 { + gl.EnableClientState(gl.COLOR_ARRAY) + gl.EnableClientState(gl.VERTEX_ARRAY) + gl.ColorPointer(4, gl.UNSIGNED_BYTE, 0, gl.Ptr(p.colors)) + gl.VertexPointer(2, gl.INT, 0, gl.Ptr(p.vertices)) + + // draw lines + gl.DrawArrays(gl.LINES, 0, int32(len(p.vertices)/2)) + gl.DisableClientState(gl.VERTEX_ARRAY) + gl.DisableClientState(gl.COLOR_ARRAY) + p.vertices = p.vertices[0:0] + p.colors = p.colors[0:0] + } +} + +// SetColor sets the color to paint the spans. +func (p *Painter) SetColor(c color.Color) { + r, g, b, a := c.RGBA() + if a == 0 { + p.cr = 0 + p.cg = 0 + p.cb = 0 + p.ca = a + } else { + p.cr = uint8((r * M16 / a) >> 8) + p.cg = uint8((g * M16 / a) >> 8) + p.cb = uint8((b * M16 / a) >> 8) + p.ca = a + } +} + +// NewRGBAPainter creates a new RGBAPainter for the given image. +func NewPainter() *Painter { + p := new(Painter) + p.vertices = make([]int32, 0, 1024) + p.colors = make([]uint8, 0, 1024) + return p +} + +type GraphicContext struct { + *draw2dbase.StackGraphicContext + painter *Painter + fillRasterizer *raster.Rasterizer + strokeRasterizer *raster.Rasterizer + glyphBuf *truetype.GlyphBuf + DPI int +} + +// NewGraphicContext creates a new Graphic context from an image. +func NewGraphicContext(width, height int) *GraphicContext { + gc := &GraphicContext{ + draw2dbase.NewStackGraphicContext(), + NewPainter(), + raster.NewRasterizer(width, height), + raster.NewRasterizer(width, height), + &truetype.GlyphBuf{}, + 92, + } + return gc +} + +func (gc *GraphicContext) loadCurrentFont() (*truetype.Font, error) { + font := draw2d.GetFont(gc.Current.FontData) + if font == nil { + font = draw2d.GetFont(draw2dbase.DefaultFontData) + } + if font == nil { + return nil, errors.New("No font set, and no default font available.") + } + gc.SetFont(font) + gc.SetFontSize(gc.Current.FontSize) + return font, nil +} + +func (gc *GraphicContext) drawGlyph(glyph truetype.Index, dx, dy float64) error { + if err := gc.glyphBuf.Load(gc.Current.Font, fixed.Int26_6(gc.Current.Scale), glyph, font.HintingNone); err != nil { + return err + } + e0 := 0 + for _, e1 := range gc.glyphBuf.Ends { + DrawContour(gc, gc.glyphBuf.Points[e0:e1], dx, dy) + e0 = e1 + } + return nil +} + +// CreateStringPath creates a path from the string s at x, y, and returns the string width. +// The text is placed so that the left edge of the em square of the first character of s +// and the baseline intersect at x, y. The majority of the affected pixels will be +// above and to the right of the point, but some may be below or to the left. +// For example, drawing a string that starts with a 'J' in an italic font may +// affect pixels below and left of the point. +func (gc *GraphicContext) CreateStringPath(s string, x, y float64) float64 { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0.0 + } + startx := x + prev, hasPrev := truetype.Index(0), false + for _, rune := range s { + index := f.Index(rune) + if hasPrev { + x += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + err := gc.drawGlyph(index, x, y) + if err != nil { + log.Println(err) + return startx - x + } + x += fUnitsToFloat64(f.HMetric(fixed.Int26_6(gc.Current.Scale), index).AdvanceWidth) + prev, hasPrev = index, true + } + return x - startx +} + +// FillString draws the text at point (0, 0) +func (gc *GraphicContext) FillString(text string) (width float64) { + return gc.FillStringAt(text, 0, 0) +} + +// FillStringAt draws the text at the specified point (x, y) +func (gc *GraphicContext) FillStringAt(text string, x, y float64) (width float64) { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0.0 + } + startx := x + prev, hasPrev := truetype.Index(0), false + fontName := gc.GetFontName() + for _, r := range text { + index := f.Index(r) + if hasPrev { + x += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + glyph := draw2dbase.FetchGlyph(gc, fontName, r) + x += glyph.Fill(gc, x, y) + prev, hasPrev = index, true + } + return x - startx +} + +// GetStringBounds returns the approximate pixel bounds of the string s at x, y. +// The the left edge of the em square of the first character of s +// and the baseline intersect at 0, 0 in the returned coordinates. +// Therefore the top and left coordinates may well be negative. +func (gc *GraphicContext) GetStringBounds(s string) (left, top, right, bottom float64) { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0, 0, 0, 0 + } + top, left, bottom, right = 10e6, 10e6, -10e6, -10e6 + cursor := 0.0 + prev, hasPrev := truetype.Index(0), false + for _, rune := range s { + index := f.Index(rune) + if hasPrev { + cursor += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + if err := gc.glyphBuf.Load(gc.Current.Font, fixed.Int26_6(gc.Current.Scale), index, font.HintingNone); err != nil { + log.Println(err) + return 0, 0, 0, 0 + } + e0 := 0 + for _, e1 := range gc.glyphBuf.Ends { + ps := gc.glyphBuf.Points[e0:e1] + for _, p := range ps { + x, y := pointToF64Point(p) + top = math.Min(top, y) + bottom = math.Max(bottom, y) + left = math.Min(left, x+cursor) + right = math.Max(right, x+cursor) + } + } + cursor += fUnitsToFloat64(f.HMetric(fixed.Int26_6(gc.Current.Scale), index).AdvanceWidth) + prev, hasPrev = index, true + } + return left, top, right, bottom +} + +// StrokeString draws the contour of the text at point (0, 0) +func (gc *GraphicContext) StrokeString(text string) (width float64) { + return gc.StrokeStringAt(text, 0, 0) +} + +// StrokeStringAt draws the contour of the text at point (x, y) +func (gc *GraphicContext) StrokeStringAt(text string, x, y float64) (width float64) { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0.0 + } + startx := x + prev, hasPrev := truetype.Index(0), false + fontName := gc.GetFontName() + for _, r := range text { + index := f.Index(r) + if hasPrev { + x += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + glyph := draw2dbase.FetchGlyph(gc, fontName, r) + x += glyph.Stroke(gc, x, y) + prev, hasPrev = index, true + } + return x - startx +} + +// recalc recalculates scale and bounds values from the font size, screen +// resolution and font metrics, and invalidates the glyph cache. +func (gc *GraphicContext) recalc() { + gc.Current.Scale = gc.Current.FontSize * float64(gc.DPI) * (64.0 / 72.0) +} + +func (gc *GraphicContext) SetDPI(dpi int) { + gc.DPI = dpi + gc.recalc() +} + +// SetFont sets the font used to draw text. +func (gc *GraphicContext) SetFont(font *truetype.Font) { + gc.Current.Font = font +} + +// SetFontSize sets the font size in points (as in ``a 12 point font''). +func (gc *GraphicContext) SetFontSize(fontSize float64) { + gc.Current.FontSize = fontSize + gc.recalc() +} + +func (gc *GraphicContext) GetDPI() int { + return gc.DPI +} + +//TODO +func (gc *GraphicContext) Clear() { + panic("not implemented") +} + +//TODO +func (gc *GraphicContext) ClearRect(x1, y1, x2, y2 int) { + panic("not implemented") +} + +//TODO +func (gc *GraphicContext) DrawImage(img image.Image) { + panic("not implemented") +} + +func (gc *GraphicContext) paint(rasterizer *raster.Rasterizer, color color.Color) { + gc.painter.SetColor(color) + rasterizer.Rasterize(gc.painter) + rasterizer.Clear() + gc.painter.Flush() + gc.Current.Path.Clear() +} + +func (gc *GraphicContext) Stroke(paths ...*draw2d.Path) { + paths = append(paths, gc.Current.Path) + gc.strokeRasterizer.UseNonZeroWinding = true + + stroker := draw2dbase.NewLineStroker(gc.Current.Cap, gc.Current.Join, draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: draw2dimg.FtLineBuilder{Adder: gc.strokeRasterizer}}) + stroker.HalfLineWidth = gc.Current.LineWidth / 2 + + var liner draw2dbase.Flattener + if gc.Current.Dash != nil && len(gc.Current.Dash) > 0 { + liner = draw2dbase.NewDashConverter(gc.Current.Dash, gc.Current.DashOffset, stroker) + } else { + liner = stroker + } + for _, p := range paths { + draw2dbase.Flatten(p, liner, gc.Current.Tr.GetScale()) + } + + gc.paint(gc.strokeRasterizer, gc.Current.StrokeColor) +} + +func (gc *GraphicContext) Fill(paths ...*draw2d.Path) { + paths = append(paths, gc.Current.Path) + gc.fillRasterizer.UseNonZeroWinding = useNonZeroWinding(gc.Current.FillRule) + + /**** first method ****/ + flattener := draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: draw2dimg.FtLineBuilder{Adder: gc.fillRasterizer}} + for _, p := range paths { + draw2dbase.Flatten(p, flattener, gc.Current.Tr.GetScale()) + } + + gc.paint(gc.fillRasterizer, gc.Current.FillColor) +} + +func (gc *GraphicContext) FillStroke(paths ...*draw2d.Path) { + paths = append(paths, gc.Current.Path) + gc.fillRasterizer.UseNonZeroWinding = useNonZeroWinding(gc.Current.FillRule) + gc.strokeRasterizer.UseNonZeroWinding = true + + flattener := draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: draw2dimg.FtLineBuilder{Adder: gc.fillRasterizer}} + + stroker := draw2dbase.NewLineStroker(gc.Current.Cap, gc.Current.Join, draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: draw2dimg.FtLineBuilder{Adder: gc.strokeRasterizer}}) + stroker.HalfLineWidth = gc.Current.LineWidth / 2 + + var liner draw2dbase.Flattener + if gc.Current.Dash != nil && len(gc.Current.Dash) > 0 { + liner = draw2dbase.NewDashConverter(gc.Current.Dash, gc.Current.DashOffset, stroker) + } else { + liner = stroker + } + + demux := draw2dbase.DemuxFlattener{Flatteners: []draw2dbase.Flattener{flattener, liner}} + for _, p := range paths { + draw2dbase.Flatten(p, demux, gc.Current.Tr.GetScale()) + } + + // Fill + gc.paint(gc.fillRasterizer, gc.Current.FillColor) + // Stroke + gc.paint(gc.strokeRasterizer, gc.Current.StrokeColor) +} + +func useNonZeroWinding(f draw2d.FillRule) bool { + switch f { + case draw2d.FillRuleEvenOdd: + return false + case draw2d.FillRuleWinding: + return true + } + return false +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dgl/notes.md b/vendor/github.com/llgcode/draw2d/draw2dgl/notes.md new file mode 100644 index 0000000..0c21456 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dgl/notes.md @@ -0,0 +1,6 @@ +Rendering Vector Art OpenGl +References: +* https://www.youtube.com/watch?v=K5u8ZZBWSdw +* http://http.developer.nvidia.com/GPUGems3/gpugems3_ch25.html +* http://research.microsoft.com/en-us/um/people/cloop/loopblinn05.pdf +* https://github.com/openframeworks/openFrameworks/issues/1190 diff --git a/vendor/github.com/llgcode/draw2d/draw2dgl/text.go b/vendor/github.com/llgcode/draw2d/draw2dgl/text.go new file mode 100644 index 0000000..79cd8c8 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dgl/text.go @@ -0,0 +1,82 @@ +package draw2dgl + +import ( + "github.com/golang/freetype/truetype" + "github.com/llgcode/draw2d" + + "golang.org/x/image/math/fixed" +) + +// DrawContour draws the given closed contour at the given sub-pixel offset. +func DrawContour(path draw2d.PathBuilder, ps []truetype.Point, dx, dy float64) { + if len(ps) == 0 { + return + } + startX, startY := pointToF64Point(ps[0]) + path.MoveTo(startX+dx, startY+dy) + q0X, q0Y, on0 := startX, startY, true + for _, p := range ps[1:] { + qX, qY := pointToF64Point(p) + on := p.Flags&0x01 != 0 + if on { + if on0 { + path.LineTo(qX+dx, qY+dy) + } else { + path.QuadCurveTo(q0X+dx, q0Y+dy, qX+dx, qY+dy) + } + } else { + if on0 { + // No-op. + } else { + midX := (q0X + qX) / 2 + midY := (q0Y + qY) / 2 + path.QuadCurveTo(q0X+dx, q0Y+dy, midX+dx, midY+dy) + } + } + q0X, q0Y, on0 = qX, qY, on + } + // Close the curve. + if on0 { + path.LineTo(startX+dx, startY+dy) + } else { + path.QuadCurveTo(q0X+dx, q0Y+dy, startX+dx, startY+dy) + } +} + +func pointToF64Point(p truetype.Point) (x, y float64) { + return fUnitsToFloat64(p.X), -fUnitsToFloat64(p.Y) +} + +func fUnitsToFloat64(x fixed.Int26_6) float64 { + scaled := x << 2 + return float64(scaled/256) + float64(scaled%256)/256.0 +} + +// FontExtents contains font metric information. +type FontExtents struct { + // Ascent is the distance that the text + // extends above the baseline. + Ascent float64 + + // Descent is the distance that the text + // extends below the baseline. The descent + // is given as a negative value. + Descent float64 + + // Height is the distance from the lowest + // descending point to the highest ascending + // point. + Height float64 +} + +// Extents returns the FontExtents for a font. +// TODO needs to read this https://developer.apple.com/fonts/TrueType-Reference-Manual/RM02/Chap2.html#intro +func Extents(font *truetype.Font, size float64) FontExtents { + bounds := font.Bounds(fixed.Int26_6(font.FUnitsPerEm())) + scale := size / float64(font.FUnitsPerEm()) + return FontExtents{ + Ascent: float64(bounds.Max.Y) * scale, + Descent: float64(bounds.Min.Y) * scale, + Height: float64(bounds.Max.Y-bounds.Min.Y) * scale, + } +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dimg/README.md b/vendor/github.com/llgcode/draw2d/draw2dimg/README.md new file mode 100644 index 0000000..5798d53 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dimg/README.md @@ -0,0 +1,8 @@ +draw2d/draw2dimg +================= + +[![Coverage](http://gocover.io/_badge/github.com/llgcode/draw2d/draw2dimg?0)](http://gocover.io/github.com/llgcode/draw2d/draw2dimg) +[![GoDoc](https://godoc.org/github.com/llgcode/draw2d/draw2dimg?status.svg)](https://godoc.org/github.com/llgcode/draw2d/draw2dimg) + + +draw2d implementation that generates raster images using https://github.com/golang/freetype package. diff --git a/vendor/github.com/llgcode/draw2d/draw2dimg/fileutil.go b/vendor/github.com/llgcode/draw2d/draw2dimg/fileutil.go new file mode 100644 index 0000000..b6dccb9 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dimg/fileutil.go @@ -0,0 +1,46 @@ +package draw2dimg + +import ( + "bufio" + "image" + "image/png" + "os" +) + +// SaveToPngFile create and save an image to a file using PNG format +func SaveToPngFile(filePath string, m image.Image) error { + // Create the file + f, err := os.Create(filePath) + if err != nil { + return err + } + defer f.Close() + // Create Writer from file + b := bufio.NewWriter(f) + // Write the image into the buffer + err = png.Encode(b, m) + if err != nil { + return err + } + err = b.Flush() + if err != nil { + return err + } + return nil +} + +// LoadFromPngFile Open a png file +func LoadFromPngFile(filePath string) (image.Image, error) { + // Open file + f, err := os.OpenFile(filePath, 0, 0) + if err != nil { + return nil, err + } + defer f.Close() + b := bufio.NewReader(f) + img, err := png.Decode(b) + if err != nil { + return nil, err + } + return img, nil +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dimg/ftgc.go b/vendor/github.com/llgcode/draw2d/draw2dimg/ftgc.go new file mode 100644 index 0000000..abaf7e5 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dimg/ftgc.go @@ -0,0 +1,385 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +package draw2dimg + +import ( + "errors" + "image" + "image/color" + "log" + "math" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dbase" + + "github.com/golang/freetype/raster" + "github.com/golang/freetype/truetype" + + "golang.org/x/image/draw" + "golang.org/x/image/font" + "golang.org/x/image/math/f64" + "golang.org/x/image/math/fixed" +) + +// Painter implements the freetype raster.Painter and has a SetColor method like the RGBAPainter +type Painter interface { + raster.Painter + SetColor(color color.Color) +} + +// GraphicContext is the implementation of draw2d.GraphicContext for a raster image +type GraphicContext struct { + *draw2dbase.StackGraphicContext + img draw.Image + painter Painter + fillRasterizer *raster.Rasterizer + strokeRasterizer *raster.Rasterizer + glyphBuf *truetype.GlyphBuf + DPI int +} + +// ImageFilter defines the type of filter to use +type ImageFilter int + +const ( + // LinearFilter defines a linear filter + LinearFilter ImageFilter = iota + // BilinearFilter defines a bilinear filter + BilinearFilter + // BicubicFilter defines a bicubic filter + BicubicFilter +) + +// NewGraphicContext creates a new Graphic context from an image. +func NewGraphicContext(img draw.Image) *GraphicContext { + + var painter Painter + switch selectImage := img.(type) { + case *image.RGBA: + painter = raster.NewRGBAPainter(selectImage) + default: + panic("Image type not supported") + } + return NewGraphicContextWithPainter(img, painter) +} + +// NewGraphicContextWithPainter creates a new Graphic context from an image and a Painter (see Freetype-go) +func NewGraphicContextWithPainter(img draw.Image, painter Painter) *GraphicContext { + width, height := img.Bounds().Dx(), img.Bounds().Dy() + dpi := 92 + gc := &GraphicContext{ + draw2dbase.NewStackGraphicContext(), + img, + painter, + raster.NewRasterizer(width, height), + raster.NewRasterizer(width, height), + &truetype.GlyphBuf{}, + dpi, + } + return gc +} + +// GetDPI returns the resolution of the Image GraphicContext +func (gc *GraphicContext) GetDPI() int { + return gc.DPI +} + +// Clear fills the current canvas with a default transparent color +func (gc *GraphicContext) Clear() { + width, height := gc.img.Bounds().Dx(), gc.img.Bounds().Dy() + gc.ClearRect(0, 0, width, height) +} + +// ClearRect fills the current canvas with a default transparent color at the specified rectangle +func (gc *GraphicContext) ClearRect(x1, y1, x2, y2 int) { + imageColor := image.NewUniform(gc.Current.FillColor) + draw.Draw(gc.img, image.Rect(x1, y1, x2, y2), imageColor, image.ZP, draw.Over) +} + +// DrawImage draws an image into dest using an affine transformation matrix, an op and a filter +func DrawImage(src image.Image, dest draw.Image, tr draw2d.Matrix, op draw.Op, filter ImageFilter) { + var transformer draw.Transformer + switch filter { + case LinearFilter: + transformer = draw.NearestNeighbor + case BilinearFilter: + transformer = draw.BiLinear + case BicubicFilter: + transformer = draw.CatmullRom + } + transformer.Transform(dest, f64.Aff3{tr[0], tr[1], tr[4], tr[2], tr[3], tr[5]}, src, src.Bounds(), op, nil) +} + +// DrawImage draws the raster image in the current canvas +func (gc *GraphicContext) DrawImage(img image.Image) { + DrawImage(img, gc.img, gc.Current.Tr, draw.Over, BilinearFilter) +} + +// FillString draws the text at point (0, 0) +func (gc *GraphicContext) FillString(text string) (width float64) { + return gc.FillStringAt(text, 0, 0) +} + +// FillStringAt draws the text at the specified point (x, y) +func (gc *GraphicContext) FillStringAt(text string, x, y float64) (width float64) { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0.0 + } + startx := x + prev, hasPrev := truetype.Index(0), false + fontName := gc.GetFontName() + for _, r := range text { + index := f.Index(r) + if hasPrev { + x += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + glyph := draw2dbase.FetchGlyph(gc, fontName, r) + x += glyph.Fill(gc, x, y) + prev, hasPrev = index, true + } + return x - startx +} + +// StrokeString draws the contour of the text at point (0, 0) +func (gc *GraphicContext) StrokeString(text string) (width float64) { + return gc.StrokeStringAt(text, 0, 0) +} + +// StrokeStringAt draws the contour of the text at point (x, y) +func (gc *GraphicContext) StrokeStringAt(text string, x, y float64) (width float64) { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0.0 + } + startx := x + prev, hasPrev := truetype.Index(0), false + fontName := gc.GetFontName() + for _, r := range text { + index := f.Index(r) + if hasPrev { + x += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + glyph := draw2dbase.FetchGlyph(gc, fontName, r) + x += glyph.Stroke(gc, x, y) + prev, hasPrev = index, true + } + return x - startx +} + +func (gc *GraphicContext) loadCurrentFont() (*truetype.Font, error) { + font := draw2d.GetFont(gc.Current.FontData) + if font == nil { + font = draw2d.GetFont(draw2dbase.DefaultFontData) + } + if font == nil { + return nil, errors.New("No font set, and no default font available.") + } + gc.SetFont(font) + gc.SetFontSize(gc.Current.FontSize) + return font, nil +} + +// p is a truetype.Point measured in FUnits and positive Y going upwards. +// The returned value is the same thing measured in floating point and positive Y +// going downwards. + +func (gc *GraphicContext) drawGlyph(glyph truetype.Index, dx, dy float64) error { + if err := gc.glyphBuf.Load(gc.Current.Font, fixed.Int26_6(gc.Current.Scale), glyph, font.HintingNone); err != nil { + return err + } + e0 := 0 + for _, e1 := range gc.glyphBuf.Ends { + DrawContour(gc, gc.glyphBuf.Points[e0:e1], dx, dy) + e0 = e1 + } + return nil +} + +// CreateStringPath creates a path from the string s at x, y, and returns the string width. +// The text is placed so that the left edge of the em square of the first character of s +// and the baseline intersect at x, y. The majority of the affected pixels will be +// above and to the right of the point, but some may be below or to the left. +// For example, drawing a string that starts with a 'J' in an italic font may +// affect pixels below and left of the point. +func (gc *GraphicContext) CreateStringPath(s string, x, y float64) float64 { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0.0 + } + startx := x + prev, hasPrev := truetype.Index(0), false + for _, rune := range s { + index := f.Index(rune) + if hasPrev { + x += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + err := gc.drawGlyph(index, x, y) + if err != nil { + log.Println(err) + return startx - x + } + x += fUnitsToFloat64(f.HMetric(fixed.Int26_6(gc.Current.Scale), index).AdvanceWidth) + prev, hasPrev = index, true + } + return x - startx +} + +// GetStringBounds returns the approximate pixel bounds of the string s at x, y. +// The the left edge of the em square of the first character of s +// and the baseline intersect at 0, 0 in the returned coordinates. +// Therefore the top and left coordinates may well be negative. +func (gc *GraphicContext) GetStringBounds(s string) (left, top, right, bottom float64) { + f, err := gc.loadCurrentFont() + if err != nil { + log.Println(err) + return 0, 0, 0, 0 + } + top, left, bottom, right = 10e6, 10e6, -10e6, -10e6 + cursor := 0.0 + prev, hasPrev := truetype.Index(0), false + for _, rune := range s { + index := f.Index(rune) + if hasPrev { + cursor += fUnitsToFloat64(f.Kern(fixed.Int26_6(gc.Current.Scale), prev, index)) + } + if err := gc.glyphBuf.Load(gc.Current.Font, fixed.Int26_6(gc.Current.Scale), index, font.HintingNone); err != nil { + log.Println(err) + return 0, 0, 0, 0 + } + e0 := 0 + for _, e1 := range gc.glyphBuf.Ends { + ps := gc.glyphBuf.Points[e0:e1] + for _, p := range ps { + x, y := pointToF64Point(p) + top = math.Min(top, y) + bottom = math.Max(bottom, y) + left = math.Min(left, x+cursor) + right = math.Max(right, x+cursor) + } + } + cursor += fUnitsToFloat64(f.HMetric(fixed.Int26_6(gc.Current.Scale), index).AdvanceWidth) + prev, hasPrev = index, true + } + return left, top, right, bottom +} + +// recalc recalculates scale and bounds values from the font size, screen +// resolution and font metrics, and invalidates the glyph cache. +func (gc *GraphicContext) recalc() { + gc.Current.Scale = gc.Current.FontSize * float64(gc.DPI) * (64.0 / 72.0) +} + +// SetDPI sets the screen resolution in dots per inch. +func (gc *GraphicContext) SetDPI(dpi int) { + gc.DPI = dpi + gc.recalc() +} + +// SetFont sets the font used to draw text. +func (gc *GraphicContext) SetFont(font *truetype.Font) { + gc.Current.Font = font +} + +// SetFontSize sets the font size in points (as in ``a 12 point font''). +func (gc *GraphicContext) SetFontSize(fontSize float64) { + gc.Current.FontSize = fontSize + gc.recalc() +} + +func (gc *GraphicContext) paint(rasterizer *raster.Rasterizer, color color.Color) { + gc.painter.SetColor(color) + rasterizer.Rasterize(gc.painter) + rasterizer.Clear() + gc.Current.Path.Clear() +} + +// Stroke strokes the paths with the color specified by SetStrokeColor +func (gc *GraphicContext) Stroke(paths ...*draw2d.Path) { + paths = append(paths, gc.Current.Path) + gc.strokeRasterizer.UseNonZeroWinding = true + + stroker := draw2dbase.NewLineStroker(gc.Current.Cap, gc.Current.Join, draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: FtLineBuilder{Adder: gc.strokeRasterizer}}) + stroker.HalfLineWidth = gc.Current.LineWidth / 2 + + var liner draw2dbase.Flattener + if gc.Current.Dash != nil && len(gc.Current.Dash) > 0 { + liner = draw2dbase.NewDashConverter(gc.Current.Dash, gc.Current.DashOffset, stroker) + } else { + liner = stroker + } + for _, p := range paths { + draw2dbase.Flatten(p, liner, gc.Current.Tr.GetScale()) + } + + gc.paint(gc.strokeRasterizer, gc.Current.StrokeColor) +} + +// Fill fills the paths with the color specified by SetFillColor +func (gc *GraphicContext) Fill(paths ...*draw2d.Path) { + paths = append(paths, gc.Current.Path) + gc.fillRasterizer.UseNonZeroWinding = gc.Current.FillRule == draw2d.FillRuleWinding + + /**** first method ****/ + flattener := draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: FtLineBuilder{Adder: gc.fillRasterizer}} + for _, p := range paths { + draw2dbase.Flatten(p, flattener, gc.Current.Tr.GetScale()) + } + + gc.paint(gc.fillRasterizer, gc.Current.FillColor) +} + +// FillStroke first fills the paths and than strokes them +func (gc *GraphicContext) FillStroke(paths ...*draw2d.Path) { + paths = append(paths, gc.Current.Path) + gc.fillRasterizer.UseNonZeroWinding = gc.Current.FillRule == draw2d.FillRuleWinding + gc.strokeRasterizer.UseNonZeroWinding = true + + flattener := draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: FtLineBuilder{Adder: gc.fillRasterizer}} + + stroker := draw2dbase.NewLineStroker(gc.Current.Cap, gc.Current.Join, draw2dbase.Transformer{Tr: gc.Current.Tr, Flattener: FtLineBuilder{Adder: gc.strokeRasterizer}}) + stroker.HalfLineWidth = gc.Current.LineWidth / 2 + + var liner draw2dbase.Flattener + if gc.Current.Dash != nil && len(gc.Current.Dash) > 0 { + liner = draw2dbase.NewDashConverter(gc.Current.Dash, gc.Current.DashOffset, stroker) + } else { + liner = stroker + } + + demux := draw2dbase.DemuxFlattener{Flatteners: []draw2dbase.Flattener{flattener, liner}} + for _, p := range paths { + draw2dbase.Flatten(p, demux, gc.Current.Tr.GetScale()) + } + + // Fill + gc.paint(gc.fillRasterizer, gc.Current.FillColor) + // Stroke + gc.paint(gc.strokeRasterizer, gc.Current.StrokeColor) +} + +func toFtCap(c draw2d.LineCap) raster.Capper { + switch c { + case draw2d.RoundCap: + return raster.RoundCapper + case draw2d.ButtCap: + return raster.ButtCapper + case draw2d.SquareCap: + return raster.SquareCapper + } + return raster.RoundCapper +} + +func toFtJoin(j draw2d.LineJoin) raster.Joiner { + switch j { + case draw2d.RoundJoin: + return raster.RoundJoiner + case draw2d.BevelJoin: + return raster.BevelJoiner + } + return raster.RoundJoiner +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dimg/ftpath.go b/vendor/github.com/llgcode/draw2d/draw2dimg/ftpath.go new file mode 100644 index 0000000..785fc31 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dimg/ftpath.go @@ -0,0 +1,30 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package draw2dimg + +import ( + "github.com/golang/freetype/raster" + "golang.org/x/image/math/fixed" +) + +type FtLineBuilder struct { + Adder raster.Adder +} + +func (liner FtLineBuilder) MoveTo(x, y float64) { + liner.Adder.Start(fixed.Point26_6{X: fixed.Int26_6(x * 64), Y: fixed.Int26_6(y * 64)}) +} + +func (liner FtLineBuilder) LineTo(x, y float64) { + liner.Adder.Add1(fixed.Point26_6{X: fixed.Int26_6(x * 64), Y: fixed.Int26_6(y * 64)}) +} + +func (liner FtLineBuilder) LineJoin() { +} + +func (liner FtLineBuilder) Close() { +} + +func (liner FtLineBuilder) End() { +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dimg/text.go b/vendor/github.com/llgcode/draw2d/draw2dimg/text.go new file mode 100644 index 0000000..2fe2493 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dimg/text.go @@ -0,0 +1,82 @@ +package draw2dimg + +import ( + "github.com/golang/freetype/truetype" + "github.com/llgcode/draw2d" + + "golang.org/x/image/math/fixed" +) + +// DrawContour draws the given closed contour at the given sub-pixel offset. +func DrawContour(path draw2d.PathBuilder, ps []truetype.Point, dx, dy float64) { + if len(ps) == 0 { + return + } + startX, startY := pointToF64Point(ps[0]) + path.MoveTo(startX+dx, startY+dy) + q0X, q0Y, on0 := startX, startY, true + for _, p := range ps[1:] { + qX, qY := pointToF64Point(p) + on := p.Flags&0x01 != 0 + if on { + if on0 { + path.LineTo(qX+dx, qY+dy) + } else { + path.QuadCurveTo(q0X+dx, q0Y+dy, qX+dx, qY+dy) + } + } else { + if on0 { + // No-op. + } else { + midX := (q0X + qX) / 2 + midY := (q0Y + qY) / 2 + path.QuadCurveTo(q0X+dx, q0Y+dy, midX+dx, midY+dy) + } + } + q0X, q0Y, on0 = qX, qY, on + } + // Close the curve. + if on0 { + path.LineTo(startX+dx, startY+dy) + } else { + path.QuadCurveTo(q0X+dx, q0Y+dy, startX+dx, startY+dy) + } +} + +func pointToF64Point(p truetype.Point) (x, y float64) { + return fUnitsToFloat64(p.X), -fUnitsToFloat64(p.Y) +} + +func fUnitsToFloat64(x fixed.Int26_6) float64 { + scaled := x << 2 + return float64(scaled/256) + float64(scaled%256)/256.0 +} + +// FontExtents contains font metric information. +type FontExtents struct { + // Ascent is the distance that the text + // extends above the baseline. + Ascent float64 + + // Descent is the distance that the text + // extends below the baseline. The descent + // is given as a negative value. + Descent float64 + + // Height is the distance from the lowest + // descending point to the highest ascending + // point. + Height float64 +} + +// Extents returns the FontExtents for a font. +// TODO needs to read this https://developer.apple.com/fonts/TrueType-Reference-Manual/RM02/Chap2.html#intro +func Extents(font *truetype.Font, size float64) FontExtents { + bounds := font.Bounds(fixed.Int26_6(font.FUnitsPerEm())) + scale := size / float64(font.FUnitsPerEm()) + return FontExtents{ + Ascent: float64(bounds.Max.Y) * scale, + Descent: float64(bounds.Min.Y) * scale, + Height: float64(bounds.Max.Y-bounds.Min.Y) * scale, + } +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dkit/README.md b/vendor/github.com/llgcode/draw2d/draw2dkit/README.md new file mode 100644 index 0000000..deaf45f --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dkit/README.md @@ -0,0 +1,7 @@ +draw2d/draw2dkit +================= + +[![Coverage](http://gocover.io/_badge/github.com/llgcode/draw2d/draw2dkit?0)](http://gocover.io/github.com/llgcode/draw2d/draw2dkit) +[![GoDoc](https://godoc.org/github.com/llgcode/draw2d/draw2dkit?status.svg)](https://godoc.org/github.com/llgcode/draw2d/draw2dkit) + +Util package that help drawing common vectorial draw. diff --git a/vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit.go b/vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit.go new file mode 100644 index 0000000..eab81da --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit.go @@ -0,0 +1,47 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +// Package draw2dkit provides helpers to draw common figures using a Path +package draw2dkit + +import ( + "math" + + "github.com/llgcode/draw2d" +) + +// Rectangle draws a rectangle using a path between (x1,y1) and (x2,y2) +func Rectangle(path draw2d.PathBuilder, x1, y1, x2, y2 float64) { + path.MoveTo(x1, y1) + path.LineTo(x2, y1) + path.LineTo(x2, y2) + path.LineTo(x1, y2) + path.Close() +} + +// RoundedRectangle draws a rectangle using a path between (x1,y1) and (x2,y2) +func RoundedRectangle(path draw2d.PathBuilder, x1, y1, x2, y2, arcWidth, arcHeight float64) { + arcWidth = arcWidth / 2 + arcHeight = arcHeight / 2 + path.MoveTo(x1, y1+arcHeight) + path.QuadCurveTo(x1, y1, x1+arcWidth, y1) + path.LineTo(x2-arcWidth, y1) + path.QuadCurveTo(x2, y1, x2, y1+arcHeight) + path.LineTo(x2, y2-arcHeight) + path.QuadCurveTo(x2, y2, x2-arcWidth, y2) + path.LineTo(x1+arcWidth, y2) + path.QuadCurveTo(x1, y2, x1, y2-arcHeight) + path.Close() +} + +// Ellipse draws an ellipse using a path with center (cx,cy) and radius (rx,ry) +func Ellipse(path draw2d.PathBuilder, cx, cy, rx, ry float64) { + path.ArcTo(cx, cy, rx, ry, 0, -math.Pi*2) + path.Close() +} + +// Circle draws a circle using a path with center (cx,cy) and radius +func Circle(path draw2d.PathBuilder, cx, cy, radius float64) { + path.ArcTo(cx, cy, radius, radius, 0, -math.Pi*2) + path.Close() +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit_test.go b/vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit_test.go new file mode 100644 index 0000000..09eb0e4 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dkit/draw2dkit_test.go @@ -0,0 +1,29 @@ +package draw2dkit + +import ( + "image" + "image/color" + "testing" + + "github.com/llgcode/draw2d/draw2dimg" +) + +func TestCircle(t *testing.T) { + width := 200 + height := 200 + img := image.NewRGBA(image.Rect(0, 0, width, height)) + gc := draw2dimg.NewGraphicContext(img) + + gc.SetStrokeColor(color.NRGBA{255, 255, 255, 255}) + gc.SetFillColor(color.NRGBA{255, 255, 255, 255}) + gc.Clear() + + gc.SetStrokeColor(color.NRGBA{255, 0, 0, 255}) + gc.SetLineWidth(1) + + // Draw a circle + Circle(gc, 100, 100, 50) + gc.Stroke() + + draw2dimg.SaveToPngFile("../output/draw2dkit/TestCircle.png", img) +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/README.md b/vendor/github.com/llgcode/draw2d/draw2dpdf/README.md new file mode 100644 index 0000000..3208c33 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/README.md @@ -0,0 +1,42 @@ +draw2d pdf +========== + +Package draw2dpdf provides a graphic context that can draw vector graphics and text on pdf file with the [gofpdf](https://github.com/jung-kurt/gofpdf) package. + +Quick Start +----------- + +The following Go code generates a simple drawing and saves it to a pdf document: +```go +// Initialize the graphic context on an RGBA image +dest := draw2dpdf.NewPdf("L", "mm", "A4") +gc := draw2dpdf.NewGraphicContext(dest) + +// Set some properties +gc.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff}) +gc.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff}) +gc.SetLineWidth(5) + +// Draw a closed shape +gc.MoveTo(10, 10) // should always be called first for a new path +gc.LineTo(100, 50) +gc.QuadCurveTo(100, 10, 10, 10) +gc.Close() +gc.FillStroke() + +// Save to file +draw2dpdf.SaveToPdfFile("hello.pdf", dest) +``` + +There are more examples here: https://github.com/llgcode/draw2d/tree/master/samples + +Alternative backends +-------------------- + +- Drawing on images is provided by the draw2d package. +- Drawing on opengl is provided by the draw2dgl package. + +Acknowledgments +--------------- + +The pdf backend uses https://github.com/jung-kurt/gofpdf diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/doc.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/doc.go new file mode 100644 index 0000000..2ec7081 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/doc.go @@ -0,0 +1,41 @@ +// Copyright 2015 The draw2d Authors. All rights reserved. +// created: 26/06/2015 by Stani Michiels + +// Package draw2dpdf provides a graphic context that can draw vector +// graphics and text on pdf file with the gofpdf package. +// +// Quick Start +// +// The following Go code generates a simple drawing and saves it to a +// pdf document: +// // Initialize the graphic context on an RGBA image +// dest := draw2dpdf.NewPdf("L", "mm", "A4") +// gc := draw2dpdf.NewGraphicContext(dest) +// +// // Set some properties +// gc.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff}) +// gc.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff}) +// gc.SetLineWidth(5) +// +// // Draw a closed shape +// gc.MoveTo(10, 10) // should always be called first for a new path +// gc.LineTo(100, 50) +// gc.QuadCurveTo(100, 10, 10, 10) +// gc.Close() +// gc.FillStroke() +// +// // Save to file +// draw2dpdf.SaveToPdfFile("hello.pdf", dest) +// +// There are more examples here: +// https://github.com/llgcode/draw2d/tree/master/samples +// +// Alternative backends +// +// Drawing on images is provided by the draw2d package. +// Drawing on opengl is provided by the draw2dgl package. +// +// Acknowledgments +// +// The pdf backend uses https://github.com/jung-kurt/gofpdf +package draw2dpdf diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/fileutil.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/fileutil.go new file mode 100644 index 0000000..349545d --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/fileutil.go @@ -0,0 +1,11 @@ +// Copyright 2015 The draw2d Authors. All rights reserved. +// created: 26/06/2015 by Stani Michiels + +package draw2dpdf + +import "github.com/jung-kurt/gofpdf" + +// SaveToPdfFile creates and saves a pdf document to a file +func SaveToPdfFile(filePath string, pdf *gofpdf.Fpdf) error { + return pdf.OutputFileAndClose(filePath) +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/gc.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/gc.go new file mode 100644 index 0000000..c14610a --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/gc.go @@ -0,0 +1,379 @@ +// Copyright 2015 The draw2d Authors. All rights reserved. +// created: 26/06/2015 by Stani Michiels +// TODO: dashed line + +package draw2dpdf + +import ( + "bytes" + "image" + "image/color" + "image/png" + "log" + "math" + "os" + "strconv" + + "github.com/golang/freetype/truetype" + + "github.com/jung-kurt/gofpdf" + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dbase" + "github.com/llgcode/draw2d/draw2dkit" +) + +const ( + // DPI of a pdf document is fixed at 72. + DPI = 72 + c255 = 255.0 / 65535.0 +) + +var ( + caps = map[draw2d.LineCap]string{ + draw2d.RoundCap: "round", + draw2d.ButtCap: "butt", + draw2d.SquareCap: "square"} + joins = map[draw2d.LineJoin]string{ + draw2d.RoundJoin: "round", + draw2d.BevelJoin: "bevel", + draw2d.MiterJoin: "miter", + } + imageCount uint32 + white color.Color = color.RGBA{255, 255, 255, 255} +) + +// NewPdf creates a new pdf document with the draw2d fontfolder, adds +// a page and set fill color to white. +func NewPdf(orientationStr, unitStr, sizeStr string) *gofpdf.Fpdf { + pdf := gofpdf.New(orientationStr, unitStr, sizeStr, draw2d.GetFontFolder()) + // to be compatible with draw2d + pdf.SetMargins(0, 0, 0) + pdf.SetDrawColor(0, 0, 0) + pdf.SetFillColor(255, 255, 255) + pdf.SetLineCapStyle("round") + pdf.SetLineJoinStyle("round") + pdf.SetLineWidth(1) + pdf.AddPage() + return pdf +} + +// rgb converts a color (used by draw2d) into 3 int (used by gofpdf) +func rgb(c color.Color) (int, int, int) { + r, g, b, _ := c.RGBA() + return int(float64(r) * c255), int(float64(g) * c255), int(float64(b) * c255) +} + +// clearRect draws a white rectangle +func clearRect(gc *GraphicContext, x1, y1, x2, y2 float64) { + // save state + f := gc.Current.FillColor + x, y := gc.pdf.GetXY() + // cover page with white rectangle + gc.SetFillColor(white) + draw2dkit.Rectangle(gc, x1, y1, x2, y2) + gc.Fill() + // restore state + gc.SetFillColor(f) + gc.pdf.MoveTo(x, y) +} + +// GraphicContext implements the draw2d.GraphicContext interface +// It provides draw2d with a pdf backend (based on gofpdf) +type GraphicContext struct { + *draw2dbase.StackGraphicContext + pdf *gofpdf.Fpdf + DPI int +} + +// NewGraphicContext creates a new pdf GraphicContext +func NewGraphicContext(pdf *gofpdf.Fpdf) *GraphicContext { + gc := &GraphicContext{draw2dbase.NewStackGraphicContext(), pdf, DPI} + gc.SetDPI(DPI) + return gc +} + +// DrawImage draws an image as PNG +// TODO: add type (tp) as parameter to argument list? +func (gc *GraphicContext) DrawImage(image image.Image) { + name := strconv.Itoa(int(imageCount)) + imageCount++ + tp := "PNG" // "JPG", "JPEG", "PNG" and "GIF" + b := &bytes.Buffer{} + png.Encode(b, image) + gc.pdf.RegisterImageReader(name, tp, b) + bounds := image.Bounds() + x0, y0 := float64(bounds.Min.X), float64(bounds.Min.Y) + w, h := float64(bounds.Dx()), float64(bounds.Dy()) + gc.pdf.Image(name, x0, y0, w, h, false, tp, 0, "") +} + +// Clear draws a white rectangle over the whole page +func (gc *GraphicContext) Clear() { + width, height := gc.pdf.GetPageSize() + clearRect(gc, 0, 0, width, height) +} + +// ClearRect draws a white rectangle over the specified area. +// Samples: line. +func (gc *GraphicContext) ClearRect(x1, y1, x2, y2 int) { + clearRect(gc, float64(x1), float64(y1), float64(x2), float64(y2)) +} + +// recalc recalculates scale and bounds values from the font size, screen +// resolution and font metrics, and invalidates the glyph cache. +func (gc *GraphicContext) recalc() { + // TODO: resolve properly the font size for pdf and bitmap + gc.Current.Scale = 3 * float64(gc.DPI) / 72 +} + +// SetDPI sets the DPI which influences the font size. +func (gc *GraphicContext) SetDPI(dpi int) { + gc.DPI = dpi + gc.recalc() +} + +// GetDPI returns the DPI which influences the font size. +// (Note that gofpdf uses a fixed dpi of 72: +// https://godoc.org/code.google.com/p/gofpdf#Fpdf.PointConvert) +func (gc *GraphicContext) GetDPI() int { + return gc.DPI +} + +// GetStringBounds returns the approximate pixel bounds of the string s at x, y. +// The left edge of the em square of the first character of s +// and the baseline intersect at 0, 0 in the returned coordinates. +// Therefore the top and left coordinates may well be negative. +func (gc *GraphicContext) GetStringBounds(s string) (left, top, right, bottom float64) { + _, h := gc.pdf.GetFontSize() + d := gc.pdf.GetFontDesc("", "") + if d.Ascent == 0 { + // not defined (standard font?), use average of 81% + top = 0.81 * h + } else { + top = -float64(d.Ascent) * h / float64(d.Ascent-d.Descent) + } + return 0, top, gc.pdf.GetStringWidth(s), top + h +} + +// CreateStringPath creates a path from the string s at x, y, and returns the string width. +func (gc *GraphicContext) CreateStringPath(text string, x, y float64) (cursor float64) { + //fpdf uses the top left corner + left, top, right, bottom := gc.GetStringBounds(text) + w := right - left + h := bottom - top + // gc.pdf.SetXY(x, y-h) do not use this as y-h might be negative + margin := gc.pdf.GetCellMargin() + gc.pdf.MoveTo(x-left-margin, y+top) + gc.pdf.CellFormat(w, h, text, "", 0, "BL", false, 0, "") + return w +} + +// FillString draws a string at 0, 0 +func (gc *GraphicContext) FillString(text string) (cursor float64) { + return gc.FillStringAt(text, 0, 0) +} + +// FillStringAt draws a string at x, y +func (gc *GraphicContext) FillStringAt(text string, x, y float64) (cursor float64) { + return gc.CreateStringPath(text, x, y) +} + +// StrokeString draws a string at 0, 0 (stroking is unsupported, +// string will be filled) +func (gc *GraphicContext) StrokeString(text string) (cursor float64) { + return gc.StrokeStringAt(text, 0, 0) +} + +// StrokeStringAt draws a string at x, y (stroking is unsupported, +// string will be filled) +func (gc *GraphicContext) StrokeStringAt(text string, x, y float64) (cursor float64) { + return gc.CreateStringPath(text, x, y) +} + +// Stroke strokes the paths with the color specified by SetStrokeColor +func (gc *GraphicContext) Stroke(paths ...*draw2d.Path) { + _, _, _, alphaS := gc.Current.StrokeColor.RGBA() + gc.draw("D", alphaS, paths...) + gc.Current.Path.Clear() +} + +// Fill fills the paths with the color specified by SetFillColor +func (gc *GraphicContext) Fill(paths ...*draw2d.Path) { + style := "F" + if gc.Current.FillRule != draw2d.FillRuleWinding { + style += "*" + } + _, _, _, alphaF := gc.Current.FillColor.RGBA() + gc.draw(style, alphaF, paths...) + gc.Current.Path.Clear() +} + +// FillStroke first fills the paths and than strokes them +func (gc *GraphicContext) FillStroke(paths ...*draw2d.Path) { + var rule string + if gc.Current.FillRule != draw2d.FillRuleWinding { + rule = "*" + } + _, _, _, alphaS := gc.Current.StrokeColor.RGBA() + _, _, _, alphaF := gc.Current.FillColor.RGBA() + if alphaS == alphaF { + gc.draw("FD"+rule, alphaF, paths...) + } else { + gc.draw("F"+rule, alphaF, paths...) + gc.draw("S", alphaS, paths...) + } + gc.Current.Path.Clear() +} + +var logger = log.New(os.Stdout, "", log.Lshortfile) + +const alphaMax = float64(0xFFFF) + +// draw fills and/or strokes paths +func (gc *GraphicContext) draw(style string, alpha uint32, paths ...*draw2d.Path) { + paths = append(paths, gc.Current.Path) + for _, p := range paths { + ConvertPath(p, gc.pdf) + } + a := float64(alpha) / alphaMax + current, blendMode := gc.pdf.GetAlpha() + if a != current { + gc.pdf.SetAlpha(a, blendMode) + } + gc.pdf.DrawPath(style) +} + +// overwrite StackGraphicContext methods + +// SetStrokeColor sets the stroke color +func (gc *GraphicContext) SetStrokeColor(c color.Color) { + gc.StackGraphicContext.SetStrokeColor(c) + gc.pdf.SetDrawColor(rgb(c)) +} + +// SetFillColor sets the fill and text color +func (gc *GraphicContext) SetFillColor(c color.Color) { + gc.StackGraphicContext.SetFillColor(c) + gc.pdf.SetFillColor(rgb(c)) + gc.pdf.SetTextColor(rgb(c)) +} + +// SetFont is unsupported by the pdf graphic context, use SetFontData +// instead. +func (gc *GraphicContext) SetFont(font *truetype.Font) { + // TODO: what to do with this api conflict between draw2d and gofpdf?! +} + +// SetFontData sets the current font used to draw text. Always use +// this method, as SetFont is unsupported by the pdf graphic context. +// It is mandatory to call this method at least once before printing +// text or the resulting document will not be valid. +// It is necessary to generate a font definition file first with the +// makefont utility. It is not necessary to call this function for the +// core PDF fonts (courier, helvetica, times, zapfdingbats). +// go get github.com/jung-kurt/gofpdf/makefont +// http://godoc.org/github.com/jung-kurt/gofpdf#Fpdf.AddFont +func (gc *GraphicContext) SetFontData(fontData draw2d.FontData) { + // TODO: call Makefont embed if json file does not exist yet + gc.StackGraphicContext.SetFontData(fontData) + var style string + if fontData.Style&draw2d.FontStyleBold != 0 { + style += "B" + } + if fontData.Style&draw2d.FontStyleItalic != 0 { + style += "I" + } + fn := draw2d.FontFileName(fontData) + fn = fn[:len(fn)-4] + size, _ := gc.pdf.GetFontSize() + gc.pdf.AddFont(fontData.Name, style, fn+".json") + gc.pdf.SetFont(fontData.Name, style, size) +} + +// SetFontSize sets the font size in points (as in ``a 12 point font''). +// TODO: resolve this with ImgGraphicContext (now done with gc.Current.Scale) +func (gc *GraphicContext) SetFontSize(fontSize float64) { + gc.StackGraphicContext.SetFontSize(fontSize) + gc.recalc() + gc.pdf.SetFontSize(fontSize * gc.Current.Scale) +} + +// SetLineDash sets the line dash pattern +func (gc *GraphicContext) SetLineDash(Dash []float64, DashOffset float64) { + gc.StackGraphicContext.SetLineDash(Dash, DashOffset) + gc.pdf.SetDashPattern(Dash, DashOffset) +} + +// SetLineWidth sets the line width +func (gc *GraphicContext) SetLineWidth(LineWidth float64) { + gc.StackGraphicContext.SetLineWidth(LineWidth) + gc.pdf.SetLineWidth(LineWidth) +} + +// SetLineCap sets the line cap (round, but or square) +func (gc *GraphicContext) SetLineCap(Cap draw2d.LineCap) { + gc.StackGraphicContext.SetLineCap(Cap) + gc.pdf.SetLineCapStyle(caps[Cap]) +} + +// SetLineJoin sets the line cap (round, bevel or miter) +func (gc *GraphicContext) SetLineJoin(Join draw2d.LineJoin) { + gc.StackGraphicContext.SetLineJoin(Join) + gc.pdf.SetLineJoinStyle(joins[Join]) +} + +// Transformations + +// Scale generally scales the following text, drawings and images. +// sx and sy are the scaling factors for width and height. +// This must be placed between gc.Save() and gc.Restore(), otherwise +// the pdf is invalid. +func (gc *GraphicContext) Scale(sx, sy float64) { + gc.StackGraphicContext.Scale(sx, sy) + gc.pdf.TransformScale(sx*100, sy*100, 0, 0) +} + +// Rotate rotates the following text, drawings and images. +// Angle is specified in radians and measured clockwise from the +// 3 o'clock position. +// This must be placed between gc.Save() and gc.Restore(), otherwise +// the pdf is invalid. +func (gc *GraphicContext) Rotate(angle float64) { + gc.StackGraphicContext.Rotate(angle) + gc.pdf.TransformRotate(-angle*180/math.Pi, 0, 0) +} + +// Translate moves the following text, drawings and images +// horizontally and vertically by the amounts specified by tx and ty. +// This must be placed between gc.Save() and gc.Restore(), otherwise +// the pdf is invalid. +func (gc *GraphicContext) Translate(tx, ty float64) { + gc.StackGraphicContext.Translate(tx, ty) + gc.pdf.TransformTranslate(tx, ty) +} + +// Save saves the current context stack +// (transformation, font, color,...). +func (gc *GraphicContext) Save() { + gc.StackGraphicContext.Save() + gc.pdf.TransformBegin() +} + +// Restore restores the current context stack +// (transformation, color,...). Restoring the font is not supported. +func (gc *GraphicContext) Restore() { + gc.pdf.TransformEnd() + gc.StackGraphicContext.Restore() + c := gc.Current + gc.SetFontSize(c.FontSize) + // gc.SetFontData(c.FontData) unsupported, causes bug (do not enable) + gc.SetLineWidth(c.LineWidth) + gc.SetStrokeColor(c.StrokeColor) + gc.SetFillColor(c.FillColor) + gc.SetFillRule(c.FillRule) + // gc.SetLineDash(c.Dash, c.DashOffset) // TODO + gc.SetLineCap(c.Cap) + gc.SetLineJoin(c.Join) + // c.Path unsupported + // c.Font unsupported +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go new file mode 100644 index 0000000..49832cf --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go @@ -0,0 +1,44 @@ +// Copyright 2015 The draw2d Authors. All rights reserved. +// created: 26/06/2015 by Stani Michiels + +package draw2dpdf + +import ( + "math" + + "github.com/llgcode/draw2d" +) + +const deg = 180 / math.Pi + +// ConvertPath converts a paths to the pdf api +func ConvertPath(path *draw2d.Path, pdf Vectorizer) { + var startX, startY float64 = 0, 0 + i := 0 + for _, cmp := range path.Components { + switch cmp { + case draw2d.MoveToCmp: + startX, startY = path.Points[i], path.Points[i+1] + pdf.MoveTo(startX, startY) + i += 2 + case draw2d.LineToCmp: + pdf.LineTo(path.Points[i], path.Points[i+1]) + i += 2 + case draw2d.QuadCurveToCmp: + pdf.CurveTo(path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3]) + i += 4 + case draw2d.CubicCurveToCmp: + pdf.CurveBezierCubicTo(path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3], path.Points[i+4], path.Points[i+5]) + i += 6 + case draw2d.ArcToCmp: + pdf.ArcTo(path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3], + 0, // degRotate + path.Points[i+4]*deg, // degStart = startAngle + (path.Points[i+4]-path.Points[i+5])*deg) // degEnd = startAngle-angle + i += 6 + case draw2d.CloseCmp: + pdf.LineTo(startX, startY) + pdf.ClosePath() + } + } +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/samples_test.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/samples_test.go new file mode 100644 index 0000000..ca3441f --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/samples_test.go @@ -0,0 +1,65 @@ +// Copyright 2015 The draw2d Authors. All rights reserved. +// created: 26/06/2015 by Stani Michiels +// See also test_test.go + +package draw2dpdf_test + +import ( + "testing" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/samples/android" + "github.com/llgcode/draw2d/samples/frameimage" + "github.com/llgcode/draw2d/samples/geometry" + "github.com/llgcode/draw2d/samples/gopher" + "github.com/llgcode/draw2d/samples/gopher2" + "github.com/llgcode/draw2d/samples/helloworld" + "github.com/llgcode/draw2d/samples/line" + "github.com/llgcode/draw2d/samples/linecapjoin" + "github.com/llgcode/draw2d/samples/postscript" +) + +func TestSampleAndroid(t *testing.T) { + test(t, android.Main) +} + +// TODO: FillString: w (width) is incorrect +func TestSampleGeometry(t *testing.T) { + // Set the global folder for searching fonts + // The pdf backend needs for every ttf file its corresponding + // json/.z file which is generated by gofpdf/makefont. + draw2d.SetFontFolder("../resource/font") + test(t, geometry.Main) +} + +func TestSampleGopher(t *testing.T) { + test(t, gopher.Main) +} + +func TestSampleGopher2(t *testing.T) { + test(t, gopher2.Main) +} + +func TestSampleHelloWorld(t *testing.T) { + // Set the global folder for searching fonts + // The pdf backend needs for every ttf file its corresponding + // json/.z file which is generated by gofpdf/makefont. + draw2d.SetFontFolder("../resource/font") + test(t, helloworld.Main) +} + +func TestSampleFrameImage(t *testing.T) { + test(t, frameimage.Main) +} + +func TestSampleLine(t *testing.T) { + test(t, line.Main) +} + +func TestSampleLineCap(t *testing.T) { + test(t, linecapjoin.Main) +} + +func TestSamplePostscript(t *testing.T) { + test(t, postscript.Main) +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/test_test.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/test_test.go new file mode 100644 index 0000000..801ff36 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/test_test.go @@ -0,0 +1,39 @@ +// Copyright 2015 The draw2d Authors. All rights reserved. +// created: 26/06/2015 by Stani Michiels + +// Package draw2dpdf_test gives test coverage with the command: +// go test -cover ./... | grep -v "no test" +// (It should be run from its parent draw2d directory.) +package draw2dpdf_test + +import ( + "testing" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dpdf" +) + +type sample func(gc draw2d.GraphicContext, ext string) (string, error) + +func test(t *testing.T, draw sample) { + // Initialize the graphic context on an pdf document + dest := draw2dpdf.NewPdf("L", "mm", "A4") + gc := draw2dpdf.NewGraphicContext(dest) + // Draw sample + output, err := draw(gc, "pdf") + if err != nil { + t.Errorf("Drawing %q failed: %v", output, err) + return + } + /* + // Save to pdf only if it doesn't exist because of git + if _, err = os.Stat(output); err == nil { + t.Skipf("Saving %q skipped, as it exists already. (Git would consider it modified.)", output) + return + } + */ + err = draw2dpdf.SaveToPdfFile(output, dest) + if err != nil { + t.Errorf("Saving %q failed: %v", output, err) + } +} diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/vectorizer.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/vectorizer.go new file mode 100644 index 0000000..556c2e0 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/vectorizer.go @@ -0,0 +1,22 @@ +// Copyright 2015 The draw2d Authors. All rights reserved. +// created: 26/06/2015 by Stani Michiels + +package draw2dpdf + +// Vectorizer defines the minimal interface for gofpdf.Fpdf +// to be passed to a PathConvertor. +// It is also implemented by for example VertexMatrixTransform +type Vectorizer interface { + // MoveTo creates a new subpath that start at the specified point + MoveTo(x, y float64) + // LineTo adds a line to the current subpath + LineTo(x, y float64) + // CurveTo adds a quadratic bezier curve to the current subpath + CurveTo(cx, cy, x, y float64) + // CurveTo adds a cubic bezier curve to the current subpath + CurveBezierCubicTo(cx1, cy1, cx2, cy2, x, y float64) + // ArcTo adds an arc to the current subpath + ArcTo(x, y, rx, ry, degRotate, degStart, degEnd float64) + // ClosePath closes the subpath + ClosePath() +} diff --git a/vendor/github.com/llgcode/draw2d/font.go b/vendor/github.com/llgcode/draw2d/font.go new file mode 100644 index 0000000..cd0ec1b --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/font.go @@ -0,0 +1,154 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package draw2d + +import ( + "io/ioutil" + "log" + "path/filepath" + + "github.com/golang/freetype/truetype" +) + +// FontStyle defines bold and italic styles for the font +// It is possible to combine values for mixed styles, eg. +// FontData.Style = FontStyleBold | FontStyleItalic +type FontStyle byte + +const ( + FontStyleNormal FontStyle = iota + FontStyleBold + FontStyleItalic +) + +type FontFamily byte + +const ( + FontFamilySans FontFamily = iota + FontFamilySerif + FontFamilyMono +) + +type FontData struct { + Name string + Family FontFamily + Style FontStyle +} + +type FontFileNamer func(fontData FontData) string + +func FontFileName(fontData FontData) string { + fontFileName := fontData.Name + switch fontData.Family { + case FontFamilySans: + fontFileName += "s" + case FontFamilySerif: + fontFileName += "r" + case FontFamilyMono: + fontFileName += "m" + } + if fontData.Style&FontStyleBold != 0 { + fontFileName += "b" + } else { + fontFileName += "r" + } + + if fontData.Style&FontStyleItalic != 0 { + fontFileName += "i" + } + fontFileName += ".ttf" + return fontFileName +} + +func RegisterFont(fontData FontData, font *truetype.Font) { + fontCache.Store(fontData, font) +} + +func GetFont(fontData FontData) (font *truetype.Font) { + var err error + + if font, err = fontCache.Load(fontData); err != nil { + log.Println(err) + } + + return +} + +func GetFontFolder() string { + return defaultFonts.folder +} + +func SetFontFolder(folder string) { + defaultFonts.folder = filepath.Clean(folder) +} + +func SetFontNamer(fn FontFileNamer) { + defaultFonts.namer = fn +} + +// Types implementing this interface can be passed to SetFontCache to change the +// way fonts are being stored and retrieved. +type FontCache interface { + // Loads a truetype font represented by the FontData object passed as + // argument. + // The method returns an error if the font could not be loaded, either + // because it didn't exist or the resource it was loaded from was corrupted. + Load(FontData) (*truetype.Font, error) + + // Sets the truetype font that will be returned by Load when given the font + // data passed as first argument. + Store(FontData, *truetype.Font) +} + +// Changes the font cache backend used by the package. After calling this +// functionSetFontFolder and SetFontNamer will not affect anymore how fonts are +// loaded. +// To restore the default font cache, call this function passing nil as argument. +func SetFontCache(cache FontCache) { + if cache == nil { + fontCache = defaultFonts + } else { + fontCache = cache + } +} + +type defaultFontCache struct { + fonts map[string]*truetype.Font + folder string + namer FontFileNamer +} + +func (cache *defaultFontCache) Load(fontData FontData) (font *truetype.Font, err error) { + if font = cache.fonts[cache.namer(fontData)]; font != nil { + return font, nil + } + + var data []byte + var file = cache.namer(fontData) + + if data, err = ioutil.ReadFile(filepath.Join(cache.folder, file)); err != nil { + return + } + + if font, err = truetype.Parse(data); err != nil { + return + } + + cache.fonts[file] = font + return +} + +func (cache *defaultFontCache) Store(fontData FontData, font *truetype.Font) { + cache.fonts[cache.namer(fontData)] = font +} + +var ( + defaultFonts = &defaultFontCache{ + fonts: make(map[string]*truetype.Font), + folder: "../resource/font", + namer: FontFileName, + } + + fontCache FontCache = defaultFonts +) diff --git a/vendor/github.com/llgcode/draw2d/gc.go b/vendor/github.com/llgcode/draw2d/gc.go new file mode 100644 index 0000000..543359e --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/gc.go @@ -0,0 +1,87 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +package draw2d + +import ( + "image" + "image/color" +) + +// GraphicContext describes the interface for the various backends (images, pdf, opengl, ...) +type GraphicContext interface { + // PathBuilder describes the interface for path drawing + PathBuilder + // BeginPath creates a new path + BeginPath() + // GetPath copies the current path, then returns it + GetPath() Path + // GetMatrixTransform returns the current transformation matrix + GetMatrixTransform() Matrix + // SetMatrixTransform sets the current transformation matrix + SetMatrixTransform(tr Matrix) + // ComposeMatrixTransform composes the current transformation matrix with tr + ComposeMatrixTransform(tr Matrix) + // Rotate applies a rotation to the current transformation matrix. angle is in radian. + Rotate(angle float64) + // Translate applies a translation to the current transformation matrix. + Translate(tx, ty float64) + // Scale applies a scale to the current transformation matrix. + Scale(sx, sy float64) + // SetStrokeColor sets the current stroke color + SetStrokeColor(c color.Color) + // SetFillColor sets the current fill color + SetFillColor(c color.Color) + // SetFillRule sets the current fill rule + SetFillRule(f FillRule) + // SetLineWidth sets the current line width + SetLineWidth(lineWidth float64) + // SetLineCap sets the current line cap + SetLineCap(cap LineCap) + // SetLineJoin sets the current line join + SetLineJoin(join LineJoin) + // SetLineDash sets the current dash + SetLineDash(dash []float64, dashOffset float64) + // SetFontSize sets the current font size + SetFontSize(fontSize float64) + // GetFontSize gets the current font size + GetFontSize() float64 + // SetFontData sets the current FontData + SetFontData(fontData FontData) + // GetFontData gets the current FontData + GetFontData() FontData + // GetFontName gets the current FontData as a string + GetFontName() string + // DrawImage draws the raster image in the current canvas + DrawImage(image image.Image) + // Save the context and push it to the context stack + Save() + // Restore remove the current context and restore the last one + Restore() + // Clear fills the current canvas with a default transparent color + Clear() + // ClearRect fills the specified rectangle with a default transparent color + ClearRect(x1, y1, x2, y2 int) + // SetDPI sets the current DPI + SetDPI(dpi int) + // GetDPI gets the current DPI + GetDPI() int + // GetStringBounds gets pixel bounds(dimensions) of given string + GetStringBounds(s string) (left, top, right, bottom float64) + // CreateStringPath creates a path from the string s at x, y + CreateStringPath(text string, x, y float64) (cursor float64) + // FillString draws the text at point (0, 0) + FillString(text string) (cursor float64) + // FillStringAt draws the text at the specified point (x, y) + FillStringAt(text string, x, y float64) (cursor float64) + // StrokeString draws the contour of the text at point (0, 0) + StrokeString(text string) (cursor float64) + // StrokeStringAt draws the contour of the text at point (x, y) + StrokeStringAt(text string, x, y float64) (cursor float64) + // Stroke strokes the paths with the color specified by SetStrokeColor + Stroke(paths ...*Path) + // Fill fills the paths with the color specified by SetFillColor + Fill(paths ...*Path) + // FillStroke first fills the paths and than strokes them + FillStroke(paths ...*Path) +} diff --git a/vendor/github.com/llgcode/draw2d/matrix.go b/vendor/github.com/llgcode/draw2d/matrix.go new file mode 100644 index 0000000..55f5e38 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/matrix.go @@ -0,0 +1,222 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +package draw2d + +import ( + "math" +) + +// Matrix represents an affine transformation +type Matrix [6]float64 + +const ( + epsilon = 1e-6 +) + +// Determinant compute the determinant of the matrix +func (tr Matrix) Determinant() float64 { + return tr[0]*tr[3] - tr[1]*tr[2] +} + +// Transform applies the transformation matrix to points. It modify the points passed in parameter. +func (tr Matrix) Transform(points []float64) { + for i, j := 0, 1; j < len(points); i, j = i+2, j+2 { + x := points[i] + y := points[j] + points[i] = x*tr[0] + y*tr[2] + tr[4] + points[j] = x*tr[1] + y*tr[3] + tr[5] + } +} + +// TransformPoint applies the transformation matrix to point. It returns the point the transformed point. +func (tr Matrix) TransformPoint(x, y float64) (xres, yres float64) { + xres = x*tr[0] + y*tr[2] + tr[4] + yres = x*tr[1] + y*tr[3] + tr[5] + return xres, yres +} + +func minMax(x, y float64) (min, max float64) { + if x > y { + return y, x + } + return x, y +} + +// Transform applies the transformation matrix to the rectangle represented by the min and the max point of the rectangle +func (tr Matrix) TransformRectangle(x0, y0, x2, y2 float64) (nx0, ny0, nx2, ny2 float64) { + points := []float64{x0, y0, x2, y0, x2, y2, x0, y2} + tr.Transform(points) + points[0], points[2] = minMax(points[0], points[2]) + points[4], points[6] = minMax(points[4], points[6]) + points[1], points[3] = minMax(points[1], points[3]) + points[5], points[7] = minMax(points[5], points[7]) + + nx0 = math.Min(points[0], points[4]) + ny0 = math.Min(points[1], points[5]) + nx2 = math.Max(points[2], points[6]) + ny2 = math.Max(points[3], points[7]) + return nx0, ny0, nx2, ny2 +} + +// InverseTransform applies the transformation inverse matrix to the rectangle represented by the min and the max point of the rectangle +func (tr Matrix) InverseTransform(points []float64) { + d := tr.Determinant() // matrix determinant + for i, j := 0, 1; j < len(points); i, j = i+2, j+2 { + x := points[i] + y := points[j] + points[i] = ((x-tr[4])*tr[3] - (y-tr[5])*tr[2]) / d + points[j] = ((y-tr[5])*tr[0] - (x-tr[4])*tr[1]) / d + } +} + +// InverseTransformPoint applies the transformation inverse matrix to point. It returns the point the transformed point. +func (tr Matrix) InverseTransformPoint(x, y float64) (xres, yres float64) { + d := tr.Determinant() // matrix determinant + xres = ((x-tr[4])*tr[3] - (y-tr[5])*tr[2]) / d + yres = ((y-tr[5])*tr[0] - (x-tr[4])*tr[1]) / d + return xres, yres +} + +// VectorTransform applies the transformation matrix to points without using the translation parameter of the affine matrix. +// It modify the points passed in parameter. +func (tr Matrix) VectorTransform(points []float64) { + for i, j := 0, 1; j < len(points); i, j = i+2, j+2 { + x := points[i] + y := points[j] + points[i] = x*tr[0] + y*tr[2] + points[j] = x*tr[1] + y*tr[3] + } +} + +// NewIdentityMatrix creates an identity transformation matrix. +func NewIdentityMatrix() Matrix { + return Matrix{1, 0, 0, 1, 0, 0} +} + +// NewTranslationMatrix creates a transformation matrix with a translation tx and ty translation parameter +func NewTranslationMatrix(tx, ty float64) Matrix { + return Matrix{1, 0, 0, 1, tx, ty} +} + +// NewScaleMatrix creates a transformation matrix with a sx, sy scale factor +func NewScaleMatrix(sx, sy float64) Matrix { + return Matrix{sx, 0, 0, sy, 0, 0} +} + +// NewRotationMatrix creates a rotation transformation matrix. angle is in radian +func NewRotationMatrix(angle float64) Matrix { + c := math.Cos(angle) + s := math.Sin(angle) + return Matrix{c, s, -s, c, 0, 0} +} + +// NewMatrixFromRects creates a transformation matrix, combining a scale and a translation, that transform rectangle1 into rectangle2. +func NewMatrixFromRects(rectangle1, rectangle2 [4]float64) Matrix { + xScale := (rectangle2[2] - rectangle2[0]) / (rectangle1[2] - rectangle1[0]) + yScale := (rectangle2[3] - rectangle2[1]) / (rectangle1[3] - rectangle1[1]) + xOffset := rectangle2[0] - (rectangle1[0] * xScale) + yOffset := rectangle2[1] - (rectangle1[1] * yScale) + return Matrix{xScale, 0, 0, yScale, xOffset, yOffset} +} + +// Inverse computes the inverse matrix +func (tr *Matrix) Inverse() { + d := tr.Determinant() // matrix determinant + tr0, tr1, tr2, tr3, tr4, tr5 := tr[0], tr[1], tr[2], tr[3], tr[4], tr[5] + tr[0] = tr3 / d + tr[1] = -tr1 / d + tr[2] = -tr2 / d + tr[3] = tr0 / d + tr[4] = (tr2*tr5 - tr3*tr4) / d + tr[5] = (tr1*tr4 - tr0*tr5) / d +} + +func (tr Matrix) Copy() Matrix { + var result Matrix + copy(result[:], tr[:]) + return result +} + +// Compose multiplies trToConcat x tr +func (tr *Matrix) Compose(trToCompose Matrix) { + tr0, tr1, tr2, tr3, tr4, tr5 := tr[0], tr[1], tr[2], tr[3], tr[4], tr[5] + tr[0] = trToCompose[0]*tr0 + trToCompose[1]*tr2 + tr[1] = trToCompose[1]*tr3 + trToCompose[0]*tr1 + tr[2] = trToCompose[2]*tr0 + trToCompose[3]*tr2 + tr[3] = trToCompose[3]*tr3 + trToCompose[2]*tr1 + tr[4] = trToCompose[4]*tr0 + trToCompose[5]*tr2 + tr4 + tr[5] = trToCompose[5]*tr3 + trToCompose[4]*tr1 + tr5 +} + +// Scale adds a scale to the matrix +func (tr *Matrix) Scale(sx, sy float64) { + tr[0] = sx * tr[0] + tr[1] = sx * tr[1] + tr[2] = sy * tr[2] + tr[3] = sy * tr[3] +} + +// Translate adds a translation to the matrix +func (tr *Matrix) Translate(tx, ty float64) { + tr[4] = tx*tr[0] + ty*tr[2] + tr[4] + tr[5] = ty*tr[3] + tx*tr[1] + tr[5] +} + +// Rotate adds a rotation to the matrix. angle is in radian +func (tr *Matrix) Rotate(angle float64) { + c := math.Cos(angle) + s := math.Sin(angle) + t0 := c*tr[0] + s*tr[2] + t1 := s*tr[3] + c*tr[1] + t2 := c*tr[2] - s*tr[0] + t3 := c*tr[3] - s*tr[1] + tr[0] = t0 + tr[1] = t1 + tr[2] = t2 + tr[3] = t3 +} + +// GetTranslation +func (tr Matrix) GetTranslation() (x, y float64) { + return tr[4], tr[5] +} + +// GetScaling +func (tr Matrix) GetScaling() (x, y float64) { + return tr[0], tr[3] +} + +// GetScale computes a scale for the matrix +func (tr Matrix) GetScale() float64 { + x := 0.707106781*tr[0] + 0.707106781*tr[1] + y := 0.707106781*tr[2] + 0.707106781*tr[3] + return math.Sqrt(x*x + y*y) +} + +// ******************** Testing ******************** + +// Equals tests if a two transformation are equal. A tolerance is applied when comparing matrix elements. +func (tr1 Matrix) Equals(tr2 Matrix) bool { + for i := 0; i < 6; i = i + 1 { + if !fequals(tr1[i], tr2[i]) { + return false + } + } + return true +} + +// IsIdentity tests if a transformation is the identity transformation. A tolerance is applied when comparing matrix elements. +func (tr Matrix) IsIdentity() bool { + return fequals(tr[4], 0) && fequals(tr[5], 0) && tr.IsTranslation() +} + +// IsTranslation tests if a transformation is is a pure translation. A tolerance is applied when comparing matrix elements. +func (tr Matrix) IsTranslation() bool { + return fequals(tr[0], 1) && fequals(tr[1], 0) && fequals(tr[2], 0) && fequals(tr[3], 1) +} + +// fequals compares two floats. return true if the distance between the two floats is less than epsilon, false otherwise +func fequals(float1, float2 float64) bool { + return math.Abs(float1-float2) <= epsilon +} diff --git a/vendor/github.com/llgcode/draw2d/output/README.md b/vendor/github.com/llgcode/draw2d/output/README.md new file mode 100644 index 0000000..037f0e2 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/output/README.md @@ -0,0 +1,11 @@ +Demo output +=========== + +These folders are empty when you check out the git repository. The output is generated by the tests: +``` +go test ./... +``` +or with coverage: +``` +go test -cover ./... | grep -v "no test" +``` diff --git a/vendor/github.com/llgcode/draw2d/output/curve/.gitignore b/vendor/github.com/llgcode/draw2d/output/curve/.gitignore new file mode 100644 index 0000000..86d0cb2 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/output/curve/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/output/draw2dkit/.gitignore b/vendor/github.com/llgcode/draw2d/output/draw2dkit/.gitignore new file mode 100644 index 0000000..86d0cb2 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/output/draw2dkit/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/output/raster/.gitignore b/vendor/github.com/llgcode/draw2d/output/raster/.gitignore new file mode 100644 index 0000000..86d0cb2 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/output/raster/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/output/samples/.gitignore b/vendor/github.com/llgcode/draw2d/output/samples/.gitignore new file mode 100644 index 0000000..e39d62f --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/output/samples/.gitignore @@ -0,0 +1,6 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore +!geometry.png +!postscript.png \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/output/samples/geometry.png b/vendor/github.com/llgcode/draw2d/output/samples/geometry.png new file mode 100644 index 0000000..a2c966e Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/output/samples/geometry.png differ diff --git a/vendor/github.com/llgcode/draw2d/output/samples/postscript.png b/vendor/github.com/llgcode/draw2d/output/samples/postscript.png new file mode 100644 index 0000000..53e1a63 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/output/samples/postscript.png differ diff --git a/vendor/github.com/llgcode/draw2d/path.go b/vendor/github.com/llgcode/draw2d/path.go new file mode 100644 index 0000000..04a6572 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/path.go @@ -0,0 +1,192 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +package draw2d + +import ( + "fmt" + "math" +) + +// PathBuilder describes the interface for path drawing. +type PathBuilder interface { + // LastPoint returns the current point of the current sub path + LastPoint() (x, y float64) + // MoveTo creates a new subpath that start at the specified point + MoveTo(x, y float64) + // LineTo adds a line to the current subpath + LineTo(x, y float64) + // QuadCurveTo adds a quadratic Bézier curve to the current subpath + QuadCurveTo(cx, cy, x, y float64) + // CubicCurveTo adds a cubic Bézier curve to the current subpath + CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64) + // ArcTo adds an arc to the current subpath + ArcTo(cx, cy, rx, ry, startAngle, angle float64) + // Close creates a line from the current point to the last MoveTo + // point (if not the same) and mark the path as closed so the + // first and last lines join nicely. + Close() +} + +// PathCmp represents component of a path +type PathCmp int + +const ( + // MoveToCmp is a MoveTo component in a Path + MoveToCmp PathCmp = iota + // LineToCmp is a LineTo component in a Path + LineToCmp + // QuadCurveToCmp is a QuadCurveTo component in a Path + QuadCurveToCmp + // CubicCurveToCmp is a CubicCurveTo component in a Path + CubicCurveToCmp + // ArcToCmp is a ArcTo component in a Path + ArcToCmp + // CloseCmp is a ArcTo component in a Path + CloseCmp +) + +// Path stores points +type Path struct { + // Components is a slice of PathCmp in a Path and mark the role of each points in the Path + Components []PathCmp + // Points are combined with Components to have a specific role in the path + Points []float64 + // Last Point of the Path + x, y float64 +} + +func (p *Path) appendToPath(cmd PathCmp, points ...float64) { + p.Components = append(p.Components, cmd) + p.Points = append(p.Points, points...) +} + +// LastPoint returns the current point of the current path +func (p *Path) LastPoint() (x, y float64) { + return p.x, p.y +} + +// MoveTo starts a new path at (x, y) position +func (p *Path) MoveTo(x, y float64) { + p.appendToPath(MoveToCmp, x, y) + p.x = x + p.y = y +} + +// LineTo adds a line to the current path +func (p *Path) LineTo(x, y float64) { + if len(p.Components) == 0 { //special case when no move has been done + p.MoveTo(x, y) + } else { + p.appendToPath(LineToCmp, x, y) + } + p.x = x + p.y = y +} + +// QuadCurveTo adds a quadratic bezier curve to the current path +func (p *Path) QuadCurveTo(cx, cy, x, y float64) { + if len(p.Components) == 0 { //special case when no move has been done + p.MoveTo(x, y) + } else { + p.appendToPath(QuadCurveToCmp, cx, cy, x, y) + } + p.x = x + p.y = y +} + +// CubicCurveTo adds a cubic bezier curve to the current path +func (p *Path) CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64) { + if len(p.Components) == 0 { //special case when no move has been done + p.MoveTo(x, y) + } else { + p.appendToPath(CubicCurveToCmp, cx1, cy1, cx2, cy2, x, y) + } + p.x = x + p.y = y +} + +// ArcTo adds an arc to the path +func (p *Path) ArcTo(cx, cy, rx, ry, startAngle, angle float64) { + endAngle := startAngle + angle + clockWise := true + if angle < 0 { + clockWise = false + } + // normalize + if clockWise { + for endAngle < startAngle { + endAngle += math.Pi * 2.0 + } + } else { + for startAngle < endAngle { + startAngle += math.Pi * 2.0 + } + } + startX := cx + math.Cos(startAngle)*rx + startY := cy + math.Sin(startAngle)*ry + if len(p.Components) > 0 { + p.LineTo(startX, startY) + } else { + p.MoveTo(startX, startY) + } + p.appendToPath(ArcToCmp, cx, cy, rx, ry, startAngle, angle) + p.x = cx + math.Cos(endAngle)*rx + p.y = cy + math.Sin(endAngle)*ry +} + +// Close closes the current path +func (p *Path) Close() { + p.appendToPath(CloseCmp) +} + +// Copy make a clone of the current path and return it +func (p *Path) Copy() (dest *Path) { + dest = new(Path) + dest.Components = make([]PathCmp, len(p.Components)) + copy(dest.Components, p.Components) + dest.Points = make([]float64, len(p.Points)) + copy(dest.Points, p.Points) + dest.x, dest.y = p.x, p.y + return dest +} + +// Clear reset the path +func (p *Path) Clear() { + p.Components = p.Components[0:0] + p.Points = p.Points[0:0] + return +} + +// IsEmpty returns true if the path is empty +func (p *Path) IsEmpty() bool { + return len(p.Components) == 0 +} + +// String returns a debug text view of the path +func (p *Path) String() string { + s := "" + j := 0 + for _, cmd := range p.Components { + switch cmd { + case MoveToCmp: + s += fmt.Sprintf("MoveTo: %f, %f\n", p.Points[j], p.Points[j+1]) + j = j + 2 + case LineToCmp: + s += fmt.Sprintf("LineTo: %f, %f\n", p.Points[j], p.Points[j+1]) + j = j + 2 + case QuadCurveToCmp: + s += fmt.Sprintf("QuadCurveTo: %f, %f, %f, %f\n", p.Points[j], p.Points[j+1], p.Points[j+2], p.Points[j+3]) + j = j + 4 + case CubicCurveToCmp: + s += fmt.Sprintf("CubicCurveTo: %f, %f, %f, %f, %f, %f\n", p.Points[j], p.Points[j+1], p.Points[j+2], p.Points[j+3], p.Points[j+4], p.Points[j+5]) + j = j + 6 + case ArcToCmp: + s += fmt.Sprintf("ArcTo: %f, %f, %f, %f, %f, %f\n", p.Points[j], p.Points[j+1], p.Points[j+2], p.Points[j+3], p.Points[j+4], p.Points[j+5]) + j = j + 6 + case CloseCmp: + s += "Close\n" + } + } + return s +} diff --git a/vendor/github.com/llgcode/draw2d/resource/font/COPYING b/vendor/github.com/llgcode/draw2d/resource/font/COPYING new file mode 100644 index 0000000..78c6065 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/resource/font/COPYING @@ -0,0 +1,42 @@ +Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font +instruction code copyright (c) 2001 by URW++ GmbH. All Rights +Reserved. Luxi is a registered trademark of Bigelow & Holmes Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of these Fonts and associated documentation files (the "Font +Software"), to deal in the Font Software, including without +limitation the rights to use, copy, merge, publish, distribute, +sublicense, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to +the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software. + +The Font Software may not be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may not +be modified nor may additional glyphs or characters be added to the +Fonts. This License becomes null and void when the Fonts or Font +Software have been modified. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +BIGELOW & HOLMES INC. OR URW++ GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, +INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR +INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT +SOFTWARE. + +Except as contained in this notice, the names of Bigelow & Holmes +Inc. and URW++ GmbH. shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Font Software without +prior written authorization from Bigelow & Holmes Inc. and URW++ GmbH. + +For further information, contact: + +info@urwpp.de +or +design@bigelowandholmes.com diff --git a/vendor/github.com/llgcode/draw2d/resource/font/README b/vendor/github.com/llgcode/draw2d/resource/font/README new file mode 100644 index 0000000..f8cf488 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/resource/font/README @@ -0,0 +1,24 @@ + +All questions regarding this software should be directed at the +Xorg mailing list: + + http://lists.freedesktop.org/mailman/listinfo/xorg + +Please submit bug reports to the Xorg bugzilla: + + https://bugs.freedesktop.org/enter_bug.cgi?product=xorg + +The master development code repository can be found at: + + git://anongit.freedesktop.org/git/xorg/font/bh-ttf + + http://cgit.freedesktop.org/xorg/font/bh-ttf + +For patch submission instructions, see: + + http://www.x.org/wiki/Development/Documentation/SubmittingPatches + +For more information on the git code manager, see: + + http://wiki.x.org/wiki/GitPage + diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luximb.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luximb.ttf new file mode 100644 index 0000000..7473e1f Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luximb.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luximbi.json b/vendor/github.com/llgcode/draw2d/resource/font/luximbi.json new file mode 100644 index 0000000..cc5cd35 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/resource/font/luximbi.json @@ -0,0 +1 @@ +{"Tp":"TrueType","Name":"LuxiMono-BoldOblique","Desc":{"Ascent":783,"Descent":-205,"CapHeight":783,"Flags":97,"FontBBox":{"Xmin":-29,"Ymin":-211,"Xmax":764,"Ymax":1012},"ItalicAngle":-8,"StemV":120,"MissingWidth":600},"Up":0,"Ut":0,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,653,600,653,600,600,653,600,653,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600],"Enc":"cp1252","Diff":"","File":"luximbi.z","Size1":0,"Size2":0,"OriginalSize":69872,"I":0,"N":0,"DiffN":0} \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luximbi.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luximbi.ttf new file mode 100644 index 0000000..734201b Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luximbi.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luximbi.z b/vendor/github.com/llgcode/draw2d/resource/font/luximbi.z new file mode 100644 index 0000000..4dfb443 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luximbi.z differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luximr.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luximr.ttf new file mode 100644 index 0000000..6ad6e12 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luximr.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luximri.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luximri.ttf new file mode 100644 index 0000000..9b02826 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luximri.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxirb.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxirb.ttf new file mode 100644 index 0000000..89c1711 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxirb.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxirbi.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxirbi.ttf new file mode 100644 index 0000000..6a5fe68 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxirbi.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxirr.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxirr.ttf new file mode 100644 index 0000000..daa8ad8 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxirr.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxirri.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxirri.ttf new file mode 100644 index 0000000..3a0c406 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxirri.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxisb.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxisb.ttf new file mode 100644 index 0000000..1e1ee43 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxisb.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxisbi.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxisbi.ttf new file mode 100644 index 0000000..c7072a7 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxisbi.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxisr.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxisr.ttf new file mode 100644 index 0000000..c47fd20 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxisr.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/font/luxisri.ttf b/vendor/github.com/llgcode/draw2d/resource/font/luxisri.ttf new file mode 100644 index 0000000..8a3b012 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/font/luxisri.ttf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/image/geometry.pdf b/vendor/github.com/llgcode/draw2d/resource/image/geometry.pdf new file mode 100644 index 0000000..755e4ea Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/image/geometry.pdf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/image/gopher.png b/vendor/github.com/llgcode/draw2d/resource/image/gopher.png new file mode 100644 index 0000000..8598723 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/image/gopher.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/image/postscript.pdf b/vendor/github.com/llgcode/draw2d/resource/image/postscript.pdf new file mode 100644 index 0000000..d4b60be Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/image/postscript.pdf differ diff --git a/vendor/github.com/llgcode/draw2d/resource/image/tiger.ps b/vendor/github.com/llgcode/draw2d/resource/image/tiger.ps new file mode 100644 index 0000000..24a9dce --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/resource/image/tiger.ps @@ -0,0 +1,2733 @@ +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator: Adobe Illustrator(TM) 1.2d4 +%%For: OpenWindows Version 2 +%%Title: tiger.eps +%%CreationDate: 4/12/90 3:20 AM +%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0 +%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0 +%%BoundingBox: 22 171 567 738 +%%EndComments + +%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0 + +/Adobe_Illustrator_1.2d1 dup 100 dict def load begin +% definition operators +/bdef {bind def} bind def +/ldef {load def} bdef +/xdef {exch def} bdef +% graphic state operators +/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef +/_k /setcmybcolor where { + /setcmybcolor get +} { + { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind +} ifelse def +/g {/_b xdef /p {_b setgray} def} bdef +/G {/_B xdef /P {_B setgray} def} bdef +/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef +/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef +/d /setdash ldef +/_i currentflat def +/i {dup 0 eq {pop _i} if setflat} bdef +/j /setlinejoin ldef +/J /setlinecap ldef +/M /setmiterlimit ldef +/w /setlinewidth ldef +% path construction operators +/_R {.25 sub round .25 add} bdef +/_r {transform _R exch _R exch itransform} bdef +/c {_r curveto} bdef +/C /c ldef +/v {currentpoint 6 2 roll _r curveto} bdef +/V /v ldef +/y {_r 2 copy curveto} bdef +/Y /y ldef +/l {_r lineto} bdef +/L /l ldef +/m {_r moveto} bdef +% path painting operators +/n /newpath ldef +/N /n ldef +/F {p fill} bdef +/f {closepath F} bdef +/S {P stroke} bdef +/s {closepath S} bdef +/B {gsave F grestore S} bdef +/b {closepath B} bdef +end +%%EndProcSet +%%EndProlog + +%%Page: 1 1 + +Adobe_Illustrator_1.2d1 begin + +.8 setgray +clippath fill +-110 -300 translate +1.1 dup scale + +0 g +0 G +0 i +0 J +0 j +0.172 w +10 M +[]0 d +0 0 0 0 k + +177.696 715.715 m +177.797 713.821 176.973 713.84 v +176.149 713.859 159.695 761.934 139.167 759.691 C +156.95 767.044 177.696 715.715 V +b +181.226 718.738 m +180.677 716.922 179.908 717.221 v +179.14 717.519 180.023 768.325 159.957 773.199 C +179.18 774.063 181.226 718.738 V +b +208.716 676.41 m +210.352 675.45 209.882 674.773 v +209.411 674.096 160.237 686.898 150.782 668.541 C +154.461 687.428 208.716 676.41 V +b +205.907 666.199 m +207.763 665.803 207.529 665.012 v +207.296 664.221 156.593 660.879 153.403 640.478 C +150.945 659.563 205.907 666.199 V +b +201.696 671.724 m +203.474 671.061 203.128 670.313 v +202.782 669.565 152.134 673.654 146.002 653.936 C +146.354 673.175 201.696 671.724 V +b +190.991 689.928 m +192.299 688.554 191.66 688.033 v +191.021 687.512 147.278 713.366 133.131 698.324 C +141.872 715.467 190.991 689.928 V +b +183.446 685.737 m +184.902 684.52 184.326 683.929 v +183.75 683.339 137.362 704.078 125.008 687.531 C +131.753 705.553 183.446 685.737 V +b +180.846 681.665 m +182.454 680.657 181.964 679.994 v +181.474 679.331 132.692 693.554 122.709 675.478 C +126.934 694.251 180.846 681.665 V +b +191.58 681.051 m +192.702 679.52 192.001 679.085 v +191.3 678.65 151.231 709.898 135.273 696.793 C +146.138 712.674 191.58 681.051 V +b +171.8 710 m +172.4 708.2 171.6 708 v +170.8 707.8 142.2 749.8 122.999 742.2 C +138.2 754 171.8 710 V +b +172.495 703.021 m +173.47 701.392 172.731 701.025 v +171.993 700.657 135.008 735.501 117.899 723.939 C +130.196 738.739 172.495 703.021 V +b +172.38 698.651 m +173.502 697.12 172.801 696.685 v +172.1 696.251 132.031 727.498 116.073 714.393 C +126.938 730.274 172.38 698.651 V +b +0 J 1 w +170.17 696.935 m +170.673 690.887 171.661 684.318 173.4 681.199 C +169.8 668.799 178.6 655.599 V +178.2 648.399 179.8 645.199 V +183.8 636.799 188.6 635.999 v +192.484 635.352 201.207 632.283 211.068 630.879 c +228.2 616.799 225 603.999 V +224.6 587.599 221 585.999 V +232.6 597.199 223 580.399 V +218.6 561.599 l +244.2 583.199 228.6 564.799 V +218.6 538.799 l +238.2 557.199 231 548.799 V +227.8 539.999 l +271 567.199 240.2 537.599 V +248.2 541.199 252.6 538.399 V +259.4 539.599 258.6 537.999 V +237.8 527.599 234.2 509.199 V +242.6 519.199 239.4 508.399 V +239.8 496.799 l +243.8 518.399 243.4 480.799 V +262.6 498.799 251 477.999 V +251 461.199 l +266.2 477.599 259.8 464.799 V +269.8 473.599 265.8 458.399 V +265 447.999 269.4 459.199 V +285.4 489.799 279.4 463.599 V +278.6 444.399 283.4 459.199 V +283.8 448.799 293 441.599 V +291.8 492.399 304.6 456.399 V +308.6 439.999 l +311.4 449.199 311 454.399 V +325.8 470.799 319 446.399 V +334.2 469.199 331 455.999 V +323.4 439.999 325 435.199 V +341.8 469.999 343 471.599 V +341 429.198 351.8 465.199 V +357.4 453.199 354.6 448.799 V +362.6 456.799 361.8 459.999 V +366.4 468.199 369.2 454.599 V +371 445.199 372.6 448.399 V +376.6 424.398 377.8 447.199 V +379.4 460.799 372.2 472.399 V +373 475.599 370.2 479.599 v +383.8 457.999 376.6 486.799 V +387.801 478.799 389.001 478.799 V +375.4 501.999 384.2 497.199 V +379 507.599 397.001 495.599 V +381 511.599 398.601 501.999 V +406.601 495.599 399.001 505.599 V +384.6 521.599 406.601 503.599 V +418.201 487.199 419.001 484.399 V +409.001 513.599 404.601 516.399 V +413.001 552.799 454.201 537.199 V +461.001 519.999 465.401 538.399 V +478.201 544.799 489.401 517.199 V +493.401 530.799 492.601 533.599 V +499.401 532.399 498.601 533.599 V +511.801 529.199 513.001 529.999 V +519.801 523.199 520.201 526.799 V +529.401 523.999 527.401 527.599 V +536.201 511.999 536.601 508.399 V +539.001 522.399 l +541.001 519.599 l +542.601 527.199 541.801 528.399 v +541.001 529.599 561.801 521.599 566.601 500.799 C +568.601 492.399 l +574.601 507.199 573.001 511.199 V +578.201 510.399 578.601 505.999 V +582.601 529.199 577.801 535.199 V +582.201 535.999 583.401 532.399 V +583.401 539.599 l +590.601 538.799 590.601 541.199 V +595.001 545.199 597.001 540.399 V +584.601 575.599 603.001 556.399 V +610.201 545.599 606.601 564.399 v +603.001 583.199 599.001 584.799 603.801 585.199 C +604.601 588.799 602.601 590.399 v +600.601 591.999 603.801 590.399 y +608.601 586.399 603.401 608.399 V +609.801 606.799 597.801 635.999 V +600.601 638.399 596.601 646.799 V +604.601 642.399 607.401 643.999 V +607.001 645.599 603.801 649.599 V +582.201 704.4 602.601 682.399 V +614.451 668.849 608.051 691.649 V +598.94 715.659 599.717 719.955 V +170.17 696.935 l +b +0.2 0.55 0.85 0 k +599.717 719.755 m +600.345 719.574 602.551 718.45 603.801 716.8 C +610.601 706 605.401 724.4 V +596.201 753.2 605.001 742 V +611.001 734.8 607.801 748.4 v +603.936 764.827 601.401 771.2 y +613.001 766.4 586.201 806 V +595.001 802.4 l +575.401 842 553.801 847.2 V +545.801 853.2 l +584.201 891.2 571.401 928 V +564.601 933.2 555.001 924 V +548.601 919.2 542.601 920.8 V +511.801 919.6 509.801 919.6 v +507.801 919.6 473.001 956.8 407.401 939.2 C +402.201 937.2 397.801 938.4 V +379.4 954.4 330.6 931.6 v +320.6 929.6 319 929.6 v +317.4 929.6 314.6 929.6 306.6 923.2 c +298.6 916.8 298.2 916 296.2 914.4 C +279.8 903.2 275 902.4 V +263.4 896 259 886 V +255.4 884.8 l +253.8 877.6 253.4 876.4 V +248.6 872.8 247.8 867.2 V +239 861.2 239.4 856.8 V +237.8 851.6 237 846.8 V +229.8 842 230.6 839.2 V +223 825.2 224.2 818.4 V +217.8 818.8 215 816.4 V +214.2 811.6 212.6 811.2 V +209.8 810 212.2 806 V +210.6 803.2 210.2 801.6 V +211 798.8 206.6 793.2 V +200.2 774.4 202.2 769.2 V +202.6 764.4 199.8 762.8 V +196.2 763.2 204.6 751.2 V +205.4 750 202.2 747.6 V +185 744 182.6 727.6 V +169 712.8 169 707.6 v +169 705.295 169.271 702.148 169.97 697.535 C +169.4 689.199 197 688.399 v +224.6 687.599 599.717 719.755 Y +b +184.4 697.4 m +159.4 736.8 173.8 680.399 Y +182.6 645.999 312.2 683.599 y +481.001 714 492.201 718 v +503.401 722 598.601 715.6 y +593.001 732.4 L +528.201 778.8 509.001 755.6 495.401 759.6 c +481.801 763.6 484.201 754 481.001 753.2 c +477.801 752.4 438.601 777.2 432.201 776.4 c +425.801 775.6 400.459 799.351 415.401 767.6 c +431.401 733.6 357 728.4 340.2 739.6 c +323.4 750.8 347.4 721.2 Y +365.8 701.2 331.4 718 y +297 730.8 273 705.2 269.8 704.4 c +266.6 703.6 261.8 700.4 261 706.8 c +260.2 713.2 252.69 729.901 221 703.6 c +201 686.999 187.2 709 Y +184.4 697.4 L +f +0.09 0.5 0.772 0 k +433.51 774.654 m +427.11 773.854 401.743 797.593 416.71 765.854 c +433.31 730.654 358.31 726.654 341.51 737.854 c +324.709 749.054 348.71 719.454 Y +367.11 699.454 332.709 716.254 y +298.309 729.054 274.309 703.454 271.109 702.654 c +267.909 701.854 263.109 698.654 262.309 705.054 c +261.509 711.454 254.13 727.988 222.309 701.854 c +201.073 684.508 187.582 705.963 Y +184.382 695.854 L +159.382 735.654 174.454 677.345 Y +183.255 642.944 313.509 681.854 y +482.31 712.254 493.51 716.254 v +504.71 720.254 599.038 713.927 y +593.51 731.236 L +528.71 777.636 510.31 753.854 496.71 757.854 c +483.11 761.854 485.51 752.254 482.31 751.454 c +479.11 750.654 439.91 775.454 433.51 774.654 c +f +0.081 0.45 0.695 0 k +434.819 772.909 m +428.419 772.109 403.685 796.138 418.019 764.109 c +434.219 727.908 359.619 724.908 342.819 736.108 c +326.019 747.308 350.019 717.708 Y +368.419 697.708 334.019 714.508 y +299.619 727.308 275.618 701.708 272.418 700.908 c +269.218 700.108 264.418 696.908 263.618 703.308 c +262.818 709.708 255.57 726.075 223.618 700.108 c +201.145 682.017 187.964 702.926 Y +184.364 694.308 L +160.564 733.308 175.109 674.29 Y +183.909 639.89 314.819 680.108 y +483.619 710.508 494.819 714.508 v +506.019 718.508 599.474 712.254 y +594.02 730.072 L +529.219 776.472 511.619 752.109 498.019 756.109 c +484.419 760.109 486.819 750.509 483.619 749.708 c +480.419 748.908 441.219 773.709 434.819 772.909 c +f +0.072 0.4 0.618 0 k +436.128 771.163 m +429.728 770.363 404.999 794.395 419.328 762.363 c +436.128 724.807 360.394 723.518 344.128 734.363 c +327.328 745.563 351.328 715.963 Y +369.728 695.963 335.328 712.763 y +300.928 725.563 276.928 699.963 273.728 699.163 c +270.528 698.363 265.728 695.163 264.928 701.563 c +264.128 707.963 257.011 724.161 224.927 698.363 c +201.218 679.526 188.345 699.89 Y +184.345 692.763 L +162.545 729.563 175.764 671.235 Y +184.564 636.835 316.128 678.363 y +484.928 708.763 496.129 712.763 v +507.329 716.763 599.911 710.581 y +594.529 728.908 L +529.729 775.309 512.929 750.363 499.329 754.363 c +485.728 758.363 488.128 748.763 484.928 747.963 c +481.728 747.163 442.528 771.963 436.128 771.163 c +f +0.063 0.35 0.54 0 k +437.438 769.417 m +431.037 768.617 406.814 792.871 420.637 760.617 c +437.438 721.417 362.237 721.417 345.437 732.617 c +328.637 743.817 352.637 714.217 Y +371.037 694.217 336.637 711.017 y +302.237 723.817 278.237 698.217 275.037 697.417 c +271.837 696.617 267.037 693.417 266.237 699.817 c +265.437 706.217 258.452 722.248 226.237 696.617 c +201.291 677.035 188.727 696.854 Y +184.327 691.217 L +164.527 726.018 176.418 668.181 Y +185.218 633.78 317.437 676.617 y +486.238 707.017 497.438 711.017 v +508.638 715.017 600.347 708.908 y +595.038 727.745 L +530.238 774.145 514.238 748.617 500.638 752.617 c +487.038 756.617 489.438 747.017 486.238 746.217 c +483.038 745.417 443.838 770.217 437.438 769.417 c +f +0.054 0.3 0.463 0 k +438.747 767.672 m +432.347 766.872 406.383 790.323 421.947 758.872 c +441.147 720.072 363.546 719.672 346.746 730.872 c +329.946 742.072 353.946 712.472 Y +372.346 692.472 337.946 709.272 y +303.546 722.072 279.546 696.472 276.346 695.672 c +273.146 694.872 268.346 691.672 267.546 698.072 c +266.746 704.472 259.892 720.335 227.546 694.872 c +201.364 674.544 189.109 693.817 Y +184.309 689.672 L +166.309 722.872 177.073 665.126 Y +185.873 630.726 318.746 674.872 y +487.547 705.272 498.747 709.272 v +509.947 713.272 600.783 707.236 y +595.547 726.581 L +530.747 772.981 515.547 746.872 501.947 750.872 c +488.347 754.872 490.747 745.272 487.547 744.472 c +484.347 743.672 445.147 768.472 438.747 767.672 c +f +0.045 0.25 0.386 0 k +440.056 765.927 m +433.655 765.127 407.313 788.387 423.255 757.127 c +443.656 717.126 364.855 717.926 348.055 729.126 c +331.255 740.326 355.255 710.726 Y +373.655 690.726 339.255 707.526 y +304.855 720.326 280.855 694.726 277.655 693.926 c +274.455 693.126 269.655 689.926 268.855 696.326 c +268.055 702.726 261.332 718.422 228.855 693.126 c +201.436 672.053 189.491 690.781 Y +184.291 688.126 L +168.291 718.326 177.727 662.071 Y +186.527 627.671 320.055 673.126 y +488.856 703.526 500.056 707.526 v +511.256 711.526 601.22 705.563 y +596.056 725.417 L +531.256 771.817 516.856 745.126 503.256 749.126 c +489.656 753.127 492.056 743.526 488.856 742.726 c +485.656 741.926 446.456 766.727 440.056 765.927 c +f +0.036 0.2 0.309 0 k +441.365 764.181 m +434.965 763.381 407.523 786.056 424.565 755.381 c +446.565 715.781 366.164 716.181 349.364 727.381 c +332.564 738.581 356.564 708.981 Y +374.964 688.981 340.564 705.781 y +306.164 718.581 282.164 692.981 278.964 692.181 c +275.764 691.381 270.964 688.181 270.164 694.581 c +269.364 700.981 262.773 716.508 230.164 691.381 c +201.509 669.562 189.873 687.744 Y +184.273 686.581 L +169.872 714.981 178.382 659.017 Y +187.182 624.616 321.364 671.381 y +490.165 701.781 501.365 705.781 v +512.565 709.781 601.656 703.89 y +596.565 724.254 L +531.765 770.654 518.165 743.381 504.565 747.381 c +490.965 751.381 493.365 741.781 490.165 740.981 c +486.965 740.181 447.765 764.981 441.365 764.181 c +f +0.027 0.15 0.231 0 k +442.674 762.435 m +436.274 761.635 408.832 784.311 425.874 753.635 c +447.874 714.035 367.474 714.435 350.674 725.635 c +333.874 736.835 357.874 707.235 Y +376.274 687.235 341.874 704.035 y +307.473 716.835 283.473 691.235 280.273 690.435 c +277.073 689.635 272.273 686.435 271.473 692.835 c +270.673 699.235 264.214 714.595 231.473 689.635 c +201.582 667.071 190.255 684.707 Y +184.255 685.035 L +170.654 711.436 179.037 655.962 Y +187.837 621.562 322.673 669.635 y +491.474 700.035 502.674 704.035 v +513.874 708.035 602.093 702.217 y +597.075 723.09 L +532.274 769.49 519.474 741.635 505.874 745.635 c +492.274 749.635 494.674 740.035 491.474 739.235 c +488.274 738.435 449.074 763.235 442.674 762.435 c +f +0.018 0.1 0.154 0 k +443.983 760.69 m +437.583 759.89 410.529 782.777 427.183 751.89 c +449.183 711.09 368.783 712.69 351.983 723.89 c +335.183 735.09 359.183 705.49 Y +377.583 685.49 343.183 702.29 y +308.783 715.09 284.783 689.49 281.583 688.69 c +278.382 687.89 273.582 684.69 272.782 691.09 c +271.982 697.49 265.654 712.682 232.782 687.89 c +201.655 664.58 190.637 681.671 Y +184.236 683.49 L +171.236 707.49 179.691 652.907 Y +188.491 618.507 323.983 667.89 y +492.783 698.29 503.983 702.29 v +515.183 706.29 602.529 700.544 y +597.583 721.926 L +532.783 768.327 520.783 739.89 507.183 743.89 c +493.583 747.89 495.983 738.29 492.783 737.49 c +489.583 736.69 450.383 761.49 443.983 760.69 c +f +0.009 0.05 0.077 0 k +445.292 758.945 m +438.892 758.145 412.917 781.589 428.492 750.145 c +449.692 707.344 370.092 710.944 353.292 722.144 c +336.492 733.344 360.492 703.744 Y +378.892 683.744 344.492 700.544 y +310.092 713.344 286.092 687.744 282.892 686.944 c +279.692 686.144 274.892 682.944 274.092 689.344 c +273.292 695.744 267.095 710.768 234.092 686.144 c +201.727 662.089 191.018 678.635 Y +184.218 681.944 L +171.418 705.144 180.346 649.853 Y +189.146 615.453 325.292 666.144 y +494.093 696.544 505.293 700.544 v +516.493 704.544 602.965 698.872 y +598.093 720.763 L +533.292 767.163 522.093 738.144 508.493 742.144 c +494.893 746.145 497.293 736.544 494.093 735.744 c +490.892 734.944 451.692 759.745 445.292 758.945 c +f +1 g +184.2 680.399 m +171.4 702.4 181 646.799 Y +189.8 612.399 326.6 664.399 y +495.401 694.8 506.601 698.8 v +517.801 702.8 603.401 697.2 y +598.601 719.6 L +533.801 766 523.401 736.4 509.801 740.4 c +496.201 744.4 498.601 734.8 495.401 734 c +492.201 733.2 453.001 758 446.601 757.2 c +440.201 756.4 414.981 780.207 429.801 748.4 c +452.028 700.693 369.041 710.773 354.6 720.4 c +337.8 731.6 361.8 702 Y +380.2 681.999 345.8 698.8 y +311.4 711.6 287.4 685.999 284.2 685.199 c +281 684.399 276.2 681.199 275.4 687.599 c +274.6 694 268.535 708.856 235.4 684.399 c +201.8 659.599 191.4 675.599 Y +184.2 680.399 L +f +0 g +225.8 650.399 m +218.6 638.799 239.4 625.599 V +240.8 624.199 222.8 628.399 V +216.6 630.399 215 640.799 V +210.2 645.199 205.4 650.799 v +200.6 656.399 225.8 650.399 y +f +0.8 g +365.8 698 m +383.498 671.179 382.9 666.399 v +381.6 655.999 381.4 646.399 384.6 642.399 c +387.801 638.399 396.601 605.199 y +396.201 603.999 408.601 641.999 V +420.201 657.999 400.201 676.399 V +365 705.2 365.8 698 v +f +0 g +1 J 0.1 w +245.8 623.599 m +257 616.399 242.6 585.199 V +249 587.599 l +248.2 576.399 245 573.999 V +252.2 577.199 l +257 569.199 253 564.399 V +269.8 556.399 269 549.999 V +275.4 557.999 271.4 564.399 v +267.4 570.799 260.2 566.799 261 585.199 C +252.2 581.999 l +257.8 590.799 257.8 597.199 V +249.8 594.799 l +265.269 621.377 254.6 622.799 v +248.6 623.599 245.8 623.599 Y +f +0.8 g +278.2 606.799 m +281 611.199 278.2 610.399 v +275.4 609.599 244.2 594.799 238.2 585.199 C +272.6 609.599 278.2 606.799 V +f +288.6 598.799 m +291.4 603.199 288.6 602.399 v +285.8 601.599 254.6 586.799 248.6 577.199 C +283 601.599 288.6 598.799 V +f +301.8 613.999 m +304.6 618.399 301.8 617.599 v +299 616.799 267.8 601.999 261.8 592.399 C +296.2 616.799 301.8 613.999 V +f +278.6 570.399 m +278.6 576.399 275.8 575.599 v +273 574.799 237 557.199 231 547.599 C +273 573.199 278.6 570.399 V +f +279.8 581.199 m +281 585.999 278.2 585.199 V +276.2 585.199 249.8 573.599 243.8 563.999 C +273.4 585.599 279.8 581.199 V +f +265.4 533.599 m +255.4 525.999 l +265.8 533.599 269.4 532.399 V +262.6 521.199 261.8 515.999 V +272.2 528.799 277.8 528.399 V +285.4 527.999 285.4 517.199 V +291 527.599 294.2 527.199 V +295.4 520.799 294.2 513.999 V +298.2 521.599 302.2 519.999 V +308.6 521.999 307.8 510.399 V +307.8 499.999 307 497.199 V +312.6 523.599 315 523.999 V +323 525.199 327.8 516.399 V +323.8 523.999 328.6 521.999 V +339.4 520.399 342.6 513.599 V +335.8 525.599 341.4 522.399 V +348.2 522.399 349.4 515.999 V +357.8 494.799 359.8 493.199 V +352.2 514.799 353.8 514.799 V +351.8 526.799 357 511.999 V +353.8 525.999 359.4 525.199 v +365 524.399 369.4 514.399 377.8 516.799 C +387.401 511.199 389.401 580.399 V +265.4 533.599 L +f +0 g +0 J 1 w +270.2 626.399 m +285 632.399 325 626.399 V +332.2 625.999 339 634.799 v +345.8 643.599 372.6 650.799 379 648.799 C +388.601 642.399 l +389.401 641.199 l +401.801 630.799 402.201 623.199 v +402.601 615.599 387.801 567.599 378.2 551.599 c +368.6 535.599 359 523.199 339.8 525.599 C +319 529.599 293.4 525.599 v +264.2 527.199 261.4 535.199 v +258.6 543.199 272.6 558.399 y +277 566.799 275.8 581.199 v +274.6 595.599 275 623.599 270.2 626.399 c +f +0.1 0.6 0.45 0 k +292.2 624.399 m +300.6 605.999 271 540.799 y +269 539.199 283.66 533.154 293.8 535.599 c +304.746 538.237 345 533.999 Y +368.6 549.599 381.4 593.999 y +391.801 617.999 374.2 621.199 v +356.6 624.399 292.2 624.399 y +f +0.1 0.6 0.45 0.2 k +290.169 593.503 m +293.495 606.293 295.079 618.094 292.2 624.399 c +354.6 617.999 365.8 638.799 v +370.041 646.674 384.801 615.999 384.4 606.399 c +321.4 591.999 306.6 603.199 V +290.169 593.503 L +f +0.1 0.6 0.45 0.25 k +294.6 577.199 m +296.6 569.999 294.2 565.999 V +292.6 565.199 291.4 564.799 V +292.6 561.199 298.6 559.599 V +300.6 555.199 303 554.799 v +305.4 554.399 310.2 548.799 314.2 549.999 c +318.2 551.199 329.4 555.199 y +335 558.399 343.8 554.799 V +346.175 555.601 346.6 559.599 v +347.1 564.299 350.2 567.999 352.2 569.999 c +354.2 571.999 363.8 584.799 362.6 585.199 c +361.4 585.599 294.6 577.199 Y +f +0 0.55 0.5 0 k +290.2 625.599 m +287.4 603.199 290.6 594.799 v +293.8 586.399 293 584.399 292.2 580.399 c +291.4 576.399 295.8 566.399 301.4 560.399 C +313.4 558.799 l +328.6 562.399 337.8 559.599 V +346.794 558.256 350.2 573.199 V +355 579.599 362.2 582.399 v +369.4 585.199 376.6 626.799 372.6 634.799 c +368.6 642.799 354.2 647.199 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +b +0 0 0.2 0 k +0.5 w +291.8 550.799 m +291 552.799 286.6 553.199 V +264.2 556.799 255.8 569.199 V +249 574.799 253.4 563.199 V +263.8 542.799 270.6 539.999 V +287 535.999 291.8 550.799 V +b +0 0.55 0.5 0.2 k +1 w +371.742 614.771 m +372.401 622.677 374.354 631.291 372.6 634.799 c +366.154 647.693 349.181 642.305 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +288.455 611.636 289.295 601.624 v +326.6 613.199 327.4 607.599 V +329 610.799 338.2 610.799 v +347.4 610.799 370.142 611.971 371.742 614.771 C +f +0 g +0 0.55 0.5 0.35 K +2 w +328.6 624.799 m +333.4 619.999 329.8 610.399 V +315.4 594.399 317.4 580.399 v +S +0 0 0.2 0 k +0 G +0.5 w +280.6 539.999 m +276.2 552.799 285 545.999 V +289.8 543.999 288.6 542.399 v +287.4 540.799 281.8 536.799 280.6 539.999 C +b +285.64 538.799 m +282.12 549.039 289.16 543.599 V +293.581 541.151 292.04 540.719 v +287.48 539.439 292.04 536.879 285.64 538.799 C +b +290.44 538.799 m +286.92 549.039 293.96 543.599 V +298.335 541.289 296.84 540.719 v +293.48 539.439 296.84 536.879 290.44 538.799 C +b +297.04 538.599 m +293.52 548.839 300.56 543.399 V +304.943 541.067 303.441 540.519 v +300.48 539.439 303.441 536.679 297.04 538.599 C +b +303.52 538.679 m +300 548.919 307.041 543.479 V +310.881 541.879 309.921 540.599 v +308.961 539.319 309.921 536.759 303.52 538.679 C +b +310.2 537.999 m +305.4 550.399 314.6 543.999 V +319.4 541.999 318.2 540.399 v +317 538.799 318.2 535.599 310.2 537.999 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +281.8 555.199 m +295 557.999 301 554.799 V +307 553.599 308.2 553.999 v +309.4 554.399 312.6 554.799 y +S +315.8 546.399 m +327.8 559.999 339.8 555.599 v +346.816 553.026 345.8 556.399 346.6 559.199 c +347.4 561.999 347.6 566.199 352.6 569.199 c +S +0 0 0.2 0 k +0 G +0.5 w +333 562.399 m +329 573.199 326.2 560.399 v +323.4 547.599 320.2 543.999 318.6 541.199 C +318.6 535.999 327 536.399 V +337.8 536.799 338.2 539.599 v +338.6 542.399 337 553.999 333 562.399 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +347 555.199 m +350.6 557.599 353 556.399 v +S +353.5 571.599 m +356.4 576.499 361.2 577.299 v +S +0.7 g +0 G +1 w +274.2 534.799 m +292.2 531.599 296.6 533.199 V +305.4 533.199 297 531.199 V +284.2 531.199 276.2 532.399 V +264.6 537.999 274.2 534.799 V +f +0 0 0.2 0 k +0.5 w +288.2 627.999 m +305.8 627.999 307.8 627.199 V +315 596.399 311.4 588.799 V +310.2 585.999 307.4 591.599 V +289 624.399 285.8 626.399 v +282.6 628.399 287 627.999 288.2 627.999 C +b +211.1 630.699 m +220 628.999 232.6 626.399 V +237.4 603.999 240.6 599.199 v +243.8 594.399 240.2 594.399 236.6 597.199 c +233 599.999 218.2 613.999 216.2 618.399 c +214.2 622.799 211.1 630.699 y +b +232.961 626.182 m +238.761 624.634 239.77 622.419 v +240.778 620.205 238.568 616.908 y +237.568 613.603 236.366 615.765 v +235.164 617.928 232.292 625.588 232.961 626.182 c +b +0 g +233 626.399 m +236.6 621.199 240.2 621.199 v +243.8 621.199 244.182 621.612 247 620.999 c +251.6 619.999 251.2 621.999 257.8 620.799 c +260.44 620.319 263 621.199 265.8 619.999 c +268.6 618.799 271.8 619.599 273 621.599 c +274.2 623.599 279 627.799 Y +266.2 625.999 263.4 625.199 V +241 623.999 233 626.399 V +f +0 0 0.2 0 k +277.6 626.199 m +271.15 622.699 270.75 620.299 v +270.35 617.899 276 614.199 y +278.75 609.599 279.35 611.999 v +279.95 614.399 278.4 625.799 277.6 626.199 c +b +240.115 620.735 m +247.122 609.547 247.339 620.758 V +247.896 622.016 246.136 622.038 v +240.061 622.114 241.582 626.216 240.115 620.735 C +b +247.293 620.486 m +255.214 609.299 254.578 620.579 V +254.585 620.911 252.832 621.064 v +248.085 621.478 248.43 625.996 247.293 620.486 C +b +254.506 620.478 m +262.466 609.85 261.797 619.516 V +261.916 620.749 260.262 621.05 v +256.37 621.756 256.159 625.005 254.506 620.478 C +b +261.382 620.398 m +269.282 608.837 269.63 618.618 V +271.274 619.996 269.528 620.218 v +263.71 620.958 264.508 625.412 261.382 620.398 C +b +0 0 0.2 0.1 k +225.208 616.868 m +217.55 618.399 l +214.95 623.399 212.85 629.549 y +219.2 628.549 231.7 625.749 V +232.576 622.431 234.048 616.636 v +225.208 616.868 l +f +290.276 621.53 m +288.61 624.036 287.293 625.794 286.643 626.2 c +283.63 628.083 287.773 627.706 288.902 627.706 C +305.473 627.706 307.356 626.953 V +307.88 624.711 308.564 621.32 V +298.476 623.33 290.276 621.53 V +f +0.2 0.55 0.85 0 k +1 w +343.88 759.679 m +371.601 755.719 397.121 791.359 398.881 801.04 c +400.641 810.72 390.521 822.6 Y +391.841 825.68 387.001 839.76 381.721 849 c +376.441 858.24 360.54 857.266 343 858.24 c +327.16 859.12 308.68 835.8 307.36 834.04 c +306.04 832.28 312.2 793.999 313.52 788.279 c +314.84 782.559 312.2 756.159 y +346.44 765.259 316.16 763.639 343.88 759.679 c +f +0.08 0.44 0.68 0 k +308.088 833.392 m +306.792 831.664 312.84 794.079 314.136 788.463 c +315.432 782.847 312.84 756.927 y +345.512 765.807 316.728 764.271 343.944 760.383 c +371.161 756.495 396.217 791.487 397.945 800.992 c +399.673 810.496 389.737 822.16 Y +391.033 825.184 386.281 839.008 381.097 848.08 c +375.913 857.152 360.302 856.195 343.08 857.152 c +327.528 858.016 309.384 835.12 308.088 833.392 c +f +0.06 0.33 0.51 0 k +308.816 832.744 m +307.544 831.048 313.48 794.159 314.752 788.647 c +316.024 783.135 313.48 757.695 y +344.884 766.855 317.296 764.903 344.008 761.087 c +370.721 757.271 395.313 791.615 397.009 800.944 c +398.705 810.272 388.953 821.72 Y +390.225 824.688 385.561 838.256 380.473 847.16 c +375.385 856.064 360.063 855.125 343.16 856.064 c +327.896 856.912 310.088 834.44 308.816 832.744 c +f +0.04 0.22 0.34 0 k +309.544 832.096 m +308.296 830.432 314.12 794.239 315.368 788.831 c +316.616 783.423 314.12 758.463 y +343.556 767.503 317.864 765.535 344.072 761.791 c +370.281 758.047 394.409 791.743 396.073 800.895 c +397.737 810.048 388.169 821.28 Y +389.417 824.192 384.841 837.504 379.849 846.24 c +374.857 854.976 359.824 854.055 343.24 854.976 c +328.264 855.808 310.792 833.76 309.544 832.096 c +f +0.02 0.11 0.17 0 k +310.272 831.448 m +309.048 829.816 314.76 794.319 315.984 789.015 c +317.208 783.711 314.76 759.231 y +342.628 768.151 318.432 766.167 344.136 762.495 c +369.841 758.823 393.505 791.871 395.137 800.848 c +396.769 809.824 387.385 820.84 Y +388.609 823.696 384.121 836.752 379.225 845.32 c +374.329 853.888 359.585 852.985 343.32 853.888 c +328.632 854.704 311.496 833.08 310.272 831.448 c +f +1 g +344.2 763.2 m +369.4 759.6 392.601 792 394.201 800.8 c +395.801 809.6 386.601 820.4 Y +387.801 823.2 383.4 836 378.6 844.4 c +373.8 852.8 359.346 851.914 343.4 852.8 c +329 853.6 312.2 832.4 311 830.8 c +309.8 829.2 315.4 794.4 316.6 789.2 c +317.8 784 315.4 760 y +340.9 768.6 319 766.8 344.2 763.2 c +f +0.8 g +390.601 797.2 m +362.8 789.6 351.2 791.2 V +335.4 797.8 326.6 776 V +323 768.8 321 766.8 v +319 764.8 390.601 797.2 Y +f +0 g +394.401 799.4 m +365.4 787.2 355.4 787.6 v +339 792.2 330.6 777.6 V +322.2 768.4 319 766.8 V +318.6 765.2 325 769.2 V +335.4 764 l +350.2 754.4 359.8 770.4 V +363.8 781.6 363.8 783.6 v +363.8 785.6 385 791.2 386.601 791.6 c +388.201 792 394.801 796.2 394.401 799.4 C +f +0.4 0.2 0.8 0 k +347 763.486 m +340.128 763.486 331.755 767.351 331.755 773.6 c +331.755 779.848 340.128 786.113 347 786.113 c +353.874 786.113 359.446 781.048 359.446 774.8 c +359.446 768.551 353.874 763.486 347 763.486 c +f +0.4 0.2 0.8 0.2 k +343.377 780.17 m +338.531 779.448 333.442 777.945 333.514 778.161 c +335.054 782.78 341.415 786.113 347 786.113 c +351.296 786.113 355.084 784.135 357.32 781.125 c +352.004 781.455 343.377 780.17 v +f +1 g +355.4 780.4 m +351 783.6 351 781.4 V +354.6 777 355.4 780.4 V +f +0 g +345.4 772.274 m +342.901 772.274 340.875 774.3 340.875 776.8 c +340.875 779.299 342.901 781.325 345.4 781.325 c +347.9 781.325 349.926 779.299 349.926 776.8 c +349.926 774.3 347.9 772.274 345.4 772.274 c +f +0.2 0.55 0.85 0 k +241.4 785.6 m +238.2 806.8 240.6 811.2 V +251.4 821.2 251 824.8 V +250.6 842.8 249.4 843.6 v +248.2 844.4 240.6 850.4 234.6 844 C +224.2 826 225 819.6 V +225 817.6 l +217.4 818 215.8 816 V +214.6 810.8 213.4 810.4 V +210.6 808 212.6 805.2 V +210.6 802.8 211 798.8 V +218.6 794.8 L +220.6 780.4 231.4 775.2 v +236.236 772.871 239.4 779.6 241.4 785.6 c +f +1 g +240.4 787.44 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 v +246.52 840.36 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.04 240.4 787.44 c +f +0.075 0.412 0.637 0 k +248.95 842.61 m +247.86 843.47 240.37 849.24 234.52 843 C +224.38 825.45 225.16 819.21 V +225.16 817.26 l +217.75 817.65 216.19 815.7 V +215.02 810.63 213.85 810.24 V +211.12 807.9 213.07 805.17 V +211.12 802.83 211.51 798.93 V +218.92 795.03 L +220.87 780.99 231.4 775.92 v +236.114 773.65 239.2 780.21 241.15 786.06 c +238.03 806.73 240.37 811.02 V +250.9 820.77 250.51 824.28 V +250.12 841.83 248.95 842.61 V +f +0.05 0.275 0.425 0 k +248.5 841.62 m +247.52 842.54 240.14 848.08 234.44 842 C +224.56 824.9 225.32 818.82 V +225.32 816.92 l +218.1 817.3 216.58 815.4 V +215.44 810.46 214.3 810.08 V +211.64 807.8 213.54 805.14 V +211.64 802.86 212.02 799.06 V +219.24 795.26 L +221.14 781.58 231.4 776.64 v +235.994 774.428 239 780.82 240.9 786.52 c +237.86 806.66 240.14 810.84 V +250.4 820.34 250.02 823.76 V +249.64 840.86 248.5 841.62 V +f +0.025 0.137 0.212 0 k +248.05 840.63 m +247.18 841.61 239.91 846.92 234.36 841 C +224.74 824.35 225.48 818.43 V +225.48 816.58 l +218.45 816.95 216.97 815.1 V +215.86 810.29 214.75 809.92 V +212.16 807.7 214.01 805.11 V +212.16 802.89 212.53 799.19 V +219.56 795.49 L +221.41 782.17 231.4 777.36 v +235.873 775.206 238.8 781.43 240.65 786.98 c +237.69 806.59 239.91 810.66 V +249.9 819.91 249.53 823.24 V +249.16 839.89 248.05 840.63 V +f +1 g +240.4 787.54 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 V +246.84 840.68 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.14 240.4 787.54 c +f +0.8 g +237.3 793.8 m +215.7 804 214.8 804.8 V +223.9 796.6 224.7 796.6 v +225.5 796.6 237.3 793.8 Y +f +0 g +220.2 800 m +238.6 796.4 238.6 792 v +238.6 789.088 238.357 775.669 233 777.2 c +224.6 779.6 228.2 794 220.2 800 c +f +0.4 0.2 0.8 0 k +228.6 796.2 m +237.578 794.726 238.6 792 v +239.2 790.4 239.863 782.092 234.4 781 c +229.848 780.089 227.618 790.31 228.6 796.2 c +f +0 g +314.595 753.651 m +314.098 755.393 315.409 755.262 317.2 755.8 c +319.2 756.4 331.4 760.2 332.2 762.8 c +333 765.4 346.2 761 Y +348 760.2 352.4 757.6 Y +357.2 756.4 363.8 756 Y +366.2 755 369.6 752.2 Y +384.2 742 396.601 749.2 Y +416.601 755.8 410.601 773 Y +407.601 782 410.801 785.4 Y +411.001 789.2 418.201 782.8 Y +420.801 778.6 421.601 773.6 Y +429.601 762.4 426.201 780.2 Y +426.401 781.2 423.601 784.8 423.601 786 c +423.601 787.2 421.801 790.6 Y +418.801 794 421.201 801 Y +423.001 814.8 420.801 813 Y +419.601 814.8 410.401 804.8 Y +408.201 801.4 402.201 799.8 Y +399.401 798 396.001 799.4 Y +393.401 799.8 387.801 792.8 Y +390.601 793 393.001 788.6 395.401 788.4 c +397.801 788.2 399.601 790.8 401.201 791.4 c +402.801 792 405.601 786.2 Y +406.001 783.6 400.401 778.8 Y +400.001 774.2 398.401 775.8 Y +395.401 776.4 394.201 772.6 393.201 768 c +392.201 763.4 388.001 763 y +386.401 755.6 385.2 758.6 Y +385 764.2 379 758.4 Y +377.8 756.4 373.2 758.6 Y +366.4 760.6 368.8 762.6 Y +370.6 764.8 381.8 762.6 Y +384 764.2 376 768.2 Y +375.4 770 376.4 774.4 Y +377.6 777.6 384.4 783.2 Y +393.801 784.4 391.001 786 Y +384.801 791.2 379 783.6 Y +376.8 777.4 359.4 762.4 Y +354.6 759 357.2 765.8 353.2 762.4 c +349.2 759 328.6 768 y +317.038 769.193 314.306 753.451 310.777 756.571 c +316.195 748.051 314.595 753.651 v +f +509.401 920 m +483.801 912 481.001 893.2 V +478.601 870.4 499.001 852.8 V +499.401 846.4 501.401 843.2 v +499.801 838.4 518.601 846 V +545.801 854.4 l +552.201 856.8 557.401 865.6 v +562.601 874.4 577.801 893.2 574.201 918.4 C +575.401 929.6 569.401 930 V +561.001 931.6 553.801 924 V +547.001 920.8 544.601 921.2 V +509.401 920 L +f +564.022 920.99 m +566.122 929.92 561.282 925.08 V +554.242 919.36 546.761 919.36 V +532.241 917.16 527.841 903.96 V +523.881 877.12 531.801 871.4 V +536.641 863.92 543.681 870.52 v +550.722 877.12 566.222 907.35 564.022 920.99 C +f +0.2 g +563.648 920.632 m +565.738 929.376 560.986 924.624 V +554.074 919.008 546.729 919.008 V +532.473 916.848 528.153 903.888 V +524.265 877.536 532.041 871.92 V +536.793 864.576 543.705 871.056 v +550.618 877.536 565.808 907.24 563.648 920.632 C +f +0.4 g +563.274 920.274 m +565.354 928.832 560.69 924.168 V +553.906 918.656 546.697 918.656 V +532.705 916.536 528.465 903.816 V +524.649 877.952 532.281 872.44 V +536.945 865.232 543.729 871.592 v +550.514 877.952 565.394 907.13 563.274 920.274 C +f +0.6 g +562.9 919.916 m +564.97 928.288 560.394 923.712 V +553.738 918.304 546.665 918.304 V +532.937 916.224 528.777 903.744 V +525.033 878.368 532.521 872.96 V +537.097 865.888 543.753 872.128 v +550.41 878.368 564.98 907.02 562.9 919.916 C +f +0.8 g +562.526 919.558 m +564.586 927.744 560.098 923.256 V +553.569 917.952 546.633 917.952 V +533.169 915.912 529.089 903.672 V +525.417 878.784 532.761 873.48 V +537.249 866.544 543.777 872.664 v +550.305 878.784 564.566 906.91 562.526 919.558 C +f +1 g +562.151 919.2 m +564.201 927.2 559.801 922.8 V +553.401 917.6 546.601 917.6 V +533.401 915.6 529.401 903.6 V +525.801 879.2 533.001 874 V +537.401 867.2 543.801 873.2 v +550.201 879.2 564.151 906.8 562.151 919.2 C +f +0.1 0.55 0.85 0.3 k +350.6 716 m +330.2 735.2 322.2 736 V +287.8 740 273 722 V +290.6 742.4 318.2 736.8 V +296.6 741.2 284.2 738 V +267.4 738 257.8 724 V +255 719.2 l +259 734 277.4 740 V +300.2 744.8 311 740 V +289.4 746.8 279.4 744.8 V +249 747.2 236.2 720.8 V +240.2 735.2 255 742.4 V +268.6 751.2 289 748.4 V +303.4 745.2 308.6 742.8 v +313.8 740.4 312.6 743.2 304.2 748 C +298.6 758 284.6 757.6 V +241.8 754 231.4 742 V +245 753.2 255.4 756 V +277.8 764 286.2 763.2 V +311 762.2 318.6 766.2 V +307.4 761.2 310.6 758 v +313.8 754.8 320.6 747.2 320.6 746 c +320.6 744.8 344.8 722.7 348.4 718.3 C +350.6 716 l +f +0.8 g +1 J 0.1 w +489 522 m +473.5 558.5 461 568 V +487 552 490.5 534 V +490.5 524 489 522 V +f +536 514.5 m +509.5 569.5 491 593.5 V +534.5 556 539.5 529.5 V +540 524 l +537 526.5 l +536.5 517.5 536 514.5 V +f +592.5 563 m +530 622.5 528.5 625 V +589 559 592 551.5 V +590 560.5 592.5 563 V +f +404 519.5 m +423.5 571.5 442.5 549 V +457.5 539 457 536 V +453 542.5 435 542 V +416 545 404 519.5 V +f +594.5 647 m +549.5 675.5 542 677 v +530.193 679.361 591.5 648 596.5 637.5 C +598.5 640 594.5 647 V +f +0 g +0 J 1 w +443.801 540.399 m +464.201 542.399 471.001 549.199 V +475.401 545.599 l +493.001 583.999 l +496.601 578.799 l +511.001 593.599 510.201 601.599 v +509.401 609.599 523.001 595.599 y +522.201 607.199 529.401 600.399 V +527.001 615.999 535.401 607.999 V +524.864 638.156 547.401 612.399 v +553.001 605.999 548.601 612.799 y +522.601 660.799 544.201 646.399 v +546.201 669.199 545.001 673.599 v +543.801 677.999 541.801 700.4 537.001 705.6 c +532.201 710.8 537.401 712.4 543.001 707.2 C +531.801 731.2 545.001 719.2 V +541.401 734.4 537.001 737.2 V +531.401 754.4 546.601 743.6 V +542.201 756 539.001 759.2 V +527.401 786.8 534.601 782 V +539.001 778.4 l +532.201 792.4 538.601 788 v +545.001 783.6 545.001 784 y +523.801 817.2 544.201 799.6 V +536.042 813.518 532.601 820.4 V +513.801 840.8 528.201 834.4 V +533.001 832.8 l +524.201 842.8 516.201 844.4 v +508.201 846 518.601 852.4 525.001 850.4 c +531.401 848.4 547.001 840.8 y +559.801 822 563.801 821.6 V +543.801 829.2 549.801 821.2 V +564.201 807.2 557.001 807.6 V +551.001 800.4 555.801 791.6 V +537.342 809.991 552.201 784.4 v +559.001 768 l +534.601 792.8 545.801 770.8 V +563.001 747.2 565.001 746.8 v +567.001 746.4 571.401 737.6 y +567.001 739.6 l +572.201 730.8 l +561.001 742.8 567.001 729.6 V +572.601 715.2 l +552.201 737.2 565.801 707.6 V +549.401 712.8 558.201 695.6 V +556.601 679.599 557.001 674.399 v +557.401 669.199 558.601 640.799 554.201 632.799 c +549.801 624.799 560.201 605.599 562.201 601.599 c +564.201 597.599 567.801 586.799 559.001 595.999 c +550.201 605.199 554.601 599.599 556.601 590.799 c +558.601 581.999 564.601 566.399 563.801 560.799 C +562.601 559.599 559.401 563.199 V +544.601 585.999 546.201 571.599 V +545.001 563.599 541.801 554.799 V +538.601 543.999 538.601 552.799 V +535.401 569.599 532.601 561.999 v +529.801 554.399 526.201 548.399 523.401 545.999 c +520.601 543.599 515.401 566.399 514.201 555.999 C +502.201 568.399 497.401 551.999 V +485.801 535.599 l +485.401 547.999 484.201 541.999 V +454.201 535.999 443.801 540.399 V +f +409.401 897.2 m +397.801 905.2 393.801 904.8 v +389.801 904.4 421.401 913.6 462.601 886 C +467.401 883.2 471.001 883.6 V +474.201 881.2 471.401 877.6 V +462.601 868 473.801 856.8 V +492.201 850 486.601 858.8 V +497.401 854.8 499.801 850.8 v +502.201 846.8 501.001 850.8 y +494.601 858 488.601 863.2 V +483.401 865.2 480.601 873.6 v +477.801 882 475.401 892 479.801 895.2 C +475.801 890.8 476.601 894.8 v +477.401 898.8 481.001 902.4 482.601 902.8 c +484.201 903.2 500.601 919 507.401 919.4 C +498.201 918 495.201 919 v +492.201 920 465.601 931.4 459.601 932.6 C +442.801 939.2 454.801 937.2 V +490.601 933.4 508.801 920.2 V +501.601 928.6 483.201 935.6 V +461.001 948.2 425.801 943.2 V +408.001 940 400.201 938.2 V +397.601 938.8 397.001 939.2 v +396.401 939.6 384.6 948.6 357 941.6 C +340 937 331.4 932.2 V +316.2 931 312.6 927.8 V +294 913.2 292 912.4 v +290 911.6 278.6 904 277.8 903.6 C +302.4 910.2 304.8 912.6 v +307.2 915 324.6 917.6 327 916.2 c +329.4 914.8 337.8 915.4 328.2 914.8 C +403.801 900 404.601 898 v +405.401 896 409.401 897.2 y +f +0.2 0.55 0.85 0 k +480.801 906.4 m +470.601 913.8 468.601 913.8 v +466.601 913.8 454.201 924 450.001 923.6 c +445.801 923.2 433.601 933.2 406.201 925 C +405.601 927 409.201 927.8 V +415.601 930 416.001 930.6 V +436.201 934.8 443.401 931.2 V +452.601 928.6 458.801 922.4 V +470.001 919.2 473.201 920.2 V +482.001 918 482.401 916.2 V +488.201 913.2 486.401 910.6 V +486.801 909 480.801 906.4 V +f +468.33 908.509 m +469.137 907.877 470.156 907.779 470.761 906.97 c +470.995 906.656 470.706 906.33 470.391 906.233 c +469.348 905.916 468.292 906.486 467.15 905.898 c +466.748 905.691 466.106 905.873 465.553 906.022 c +463.921 906.463 462.092 906.488 460.401 905.8 C +458.416 906.929 456.056 906.345 453.975 907.346 c +453.917 907.373 453.695 907.027 453.621 907.054 c +450.575 908.199 446.832 907.916 444.401 910.2 C +441.973 910.612 439.616 911.074 437.188 911.754 c +435.37 912.263 433.961 913.252 432.341 914.084 c +430.964 914.792 429.507 915.314 427.973 915.686 c +426.11 916.138 424.279 916.026 422.386 916.546 c +422.293 916.571 422.101 916.227 422.019 916.254 c +421.695 916.362 421.405 916.945 421.234 916.892 c +419.553 916.37 418.065 917.342 416.401 917 C +415.223 918.224 413.495 917.979 411.949 918.421 c +408.985 919.269 405.831 917.999 402.801 919 C +406.914 920.842 411.601 919.61 415.663 921.679 c +417.991 922.865 420.653 921.763 423.223 922.523 c +423.71 922.667 424.401 922.869 424.801 922.2 C +424.935 922.335 425.117 922.574 425.175 922.546 c +427.625 921.389 429.94 920.115 432.422 919.049 c +432.763 918.903 433.295 919.135 433.547 918.933 c +435.067 917.717 437.01 917.82 438.401 916.6 C +440.099 917.102 441.892 916.722 443.621 917.346 c +443.698 917.373 443.932 917.032 443.965 917.054 c +445.095 917.802 446.25 917.531 447.142 917.227 c +447.48 917.112 448.143 916.865 448.448 916.791 c +449.574 916.515 450.43 916.035 451.609 915.852 c +451.723 915.834 451.908 916.174 451.98 916.146 c +453.103 915.708 454.145 915.764 454.801 914.6 C +454.936 914.735 455.101 914.973 455.183 914.946 c +456.21 914.608 456.859 913.853 457.96 913.612 c +458.445 913.506 459.057 912.88 459.633 912.704 c +462.025 911.973 463.868 910.444 466.062 909.549 c +466.821 909.239 467.697 909.005 468.33 908.509 c +f +391.696 922.739 m +389.178 924.464 386.81 925.57 384.368 927.356 c +384.187 927.489 383.827 927.319 383.625 927.441 c +382.618 928.05 381.73 928.631 380.748 929.327 c +380.209 929.709 379.388 929.698 378.88 929.956 c +376.336 931.248 373.707 931.806 371.2 933 C +371.882 933.638 373.004 933.394 373.6 934.2 C +373.795 933.92 374.033 933.636 374.386 933.827 c +376.064 934.731 377.914 934.884 379.59 934.794 c +381.294 934.702 383.014 934.397 384.789 934.125 c +385.096 934.078 385.295 933.555 385.618 933.458 c +387.846 932.795 390.235 933.32 392.354 932.482 c +393.945 931.853 395.515 931.03 396.754 929.755 c +397.006 929.495 396.681 929.194 396.401 929 C +396.789 929.109 397.062 928.903 397.173 928.59 c +397.257 928.351 397.257 928.049 397.173 927.81 c +397.061 927.498 396.782 927.397 396.408 927.346 c +395.001 927.156 396.773 928.536 396.073 928.088 c +394.8 927.274 395.546 925.868 394.801 924.6 C +394.521 924.794 394.291 925.012 394.401 925.4 C +394.635 924.878 394.033 924.588 393.865 924.272 c +393.48 923.547 392.581 922.132 391.696 922.739 c +f +359.198 915.391 m +356.044 916.185 352.994 916.07 349.978 917.346 c +349.911 917.374 349.688 917.027 349.624 917.054 c +348.258 917.648 347.34 918.614 346.264 919.66 c +345.351 920.548 343.693 920.161 342.419 920.648 c +342.095 920.772 341.892 921.284 341.591 921.323 c +340.372 921.48 339.445 922.429 338.4 923 C +340.736 923.795 343.147 923.764 345.609 924.148 c +345.722 924.166 345.867 923.845 346 923.845 c +346.136 923.845 346.266 924.066 346.4 924.2 C +346.595 923.92 346.897 923.594 347.154 923.848 c +347.702 924.388 348.258 924.198 348.798 924.158 c +348.942 924.148 349.067 923.845 349.2 923.845 c +349.336 923.845 349.467 924.156 349.6 924.156 c +349.736 924.155 349.867 923.845 350 923.845 c +350.136 923.845 350.266 924.066 350.4 924.2 C +351.092 923.418 351.977 923.972 352.799 923.793 c +353.837 923.566 354.104 922.418 355.178 922.12 c +359.893 920.816 364.03 918.671 368.393 916.584 c +368.7 916.437 368.91 916.189 368.8 915.8 C +369.067 915.8 369.38 915.888 369.57 915.756 c +370.628 915.024 371.669 914.476 372.366 913.378 c +372.582 913.039 372.253 912.632 372.02 912.684 c +367.591 913.679 363.585 914.287 359.198 915.391 c +f +345.338 871.179 m +343.746 872.398 343.162 874.429 342.034 876.221 c +341.82 876.561 342.094 876.875 342.411 876.964 c +342.971 877.123 343.514 876.645 343.923 876.443 c +345.668 875.581 347.203 874.339 349.2 874.2 C +351.19 871.966 355.45 871.581 355.457 868.2 c +355.458 867.341 354.03 868.259 353.6 867.4 C +351.149 868.403 348.76 868.3 346.38 869.767 c +345.763 870.148 346.093 870.601 345.338 871.179 c +f +317.8 923.756 m +317.935 923.755 324.966 923.522 324.949 923.408 c +324.904 923.099 317.174 922.05 316.81 922.22 c +316.646 922.296 309.134 919.866 309 920 C +309.268 920.135 317.534 923.756 317.8 923.756 c +f +0 g +333.2 914 m +318.4 912.2 314 911 v +309.6 909.8 291 902.2 288 900.2 C +274.6 894.8 257.6 874.8 V +265.2 878.2 267.4 881 V +281 893.6 280.8 891 V +293 899.6 292.4 897.4 V +316.8 908.6 314.8 905.4 V +336.4 910 335.4 908 V +354.2 903.6 351.4 903.4 V +345.6 902.2 352 898.6 V +348.6 894.2 343.2 898.2 v +337.8 902.2 340.8 900 335.8 899 C +333.2 898.2 328.6 902.2 V +323 906.8 314.2 903.2 V +283.6 890.6 281.6 890 V +278 887.2 275.6 883.6 V +269.8 879.2 266.8 877.8 V +254 866.2 252.8 864.8 V +249.4 859.6 248.6 859.2 V +255 863 257 865 V +271 875 276.4 875.8 V +280.8 878.8 281.6 880.2 V +296 889.4 300.2 889.4 V +309.4 884.2 311.8 891.2 V +317.6 893 323.2 891.8 V +326.4 894.4 325.6 896.6 V +327.2 898.4 328.2 894.6 V +331.6 891 336.4 893 V +340.4 893.2 338.4 890.8 V +334 887 322.2 886.8 V +309.8 886.2 293.4 878.6 V +263.6 868.2 254.4 857.8 V +248 849 242.6 847.8 V +236.8 847 230.8 839.6 V +240.6 845.4 249.6 845.4 V +253.6 847.8 249.8 844.2 V +246.2 836.6 247.8 831.2 V +247.2 826 246.4 824.4 V +238.6 811.6 238.6 809.2 v +238.6 806.8 239.8 797 240.2 796.4 c +240.6 795.8 239.2 798 243 795.6 c +246.8 793.2 249.6 791.6 250.4 788.8 c +251.2 786 248.4 794.2 248.2 796 c +248 797.8 243.8 805 244.6 807.4 C +245.6 806.4 246.4 805 V +245.8 805.6 246.4 809.2 V +247.2 814.4 248.6 817.6 v +250 820.8 252 824.6 252.4 825.4 c +252.8 826.2 252.8 832 254.2 829.4 C +257.6 826.8 l +254.8 829.4 257 831.6 V +256 837.2 257.8 839.8 V +264.8 848.2 266.4 849.2 v +268 850.2 266.6 849.8 y +272.6 854 266.8 852.4 V +262.8 850.8 259.8 850.8 V +252.2 848.8 256.2 853 v +260.2 857.2 270.2 862.6 274 862.4 C +274.8 860.8 l +286 863.2 l +284.8 862.4 l +284.6 862.6 288.8 863 v +293 863.4 298.8 862 300.2 863.8 c +301.6 865.6 305 866.6 304.6 865.2 c +304.2 863.8 304 861.8 y +309 867.6 308.4 865.4 v +307.8 863.2 299.6 858 298.2 851.8 C +308.6 860 l +312.2 863 l +315.8 860.8 316 862.4 v +316.2 864 320.8 869.8 322 869.6 c +323.2 869.4 325.2 872.2 325 869.6 c +324.8 867 332.4 861.6 y +335.6 863.4 337 862 v +338.4 860.6 342.6 881.8 y +367.6 892.4 l +411.201 895.8 l +394.201 902.6 l +333.2 914 l +f +0.2 0.55 0.85 0.5 K +1 J 2 w +351.4 715 m +336.4 731.8 328 734.4 V +314.6 741.2 290 733.4 v +S +324.8 735.8 m +299.6 743.8 284.2 739.6 V +265.8 737.6 257.4 723.8 v +S +321.2 737 m +304.2 744.2 289.4 746.4 V +272.8 749 256.2 741.8 V +244 735.8 238.6 725.6 v +S +322.2 736.6 m +306.8 747.6 305.8 749 V +298.8 760 285.8 760.4 V +264.4 759.6 247.2 751.6 v +S +0 G +0 J 1 w +320.895 745.593 m +322.437 744.13 349.4 715.2 Y +384.6 678.599 356.6 712.8 Y +349 717.6 339.8 736.4 Y +338.6 739.2 353.8 729.2 Y +357.8 728.4 371.4 709.2 Y +364.6 711.6 369.4 704.4 Y +372.2 702.4 392.601 686.799 Y +396.201 682.799 400.201 681.199 Y +414.201 686.399 407.801 673.199 Y +410.201 666.399 415.801 677.999 Y +427.001 694.8 410.601 692.399 Y +380.6 689.599 373.8 705.6 Y +371.4 708 380.2 705.6 Y +388.601 703.6 373 718 Y +375.4 718 384.6 711.2 Y +395.001 702 397.001 704 Y +415.001 712.8 425.401 705.2 Y +427.401 703.6 421.801 696.8 423.401 691.599 c +425.001 686.399 429.801 673.999 Y +427.401 672.399 427.801 661.599 Y +444.601 638.399 435.001 640.399 Y +419.401 640.799 434.201 633.199 Y +437.401 631.199 446.201 623.999 Y +443.401 625.199 441.801 619.999 Y +446.601 615.999 443.801 611.199 Y +437.801 609.999 436.601 605.999 Y +443.401 597.999 433.401 597.599 Y +437.001 593.199 432.201 581.199 Y +427.401 581.199 421.001 575.599 Y +423.401 570.799 413.001 565.199 Y +404.601 563.599 407.401 556.799 Y +399.401 550.799 397.001 534.799 Y +396.201 524.399 393.801 521.199 399.001 523.199 c +404.201 525.199 403.401 537.599 Y +398.601 553.199 441.401 569.199 Y +445.401 570.799 446.201 575.999 Y +448.201 575.599 457.001 567.999 Y +464.601 556.799 465.001 565.999 Y +466.201 569.599 464.601 575.599 Y +470.601 597.199 456.601 603.599 Y +446.601 637.199 460.601 628.799 Y +463.401 623.199 474.201 617.999 y +477.801 620.399 L +476.201 625.199 484.601 631.199 Y +487.401 624.799 493.401 632.799 Y +497.001 657.199 509.401 642.799 Y +513.401 641.599 514.601 648.399 Y +518.201 658.799 514.601 672.399 Y +518.201 672.799 527.801 666.799 Y +530.601 670.399 521.401 687.199 525.401 684.799 c +529.401 682.399 533.801 680.799 Y +534.601 682.799 524.601 695.199 Y +520.201 698 515.001 718.4 Y +522.201 714.8 512.201 730 Y +512.201 733.2 518.201 744.4 Y +517.401 751.2 518.201 750.8 Y +521.001 749.6 529.001 748 522.201 754.4 c +515.401 760.8 523.001 765.6 Y +527.401 768.4 513.801 768 Y +508.601 772.4 509.001 776.4 Y +517.001 774.4 502.601 788.8 500.201 792.4 c +497.801 796 507.401 801.2 Y +520.601 804.8 509.001 808 Y +489.401 807.6 500.201 818.4 Y +506.201 818 504.601 820.4 Y +499.401 821.6 489.801 828 Y +485.801 831.6 489.401 830.8 Y +506.201 829.6 477.401 840.8 Y +485.401 840.8 467.401 851.2 Y +465.401 852.8 462.201 860.4 Y +456.201 865.6 451.401 872.4 Y +451.001 876.8 446.201 881.6 Y +434.601 895.2 429.001 894.8 Y +414.201 898.4 409.001 897.6 Y +356.2 893.2 l +329.8 880.4 337.6 859.4 Y +344 851 353.2 854.8 Y +357.8 861 369.4 858.8 Y +389.801 855.6 387.201 859.2 Y +384.801 863.8 368.6 870 368.4 870.6 c +368.2 871.2 359.4 874.6 Y +356.4 875.8 352 885 Y +348.8 888.4 364.6 882.6 Y +363.4 881.6 370.8 877.6 Y +388.201 878.6 398.801 867.8 Y +409.601 851.2 409.801 859.4 Y +412.601 868.8 400.801 890 Y +401.201 892 409.401 885.4 Y +410.801 887.4 411.601 881.6 Y +411.801 879.2 415.601 871.2 Y +418.401 858.2 422.001 865.6 Y +426.601 856.2 L +428.001 853.6 422.001 846 Y +421.801 843.2 422.601 843.4 417.001 835.8 c +411.401 828.2 414.801 823.8 Y +413.401 817.2 422.201 817.6 Y +424.801 815.4 428.201 815.4 Y +430.001 813.4 432.401 814 Y +434.001 817.8 440.201 815.8 Y +441.601 818.2 449.801 818.6 Y +450.801 821.2 451.201 822.8 454.601 823.4 c +458.001 824 433.401 867 Y +439.801 867.8 431.601 880.2 Y +429.401 886.8 440.801 872.2 443.001 870.8 c +445.201 869.4 446.201 867.2 444.601 867.4 c +443.001 867.6 441.201 865.4 442.601 865.2 c +444.001 865 457.001 850 460.401 839.8 c +463.801 829.6 469.801 825.6 476.001 819.6 c +482.201 813.6 481.401 789.4 Y +481.001 780.6 487.001 770 Y +489.001 766.2 484.801 748 Y +482.801 745.8 484.201 745 Y +485.201 743.8 492.001 730.6 Y +490.201 730.8 493.801 727.2 Y +499.001 721.2 492.601 724.2 Y +486.601 725.8 493.601 716 Y +494.801 714.2 485.801 718.8 Y +476.601 719.4 488.201 712.2 Y +496.801 705 485.401 709.4 Y +480.801 711.2 484.001 704.4 Y +487.201 702.8 504.401 695.8 Y +504.801 691.999 501.801 686.999 Y +502.201 682.999 500.001 679.599 Y +498.801 671.399 498.201 670.599 Y +494.001 670.399 486.601 656.599 Y +484.801 653.999 474.601 641.999 Y +472.601 634.999 454.601 642.199 Y +448.001 638.799 450.001 642.199 Y +449.601 644.399 454.401 650.399 Y +461.401 652.999 458.801 663.799 Y +462.801 665.199 451.601 667.999 451.801 669.199 c +452.001 670.399 457.801 671.799 Y +465.801 673.799 461.401 676.199 Y +460.801 680.199 463.801 685.799 Y +475.401 686.599 463.801 702.8 Y +453.001 710.4 452.001 716.2 Y +464.601 724.4 456.401 736.8 456.601 740.4 c +456.801 744 458.001 765.6 Y +456.001 771.8 453.001 785.4 Y +455.201 790.6 462.601 803.2 Y +465.401 807.4 474.201 812.2 472.001 815.2 c +469.801 818.2 462.001 816.4 Y +454.201 817.8 454.801 812.6 Y +453.201 811.6 452.401 806.6 Y +451.68 798.667 442.801 792.4 Y +431.601 786.2 440.801 782.2 Y +446.801 775.6 437.001 775.4 Y +426.001 777.2 434.201 767 Y +445.001 754.2 442.001 751.4 Y +431.801 750.4 444.401 741.2 y +443.601 743.2 443.801 741.4 v +444.001 739.6 447.001 735.4 447.801 733.4 c +448.601 731.4 444.601 731.2 Y +445.201 721.6 429.801 725.8 y +429.801 725.8 428.201 725.6 v +426.601 725.4 415.401 726.2 409.601 728.4 c +403.801 730.6 397.001 730.6 y +393.001 728.8 385.4 729 v +377.8 729.2 369.8 726.4 Y +365.4 726.8 374 731.2 374.2 731 c +374.4 730.8 380 736.4 372 735.8 c +350.203 734.165 339.4 744.4 Y +337.4 745.8 334.8 748.6 Y +324.8 750.6 336.2 736.2 Y +337.4 734.8 336 733.8 Y +335.2 735.4 327.4 740.8 Y +324.589 741.773 323.226 743.107 320.895 745.593 C +f +0.2 0.55 0.85 0.5 k +1 J 2 w +297 757.2 m +308.6 751.6 311.2 748.8 v +313.8 746 327.8 734.6 y +322.4 736.6 319.8 738.4 v +317.2 740.2 306.4 748.4 y +302.6 754.4 297 757.2 v +f +0.4 0.2 0.8 0 k +0 J 1 w +238.991 788.397 m +239.328 788.545 238.804 791.257 238.6 791.8 c +237.578 794.526 228.6 796 y +228.373 794.635 228.318 793.039 228.424 791.401 c +233.292 785.882 238.991 788.397 v +f +0.4 0.2 0.8 0.2 k +238.991 788.597 m +238.542 788.439 238.976 791.331 238.8 791.8 c +237.778 794.526 228.6 796.1 y +228.373 794.735 228.318 793.139 228.424 791.501 c +232.692 786.382 238.991 788.597 v +f +0 g +234.6 788.454 m +233.975 788.454 233.469 789.594 233.469 791 c +233.469 792.405 233.975 793.545 234.6 793.545 c +235.225 793.545 235.732 792.405 235.732 791 c +235.732 789.594 235.225 788.454 234.6 788.454 c +f +234.6 791 m +F +189 690.399 m +183.4 680.399 208.2 686.399 V +222.2 687.599 224.6 689.999 V +225.8 689.199 234.166 686.266 237 685.599 c +243.8 683.999 252.2 694 y +256.8 704.5 259.6 704.5 v +262.4 704.5 259.2 702.9 y +252.6 692.799 253 691.199 V +247.8 671.199 231.8 670.399 V +215.65 669.449 217 663.599 V +225.8 665.999 228.2 663.599 V +239 663.999 231 657.599 V +224.2 645.999 l +224.34 642.081 214.2 645.599 v +204.4 648.999 194.1 661.899 y +178.15 676.449 189 690.399 V +f +0.1 0.4 0.4 0 k +187.8 686.399 m +185.8 676.799 222.6 687.199 V +227 687.199 229.4 686.399 v +231.8 685.599 243.8 682.799 245.8 683.999 C +238.6 670.399 227 671.999 V +213.8 670.399 214.2 665.599 V +218.2 658.399 223 655.999 V +225.8 653.599 225.4 650.399 v +225 647.199 222.2 645.599 220.2 644.799 c +218.2 643.999 215 647.199 213.4 647.199 c +211.8 647.199 203.4 653.599 199 658.399 c +194.6 663.199 186.2 675.199 186.6 677.999 c +187 680.799 187.8 686.399 Y +f +0.1 0.4 0.4 0.2 k +191 668.949 m +193.6 664.999 196.8 660.799 199 658.399 c +203.4 653.599 211.8 647.199 213.4 647.199 c +215 647.199 218.2 643.999 220.2 644.799 c +222.2 645.599 225 647.199 225.4 650.399 c +225.8 653.599 223 655.999 Y +219.934 657.532 217.194 661.024 215.615 663.347 C +215.8 660.799 210.6 661.599 v +205.4 662.399 200.2 665.199 198.6 668.399 c +197 671.599 194.6 673.999 196.2 670.399 c +197.8 666.799 200.2 663.199 201.8 662.799 c +203.4 662.399 203 661.199 200.6 661.599 c +198.2 661.999 195.4 662.399 191 667.599 c +F +0.1 0.55 0.85 0.3 k +188.4 689.999 m +190.2 703.6 191.4 707.6 V +190.6 714.4 193 718.6 v +195.4 722.8 197.4 729 200.4 734.4 c +203.4 739.8 203.6 743.8 207.6 745.4 c +211.6 747 217.6 755.6 220.4 756.6 c +223.2 757.6 223 756.8 y +229.8 771.6 243.4 767.6 V +227.2 770.4 243 779.8 V +238.2 778.7 241.5 785.7 v +243.701 790.368 243.2 783.6 232.2 771.8 C +227.2 763.2 222 760.2 v +216.8 757.2 204.8 750.2 203.6 746.4 c +202.4 742.6 199.2 736.8 197.2 735.2 c +195.2 733.6 192.4 729.4 192 726 C +190.8 722 189.4 720.8 v +188 719.6 187.8 716.4 187.8 714.4 c +187.8 712.4 185.8 709.6 186 707.2 C +186.8 688.199 186.4 686.199 V +188.4 689.999 L +f +1 g +179.8 685.399 m +177.8 686.799 173.4 680.799 V +180.7 647.799 180.7 646.399 V +181.8 648.499 180.5 655.699 v +179.2 662.899 178.3 675.599 y +179.8 685.399 l +f +0.1 0.55 0.85 0.3 k +201.4 746 m +183.8 742.8 184.2 713.6 V +183.4 688.799 l +182.2 714.4 181 716 v +179.8 717.6 183.8 728.8 180.6 722.8 C +166.6 708.8 174.6 687.599 V +176.1 684.299 173.1 688.899 V +168.5 701.5 169.6 707.9 V +169.8 710.1 171.7 712.9 V +180.3 724.6 183 726.9 V +184.8 741.3 200.2 746.5 V +205.9 748.8 201.4 746 V +f +0 g +340.8 812.2 m +341.46 812.554 341.451 813.524 342.031 813.697 c +343.18 814.041 343.344 815.108 343.862 815.892 c +344.735 817.211 344.928 818.744 345.51 820.235 c +345.782 820.935 345.809 821.89 345.496 822.55 c +344.322 825.031 343.62 827.48 342.178 829.906 c +341.91 830.356 341.648 831.15 341.447 831.748 c +340.984 833.132 339.727 834.123 338.867 835.443 c +338.579 835.884 339.104 836.809 338.388 836.893 c +337.491 836.998 336.042 837.578 335.809 836.552 c +335.221 833.965 336.232 831.442 337.2 829 C +336.418 828.308 336.752 827.387 336.904 826.62 c +337.614 823.014 336.416 819.662 335.655 816.188 c +335.632 816.084 335.974 815.886 335.946 815.824 c +334.724 813.138 333.272 810.693 331.453 808.312 c +330.695 807.32 329.823 806.404 329.326 805.341 c +328.958 804.554 328.55 803.588 328.8 802.6 C +325.365 799.82 323.115 795.975 320.504 792.129 c +320.042 791.449 320.333 790.24 320.884 789.971 c +321.697 789.573 322.653 790.597 323.123 791.443 c +323.512 792.141 323.865 792.791 324.356 793.434 c +324.489 793.609 324.31 794.028 324.445 794.149 c +327.078 796.496 328.747 799.432 331.2 801.8 C +333.15 802.129 334.687 803.127 336.435 804.14 c +336.743 804.319 337.267 804.07 337.557 804.265 c +339.31 805.442 339.308 807.478 339.414 809.388 c +339.464 810.272 339.66 811.589 340.8 812.2 c +f +331.959 816.666 m +332.083 816.743 331.928 817.166 332.037 817.382 c +332.199 817.706 332.602 817.894 332.764 818.218 c +332.873 818.434 332.71 818.814 332.846 818.956 c +335.179 821.403 335.436 824.427 334.4 827.4 C +335.424 828.02 335.485 829.282 335.06 830.129 c +334.207 831.829 334.014 833.755 333.039 835.298 c +332.237 836.567 330.659 837.811 329.288 836.508 c +328.867 836.108 328.546 835.321 328.824 834.609 c +328.888 834.446 329.173 834.3 329.146 834.218 c +329.039 833.894 328.493 833.67 328.487 833.398 c +328.457 831.902 327.503 830.391 328.133 829.062 c +328.905 827.433 329.724 825.576 330.4 823.8 C +329.166 821.684 330.199 819.235 328.446 817.358 c +328.31 817.212 328.319 816.826 328.441 816.624 c +328.733 816.138 329.139 815.732 329.625 815.44 c +329.827 815.319 330.175 815.317 330.375 815.441 c +330.953 815.803 331.351 816.29 331.959 816.666 c +f +394.771 826.977 m +396.16 825.185 396.45 822.39 394.401 821 C +394.951 817.691 398.302 819.67 400.401 820.2 C +400.292 820.588 400.519 820.932 400.802 820.937 c +401.859 820.952 402.539 821.984 403.601 821.8 C +404.035 823.357 405.673 824.059 406.317 825.439 c +408.043 829.134 407.452 833.407 404.868 836.653 c +404.666 836.907 404.883 837.424 404.759 837.786 c +404.003 839.997 401.935 840.312 400.001 841 C +398.824 844.875 398.163 848.906 396.401 852.6 C +394.787 852.85 394.089 854.589 392.752 855.309 c +391.419 856.028 390.851 854.449 390.892 853.403 c +390.899 853.198 391.351 852.974 391.181 852.609 c +391.105 852.445 390.845 852.334 390.845 852.2 c +390.846 852.065 391.067 851.934 391.201 851.8 C +390.283 850.98 388.86 850.503 388.565 849.358 c +387.611 845.648 390.184 842.523 391.852 839.322 c +392.443 838.187 391.707 836.916 390.947 835.708 c +390.509 835.013 390.617 833.886 390.893 833.03 c +391.645 830.699 393.236 828.96 394.771 826.977 c +f +357.611 808.591 m +356.124 806.74 352.712 804.171 355.629 802.243 c +355.823 802.114 356.193 802.11 356.366 802.244 c +358.387 803.809 360.39 804.712 362.826 805.294 c +362.95 805.323 363.224 804.856 363.593 805.017 c +365.206 805.72 367.216 805.662 368.4 807 C +372.167 806.776 375.732 807.892 379.123 809.2 c +380.284 809.648 381.554 810.207 382.755 810.709 c +384.131 811.285 385.335 812.213 386.447 813.354 c +386.58 813.49 386.934 813.4 387.201 813.4 C +387.161 814.263 388.123 814.39 388.37 815.012 c +388.462 815.244 388.312 815.64 388.445 815.742 c +390.583 817.372 391.503 819.39 390.334 821.767 c +390.049 822.345 389.8 822.963 389.234 823.439 c +388.149 824.35 387.047 823.496 386 823.8 C +385.841 823.172 385.112 823.344 384.726 823.146 c +383.867 822.707 382.534 823.292 381.675 822.854 c +380.313 822.159 379.072 821.99 377.65 821.613 c +377.338 821.531 376.56 821.627 376.4 821 C +376.266 821.134 376.118 821.368 376.012 821.346 c +374.104 820.95 372.844 820.736 371.543 819.044 c +371.44 818.911 370.998 819.09 370.839 818.955 c +369.882 818.147 369.477 816.913 368.376 816.241 c +368.175 816.118 367.823 816.286 367.629 816.157 c +366.983 815.726 366.616 815.085 365.974 814.638 c +365.645 814.409 365.245 814.734 365.277 814.99 c +365.522 816.937 366.175 818.724 365.6 820.6 C +367.677 823.12 370.194 825.069 372 827.8 C +372.015 829.966 372.707 832.112 372.594 834.189 c +372.584 834.382 372.296 835.115 372.17 835.462 c +371.858 836.316 372.764 837.382 371.92 838.106 c +370.516 839.309 369.224 838.433 368.4 837 C +366.562 836.61 364.496 835.917 362.918 837.151 c +361.911 837.938 361.333 838.844 360.534 839.9 c +359.549 841.202 359.884 842.638 359.954 844.202 c +359.96 844.33 359.645 844.466 359.645 844.6 c +359.646 844.735 359.866 844.866 360 845 C +359.294 845.626 359.019 846.684 358 847 C +358.305 848.092 357.629 848.976 356.758 849.278 c +354.763 849.969 353.086 848.057 351.194 847.984 c +350.68 847.965 350.213 849.003 349.564 849.328 c +349.132 849.544 348.428 849.577 348.066 849.311 c +347.378 848.807 346.789 848.693 346.031 848.488 c +344.414 848.052 343.136 846.958 341.656 846.103 c +340.171 845.246 339.216 843.809 338.136 842.489 c +337.195 841.337 337.059 838.923 338.479 838.423 c +340.322 837.773 341.626 840.476 343.592 840.15 c +343.904 840.099 344.11 839.788 344 839.4 C +344.389 839.291 344.607 839.52 344.8 839.8 C +345.658 838.781 346.822 838.444 347.76 837.571 c +348.73 836.667 350.476 837.085 351.491 836.088 c +353.02 834.586 352.461 831.905 354.4 830.6 C +353.814 829.287 353.207 828.01 352.872 826.583 c +352.59 825.377 353.584 824.18 354.795 824.271 c +356.053 824.365 356.315 825.124 356.8 826.2 C +357.067 825.933 357.536 825.636 357.495 825.42 c +357.038 823.033 356.011 821.04 355.553 818.609 c +355.494 818.292 355.189 818.09 354.8 818.2 C +354.332 814.051 350.28 811.657 347.735 808.492 c +347.332 807.99 347.328 806.741 347.737 806.338 c +349.14 804.951 351.1 806.497 352.8 807 C +353.013 808.206 353.872 809.148 355.204 809.092 c +355.46 809.082 355.695 809.624 356.019 809.754 c +356.367 809.892 356.869 809.668 357.155 809.866 c +358.884 811.061 360.292 812.167 362.03 813.356 c +362.222 813.487 362.566 813.328 362.782 813.436 c +363.107 813.598 363.294 813.985 363.617 814.17 c +363.965 814.37 364.207 814.08 364.4 813.8 C +363.754 813.451 363.75 812.494 363.168 812.292 c +362.393 812.024 361.832 811.511 361.158 811.064 c +360.866 810.871 360.207 811.119 360.103 810.94 c +359.505 809.912 358.321 809.474 357.611 808.591 c +f +302.2 858 m +292.962 860.872 281.8 835.2 V +279.4 830 277 828 v +274.6 826 263.4 822.4 261.4 818.4 C +251 802.4 L +265.8 818.4 269 820.8 V +277 829.2 273.8 822.4 V +259.8 811.6 261 802.4 V +255.4 788 254.6 786 V +270.6 818 273 819.2 v +275.4 820.4 276.6 820.4 275.4 816.8 c +274.2 813.2 273.8 796.8 271 794.8 C +279 815.2 278.2 818.4 V +281.4 822 283.8 816.8 V +282.6 800.8 l +287 788.8 l +284.6 800 286.2 815.6 V +284.2 826 288.2 820.4 v +292.2 814.8 301.8 808.8 301.8 804 C +296.6 821.6 287.4 826.4 V +283.4 820.4 l +282.2 822.4 l +278.6 823.2 283 830 v +287.4 836.8 287 837.6 y +293.4 830.4 295 830.4 V +308.2 838 309.4 813.6 V +316.2 828 307 834.8 V +292.2 836.8 293.4 842 V +300.6 854.4 L +304.2 859.6 302.6 856.8 y +F +282.2 841.6 m +269.4 841.6 266.2 836.4 V +259 826.8 l +276.2 836.8 280.2 838 v +284.2 839.2 282.2 841.6 Y +f +242.2 835.2 m +240.2 834 239.8 831.2 v +239.4 828.4 237 828 237.8 825.2 c +238.6 822.4 240.6 820 240.6 824 c +240.6 828 242.2 830 243 831.2 c +243.8 832.4 245.4 836.8 242.2 835.2 c +f +233.4 774 m +225 778 221.8 781.6 v +218.6 785.2 219.052 780.034 214.2 780.4 c +208.353 780.841 209.4 796.8 y +205.4 789.2 l +204.2 774.8 212.2 777.2 v +216.107 778.372 217.4 776.8 215.8 776 c +214.2 775.2 221.4 774.8 218.6 773.2 c +215.8 771.6 230.2 776.8 227.8 766.4 C +233.4 774 L +f +220.8 759.6 m +205.4 755.2 201.8 764.8 V +197 762.4 199.2 759.4 v +201.4 756.4 202.6 756 y +208 754.8 207.4 754 v +206.8 753.2 204.4 749.8 y +214.6 755.8 220.8 759.6 v +f +1 g +449.201 681.399 m +448.774 679.265 447.103 678.464 445.201 677.799 C +443.284 678.757 440.686 681.863 438.801 679.799 C +438.327 680.279 437.548 680.339 437.204 681.001 c +436.739 681.899 437.011 682.945 436.669 683.743 c +436.124 685.015 435.415 686.381 435.601 687.799 C +437.407 688.511 438.002 690.417 437.528 692.18 c +437.459 692.437 437.03 692.634 437.23 692.983 c +437.416 693.306 437.734 693.533 438.001 693.8 C +437.866 693.665 437.721 693.432 437.61 693.452 c +437 693.558 437.124 694.195 437.254 694.582 c +437.839 696.328 439.853 696.592 441.201 695.4 C +441.457 695.965 441.966 695.771 442.401 695.8 C +442.351 696.379 442.759 696.906 442.957 697.326 c +443.475 698.424 445.104 697.318 445.901 697.93 c +446.977 698.755 448.04 699.454 449.118 698.851 c +450.927 697.838 452.636 696.626 453.835 694.885 c +454.41 694.051 454.65 692.77 454.592 691.812 c +454.554 691.165 453.173 691.517 452.83 690.588 c +452.185 688.84 454.016 688.321 454.772 686.983 c +454.97 686.634 454.706 686.33 454.391 686.232 c +453.98 686.104 453.196 686.293 453.334 685.84 c +454.306 682.647 451.55 681.969 449.201 681.399 C +f +439.6 661.799 m +439.593 663.537 437.992 665.293 439.201 666.999 C +439.336 666.865 439.467 666.644 439.601 666.644 c +439.736 666.644 439.867 666.865 440.001 666.999 C +441.496 664.783 445.148 663.855 445.006 661.009 c +444.984 660.562 443.897 659.644 444.801 658.999 C +442.988 657.651 442.933 655.281 442.001 653.399 C +440.763 653.685 439.551 654.048 438.401 654.599 C +438.753 656.085 438.636 657.769 439.456 659.089 c +439.89 659.787 439.603 660.866 439.6 661.799 c +f +0.8 g +273.4 670.799 m +256.542 660.663 270.6 675.999 v +279.4 685.599 289.4 691.199 y +299.8 695.6 303.4 696.8 v +307 698 322.2 703.2 325.4 703.6 c +328.6 704 338.2 708 345 704 c +351.8 700 359.8 695.6 y +343.4 704 339.8 701.6 v +336.2 699.2 329 699.6 323 696.4 C +308.2 691.999 305 689.999 v +301.8 687.999 291.4 676.399 289.8 677.199 c +288.2 677.999 290.2 678.399 291.4 681.199 c +292.6 683.999 290.6 685.599 282.6 679.199 c +274.6 672.799 273.4 670.799 Y +f +0 g +280.805 676.766 m +282.215 689.806 290.693 688.141 V +298.919 692.311 301.641 694.279 V +309.78 695.981 311.09 696.598 v +329.569 705.298 344.288 700.779 344.835 701.899 c +345.381 703.018 365.006 695.901 368.615 691.815 c +369.006 691.372 358.384 697.412 348.686 699.303 c +340.413 700.917 318.811 699.056 307.905 693.52 c +304.932 692.011 295.987 686.227 293.456 686.338 c +290.925 686.45 280.805 676.766 Y +f +0.8 g +277 651.199 m +261.8 653.599 278.6 655.199 V +296.6 657.199 300.6 662.399 V +314.2 671.599 317 671.999 v +319.8 672.399 349.8 679.599 350.2 681.999 c +350.6 684.399 356.2 684.399 357.8 683.599 c +359.4 682.799 358.6 681.599 355.8 680.799 c +353 679.999 321.8 663.599 315.4 662.399 c +309 661.199 297.4 653.599 292.6 652.399 c +287.8 651.199 277 651.199 Y +f +0 g +296.52 658.597 m +287.938 659.426 296.539 660.245 V +305.355 663.669 307.403 666.332 V +314.367 671.043 315.8 671.247 v +317.234 671.452 331.194 675.139 331.399 676.367 c +331.604 677.596 365.67 690.177 370.09 686.987 c +373.001 684.886 363.1 686.563 353.466 682.153 c +352.111 681.533 318.258 666.946 314.981 666.332 c +311.704 665.717 305.765 661.826 303.307 661.212 c +300.85 660.597 296.52 658.597 Y +f +288.6 656.399 m +293.8 656.799 292.6 655.199 v +291.4 653.599 289 654.399 y +288.6 656.399 l +f +281.4 654.799 m +286.6 655.199 285.4 653.599 v +284.2 651.999 281.8 652.799 y +281.4 654.799 l +f +271 653.199 m +276.2 653.599 275 651.999 v +273.8 650.399 271.4 651.199 y +271 653.199 l +f +263.4 652.399 m +268.6 652.799 267.4 651.199 v +266.2 649.599 263.8 650.399 y +263.4 652.399 l +f +301.8 691.999 m +306.2 691.999 305 690.399 v +303.8 688.799 300.6 689.199 y +301.8 691.999 l +f +291.8 686.399 m +298.306 688.54 295.8 685.199 v +294.6 683.599 292.2 684.399 y +291.8 686.399 l +f +280.6 681.599 m +285.8 681.999 284.6 680.399 v +283.4 678.799 281 679.599 y +280.6 681.599 l +f +273 675.599 m +278.2 675.999 277 674.399 v +275.8 672.799 273.4 673.599 y +273 675.599 l +f +266.2 670.799 m +271.4 671.199 270.2 669.599 v +269 667.999 266.6 668.799 y +266.2 670.799 l +f +305.282 664.402 m +312.203 664.934 310.606 662.805 v +309.009 660.675 305.814 661.74 y +305.282 664.402 l +f +315.682 669.202 m +322.603 669.734 321.006 667.605 v +319.409 665.475 316.214 666.54 y +315.682 669.202 l +f +326.482 673.602 m +333.403 674.134 331.806 672.005 v +330.209 669.875 327.014 670.94 y +326.482 673.602 l +f +336.882 678.402 m +343.803 678.934 342.206 676.805 v +340.609 674.675 337.414 675.74 y +336.882 678.402 l +f +309.282 696.402 m +316.203 696.934 314.606 694.805 v +313.009 692.675 309.014 692.94 y +309.282 696.402 l +f +319.282 699.602 m +326.203 700.134 324.606 698.005 v +323.009 695.875 318.614 696.14 y +319.282 699.602 l +f +296.6 659.599 m +301.8 659.999 300.6 658.399 v +299.4 656.799 297 657.599 y +296.6 659.599 l +f +0.1 0.55 0.85 0.3 k +223.4 758.8 m +219 750 218.6 746.8 V +219.4 755.6 220.6 757.6 v +221.8 759.6 223.4 758.8 y +f +205 744.8 m +201.8 730.4 202.2 727.6 V +201 739.2 201.4 740.4 v +201.8 741.6 205 744.8 y +f +0.8 g +225.8 819.4 m +225.6 816.2 l +223.4 816 l +237.6 803.4 238.2 795.8 V +239 804 225.8 819.4 V +f +0 g +229.784 818.135 m +229.353 818.551 229.572 819.296 229.164 819.556 c +228.355 820.072 230.462 820.129 230.234 820.845 c +229.851 822.051 230.038 822.072 229.916 823.348 c +229.859 823.946 230.447 825.486 230.832 825.926 c +232.278 827.578 230.954 830.51 232.594 832.061 c +232.898 832.35 233.274 832.902 233.559 833.32 c +234.218 834.283 235.402 834.771 236.352 835.599 c +236.67 835.875 236.469 836.702 237.038 836.61 c +237.752 836.495 238.993 836.625 238.948 835.784 c +238.835 833.664 237.506 831.944 236.226 830.276 C +236.677 829.572 236.219 828.937 235.935 828.38 c +234.6 825.76 234.789 822.919 234.615 820.079 c +234.61 819.994 234.303 819.916 234.311 819.863 c +234.664 817.528 235.248 815.329 236.127 813.1 c +236.493 812.17 236.964 811.275 237.114 810.348 c +237.225 809.662 237.328 808.829 236.92 808.124 C +238.955 805.234 237.646 802.583 238.815 799.052 c +239.022 798.427 240.714 796.513 240.251 796.674 c +237.738 797.545 237.626 797.943 237.449 798.696 c +237.303 799.319 236.973 800.696 236.736 801.298 c +236.672 801.462 236.501 803.346 236.423 803.468 c +234.91 805.85 236.268 805.674 234.898 808.032 C +233.47 808.712 232.504 809.816 231.381 810.978 c +231.183 811.182 232.326 811.906 232.145 812.119 c +231.053 813.408 229.9 814.175 230.236 815.668 c +230.391 816.358 230.528 817.415 229.784 818.135 c +f +226.2 816.4 m +226.6 809.6 229 808 v +231.4 806.4 230.2 807.2 227 808.4 c +223.8 809.6 225 810.4 y +222.2 810 224.6 808 v +227 806 230.6 803.6 229 803.6 c +227.4 803.6 219.8 807.6 219.8 810.4 c +219.8 813.2 218.8 817.3 y +219.9 818.1 224.7 818 V +226.1 817.3 226.2 816.4 V +f +1 g +1 J 0.1 w +225.4 797.8 m +216.88 800.591 198.4 797.2 V +207.431 799.278 226.2 797 v +236.5 795.75 225.4 797.8 Y +b +227.498 797.871 m +219.252 801.389 200.547 799.608 V +209.725 800.897 228.226 797.005 v +238.38 794.869 227.498 797.871 Y +b +229.286 797.778 m +221.324 801.899 202.539 801.514 V +211.787 802.118 229.948 796.86 v +239.914 793.975 229.286 797.778 Y +b +230.556 797.555 m +223.732 801.862 206.858 802.96 V +215.197 802.79 231.078 796.681 v +239.794 793.328 230.556 797.555 Y +b +345.84 787.039 m +344.91 786.395 345.124 787.576 v +345.339 788.757 373.547 801.927 377.161 801.677 C +346.913 788.471 345.84 787.039 V +b +342.446 786.4 m +341.57 785.685 341.691 786.879 v +341.812 788.073 368.899 803.418 372.521 803.452 C +343.404 787.911 342.446 786.4 V +b +339.16 785.025 m +338.332 784.253 338.374 785.453 v +338.416 786.652 358.233 802.149 368.045 804.023 C +350.015 795.896 339.16 785.025 V +b +336.284 783.162 m +335.539 782.468 335.577 783.547 v +335.615 784.627 353.449 798.574 362.28 800.26 C +346.054 792.946 336.284 783.162 V +b +0.8 g +0 J 1 w +304.6 635.199 m +289.4 637.599 306.2 639.199 V +324.2 641.199 328.2 646.399 V +341.8 655.599 344.6 655.999 v +347.4 656.399 363.8 659.999 364.2 662.399 c +364.6 664.799 370.6 667.199 372.2 666.399 c +373.8 665.599 373.8 656.399 371 655.599 c +368.2 654.799 349.4 647.599 343 646.399 c +336.6 645.199 325 637.599 320.2 636.399 c +315.4 635.199 304.6 635.199 Y +f +0 g +377.6 672.599 m +374.6 670.999 373.4 668.399 V +367 657.799 352.8 654.599 V +329.8 645.599 322 643.599 V +308.6 638.599 301.2 639.399 V +294.2 639.199 300.4 637.599 V +320.6 639.599 324 641.399 V +339.6 646.599 342.6 649.199 v +345.6 651.799 363.8 656.799 366 658.799 c +368.2 660.799 378 669.199 377.6 672.599 C +f +318.882 641.089 m +324.111 641.315 322.958 639.766 v +321.805 638.216 319.357 639.09 y +318.882 641.089 l +f +311.68 639.737 m +316.908 639.963 315.756 638.414 v +314.603 636.864 312.155 637.737 y +311.68 639.737 l +f +301.251 638.489 m +306.48 638.716 305.327 637.166 v +304.174 635.617 301.726 636.49 y +301.251 638.489 l +f +293.617 637.945 m +298.846 638.171 297.693 636.622 v +296.54 635.072 294.092 635.946 y +293.617 637.945 l +f +335.415 648.487 m +342.375 648.788 340.84 646.726 v +339.306 644.664 336.047 645.826 y +335.415 648.487 l +f +345.73 652.912 m +351.689 656.213 351.155 651.151 v +350.885 648.595 346.362 650.251 y +345.73 652.912 l +f +354.862 655.726 m +362.021 659.427 360.287 653.965 v +359.509 651.515 355.493 653.065 y +354.862 655.726 l +f +364.376 660.551 m +368.735 665.452 369.801 658.79 v +370.207 656.252 365.008 657.89 y +364.376 660.551 l +f +326.834 644.003 m +332.062 644.23 330.91 642.68 v +329.757 641.131 327.308 642.004 y +326.834 644.003 l +f +1 g +1 J 0.1 w +362.434 765.397 m +361.708 764.732 361.707 765.803 v +361.707 766.873 379.191 780.137 388.034 781.521 C +371.935 774.792 362.434 765.397 V +b +0 g +0 J 1 w +365.4 701.6 m +387.401 679.199 396.601 675.599 V +405.801 664.399 401.801 638.399 V +398.601 630.799 395.401 651.599 V +398.601 676.799 387.401 660.799 V +379 670.699 385.4 670.399 V +388.601 668.399 389.001 669.999 v +389.401 671.599 381.4 685.199 364.2 699.6 c +347 714 365.4 701.6 Y +f +1 g +1 J 0.1 w +307 662.799 m +306.8 664.599 308.6 663.799 v +310.4 662.999 404.601 656.799 436.201 632.799 C +391.001 655.999 307 662.799 V +b +317.4 667.199 m +317.2 668.999 319 668.199 v +320.8 667.399 457.401 668.399 481.001 635.999 C +459.001 661.199 317.4 667.199 V +b +329 671.199 m +328.8 672.999 330.6 672.199 v +332.4 671.399 505.801 684.399 529.401 651.999 C +519.801 677.599 329 671.199 V +b +339 675.999 m +338.8 677.799 340.6 676.999 v +342.4 676.199 464.601 714.8 488.201 682.399 C +474.801 707 339 675.999 V +b +281 653.199 m +280.8 654.999 282.6 654.199 v +284.4 653.399 302.2 651.199 304.2 612.399 C +297 654.399 281 653.199 V +b +272.2 651.599 m +272 653.399 273.8 652.599 v +275.6 651.799 289.8 656.399 287 617.599 C +288.2 652.799 272.2 651.599 V +b +264.2 651.199 m +264 652.999 265.8 652.199 v +267.6 651.399 283 650.799 270.6 628.399 C +280.2 652.399 264.2 651.199 V +b +311.526 695.535 m +311.082 693.536 312.631 694.753 v +328.699 707.378 361.141 766.28 416.826 771.914 C +378.518 784.024 311.526 695.535 V +b +322.726 697.335 m +321.363 698.528 323.231 699.153 v +325.099 699.778 437.541 772.28 476.826 764.314 C +449.719 771.824 322.726 697.335 V +b +301.885 691.233 m +301.376 689.634 303.087 690.61 v +312.062 695.73 315.677 752.941 359.254 754.196 C +326.843 768.91 301.885 691.233 V +b +281.962 680.207 m +280.885 678.921 282.838 679.175 v +293.084 680.507 314.489 721.778 358.928 716.699 C +326.962 731.045 281.962 680.207 V +b +293.2 686.333 m +292.389 684.864 294.258 685.489 v +304.057 688.763 317.141 733.375 361.729 736.922 C +327.603 744.865 293.2 686.333 V +b +274.922 675.088 m +274.049 674.046 275.631 674.252 v +283.93 675.331 301.268 708.76 337.264 704.646 C +311.371 716.266 274.922 675.088 V +b +267.323 669.179 m +266.318 668.134 267.909 668.252 v +272.077 668.561 302.715 701.64 321.183 686.138 C +309.168 704.861 267.323 669.179 V +b +336.855 701.102 m +335.654 702.457 337.586 702.842 v +339.518 703.226 460.221 760.939 498.184 748.073 C +472.243 758.947 336.855 701.102 V +b +303.4 636.799 m +303.2 638.599 305 637.799 v +306.8 636.999 322.2 636.399 309.8 613.999 C +319.4 637.999 303.4 636.799 V +b +313.8 638.399 m +313.6 640.199 315.4 639.399 v +317.2 638.599 335 636.399 337 597.599 C +329.8 639.599 313.8 638.399 V +b +320.6 639.999 m +320.4 641.799 322.2 640.999 v +324 640.199 348.6 636.799 372.2 604.399 C +336.6 641.199 320.6 639.999 V +b +328.225 642.028 m +327.788 643.786 329.678 643.232 v +331.568 642.678 352.002 644.577 390.099 610.401 C +343.924 645.344 328.225 642.028 V +b +338.625 646.428 m +338.188 648.186 340.078 647.632 v +341.968 647.078 376.802 642.577 428.499 607.601 C +354.324 649.744 338.625 646.428 V +b +298.2 657.999 m +298 659.799 299.8 658.999 v +301.6 658.199 355 655.599 385.4 628.799 C +350.499 653.574 298.2 657.999 V +b +288.2 653.999 m +288 655.799 289.8 654.999 v +291.6 654.199 316.2 650.799 339.8 618.399 C +304.2 655.199 288.2 653.999 V +b +349.503 651.038 m +348.938 652.759 350.864 652.345 v +352.79 651.932 387.86 649.996 441.981 618.902 C +364.317 653.296 349.503 651.038 V +b +357.903 653.438 m +357.338 655.159 359.264 654.745 v +361.19 654.332 396.26 652.396 450.381 621.302 C +373.317 656.096 357.903 653.438 V +b +367.503 658.438 m +366.938 660.159 368.864 659.745 v +370.79 659.332 413.86 654.996 503.582 620.702 C +382.917 661.096 367.503 658.438 V +b +0 g +0 J 1 w +256.2 651.599 m +261.4 651.999 260.2 650.399 v +259 648.799 256.6 649.599 y +256.2 651.599 l +f +287 637.599 m +292.2 637.999 291 636.399 v +289.8 634.799 287.4 635.599 y +287 637.599 l +f +278.2 637.999 m +283.4 638.399 282.2 636.799 v +281 635.199 278.6 635.999 y +278.2 637.999 l +f +182.831 649.818 m +187.876 648.495 186.218 647.376 v +184.561 646.256 182.554 647.798 y +182.831 649.818 l +f +184.831 659.418 m +189.876 658.095 188.218 656.976 v +186.561 655.856 184.554 657.398 y +184.831 659.418 l +f +177.631 663.818 m +182.676 662.495 181.018 661.376 v +179.361 660.256 177.354 661.798 y +177.631 663.818 l +f +0.8 g +1 J 0.1 w +257.4 588.799 m +255.8 588.799 251.8 586.799 V +249.8 586.799 238.6 583.199 233 573.199 C +245.4 582.799 257.4 588.799 V +f +345.116 496.153 m +345.257 495.895 345.312 495.475 345.604 495.458 c +346.262 495.418 347.495 495.117 347.37 495.753 c +346.522 500.059 345.648 504.996 341.515 506.803 c +340.876 507.082 339.434 506.669 339.36 505.785 c +339.233 504.261 339.116 502.912 339.425 501.446 c +339.725 500.025 341.883 500.015 342.8 501.399 C +343.736 499.727 344.168 497.884 345.116 496.153 c +f +334.038 491.419 m +334.786 490.006 334.659 488.147 336.074 487.584 c +336.814 487.29 338.664 488.265 338.246 489.339 c +337.444 491.4 337.056 493.639 335.667 495.45 c +335.467 495.712 335.707 496.245 335.547 496.573 c +334.953 497.793 333.808 498.528 332.4 498.199 C +331.285 495.996 332.433 493.867 333.955 492.158 c +334.091 492.006 333.925 491.63 334.038 491.419 c +f +294.436 496.609 m +294.328 496.986 294.29 497.449 294.455 497.77 c +294.986 498.803 295.779 499.925 295.442 500.947 c +295.094 502.003 293.978 501.821 293.328 501.252 c +292.193 500.258 292.144 498.432 291.453 497.073 c +291.257 496.687 291.308 496.114 290.867 495.723 c +290.393 495.302 289.953 493.778 290.049 493.207 c +290.102 492.894 289.919 482.986 290.141 483.249 c +290.76 483.982 293.81 493.716 293.879 494.608 c +293.936 495.339 294.668 495.804 294.436 496.609 c +f +268.798 503.401 m +271.432 505.9 274.222 508.861 273.78 512.573 c +273.664 513.549 271.889 513.022 271.702 512.176 c +270.9 508.551 268.861 505.89 266.293 503.498 c +264.097 501.451 262.235 495.107 262 494.599 C +265.697 499.855 267.954 502.601 268.798 503.401 c +f +255.224 509.365 m +255.747 509.735 255.445 510.226 255.662 510.558 c +256.615 512.016 257.916 513.262 257.934 515 c +257.937 515.277 257.559 515.586 257.224 515.362 c +256.947 515.178 256.605 515.048 256.497 514.918 c +254.467 512.469 253.067 509.798 251.624 506.986 c +251.441 506.629 250.297 502.138 250.61 502.027 c +250.849 501.942 252.569 506.123 252.779 506.237 c +254.042 506.923 254.054 508.538 255.224 509.365 c +f +271.957 489.821 m +272.401 490.69 273.977 491.892 273.864 492.781 c +273.746 493.709 274.214 495.152 273.302 494.464 c +272.045 493.516 268.596 492.167 268.326 486.359 c +268.3 485.788 271.274 488.481 271.957 489.821 c +f +286.4 506.999 m +286.8 507.667 287.508 507.194 287.967 507.457 c +288.615 507.829 289.226 508.387 289.518 509.036 c +290.488 511.185 292.257 513.005 292.4 515.399 C +290.909 516.804 290.23 514.764 289.6 513.799 C +288.277 515.446 287.278 513.572 285.978 513.053 c +285.908 513.025 285.695 513.372 285.62 513.345 c +284.443 512.905 283.763 511.824 282.765 511.043 c +282.594 510.909 282.189 511.089 282.042 510.953 c +281.39 510.35 280.417 510.025 280.137 509.343 c +279.027 506.636 275.887 504.541 274 496.999 C +274.381 496.09 278.512 503.641 278.999 504.339 c +279.835 505.535 279.953 502.678 281.229 503.344 c +281.28 503.371 281.466 503.133 281.6 502.999 C +281.794 503.279 282.012 503.508 282.4 503.399 C +282.4 503.799 282.266 504.355 282.467 504.514 c +283.704 505.491 283.62 506.559 284.4 507.799 C +284.858 507.01 285.919 507.729 286.4 506.999 C +f +346.2 452.599 m +353.6 472.999 349.2 484.199 V +360.6 462.599 356 451.399 V +355.6 461.799 351.6 466.799 V +347.6 453.999 346.2 452.599 V +f +331.4 455.199 m +336.8 463.999 328.8 482.399 V +328 461.999 321.2 450.999 V +335.4 471.199 331.4 455.199 V +f +321.4 457.199 m +321.2 477.199 321.6 480.199 V +317.8 463.599 307.6 453.999 V +322 465.999 321.4 457.199 V +f +311.8 489.199 m +317.8 475.599 307.8 457.199 V +314.2 469.399 309.4 476.399 V +312 479.799 311.8 489.199 V +f +292.6 457.599 m +291.6 473.199 293.4 475.399 V +293.6 481.799 293.2 482.799 V +297.2 488.999 297.4 481.599 V +298.8 473.799 301.6 469.199 V +305.2 463.799 305 457.399 V +295 487.599 292.6 457.599 V +f +289 485.199 m +282.4 474.399 280.6 455.399 V +279.2 461.599 283 475.999 V +287.2 491.399 289 485.199 V +f +267.2 465.399 m +272.2 470.799 273.6 475.799 V +277.2 491.599 270.8 482.999 V +271 474.999 262.8 467.599 V +267.6 469.999 267.2 465.399 V +f +261.4 470.399 m +264.8 487.799 265.6 488.599 V +267.4 491.999 264.6 488.799 V +255.8 469.599 251.8 462.999 V +259.8 472.199 261.4 470.399 V +f +255.6 486.999 m +267.2 509.399 245.4 483.599 V +256.4 493.399 255.6 486.999 V +f +240.2 501.599 m +245 520.399 247.6 520.199 V +255.8 529.199 249.2 518.599 V +243.2 508.999 243.8 499.199 V +243.2 508.799 240.2 501.599 V +f +570.5 513 m +558.5 523 556 526.5 V +569.5 508 569.5 501 V +572 508.5 570.5 513 V +f +576 535 m +555 550 551.5 557.5 V +578 528 578 523.5 V +578.5 532.5 576 535 V +f +593 689 m +581 697 579.5 695 V +590 688.5 592.5 680 V +591 689 593 689 V +f +601.5 608.5 m +584 620.5 l +603 603.5 603.5 599.5 V +601.5 608.5 L +f +0 g +1 w +210.75 631 m +232.75 626.25 l +S +261 469 m +260.5 472.5 251.5 462 v +S +266.5 464 m +268.5 470.5 262 466 v +S +320.5 455.5 m +322 466.5 310.5 453.5 v +S + +showpage + +%%Trailer diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestAndroid.png b/vendor/github.com/llgcode/draw2d/resource/result/TestAndroid.png new file mode 100644 index 0000000..ffa068b Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestAndroid.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestBigPicture.png b/vendor/github.com/llgcode/draw2d/resource/result/TestBigPicture.png new file mode 100644 index 0000000..791a9df Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestBigPicture.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestBubble.png b/vendor/github.com/llgcode/draw2d/resource/result/TestBubble.png new file mode 100644 index 0000000..29fff3f Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestBubble.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestCurveRectangle.png b/vendor/github.com/llgcode/draw2d/resource/result/TestCurveRectangle.png new file mode 100644 index 0000000..2220ee7 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestCurveRectangle.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestDash.png b/vendor/github.com/llgcode/draw2d/resource/result/TestDash.png new file mode 100644 index 0000000..324fa3d Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestDash.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestDrawArc.png b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawArc.png new file mode 100644 index 0000000..85b04af Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawArc.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestDrawArcNegative.png b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawArcNegative.png new file mode 100644 index 0000000..6fb9fa8 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawArcNegative.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestDrawCubicCurve.png b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawCubicCurve.png new file mode 100644 index 0000000..7cff371 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawCubicCurve.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestDrawImage.png b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawImage.png new file mode 100644 index 0000000..c1b377d Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestDrawImage.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestFillString.png b/vendor/github.com/llgcode/draw2d/resource/result/TestFillString.png new file mode 100644 index 0000000..547f4a7 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestFillString.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestFillStroke.png b/vendor/github.com/llgcode/draw2d/resource/result/TestFillStroke.png new file mode 100644 index 0000000..3582b64 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestFillStroke.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestFillStyle.png b/vendor/github.com/llgcode/draw2d/resource/result/TestFillStyle.png new file mode 100644 index 0000000..ad23dda Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestFillStyle.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestGopher.png b/vendor/github.com/llgcode/draw2d/resource/result/TestGopher.png new file mode 100644 index 0000000..aac6491 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestGopher.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestLineCap.png b/vendor/github.com/llgcode/draw2d/resource/result/TestLineCap.png new file mode 100644 index 0000000..0474d91 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestLineCap.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestLineJoin.png b/vendor/github.com/llgcode/draw2d/resource/result/TestLineJoin.png new file mode 100644 index 0000000..f6605e5 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestLineJoin.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestMultiSegmentCaps.png b/vendor/github.com/llgcode/draw2d/resource/result/TestMultiSegmentCaps.png new file mode 100644 index 0000000..1ac6698 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestMultiSegmentCaps.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestPath.png b/vendor/github.com/llgcode/draw2d/resource/result/TestPath.png new file mode 100644 index 0000000..d961ad2 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestPath.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestPathTransform.png b/vendor/github.com/llgcode/draw2d/resource/result/TestPathTransform.png new file mode 100644 index 0000000..45bf578 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestPathTransform.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestRoundRectangle.png b/vendor/github.com/llgcode/draw2d/resource/result/TestRoundRectangle.png new file mode 100644 index 0000000..9b5ef12 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestRoundRectangle.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestStar.png b/vendor/github.com/llgcode/draw2d/resource/result/TestStar.png new file mode 100644 index 0000000..65c7ec7 Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestStar.png differ diff --git a/vendor/github.com/llgcode/draw2d/resource/result/TestTransform.png b/vendor/github.com/llgcode/draw2d/resource/result/TestTransform.png new file mode 100644 index 0000000..7cd821b Binary files /dev/null and b/vendor/github.com/llgcode/draw2d/resource/result/TestTransform.png differ diff --git a/vendor/github.com/llgcode/draw2d/samples/README.md b/vendor/github.com/llgcode/draw2d/samples/README.md new file mode 100644 index 0000000..8eae2c2 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/README.md @@ -0,0 +1,88 @@ +draw2d samples +============== + +Various samples for using draw2d + +Using the image backend +----------------------- + +The following Go code draws the android sample on a png image: + +``` +import ( + "image" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/samples/android" +) + +function main(){} + // Initialize the graphic context on an RGBA image + dest := image.NewRGBA(image.Rect(0, 0, 297, 210.0)) + gc := draw2dimg.NewGraphicContext(dest) + // Draw Android logo + fn, err := android.Main(gc, "png") + if err != nil { + t.Errorf("Drawing %q failed: %v", fn, err) + return + } + // Save to png + err = draw2d.SaveToPngFile(fn, dest) + if err != nil { + t.Errorf("Saving %q failed: %v", fn, err) + } +} +``` + +Using the pdf backend +--------------------- + +The following Go code draws the android sample on a pdf document: + +``` +import ( + "image" + + "github.com/llgcode/draw2d/draw2dpdf" + "github.com/llgcode/draw2d/samples/android" +) + +function main(){} + // Initialize the graphic context on a pdf document + dest := draw2dpdf.NewPdf("L", "mm", "A4") + gc := draw2dpdf.NewGraphicContext(dest) + // Draw Android logo + fn, err := android.Main(gc, "png") + if err != nil { + t.Errorf("Drawing %q failed: %v", fn, err) + return + } + // Save to pdf + err = draw2dpdf.SaveToPdfFile(fn, dest) + if err != nil { + t.Errorf("Saving %q failed: %v", fn, err) + } +} +``` + +Testing +------- + +These samples are run as tests from the root package folder `draw2d` by: +``` +go test ./... +``` +Or if you want to run with test coverage: +``` +go test -cover ./... | grep -v "no test" +``` +The following files are responsible to run the image tests: +``` +draw2d/test_test.go +draw2d/samples_test.go +``` +The following files are responsible to run the pdf tests: +``` +draw2d/pdf/test_test.go +draw2dpdf/samples_test.go +``` diff --git a/vendor/github.com/llgcode/draw2d/samples/android/android.go b/vendor/github.com/llgcode/draw2d/samples/android/android.go new file mode 100644 index 0000000..3d96c88 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/android/android.go @@ -0,0 +1,76 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +// Package android draws an android avatar. +package android + +import ( + "image/color" + "math" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dkit" + "github.com/llgcode/draw2d/samples" +) + +// Main draws a droid and returns the filename. This should only be +// used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + // Draw the droid + Draw(gc, 65, 0) + + // Return the output filename + return samples.Output("android", ext), nil +} + +// Draw the droid on a certain position. +func Draw(gc draw2d.GraphicContext, x, y float64) { + // set the fill and stroke color of the droid + gc.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff}) + gc.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff}) + + // set line properties + gc.SetLineCap(draw2d.RoundCap) + gc.SetLineWidth(5) + + // head + gc.MoveTo(x+30, y+70) + gc.ArcTo(x+80, y+70, 50, 50, 180*(math.Pi/180), 180*(math.Pi/180)) + gc.Close() + gc.FillStroke() + gc.MoveTo(x+60, y+25) + gc.LineTo(x+50, y+10) + gc.MoveTo(x+100, y+25) + gc.LineTo(x+110, y+10) + gc.Stroke() + + // left eye + draw2dkit.Circle(gc, x+60, y+45, 5) + gc.FillStroke() + + // right eye + draw2dkit.Circle(gc, x+100, y+45, 5) + gc.FillStroke() + + // body + draw2dkit.RoundedRectangle(gc, x+30, y+75, x+30+100, y+75+90, 10, 10) + gc.FillStroke() + draw2dkit.Rectangle(gc, x+30, y+75, x+30+100, y+75+80) + gc.FillStroke() + + // left arm + draw2dkit.RoundedRectangle(gc, x+5, y+80, x+5+20, y+80+70, 10, 10) + gc.FillStroke() + + // right arm + draw2dkit.RoundedRectangle(gc, x+135, y+80, x+135+20, y+80+70, 10, 10) + gc.FillStroke() + + // left leg + draw2dkit.RoundedRectangle(gc, x+50, y+150, x+50+20, y+150+50, 10, 10) + gc.FillStroke() + + // right leg + draw2dkit.RoundedRectangle(gc, x+90, y+150, x+90+20, y+150+50, 10, 10) + gc.FillStroke() +} diff --git a/vendor/github.com/llgcode/draw2d/samples/appengine/app.yaml b/vendor/github.com/llgcode/draw2d/samples/appengine/app.yaml new file mode 100644 index 0000000..361cfca --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/appengine/app.yaml @@ -0,0 +1,8 @@ +application: draw2d-test +version: 1 +runtime: go +api_version: go1 + +handlers: +- url: /.* + script: _go_app \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/samples/appengine/server.go b/vendor/github.com/llgcode/draw2d/samples/appengine/server.go new file mode 100644 index 0000000..ff44895 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/appengine/server.go @@ -0,0 +1,73 @@ +// +build appengine + +// Package gae demonstrates draw2d on a Google appengine server. +package gae + +import ( + "fmt" + "image" + "image/png" + "net/http" + + "github.com/llgcode/draw2d/draw2dimg" + "github.com/llgcode/draw2d/draw2dpdf" + "github.com/llgcode/draw2d/samples/android" + + "appengine" +) + +type appError struct { + Error error + Message string + Code int +} + +type appHandler func(http.ResponseWriter, *http.Request) *appError + +func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + if e := fn(w, r); e != nil { // e is *appError, not os.Error. + c := appengine.NewContext(r) + c.Errorf("%v", e.Error) + http.Error(w, e.Message, e.Code) + } +} + +func init() { + http.Handle("/pdf", appHandler(pdf)) + http.Handle("/png", appHandler(imgPng)) +} + +func pdf(w http.ResponseWriter, r *http.Request) *appError { + w.Header().Set("Content-type", "application/pdf") + + // Initialize the graphic context on an pdf document + dest := draw2dpdf.NewPdf("L", "mm", "A4") + gc := draw2dpdf.NewGraphicContext(dest) + + // Draw sample + android.Draw(gc, 65, 0) + + err := dest.Output(w) + if err != nil { + return &appError{err, fmt.Sprintf("Can't write: %s", err), 500} + } + return nil +} + +func imgPng(w http.ResponseWriter, r *http.Request) *appError { + w.Header().Set("Content-type", "image/png") + + // Initialize the graphic context on an RGBA image + dest := image.NewRGBA(image.Rect(0, 0, 297, 210.0)) + gc := draw2dimg.NewGraphicContext(dest) + + // Draw sample + android.Draw(gc, 65, 0) + + err := png.Encode(w, dest) + if err != nil { + return &appError{err, fmt.Sprintf("Can't encode: %s", err), 500} + } + + return nil +} diff --git a/vendor/github.com/llgcode/draw2d/samples/frameimage/frameimage.go b/vendor/github.com/llgcode/draw2d/samples/frameimage/frameimage.go new file mode 100644 index 0000000..b584db0 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/frameimage/frameimage.go @@ -0,0 +1,60 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff, Stani Michiels + +// Package frameimage centers a png image and rotates it. +package frameimage + +import ( + "math" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dimg" + "github.com/llgcode/draw2d/draw2dkit" + "github.com/llgcode/draw2d/samples" +) + +// Main draws the image frame and returns the filename. +// This should only be used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + // Margin between the image and the frame + const margin = 30 + // Line width od the frame + const lineWidth = 3 + + // Gopher image + gopher := samples.Resource("image", "gopher.png", ext) + + // Draw gopher + err := Draw(gc, gopher, 297, 210, margin, lineWidth) + + // Return the output filename + return samples.Output("frameimage", ext), err +} + +// Draw the image frame with certain parameters. +func Draw(gc draw2d.GraphicContext, png string, + dw, dh, margin, lineWidth float64) error { + // Draw frame + draw2dkit.RoundedRectangle(gc, lineWidth, lineWidth, dw-lineWidth, dh-lineWidth, 100, 100) + gc.SetLineWidth(lineWidth) + gc.FillStroke() + + // load the source image + source, err := draw2dimg.LoadFromPngFile(png) + if err != nil { + return err + } + // Size of source image + sw, sh := float64(source.Bounds().Dx()), float64(source.Bounds().Dy()) + // Draw image to fit in the frame + // TODO Seems to have a transform bug here on draw image + scale := math.Min((dw-margin*2)/sw, (dh-margin*2)/sh) + gc.Save() + gc.Translate((dw-sw*scale)/2, (dh-sh*scale)/2) + gc.Scale(scale, scale) + gc.Rotate(0.2) + + gc.DrawImage(source) + gc.Restore() + return nil +} diff --git a/vendor/github.com/llgcode/draw2d/samples/geometry/geometry.go b/vendor/github.com/llgcode/draw2d/samples/geometry/geometry.go new file mode 100644 index 0000000..99f1731 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/geometry/geometry.go @@ -0,0 +1,334 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +// Package geometry draws some geometric tests. +package geometry + +import ( + "image" + "image/color" + "math" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dkit" + "github.com/llgcode/draw2d/samples" + "github.com/llgcode/draw2d/samples/gopher2" +) + +// Main draws geometry and returns the filename. This should only be +// used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + // Draw the droid + Draw(gc, 297, 210) + + // Return the output filename + return samples.Output("geometry", ext), nil +} + +// Bubble draws a text balloon. +func Bubble(gc draw2d.GraphicContext, x, y, width, height float64) { + sx, sy := width/100, height/100 + gc.MoveTo(x+sx*50, y) + gc.QuadCurveTo(x, y, x, y+sy*37.5) + gc.QuadCurveTo(x, y+sy*75, x+sx*25, y+sy*75) + gc.QuadCurveTo(x+sx*25, y+sy*95, x+sx*5, y+sy*100) + gc.QuadCurveTo(x+sx*35, y+sy*95, x+sx*40, y+sy*75) + gc.QuadCurveTo(x+sx*100, y+sy*75, x+sx*100, y+sy*37.5) + gc.QuadCurveTo(x+sx*100, y, x+sx*50, y) + gc.Stroke() +} + +// CurveRectangle draws a rectangle with bezier curves (not rounded rectangle). +func CurveRectangle(gc draw2d.GraphicContext, x0, y0, + rectWidth, rectHeight float64, stroke, fill color.Color) { + radius := (rectWidth + rectHeight) / 4 + + x1 := x0 + rectWidth + y1 := y0 + rectHeight + if rectWidth/2 < radius { + if rectHeight/2 < radius { + gc.MoveTo(x0, (y0+y1)/2) + gc.CubicCurveTo(x0, y0, x0, y0, (x0+x1)/2, y0) + gc.CubicCurveTo(x1, y0, x1, y0, x1, (y0+y1)/2) + gc.CubicCurveTo(x1, y1, x1, y1, (x1+x0)/2, y1) + gc.CubicCurveTo(x0, y1, x0, y1, x0, (y0+y1)/2) + } else { + gc.MoveTo(x0, y0+radius) + gc.CubicCurveTo(x0, y0, x0, y0, (x0+x1)/2, y0) + gc.CubicCurveTo(x1, y0, x1, y0, x1, y0+radius) + gc.LineTo(x1, y1-radius) + gc.CubicCurveTo(x1, y1, x1, y1, (x1+x0)/2, y1) + gc.CubicCurveTo(x0, y1, x0, y1, x0, y1-radius) + } + } else { + if rectHeight/2 < radius { + gc.MoveTo(x0, (y0+y1)/2) + gc.CubicCurveTo(x0, y0, x0, y0, x0+radius, y0) + gc.LineTo(x1-radius, y0) + gc.CubicCurveTo(x1, y0, x1, y0, x1, (y0+y1)/2) + gc.CubicCurveTo(x1, y1, x1, y1, x1-radius, y1) + gc.LineTo(x0+radius, y1) + gc.CubicCurveTo(x0, y1, x0, y1, x0, (y0+y1)/2) + } else { + gc.MoveTo(x0, y0+radius) + gc.CubicCurveTo(x0, y0, x0, y0, x0+radius, y0) + gc.LineTo(x1-radius, y0) + gc.CubicCurveTo(x1, y0, x1, y0, x1, y0+radius) + gc.LineTo(x1, y1-radius) + gc.CubicCurveTo(x1, y1, x1, y1, x1-radius, y1) + gc.LineTo(x0+radius, y1) + gc.CubicCurveTo(x0, y1, x0, y1, x0, y1-radius) + } + } + gc.Close() + gc.SetStrokeColor(stroke) + gc.SetFillColor(fill) + gc.SetLineWidth(10.0) + gc.FillStroke() +} + +// Dash draws a line with a dash pattern +func Dash(gc draw2d.GraphicContext, x, y, width, height float64) { + sx, sy := width/162, height/205 + gc.SetStrokeColor(image.Black) + gc.SetLineDash([]float64{height / 10, height / 50, height / 50, height / 50}, -50.0) + gc.SetLineCap(draw2d.ButtCap) + gc.SetLineJoin(draw2d.RoundJoin) + gc.SetLineWidth(height / 50) + + gc.MoveTo(x+sx*60.0, y) + gc.LineTo(x+sx*60.0, y) + gc.LineTo(x+sx*162, y+sy*205) + rLineTo(gc, sx*-102.4, 0) + gc.CubicCurveTo(x+sx*-17, y+sy*205, x+sx*-17, y+sy*103, x+sx*60.0, y+sy*103.0) + gc.Stroke() + gc.SetLineDash(nil, 0.0) +} + +// Arc draws an arc with a positive angle (clockwise) +func Arc(gc draw2d.GraphicContext, xc, yc, width, height float64) { + // draw an arc + xc += width / 2 + yc += height / 2 + radiusX, radiusY := width/2, height/2 + startAngle := 45 * (math.Pi / 180.0) /* angles are specified */ + angle := 135 * (math.Pi / 180.0) /* clockwise in radians */ + gc.SetLineWidth(width / 10) + gc.SetLineCap(draw2d.ButtCap) + gc.SetStrokeColor(image.Black) + gc.MoveTo(xc+math.Cos(startAngle)*radiusX, yc+math.Sin(startAngle)*radiusY) + gc.ArcTo(xc, yc, radiusX, radiusY, startAngle, angle) + gc.Stroke() + + // fill a circle + gc.SetStrokeColor(color.NRGBA{255, 0x33, 0x33, 0x80}) + gc.SetFillColor(color.NRGBA{255, 0x33, 0x33, 0x80}) + gc.SetLineWidth(width / 20) + + gc.MoveTo(xc+math.Cos(startAngle)*radiusX, yc+math.Sin(startAngle)*radiusY) + gc.LineTo(xc, yc) + gc.LineTo(xc-radiusX, yc) + gc.Stroke() + + gc.MoveTo(xc, yc) + gc.ArcTo(xc, yc, width/10.0, height/10.0, 0, 2*math.Pi) + gc.Fill() +} + +// ArcNegative draws an arc with a negative angle (anti clockwise). +func ArcNegative(gc draw2d.GraphicContext, xc, yc, width, height float64) { + xc += width / 2 + yc += height / 2 + radiusX, radiusY := width/2, height/2 + startAngle := 45.0 * (math.Pi / 180.0) /* angles are specified */ + angle := -225 * (math.Pi / 180.0) /* clockwise in radians */ + gc.SetLineWidth(width / 10) + gc.SetLineCap(draw2d.ButtCap) + gc.SetStrokeColor(image.Black) + + gc.ArcTo(xc, yc, radiusX, radiusY, startAngle, angle) + gc.Stroke() + // fill a circle + gc.SetStrokeColor(color.NRGBA{255, 0x33, 0x33, 0x80}) + gc.SetFillColor(color.NRGBA{255, 0x33, 0x33, 0x80}) + gc.SetLineWidth(width / 20) + + gc.MoveTo(xc+math.Cos(startAngle)*radiusX, yc+math.Sin(startAngle)*radiusY) + gc.LineTo(xc, yc) + gc.LineTo(xc-radiusX, yc) + gc.Stroke() + + gc.ArcTo(xc, yc, width/10.0, height/10.0, 0, 2*math.Pi) + gc.Fill() +} + +// CubicCurve draws a cubic curve with its control points. +func CubicCurve(gc draw2d.GraphicContext, x, y, width, height float64) { + sx, sy := width/162, height/205 + x0, y0 := x, y+sy*100.0 + x1, y1 := x+sx*75, y+sy*205 + x2, y2 := x+sx*125, y + x3, y3 := x+sx*205, y+sy*100 + + gc.SetStrokeColor(image.Black) + gc.SetFillColor(color.NRGBA{0xAA, 0xAA, 0xAA, 0xFF}) + gc.SetLineWidth(width / 10) + gc.MoveTo(x0, y0) + gc.CubicCurveTo(x1, y1, x2, y2, x3, y3) + gc.Stroke() + + gc.SetStrokeColor(color.NRGBA{0xFF, 0x33, 0x33, 0x88}) + + gc.SetLineWidth(width / 20) + // draw segment of curve + gc.MoveTo(x0, y0) + gc.LineTo(x1, y1) + gc.LineTo(x2, y2) + gc.LineTo(x3, y3) + gc.Stroke() +} + +// FillString draws a filled and stroked string. +func FillString(gc draw2d.GraphicContext, x, y, width, height float64) { + sx, sy := width/100, height/100 + gc.Save() + gc.SetStrokeColor(image.Black) + gc.SetLineWidth(1) + draw2dkit.RoundedRectangle(gc, x+sx*5, y+sy*5, x+sx*95, y+sy*95, sx*10, sy*10) + gc.FillStroke() + gc.SetFillColor(image.Black) + gc.SetFontSize(height / 6) + gc.Translate(x+sx*6, y+sy*52) + gc.SetFontData(draw2d.FontData{ + Name: "luxi", + Family: draw2d.FontFamilyMono, + Style: draw2d.FontStyleBold | draw2d.FontStyleItalic}) + w := gc.FillString("Hug") + gc.Translate(w+sx, 0) + left, top, right, bottom := gc.GetStringBounds("cou") + gc.SetStrokeColor(color.NRGBA{255, 0x33, 0x33, 0x80}) + draw2dkit.Rectangle(gc, left, top, right, bottom) + gc.SetLineWidth(height / 50) + gc.Stroke() + gc.SetFillColor(color.NRGBA{0x33, 0x33, 0xff, 0xff}) + gc.SetStrokeColor(color.NRGBA{0x33, 0x33, 0xff, 0xff}) + gc.SetLineWidth(height / 100) + gc.StrokeString("Hug") + gc.Restore() +} + +// FillStroke first fills and afterwards strokes a path. +func FillStroke(gc draw2d.GraphicContext, x, y, width, height float64) { + sx, sy := width/210, height/215 + gc.MoveTo(x+sx*113.0, y) + gc.LineTo(x+sx*215.0, y+sy*215) + rLineTo(gc, sx*-100, 0) + gc.CubicCurveTo(x+sx*35, y+sy*215, x+sx*35, y+sy*113, x+sx*113.0, y+sy*113) + gc.Close() + + gc.MoveTo(x+sx*50.0, y) + rLineTo(gc, sx*51.2, sy*51.2) + rLineTo(gc, sx*-51.2, sy*51.2) + rLineTo(gc, sx*-51.2, sy*-51.2) + gc.Close() + + gc.SetLineWidth(width / 20.0) + gc.SetFillColor(color.NRGBA{0, 0, 0xFF, 0xFF}) + gc.SetStrokeColor(image.Black) + gc.FillStroke() +} + +func rLineTo(path draw2d.PathBuilder, x, y float64) { + x0, y0 := path.LastPoint() + path.LineTo(x0+x, y0+y) +} + +// FillStyle demonstrates the difference between even odd and non zero winding rule. +func FillStyle(gc draw2d.GraphicContext, x, y, width, height float64) { + sx, sy := width/232, height/220 + gc.SetLineWidth(width / 40) + + draw2dkit.Rectangle(gc, x+sx*0, y+sy*12, x+sx*232, y+sy*70) + + var wheel1, wheel2 draw2d.Path + wheel1.ArcTo(x+sx*52, y+sy*70, sx*40, sy*40, 0, 2*math.Pi) + wheel2.ArcTo(x+sx*180, y+sy*70, sx*40, sy*40, 0, -2*math.Pi) + + gc.SetFillRule(draw2d.FillRuleEvenOdd) + gc.SetFillColor(color.NRGBA{0, 0xB2, 0, 0xFF}) + + gc.SetStrokeColor(image.Black) + gc.FillStroke(&wheel1, &wheel2) + + draw2dkit.Rectangle(gc, x, y+sy*140, x+sx*232, y+sy*198) + wheel1.Clear() + wheel1.ArcTo(x+sx*52, y+sy*198, sx*40, sy*40, 0, 2*math.Pi) + wheel2.Clear() + wheel2.ArcTo(x+sx*180, y+sy*198, sx*40, sy*40, 0, -2*math.Pi) + + gc.SetFillRule(draw2d.FillRuleWinding) + gc.SetFillColor(color.NRGBA{0, 0, 0xE5, 0xFF}) + gc.FillStroke(&wheel1, &wheel2) +} + +// PathTransform scales a path differently in horizontal and vertical direction. +func PathTransform(gc draw2d.GraphicContext, x, y, width, height float64) { + gc.Save() + gc.SetLineWidth(width / 10) + gc.Translate(x+width/2, y+height/2) + gc.Scale(1, 4) + gc.ArcTo(0, 0, width/8, height/8, 0, math.Pi*2) + gc.Close() + gc.Stroke() + gc.Restore() +} + +// Star draws many lines from a center. +func Star(gc draw2d.GraphicContext, x, y, width, height float64) { + gc.Save() + gc.Translate(x+width/2, y+height/2) + gc.SetLineWidth(width / 40) + for i := 0.0; i < 360; i = i + 10 { // Go from 0 to 360 degrees in 10 degree steps + gc.Save() // Keep rotations temporary + gc.Rotate(i * (math.Pi / 180.0)) // Rotate by degrees on stack from 'for' + gc.MoveTo(0, 0) + gc.LineTo(width/2, 0) + gc.Stroke() + gc.Restore() + } + gc.Restore() +} + +// Draw all figures in a nice 4x3 grid. +func Draw(gc draw2d.GraphicContext, width, height float64) { + mx, my := width*0.025, height*0.025 // margin + dx, dy := (width-2*mx)/4, (height-2*my)/3 + w, h := dx-2*mx, dy-2*my + x0, y := 2*mx, 2*my + x := x0 + Bubble(gc, x, y, w, h) + x += dx + CurveRectangle(gc, x, y, w, h, color.NRGBA{0x80, 0, 0, 0x80}, color.NRGBA{0x80, 0x80, 0xFF, 0xFF}) + x += dx + Dash(gc, x, y, w, h) + x += dx + Arc(gc, x, y, w, h) + x = x0 + y += dy + ArcNegative(gc, x, y, w, h) + x += dx + CubicCurve(gc, x, y, w, h) + x += dx + FillString(gc, x, y, w, h) + x += dx + FillStroke(gc, x, y, w, h) + x = x0 + y += dy + FillStyle(gc, x, y, w, h) + x += dx + PathTransform(gc, x, y, w, h) + x += dx + Star(gc, x, y, w, h) + x += dx + gopher2.Draw(gc, x, y, w, h/2) +} diff --git a/vendor/github.com/llgcode/draw2d/samples/gopher/gopher.go b/vendor/github.com/llgcode/draw2d/samples/gopher/gopher.go new file mode 100644 index 0000000..f24bf6f --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/gopher/gopher.go @@ -0,0 +1,73 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +// Package gopher draws a gopher avatar based on a svg of: +// https://github.com/golang-samples/gopher-vector/ +package gopher + +import ( + "image/color" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/samples" +) + +// Main draws a left hand and ear of a gopher. Afterwards it returns +// the filename. This should only be used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + gc.Save() + gc.Scale(0.5, 0.5) + // Draw a (partial) gopher + Draw(gc) + gc.Restore() + + // Return the output filename + return samples.Output("gopher", ext), nil +} + +// Draw a left hand and ear of a gopher using a gc thanks to +// https://github.com/golang-samples/gopher-vector/ +func Draw(gc draw2d.GraphicContext) { + // Initialize Stroke Attribute + gc.SetLineWidth(3) + gc.SetLineCap(draw2d.RoundCap) + gc.SetStrokeColor(color.Black) + + // Left hand + // + gc.SetFillColor(color.RGBA{0xF6, 0xD2, 0xA2, 0xff}) + gc.MoveTo(10.634, 300.493) + rCubicCurveTo(gc, 0.764, 15.751, 16.499, 8.463, 23.626, 3.539) + rCubicCurveTo(gc, 6.765, -4.675, 8.743, -0.789, 9.337, -10.015) + rCubicCurveTo(gc, 0.389, -6.064, 1.088, -12.128, 0.744, -18.216) + rCubicCurveTo(gc, -10.23, -0.927, -21.357, 1.509, -29.744, 7.602) + gc.CubicCurveTo(10.277, 286.542, 2.177, 296.561, 10.634, 300.493) + gc.FillStroke() + + // + gc.MoveTo(10.634, 300.493) + rCubicCurveTo(gc, 2.29, -0.852, 4.717, -1.457, 6.271, -3.528) + gc.Stroke() + + // Left Ear + // + gc.MoveTo(46.997, 112.853) + gc.CubicCurveTo(-13.3, 95.897, 31.536, 19.189, 79.956, 50.74) + gc.LineTo(46.997, 112.853) + gc.Close() + gc.Stroke() +} + +func rQuadCurveTo(path draw2d.PathBuilder, dcx, dcy, dx, dy float64) { + x, y := path.LastPoint() + path.QuadCurveTo(x+dcx, y+dcy, x+dx, y+dy) +} + +func rCubicCurveTo(path draw2d.PathBuilder, dcx1, dcy1, dcx2, dcy2, dx, dy float64) { + x, y := path.LastPoint() + path.CubicCurveTo(x+dcx1, y+dcy1, x+dcx2, y+dcy2, x+dx, y+dy) +} diff --git a/vendor/github.com/llgcode/draw2d/samples/gopher2/gopher2.go b/vendor/github.com/llgcode/draw2d/samples/gopher2/gopher2.go new file mode 100644 index 0000000..3327cb4 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/gopher2/gopher2.go @@ -0,0 +1,122 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +// Package gopher2 draws a gopher avatar based on a svg of: +// https://github.com/golang-samples/gopher-vector/ +package gopher2 + +import ( + "image" + "image/color" + "math" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dkit" + "github.com/llgcode/draw2d/samples" +) + +// Main draws a rotated face of the gopher. Afterwards it returns +// the filename. This should only be used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + gc.SetStrokeColor(image.Black) + gc.SetFillColor(image.White) + gc.Save() + // Draw a (partial) gopher + gc.Translate(-60, 65) + gc.Rotate(-30 * (math.Pi / 180.0)) + Draw(gc, 48, 48, 240, 72) + gc.Restore() + + // Return the output filename + return samples.Output("gopher2", ext), nil +} + +// Draw a gopher head (not rotated) +func Draw(gc draw2d.GraphicContext, x, y, w, h float64) { + h23 := (h * 2) / 3 + + blf := color.RGBA{0, 0, 0, 0xff} // black + wf := color.RGBA{0xff, 0xff, 0xff, 0xff} // white + nf := color.RGBA{0x8B, 0x45, 0x13, 0xff} // brown opaque + brf := color.RGBA{0x8B, 0x45, 0x13, 0x99} // brown transparant + brb := color.RGBA{0x8B, 0x45, 0x13, 0xBB} // brown transparant + + // round head top + gc.MoveTo(x, y+h*1.002) + gc.CubicCurveTo(x+w/4, y-h/3, x+3*w/4, y-h/3, x+w, y+h*1.002) + gc.Close() + gc.SetFillColor(brb) + gc.Fill() + + // rectangle head bottom + draw2dkit.RoundedRectangle(gc, x, y+h, x+w, y+h+h, h/5, h/5) + gc.Fill() + + // left ear outside + draw2dkit.Circle(gc, x, y+h, w/12) + gc.SetFillColor(brf) + gc.Fill() + + // left ear inside + draw2dkit.Circle(gc, x, y+h, 0.5*w/12) + gc.SetFillColor(nf) + gc.Fill() + + // right ear outside + draw2dkit.Circle(gc, x+w, y+h, w/12) + gc.SetFillColor(brf) + gc.Fill() + + // right ear inside + draw2dkit.Circle(gc, x+w, y+h, 0.5*w/12) + gc.SetFillColor(nf) + gc.Fill() + + // left eye outside white + draw2dkit.Circle(gc, x+w/3, y+h23, w/9) + gc.SetFillColor(wf) + gc.Fill() + + // left eye black + draw2dkit.Circle(gc, x+w/3+w/24, y+h23, 0.5*w/9) + gc.SetFillColor(blf) + gc.Fill() + + // left eye inside white + draw2dkit.Circle(gc, x+w/3+w/24+w/48, y+h23, 0.2*w/9) + gc.SetFillColor(wf) + gc.Fill() + + // right eye outside white + draw2dkit.Circle(gc, x+w-w/3, y+h23, w/9) + gc.Fill() + + // right eye black + draw2dkit.Circle(gc, x+w-w/3+w/24, y+h23, 0.5*w/9) + gc.SetFillColor(blf) + gc.Fill() + + // right eye inside white + draw2dkit.Circle(gc, x+w-(w/3)+w/24+w/48, y+h23, 0.2*w/9) + gc.SetFillColor(wf) + gc.Fill() + + // left tooth + gc.SetFillColor(wf) + draw2dkit.RoundedRectangle(gc, x+w/2-w/8, y+h+h/2.5, x+w/2-w/8+w/8, y+h+h/2.5+w/6, w/10, w/10) + gc.Fill() + + // right tooth + draw2dkit.RoundedRectangle(gc, x+w/2, y+h+h/2.5, x+w/2+w/8, y+h+h/2.5+w/6, w/10, w/10) + gc.Fill() + + // snout + draw2dkit.Ellipse(gc, x+(w/2), y+h+h/2.5, w/6, w/12) + gc.SetFillColor(nf) + gc.Fill() + + // nose + draw2dkit.Ellipse(gc, x+(w/2), y+h+h/7, w/10, w/12) + gc.SetFillColor(blf) + gc.Fill() +} diff --git a/vendor/github.com/llgcode/draw2d/samples/helloworld/helloworld.go b/vendor/github.com/llgcode/draw2d/samples/helloworld/helloworld.go new file mode 100644 index 0000000..af5b47e --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/helloworld/helloworld.go @@ -0,0 +1,40 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff, Stani Michiels + +// Package helloworld displays multiple "Hello World" (one rotated) +// in a rounded rectangle. +package helloworld + +import ( + "fmt" + "image" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dkit" + "github.com/llgcode/draw2d/samples" +) + +// Main draws "Hello World" and returns the filename. This should only be +// used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + // Draw hello world + Draw(gc, fmt.Sprintf("Hello World %d dpi", gc.GetDPI())) + + // Return the output filename + return samples.Output("helloworld", ext), nil +} + +// Draw "Hello World" +func Draw(gc draw2d.GraphicContext, text string) { + // Draw a rounded rectangle using default colors + draw2dkit.RoundedRectangle(gc, 5, 5, 135, 95, 10, 10) + gc.FillStroke() + + // Set the font luximbi.ttf + gc.SetFontData(draw2d.FontData{Name: "luxi", Family: draw2d.FontFamilyMono, Style: draw2d.FontStyleBold | draw2d.FontStyleItalic}) + // Set the fill text color to black + gc.SetFillColor(image.Black) + gc.SetFontSize(14) + // Display Hello World + gc.FillStringAt("Hello World", 8, 52) +} diff --git a/vendor/github.com/llgcode/draw2d/samples/helloworldgl/helloworldgl.go b/vendor/github.com/llgcode/draw2d/samples/helloworldgl/helloworldgl.go new file mode 100644 index 0000000..be89db5 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/helloworldgl/helloworldgl.go @@ -0,0 +1,119 @@ +// Open an OpenGl window and display a rectangle using a OpenGl GraphicContext +package main + +import ( + "image/color" + "log" + "runtime" + + "github.com/go-gl/gl/v2.1/gl" + "github.com/go-gl/glfw/v3.1/glfw" + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dgl" + "github.com/llgcode/draw2d/draw2dkit" +) + +var ( + // global rotation + rotate int + width, height int + redraw = true + font draw2d.FontData +) + +func reshape(window *glfw.Window, w, h int) { + gl.ClearColor(1, 1, 1, 1) + /* Establish viewing area to cover entire window. */ + gl.Viewport(0, 0, int32(w), int32(h)) + /* PROJECTION Matrix mode. */ + gl.MatrixMode(gl.PROJECTION) + /* Reset project matrix. */ + gl.LoadIdentity() + /* Map abstract coords directly to window coords. */ + gl.Ortho(0, float64(w), 0, float64(h), -1, 1) + /* Invert Y axis so increasing Y goes down. */ + gl.Scalef(1, -1, 1) + /* Shift origin up to upper-left corner. */ + gl.Translatef(0, float32(-h), 0) + gl.Enable(gl.BLEND) + gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) + gl.Disable(gl.DEPTH_TEST) + width, height = w, h + redraw = true +} + +// Ask to refresh +func invalidate() { + redraw = true +} + +func display() { + gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) + + gl.LineWidth(1) + gc := draw2dgl.NewGraphicContext(width, height) + gc.SetFontData(draw2d.FontData{ + Name: "luxi", + Family: draw2d.FontFamilyMono, + Style: draw2d.FontStyleBold | draw2d.FontStyleItalic}) + + gc.BeginPath() + draw2dkit.RoundedRectangle(gc, 200, 200, 600, 600, 100, 100) + + gc.SetFillColor(color.RGBA{0, 0, 0, 0xff}) + gc.Fill() + + gl.Flush() /* Single buffered, so needs a flush. */ +} + +func init() { + runtime.LockOSThread() +} + +func main() { + err := glfw.Init() + if err != nil { + panic(err) + } + defer glfw.Terminate() + width, height = 800, 800 + window, err := glfw.CreateWindow(width, height, "Show RoundedRect", nil, nil) + if err != nil { + panic(err) + } + + window.MakeContextCurrent() + window.SetSizeCallback(reshape) + window.SetKeyCallback(onKey) + window.SetCharCallback(onChar) + + glfw.SwapInterval(1) + + err = gl.Init() + if err != nil { + panic(err) + } + + reshape(window, width, height) + for !window.ShouldClose() { + if redraw { + display() + window.SwapBuffers() + redraw = false + } + glfw.PollEvents() + // time.Sleep(2 * time.Second) + } +} + +func onChar(w *glfw.Window, char rune) { + log.Println(char) +} + +func onKey(w *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) { + switch { + case key == glfw.KeyEscape && action == glfw.Press, + key == glfw.KeyQ && action == glfw.Press: + w.SetShouldClose(true) + } +} diff --git a/vendor/github.com/llgcode/draw2d/samples/line/line.go b/vendor/github.com/llgcode/draw2d/samples/line/line.go new file mode 100644 index 0000000..f106cc4 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/line/line.go @@ -0,0 +1,39 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff, Stani Michiels + +// Package line draws vertically spaced lines. +package line + +import ( + "image/color" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dkit" + "github.com/llgcode/draw2d/samples" +) + +// Main draws vertically spaced lines and returns the filename. +// This should only be used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + gc.SetFillRule(draw2d.FillRuleWinding) + gc.Clear() + // Draw the line + for x := 5.0; x < 297; x += 10 { + Draw(gc, x, 0, x, 210) + } + gc.ClearRect(100, 75, 197, 135) + draw2dkit.Ellipse(gc, 148.5, 105, 35, 25) + gc.SetFillColor(color.RGBA{0xff, 0xff, 0x44, 0xff}) + gc.FillStroke() + + // Return the output filename + return samples.Output("line", ext), nil +} + +// Draw vertically spaced lines +func Draw(gc draw2d.GraphicContext, x0, y0, x1, y1 float64) { + // Draw a line + gc.MoveTo(x0, y0) + gc.LineTo(x1, y1) + gc.Stroke() +} diff --git a/vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go b/vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go new file mode 100644 index 0000000..38e80e8 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go @@ -0,0 +1,52 @@ +// Copyright 2010 The draw2d Authors. All rights reserved. +// created: 21/11/2010 by Laurent Le Goff + +// Package linecapjoin demonstrates the different line caps and joins. +package linecapjoin + +import ( + "image/color" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/samples" +) + +// Main draws the different line caps and joins. +// This should only be used during testing. +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + // Draw the line + const offset = 75.0 + x := 35.0 + caps := []draw2d.LineCap{draw2d.ButtCap, draw2d.SquareCap, draw2d.RoundCap} + joins := []draw2d.LineJoin{draw2d.BevelJoin, draw2d.MiterJoin, draw2d.RoundJoin} + for i := range caps { + Draw(gc, caps[i], joins[i], x, 50, x, 160, offset) + x += offset + } + + // Return the output filename + return samples.Output("linecapjoin", ext), nil +} + +// Draw a line with an angle with specified line cap and join +func Draw(gc draw2d.GraphicContext, cap draw2d.LineCap, join draw2d.LineJoin, + x0, y0, x1, y1, offset float64) { + gc.SetLineCap(cap) + gc.SetLineJoin(join) + + // Draw thick line + gc.SetStrokeColor(color.NRGBA{0x33, 0x33, 0x33, 0xFF}) + gc.SetLineWidth(30.0) + gc.MoveTo(x0, y0) + gc.LineTo((x0+x1)/2+offset, (y0+y1)/2) + gc.LineTo(x1, y1) + gc.Stroke() + + // Draw thin helping line + gc.SetStrokeColor(color.NRGBA{0xFF, 0x33, 0x33, 0xFF}) + gc.SetLineWidth(2.56) + gc.MoveTo(x0, y0) + gc.LineTo((x0+x1)/2+offset, (y0+y1)/2) + gc.LineTo(x1, y1) + gc.Stroke() +} diff --git a/vendor/github.com/llgcode/draw2d/samples/postscript/postscript.go b/vendor/github.com/llgcode/draw2d/samples/postscript/postscript.go new file mode 100644 index 0000000..f1d88c1 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/postscript/postscript.go @@ -0,0 +1,49 @@ +// Package postscript reads the tiger.ps file and draws it to a backend. +package postscript + +import ( + "io/ioutil" + "os" + "strings" + + "github.com/llgcode/ps" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/samples" +) + +// Main draws the tiger +func Main(gc draw2d.GraphicContext, ext string) (string, error) { + gc.Save() + + // flip the image + gc.Translate(0, 200) + gc.Scale(0.35, -0.35) + gc.Translate(70, -200) + + // Tiger postscript drawing + tiger := samples.Resource("image", "tiger.ps", ext) + + // Draw tiger + Draw(gc, tiger) + gc.Restore() + + // Return the output filename + return samples.Output("postscript", ext), nil +} + +// Draw a tiger +func Draw(gc draw2d.GraphicContext, filename string) { + // Open the postscript + src, err := os.OpenFile(filename, 0, 0) + if err != nil { + panic(err) + } + defer src.Close() + bytes, err := ioutil.ReadAll(src) + reader := strings.NewReader(string(bytes)) + + // Initialize and interpret the postscript + interpreter := ps.NewInterpreter(gc) + interpreter.Execute(reader) +} diff --git a/vendor/github.com/llgcode/draw2d/samples/postscriptgl/postscriptgl.go b/vendor/github.com/llgcode/draw2d/samples/postscriptgl/postscriptgl.go new file mode 100644 index 0000000..9e75adb --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/postscriptgl/postscriptgl.go @@ -0,0 +1,114 @@ +// Open a OpenGL window and display a tiger interpreting a postscript file +package main + +import ( + "io/ioutil" + "log" + "math" + "os" + "runtime" + "strings" + "time" + + "github.com/go-gl/gl/v2.1/gl" + "github.com/go-gl/glfw/v3.1/glfw" + "github.com/llgcode/draw2d/draw2dgl" + "github.com/llgcode/ps" +) + +var postscriptContent string + +var ( + width, height int + rotate int + window *glfw.Window +) + +func reshape(window *glfw.Window, w, h int) { + gl.ClearColor(1, 1, 1, 1) + //fmt.Println(gl.GetString(gl.EXTENSIONS)) + gl.Viewport(0, 0, int32(w), int32(h)) /* Establish viewing area to cover entire window. */ + gl.MatrixMode(gl.PROJECTION) /* Start modifying the projection matrix. */ + gl.LoadIdentity() /* Reset project matrix. */ + gl.Ortho(0, float64(w), 0, float64(h), -1, 1) /* Map abstract coords directly to window coords. */ + gl.Scalef(1, -1, 1) /* Invert Y axis so increasing Y goes down. */ + gl.Translatef(0, float32(-h), 0) /* Shift origin up to upper-left corner. */ + gl.Enable(gl.BLEND) + gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) + gl.Disable(gl.DEPTH_TEST) + width, height = w, h +} + +func display() { + + gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) + + lastTime := time.Now() + gl.LineWidth(1) + gc := draw2dgl.NewGraphicContext(width, height) + + gc.Translate(380, 400) + gc.Scale(1, -1) + rotate = (rotate + 1) % 360 + gc.Rotate(float64(rotate) * math.Pi / 180) + gc.Translate(-380, -400) + + interpreter := ps.NewInterpreter(gc) + reader := strings.NewReader(postscriptContent) + + interpreter.Execute(reader) + dt := time.Now().Sub(lastTime) + log.Printf("Redraw in : %f ms\n", float64(dt)*1e-6) + gl.Flush() /* Single buffered, so needs a flush. */ +} + +func main() { + src, err := os.OpenFile("tiger.ps", 0, 0) + if err != nil { + log.Println("can't find postscript file.") + return + } + defer src.Close() + bytes, err := ioutil.ReadAll(src) + postscriptContent = string(bytes) + err = glfw.Init() + if err != nil { + panic(err) + } + defer glfw.Terminate() + + window, err = glfw.CreateWindow(800, 800, "Show Tiger in OpenGL", nil, nil) + if err != nil { + panic(err) + } + + window.MakeContextCurrent() + window.SetSizeCallback(reshape) + window.SetKeyCallback(onKey) + + glfw.SwapInterval(1) + + err = gl.Init() + if err != nil { + panic(err) + } + reshape(window, 800, 800) + for !window.ShouldClose() { + display() + window.SwapBuffers() + glfw.PollEvents() + // time.Sleep(2 * time.Second) + } +} + +func onKey(w *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) { + switch { + case key == glfw.KeyEscape && action == glfw.Press, + key == glfw.KeyQ && action == glfw.Press: + w.SetShouldClose(true) + } +} + +func init() { + runtime.LockOSThread() +} diff --git a/vendor/github.com/llgcode/draw2d/samples/postscriptgl/tiger.ps b/vendor/github.com/llgcode/draw2d/samples/postscriptgl/tiger.ps new file mode 100644 index 0000000..24a9dce --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/postscriptgl/tiger.ps @@ -0,0 +1,2733 @@ +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator: Adobe Illustrator(TM) 1.2d4 +%%For: OpenWindows Version 2 +%%Title: tiger.eps +%%CreationDate: 4/12/90 3:20 AM +%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0 +%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0 +%%BoundingBox: 22 171 567 738 +%%EndComments + +%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0 + +/Adobe_Illustrator_1.2d1 dup 100 dict def load begin +% definition operators +/bdef {bind def} bind def +/ldef {load def} bdef +/xdef {exch def} bdef +% graphic state operators +/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef +/_k /setcmybcolor where { + /setcmybcolor get +} { + { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind +} ifelse def +/g {/_b xdef /p {_b setgray} def} bdef +/G {/_B xdef /P {_B setgray} def} bdef +/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef +/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef +/d /setdash ldef +/_i currentflat def +/i {dup 0 eq {pop _i} if setflat} bdef +/j /setlinejoin ldef +/J /setlinecap ldef +/M /setmiterlimit ldef +/w /setlinewidth ldef +% path construction operators +/_R {.25 sub round .25 add} bdef +/_r {transform _R exch _R exch itransform} bdef +/c {_r curveto} bdef +/C /c ldef +/v {currentpoint 6 2 roll _r curveto} bdef +/V /v ldef +/y {_r 2 copy curveto} bdef +/Y /y ldef +/l {_r lineto} bdef +/L /l ldef +/m {_r moveto} bdef +% path painting operators +/n /newpath ldef +/N /n ldef +/F {p fill} bdef +/f {closepath F} bdef +/S {P stroke} bdef +/s {closepath S} bdef +/B {gsave F grestore S} bdef +/b {closepath B} bdef +end +%%EndProcSet +%%EndProlog + +%%Page: 1 1 + +Adobe_Illustrator_1.2d1 begin + +.8 setgray +clippath fill +-110 -300 translate +1.1 dup scale + +0 g +0 G +0 i +0 J +0 j +0.172 w +10 M +[]0 d +0 0 0 0 k + +177.696 715.715 m +177.797 713.821 176.973 713.84 v +176.149 713.859 159.695 761.934 139.167 759.691 C +156.95 767.044 177.696 715.715 V +b +181.226 718.738 m +180.677 716.922 179.908 717.221 v +179.14 717.519 180.023 768.325 159.957 773.199 C +179.18 774.063 181.226 718.738 V +b +208.716 676.41 m +210.352 675.45 209.882 674.773 v +209.411 674.096 160.237 686.898 150.782 668.541 C +154.461 687.428 208.716 676.41 V +b +205.907 666.199 m +207.763 665.803 207.529 665.012 v +207.296 664.221 156.593 660.879 153.403 640.478 C +150.945 659.563 205.907 666.199 V +b +201.696 671.724 m +203.474 671.061 203.128 670.313 v +202.782 669.565 152.134 673.654 146.002 653.936 C +146.354 673.175 201.696 671.724 V +b +190.991 689.928 m +192.299 688.554 191.66 688.033 v +191.021 687.512 147.278 713.366 133.131 698.324 C +141.872 715.467 190.991 689.928 V +b +183.446 685.737 m +184.902 684.52 184.326 683.929 v +183.75 683.339 137.362 704.078 125.008 687.531 C +131.753 705.553 183.446 685.737 V +b +180.846 681.665 m +182.454 680.657 181.964 679.994 v +181.474 679.331 132.692 693.554 122.709 675.478 C +126.934 694.251 180.846 681.665 V +b +191.58 681.051 m +192.702 679.52 192.001 679.085 v +191.3 678.65 151.231 709.898 135.273 696.793 C +146.138 712.674 191.58 681.051 V +b +171.8 710 m +172.4 708.2 171.6 708 v +170.8 707.8 142.2 749.8 122.999 742.2 C +138.2 754 171.8 710 V +b +172.495 703.021 m +173.47 701.392 172.731 701.025 v +171.993 700.657 135.008 735.501 117.899 723.939 C +130.196 738.739 172.495 703.021 V +b +172.38 698.651 m +173.502 697.12 172.801 696.685 v +172.1 696.251 132.031 727.498 116.073 714.393 C +126.938 730.274 172.38 698.651 V +b +0 J 1 w +170.17 696.935 m +170.673 690.887 171.661 684.318 173.4 681.199 C +169.8 668.799 178.6 655.599 V +178.2 648.399 179.8 645.199 V +183.8 636.799 188.6 635.999 v +192.484 635.352 201.207 632.283 211.068 630.879 c +228.2 616.799 225 603.999 V +224.6 587.599 221 585.999 V +232.6 597.199 223 580.399 V +218.6 561.599 l +244.2 583.199 228.6 564.799 V +218.6 538.799 l +238.2 557.199 231 548.799 V +227.8 539.999 l +271 567.199 240.2 537.599 V +248.2 541.199 252.6 538.399 V +259.4 539.599 258.6 537.999 V +237.8 527.599 234.2 509.199 V +242.6 519.199 239.4 508.399 V +239.8 496.799 l +243.8 518.399 243.4 480.799 V +262.6 498.799 251 477.999 V +251 461.199 l +266.2 477.599 259.8 464.799 V +269.8 473.599 265.8 458.399 V +265 447.999 269.4 459.199 V +285.4 489.799 279.4 463.599 V +278.6 444.399 283.4 459.199 V +283.8 448.799 293 441.599 V +291.8 492.399 304.6 456.399 V +308.6 439.999 l +311.4 449.199 311 454.399 V +325.8 470.799 319 446.399 V +334.2 469.199 331 455.999 V +323.4 439.999 325 435.199 V +341.8 469.999 343 471.599 V +341 429.198 351.8 465.199 V +357.4 453.199 354.6 448.799 V +362.6 456.799 361.8 459.999 V +366.4 468.199 369.2 454.599 V +371 445.199 372.6 448.399 V +376.6 424.398 377.8 447.199 V +379.4 460.799 372.2 472.399 V +373 475.599 370.2 479.599 v +383.8 457.999 376.6 486.799 V +387.801 478.799 389.001 478.799 V +375.4 501.999 384.2 497.199 V +379 507.599 397.001 495.599 V +381 511.599 398.601 501.999 V +406.601 495.599 399.001 505.599 V +384.6 521.599 406.601 503.599 V +418.201 487.199 419.001 484.399 V +409.001 513.599 404.601 516.399 V +413.001 552.799 454.201 537.199 V +461.001 519.999 465.401 538.399 V +478.201 544.799 489.401 517.199 V +493.401 530.799 492.601 533.599 V +499.401 532.399 498.601 533.599 V +511.801 529.199 513.001 529.999 V +519.801 523.199 520.201 526.799 V +529.401 523.999 527.401 527.599 V +536.201 511.999 536.601 508.399 V +539.001 522.399 l +541.001 519.599 l +542.601 527.199 541.801 528.399 v +541.001 529.599 561.801 521.599 566.601 500.799 C +568.601 492.399 l +574.601 507.199 573.001 511.199 V +578.201 510.399 578.601 505.999 V +582.601 529.199 577.801 535.199 V +582.201 535.999 583.401 532.399 V +583.401 539.599 l +590.601 538.799 590.601 541.199 V +595.001 545.199 597.001 540.399 V +584.601 575.599 603.001 556.399 V +610.201 545.599 606.601 564.399 v +603.001 583.199 599.001 584.799 603.801 585.199 C +604.601 588.799 602.601 590.399 v +600.601 591.999 603.801 590.399 y +608.601 586.399 603.401 608.399 V +609.801 606.799 597.801 635.999 V +600.601 638.399 596.601 646.799 V +604.601 642.399 607.401 643.999 V +607.001 645.599 603.801 649.599 V +582.201 704.4 602.601 682.399 V +614.451 668.849 608.051 691.649 V +598.94 715.659 599.717 719.955 V +170.17 696.935 l +b +0.2 0.55 0.85 0 k +599.717 719.755 m +600.345 719.574 602.551 718.45 603.801 716.8 C +610.601 706 605.401 724.4 V +596.201 753.2 605.001 742 V +611.001 734.8 607.801 748.4 v +603.936 764.827 601.401 771.2 y +613.001 766.4 586.201 806 V +595.001 802.4 l +575.401 842 553.801 847.2 V +545.801 853.2 l +584.201 891.2 571.401 928 V +564.601 933.2 555.001 924 V +548.601 919.2 542.601 920.8 V +511.801 919.6 509.801 919.6 v +507.801 919.6 473.001 956.8 407.401 939.2 C +402.201 937.2 397.801 938.4 V +379.4 954.4 330.6 931.6 v +320.6 929.6 319 929.6 v +317.4 929.6 314.6 929.6 306.6 923.2 c +298.6 916.8 298.2 916 296.2 914.4 C +279.8 903.2 275 902.4 V +263.4 896 259 886 V +255.4 884.8 l +253.8 877.6 253.4 876.4 V +248.6 872.8 247.8 867.2 V +239 861.2 239.4 856.8 V +237.8 851.6 237 846.8 V +229.8 842 230.6 839.2 V +223 825.2 224.2 818.4 V +217.8 818.8 215 816.4 V +214.2 811.6 212.6 811.2 V +209.8 810 212.2 806 V +210.6 803.2 210.2 801.6 V +211 798.8 206.6 793.2 V +200.2 774.4 202.2 769.2 V +202.6 764.4 199.8 762.8 V +196.2 763.2 204.6 751.2 V +205.4 750 202.2 747.6 V +185 744 182.6 727.6 V +169 712.8 169 707.6 v +169 705.295 169.271 702.148 169.97 697.535 C +169.4 689.199 197 688.399 v +224.6 687.599 599.717 719.755 Y +b +184.4 697.4 m +159.4 736.8 173.8 680.399 Y +182.6 645.999 312.2 683.599 y +481.001 714 492.201 718 v +503.401 722 598.601 715.6 y +593.001 732.4 L +528.201 778.8 509.001 755.6 495.401 759.6 c +481.801 763.6 484.201 754 481.001 753.2 c +477.801 752.4 438.601 777.2 432.201 776.4 c +425.801 775.6 400.459 799.351 415.401 767.6 c +431.401 733.6 357 728.4 340.2 739.6 c +323.4 750.8 347.4 721.2 Y +365.8 701.2 331.4 718 y +297 730.8 273 705.2 269.8 704.4 c +266.6 703.6 261.8 700.4 261 706.8 c +260.2 713.2 252.69 729.901 221 703.6 c +201 686.999 187.2 709 Y +184.4 697.4 L +f +0.09 0.5 0.772 0 k +433.51 774.654 m +427.11 773.854 401.743 797.593 416.71 765.854 c +433.31 730.654 358.31 726.654 341.51 737.854 c +324.709 749.054 348.71 719.454 Y +367.11 699.454 332.709 716.254 y +298.309 729.054 274.309 703.454 271.109 702.654 c +267.909 701.854 263.109 698.654 262.309 705.054 c +261.509 711.454 254.13 727.988 222.309 701.854 c +201.073 684.508 187.582 705.963 Y +184.382 695.854 L +159.382 735.654 174.454 677.345 Y +183.255 642.944 313.509 681.854 y +482.31 712.254 493.51 716.254 v +504.71 720.254 599.038 713.927 y +593.51 731.236 L +528.71 777.636 510.31 753.854 496.71 757.854 c +483.11 761.854 485.51 752.254 482.31 751.454 c +479.11 750.654 439.91 775.454 433.51 774.654 c +f +0.081 0.45 0.695 0 k +434.819 772.909 m +428.419 772.109 403.685 796.138 418.019 764.109 c +434.219 727.908 359.619 724.908 342.819 736.108 c +326.019 747.308 350.019 717.708 Y +368.419 697.708 334.019 714.508 y +299.619 727.308 275.618 701.708 272.418 700.908 c +269.218 700.108 264.418 696.908 263.618 703.308 c +262.818 709.708 255.57 726.075 223.618 700.108 c +201.145 682.017 187.964 702.926 Y +184.364 694.308 L +160.564 733.308 175.109 674.29 Y +183.909 639.89 314.819 680.108 y +483.619 710.508 494.819 714.508 v +506.019 718.508 599.474 712.254 y +594.02 730.072 L +529.219 776.472 511.619 752.109 498.019 756.109 c +484.419 760.109 486.819 750.509 483.619 749.708 c +480.419 748.908 441.219 773.709 434.819 772.909 c +f +0.072 0.4 0.618 0 k +436.128 771.163 m +429.728 770.363 404.999 794.395 419.328 762.363 c +436.128 724.807 360.394 723.518 344.128 734.363 c +327.328 745.563 351.328 715.963 Y +369.728 695.963 335.328 712.763 y +300.928 725.563 276.928 699.963 273.728 699.163 c +270.528 698.363 265.728 695.163 264.928 701.563 c +264.128 707.963 257.011 724.161 224.927 698.363 c +201.218 679.526 188.345 699.89 Y +184.345 692.763 L +162.545 729.563 175.764 671.235 Y +184.564 636.835 316.128 678.363 y +484.928 708.763 496.129 712.763 v +507.329 716.763 599.911 710.581 y +594.529 728.908 L +529.729 775.309 512.929 750.363 499.329 754.363 c +485.728 758.363 488.128 748.763 484.928 747.963 c +481.728 747.163 442.528 771.963 436.128 771.163 c +f +0.063 0.35 0.54 0 k +437.438 769.417 m +431.037 768.617 406.814 792.871 420.637 760.617 c +437.438 721.417 362.237 721.417 345.437 732.617 c +328.637 743.817 352.637 714.217 Y +371.037 694.217 336.637 711.017 y +302.237 723.817 278.237 698.217 275.037 697.417 c +271.837 696.617 267.037 693.417 266.237 699.817 c +265.437 706.217 258.452 722.248 226.237 696.617 c +201.291 677.035 188.727 696.854 Y +184.327 691.217 L +164.527 726.018 176.418 668.181 Y +185.218 633.78 317.437 676.617 y +486.238 707.017 497.438 711.017 v +508.638 715.017 600.347 708.908 y +595.038 727.745 L +530.238 774.145 514.238 748.617 500.638 752.617 c +487.038 756.617 489.438 747.017 486.238 746.217 c +483.038 745.417 443.838 770.217 437.438 769.417 c +f +0.054 0.3 0.463 0 k +438.747 767.672 m +432.347 766.872 406.383 790.323 421.947 758.872 c +441.147 720.072 363.546 719.672 346.746 730.872 c +329.946 742.072 353.946 712.472 Y +372.346 692.472 337.946 709.272 y +303.546 722.072 279.546 696.472 276.346 695.672 c +273.146 694.872 268.346 691.672 267.546 698.072 c +266.746 704.472 259.892 720.335 227.546 694.872 c +201.364 674.544 189.109 693.817 Y +184.309 689.672 L +166.309 722.872 177.073 665.126 Y +185.873 630.726 318.746 674.872 y +487.547 705.272 498.747 709.272 v +509.947 713.272 600.783 707.236 y +595.547 726.581 L +530.747 772.981 515.547 746.872 501.947 750.872 c +488.347 754.872 490.747 745.272 487.547 744.472 c +484.347 743.672 445.147 768.472 438.747 767.672 c +f +0.045 0.25 0.386 0 k +440.056 765.927 m +433.655 765.127 407.313 788.387 423.255 757.127 c +443.656 717.126 364.855 717.926 348.055 729.126 c +331.255 740.326 355.255 710.726 Y +373.655 690.726 339.255 707.526 y +304.855 720.326 280.855 694.726 277.655 693.926 c +274.455 693.126 269.655 689.926 268.855 696.326 c +268.055 702.726 261.332 718.422 228.855 693.126 c +201.436 672.053 189.491 690.781 Y +184.291 688.126 L +168.291 718.326 177.727 662.071 Y +186.527 627.671 320.055 673.126 y +488.856 703.526 500.056 707.526 v +511.256 711.526 601.22 705.563 y +596.056 725.417 L +531.256 771.817 516.856 745.126 503.256 749.126 c +489.656 753.127 492.056 743.526 488.856 742.726 c +485.656 741.926 446.456 766.727 440.056 765.927 c +f +0.036 0.2 0.309 0 k +441.365 764.181 m +434.965 763.381 407.523 786.056 424.565 755.381 c +446.565 715.781 366.164 716.181 349.364 727.381 c +332.564 738.581 356.564 708.981 Y +374.964 688.981 340.564 705.781 y +306.164 718.581 282.164 692.981 278.964 692.181 c +275.764 691.381 270.964 688.181 270.164 694.581 c +269.364 700.981 262.773 716.508 230.164 691.381 c +201.509 669.562 189.873 687.744 Y +184.273 686.581 L +169.872 714.981 178.382 659.017 Y +187.182 624.616 321.364 671.381 y +490.165 701.781 501.365 705.781 v +512.565 709.781 601.656 703.89 y +596.565 724.254 L +531.765 770.654 518.165 743.381 504.565 747.381 c +490.965 751.381 493.365 741.781 490.165 740.981 c +486.965 740.181 447.765 764.981 441.365 764.181 c +f +0.027 0.15 0.231 0 k +442.674 762.435 m +436.274 761.635 408.832 784.311 425.874 753.635 c +447.874 714.035 367.474 714.435 350.674 725.635 c +333.874 736.835 357.874 707.235 Y +376.274 687.235 341.874 704.035 y +307.473 716.835 283.473 691.235 280.273 690.435 c +277.073 689.635 272.273 686.435 271.473 692.835 c +270.673 699.235 264.214 714.595 231.473 689.635 c +201.582 667.071 190.255 684.707 Y +184.255 685.035 L +170.654 711.436 179.037 655.962 Y +187.837 621.562 322.673 669.635 y +491.474 700.035 502.674 704.035 v +513.874 708.035 602.093 702.217 y +597.075 723.09 L +532.274 769.49 519.474 741.635 505.874 745.635 c +492.274 749.635 494.674 740.035 491.474 739.235 c +488.274 738.435 449.074 763.235 442.674 762.435 c +f +0.018 0.1 0.154 0 k +443.983 760.69 m +437.583 759.89 410.529 782.777 427.183 751.89 c +449.183 711.09 368.783 712.69 351.983 723.89 c +335.183 735.09 359.183 705.49 Y +377.583 685.49 343.183 702.29 y +308.783 715.09 284.783 689.49 281.583 688.69 c +278.382 687.89 273.582 684.69 272.782 691.09 c +271.982 697.49 265.654 712.682 232.782 687.89 c +201.655 664.58 190.637 681.671 Y +184.236 683.49 L +171.236 707.49 179.691 652.907 Y +188.491 618.507 323.983 667.89 y +492.783 698.29 503.983 702.29 v +515.183 706.29 602.529 700.544 y +597.583 721.926 L +532.783 768.327 520.783 739.89 507.183 743.89 c +493.583 747.89 495.983 738.29 492.783 737.49 c +489.583 736.69 450.383 761.49 443.983 760.69 c +f +0.009 0.05 0.077 0 k +445.292 758.945 m +438.892 758.145 412.917 781.589 428.492 750.145 c +449.692 707.344 370.092 710.944 353.292 722.144 c +336.492 733.344 360.492 703.744 Y +378.892 683.744 344.492 700.544 y +310.092 713.344 286.092 687.744 282.892 686.944 c +279.692 686.144 274.892 682.944 274.092 689.344 c +273.292 695.744 267.095 710.768 234.092 686.144 c +201.727 662.089 191.018 678.635 Y +184.218 681.944 L +171.418 705.144 180.346 649.853 Y +189.146 615.453 325.292 666.144 y +494.093 696.544 505.293 700.544 v +516.493 704.544 602.965 698.872 y +598.093 720.763 L +533.292 767.163 522.093 738.144 508.493 742.144 c +494.893 746.145 497.293 736.544 494.093 735.744 c +490.892 734.944 451.692 759.745 445.292 758.945 c +f +1 g +184.2 680.399 m +171.4 702.4 181 646.799 Y +189.8 612.399 326.6 664.399 y +495.401 694.8 506.601 698.8 v +517.801 702.8 603.401 697.2 y +598.601 719.6 L +533.801 766 523.401 736.4 509.801 740.4 c +496.201 744.4 498.601 734.8 495.401 734 c +492.201 733.2 453.001 758 446.601 757.2 c +440.201 756.4 414.981 780.207 429.801 748.4 c +452.028 700.693 369.041 710.773 354.6 720.4 c +337.8 731.6 361.8 702 Y +380.2 681.999 345.8 698.8 y +311.4 711.6 287.4 685.999 284.2 685.199 c +281 684.399 276.2 681.199 275.4 687.599 c +274.6 694 268.535 708.856 235.4 684.399 c +201.8 659.599 191.4 675.599 Y +184.2 680.399 L +f +0 g +225.8 650.399 m +218.6 638.799 239.4 625.599 V +240.8 624.199 222.8 628.399 V +216.6 630.399 215 640.799 V +210.2 645.199 205.4 650.799 v +200.6 656.399 225.8 650.399 y +f +0.8 g +365.8 698 m +383.498 671.179 382.9 666.399 v +381.6 655.999 381.4 646.399 384.6 642.399 c +387.801 638.399 396.601 605.199 y +396.201 603.999 408.601 641.999 V +420.201 657.999 400.201 676.399 V +365 705.2 365.8 698 v +f +0 g +1 J 0.1 w +245.8 623.599 m +257 616.399 242.6 585.199 V +249 587.599 l +248.2 576.399 245 573.999 V +252.2 577.199 l +257 569.199 253 564.399 V +269.8 556.399 269 549.999 V +275.4 557.999 271.4 564.399 v +267.4 570.799 260.2 566.799 261 585.199 C +252.2 581.999 l +257.8 590.799 257.8 597.199 V +249.8 594.799 l +265.269 621.377 254.6 622.799 v +248.6 623.599 245.8 623.599 Y +f +0.8 g +278.2 606.799 m +281 611.199 278.2 610.399 v +275.4 609.599 244.2 594.799 238.2 585.199 C +272.6 609.599 278.2 606.799 V +f +288.6 598.799 m +291.4 603.199 288.6 602.399 v +285.8 601.599 254.6 586.799 248.6 577.199 C +283 601.599 288.6 598.799 V +f +301.8 613.999 m +304.6 618.399 301.8 617.599 v +299 616.799 267.8 601.999 261.8 592.399 C +296.2 616.799 301.8 613.999 V +f +278.6 570.399 m +278.6 576.399 275.8 575.599 v +273 574.799 237 557.199 231 547.599 C +273 573.199 278.6 570.399 V +f +279.8 581.199 m +281 585.999 278.2 585.199 V +276.2 585.199 249.8 573.599 243.8 563.999 C +273.4 585.599 279.8 581.199 V +f +265.4 533.599 m +255.4 525.999 l +265.8 533.599 269.4 532.399 V +262.6 521.199 261.8 515.999 V +272.2 528.799 277.8 528.399 V +285.4 527.999 285.4 517.199 V +291 527.599 294.2 527.199 V +295.4 520.799 294.2 513.999 V +298.2 521.599 302.2 519.999 V +308.6 521.999 307.8 510.399 V +307.8 499.999 307 497.199 V +312.6 523.599 315 523.999 V +323 525.199 327.8 516.399 V +323.8 523.999 328.6 521.999 V +339.4 520.399 342.6 513.599 V +335.8 525.599 341.4 522.399 V +348.2 522.399 349.4 515.999 V +357.8 494.799 359.8 493.199 V +352.2 514.799 353.8 514.799 V +351.8 526.799 357 511.999 V +353.8 525.999 359.4 525.199 v +365 524.399 369.4 514.399 377.8 516.799 C +387.401 511.199 389.401 580.399 V +265.4 533.599 L +f +0 g +0 J 1 w +270.2 626.399 m +285 632.399 325 626.399 V +332.2 625.999 339 634.799 v +345.8 643.599 372.6 650.799 379 648.799 C +388.601 642.399 l +389.401 641.199 l +401.801 630.799 402.201 623.199 v +402.601 615.599 387.801 567.599 378.2 551.599 c +368.6 535.599 359 523.199 339.8 525.599 C +319 529.599 293.4 525.599 v +264.2 527.199 261.4 535.199 v +258.6 543.199 272.6 558.399 y +277 566.799 275.8 581.199 v +274.6 595.599 275 623.599 270.2 626.399 c +f +0.1 0.6 0.45 0 k +292.2 624.399 m +300.6 605.999 271 540.799 y +269 539.199 283.66 533.154 293.8 535.599 c +304.746 538.237 345 533.999 Y +368.6 549.599 381.4 593.999 y +391.801 617.999 374.2 621.199 v +356.6 624.399 292.2 624.399 y +f +0.1 0.6 0.45 0.2 k +290.169 593.503 m +293.495 606.293 295.079 618.094 292.2 624.399 c +354.6 617.999 365.8 638.799 v +370.041 646.674 384.801 615.999 384.4 606.399 c +321.4 591.999 306.6 603.199 V +290.169 593.503 L +f +0.1 0.6 0.45 0.25 k +294.6 577.199 m +296.6 569.999 294.2 565.999 V +292.6 565.199 291.4 564.799 V +292.6 561.199 298.6 559.599 V +300.6 555.199 303 554.799 v +305.4 554.399 310.2 548.799 314.2 549.999 c +318.2 551.199 329.4 555.199 y +335 558.399 343.8 554.799 V +346.175 555.601 346.6 559.599 v +347.1 564.299 350.2 567.999 352.2 569.999 c +354.2 571.999 363.8 584.799 362.6 585.199 c +361.4 585.599 294.6 577.199 Y +f +0 0.55 0.5 0 k +290.2 625.599 m +287.4 603.199 290.6 594.799 v +293.8 586.399 293 584.399 292.2 580.399 c +291.4 576.399 295.8 566.399 301.4 560.399 C +313.4 558.799 l +328.6 562.399 337.8 559.599 V +346.794 558.256 350.2 573.199 V +355 579.599 362.2 582.399 v +369.4 585.199 376.6 626.799 372.6 634.799 c +368.6 642.799 354.2 647.199 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +b +0 0 0.2 0 k +0.5 w +291.8 550.799 m +291 552.799 286.6 553.199 V +264.2 556.799 255.8 569.199 V +249 574.799 253.4 563.199 V +263.8 542.799 270.6 539.999 V +287 535.999 291.8 550.799 V +b +0 0.55 0.5 0.2 k +1 w +371.742 614.771 m +372.401 622.677 374.354 631.291 372.6 634.799 c +366.154 647.693 349.181 642.305 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +288.455 611.636 289.295 601.624 v +326.6 613.199 327.4 607.599 V +329 610.799 338.2 610.799 v +347.4 610.799 370.142 611.971 371.742 614.771 C +f +0 g +0 0.55 0.5 0.35 K +2 w +328.6 624.799 m +333.4 619.999 329.8 610.399 V +315.4 594.399 317.4 580.399 v +S +0 0 0.2 0 k +0 G +0.5 w +280.6 539.999 m +276.2 552.799 285 545.999 V +289.8 543.999 288.6 542.399 v +287.4 540.799 281.8 536.799 280.6 539.999 C +b +285.64 538.799 m +282.12 549.039 289.16 543.599 V +293.581 541.151 292.04 540.719 v +287.48 539.439 292.04 536.879 285.64 538.799 C +b +290.44 538.799 m +286.92 549.039 293.96 543.599 V +298.335 541.289 296.84 540.719 v +293.48 539.439 296.84 536.879 290.44 538.799 C +b +297.04 538.599 m +293.52 548.839 300.56 543.399 V +304.943 541.067 303.441 540.519 v +300.48 539.439 303.441 536.679 297.04 538.599 C +b +303.52 538.679 m +300 548.919 307.041 543.479 V +310.881 541.879 309.921 540.599 v +308.961 539.319 309.921 536.759 303.52 538.679 C +b +310.2 537.999 m +305.4 550.399 314.6 543.999 V +319.4 541.999 318.2 540.399 v +317 538.799 318.2 535.599 310.2 537.999 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +281.8 555.199 m +295 557.999 301 554.799 V +307 553.599 308.2 553.999 v +309.4 554.399 312.6 554.799 y +S +315.8 546.399 m +327.8 559.999 339.8 555.599 v +346.816 553.026 345.8 556.399 346.6 559.199 c +347.4 561.999 347.6 566.199 352.6 569.199 c +S +0 0 0.2 0 k +0 G +0.5 w +333 562.399 m +329 573.199 326.2 560.399 v +323.4 547.599 320.2 543.999 318.6 541.199 C +318.6 535.999 327 536.399 V +337.8 536.799 338.2 539.599 v +338.6 542.399 337 553.999 333 562.399 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +347 555.199 m +350.6 557.599 353 556.399 v +S +353.5 571.599 m +356.4 576.499 361.2 577.299 v +S +0.7 g +0 G +1 w +274.2 534.799 m +292.2 531.599 296.6 533.199 V +305.4 533.199 297 531.199 V +284.2 531.199 276.2 532.399 V +264.6 537.999 274.2 534.799 V +f +0 0 0.2 0 k +0.5 w +288.2 627.999 m +305.8 627.999 307.8 627.199 V +315 596.399 311.4 588.799 V +310.2 585.999 307.4 591.599 V +289 624.399 285.8 626.399 v +282.6 628.399 287 627.999 288.2 627.999 C +b +211.1 630.699 m +220 628.999 232.6 626.399 V +237.4 603.999 240.6 599.199 v +243.8 594.399 240.2 594.399 236.6 597.199 c +233 599.999 218.2 613.999 216.2 618.399 c +214.2 622.799 211.1 630.699 y +b +232.961 626.182 m +238.761 624.634 239.77 622.419 v +240.778 620.205 238.568 616.908 y +237.568 613.603 236.366 615.765 v +235.164 617.928 232.292 625.588 232.961 626.182 c +b +0 g +233 626.399 m +236.6 621.199 240.2 621.199 v +243.8 621.199 244.182 621.612 247 620.999 c +251.6 619.999 251.2 621.999 257.8 620.799 c +260.44 620.319 263 621.199 265.8 619.999 c +268.6 618.799 271.8 619.599 273 621.599 c +274.2 623.599 279 627.799 Y +266.2 625.999 263.4 625.199 V +241 623.999 233 626.399 V +f +0 0 0.2 0 k +277.6 626.199 m +271.15 622.699 270.75 620.299 v +270.35 617.899 276 614.199 y +278.75 609.599 279.35 611.999 v +279.95 614.399 278.4 625.799 277.6 626.199 c +b +240.115 620.735 m +247.122 609.547 247.339 620.758 V +247.896 622.016 246.136 622.038 v +240.061 622.114 241.582 626.216 240.115 620.735 C +b +247.293 620.486 m +255.214 609.299 254.578 620.579 V +254.585 620.911 252.832 621.064 v +248.085 621.478 248.43 625.996 247.293 620.486 C +b +254.506 620.478 m +262.466 609.85 261.797 619.516 V +261.916 620.749 260.262 621.05 v +256.37 621.756 256.159 625.005 254.506 620.478 C +b +261.382 620.398 m +269.282 608.837 269.63 618.618 V +271.274 619.996 269.528 620.218 v +263.71 620.958 264.508 625.412 261.382 620.398 C +b +0 0 0.2 0.1 k +225.208 616.868 m +217.55 618.399 l +214.95 623.399 212.85 629.549 y +219.2 628.549 231.7 625.749 V +232.576 622.431 234.048 616.636 v +225.208 616.868 l +f +290.276 621.53 m +288.61 624.036 287.293 625.794 286.643 626.2 c +283.63 628.083 287.773 627.706 288.902 627.706 C +305.473 627.706 307.356 626.953 V +307.88 624.711 308.564 621.32 V +298.476 623.33 290.276 621.53 V +f +0.2 0.55 0.85 0 k +1 w +343.88 759.679 m +371.601 755.719 397.121 791.359 398.881 801.04 c +400.641 810.72 390.521 822.6 Y +391.841 825.68 387.001 839.76 381.721 849 c +376.441 858.24 360.54 857.266 343 858.24 c +327.16 859.12 308.68 835.8 307.36 834.04 c +306.04 832.28 312.2 793.999 313.52 788.279 c +314.84 782.559 312.2 756.159 y +346.44 765.259 316.16 763.639 343.88 759.679 c +f +0.08 0.44 0.68 0 k +308.088 833.392 m +306.792 831.664 312.84 794.079 314.136 788.463 c +315.432 782.847 312.84 756.927 y +345.512 765.807 316.728 764.271 343.944 760.383 c +371.161 756.495 396.217 791.487 397.945 800.992 c +399.673 810.496 389.737 822.16 Y +391.033 825.184 386.281 839.008 381.097 848.08 c +375.913 857.152 360.302 856.195 343.08 857.152 c +327.528 858.016 309.384 835.12 308.088 833.392 c +f +0.06 0.33 0.51 0 k +308.816 832.744 m +307.544 831.048 313.48 794.159 314.752 788.647 c +316.024 783.135 313.48 757.695 y +344.884 766.855 317.296 764.903 344.008 761.087 c +370.721 757.271 395.313 791.615 397.009 800.944 c +398.705 810.272 388.953 821.72 Y +390.225 824.688 385.561 838.256 380.473 847.16 c +375.385 856.064 360.063 855.125 343.16 856.064 c +327.896 856.912 310.088 834.44 308.816 832.744 c +f +0.04 0.22 0.34 0 k +309.544 832.096 m +308.296 830.432 314.12 794.239 315.368 788.831 c +316.616 783.423 314.12 758.463 y +343.556 767.503 317.864 765.535 344.072 761.791 c +370.281 758.047 394.409 791.743 396.073 800.895 c +397.737 810.048 388.169 821.28 Y +389.417 824.192 384.841 837.504 379.849 846.24 c +374.857 854.976 359.824 854.055 343.24 854.976 c +328.264 855.808 310.792 833.76 309.544 832.096 c +f +0.02 0.11 0.17 0 k +310.272 831.448 m +309.048 829.816 314.76 794.319 315.984 789.015 c +317.208 783.711 314.76 759.231 y +342.628 768.151 318.432 766.167 344.136 762.495 c +369.841 758.823 393.505 791.871 395.137 800.848 c +396.769 809.824 387.385 820.84 Y +388.609 823.696 384.121 836.752 379.225 845.32 c +374.329 853.888 359.585 852.985 343.32 853.888 c +328.632 854.704 311.496 833.08 310.272 831.448 c +f +1 g +344.2 763.2 m +369.4 759.6 392.601 792 394.201 800.8 c +395.801 809.6 386.601 820.4 Y +387.801 823.2 383.4 836 378.6 844.4 c +373.8 852.8 359.346 851.914 343.4 852.8 c +329 853.6 312.2 832.4 311 830.8 c +309.8 829.2 315.4 794.4 316.6 789.2 c +317.8 784 315.4 760 y +340.9 768.6 319 766.8 344.2 763.2 c +f +0.8 g +390.601 797.2 m +362.8 789.6 351.2 791.2 V +335.4 797.8 326.6 776 V +323 768.8 321 766.8 v +319 764.8 390.601 797.2 Y +f +0 g +394.401 799.4 m +365.4 787.2 355.4 787.6 v +339 792.2 330.6 777.6 V +322.2 768.4 319 766.8 V +318.6 765.2 325 769.2 V +335.4 764 l +350.2 754.4 359.8 770.4 V +363.8 781.6 363.8 783.6 v +363.8 785.6 385 791.2 386.601 791.6 c +388.201 792 394.801 796.2 394.401 799.4 C +f +0.4 0.2 0.8 0 k +347 763.486 m +340.128 763.486 331.755 767.351 331.755 773.6 c +331.755 779.848 340.128 786.113 347 786.113 c +353.874 786.113 359.446 781.048 359.446 774.8 c +359.446 768.551 353.874 763.486 347 763.486 c +f +0.4 0.2 0.8 0.2 k +343.377 780.17 m +338.531 779.448 333.442 777.945 333.514 778.161 c +335.054 782.78 341.415 786.113 347 786.113 c +351.296 786.113 355.084 784.135 357.32 781.125 c +352.004 781.455 343.377 780.17 v +f +1 g +355.4 780.4 m +351 783.6 351 781.4 V +354.6 777 355.4 780.4 V +f +0 g +345.4 772.274 m +342.901 772.274 340.875 774.3 340.875 776.8 c +340.875 779.299 342.901 781.325 345.4 781.325 c +347.9 781.325 349.926 779.299 349.926 776.8 c +349.926 774.3 347.9 772.274 345.4 772.274 c +f +0.2 0.55 0.85 0 k +241.4 785.6 m +238.2 806.8 240.6 811.2 V +251.4 821.2 251 824.8 V +250.6 842.8 249.4 843.6 v +248.2 844.4 240.6 850.4 234.6 844 C +224.2 826 225 819.6 V +225 817.6 l +217.4 818 215.8 816 V +214.6 810.8 213.4 810.4 V +210.6 808 212.6 805.2 V +210.6 802.8 211 798.8 V +218.6 794.8 L +220.6 780.4 231.4 775.2 v +236.236 772.871 239.4 779.6 241.4 785.6 c +f +1 g +240.4 787.44 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 v +246.52 840.36 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.04 240.4 787.44 c +f +0.075 0.412 0.637 0 k +248.95 842.61 m +247.86 843.47 240.37 849.24 234.52 843 C +224.38 825.45 225.16 819.21 V +225.16 817.26 l +217.75 817.65 216.19 815.7 V +215.02 810.63 213.85 810.24 V +211.12 807.9 213.07 805.17 V +211.12 802.83 211.51 798.93 V +218.92 795.03 L +220.87 780.99 231.4 775.92 v +236.114 773.65 239.2 780.21 241.15 786.06 c +238.03 806.73 240.37 811.02 V +250.9 820.77 250.51 824.28 V +250.12 841.83 248.95 842.61 V +f +0.05 0.275 0.425 0 k +248.5 841.62 m +247.52 842.54 240.14 848.08 234.44 842 C +224.56 824.9 225.32 818.82 V +225.32 816.92 l +218.1 817.3 216.58 815.4 V +215.44 810.46 214.3 810.08 V +211.64 807.8 213.54 805.14 V +211.64 802.86 212.02 799.06 V +219.24 795.26 L +221.14 781.58 231.4 776.64 v +235.994 774.428 239 780.82 240.9 786.52 c +237.86 806.66 240.14 810.84 V +250.4 820.34 250.02 823.76 V +249.64 840.86 248.5 841.62 V +f +0.025 0.137 0.212 0 k +248.05 840.63 m +247.18 841.61 239.91 846.92 234.36 841 C +224.74 824.35 225.48 818.43 V +225.48 816.58 l +218.45 816.95 216.97 815.1 V +215.86 810.29 214.75 809.92 V +212.16 807.7 214.01 805.11 V +212.16 802.89 212.53 799.19 V +219.56 795.49 L +221.41 782.17 231.4 777.36 v +235.873 775.206 238.8 781.43 240.65 786.98 c +237.69 806.59 239.91 810.66 V +249.9 819.91 249.53 823.24 V +249.16 839.89 248.05 840.63 V +f +1 g +240.4 787.54 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 V +246.84 840.68 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.14 240.4 787.54 c +f +0.8 g +237.3 793.8 m +215.7 804 214.8 804.8 V +223.9 796.6 224.7 796.6 v +225.5 796.6 237.3 793.8 Y +f +0 g +220.2 800 m +238.6 796.4 238.6 792 v +238.6 789.088 238.357 775.669 233 777.2 c +224.6 779.6 228.2 794 220.2 800 c +f +0.4 0.2 0.8 0 k +228.6 796.2 m +237.578 794.726 238.6 792 v +239.2 790.4 239.863 782.092 234.4 781 c +229.848 780.089 227.618 790.31 228.6 796.2 c +f +0 g +314.595 753.651 m +314.098 755.393 315.409 755.262 317.2 755.8 c +319.2 756.4 331.4 760.2 332.2 762.8 c +333 765.4 346.2 761 Y +348 760.2 352.4 757.6 Y +357.2 756.4 363.8 756 Y +366.2 755 369.6 752.2 Y +384.2 742 396.601 749.2 Y +416.601 755.8 410.601 773 Y +407.601 782 410.801 785.4 Y +411.001 789.2 418.201 782.8 Y +420.801 778.6 421.601 773.6 Y +429.601 762.4 426.201 780.2 Y +426.401 781.2 423.601 784.8 423.601 786 c +423.601 787.2 421.801 790.6 Y +418.801 794 421.201 801 Y +423.001 814.8 420.801 813 Y +419.601 814.8 410.401 804.8 Y +408.201 801.4 402.201 799.8 Y +399.401 798 396.001 799.4 Y +393.401 799.8 387.801 792.8 Y +390.601 793 393.001 788.6 395.401 788.4 c +397.801 788.2 399.601 790.8 401.201 791.4 c +402.801 792 405.601 786.2 Y +406.001 783.6 400.401 778.8 Y +400.001 774.2 398.401 775.8 Y +395.401 776.4 394.201 772.6 393.201 768 c +392.201 763.4 388.001 763 y +386.401 755.6 385.2 758.6 Y +385 764.2 379 758.4 Y +377.8 756.4 373.2 758.6 Y +366.4 760.6 368.8 762.6 Y +370.6 764.8 381.8 762.6 Y +384 764.2 376 768.2 Y +375.4 770 376.4 774.4 Y +377.6 777.6 384.4 783.2 Y +393.801 784.4 391.001 786 Y +384.801 791.2 379 783.6 Y +376.8 777.4 359.4 762.4 Y +354.6 759 357.2 765.8 353.2 762.4 c +349.2 759 328.6 768 y +317.038 769.193 314.306 753.451 310.777 756.571 c +316.195 748.051 314.595 753.651 v +f +509.401 920 m +483.801 912 481.001 893.2 V +478.601 870.4 499.001 852.8 V +499.401 846.4 501.401 843.2 v +499.801 838.4 518.601 846 V +545.801 854.4 l +552.201 856.8 557.401 865.6 v +562.601 874.4 577.801 893.2 574.201 918.4 C +575.401 929.6 569.401 930 V +561.001 931.6 553.801 924 V +547.001 920.8 544.601 921.2 V +509.401 920 L +f +564.022 920.99 m +566.122 929.92 561.282 925.08 V +554.242 919.36 546.761 919.36 V +532.241 917.16 527.841 903.96 V +523.881 877.12 531.801 871.4 V +536.641 863.92 543.681 870.52 v +550.722 877.12 566.222 907.35 564.022 920.99 C +f +0.2 g +563.648 920.632 m +565.738 929.376 560.986 924.624 V +554.074 919.008 546.729 919.008 V +532.473 916.848 528.153 903.888 V +524.265 877.536 532.041 871.92 V +536.793 864.576 543.705 871.056 v +550.618 877.536 565.808 907.24 563.648 920.632 C +f +0.4 g +563.274 920.274 m +565.354 928.832 560.69 924.168 V +553.906 918.656 546.697 918.656 V +532.705 916.536 528.465 903.816 V +524.649 877.952 532.281 872.44 V +536.945 865.232 543.729 871.592 v +550.514 877.952 565.394 907.13 563.274 920.274 C +f +0.6 g +562.9 919.916 m +564.97 928.288 560.394 923.712 V +553.738 918.304 546.665 918.304 V +532.937 916.224 528.777 903.744 V +525.033 878.368 532.521 872.96 V +537.097 865.888 543.753 872.128 v +550.41 878.368 564.98 907.02 562.9 919.916 C +f +0.8 g +562.526 919.558 m +564.586 927.744 560.098 923.256 V +553.569 917.952 546.633 917.952 V +533.169 915.912 529.089 903.672 V +525.417 878.784 532.761 873.48 V +537.249 866.544 543.777 872.664 v +550.305 878.784 564.566 906.91 562.526 919.558 C +f +1 g +562.151 919.2 m +564.201 927.2 559.801 922.8 V +553.401 917.6 546.601 917.6 V +533.401 915.6 529.401 903.6 V +525.801 879.2 533.001 874 V +537.401 867.2 543.801 873.2 v +550.201 879.2 564.151 906.8 562.151 919.2 C +f +0.1 0.55 0.85 0.3 k +350.6 716 m +330.2 735.2 322.2 736 V +287.8 740 273 722 V +290.6 742.4 318.2 736.8 V +296.6 741.2 284.2 738 V +267.4 738 257.8 724 V +255 719.2 l +259 734 277.4 740 V +300.2 744.8 311 740 V +289.4 746.8 279.4 744.8 V +249 747.2 236.2 720.8 V +240.2 735.2 255 742.4 V +268.6 751.2 289 748.4 V +303.4 745.2 308.6 742.8 v +313.8 740.4 312.6 743.2 304.2 748 C +298.6 758 284.6 757.6 V +241.8 754 231.4 742 V +245 753.2 255.4 756 V +277.8 764 286.2 763.2 V +311 762.2 318.6 766.2 V +307.4 761.2 310.6 758 v +313.8 754.8 320.6 747.2 320.6 746 c +320.6 744.8 344.8 722.7 348.4 718.3 C +350.6 716 l +f +0.8 g +1 J 0.1 w +489 522 m +473.5 558.5 461 568 V +487 552 490.5 534 V +490.5 524 489 522 V +f +536 514.5 m +509.5 569.5 491 593.5 V +534.5 556 539.5 529.5 V +540 524 l +537 526.5 l +536.5 517.5 536 514.5 V +f +592.5 563 m +530 622.5 528.5 625 V +589 559 592 551.5 V +590 560.5 592.5 563 V +f +404 519.5 m +423.5 571.5 442.5 549 V +457.5 539 457 536 V +453 542.5 435 542 V +416 545 404 519.5 V +f +594.5 647 m +549.5 675.5 542 677 v +530.193 679.361 591.5 648 596.5 637.5 C +598.5 640 594.5 647 V +f +0 g +0 J 1 w +443.801 540.399 m +464.201 542.399 471.001 549.199 V +475.401 545.599 l +493.001 583.999 l +496.601 578.799 l +511.001 593.599 510.201 601.599 v +509.401 609.599 523.001 595.599 y +522.201 607.199 529.401 600.399 V +527.001 615.999 535.401 607.999 V +524.864 638.156 547.401 612.399 v +553.001 605.999 548.601 612.799 y +522.601 660.799 544.201 646.399 v +546.201 669.199 545.001 673.599 v +543.801 677.999 541.801 700.4 537.001 705.6 c +532.201 710.8 537.401 712.4 543.001 707.2 C +531.801 731.2 545.001 719.2 V +541.401 734.4 537.001 737.2 V +531.401 754.4 546.601 743.6 V +542.201 756 539.001 759.2 V +527.401 786.8 534.601 782 V +539.001 778.4 l +532.201 792.4 538.601 788 v +545.001 783.6 545.001 784 y +523.801 817.2 544.201 799.6 V +536.042 813.518 532.601 820.4 V +513.801 840.8 528.201 834.4 V +533.001 832.8 l +524.201 842.8 516.201 844.4 v +508.201 846 518.601 852.4 525.001 850.4 c +531.401 848.4 547.001 840.8 y +559.801 822 563.801 821.6 V +543.801 829.2 549.801 821.2 V +564.201 807.2 557.001 807.6 V +551.001 800.4 555.801 791.6 V +537.342 809.991 552.201 784.4 v +559.001 768 l +534.601 792.8 545.801 770.8 V +563.001 747.2 565.001 746.8 v +567.001 746.4 571.401 737.6 y +567.001 739.6 l +572.201 730.8 l +561.001 742.8 567.001 729.6 V +572.601 715.2 l +552.201 737.2 565.801 707.6 V +549.401 712.8 558.201 695.6 V +556.601 679.599 557.001 674.399 v +557.401 669.199 558.601 640.799 554.201 632.799 c +549.801 624.799 560.201 605.599 562.201 601.599 c +564.201 597.599 567.801 586.799 559.001 595.999 c +550.201 605.199 554.601 599.599 556.601 590.799 c +558.601 581.999 564.601 566.399 563.801 560.799 C +562.601 559.599 559.401 563.199 V +544.601 585.999 546.201 571.599 V +545.001 563.599 541.801 554.799 V +538.601 543.999 538.601 552.799 V +535.401 569.599 532.601 561.999 v +529.801 554.399 526.201 548.399 523.401 545.999 c +520.601 543.599 515.401 566.399 514.201 555.999 C +502.201 568.399 497.401 551.999 V +485.801 535.599 l +485.401 547.999 484.201 541.999 V +454.201 535.999 443.801 540.399 V +f +409.401 897.2 m +397.801 905.2 393.801 904.8 v +389.801 904.4 421.401 913.6 462.601 886 C +467.401 883.2 471.001 883.6 V +474.201 881.2 471.401 877.6 V +462.601 868 473.801 856.8 V +492.201 850 486.601 858.8 V +497.401 854.8 499.801 850.8 v +502.201 846.8 501.001 850.8 y +494.601 858 488.601 863.2 V +483.401 865.2 480.601 873.6 v +477.801 882 475.401 892 479.801 895.2 C +475.801 890.8 476.601 894.8 v +477.401 898.8 481.001 902.4 482.601 902.8 c +484.201 903.2 500.601 919 507.401 919.4 C +498.201 918 495.201 919 v +492.201 920 465.601 931.4 459.601 932.6 C +442.801 939.2 454.801 937.2 V +490.601 933.4 508.801 920.2 V +501.601 928.6 483.201 935.6 V +461.001 948.2 425.801 943.2 V +408.001 940 400.201 938.2 V +397.601 938.8 397.001 939.2 v +396.401 939.6 384.6 948.6 357 941.6 C +340 937 331.4 932.2 V +316.2 931 312.6 927.8 V +294 913.2 292 912.4 v +290 911.6 278.6 904 277.8 903.6 C +302.4 910.2 304.8 912.6 v +307.2 915 324.6 917.6 327 916.2 c +329.4 914.8 337.8 915.4 328.2 914.8 C +403.801 900 404.601 898 v +405.401 896 409.401 897.2 y +f +0.2 0.55 0.85 0 k +480.801 906.4 m +470.601 913.8 468.601 913.8 v +466.601 913.8 454.201 924 450.001 923.6 c +445.801 923.2 433.601 933.2 406.201 925 C +405.601 927 409.201 927.8 V +415.601 930 416.001 930.6 V +436.201 934.8 443.401 931.2 V +452.601 928.6 458.801 922.4 V +470.001 919.2 473.201 920.2 V +482.001 918 482.401 916.2 V +488.201 913.2 486.401 910.6 V +486.801 909 480.801 906.4 V +f +468.33 908.509 m +469.137 907.877 470.156 907.779 470.761 906.97 c +470.995 906.656 470.706 906.33 470.391 906.233 c +469.348 905.916 468.292 906.486 467.15 905.898 c +466.748 905.691 466.106 905.873 465.553 906.022 c +463.921 906.463 462.092 906.488 460.401 905.8 C +458.416 906.929 456.056 906.345 453.975 907.346 c +453.917 907.373 453.695 907.027 453.621 907.054 c +450.575 908.199 446.832 907.916 444.401 910.2 C +441.973 910.612 439.616 911.074 437.188 911.754 c +435.37 912.263 433.961 913.252 432.341 914.084 c +430.964 914.792 429.507 915.314 427.973 915.686 c +426.11 916.138 424.279 916.026 422.386 916.546 c +422.293 916.571 422.101 916.227 422.019 916.254 c +421.695 916.362 421.405 916.945 421.234 916.892 c +419.553 916.37 418.065 917.342 416.401 917 C +415.223 918.224 413.495 917.979 411.949 918.421 c +408.985 919.269 405.831 917.999 402.801 919 C +406.914 920.842 411.601 919.61 415.663 921.679 c +417.991 922.865 420.653 921.763 423.223 922.523 c +423.71 922.667 424.401 922.869 424.801 922.2 C +424.935 922.335 425.117 922.574 425.175 922.546 c +427.625 921.389 429.94 920.115 432.422 919.049 c +432.763 918.903 433.295 919.135 433.547 918.933 c +435.067 917.717 437.01 917.82 438.401 916.6 C +440.099 917.102 441.892 916.722 443.621 917.346 c +443.698 917.373 443.932 917.032 443.965 917.054 c +445.095 917.802 446.25 917.531 447.142 917.227 c +447.48 917.112 448.143 916.865 448.448 916.791 c +449.574 916.515 450.43 916.035 451.609 915.852 c +451.723 915.834 451.908 916.174 451.98 916.146 c +453.103 915.708 454.145 915.764 454.801 914.6 C +454.936 914.735 455.101 914.973 455.183 914.946 c +456.21 914.608 456.859 913.853 457.96 913.612 c +458.445 913.506 459.057 912.88 459.633 912.704 c +462.025 911.973 463.868 910.444 466.062 909.549 c +466.821 909.239 467.697 909.005 468.33 908.509 c +f +391.696 922.739 m +389.178 924.464 386.81 925.57 384.368 927.356 c +384.187 927.489 383.827 927.319 383.625 927.441 c +382.618 928.05 381.73 928.631 380.748 929.327 c +380.209 929.709 379.388 929.698 378.88 929.956 c +376.336 931.248 373.707 931.806 371.2 933 C +371.882 933.638 373.004 933.394 373.6 934.2 C +373.795 933.92 374.033 933.636 374.386 933.827 c +376.064 934.731 377.914 934.884 379.59 934.794 c +381.294 934.702 383.014 934.397 384.789 934.125 c +385.096 934.078 385.295 933.555 385.618 933.458 c +387.846 932.795 390.235 933.32 392.354 932.482 c +393.945 931.853 395.515 931.03 396.754 929.755 c +397.006 929.495 396.681 929.194 396.401 929 C +396.789 929.109 397.062 928.903 397.173 928.59 c +397.257 928.351 397.257 928.049 397.173 927.81 c +397.061 927.498 396.782 927.397 396.408 927.346 c +395.001 927.156 396.773 928.536 396.073 928.088 c +394.8 927.274 395.546 925.868 394.801 924.6 C +394.521 924.794 394.291 925.012 394.401 925.4 C +394.635 924.878 394.033 924.588 393.865 924.272 c +393.48 923.547 392.581 922.132 391.696 922.739 c +f +359.198 915.391 m +356.044 916.185 352.994 916.07 349.978 917.346 c +349.911 917.374 349.688 917.027 349.624 917.054 c +348.258 917.648 347.34 918.614 346.264 919.66 c +345.351 920.548 343.693 920.161 342.419 920.648 c +342.095 920.772 341.892 921.284 341.591 921.323 c +340.372 921.48 339.445 922.429 338.4 923 C +340.736 923.795 343.147 923.764 345.609 924.148 c +345.722 924.166 345.867 923.845 346 923.845 c +346.136 923.845 346.266 924.066 346.4 924.2 C +346.595 923.92 346.897 923.594 347.154 923.848 c +347.702 924.388 348.258 924.198 348.798 924.158 c +348.942 924.148 349.067 923.845 349.2 923.845 c +349.336 923.845 349.467 924.156 349.6 924.156 c +349.736 924.155 349.867 923.845 350 923.845 c +350.136 923.845 350.266 924.066 350.4 924.2 C +351.092 923.418 351.977 923.972 352.799 923.793 c +353.837 923.566 354.104 922.418 355.178 922.12 c +359.893 920.816 364.03 918.671 368.393 916.584 c +368.7 916.437 368.91 916.189 368.8 915.8 C +369.067 915.8 369.38 915.888 369.57 915.756 c +370.628 915.024 371.669 914.476 372.366 913.378 c +372.582 913.039 372.253 912.632 372.02 912.684 c +367.591 913.679 363.585 914.287 359.198 915.391 c +f +345.338 871.179 m +343.746 872.398 343.162 874.429 342.034 876.221 c +341.82 876.561 342.094 876.875 342.411 876.964 c +342.971 877.123 343.514 876.645 343.923 876.443 c +345.668 875.581 347.203 874.339 349.2 874.2 C +351.19 871.966 355.45 871.581 355.457 868.2 c +355.458 867.341 354.03 868.259 353.6 867.4 C +351.149 868.403 348.76 868.3 346.38 869.767 c +345.763 870.148 346.093 870.601 345.338 871.179 c +f +317.8 923.756 m +317.935 923.755 324.966 923.522 324.949 923.408 c +324.904 923.099 317.174 922.05 316.81 922.22 c +316.646 922.296 309.134 919.866 309 920 C +309.268 920.135 317.534 923.756 317.8 923.756 c +f +0 g +333.2 914 m +318.4 912.2 314 911 v +309.6 909.8 291 902.2 288 900.2 C +274.6 894.8 257.6 874.8 V +265.2 878.2 267.4 881 V +281 893.6 280.8 891 V +293 899.6 292.4 897.4 V +316.8 908.6 314.8 905.4 V +336.4 910 335.4 908 V +354.2 903.6 351.4 903.4 V +345.6 902.2 352 898.6 V +348.6 894.2 343.2 898.2 v +337.8 902.2 340.8 900 335.8 899 C +333.2 898.2 328.6 902.2 V +323 906.8 314.2 903.2 V +283.6 890.6 281.6 890 V +278 887.2 275.6 883.6 V +269.8 879.2 266.8 877.8 V +254 866.2 252.8 864.8 V +249.4 859.6 248.6 859.2 V +255 863 257 865 V +271 875 276.4 875.8 V +280.8 878.8 281.6 880.2 V +296 889.4 300.2 889.4 V +309.4 884.2 311.8 891.2 V +317.6 893 323.2 891.8 V +326.4 894.4 325.6 896.6 V +327.2 898.4 328.2 894.6 V +331.6 891 336.4 893 V +340.4 893.2 338.4 890.8 V +334 887 322.2 886.8 V +309.8 886.2 293.4 878.6 V +263.6 868.2 254.4 857.8 V +248 849 242.6 847.8 V +236.8 847 230.8 839.6 V +240.6 845.4 249.6 845.4 V +253.6 847.8 249.8 844.2 V +246.2 836.6 247.8 831.2 V +247.2 826 246.4 824.4 V +238.6 811.6 238.6 809.2 v +238.6 806.8 239.8 797 240.2 796.4 c +240.6 795.8 239.2 798 243 795.6 c +246.8 793.2 249.6 791.6 250.4 788.8 c +251.2 786 248.4 794.2 248.2 796 c +248 797.8 243.8 805 244.6 807.4 C +245.6 806.4 246.4 805 V +245.8 805.6 246.4 809.2 V +247.2 814.4 248.6 817.6 v +250 820.8 252 824.6 252.4 825.4 c +252.8 826.2 252.8 832 254.2 829.4 C +257.6 826.8 l +254.8 829.4 257 831.6 V +256 837.2 257.8 839.8 V +264.8 848.2 266.4 849.2 v +268 850.2 266.6 849.8 y +272.6 854 266.8 852.4 V +262.8 850.8 259.8 850.8 V +252.2 848.8 256.2 853 v +260.2 857.2 270.2 862.6 274 862.4 C +274.8 860.8 l +286 863.2 l +284.8 862.4 l +284.6 862.6 288.8 863 v +293 863.4 298.8 862 300.2 863.8 c +301.6 865.6 305 866.6 304.6 865.2 c +304.2 863.8 304 861.8 y +309 867.6 308.4 865.4 v +307.8 863.2 299.6 858 298.2 851.8 C +308.6 860 l +312.2 863 l +315.8 860.8 316 862.4 v +316.2 864 320.8 869.8 322 869.6 c +323.2 869.4 325.2 872.2 325 869.6 c +324.8 867 332.4 861.6 y +335.6 863.4 337 862 v +338.4 860.6 342.6 881.8 y +367.6 892.4 l +411.201 895.8 l +394.201 902.6 l +333.2 914 l +f +0.2 0.55 0.85 0.5 K +1 J 2 w +351.4 715 m +336.4 731.8 328 734.4 V +314.6 741.2 290 733.4 v +S +324.8 735.8 m +299.6 743.8 284.2 739.6 V +265.8 737.6 257.4 723.8 v +S +321.2 737 m +304.2 744.2 289.4 746.4 V +272.8 749 256.2 741.8 V +244 735.8 238.6 725.6 v +S +322.2 736.6 m +306.8 747.6 305.8 749 V +298.8 760 285.8 760.4 V +264.4 759.6 247.2 751.6 v +S +0 G +0 J 1 w +320.895 745.593 m +322.437 744.13 349.4 715.2 Y +384.6 678.599 356.6 712.8 Y +349 717.6 339.8 736.4 Y +338.6 739.2 353.8 729.2 Y +357.8 728.4 371.4 709.2 Y +364.6 711.6 369.4 704.4 Y +372.2 702.4 392.601 686.799 Y +396.201 682.799 400.201 681.199 Y +414.201 686.399 407.801 673.199 Y +410.201 666.399 415.801 677.999 Y +427.001 694.8 410.601 692.399 Y +380.6 689.599 373.8 705.6 Y +371.4 708 380.2 705.6 Y +388.601 703.6 373 718 Y +375.4 718 384.6 711.2 Y +395.001 702 397.001 704 Y +415.001 712.8 425.401 705.2 Y +427.401 703.6 421.801 696.8 423.401 691.599 c +425.001 686.399 429.801 673.999 Y +427.401 672.399 427.801 661.599 Y +444.601 638.399 435.001 640.399 Y +419.401 640.799 434.201 633.199 Y +437.401 631.199 446.201 623.999 Y +443.401 625.199 441.801 619.999 Y +446.601 615.999 443.801 611.199 Y +437.801 609.999 436.601 605.999 Y +443.401 597.999 433.401 597.599 Y +437.001 593.199 432.201 581.199 Y +427.401 581.199 421.001 575.599 Y +423.401 570.799 413.001 565.199 Y +404.601 563.599 407.401 556.799 Y +399.401 550.799 397.001 534.799 Y +396.201 524.399 393.801 521.199 399.001 523.199 c +404.201 525.199 403.401 537.599 Y +398.601 553.199 441.401 569.199 Y +445.401 570.799 446.201 575.999 Y +448.201 575.599 457.001 567.999 Y +464.601 556.799 465.001 565.999 Y +466.201 569.599 464.601 575.599 Y +470.601 597.199 456.601 603.599 Y +446.601 637.199 460.601 628.799 Y +463.401 623.199 474.201 617.999 y +477.801 620.399 L +476.201 625.199 484.601 631.199 Y +487.401 624.799 493.401 632.799 Y +497.001 657.199 509.401 642.799 Y +513.401 641.599 514.601 648.399 Y +518.201 658.799 514.601 672.399 Y +518.201 672.799 527.801 666.799 Y +530.601 670.399 521.401 687.199 525.401 684.799 c +529.401 682.399 533.801 680.799 Y +534.601 682.799 524.601 695.199 Y +520.201 698 515.001 718.4 Y +522.201 714.8 512.201 730 Y +512.201 733.2 518.201 744.4 Y +517.401 751.2 518.201 750.8 Y +521.001 749.6 529.001 748 522.201 754.4 c +515.401 760.8 523.001 765.6 Y +527.401 768.4 513.801 768 Y +508.601 772.4 509.001 776.4 Y +517.001 774.4 502.601 788.8 500.201 792.4 c +497.801 796 507.401 801.2 Y +520.601 804.8 509.001 808 Y +489.401 807.6 500.201 818.4 Y +506.201 818 504.601 820.4 Y +499.401 821.6 489.801 828 Y +485.801 831.6 489.401 830.8 Y +506.201 829.6 477.401 840.8 Y +485.401 840.8 467.401 851.2 Y +465.401 852.8 462.201 860.4 Y +456.201 865.6 451.401 872.4 Y +451.001 876.8 446.201 881.6 Y +434.601 895.2 429.001 894.8 Y +414.201 898.4 409.001 897.6 Y +356.2 893.2 l +329.8 880.4 337.6 859.4 Y +344 851 353.2 854.8 Y +357.8 861 369.4 858.8 Y +389.801 855.6 387.201 859.2 Y +384.801 863.8 368.6 870 368.4 870.6 c +368.2 871.2 359.4 874.6 Y +356.4 875.8 352 885 Y +348.8 888.4 364.6 882.6 Y +363.4 881.6 370.8 877.6 Y +388.201 878.6 398.801 867.8 Y +409.601 851.2 409.801 859.4 Y +412.601 868.8 400.801 890 Y +401.201 892 409.401 885.4 Y +410.801 887.4 411.601 881.6 Y +411.801 879.2 415.601 871.2 Y +418.401 858.2 422.001 865.6 Y +426.601 856.2 L +428.001 853.6 422.001 846 Y +421.801 843.2 422.601 843.4 417.001 835.8 c +411.401 828.2 414.801 823.8 Y +413.401 817.2 422.201 817.6 Y +424.801 815.4 428.201 815.4 Y +430.001 813.4 432.401 814 Y +434.001 817.8 440.201 815.8 Y +441.601 818.2 449.801 818.6 Y +450.801 821.2 451.201 822.8 454.601 823.4 c +458.001 824 433.401 867 Y +439.801 867.8 431.601 880.2 Y +429.401 886.8 440.801 872.2 443.001 870.8 c +445.201 869.4 446.201 867.2 444.601 867.4 c +443.001 867.6 441.201 865.4 442.601 865.2 c +444.001 865 457.001 850 460.401 839.8 c +463.801 829.6 469.801 825.6 476.001 819.6 c +482.201 813.6 481.401 789.4 Y +481.001 780.6 487.001 770 Y +489.001 766.2 484.801 748 Y +482.801 745.8 484.201 745 Y +485.201 743.8 492.001 730.6 Y +490.201 730.8 493.801 727.2 Y +499.001 721.2 492.601 724.2 Y +486.601 725.8 493.601 716 Y +494.801 714.2 485.801 718.8 Y +476.601 719.4 488.201 712.2 Y +496.801 705 485.401 709.4 Y +480.801 711.2 484.001 704.4 Y +487.201 702.8 504.401 695.8 Y +504.801 691.999 501.801 686.999 Y +502.201 682.999 500.001 679.599 Y +498.801 671.399 498.201 670.599 Y +494.001 670.399 486.601 656.599 Y +484.801 653.999 474.601 641.999 Y +472.601 634.999 454.601 642.199 Y +448.001 638.799 450.001 642.199 Y +449.601 644.399 454.401 650.399 Y +461.401 652.999 458.801 663.799 Y +462.801 665.199 451.601 667.999 451.801 669.199 c +452.001 670.399 457.801 671.799 Y +465.801 673.799 461.401 676.199 Y +460.801 680.199 463.801 685.799 Y +475.401 686.599 463.801 702.8 Y +453.001 710.4 452.001 716.2 Y +464.601 724.4 456.401 736.8 456.601 740.4 c +456.801 744 458.001 765.6 Y +456.001 771.8 453.001 785.4 Y +455.201 790.6 462.601 803.2 Y +465.401 807.4 474.201 812.2 472.001 815.2 c +469.801 818.2 462.001 816.4 Y +454.201 817.8 454.801 812.6 Y +453.201 811.6 452.401 806.6 Y +451.68 798.667 442.801 792.4 Y +431.601 786.2 440.801 782.2 Y +446.801 775.6 437.001 775.4 Y +426.001 777.2 434.201 767 Y +445.001 754.2 442.001 751.4 Y +431.801 750.4 444.401 741.2 y +443.601 743.2 443.801 741.4 v +444.001 739.6 447.001 735.4 447.801 733.4 c +448.601 731.4 444.601 731.2 Y +445.201 721.6 429.801 725.8 y +429.801 725.8 428.201 725.6 v +426.601 725.4 415.401 726.2 409.601 728.4 c +403.801 730.6 397.001 730.6 y +393.001 728.8 385.4 729 v +377.8 729.2 369.8 726.4 Y +365.4 726.8 374 731.2 374.2 731 c +374.4 730.8 380 736.4 372 735.8 c +350.203 734.165 339.4 744.4 Y +337.4 745.8 334.8 748.6 Y +324.8 750.6 336.2 736.2 Y +337.4 734.8 336 733.8 Y +335.2 735.4 327.4 740.8 Y +324.589 741.773 323.226 743.107 320.895 745.593 C +f +0.2 0.55 0.85 0.5 k +1 J 2 w +297 757.2 m +308.6 751.6 311.2 748.8 v +313.8 746 327.8 734.6 y +322.4 736.6 319.8 738.4 v +317.2 740.2 306.4 748.4 y +302.6 754.4 297 757.2 v +f +0.4 0.2 0.8 0 k +0 J 1 w +238.991 788.397 m +239.328 788.545 238.804 791.257 238.6 791.8 c +237.578 794.526 228.6 796 y +228.373 794.635 228.318 793.039 228.424 791.401 c +233.292 785.882 238.991 788.397 v +f +0.4 0.2 0.8 0.2 k +238.991 788.597 m +238.542 788.439 238.976 791.331 238.8 791.8 c +237.778 794.526 228.6 796.1 y +228.373 794.735 228.318 793.139 228.424 791.501 c +232.692 786.382 238.991 788.597 v +f +0 g +234.6 788.454 m +233.975 788.454 233.469 789.594 233.469 791 c +233.469 792.405 233.975 793.545 234.6 793.545 c +235.225 793.545 235.732 792.405 235.732 791 c +235.732 789.594 235.225 788.454 234.6 788.454 c +f +234.6 791 m +F +189 690.399 m +183.4 680.399 208.2 686.399 V +222.2 687.599 224.6 689.999 V +225.8 689.199 234.166 686.266 237 685.599 c +243.8 683.999 252.2 694 y +256.8 704.5 259.6 704.5 v +262.4 704.5 259.2 702.9 y +252.6 692.799 253 691.199 V +247.8 671.199 231.8 670.399 V +215.65 669.449 217 663.599 V +225.8 665.999 228.2 663.599 V +239 663.999 231 657.599 V +224.2 645.999 l +224.34 642.081 214.2 645.599 v +204.4 648.999 194.1 661.899 y +178.15 676.449 189 690.399 V +f +0.1 0.4 0.4 0 k +187.8 686.399 m +185.8 676.799 222.6 687.199 V +227 687.199 229.4 686.399 v +231.8 685.599 243.8 682.799 245.8 683.999 C +238.6 670.399 227 671.999 V +213.8 670.399 214.2 665.599 V +218.2 658.399 223 655.999 V +225.8 653.599 225.4 650.399 v +225 647.199 222.2 645.599 220.2 644.799 c +218.2 643.999 215 647.199 213.4 647.199 c +211.8 647.199 203.4 653.599 199 658.399 c +194.6 663.199 186.2 675.199 186.6 677.999 c +187 680.799 187.8 686.399 Y +f +0.1 0.4 0.4 0.2 k +191 668.949 m +193.6 664.999 196.8 660.799 199 658.399 c +203.4 653.599 211.8 647.199 213.4 647.199 c +215 647.199 218.2 643.999 220.2 644.799 c +222.2 645.599 225 647.199 225.4 650.399 c +225.8 653.599 223 655.999 Y +219.934 657.532 217.194 661.024 215.615 663.347 C +215.8 660.799 210.6 661.599 v +205.4 662.399 200.2 665.199 198.6 668.399 c +197 671.599 194.6 673.999 196.2 670.399 c +197.8 666.799 200.2 663.199 201.8 662.799 c +203.4 662.399 203 661.199 200.6 661.599 c +198.2 661.999 195.4 662.399 191 667.599 c +F +0.1 0.55 0.85 0.3 k +188.4 689.999 m +190.2 703.6 191.4 707.6 V +190.6 714.4 193 718.6 v +195.4 722.8 197.4 729 200.4 734.4 c +203.4 739.8 203.6 743.8 207.6 745.4 c +211.6 747 217.6 755.6 220.4 756.6 c +223.2 757.6 223 756.8 y +229.8 771.6 243.4 767.6 V +227.2 770.4 243 779.8 V +238.2 778.7 241.5 785.7 v +243.701 790.368 243.2 783.6 232.2 771.8 C +227.2 763.2 222 760.2 v +216.8 757.2 204.8 750.2 203.6 746.4 c +202.4 742.6 199.2 736.8 197.2 735.2 c +195.2 733.6 192.4 729.4 192 726 C +190.8 722 189.4 720.8 v +188 719.6 187.8 716.4 187.8 714.4 c +187.8 712.4 185.8 709.6 186 707.2 C +186.8 688.199 186.4 686.199 V +188.4 689.999 L +f +1 g +179.8 685.399 m +177.8 686.799 173.4 680.799 V +180.7 647.799 180.7 646.399 V +181.8 648.499 180.5 655.699 v +179.2 662.899 178.3 675.599 y +179.8 685.399 l +f +0.1 0.55 0.85 0.3 k +201.4 746 m +183.8 742.8 184.2 713.6 V +183.4 688.799 l +182.2 714.4 181 716 v +179.8 717.6 183.8 728.8 180.6 722.8 C +166.6 708.8 174.6 687.599 V +176.1 684.299 173.1 688.899 V +168.5 701.5 169.6 707.9 V +169.8 710.1 171.7 712.9 V +180.3 724.6 183 726.9 V +184.8 741.3 200.2 746.5 V +205.9 748.8 201.4 746 V +f +0 g +340.8 812.2 m +341.46 812.554 341.451 813.524 342.031 813.697 c +343.18 814.041 343.344 815.108 343.862 815.892 c +344.735 817.211 344.928 818.744 345.51 820.235 c +345.782 820.935 345.809 821.89 345.496 822.55 c +344.322 825.031 343.62 827.48 342.178 829.906 c +341.91 830.356 341.648 831.15 341.447 831.748 c +340.984 833.132 339.727 834.123 338.867 835.443 c +338.579 835.884 339.104 836.809 338.388 836.893 c +337.491 836.998 336.042 837.578 335.809 836.552 c +335.221 833.965 336.232 831.442 337.2 829 C +336.418 828.308 336.752 827.387 336.904 826.62 c +337.614 823.014 336.416 819.662 335.655 816.188 c +335.632 816.084 335.974 815.886 335.946 815.824 c +334.724 813.138 333.272 810.693 331.453 808.312 c +330.695 807.32 329.823 806.404 329.326 805.341 c +328.958 804.554 328.55 803.588 328.8 802.6 C +325.365 799.82 323.115 795.975 320.504 792.129 c +320.042 791.449 320.333 790.24 320.884 789.971 c +321.697 789.573 322.653 790.597 323.123 791.443 c +323.512 792.141 323.865 792.791 324.356 793.434 c +324.489 793.609 324.31 794.028 324.445 794.149 c +327.078 796.496 328.747 799.432 331.2 801.8 C +333.15 802.129 334.687 803.127 336.435 804.14 c +336.743 804.319 337.267 804.07 337.557 804.265 c +339.31 805.442 339.308 807.478 339.414 809.388 c +339.464 810.272 339.66 811.589 340.8 812.2 c +f +331.959 816.666 m +332.083 816.743 331.928 817.166 332.037 817.382 c +332.199 817.706 332.602 817.894 332.764 818.218 c +332.873 818.434 332.71 818.814 332.846 818.956 c +335.179 821.403 335.436 824.427 334.4 827.4 C +335.424 828.02 335.485 829.282 335.06 830.129 c +334.207 831.829 334.014 833.755 333.039 835.298 c +332.237 836.567 330.659 837.811 329.288 836.508 c +328.867 836.108 328.546 835.321 328.824 834.609 c +328.888 834.446 329.173 834.3 329.146 834.218 c +329.039 833.894 328.493 833.67 328.487 833.398 c +328.457 831.902 327.503 830.391 328.133 829.062 c +328.905 827.433 329.724 825.576 330.4 823.8 C +329.166 821.684 330.199 819.235 328.446 817.358 c +328.31 817.212 328.319 816.826 328.441 816.624 c +328.733 816.138 329.139 815.732 329.625 815.44 c +329.827 815.319 330.175 815.317 330.375 815.441 c +330.953 815.803 331.351 816.29 331.959 816.666 c +f +394.771 826.977 m +396.16 825.185 396.45 822.39 394.401 821 C +394.951 817.691 398.302 819.67 400.401 820.2 C +400.292 820.588 400.519 820.932 400.802 820.937 c +401.859 820.952 402.539 821.984 403.601 821.8 C +404.035 823.357 405.673 824.059 406.317 825.439 c +408.043 829.134 407.452 833.407 404.868 836.653 c +404.666 836.907 404.883 837.424 404.759 837.786 c +404.003 839.997 401.935 840.312 400.001 841 C +398.824 844.875 398.163 848.906 396.401 852.6 C +394.787 852.85 394.089 854.589 392.752 855.309 c +391.419 856.028 390.851 854.449 390.892 853.403 c +390.899 853.198 391.351 852.974 391.181 852.609 c +391.105 852.445 390.845 852.334 390.845 852.2 c +390.846 852.065 391.067 851.934 391.201 851.8 C +390.283 850.98 388.86 850.503 388.565 849.358 c +387.611 845.648 390.184 842.523 391.852 839.322 c +392.443 838.187 391.707 836.916 390.947 835.708 c +390.509 835.013 390.617 833.886 390.893 833.03 c +391.645 830.699 393.236 828.96 394.771 826.977 c +f +357.611 808.591 m +356.124 806.74 352.712 804.171 355.629 802.243 c +355.823 802.114 356.193 802.11 356.366 802.244 c +358.387 803.809 360.39 804.712 362.826 805.294 c +362.95 805.323 363.224 804.856 363.593 805.017 c +365.206 805.72 367.216 805.662 368.4 807 C +372.167 806.776 375.732 807.892 379.123 809.2 c +380.284 809.648 381.554 810.207 382.755 810.709 c +384.131 811.285 385.335 812.213 386.447 813.354 c +386.58 813.49 386.934 813.4 387.201 813.4 C +387.161 814.263 388.123 814.39 388.37 815.012 c +388.462 815.244 388.312 815.64 388.445 815.742 c +390.583 817.372 391.503 819.39 390.334 821.767 c +390.049 822.345 389.8 822.963 389.234 823.439 c +388.149 824.35 387.047 823.496 386 823.8 C +385.841 823.172 385.112 823.344 384.726 823.146 c +383.867 822.707 382.534 823.292 381.675 822.854 c +380.313 822.159 379.072 821.99 377.65 821.613 c +377.338 821.531 376.56 821.627 376.4 821 C +376.266 821.134 376.118 821.368 376.012 821.346 c +374.104 820.95 372.844 820.736 371.543 819.044 c +371.44 818.911 370.998 819.09 370.839 818.955 c +369.882 818.147 369.477 816.913 368.376 816.241 c +368.175 816.118 367.823 816.286 367.629 816.157 c +366.983 815.726 366.616 815.085 365.974 814.638 c +365.645 814.409 365.245 814.734 365.277 814.99 c +365.522 816.937 366.175 818.724 365.6 820.6 C +367.677 823.12 370.194 825.069 372 827.8 C +372.015 829.966 372.707 832.112 372.594 834.189 c +372.584 834.382 372.296 835.115 372.17 835.462 c +371.858 836.316 372.764 837.382 371.92 838.106 c +370.516 839.309 369.224 838.433 368.4 837 C +366.562 836.61 364.496 835.917 362.918 837.151 c +361.911 837.938 361.333 838.844 360.534 839.9 c +359.549 841.202 359.884 842.638 359.954 844.202 c +359.96 844.33 359.645 844.466 359.645 844.6 c +359.646 844.735 359.866 844.866 360 845 C +359.294 845.626 359.019 846.684 358 847 C +358.305 848.092 357.629 848.976 356.758 849.278 c +354.763 849.969 353.086 848.057 351.194 847.984 c +350.68 847.965 350.213 849.003 349.564 849.328 c +349.132 849.544 348.428 849.577 348.066 849.311 c +347.378 848.807 346.789 848.693 346.031 848.488 c +344.414 848.052 343.136 846.958 341.656 846.103 c +340.171 845.246 339.216 843.809 338.136 842.489 c +337.195 841.337 337.059 838.923 338.479 838.423 c +340.322 837.773 341.626 840.476 343.592 840.15 c +343.904 840.099 344.11 839.788 344 839.4 C +344.389 839.291 344.607 839.52 344.8 839.8 C +345.658 838.781 346.822 838.444 347.76 837.571 c +348.73 836.667 350.476 837.085 351.491 836.088 c +353.02 834.586 352.461 831.905 354.4 830.6 C +353.814 829.287 353.207 828.01 352.872 826.583 c +352.59 825.377 353.584 824.18 354.795 824.271 c +356.053 824.365 356.315 825.124 356.8 826.2 C +357.067 825.933 357.536 825.636 357.495 825.42 c +357.038 823.033 356.011 821.04 355.553 818.609 c +355.494 818.292 355.189 818.09 354.8 818.2 C +354.332 814.051 350.28 811.657 347.735 808.492 c +347.332 807.99 347.328 806.741 347.737 806.338 c +349.14 804.951 351.1 806.497 352.8 807 C +353.013 808.206 353.872 809.148 355.204 809.092 c +355.46 809.082 355.695 809.624 356.019 809.754 c +356.367 809.892 356.869 809.668 357.155 809.866 c +358.884 811.061 360.292 812.167 362.03 813.356 c +362.222 813.487 362.566 813.328 362.782 813.436 c +363.107 813.598 363.294 813.985 363.617 814.17 c +363.965 814.37 364.207 814.08 364.4 813.8 C +363.754 813.451 363.75 812.494 363.168 812.292 c +362.393 812.024 361.832 811.511 361.158 811.064 c +360.866 810.871 360.207 811.119 360.103 810.94 c +359.505 809.912 358.321 809.474 357.611 808.591 c +f +302.2 858 m +292.962 860.872 281.8 835.2 V +279.4 830 277 828 v +274.6 826 263.4 822.4 261.4 818.4 C +251 802.4 L +265.8 818.4 269 820.8 V +277 829.2 273.8 822.4 V +259.8 811.6 261 802.4 V +255.4 788 254.6 786 V +270.6 818 273 819.2 v +275.4 820.4 276.6 820.4 275.4 816.8 c +274.2 813.2 273.8 796.8 271 794.8 C +279 815.2 278.2 818.4 V +281.4 822 283.8 816.8 V +282.6 800.8 l +287 788.8 l +284.6 800 286.2 815.6 V +284.2 826 288.2 820.4 v +292.2 814.8 301.8 808.8 301.8 804 C +296.6 821.6 287.4 826.4 V +283.4 820.4 l +282.2 822.4 l +278.6 823.2 283 830 v +287.4 836.8 287 837.6 y +293.4 830.4 295 830.4 V +308.2 838 309.4 813.6 V +316.2 828 307 834.8 V +292.2 836.8 293.4 842 V +300.6 854.4 L +304.2 859.6 302.6 856.8 y +F +282.2 841.6 m +269.4 841.6 266.2 836.4 V +259 826.8 l +276.2 836.8 280.2 838 v +284.2 839.2 282.2 841.6 Y +f +242.2 835.2 m +240.2 834 239.8 831.2 v +239.4 828.4 237 828 237.8 825.2 c +238.6 822.4 240.6 820 240.6 824 c +240.6 828 242.2 830 243 831.2 c +243.8 832.4 245.4 836.8 242.2 835.2 c +f +233.4 774 m +225 778 221.8 781.6 v +218.6 785.2 219.052 780.034 214.2 780.4 c +208.353 780.841 209.4 796.8 y +205.4 789.2 l +204.2 774.8 212.2 777.2 v +216.107 778.372 217.4 776.8 215.8 776 c +214.2 775.2 221.4 774.8 218.6 773.2 c +215.8 771.6 230.2 776.8 227.8 766.4 C +233.4 774 L +f +220.8 759.6 m +205.4 755.2 201.8 764.8 V +197 762.4 199.2 759.4 v +201.4 756.4 202.6 756 y +208 754.8 207.4 754 v +206.8 753.2 204.4 749.8 y +214.6 755.8 220.8 759.6 v +f +1 g +449.201 681.399 m +448.774 679.265 447.103 678.464 445.201 677.799 C +443.284 678.757 440.686 681.863 438.801 679.799 C +438.327 680.279 437.548 680.339 437.204 681.001 c +436.739 681.899 437.011 682.945 436.669 683.743 c +436.124 685.015 435.415 686.381 435.601 687.799 C +437.407 688.511 438.002 690.417 437.528 692.18 c +437.459 692.437 437.03 692.634 437.23 692.983 c +437.416 693.306 437.734 693.533 438.001 693.8 C +437.866 693.665 437.721 693.432 437.61 693.452 c +437 693.558 437.124 694.195 437.254 694.582 c +437.839 696.328 439.853 696.592 441.201 695.4 C +441.457 695.965 441.966 695.771 442.401 695.8 C +442.351 696.379 442.759 696.906 442.957 697.326 c +443.475 698.424 445.104 697.318 445.901 697.93 c +446.977 698.755 448.04 699.454 449.118 698.851 c +450.927 697.838 452.636 696.626 453.835 694.885 c +454.41 694.051 454.65 692.77 454.592 691.812 c +454.554 691.165 453.173 691.517 452.83 690.588 c +452.185 688.84 454.016 688.321 454.772 686.983 c +454.97 686.634 454.706 686.33 454.391 686.232 c +453.98 686.104 453.196 686.293 453.334 685.84 c +454.306 682.647 451.55 681.969 449.201 681.399 C +f +439.6 661.799 m +439.593 663.537 437.992 665.293 439.201 666.999 C +439.336 666.865 439.467 666.644 439.601 666.644 c +439.736 666.644 439.867 666.865 440.001 666.999 C +441.496 664.783 445.148 663.855 445.006 661.009 c +444.984 660.562 443.897 659.644 444.801 658.999 C +442.988 657.651 442.933 655.281 442.001 653.399 C +440.763 653.685 439.551 654.048 438.401 654.599 C +438.753 656.085 438.636 657.769 439.456 659.089 c +439.89 659.787 439.603 660.866 439.6 661.799 c +f +0.8 g +273.4 670.799 m +256.542 660.663 270.6 675.999 v +279.4 685.599 289.4 691.199 y +299.8 695.6 303.4 696.8 v +307 698 322.2 703.2 325.4 703.6 c +328.6 704 338.2 708 345 704 c +351.8 700 359.8 695.6 y +343.4 704 339.8 701.6 v +336.2 699.2 329 699.6 323 696.4 C +308.2 691.999 305 689.999 v +301.8 687.999 291.4 676.399 289.8 677.199 c +288.2 677.999 290.2 678.399 291.4 681.199 c +292.6 683.999 290.6 685.599 282.6 679.199 c +274.6 672.799 273.4 670.799 Y +f +0 g +280.805 676.766 m +282.215 689.806 290.693 688.141 V +298.919 692.311 301.641 694.279 V +309.78 695.981 311.09 696.598 v +329.569 705.298 344.288 700.779 344.835 701.899 c +345.381 703.018 365.006 695.901 368.615 691.815 c +369.006 691.372 358.384 697.412 348.686 699.303 c +340.413 700.917 318.811 699.056 307.905 693.52 c +304.932 692.011 295.987 686.227 293.456 686.338 c +290.925 686.45 280.805 676.766 Y +f +0.8 g +277 651.199 m +261.8 653.599 278.6 655.199 V +296.6 657.199 300.6 662.399 V +314.2 671.599 317 671.999 v +319.8 672.399 349.8 679.599 350.2 681.999 c +350.6 684.399 356.2 684.399 357.8 683.599 c +359.4 682.799 358.6 681.599 355.8 680.799 c +353 679.999 321.8 663.599 315.4 662.399 c +309 661.199 297.4 653.599 292.6 652.399 c +287.8 651.199 277 651.199 Y +f +0 g +296.52 658.597 m +287.938 659.426 296.539 660.245 V +305.355 663.669 307.403 666.332 V +314.367 671.043 315.8 671.247 v +317.234 671.452 331.194 675.139 331.399 676.367 c +331.604 677.596 365.67 690.177 370.09 686.987 c +373.001 684.886 363.1 686.563 353.466 682.153 c +352.111 681.533 318.258 666.946 314.981 666.332 c +311.704 665.717 305.765 661.826 303.307 661.212 c +300.85 660.597 296.52 658.597 Y +f +288.6 656.399 m +293.8 656.799 292.6 655.199 v +291.4 653.599 289 654.399 y +288.6 656.399 l +f +281.4 654.799 m +286.6 655.199 285.4 653.599 v +284.2 651.999 281.8 652.799 y +281.4 654.799 l +f +271 653.199 m +276.2 653.599 275 651.999 v +273.8 650.399 271.4 651.199 y +271 653.199 l +f +263.4 652.399 m +268.6 652.799 267.4 651.199 v +266.2 649.599 263.8 650.399 y +263.4 652.399 l +f +301.8 691.999 m +306.2 691.999 305 690.399 v +303.8 688.799 300.6 689.199 y +301.8 691.999 l +f +291.8 686.399 m +298.306 688.54 295.8 685.199 v +294.6 683.599 292.2 684.399 y +291.8 686.399 l +f +280.6 681.599 m +285.8 681.999 284.6 680.399 v +283.4 678.799 281 679.599 y +280.6 681.599 l +f +273 675.599 m +278.2 675.999 277 674.399 v +275.8 672.799 273.4 673.599 y +273 675.599 l +f +266.2 670.799 m +271.4 671.199 270.2 669.599 v +269 667.999 266.6 668.799 y +266.2 670.799 l +f +305.282 664.402 m +312.203 664.934 310.606 662.805 v +309.009 660.675 305.814 661.74 y +305.282 664.402 l +f +315.682 669.202 m +322.603 669.734 321.006 667.605 v +319.409 665.475 316.214 666.54 y +315.682 669.202 l +f +326.482 673.602 m +333.403 674.134 331.806 672.005 v +330.209 669.875 327.014 670.94 y +326.482 673.602 l +f +336.882 678.402 m +343.803 678.934 342.206 676.805 v +340.609 674.675 337.414 675.74 y +336.882 678.402 l +f +309.282 696.402 m +316.203 696.934 314.606 694.805 v +313.009 692.675 309.014 692.94 y +309.282 696.402 l +f +319.282 699.602 m +326.203 700.134 324.606 698.005 v +323.009 695.875 318.614 696.14 y +319.282 699.602 l +f +296.6 659.599 m +301.8 659.999 300.6 658.399 v +299.4 656.799 297 657.599 y +296.6 659.599 l +f +0.1 0.55 0.85 0.3 k +223.4 758.8 m +219 750 218.6 746.8 V +219.4 755.6 220.6 757.6 v +221.8 759.6 223.4 758.8 y +f +205 744.8 m +201.8 730.4 202.2 727.6 V +201 739.2 201.4 740.4 v +201.8 741.6 205 744.8 y +f +0.8 g +225.8 819.4 m +225.6 816.2 l +223.4 816 l +237.6 803.4 238.2 795.8 V +239 804 225.8 819.4 V +f +0 g +229.784 818.135 m +229.353 818.551 229.572 819.296 229.164 819.556 c +228.355 820.072 230.462 820.129 230.234 820.845 c +229.851 822.051 230.038 822.072 229.916 823.348 c +229.859 823.946 230.447 825.486 230.832 825.926 c +232.278 827.578 230.954 830.51 232.594 832.061 c +232.898 832.35 233.274 832.902 233.559 833.32 c +234.218 834.283 235.402 834.771 236.352 835.599 c +236.67 835.875 236.469 836.702 237.038 836.61 c +237.752 836.495 238.993 836.625 238.948 835.784 c +238.835 833.664 237.506 831.944 236.226 830.276 C +236.677 829.572 236.219 828.937 235.935 828.38 c +234.6 825.76 234.789 822.919 234.615 820.079 c +234.61 819.994 234.303 819.916 234.311 819.863 c +234.664 817.528 235.248 815.329 236.127 813.1 c +236.493 812.17 236.964 811.275 237.114 810.348 c +237.225 809.662 237.328 808.829 236.92 808.124 C +238.955 805.234 237.646 802.583 238.815 799.052 c +239.022 798.427 240.714 796.513 240.251 796.674 c +237.738 797.545 237.626 797.943 237.449 798.696 c +237.303 799.319 236.973 800.696 236.736 801.298 c +236.672 801.462 236.501 803.346 236.423 803.468 c +234.91 805.85 236.268 805.674 234.898 808.032 C +233.47 808.712 232.504 809.816 231.381 810.978 c +231.183 811.182 232.326 811.906 232.145 812.119 c +231.053 813.408 229.9 814.175 230.236 815.668 c +230.391 816.358 230.528 817.415 229.784 818.135 c +f +226.2 816.4 m +226.6 809.6 229 808 v +231.4 806.4 230.2 807.2 227 808.4 c +223.8 809.6 225 810.4 y +222.2 810 224.6 808 v +227 806 230.6 803.6 229 803.6 c +227.4 803.6 219.8 807.6 219.8 810.4 c +219.8 813.2 218.8 817.3 y +219.9 818.1 224.7 818 V +226.1 817.3 226.2 816.4 V +f +1 g +1 J 0.1 w +225.4 797.8 m +216.88 800.591 198.4 797.2 V +207.431 799.278 226.2 797 v +236.5 795.75 225.4 797.8 Y +b +227.498 797.871 m +219.252 801.389 200.547 799.608 V +209.725 800.897 228.226 797.005 v +238.38 794.869 227.498 797.871 Y +b +229.286 797.778 m +221.324 801.899 202.539 801.514 V +211.787 802.118 229.948 796.86 v +239.914 793.975 229.286 797.778 Y +b +230.556 797.555 m +223.732 801.862 206.858 802.96 V +215.197 802.79 231.078 796.681 v +239.794 793.328 230.556 797.555 Y +b +345.84 787.039 m +344.91 786.395 345.124 787.576 v +345.339 788.757 373.547 801.927 377.161 801.677 C +346.913 788.471 345.84 787.039 V +b +342.446 786.4 m +341.57 785.685 341.691 786.879 v +341.812 788.073 368.899 803.418 372.521 803.452 C +343.404 787.911 342.446 786.4 V +b +339.16 785.025 m +338.332 784.253 338.374 785.453 v +338.416 786.652 358.233 802.149 368.045 804.023 C +350.015 795.896 339.16 785.025 V +b +336.284 783.162 m +335.539 782.468 335.577 783.547 v +335.615 784.627 353.449 798.574 362.28 800.26 C +346.054 792.946 336.284 783.162 V +b +0.8 g +0 J 1 w +304.6 635.199 m +289.4 637.599 306.2 639.199 V +324.2 641.199 328.2 646.399 V +341.8 655.599 344.6 655.999 v +347.4 656.399 363.8 659.999 364.2 662.399 c +364.6 664.799 370.6 667.199 372.2 666.399 c +373.8 665.599 373.8 656.399 371 655.599 c +368.2 654.799 349.4 647.599 343 646.399 c +336.6 645.199 325 637.599 320.2 636.399 c +315.4 635.199 304.6 635.199 Y +f +0 g +377.6 672.599 m +374.6 670.999 373.4 668.399 V +367 657.799 352.8 654.599 V +329.8 645.599 322 643.599 V +308.6 638.599 301.2 639.399 V +294.2 639.199 300.4 637.599 V +320.6 639.599 324 641.399 V +339.6 646.599 342.6 649.199 v +345.6 651.799 363.8 656.799 366 658.799 c +368.2 660.799 378 669.199 377.6 672.599 C +f +318.882 641.089 m +324.111 641.315 322.958 639.766 v +321.805 638.216 319.357 639.09 y +318.882 641.089 l +f +311.68 639.737 m +316.908 639.963 315.756 638.414 v +314.603 636.864 312.155 637.737 y +311.68 639.737 l +f +301.251 638.489 m +306.48 638.716 305.327 637.166 v +304.174 635.617 301.726 636.49 y +301.251 638.489 l +f +293.617 637.945 m +298.846 638.171 297.693 636.622 v +296.54 635.072 294.092 635.946 y +293.617 637.945 l +f +335.415 648.487 m +342.375 648.788 340.84 646.726 v +339.306 644.664 336.047 645.826 y +335.415 648.487 l +f +345.73 652.912 m +351.689 656.213 351.155 651.151 v +350.885 648.595 346.362 650.251 y +345.73 652.912 l +f +354.862 655.726 m +362.021 659.427 360.287 653.965 v +359.509 651.515 355.493 653.065 y +354.862 655.726 l +f +364.376 660.551 m +368.735 665.452 369.801 658.79 v +370.207 656.252 365.008 657.89 y +364.376 660.551 l +f +326.834 644.003 m +332.062 644.23 330.91 642.68 v +329.757 641.131 327.308 642.004 y +326.834 644.003 l +f +1 g +1 J 0.1 w +362.434 765.397 m +361.708 764.732 361.707 765.803 v +361.707 766.873 379.191 780.137 388.034 781.521 C +371.935 774.792 362.434 765.397 V +b +0 g +0 J 1 w +365.4 701.6 m +387.401 679.199 396.601 675.599 V +405.801 664.399 401.801 638.399 V +398.601 630.799 395.401 651.599 V +398.601 676.799 387.401 660.799 V +379 670.699 385.4 670.399 V +388.601 668.399 389.001 669.999 v +389.401 671.599 381.4 685.199 364.2 699.6 c +347 714 365.4 701.6 Y +f +1 g +1 J 0.1 w +307 662.799 m +306.8 664.599 308.6 663.799 v +310.4 662.999 404.601 656.799 436.201 632.799 C +391.001 655.999 307 662.799 V +b +317.4 667.199 m +317.2 668.999 319 668.199 v +320.8 667.399 457.401 668.399 481.001 635.999 C +459.001 661.199 317.4 667.199 V +b +329 671.199 m +328.8 672.999 330.6 672.199 v +332.4 671.399 505.801 684.399 529.401 651.999 C +519.801 677.599 329 671.199 V +b +339 675.999 m +338.8 677.799 340.6 676.999 v +342.4 676.199 464.601 714.8 488.201 682.399 C +474.801 707 339 675.999 V +b +281 653.199 m +280.8 654.999 282.6 654.199 v +284.4 653.399 302.2 651.199 304.2 612.399 C +297 654.399 281 653.199 V +b +272.2 651.599 m +272 653.399 273.8 652.599 v +275.6 651.799 289.8 656.399 287 617.599 C +288.2 652.799 272.2 651.599 V +b +264.2 651.199 m +264 652.999 265.8 652.199 v +267.6 651.399 283 650.799 270.6 628.399 C +280.2 652.399 264.2 651.199 V +b +311.526 695.535 m +311.082 693.536 312.631 694.753 v +328.699 707.378 361.141 766.28 416.826 771.914 C +378.518 784.024 311.526 695.535 V +b +322.726 697.335 m +321.363 698.528 323.231 699.153 v +325.099 699.778 437.541 772.28 476.826 764.314 C +449.719 771.824 322.726 697.335 V +b +301.885 691.233 m +301.376 689.634 303.087 690.61 v +312.062 695.73 315.677 752.941 359.254 754.196 C +326.843 768.91 301.885 691.233 V +b +281.962 680.207 m +280.885 678.921 282.838 679.175 v +293.084 680.507 314.489 721.778 358.928 716.699 C +326.962 731.045 281.962 680.207 V +b +293.2 686.333 m +292.389 684.864 294.258 685.489 v +304.057 688.763 317.141 733.375 361.729 736.922 C +327.603 744.865 293.2 686.333 V +b +274.922 675.088 m +274.049 674.046 275.631 674.252 v +283.93 675.331 301.268 708.76 337.264 704.646 C +311.371 716.266 274.922 675.088 V +b +267.323 669.179 m +266.318 668.134 267.909 668.252 v +272.077 668.561 302.715 701.64 321.183 686.138 C +309.168 704.861 267.323 669.179 V +b +336.855 701.102 m +335.654 702.457 337.586 702.842 v +339.518 703.226 460.221 760.939 498.184 748.073 C +472.243 758.947 336.855 701.102 V +b +303.4 636.799 m +303.2 638.599 305 637.799 v +306.8 636.999 322.2 636.399 309.8 613.999 C +319.4 637.999 303.4 636.799 V +b +313.8 638.399 m +313.6 640.199 315.4 639.399 v +317.2 638.599 335 636.399 337 597.599 C +329.8 639.599 313.8 638.399 V +b +320.6 639.999 m +320.4 641.799 322.2 640.999 v +324 640.199 348.6 636.799 372.2 604.399 C +336.6 641.199 320.6 639.999 V +b +328.225 642.028 m +327.788 643.786 329.678 643.232 v +331.568 642.678 352.002 644.577 390.099 610.401 C +343.924 645.344 328.225 642.028 V +b +338.625 646.428 m +338.188 648.186 340.078 647.632 v +341.968 647.078 376.802 642.577 428.499 607.601 C +354.324 649.744 338.625 646.428 V +b +298.2 657.999 m +298 659.799 299.8 658.999 v +301.6 658.199 355 655.599 385.4 628.799 C +350.499 653.574 298.2 657.999 V +b +288.2 653.999 m +288 655.799 289.8 654.999 v +291.6 654.199 316.2 650.799 339.8 618.399 C +304.2 655.199 288.2 653.999 V +b +349.503 651.038 m +348.938 652.759 350.864 652.345 v +352.79 651.932 387.86 649.996 441.981 618.902 C +364.317 653.296 349.503 651.038 V +b +357.903 653.438 m +357.338 655.159 359.264 654.745 v +361.19 654.332 396.26 652.396 450.381 621.302 C +373.317 656.096 357.903 653.438 V +b +367.503 658.438 m +366.938 660.159 368.864 659.745 v +370.79 659.332 413.86 654.996 503.582 620.702 C +382.917 661.096 367.503 658.438 V +b +0 g +0 J 1 w +256.2 651.599 m +261.4 651.999 260.2 650.399 v +259 648.799 256.6 649.599 y +256.2 651.599 l +f +287 637.599 m +292.2 637.999 291 636.399 v +289.8 634.799 287.4 635.599 y +287 637.599 l +f +278.2 637.999 m +283.4 638.399 282.2 636.799 v +281 635.199 278.6 635.999 y +278.2 637.999 l +f +182.831 649.818 m +187.876 648.495 186.218 647.376 v +184.561 646.256 182.554 647.798 y +182.831 649.818 l +f +184.831 659.418 m +189.876 658.095 188.218 656.976 v +186.561 655.856 184.554 657.398 y +184.831 659.418 l +f +177.631 663.818 m +182.676 662.495 181.018 661.376 v +179.361 660.256 177.354 661.798 y +177.631 663.818 l +f +0.8 g +1 J 0.1 w +257.4 588.799 m +255.8 588.799 251.8 586.799 V +249.8 586.799 238.6 583.199 233 573.199 C +245.4 582.799 257.4 588.799 V +f +345.116 496.153 m +345.257 495.895 345.312 495.475 345.604 495.458 c +346.262 495.418 347.495 495.117 347.37 495.753 c +346.522 500.059 345.648 504.996 341.515 506.803 c +340.876 507.082 339.434 506.669 339.36 505.785 c +339.233 504.261 339.116 502.912 339.425 501.446 c +339.725 500.025 341.883 500.015 342.8 501.399 C +343.736 499.727 344.168 497.884 345.116 496.153 c +f +334.038 491.419 m +334.786 490.006 334.659 488.147 336.074 487.584 c +336.814 487.29 338.664 488.265 338.246 489.339 c +337.444 491.4 337.056 493.639 335.667 495.45 c +335.467 495.712 335.707 496.245 335.547 496.573 c +334.953 497.793 333.808 498.528 332.4 498.199 C +331.285 495.996 332.433 493.867 333.955 492.158 c +334.091 492.006 333.925 491.63 334.038 491.419 c +f +294.436 496.609 m +294.328 496.986 294.29 497.449 294.455 497.77 c +294.986 498.803 295.779 499.925 295.442 500.947 c +295.094 502.003 293.978 501.821 293.328 501.252 c +292.193 500.258 292.144 498.432 291.453 497.073 c +291.257 496.687 291.308 496.114 290.867 495.723 c +290.393 495.302 289.953 493.778 290.049 493.207 c +290.102 492.894 289.919 482.986 290.141 483.249 c +290.76 483.982 293.81 493.716 293.879 494.608 c +293.936 495.339 294.668 495.804 294.436 496.609 c +f +268.798 503.401 m +271.432 505.9 274.222 508.861 273.78 512.573 c +273.664 513.549 271.889 513.022 271.702 512.176 c +270.9 508.551 268.861 505.89 266.293 503.498 c +264.097 501.451 262.235 495.107 262 494.599 C +265.697 499.855 267.954 502.601 268.798 503.401 c +f +255.224 509.365 m +255.747 509.735 255.445 510.226 255.662 510.558 c +256.615 512.016 257.916 513.262 257.934 515 c +257.937 515.277 257.559 515.586 257.224 515.362 c +256.947 515.178 256.605 515.048 256.497 514.918 c +254.467 512.469 253.067 509.798 251.624 506.986 c +251.441 506.629 250.297 502.138 250.61 502.027 c +250.849 501.942 252.569 506.123 252.779 506.237 c +254.042 506.923 254.054 508.538 255.224 509.365 c +f +271.957 489.821 m +272.401 490.69 273.977 491.892 273.864 492.781 c +273.746 493.709 274.214 495.152 273.302 494.464 c +272.045 493.516 268.596 492.167 268.326 486.359 c +268.3 485.788 271.274 488.481 271.957 489.821 c +f +286.4 506.999 m +286.8 507.667 287.508 507.194 287.967 507.457 c +288.615 507.829 289.226 508.387 289.518 509.036 c +290.488 511.185 292.257 513.005 292.4 515.399 C +290.909 516.804 290.23 514.764 289.6 513.799 C +288.277 515.446 287.278 513.572 285.978 513.053 c +285.908 513.025 285.695 513.372 285.62 513.345 c +284.443 512.905 283.763 511.824 282.765 511.043 c +282.594 510.909 282.189 511.089 282.042 510.953 c +281.39 510.35 280.417 510.025 280.137 509.343 c +279.027 506.636 275.887 504.541 274 496.999 C +274.381 496.09 278.512 503.641 278.999 504.339 c +279.835 505.535 279.953 502.678 281.229 503.344 c +281.28 503.371 281.466 503.133 281.6 502.999 C +281.794 503.279 282.012 503.508 282.4 503.399 C +282.4 503.799 282.266 504.355 282.467 504.514 c +283.704 505.491 283.62 506.559 284.4 507.799 C +284.858 507.01 285.919 507.729 286.4 506.999 C +f +346.2 452.599 m +353.6 472.999 349.2 484.199 V +360.6 462.599 356 451.399 V +355.6 461.799 351.6 466.799 V +347.6 453.999 346.2 452.599 V +f +331.4 455.199 m +336.8 463.999 328.8 482.399 V +328 461.999 321.2 450.999 V +335.4 471.199 331.4 455.199 V +f +321.4 457.199 m +321.2 477.199 321.6 480.199 V +317.8 463.599 307.6 453.999 V +322 465.999 321.4 457.199 V +f +311.8 489.199 m +317.8 475.599 307.8 457.199 V +314.2 469.399 309.4 476.399 V +312 479.799 311.8 489.199 V +f +292.6 457.599 m +291.6 473.199 293.4 475.399 V +293.6 481.799 293.2 482.799 V +297.2 488.999 297.4 481.599 V +298.8 473.799 301.6 469.199 V +305.2 463.799 305 457.399 V +295 487.599 292.6 457.599 V +f +289 485.199 m +282.4 474.399 280.6 455.399 V +279.2 461.599 283 475.999 V +287.2 491.399 289 485.199 V +f +267.2 465.399 m +272.2 470.799 273.6 475.799 V +277.2 491.599 270.8 482.999 V +271 474.999 262.8 467.599 V +267.6 469.999 267.2 465.399 V +f +261.4 470.399 m +264.8 487.799 265.6 488.599 V +267.4 491.999 264.6 488.799 V +255.8 469.599 251.8 462.999 V +259.8 472.199 261.4 470.399 V +f +255.6 486.999 m +267.2 509.399 245.4 483.599 V +256.4 493.399 255.6 486.999 V +f +240.2 501.599 m +245 520.399 247.6 520.199 V +255.8 529.199 249.2 518.599 V +243.2 508.999 243.8 499.199 V +243.2 508.799 240.2 501.599 V +f +570.5 513 m +558.5 523 556 526.5 V +569.5 508 569.5 501 V +572 508.5 570.5 513 V +f +576 535 m +555 550 551.5 557.5 V +578 528 578 523.5 V +578.5 532.5 576 535 V +f +593 689 m +581 697 579.5 695 V +590 688.5 592.5 680 V +591 689 593 689 V +f +601.5 608.5 m +584 620.5 l +603 603.5 603.5 599.5 V +601.5 608.5 L +f +0 g +1 w +210.75 631 m +232.75 626.25 l +S +261 469 m +260.5 472.5 251.5 462 v +S +266.5 464 m +268.5 470.5 262 466 v +S +320.5 455.5 m +322 466.5 310.5 453.5 v +S + +showpage + +%%Trailer diff --git a/vendor/github.com/llgcode/draw2d/samples/samples.go b/vendor/github.com/llgcode/draw2d/samples/samples.go new file mode 100644 index 0000000..ff30559 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples/samples.go @@ -0,0 +1,24 @@ +// Package samples provides examples which can be used with different +// backends. They are also used for testing and coverage of the +// draw2d package. +package samples + +import "fmt" + +// Resource returns a resource filename for testing. +func Resource(folder, filename, ext string) string { + var root string + if ext == "pdf" { + root = "../" + } + return fmt.Sprintf("%sresource/%s/%s", root, folder, filename) +} + +// Output returns the output filename for testing. +func Output(name, ext string) string { + var root string + if ext == "pdf" { + root = "../" + } + return fmt.Sprintf("%soutput/samples/%s.%s", root, name, ext) +} diff --git a/vendor/github.com/llgcode/draw2d/samples_test.go b/vendor/github.com/llgcode/draw2d/samples_test.go new file mode 100644 index 0000000..fe22f06 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/samples_test.go @@ -0,0 +1,60 @@ +// See also test_test.go + +package draw2d_test + +import ( + "testing" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/samples/android" + "github.com/llgcode/draw2d/samples/frameimage" + "github.com/llgcode/draw2d/samples/geometry" + "github.com/llgcode/draw2d/samples/gopher" + "github.com/llgcode/draw2d/samples/gopher2" + "github.com/llgcode/draw2d/samples/helloworld" + "github.com/llgcode/draw2d/samples/line" + "github.com/llgcode/draw2d/samples/linecapjoin" + "github.com/llgcode/draw2d/samples/postscript" +) + +func TestSampleAndroid(t *testing.T) { + test(t, android.Main) +} + +func TestSampleGeometry(t *testing.T) { + // Set the global folder for searching fonts + // The pdf backend needs for every ttf file its corresponding + // json/.z file which is generated by gofpdf/makefont. + draw2d.SetFontFolder("resource/font") + test(t, geometry.Main) +} + +func TestSampleGopher(t *testing.T) { + test(t, gopher.Main) +} + +func TestSampleGopher2(t *testing.T) { + test(t, gopher2.Main) +} + +func TestSampleHelloWorld(t *testing.T) { + // Set the global folder for searching fonts + draw2d.SetFontFolder("resource/font") + test(t, helloworld.Main) +} + +func TestSampleFrameImage(t *testing.T) { + test(t, frameimage.Main) +} + +func TestSampleLine(t *testing.T) { + test(t, line.Main) +} + +func TestSampleLineCapJoin(t *testing.T) { + test(t, linecapjoin.Main) +} + +func TestSamplePostscript(t *testing.T) { + test(t, postscript.Main) +} diff --git a/vendor/github.com/llgcode/draw2d/test b/vendor/github.com/llgcode/draw2d/test new file mode 100755 index 0000000..2a387e6 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/test @@ -0,0 +1,8 @@ +echo golint +golint ./... | grep "draw2dpdf\|samples\|^advanced_path\|^arc\|draw2d[.]\|fileutil\|^gc\|math\|^path[.]\|rgba_interpolation\|test\|vertex2d" +echo +echo go vet +go vet ./... +echo +echo go test +go test -cover ./... | grep -v "no test" \ No newline at end of file diff --git a/vendor/github.com/llgcode/draw2d/test_test.go b/vendor/github.com/llgcode/draw2d/test_test.go new file mode 100644 index 0000000..33b8937 --- /dev/null +++ b/vendor/github.com/llgcode/draw2d/test_test.go @@ -0,0 +1,30 @@ +// Package draw2d_test gives test coverage with the command: +// go test -cover ./... | grep -v "no test" +package draw2d_test + +import ( + "image" + "testing" + + "github.com/llgcode/draw2d" + "github.com/llgcode/draw2d/draw2dimg" +) + +type sample func(gc draw2d.GraphicContext, ext string) (string, error) + +func test(t *testing.T, draw sample) { + // Initialize the graphic context on an RGBA image + dest := image.NewRGBA(image.Rect(0, 0, 297, 210.0)) + gc := draw2dimg.NewGraphicContext(dest) + // Draw Android logo + output, err := draw(gc, "png") + if err != nil { + t.Errorf("Drawing %q failed: %v", output, err) + return + } + // Save to png + err = draw2dimg.SaveToPngFile(output, dest) + if err != nil { + t.Errorf("Saving %q failed: %v", output, err) + } +} diff --git a/vendor/github.com/llgcode/ps/.gitignore b/vendor/github.com/llgcode/ps/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/llgcode/ps/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/llgcode/ps/LICENSE.md b/vendor/github.com/llgcode/ps/LICENSE.md new file mode 100644 index 0000000..863a3bc --- /dev/null +++ b/vendor/github.com/llgcode/ps/LICENSE.md @@ -0,0 +1,18 @@ +Copyright (c) 2010, Laurent Le Goff +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/llgcode/ps/README.md b/vendor/github.com/llgcode/ps/README.md new file mode 100644 index 0000000..62899fb --- /dev/null +++ b/vendor/github.com/llgcode/ps/README.md @@ -0,0 +1,7 @@ +# ps + +[![Coverage](http://gocover.io/_badge/github.com/llgcode/ps?0)](http://gocover.io/github.com/llgcode/ps) +[![GoDoc](https://godoc.org/github.com/llgcode/ps?status.svg)](https://godoc.org/github.com/llgcode/ps) + +Postscript interpreter written in go + diff --git a/vendor/github.com/llgcode/ps/interpreter.go b/vendor/github.com/llgcode/ps/interpreter.go new file mode 100644 index 0000000..63662a0 --- /dev/null +++ b/vendor/github.com/llgcode/ps/interpreter.go @@ -0,0 +1,312 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +import ( + "io" + "log" + "os" + "strconv" + + "github.com/llgcode/draw2d" +) + +type Interpreter struct { + valueStack ValueStack + dictionaryStack DictionaryStack + gc draw2d.GraphicContext +} + +type Value interface{} + +type ValueStack []Value + +type Dictionary map[string]Value + +type DictionaryStack []Dictionary + +type Operator interface { + Execute(interpreter *Interpreter) +} + +func NewInterpreter(gc draw2d.GraphicContext) *Interpreter { + interpreter := new(Interpreter) + interpreter.valueStack = make([]Value, 0, 100) + interpreter.dictionaryStack = make([]Dictionary, 2, 10) + interpreter.dictionaryStack[0] = NewDictionary(100) // System dictionary + interpreter.dictionaryStack[1] = NewDictionary(100) // user dictionary + initSystemOperators(interpreter) + interpreter.gc = gc + return interpreter +} + +func NewDictionary(prealloc int) Dictionary { + return make(Dictionary, prealloc) +} + +func (interpreter *Interpreter) SetGraphicContext(gc draw2d.GraphicContext) { + interpreter.gc = gc +} + +func (interpreter *Interpreter) GetGraphicContext() draw2d.GraphicContext { + return interpreter.gc +} +func (interpreter *Interpreter) Execute(reader io.Reader) { + var scanner Scanner + scanner.Init(reader) + token := scanner.Scan() + for token != EOF { + interpreter.scan(&scanner, token) + token = scanner.Scan() + } +} + +func (interpreter *Interpreter) ExecuteFile(filePath string) error { + src, err := os.Open(filePath) + if src == nil { + log.Printf("can't open file; err=%s\n", err.Error()) + return err + } + defer src.Close() + interpreter.Execute(src) + return nil +} +func (interpreter *Interpreter) computeReference(ref string) { + value, _ := interpreter.FindValueInDictionaries(ref) + if value == nil { + log.Printf("Unknown def: %s\n", ref) + } else { + operator, isOperator := value.(Operator) + if isOperator { + operator.Execute(interpreter) + } else { + interpreter.Push(value) + } + } +} +func (interpreter *Interpreter) scan(scanner *Scanner, token int) { + if token == Ident { + switch scanner.TokenText() { + case "true": + interpreter.Push(true) + case "false": + interpreter.Push(false) + case "null": + interpreter.Push(nil) + default: + interpreter.computeReference(scanner.TokenText()) + } + } else if token == '/' { + scanner.Scan() + interpreter.Push("/" + scanner.TokenText()) + } else if token == '[' { + interpreter.Push(interpreter.scanArray(scanner)) + } else if token == '{' { + // procedure + interpreter.Push(interpreter.scanProcedure(scanner)) + } else if token == Float || token == Int { + f, err := strconv.ParseFloat(scanner.TokenText(), 64) + if err != nil { + log.Printf("Float expected: %s\n", scanner.TokenText()) + interpreter.Push(scanner.TokenText()) + } else { + interpreter.Push(f) + } + } else { + interpreter.Push(scanner.TokenText()) + } +} + +func (interpreter *Interpreter) scanArray(scanner *Scanner) []Value { + array := make([]Value, 0, 10) + token := scanner.Scan() + for token != EOF && token != ']' { + if token == Ident { + var v Value = scanner.TokenText() + switch scanner.TokenText() { + case "true": + v = true + case "false": + v = false + case "null": + v = nil + } + array = append(array, v) + } else { + interpreter.scan(scanner, token) + array = append(array, interpreter.Pop()) + } + token = scanner.Scan() + } + return array +} + +func (interpreter *Interpreter) scanProcedure(scanner *Scanner) *ProcedureDefinition { + proceduredef := NewProcedureDefinition() + token := scanner.Scan() + for token != EOF && token != '}' { + if token == Ident { + var v Value = scanner.TokenText() + switch scanner.TokenText() { + case "true": + v = true + case "false": + v = false + case "null": + v = nil + } + proceduredef.Add(v) + } else { + interpreter.scan(scanner, token) + proceduredef.Add(interpreter.Pop()) + } + token = scanner.Scan() + } + return proceduredef +} + +//Dictionary Operation + +func (interpreter *Interpreter) PushDictionary(dictionary Dictionary) { + interpreter.dictionaryStack = append(interpreter.dictionaryStack, dictionary) +} + +func (interpreter *Interpreter) PopDictionary() Dictionary { + stackPointer := len(interpreter.dictionaryStack) - 1 + dictionary := interpreter.dictionaryStack[stackPointer] + interpreter.dictionaryStack = interpreter.dictionaryStack[0:stackPointer] + return dictionary +} + +func (interpreter *Interpreter) PeekDictionary() Dictionary { + stackPointer := len(interpreter.dictionaryStack) - 1 + return interpreter.dictionaryStack[stackPointer] +} +func (interpreter *Interpreter) ClearDictionaries() { + interpreter.dictionaryStack = interpreter.dictionaryStack[:2] +} + +func (interpreter *Interpreter) DictionaryStackSize() int { + return len(interpreter.dictionaryStack) +} + +func (interpreter *Interpreter) FindValue(name string) Value { + return interpreter.PeekDictionary()[name] +} + +func (interpreter *Interpreter) FindValueInDictionaries(name string) (Value, Dictionary) { + for i := len(interpreter.dictionaryStack) - 1; i >= 0; i-- { + value := interpreter.dictionaryStack[i][name] + if value != nil { + return value, interpreter.dictionaryStack[i] + } + } + return nil, nil +} + +func (interpreter *Interpreter) UserDictionary() Dictionary { + return interpreter.dictionaryStack[0] +} + +func (interpreter *Interpreter) SystemDictionary() Dictionary { + return interpreter.dictionaryStack[0] +} + +func (interpreter *Interpreter) Define(name string, value Value) { + interpreter.PeekDictionary()[name] = value +} + +func (interpreter *Interpreter) SystemDefine(name string, value Value) { + interpreter.dictionaryStack[0][name] = value +} + +//Operand Operation + +func (interpreter *Interpreter) Push(operand Value) { + //log.Printf("Push operand: %v\n", operand) + interpreter.valueStack = append(interpreter.valueStack, operand) +} + +func (interpreter *Interpreter) Pop() Value { + valueStackPointer := len(interpreter.valueStack) - 1 + operand := interpreter.valueStack[valueStackPointer] + interpreter.valueStack = interpreter.valueStack[0:valueStackPointer] + //log.Printf("Pop operand: %v\n", operand) + return operand +} + +func (interpreter *Interpreter) PopValues(n int) []Value { + valueStackPointer := len(interpreter.valueStack) - 1 + operands := make([]Value, n) + copy(operands, interpreter.valueStack[valueStackPointer-n+1:valueStackPointer+1]) + interpreter.valueStack = interpreter.valueStack[0 : valueStackPointer-n+1] + return operands +} + +func (interpreter *Interpreter) GetValues(n int) []Value { + valueStackPointer := len(interpreter.valueStack) - 1 + operands := make([]Value, n) + copy(operands, interpreter.valueStack[valueStackPointer-n+1:valueStackPointer+1]) + return operands +} + +func (interpreter *Interpreter) Get(index int) Value { + valueStackPointer := len(interpreter.valueStack) - 1 + return interpreter.valueStack[valueStackPointer-index] +} + +func (interpreter *Interpreter) Peek() Value { + valueStackPointer := len(interpreter.valueStack) - 1 + return interpreter.valueStack[valueStackPointer] +} + +func (interpreter *Interpreter) OperandSize() int { + return len(interpreter.valueStack) +} + +func (interpreter *Interpreter) ClearOperands() { + interpreter.valueStack = interpreter.valueStack[0:0] +} + +// misc pop + +func (interpreter *Interpreter) PopFloat() float64 { + operand := interpreter.Pop() + return operand.(float64) +} + +func (interpreter *Interpreter) PopInt() int { + f := interpreter.PopFloat() + return int(f) +} + +func (interpreter *Interpreter) PopOperator() Operator { + operator := interpreter.Pop() + return operator.(Operator) +} + +func (interpreter *Interpreter) PopProcedureDefinition() *ProcedureDefinition { + def := interpreter.Pop() + return def.(*ProcedureDefinition) +} + +func (interpreter *Interpreter) PopName() string { + name := interpreter.Pop().(string) + return name[1:] +} + +func (interpreter *Interpreter) PopString() string { + s := interpreter.Pop().(string) + return s[1 : len(s)-1] +} + +func (interpreter *Interpreter) PopBoolean() bool { + s := interpreter.Pop() + return s.(bool) +} + +func (interpreter *Interpreter) PopArray() []Value { + s := interpreter.Pop() + return s.([]Value) +} diff --git a/vendor/github.com/llgcode/ps/operators.go b/vendor/github.com/llgcode/ps/operators.go new file mode 100644 index 0000000..8b8babe --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators.go @@ -0,0 +1,41 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +type OperatorFunc func(interpreter *Interpreter) + +type PrimitiveOperator struct { + f OperatorFunc +} + +func NewOperator(f OperatorFunc) *PrimitiveOperator { + return &PrimitiveOperator{f} +} + +func (o *PrimitiveOperator) Execute(interpreter *Interpreter) { + o.f(interpreter) +} + +func save(interpreter *Interpreter) { + interpreter.Push("VM Snapshot") +} + +func restore(interpreter *Interpreter) { + interpreter.Pop() +} + +func initSystemOperators(interpreter *Interpreter) { + interpreter.SystemDefine("save", NewOperator(save)) + interpreter.SystemDefine("restore", NewOperator(restore)) + initStackOperator(interpreter) + initMathOperators(interpreter) + initArrayOperators(interpreter) + initDictionaryOperators(interpreter) + initRelationalOperators(interpreter) + initControlOperators(interpreter) + initMiscellaneousOperators(interpreter) + initDrawingOperators(interpreter) + + initConflictingOperators(interpreter) +} diff --git a/vendor/github.com/llgcode/ps/operators_array.go b/vendor/github.com/llgcode/ps/operators_array.go new file mode 100644 index 0000000..f6cd3a1 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_array.go @@ -0,0 +1,99 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +//int array array -> Create array of length int +func array(interpreter *Interpreter) { + interpreter.Push(make([]Value, interpreter.PopInt())) +} + +//array length int -> Return number of elements in array +func lengtharray(interpreter *Interpreter) { + interpreter.Push(float64(len(interpreter.Pop().([]Value)))) +} + +//array index get any -> Return array element indexed by index +func getarray(interpreter *Interpreter) { + index := interpreter.PopInt() + array := interpreter.Pop().([]Value) + interpreter.Push(array[index]) +} + +//array index any put – -> Put any into array at index +func putarray(interpreter *Interpreter) { + value := interpreter.Pop() + index := interpreter.PopInt() + array := interpreter.Pop().([]Value) + array[index] = value +} + +//array index count getinterval subarray -> Return subarray of array starting at index for count elements +func getinterval(interpreter *Interpreter) { + count := interpreter.PopInt() + index := interpreter.PopInt() + array := interpreter.Pop().([]Value) + subarray := make([]Value, count) + copy(subarray, array[index:index+count]) + interpreter.Push(subarray) +} + +//array1 index array2 putinterval – Replace subarray of array1 starting at index by array2|packedarray2 +func putinterval(interpreter *Interpreter) { + array2 := interpreter.Pop().([]Value) + index := interpreter.PopInt() + array1 := interpreter.Pop().([]Value) + for i, v := range array2 { + array1[i+index] = v + } +} + +// any0 … anyn−1 array astore array +// stores the objects any0 to anyn−1 from the operand stack into array, where n is the length of array +func astore(interpreter *Interpreter) { + array := interpreter.Pop().([]Value) + n := len(array) + for i := 0; i < n; i++ { + array[i] = interpreter.Pop() + } +} + +//array aload any0 … any-1 array +//Push all elements of array on stack +func aload(interpreter *Interpreter) { + array := interpreter.Pop().([]Value) + for _, v := range array { + interpreter.Push(v) + } + interpreter.Push(array) +} + +//array proc forall – Execute proc for each element of array +func forallarray(interpreter *Interpreter) { + proc := NewProcedure(interpreter.PopProcedureDefinition()) + array := interpreter.Pop().([]Value) + for _, v := range array { + interpreter.Push(v) + proc.Execute(interpreter) + } +} + +var packing bool = false + +func currentpacking(interpreter *Interpreter) { + interpreter.Push(packing) +} +func setpacking(interpreter *Interpreter) { + packing = interpreter.PopBoolean() +} + +func initArrayOperators(interpreter *Interpreter) { + interpreter.SystemDefine("array", NewOperator(array)) + interpreter.SystemDefine("getinterval", NewOperator(getinterval)) + interpreter.SystemDefine("putinterval", NewOperator(putinterval)) + interpreter.SystemDefine("astore", NewOperator(astore)) + interpreter.SystemDefine("aload", NewOperator(aload)) + interpreter.SystemDefine("currentpacking", NewOperator(currentpacking)) + interpreter.SystemDefine("setpacking", NewOperator(setpacking)) + +} diff --git a/vendor/github.com/llgcode/ps/operators_conflict.go b/vendor/github.com/llgcode/ps/operators_conflict.go new file mode 100644 index 0000000..9716202 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_conflict.go @@ -0,0 +1,96 @@ +package ps + +import ( + "fmt" + "log" +) + +// dictionary copy conflict with stack copy +// type dicriminant +func commonCopy(interpreter *Interpreter) { + switch v := interpreter.Peek().(type) { + case float64: + copystack(interpreter) + case Dictionary: + copydict(interpreter) + default: + panic(fmt.Sprintf("Not yet implemented: %v copy", v)) + } +} +func commonforall(interpreter *Interpreter) { + switch v := interpreter.Get(1).(type) { + case Dictionary: + foralldict(interpreter) + case []Value: + forallarray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v proc forall", v)) + } +} + +func length(interpreter *Interpreter) { + switch v := interpreter.Peek().(type) { + case Dictionary: + lengthdict(interpreter) + case []Value: + lengtharray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v length", v)) + } +} +func get(interpreter *Interpreter) { + switch v := interpreter.Get(1).(type) { + case Dictionary: + getdict(interpreter) + case []Value: + getarray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v index get", v)) + } +} +func put(interpreter *Interpreter) { + switch v := interpreter.Get(2).(type) { + case Dictionary: + putdict(interpreter) + case []Value: + putarray(interpreter) + case string: + panic("Not yet implemented: string proc forall") + default: + panic(fmt.Sprintf("Not yet implemented: %v index any put", v)) + } +} + +func readonly(interpreter *Interpreter) { + log.Println("readonly, not yet implemented") +} + +func cvlit(interpreter *Interpreter) { + log.Println("cvlit, not yet implemented") +} + +func xcheck(interpreter *Interpreter) { + value := interpreter.Pop() + if _, ok := value.(*ProcedureDefinition); ok { + interpreter.Push(true) + } else { + interpreter.Push(false) + } +} + +func initConflictingOperators(interpreter *Interpreter) { + interpreter.SystemDefine("copy", NewOperator(commonCopy)) + interpreter.SystemDefine("forall", NewOperator(commonforall)) + interpreter.SystemDefine("length", NewOperator(length)) + interpreter.SystemDefine("get", NewOperator(get)) + interpreter.SystemDefine("put", NewOperator(put)) + interpreter.SystemDefine("readonly", NewOperator(readonly)) + interpreter.SystemDefine("cvlit", NewOperator(cvlit)) + interpreter.SystemDefine("xcheck", NewOperator(xcheck)) +} diff --git a/vendor/github.com/llgcode/ps/operators_control.go b/vendor/github.com/llgcode/ps/operators_control.go new file mode 100644 index 0000000..1aa411c --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_control.go @@ -0,0 +1,80 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +import ( + "log" +) + +// any exec – Execute arbitrary object +func exec(interpreter *Interpreter) { + value := interpreter.Pop() + if pdef, ok := value.(*ProcedureDefinition); ok { + NewProcedure(pdef).Execute(interpreter) + } else if procedure, ok := value.(*Procedure); ok { + procedure.Execute(interpreter) + } else { + log.Printf("Push value: %v\n", value) + interpreter.Push(value) + } +} + +func ifoperator(interpreter *Interpreter) { + operator := NewProcedure(interpreter.PopProcedureDefinition()) + condition := interpreter.PopBoolean() + if condition { + operator.Execute(interpreter) + } +} + +func ifelse(interpreter *Interpreter) { + operator2 := NewProcedure(interpreter.PopProcedureDefinition()) + operator1 := NewProcedure(interpreter.PopProcedureDefinition()) + condition := interpreter.PopBoolean() + if condition { + operator1.Execute(interpreter) + } else { + operator2.Execute(interpreter) + } +} + +func foroperator(interpreter *Interpreter) { + proc := NewProcedure(interpreter.PopProcedureDefinition()) + limit := interpreter.PopFloat() + inc := interpreter.PopFloat() + initial := interpreter.PopFloat() + + for i := initial; i <= limit; i += inc { + interpreter.Push(i) + proc.Execute(interpreter) + } +} + +func repeat(interpreter *Interpreter) { + proc := NewProcedure(interpreter.PopProcedureDefinition()) + times := interpreter.PopInt() + for i := 0; i <= times; i++ { + proc.Execute(interpreter) + } +} + +// any stopped bool -> Establish context for catching stop +func stopped(interpreter *Interpreter) { + value := interpreter.Pop() + if pdef, ok := value.(*ProcedureDefinition); ok { + NewProcedure(pdef).Execute(interpreter) + } else { + interpreter.Push(value) + } + interpreter.Push(false) +} + +func initControlOperators(interpreter *Interpreter) { + interpreter.SystemDefine("exec", NewOperator(exec)) + interpreter.SystemDefine("if", NewOperator(ifoperator)) + interpreter.SystemDefine("ifelse", NewOperator(ifelse)) + interpreter.SystemDefine("for", NewOperator(foroperator)) + interpreter.SystemDefine("repeat", NewOperator(repeat)) + interpreter.SystemDefine("stopped", NewOperator(stopped)) +} diff --git a/vendor/github.com/llgcode/ps/operators_dictionary.go b/vendor/github.com/llgcode/ps/operators_dictionary.go new file mode 100644 index 0000000..75c7571 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_dictionary.go @@ -0,0 +1,193 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +import ( + "log" +) + +//int dict dict -> Create dictionary with capacity for int elements +func dict(interpreter *Interpreter) { + interpreter.Push(NewDictionary(interpreter.PopInt())) +} + +//dict length int -> Return number of entries in dict +func lengthdict(interpreter *Interpreter) { + dictionary := interpreter.Pop().(Dictionary) + interpreter.Push(float64(len(dictionary))) +} + +//dict maxlength int -> Return current capacity of dict +func maxlength(interpreter *Interpreter) { + interpreter.Pop() + interpreter.Push(float64(999999999)) // push arbitrary value +} + +//dict begin – -> Push dict on dictionary stack +func begin(interpreter *Interpreter) { + interpreter.PushDictionary(interpreter.Pop().(Dictionary)) +} + +//– end – -> Pop current dictionary off dictionary stack +func end(interpreter *Interpreter) { + interpreter.PopDictionary() +} + +//key value def – -> Associate key and value in current dictionary +func def(interpreter *Interpreter) { + value := interpreter.Pop() + name := interpreter.PopName() + if p, ok := value.(*ProcedureDefinition); ok { + value = NewProcedure(p) + } + interpreter.Define(name, value) +} + +//key load value -> Search dictionary stack for key and return associated value +func load(interpreter *Interpreter) { + name := interpreter.PopName() + value, _ := interpreter.FindValueInDictionaries(name) + if value == nil { + log.Printf("Can't find value %s\n", name) + } + interpreter.Push(value) +} + +//key value store – -> Replace topmost definition of key +func store(interpreter *Interpreter) { + value := interpreter.Pop() + key := interpreter.PopName() + _, dictionary := interpreter.FindValueInDictionaries(key) + if dictionary != nil { + dictionary[key] = value + } +} + +//dict key get any -> Return value associated with key in dict +func getdict(interpreter *Interpreter) { + key := interpreter.PopName() + dictionary := interpreter.Pop().(Dictionary) + interpreter.Push(dictionary[key]) +} + +//dict key value put – -> Associate key with value in dict +func putdict(interpreter *Interpreter) { + value := interpreter.Pop() + key := interpreter.PopName() + dictionary := interpreter.Pop().(Dictionary) + dictionary[key] = value +} + +//dict key undef – Remove key and its value from dict +func undef(interpreter *Interpreter) { + key := interpreter.PopName() + dictionary := interpreter.Pop().(Dictionary) + dictionary[key] = nil +} + +//dict key known bool -> Test whether key is in dict +func known(interpreter *Interpreter) { + key := interpreter.PopName() + dictionary := interpreter.Pop().(Dictionary) + interpreter.Push(dictionary[key] != nil) +} + +//key where (dict true) or false -> Find dictionary in which key is defined +func where(interpreter *Interpreter) { + key := interpreter.PopName() + _, dictionary := interpreter.FindValueInDictionaries(key) + if dictionary == nil { + interpreter.Push(false) + } else { + interpreter.Push(dictionary) + interpreter.Push(true) + } +} + +// dict1 dict2 copy dict2 -> Copy contents of dict1 to dict2 +func copydict(interpreter *Interpreter) { + dict2 := interpreter.Pop().(Dictionary) + dict1 := interpreter.Pop().(Dictionary) + for key, value := range dict1 { + dict2[key] = value + } + interpreter.Push(dict2) +} + +//dict proc forall – -> Execute proc for each entry in dict +func foralldict(interpreter *Interpreter) { + proc := NewProcedure(interpreter.PopProcedureDefinition()) + dict := interpreter.Pop().(Dictionary) + for key, value := range dict { + interpreter.Push(key) + interpreter.Push(value) + proc.Execute(interpreter) + } +} + +//– currentdict dict -> Return current dictionary +func currentdict(interpreter *Interpreter) { + interpreter.Push(interpreter.PeekDictionary()) +} + +//– systemdict dict -> Return system dictionary +func systemdict(interpreter *Interpreter) { + interpreter.Push(interpreter.SystemDictionary()) +} + +//– userdict dict -> Return writeable dictionary in local VM +func userdict(interpreter *Interpreter) { + interpreter.Push(interpreter.UserDictionary()) +} + +//– globaldict dict -> Return writeable dictionary in global VM +func globaldict(interpreter *Interpreter) { + interpreter.Push(interpreter.UserDictionary()) +} + +//– statusdict dict -> Return product-dependent dictionary +func statusdict(interpreter *Interpreter) { + interpreter.Push(interpreter.UserDictionary()) +} + +//– countdictstack int -> Count elements on dictionary stack +func countdictstack(interpreter *Interpreter) { + interpreter.Push(float64(interpreter.DictionaryStackSize())) +} + +//array dictstack subarray -> Copy dictionary stack into array +func dictstack(interpreter *Interpreter) { + panic("No yet implemenented") +} + +//– cleardictstack – -> Pop all nonpermanent dictionaries off dictionary stack +func cleardictstack(interpreter *Interpreter) { + interpreter.ClearDictionaries() +} + +func initDictionaryOperators(interpreter *Interpreter) { + interpreter.SystemDefine("dict", NewOperator(dict)) + //interpreter.SystemDefine("length", NewOperator(length)) // already define in operators_conflict.go + interpreter.SystemDefine("maxlength", NewOperator(maxlength)) + interpreter.SystemDefine("begin", NewOperator(begin)) + interpreter.SystemDefine("end", NewOperator(end)) + interpreter.SystemDefine("def", NewOperator(def)) + interpreter.SystemDefine("load", NewOperator(load)) + interpreter.SystemDefine("store", NewOperator(store)) + //interpreter.SystemDefine("get", NewOperator(get)) // already define in operators_conflict.go + //interpreter.SystemDefine("put", NewOperator(put)) // already define in operators_conflict.go + interpreter.SystemDefine("undef", NewOperator(undef)) + interpreter.SystemDefine("known", NewOperator(known)) + interpreter.SystemDefine("where", NewOperator(where)) + //interpreter.SystemDefine("copydict", NewOperator(copydict)) // already define in operators_conflict.go + //interpreter.SystemDefine("foralldict", NewOperator(foralldict)) // already define in operators_conflict.go + interpreter.SystemDefine("currentdict", NewOperator(currentdict)) + interpreter.SystemDefine("systemdict", NewOperator(systemdict)) + interpreter.SystemDefine("userdict", NewOperator(userdict)) + interpreter.SystemDefine("globaldict", NewOperator(globaldict)) + interpreter.SystemDefine("statusdict", NewOperator(statusdict)) + interpreter.SystemDefine("countdictstack", NewOperator(countdictstack)) + interpreter.SystemDefine("dictstack", NewOperator(dictstack)) + interpreter.SystemDefine("cleardictstack", NewOperator(cleardictstack)) +} diff --git a/vendor/github.com/llgcode/ps/operators_graphics.go b/vendor/github.com/llgcode/ps/operators_graphics.go new file mode 100644 index 0000000..ab49373 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_graphics.go @@ -0,0 +1,489 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +// Package ps +package ps + +import ( + "image/color" + "log" + "math" + + "github.com/llgcode/draw2d" +) + +//Path Construction Operators +func newpath(interpreter *Interpreter) { + interpreter.GetGraphicContext().BeginPath() +} + +func closepath(interpreter *Interpreter) { + interpreter.GetGraphicContext().Close() +} + +func currentpoint(interpreter *Interpreter) { + x, y := interpreter.GetGraphicContext().LastPoint() + interpreter.Push(x) + interpreter.Push(y) +} + +func moveto(interpreter *Interpreter) { + y := interpreter.PopFloat() + x := interpreter.PopFloat() + interpreter.GetGraphicContext().MoveTo(x, y) +} + +func rmoveto(interpreter *Interpreter) { + y := interpreter.PopFloat() + x := interpreter.PopFloat() + sx, sy := interpreter.GetGraphicContext().LastPoint() + interpreter.GetGraphicContext().MoveTo(sx+x, sy+y) +} + +func lineto(interpreter *Interpreter) { + y := interpreter.PopFloat() + x := interpreter.PopFloat() + interpreter.GetGraphicContext().LineTo(x, y) +} + +func rlineto(interpreter *Interpreter) { + y := interpreter.PopFloat() + x := interpreter.PopFloat() + sx, sy := interpreter.GetGraphicContext().LastPoint() + interpreter.GetGraphicContext().LineTo(sx+x, sy+y) +} + +func curveto(interpreter *Interpreter) { + cy3 := interpreter.PopFloat() + cx3 := interpreter.PopFloat() + cy2 := interpreter.PopFloat() + cx2 := interpreter.PopFloat() + cy1 := interpreter.PopFloat() + cx1 := interpreter.PopFloat() + interpreter.GetGraphicContext().CubicCurveTo(cx1, cy1, cx2, cy2, cx3, cy3) +} + +func rcurveto(interpreter *Interpreter) { + cy3 := interpreter.PopFloat() + cx3 := interpreter.PopFloat() + cy2 := interpreter.PopFloat() + cx2 := interpreter.PopFloat() + cy1 := interpreter.PopFloat() + cx1 := interpreter.PopFloat() + sx, sy := interpreter.GetGraphicContext().LastPoint() + interpreter.GetGraphicContext().CubicCurveTo(sx+cx1, sy+cy1, sx+cx2, sy+cy2, sx+cx3, sy+cy3) +} + +func arc(interpreter *Interpreter) { + angle2 := interpreter.PopFloat() * (math.Pi / 180.0) + angle1 := interpreter.PopFloat() * (math.Pi / 180.0) + r := interpreter.PopFloat() + y := interpreter.PopFloat() + x := interpreter.PopFloat() + interpreter.GetGraphicContext().ArcTo(x, y, r, r, angle1, angle2-angle1) +} + +func clippath(interpreter *Interpreter) { + //log.Printf("clippath not yet implemented") +} + +func stroke(interpreter *Interpreter) { + interpreter.GetGraphicContext().Stroke() +} + +func fill(interpreter *Interpreter) { + interpreter.GetGraphicContext().Fill() +} + +func gsave(interpreter *Interpreter) { + interpreter.GetGraphicContext().Save() +} + +func grestore(interpreter *Interpreter) { + interpreter.GetGraphicContext().Restore() +} + +func setgray(interpreter *Interpreter) { + gray := interpreter.PopFloat() + color := color.RGBA{uint8(gray * 0xff), uint8(gray * 0xff), uint8(gray * 0xff), 0xff} + interpreter.GetGraphicContext().SetStrokeColor(color) + interpreter.GetGraphicContext().SetFillColor(color) +} + +func setrgbcolor(interpreter *Interpreter) { + blue := interpreter.PopFloat() + green := interpreter.PopFloat() + red := interpreter.PopFloat() + color := color.RGBA{uint8(red * 0xff), uint8(green * 0xff), uint8(blue * 0xff), 0xff} + interpreter.GetGraphicContext().SetStrokeColor(color) + interpreter.GetGraphicContext().SetFillColor(color) +} + +func hsbtorgb(hue, saturation, brightness float64) (red, green, blue int) { + var fr, fg, fb float64 + if saturation == 0 { + fr, fg, fb = brightness, brightness, brightness + } else { + H := (hue - math.Floor(hue)) * 6 + I := int(math.Floor(H)) + F := H - float64(I) + M := brightness * (1 - saturation) + N := brightness * (1 - saturation*F) + K := brightness * (1 - saturation*(1-F)) + + switch I { + case 0: + fr = brightness + fg = K + fb = M + case 1: + fr = N + fg = brightness + fb = M + case 2: + fr = M + fg = brightness + fb = K + case 3: + fr = M + fg = N + fb = brightness + case 4: + fr = K + fg = M + fb = brightness + case 5: + fr = brightness + fg = M + fb = N + default: + fr, fb, fg = 0, 0, 0 + } + } + + red = int(fr*255. + 0.5) + green = int(fg*255. + 0.5) + blue = int(fb*255. + 0.5) + return +} + +func sethsbcolor(interpreter *Interpreter) { + brightness := interpreter.PopFloat() + saturation := interpreter.PopFloat() + hue := interpreter.PopFloat() + red, green, blue := hsbtorgb(hue, saturation, brightness) + color := color.RGBA{uint8(red), uint8(green), uint8(blue), 0xff} + interpreter.GetGraphicContext().SetStrokeColor(color) + interpreter.GetGraphicContext().SetFillColor(color) +} + +func setcmybcolor(interpreter *Interpreter) { + black := interpreter.PopFloat() + yellow := interpreter.PopFloat() + magenta := interpreter.PopFloat() + cyan := interpreter.PopFloat() + + /* cyan = cyan / 255.0; + magenta = magenta / 255.0; + yellow = yellow / 255.0; + black = black / 255.0; */ + + red := cyan*(1.0-black) + black + green := magenta*(1.0-black) + black + blue := yellow*(1.0-black) + black + + red = (1.0-red)*255.0 + 0.5 + green = (1.0-green)*255.0 + 0.5 + blue = (1.0-blue)*255.0 + 0.5 + + color := color.RGBA{uint8(red), uint8(green), uint8(blue), 0xff} + interpreter.GetGraphicContext().SetStrokeColor(color) + interpreter.GetGraphicContext().SetFillColor(color) +} + +func setdash(interpreter *Interpreter) { + interpreter.PopInt() // offset + interpreter.PopArray() // dash + //log.Printf("setdash not yet implemented dash: %v, offset: %d \n", dash, offset) +} + +func setlinejoin(interpreter *Interpreter) { + linejoin := interpreter.PopInt() + switch linejoin { + case 0: + interpreter.GetGraphicContext().SetLineJoin(draw2d.MiterJoin) + case 1: + interpreter.GetGraphicContext().SetLineJoin(draw2d.RoundJoin) + case 2: + interpreter.GetGraphicContext().SetLineJoin(draw2d.BevelJoin) + } +} + +func setlinecap(interpreter *Interpreter) { + linecap := interpreter.PopInt() + switch linecap { + case 0: + interpreter.GetGraphicContext().SetLineCap(draw2d.ButtCap) + case 1: + interpreter.GetGraphicContext().SetLineCap(draw2d.RoundCap) + case 2: + interpreter.GetGraphicContext().SetLineCap(draw2d.SquareCap) + } +} + +func setmiterlimit(interpreter *Interpreter) { + interpreter.PopInt() + //log.Printf("setmiterlimit not yet implemented") +} + +func setlinewidth(interpreter *Interpreter) { + interpreter.GetGraphicContext().SetLineWidth(interpreter.PopFloat()) +} + +func showpage(interpreter *Interpreter) { + //log.Printf("showpage may be an implementation specific, override show page to generate multi page images") +} + +func show(interpreter *Interpreter) { + s := interpreter.PopString() + interpreter.GetGraphicContext().FillString(s) + log.Printf("show not really implemented") +} + +//ax ay string ashow – -> Add (ax , ay) to width of each glyph while showing string +func ashow(interpreter *Interpreter) { + log.Printf("ashow not really implemented") + s := interpreter.PopString() + interpreter.PopFloat() + interpreter.PopFloat() + interpreter.GetGraphicContext().FillString(s) +} + +func findfont(interpreter *Interpreter) { + log.Printf("findfont not yet implemented") +} + +func scalefont(interpreter *Interpreter) { + log.Printf("scalefont not yet implemented") +} + +func setfont(interpreter *Interpreter) { + log.Printf("setfont not yet implemented") +} + +func stringwidth(interpreter *Interpreter) { + interpreter.Push(10.0) + interpreter.Push(10.0) + log.Printf("stringwidth not yet implemented") +} + +func setflat(interpreter *Interpreter) { + interpreter.Pop() + //log.Printf("setflat not yet implemented") +} + +func currentflat(interpreter *Interpreter) { + interpreter.Push(1.0) + //log.Printf("currentflat not yet implemented") +} + +// Coordinate System and Matrix operators +func matrix(interpreter *Interpreter) { + interpreter.Push(draw2d.NewIdentityMatrix()) +} + +func initmatrix(interpreter *Interpreter) { + interpreter.Push(draw2d.NewIdentityMatrix()) +} + +func identmatrix(interpreter *Interpreter) { + tr := interpreter.Pop().(draw2d.Matrix) + ident := draw2d.NewIdentityMatrix() + copy(tr[:], ident[:]) + interpreter.Push(tr) +} + +func defaultmatrix(interpreter *Interpreter) { + tr := interpreter.Pop().(draw2d.Matrix) + ident := draw2d.NewIdentityMatrix() + copy(tr[:], ident[:]) + interpreter.Push(tr) +} + +func currentmatrix(interpreter *Interpreter) { + tr := interpreter.Pop().(draw2d.Matrix) + ctm := interpreter.GetGraphicContext().GetMatrixTransform() + copy(tr[:], ctm[:]) + interpreter.Push(tr) +} + +func setmatrix(interpreter *Interpreter) { + tr := interpreter.Pop().(draw2d.Matrix) + interpreter.GetGraphicContext().SetMatrixTransform(tr) +} + +func concat(interpreter *Interpreter) { + tr := interpreter.Pop().(draw2d.Matrix) + interpreter.GetGraphicContext().ComposeMatrixTransform(tr) +} +func concatmatrix(interpreter *Interpreter) { + tr3 := interpreter.Pop().(draw2d.Matrix) + tr2 := interpreter.Pop().(draw2d.Matrix) + tr1 := interpreter.Pop().(draw2d.Matrix) + result := tr2.Copy() + result.Compose(tr1) + copy(tr3[:], result[:]) + interpreter.Push(tr3) +} + +func transform(interpreter *Interpreter) { + value := interpreter.Pop() + matrix, ok := value.(draw2d.Matrix) + var y float64 + if !ok { + matrix = interpreter.GetGraphicContext().GetMatrixTransform() + y = value.(float64) + } else { + y = interpreter.PopFloat() + } + x := interpreter.PopFloat() + + x, y = matrix.TransformPoint(x, y) + interpreter.Push(x) + interpreter.Push(y) +} + +func itransform(interpreter *Interpreter) { + value := interpreter.Pop() + matrix, ok := value.(draw2d.Matrix) + var y float64 + if !ok { + matrix = interpreter.GetGraphicContext().GetMatrixTransform() + y = value.(float64) + } else { + y = interpreter.PopFloat() + } + x := interpreter.PopFloat() + x, y = matrix.InverseTransformPoint(x, y) + interpreter.Push(x) + interpreter.Push(y) +} + +func translate(interpreter *Interpreter) { + value := interpreter.Pop() + matrix, ok := value.(draw2d.Matrix) + var y float64 + if !ok { + matrix = interpreter.GetGraphicContext().GetMatrixTransform() + y = value.(float64) + } else { + y = interpreter.PopFloat() + } + x := interpreter.PopFloat() + if !ok { + interpreter.GetGraphicContext().Translate(x, y) + } else { + result := matrix.Copy() + result.Translate(x, y) + interpreter.Push(result) + } +} + +func rotate(interpreter *Interpreter) { + value := interpreter.Pop() + matrix, ok := value.(draw2d.Matrix) + var angle float64 + if !ok { + matrix = interpreter.GetGraphicContext().GetMatrixTransform() + angle = value.(float64) * math.Pi / 180 + } else { + angle = interpreter.PopFloat() * math.Pi / 180 + } + if !ok { + interpreter.GetGraphicContext().Rotate(angle) + } else { + result := matrix.Copy() + result.Rotate(angle) + interpreter.Push(result) + } +} + +func scale(interpreter *Interpreter) { + value := interpreter.Pop() + matrix, ok := value.(draw2d.Matrix) + var y float64 + if !ok { + matrix = interpreter.GetGraphicContext().GetMatrixTransform() + y = value.(float64) + } else { + y = interpreter.PopFloat() + } + x := interpreter.PopFloat() + if !ok { + interpreter.GetGraphicContext().Scale(x, y) + } else { + result := matrix.Copy() + result.Scale(x, y) + interpreter.Push(result) + } +} + +func initDrawingOperators(interpreter *Interpreter) { + + interpreter.SystemDefine("stroke", NewOperator(stroke)) + interpreter.SystemDefine("fill", NewOperator(fill)) + interpreter.SystemDefine("show", NewOperator(show)) + interpreter.SystemDefine("ashow", NewOperator(ashow)) + interpreter.SystemDefine("showpage", NewOperator(showpage)) + + interpreter.SystemDefine("findfont", NewOperator(findfont)) + interpreter.SystemDefine("scalefont", NewOperator(scalefont)) + interpreter.SystemDefine("setfont", NewOperator(setfont)) + interpreter.SystemDefine("stringwidth", NewOperator(stringwidth)) + + // Graphic state operators + interpreter.SystemDefine("gsave", NewOperator(gsave)) + interpreter.SystemDefine("grestore", NewOperator(grestore)) + interpreter.SystemDefine("setrgbcolor", NewOperator(setrgbcolor)) + interpreter.SystemDefine("sethsbcolor", NewOperator(sethsbcolor)) + interpreter.SystemDefine("setcmybcolor", NewOperator(setcmybcolor)) + interpreter.SystemDefine("setcmykcolor", NewOperator(setcmybcolor)) + interpreter.SystemDefine("setgray", NewOperator(setgray)) + interpreter.SystemDefine("setdash", NewOperator(setdash)) + interpreter.SystemDefine("setlinejoin", NewOperator(setlinejoin)) + interpreter.SystemDefine("setlinecap", NewOperator(setlinecap)) + interpreter.SystemDefine("setmiterlimit", NewOperator(setmiterlimit)) + interpreter.SystemDefine("setlinewidth", NewOperator(setlinewidth)) + // Graphic state operators device dependent + interpreter.SystemDefine("setflat", NewOperator(setflat)) + interpreter.SystemDefine("currentflat", NewOperator(currentflat)) + + // Coordinate System and Matrix operators + interpreter.SystemDefine("matrix", NewOperator(matrix)) + interpreter.SystemDefine("initmatrix", NewOperator(initmatrix)) + interpreter.SystemDefine("identmatrix", NewOperator(identmatrix)) + interpreter.SystemDefine("defaultmatrix", NewOperator(defaultmatrix)) + interpreter.SystemDefine("currentmatrix", NewOperator(currentmatrix)) + interpreter.SystemDefine("setmatrix", NewOperator(setmatrix)) + interpreter.SystemDefine("concat", NewOperator(concat)) + interpreter.SystemDefine("concatmatrix", NewOperator(concatmatrix)) + + interpreter.SystemDefine("transform", NewOperator(transform)) + interpreter.SystemDefine("itransform", NewOperator(itransform)) + interpreter.SystemDefine("translate", NewOperator(translate)) + interpreter.SystemDefine("rotate", NewOperator(rotate)) + interpreter.SystemDefine("scale", NewOperator(scale)) + + //Path Construction Operators + interpreter.SystemDefine("newpath", NewOperator(newpath)) + interpreter.SystemDefine("closepath", NewOperator(closepath)) + interpreter.SystemDefine("currentpoint", NewOperator(currentpoint)) + interpreter.SystemDefine("moveto", NewOperator(moveto)) + interpreter.SystemDefine("rmoveto", NewOperator(rmoveto)) + interpreter.SystemDefine("lineto", NewOperator(lineto)) + interpreter.SystemDefine("rlineto", NewOperator(rlineto)) + interpreter.SystemDefine("curveto", NewOperator(curveto)) + interpreter.SystemDefine("rcurveto", NewOperator(rcurveto)) + interpreter.SystemDefine("arc", NewOperator(arc)) + interpreter.SystemDefine("clippath", NewOperator(clippath)) +} diff --git a/vendor/github.com/llgcode/ps/operators_math.go b/vendor/github.com/llgcode/ps/operators_math.go new file mode 100644 index 0000000..4340f15 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_math.go @@ -0,0 +1,177 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +//Arithmetic and Math Operators +package ps + +import ( + "math" + "math/rand" +) + +// begin Primitive Operator implementation + +//num1 num2 add sum -> Return num1 plus num2 +func add(interpreter *Interpreter) { + num2 := interpreter.PopFloat() + num1 := interpreter.PopFloat() + interpreter.Push(num1 + num2) +} + +//num1 num2 div quotient -> Return num1 divided by num2 +func div(interpreter *Interpreter) { + num2 := interpreter.PopFloat() + num1 := interpreter.PopFloat() + interpreter.Push(num1 / num2) +} + +//int1 int2 idiv quotient -> Return int1 divided by int2 +func idiv(interpreter *Interpreter) { + int2 := interpreter.PopInt() + int1 := interpreter.PopInt() + interpreter.Push(float64(int1 / int2)) +} + +//int int mod remainder -> Return remainder after dividing int by int +func mod(interpreter *Interpreter) { + int2 := interpreter.PopInt() + int1 := interpreter.PopInt() + interpreter.Push(float64(int1 % int2)) +} + +//num1 num2 mul product -> Return num1 times num2 +func mul(interpreter *Interpreter) { + num2 := interpreter.PopFloat() + num1 := interpreter.PopFloat() + interpreter.Push(num1 * num2) +} + +//num1 num2 sub difference -> Return num1 minus num2 +func sub(interpreter *Interpreter) { + num2 := interpreter.PopFloat() + num1 := interpreter.PopFloat() + interpreter.Push(num1 - num2) +} + +//num1 abs num2 -> Return absolute value of num1 +func abs(interpreter *Interpreter) { + f := interpreter.PopFloat() + interpreter.Push(math.Abs(f)) +} + +//num1 neg num2 -> Return negative of num1 +func neg(interpreter *Interpreter) { + f := interpreter.PopFloat() + interpreter.Push(-f) +} + +//num1 ceiling num2 -> Return ceiling of num1 +func ceiling(interpreter *Interpreter) { + f := interpreter.PopFloat() + interpreter.Push(float64(int(f + 1))) +} + +//num1 floor num2 -> Return floor of num1 +func floor(interpreter *Interpreter) { + f := interpreter.PopFloat() + interpreter.Push(math.Floor(f)) +} + +//num1 round num2 -> Round num1 to nearest integer +func round(interpreter *Interpreter) { + f := interpreter.PopFloat() + interpreter.Push(float64(int(f + 0.5))) +} + +//num1 truncate num2 -> Remove fractional part of num1 +func truncate(interpreter *Interpreter) { + f := interpreter.PopFloat() + interpreter.Push(float64(int(f))) +} + +//num sqrt real -> Return square root of num +func sqrt(interpreter *Interpreter) { + f := interpreter.PopFloat() + interpreter.Push(float64(math.Sqrt(f))) +} + +//num den atan angle -> Return arctangent of num/den in degrees +func atan(interpreter *Interpreter) { + den := interpreter.PopFloat() + num := interpreter.PopFloat() + interpreter.Push(math.Atan2(num, den) * (180.0 / math.Pi)) +} + +//angle cos real -> Return cosine of angle degrees +func cos(interpreter *Interpreter) { + a := interpreter.PopFloat() * math.Pi / 180 + interpreter.Push(math.Cos(a)) +} + +//angle sin real -> Return sine of angle degrees +func sin(interpreter *Interpreter) { + a := interpreter.PopFloat() * math.Pi / 180 + interpreter.Push(math.Sin(a)) +} + +//base exponent exp real -> Raise base to exponent power +func exp(interpreter *Interpreter) { + exponent := interpreter.PopFloat() + base := interpreter.PopFloat() + interpreter.Push(math.Pow(base, exponent)) +} + +//num ln real -> Return natural logarithm (base e) +func ln(interpreter *Interpreter) { + num := interpreter.PopFloat() + interpreter.Push(math.Log(num)) +} + +//num log real -> Return common logarithm (base 10) +func log10(interpreter *Interpreter) { + num := interpreter.PopFloat() + interpreter.Push(math.Log10(num)) +} + +//– rand int Generate pseudo-random integer +func randInt(interpreter *Interpreter) { + interpreter.Push(float64(rand.Int())) +} + +var randGenerator *rand.Rand + +//int srand – -> Set random number seed +func srand(interpreter *Interpreter) { + randGenerator = rand.New(rand.NewSource(int64(interpreter.PopInt()))) +} + +//– rrand int -> Return random number seed +func rrand(interpreter *Interpreter) { + interpreter.Push(float64(randGenerator.Int())) +} + +func initMathOperators(interpreter *Interpreter) { + interpreter.SystemDefine("add", NewOperator(add)) + interpreter.SystemDefine("div", NewOperator(div)) + interpreter.SystemDefine("idiv", NewOperator(idiv)) + interpreter.SystemDefine("mod", NewOperator(mod)) + interpreter.SystemDefine("mul", NewOperator(mul)) + interpreter.SystemDefine("sub", NewOperator(sub)) + interpreter.SystemDefine("abs", NewOperator(abs)) + interpreter.SystemDefine("neg", NewOperator(neg)) + interpreter.SystemDefine("ceiling", NewOperator(ceiling)) + interpreter.SystemDefine("floor", NewOperator(floor)) + interpreter.SystemDefine("round", NewOperator(round)) + interpreter.SystemDefine("truncate", NewOperator(truncate)) + interpreter.SystemDefine("sqrt", NewOperator(sqrt)) + interpreter.SystemDefine("atan", NewOperator(atan)) + interpreter.SystemDefine("cos", NewOperator(cos)) + interpreter.SystemDefine("sin", NewOperator(sin)) + interpreter.SystemDefine("exp", NewOperator(exp)) + interpreter.SystemDefine("ln", NewOperator(ln)) + interpreter.SystemDefine("log", NewOperator(log10)) + interpreter.SystemDefine("rand", NewOperator(randInt)) + interpreter.SystemDefine("srand", NewOperator(srand)) + interpreter.SystemDefine("rrand", NewOperator(rrand)) + +} diff --git a/vendor/github.com/llgcode/ps/operators_misc.go b/vendor/github.com/llgcode/ps/operators_misc.go new file mode 100644 index 0000000..2971d06 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_misc.go @@ -0,0 +1,38 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +// Miscellaneous Operators +package ps + +//proc bind proc Replace operator names in proc with operators; perform idiom recognition +func bind(interpreter *Interpreter) { + pdef := interpreter.PopProcedureDefinition() + values := make([]Value, len(pdef.Values)) + for i, value := range pdef.Values { + if s, ok := value.(string); ok { + firstChar := s[0] + if firstChar != '(' && firstChar != '/' { + v, _ := interpreter.FindValueInDictionaries(s) + operator, isOperator := v.(Operator) + if v == nil { + // log.Printf("Can't find def: %s\n", s) + } + if isOperator { + values[i] = operator + } else { + values[i] = value + } + } else { + values[i] = value + } + } else { + values[i] = value + } + } + pdef.Values = values + interpreter.Push(pdef) +} + +func initMiscellaneousOperators(interpreter *Interpreter) { + interpreter.SystemDefine("bind", NewOperator(bind)) +} diff --git a/vendor/github.com/llgcode/ps/operators_relational.go b/vendor/github.com/llgcode/ps/operators_relational.go new file mode 100644 index 0000000..e554283 --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_relational.go @@ -0,0 +1,40 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +func eq(interpreter *Interpreter) { + value1 := interpreter.Pop() + value2 := interpreter.Pop() + interpreter.Push(value1 == value2) +} + +func ne(interpreter *Interpreter) { + value1 := interpreter.Pop() + value2 := interpreter.Pop() + interpreter.Push(value1 != value2) +} + +func not(interpreter *Interpreter) { + b := interpreter.PopBoolean() + interpreter.Push(!b) +} + +func lt(interpreter *Interpreter) { + f2 := interpreter.PopFloat() + f1 := interpreter.PopFloat() + interpreter.Push(f1 < f2) +} +func gt(interpreter *Interpreter) { + f2 := interpreter.PopFloat() + f1 := interpreter.PopFloat() + interpreter.Push(f1 > f2) +} + +func initRelationalOperators(interpreter *Interpreter) { + interpreter.SystemDefine("eq", NewOperator(eq)) + interpreter.SystemDefine("ne", NewOperator(ne)) + interpreter.SystemDefine("not", NewOperator(not)) + interpreter.SystemDefine("lt", NewOperator(lt)) + interpreter.SystemDefine("gt", NewOperator(gt)) +} diff --git a/vendor/github.com/llgcode/ps/operators_stack.go b/vendor/github.com/llgcode/ps/operators_stack.go new file mode 100644 index 0000000..6b7480d --- /dev/null +++ b/vendor/github.com/llgcode/ps/operators_stack.go @@ -0,0 +1,98 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +//Operand Stack Manipulation Operators +package ps + +//any pop – -> Discard top element +func pop(interpreter *Interpreter) { + interpreter.Pop() +} + +//any1 any2 exch any2 any1 -> Exchange top two elements +func exch(interpreter *Interpreter) { + value1 := interpreter.Pop() + value2 := interpreter.Pop() + interpreter.Push(value1) + interpreter.Push(value2) +} + +//any dup any any -> Duplicate top element +func dup(interpreter *Interpreter) { + interpreter.Push(interpreter.Peek()) +} + +//any1 … anyn n copy any1 … anyn any1 … anyn -> Duplicate top n elements +func copystack(interpreter *Interpreter) { + n := interpreter.PopInt() + values := interpreter.GetValues(n) + for _, value := range values { + interpreter.Push(value) + } +} + +//anyn … any0 n index anyn … any0 anyn -> Duplicate arbitrary element +func index(interpreter *Interpreter) { + f := interpreter.PopInt() + interpreter.Push(interpreter.Get(int(f))) +} + +//anyn−1 … any0 n j roll any(j−1) mod n … any0 anyn−1 … anyj mod n -> Roll n elements up j times +func roll(interpreter *Interpreter) { + j := interpreter.PopInt() + n := interpreter.PopInt() + values := interpreter.PopValues(n) + j %= n + for i := 0; i < n; i++ { + interpreter.Push(values[(n+i-j)%n]) + } +} + +//any1 … anyn clear -> Discard all elements +func clear(interpreter *Interpreter) { + interpreter.ClearOperands() +} + +//any1 … anyn count any1 … anyn n -> Count elements on stack +func count(interpreter *Interpreter) { + interpreter.Push(interpreter.OperandSize()) +} + +//Mark +type Mark struct{} + +//– mark mark -> Push mark on stack +func mark(interpreter *Interpreter) { + interpreter.Push(Mark{}) +} + +//mark obj 1 … obj n cleartomark – -> Discard elements down through mark +func cleartomark(interpreter *Interpreter) { + value := interpreter.Pop() + for _, ok := value.(Mark); !ok; { + value = interpreter.Pop() + } +} + +//mark obj 1 … obj n counttomark mark obj 1 … obj n n -> Count elements down to mark +func counttomark(interpreter *Interpreter) { + i := 0 + value := interpreter.Get(i) + for _, ok := value.(Mark); !ok; i++ { + value = interpreter.Get(i) + } + interpreter.Push(float64(i)) +} + +func initStackOperator(interpreter *Interpreter) { + interpreter.SystemDefine("pop", NewOperator(pop)) + interpreter.SystemDefine("exch", NewOperator(exch)) + interpreter.SystemDefine("dup", NewOperator(dup)) + interpreter.SystemDefine("index", NewOperator(index)) + interpreter.SystemDefine("roll", NewOperator(roll)) + interpreter.SystemDefine("clear", NewOperator(clear)) + interpreter.SystemDefine("count", NewOperator(count)) + interpreter.SystemDefine("mark", NewOperator(mark)) + interpreter.SystemDefine("cleartomark", NewOperator(mark)) + interpreter.SystemDefine("counttomark", NewOperator(mark)) +} diff --git a/vendor/github.com/llgcode/ps/procedure.go b/vendor/github.com/llgcode/ps/procedure.go new file mode 100644 index 0000000..f6f5454 --- /dev/null +++ b/vendor/github.com/llgcode/ps/procedure.go @@ -0,0 +1,46 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +type ProcedureDefinition struct { + Values []Value +} + +func NewProcedureDefinition() *ProcedureDefinition { + proceduredef := new(ProcedureDefinition) + proceduredef.Values = make([]Value, 0, 100) + return proceduredef +} + +func (p *ProcedureDefinition) Add(value Value) { + p.Values = append(p.Values, value) +} + +type Procedure struct { + def *ProcedureDefinition +} + +func NewProcedure(def *ProcedureDefinition) *Procedure { + return &Procedure{def} +} + +func (p *Procedure) Execute(interpreter *Interpreter) { + for _, value := range p.def.Values { + if s, ok := value.(string); ok { + firstChar := s[0] + if firstChar != '(' && firstChar != '/' { + interpreter.computeReference(s) + } else { + interpreter.Push(value) + } + } else { + operator, isOperator := value.(Operator) + if isOperator { + operator.Execute(interpreter) + } else { + interpreter.Push(value) + } + } + } +} diff --git a/vendor/github.com/llgcode/ps/result/TestPostscript.png b/vendor/github.com/llgcode/ps/result/TestPostscript.png new file mode 100644 index 0000000..16fb572 Binary files /dev/null and b/vendor/github.com/llgcode/ps/result/TestPostscript.png differ diff --git a/vendor/github.com/llgcode/ps/samples/3dcolor.ps b/vendor/github.com/llgcode/ps/samples/3dcolor.ps new file mode 100644 index 0000000..1b31d08 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/3dcolor.ps @@ -0,0 +1,57 @@ +%!PS +/B {bind} bind def +/D {def} def +/Q {bind def} B D +/E {exch def} Q +/S {gsave} Q +/R {grestore} Q +/P 20 D +/N P 1 sub D +/I 1 P div D +initclip clippath pathbbox newpath +72 sub /URy E 72 sub /URx E 72 add /LLy E 72 add /LLx E +/Sq5 5 sqrt D +/F 2 Sq5 add D +/Wx URx LLx sub D /Wy URy LLy sub D +/Xx Wx 4 div D /Xy Wy F div D /X Xx Xy le {Xx}{Xy}ifelse D +Wx X 4 mul sub 2 div LLx add X 2 mul add Wy X F mul sub 2 div LLy add translate +/X X Sq5 mul D +X dup scale +0.1 X div setlinewidth +S +[ 1 .5 0 1 0 0 ] concat +0 1 N {I mul /A E + 0 1 N {I mul /B E + S A B translate + newpath 0 0 moveto I 0 rlineto 0 I rlineto I neg 0 rlineto + closepath + S I B add 1 1 A sub setrgbcolor fill R stroke % Green + R + } for + } for +R +S +[ -1 .5 0 1 0 0 ] concat +0 1 N {I mul /A E + 0 1 N {I mul /B E + S A B translate + newpath 0 0 moveto I 0 rlineto 0 I rlineto I neg 0 rlineto + closepath + S I B add 1 A sub 1 setrgbcolor fill R stroke % Blue + R + } for + } for +R +S +[ 1 .5 -1 0.5 0 1 ] concat +0 1 N {I mul /A E + 0 1 N {I mul /B E + S A B translate + newpath 0 0 moveto I 0 rlineto 0 I rlineto I neg 0 rlineto + closepath + S 1 1 B sub 1 A sub setrgbcolor fill R stroke % Red + R + } for + } for +R +showpage diff --git a/vendor/github.com/llgcode/ps/samples/JavaPlatform.ps b/vendor/github.com/llgcode/ps/samples/JavaPlatform.ps new file mode 100644 index 0000000..76b4fa2 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/JavaPlatform.ps @@ -0,0 +1,12684 @@ +%!PS-Adobe-3.0 +%%BoundingBox: (atend) +%%Pages: (atend) +%%PageOrder: (atend) +%%DocumentFonts: (atend) +%%Creator: Frame 4.0 +%%DocumentData: Clean7Bit +%%EndComments +%%BeginProlog +% +% Frame ps_prolog 5.0, for use with Frame 5.0 products +% This ps_prolog file is Copyright (c) 1986-1995 Frame Technology +% Corporation. All rights reserved. This ps_prolog file may be +% freely copied and distributed in conjunction with documents created +% using FrameMaker, FrameMaker/SGML and FrameViewer as long as this +% copyright notice is preserved. +% +% FrameMaker users specify the proper paper size for each print job in the +% "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the +% printer that the PS file is sent to does not support the requested paper +% size, or if there is no paper tray of the proper size currently installed, +% then the job will not be printed. The following flag, if set to true, will +% cause the job to print on the default paper in such cases. +/FMAllowPaperSizeMismatch false def +% +% Frame products normally print colors as their true color on a color printer +% or as shades of gray, based on luminance, on a black-and white printer. The +% following flag, if set to true, forces all non-white colors to print as pure +% black. This has no effect on bitmap images. +/FMPrintAllColorsAsBlack false def +% +% Frame products can either set their own line screens or use a printer's +% default settings. Three flags below control this separately for no +% separations, spot separations and process separations. If a flag +% is true, then the default printer settings will not be changed. If it is +% false, Frame products will use their own settings from a table based on +% the printer's resolution. +/FMUseDefaultNoSeparationScreen true def +/FMUseDefaultSpotSeparationScreen true def +/FMUseDefaultProcessSeparationScreen false def +% +% For any given PostScript printer resolution, Frame products have two sets of +% screen angles and frequencies for printing process separations, which are +% recomended by Adobe. The following variable chooses the higher frequencies +% when set to true or the lower frequencies when set to false. This is only +% effective if the appropriate FMUseDefault...SeparationScreen flag is false. +/FMUseHighFrequencyScreens true def +% +% The following is a set of predefined optimal frequencies and angles for various +% common dpi settings. This is taken from "Advances in Color Separation Using +% PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) +% and corrolated with information which is in various PPD (4.0) files. +% +% The "dpiranges" figure is the minimum dots per inch device resolution which +% can support this setting. The "low" and "high" values are controlled by the +% setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control +% the use of the "Yellow Triple Dot" feature whereby the frequency id divided by +% three, but the dot function is "trippled" giving a block of 3x3 dots per cell. +% +% PatFreq is a compromise pattern frequency for ps Level 2 printers which is close +% to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat +% (too badly) against the screen frequencies of any separations for that DPI. +/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def +/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def +/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def +/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def +/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def +/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def +/YLowTDot [ true true false true true false false false ] def +/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def +/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def +/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def +/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def +/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def +/YHighTDot [ false false true false false true true false ] def +/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def +% +% PostScript Level 2 printers contain an "Accurate Screens" feature which can +% improve process separation rendering at the expense of compute time. This +% flag is ignored by PostScript Level 1 printers. +/FMUseAcccurateScreens true def +% +% The following PostScript procedure defines the spot function that Frame +% products will use for process separations. You may un-comment-out one of +% the alternative functions below, or use your own. +% +% Dot function +/FMSpotFunction {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub } + {dup mul exch dup mul add 1 exch sub }ifelse } def +% +% Line function +% /FMSpotFunction { pop } def +% +% Elipse function +% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add +% sqrt 1 exch sub } def +% +% +/FMversion (5.0) def +/fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def +/FMPColor + fMLevel1 { + false + /colorimage where {pop pop true} if + } { + true + } ifelse +def +/FrameDict 400 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } bind def + } if +/FMshowpage /showpage load def +/FMquit /quit load def +/FMFAILURE { + dup = flush + FMshowpage + /Helvetica findfont 12 scalefont setfont + 72 200 moveto show + 72 220 moveto show + FMshowpage + FMquit + } def +/FMVERSION { + FMversion ne { + (Frame product version does not match ps_prolog! Check installation;) + (also check ~/fminit and ./fminit for old versions) FMFAILURE + } if + } def +/FMBADEPSF { + (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) + (says your EPS file is not valid, as it calls X ) + dup dup (X) search pop exch pop exch pop length + 5 -1 roll + putinterval + FMFAILURE + } def +/fmConcatProcs + { + /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx +}def +FrameDict begin [ + /ALDsave + /FMdicttop + /FMoptop + /FMpointsize + /FMsaveobject + /b + /bitmapsave + /blut + /bpside + /bs + /bstring + /bwidth + /c + /cf + /cs + /cynu + /depth + /edown + /fh + /fillvals + /fw + /fx + /fy + /g + /gfile + /gindex + /grnt + /gryt + /gstring + /height + /hh + /i + /im + /indx + /is + /k + /kk + /landscape + /lb + /len + /llx + /lly + /m + /magu + /manualfeed + /n + /offbits + /onbits + /organgle + /orgbangle + /orgbfreq + /orgbproc + /orgbxfer + /orgfreq + /orggangle + /orggfreq + /orggproc + /orggxfer + /orgmatrix + /orgproc + /orgrangle + /orgrfreq + /orgrproc + /orgrxfer + /orgxfer + /pagesave + /paperheight + /papersizedict + /paperwidth + /pos + /pwid + /r + /rad + /redt + /sl + /str + /tran + /u + /urx + /ury + /val + /width + /width + /ws + /ww + /x + /x1 + /x2 + /xindex + /xpoint + /xscale + /xx + /y + /y1 + /y2 + /yelu + /yindex + /ypoint + /yscale + /yy +] { 0 def } forall +/FmBD {bind def} bind def +systemdict /pdfmark known { + /fMAcrobat true def + + /FmPD /pdfmark load def + + + /FmPT /show load def + + + currentdistillerparams /CoreDistVersion get 2000 ge { + + + /FmPD2 /pdfmark load def + + + + + + /FmPA { mark exch /Dest exch 5 3 roll + /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD + }FmBD + } { + + /FmPD2 /cleartomark load def + /FmPA {pop pop pop}FmBD + } ifelse +} { + + /fMAcrobat false def + /FmPD /cleartomark load def + /FmPD2 /cleartomark load def + /FmPT /pop load def + /FmPA {pop pop pop}FmBD +} ifelse +/FmDC { + transform fMDefaultMatrix itransform cvi exch cvi exch +}FmBD +/FmBx { + dup 3 index lt {3 1 roll exch} if + 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if +}FmBD +/FMnone 0 def +/FMcyan 1 def +/FMmagenta 2 def +/FMyellow 3 def +/FMblack 4 def +/FMcustom 5 def +/fMNegative false def +/FrameSepIs FMnone def +/FrameSepBlack 0 def +/FrameSepYellow 0 def +/FrameSepMagenta 0 def +/FrameSepCyan 0 def +/FrameSepRed 1 def +/FrameSepGreen 1 def +/FrameSepBlue 1 def +/FrameCurGray 1 def +/FrameCurPat null def +/FrameCurColors [ 0 0 0 1 0 0 0 ] def +/FrameColorEpsilon .001 def +/eqepsilon { + sub dup 0 lt {neg} if + FrameColorEpsilon le +} bind def +/FrameCmpColorsCMYK { + 2 copy 0 get exch 0 get eqepsilon { + 2 copy 1 get exch 1 get eqepsilon { + 2 copy 2 get exch 2 get eqepsilon { + 3 get exch 3 get eqepsilon + } {pop pop false} ifelse + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/FrameCmpColorsRGB { + 2 copy 4 get exch 0 get eqepsilon { + 2 copy 5 get exch 1 get eqepsilon { + 6 get exch 2 get eqepsilon + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/RGBtoCMYK { + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 3 copy + 2 copy + le { pop } { exch pop } ifelse + 2 copy + le { pop } { exch pop } ifelse + dup dup dup + 6 1 roll + 4 1 roll + 7 1 roll + sub + 6 1 roll + sub + 5 1 roll + sub + 4 1 roll +} bind def +/CMYKtoRGB { + dup dup 4 -1 roll add + 5 1 roll 3 -1 roll add + 4 1 roll add + 1 exch sub dup 0 lt {pop 0} if 3 1 roll + 1 exch sub dup 0 lt {pop 0} if exch + 1 exch sub dup 0 lt {pop 0} if exch +} bind def +/FrameSepInit { + 1.0 RealSetgray +} bind def +/FrameSetSepColor { + /FrameSepBlue exch def + /FrameSepGreen exch def + /FrameSepRed exch def + /FrameSepBlack exch def + /FrameSepYellow exch def + /FrameSepMagenta exch def + /FrameSepCyan exch def + /FrameSepIs FMcustom def + setCurrentScreen +} bind def +/FrameSetCyan { + /FrameSepBlue 1.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 1.0 def + /FrameSepIs FMcyan def + setCurrentScreen +} bind def + +/FrameSetMagenta { + /FrameSepBlue 1.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 1.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMmagenta def + setCurrentScreen +} bind def + +/FrameSetYellow { + /FrameSepBlue 0.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 1.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMyellow def + setCurrentScreen +} bind def + +/FrameSetBlack { + /FrameSepBlue 0.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 1.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMblack def + setCurrentScreen +} bind def + +/FrameNoSep { + /FrameSepIs FMnone def + setCurrentScreen +} bind def +/FrameSetSepColors { + FrameDict begin + [ exch 1 add 1 roll ] + /FrameSepColors + exch def end + } bind def +/FrameColorInSepListCMYK { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsCMYK + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/FrameColorInSepListRGB { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsRGB + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/RealSetgray /setgray load def +/RealSetrgbcolor /setrgbcolor load def +/RealSethsbcolor /sethsbcolor load def +end +/setgray { + FrameDict begin + FrameSepIs FMnone eq + { RealSetgray } + { + FrameSepIs FMblack eq + { RealSetgray } + { FrameSepIs FMcustom eq + FrameSepRed 0 eq and + FrameSepGreen 0 eq and + FrameSepBlue 0 eq and { + RealSetgray + } { + 1 RealSetgray pop + } ifelse + } ifelse + } ifelse + end +} bind def +/setrgbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetrgbcolor } + { + 3 copy [ 4 1 roll ] + FrameColorInSepListRGB + { + FrameSepBlue eq exch + FrameSepGreen eq and exch + FrameSepRed eq and + { 0 } { 1 } ifelse + } + { + FMPColor { + RealSetrgbcolor + currentcmykcolor + } { + RGBtoCMYK + } ifelse + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end +} bind def +/sethsbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSethsbcolor } + { + RealSethsbcolor + currentrgbcolor + setrgbcolor + } + ifelse + end +} bind def +FrameDict begin +/setcmykcolor where { + pop /RealSetcmykcolor /setcmykcolor load def +} { + /RealSetcmykcolor { + 4 1 roll + 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat + RealSetrgbcolor pop + } bind def +} ifelse +userdict /setcmykcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetcmykcolor } + { + 4 copy [ 5 1 roll ] + FrameColorInSepListCMYK + { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + { 0 } { 1 } ifelse + } + { + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end + } bind put +fMLevel1 { + + + + /patScreenDict 7 dict dup begin + <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD + <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD + [ 0 { pop } dup .5 2 ] FmBD + [ 90 { pop } dup .5 2 ] FmBD + <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD + <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD + <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD + end def +} { + + /patProcDict 5 dict dup begin + <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -1 -1 moveto 9 9 lineto stroke } bind def + <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + end def + /patDict 15 dict dup begin + /PatternType 1 def + /PaintType 2 def + /TilingType 3 def + /BBox [ 0 0 8 8 ] def + /XStep 8 def + /YStep 8 def + /PaintProc { + begin + patProcDict bstring known { + patProcDict bstring get exec + } { + 8 8 true [1 0 0 -1 0 8] bstring imagemask + } ifelse + end + } bind def + end def +} ifelse +/combineColor { + FrameSepIs FMnone eq + { + graymode fMLevel1 or not { + + [/Pattern [/DeviceCMYK]] setcolorspace + FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor + } { + FrameCurColors 3 get 1.0 ge { + FrameCurGray RealSetgray + } { + fMAcrobat not FMPColor graymode and and { + 0 1 3 { + FrameCurColors exch get + 1 FrameCurGray sub mul + } for + RealSetcmykcolor + } { + 4 1 6 { + FrameCurColors exch get + graymode { + 1 exch sub 1 FrameCurGray sub mul 1 exch sub + } { + 1.0 lt {FrameCurGray} {1} ifelse + } ifelse + } for + RealSetrgbcolor + } ifelse + } ifelse + } ifelse + } { + FrameCurColors 0 4 getinterval aload + FrameColorInSepListCMYK { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + FrameSepIs FMcustom eq and + { FrameCurGray } { 1 } ifelse + } { + FrameSepIs FMblack eq + {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + graymode fMLevel1 or not { + + [/Pattern [/DeviceGray]] setcolorspace + FrameCurPat setcolor + } { + graymode not fMLevel1 and { + + dup 1 lt {pop FrameCurGray} if + } if + RealSetgray + } ifelse + } ifelse +} bind def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/fMDefaultMatrix matrix defaultmatrix def +/fMatrix2 matrix def +/dpi 72 0 fMDefaultMatrix dtransform + dup mul exch dup mul add sqrt def + +/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def +/sangle 1 0 fMDefaultMatrix dtransform exch atan def + sangle fMatrix2 rotate + fMDefaultMatrix fMatrix2 concatmatrix + dup 0 get /sflipx exch def + 3 get /sflipy exch def +/screenIndex { + 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for +} bind def +/getCyanScreen { + FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getMagentaScreen { + FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getYellowScreen { + FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse + screenIndex dup 3 1 roll get 3 1 roll get { 3 div + {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat + FMSpotFunction } } {/FMSpotFunction load } ifelse + 0.0 exch +} bind def +/getBlackScreen { + FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse + screenIndex get 45.0 /FMSpotFunction load +} bind def +/getSpotScreen { + getBlackScreen +} bind def +/getCompositeScreen { + getBlackScreen +} bind def +/FMSetScreen + fMLevel1 { /setscreen load + }{ { + 8 dict begin + /HalftoneType 1 def + /SpotFunction exch def + /Angle exch def + /Frequency exch def + /AccurateScreens FMUseAcccurateScreens def + currentdict end sethalftone + } bind } ifelse +def +/setDefaultScreen { + FMPColor { + orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer + } + { + orgxfer cvx settransfer + } ifelse + orgfreq organgle orgproc cvx setscreen +} bind def +/setCurrentScreen { + FrameSepIs FMnone eq { + FMUseDefaultNoSeparationScreen { + setDefaultScreen + } { + getCompositeScreen FMSetScreen + } ifelse + } { + FrameSepIs FMcustom eq { + FMUseDefaultSpotSeparationScreen { + setDefaultScreen + } { + getSpotScreen FMSetScreen + } ifelse + } { + FMUseDefaultProcessSeparationScreen { + setDefaultScreen + } { + FrameSepIs FMcyan eq { + getCyanScreen FMSetScreen + } { + FrameSepIs FMmagenta eq { + getMagentaScreen FMSetScreen + } { + FrameSepIs FMyellow eq { + getYellowScreen FMSetScreen + } { + getBlackScreen FMSetScreen + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse +} bind def +end + +/FMDOCUMENT { + array /FMfonts exch def + /#copies exch def + FrameDict begin + 0 ne /manualfeed exch def + /paperheight exch def + /paperwidth exch def + 0 ne /fMNegative exch def + 0 ne /edown exch def + /yscale exch def + /xscale exch def + fMLevel1 { + manualfeed {setmanualfeed} if + /FMdicttop countdictstack 1 add def + /FMoptop count def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} {false} ifelse + {papersizefailure} if + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + } + {2 dict + dup /PageSize [paperwidth paperheight] put + manualfeed {dup /ManualFeed manualfeed put} if + {setpagedevice} stopped {papersizefailure} if + } + ifelse + + FMPColor { + currentcolorscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + cvlit /orgbproc exch def + /orgbangle exch def + /orgbfreq exch def + cvlit /orggproc exch def + /orggangle exch def + /orggfreq exch def + cvlit /orgrproc exch def + /orgrangle exch def + /orgrfreq exch def + currentcolortransfer + fMNegative { + 1 1 4 { + pop { 1 exch sub } fmConcatProcs 4 1 roll + } for + 4 copy + setcolortransfer + } if + cvlit /orgxfer exch def + cvlit /orgbxfer exch def + cvlit /orggxfer exch def + cvlit /orgrxfer exch def + } { + currentscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + + currenttransfer + fMNegative { + { 1 exch sub } fmConcatProcs + dup settransfer + } if + cvlit /orgxfer exch def + } ifelse + end +} def +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch dup /pwid exch def neg translate pop + }{ + pop /pwid exch def + } ifelse + edown { [-1 0 0 1 pwid 0] concat } if + 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto + 0 paperheight lineto 0 0 lineto 1 setgray fill + xscale yscale scale + /orgmatrix matrix def + gsave +} def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin dup + array /fillvals exch def + dict /patCache exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def +% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. +% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) + /banddevice {(banddevice) FMBADEPSF} def + /clear {(clear) FMBADEPSF} def + /cleardictstack {(cleardictstack) FMBADEPSF} def + /copypage {(copypage) FMBADEPSF} def + /erasepage {(erasepage) FMBADEPSF} def + /exitserver {(exitserver) FMBADEPSF} def + /framedevice {(framedevice) FMBADEPSF} def + /grestoreall {(grestoreall) FMBADEPSF} def + /initclip {(initclip) FMBADEPSF} def + /initgraphics {(initgraphics) FMBADEPSF} def + /quit {(quit) FMBADEPSF} def + /renderbands {(renderbands) FMBADEPSF} def + /setglobal {(setglobal) FMBADEPSF} def + /setpagedevice {(setpagedevice) FMBADEPSF} def + /setshared {(setshared) FMBADEPSF} def + /startjob {(startjob) FMBADEPSF} def + /lettertray {(lettertray) FMBADEPSF} def + /letter {(letter) FMBADEPSF} def + /lettersmall {(lettersmall) FMBADEPSF} def + /11x17tray {(11x17tray) FMBADEPSF} def + /11x17 {(11x17) FMBADEPSF} def + /ledgertray {(ledgertray) FMBADEPSF} def + /ledger {(ledger) FMBADEPSF} def + /legaltray {(legaltray) FMBADEPSF} def + /legal {(legal) FMBADEPSF} def + /statementtray {(statementtray) FMBADEPSF} def + /statement {(statement) FMBADEPSF} def + /executivetray {(executivetray) FMBADEPSF} def + /executive {(executive) FMBADEPSF} def + /a3tray {(a3tray) FMBADEPSF} def + /a3 {(a3) FMBADEPSF} def + /a4tray {(a4tray) FMBADEPSF} def + /a4 {(a4) FMBADEPSF} def + /a4small {(a4small) FMBADEPSF} def + /b4tray {(b4tray) FMBADEPSF} def + /b4 {(b4) FMBADEPSF} def + /b5tray {(b5tray) FMBADEPSF} def + /b5 {(b5) FMBADEPSF} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fw 2 div add fy fh 2 div add translate + rotate + fw 2 div neg fh 2 div neg translate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + /FMdicttop countdictstack 1 add def + /FMoptop count def + } bind def +/FMENDEPSF { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } bind def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } bind def +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } bind def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + statusdict begin stopped end + } bind def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } bind def +/desperatepapersize { + statusdict /setpageparams known + { + paperwidth paperheight 0 1 + statusdict begin + {setpageparams} stopped + end + } {true} ifelse + } bind def +/papersizefailure { + FMAllowPaperSizeMismatch not + { +(The requested paper size is not available in any currently-installed tray) +(Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) + FMFAILURE } if + } def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /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 /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /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 /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +FMPColor + + { + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + /BEGINBITMAPCMYK { + BITMAPCMYK } def + /BEGINBITMAPCMYKc { + BITMAPCMYKc } def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + /BEGINBITMAPCMYK { + BITMAPCMYKGRAY } def + /BEGINBITMAPCMYKc { + BITMAPCMYKGRAYc } def + } +ifelse +/K { + FMPrintAllColorsAsBlack { + dup 1 eq 2 index 1 eq and 3 index 1 eq and not + {7 {pop} repeat 0 0 0 1 0 0 0} if + } if + FrameCurColors astore + pop combineColor +} bind def +/graymode true def +fMLevel1 { + /fmGetFlip { + fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse + } FmBD +} if +/setPatternMode { + fMLevel1 { + 2 index patScreenDict exch known { + pop pop + patScreenDict exch get aload pop + freq + mul + 5 2 roll + fMatrix2 currentmatrix 1 get 0 ne { + 3 -1 roll 90 add 3 1 roll + sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul + } { + sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul + } ifelse + 0 lt {exch pop} {pop} ifelse + fMNegative { + {neg} fmConcatProcs + } if + bind + + + + systemdict /setscreen get exec + /FrameCurGray exch def + } { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/ypoint exch def + /xpoint exch def + /xindex xpoint 1 add 2 div bpside mul cvi def + /yindex ypoint 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + offbits offbits onbits add div fMNegative {1.0 exch sub} if + /FrameCurGray exch def + } ifelse + } { + pop pop + dup patCache exch known { + patCache exch get + } { + dup + patDict /bstring 3 -1 roll put + patDict + 9 PatFreq screenIndex get div dup matrix scale + makepattern + dup + patCache 4 -1 roll 3 -1 roll put + } ifelse + /FrameCurGray 0 def + /FrameCurPat exch def + } ifelse + /graymode false def + combineColor +} bind def +/setGrayScaleMode { + graymode not { + /graymode true def + fMLevel1 { + setCurrentScreen + } if + } if + /FrameCurGray exch def + combineColor +} bind def +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + +/PFill { + graymode fMLevel1 or not { + gsave 1 setgray eofill grestore + } if +} bind def +/PStroke { + graymode fMLevel1 or not { + gsave 1 setgray stroke grestore + } if + stroke +} bind def +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setPatternMode} + {setGrayScaleMode} + ifelse + } bind def +/V { + PFill gsave eofill grestore + } bind def +/Vclip { + clip + } bind def +/Vstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/N { + PStroke + } bind def +/Nclip { + strokepath clip newpath + } bind def +/Nstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def +/rarc + {rad + arcto + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + mark + newpath + { + x1 y1 rad add moveto + x1 y2 x2 y2 rarc + x2 y2 x2 y1 rarc + x2 y1 x1 y1 rarc + x1 y1 x1 y2 rarc + closepath + } stopped {x1 y1 x2 y2 R} if + cleartomark + } bind def +/RRR { + /rad exch def + normalize /y4 exch def /x4 exch def + normalize /y3 exch def /x3 exch def + normalize /y2 exch def /x2 exch def + normalize /y1 exch def /x1 exch def + newpath + normalize moveto + mark + { + x2 y2 x3 y3 rarc + x3 y3 x4 y4 rarc + x4 y4 x1 y1 rarc + x1 y1 x2 y2 rarc + closepath + } stopped + {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if + cleartomark + } bind def +/C { + grestore + gsave + R + clip + setCurrentScreen +} bind def +/CP { + grestore + gsave + Y + clip + setCurrentScreen +} bind def +/F { + FMfonts exch get + FMpointsize scalefont + setfont + } bind def +/Q { + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill fill + grestore + } bind def +/Gstrk { + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/Gclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GG { + gsave + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill + fill + grestore + } bind def +/GGclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GGstrk { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/Aclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/Astrk { + Gstrk +} bind def +/AA { + gsave + savematrix + newpath + + 3 index 2 div add exch 4 index 2 div sub exch + + normalize 3 index 2 div sub exch 4 index 2 div add exch + translate + rotate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/AAclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/AAstrk { + GGstrk +} bind def +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 7 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip { + + + bis ris copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + ris gis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + gis bis copy pop + dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip4 { + + + kis cis copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + cis mis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + mis yis copy pop + dup dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + yis kis copy pop + 3 mul is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def +/wbytes { + dup dup + 8 gt { pop 8 idiv mul } + { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + cvtProc + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + cvtProc + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def +fMLevel1 { +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /kk cynu magu min yelu min def + /u kk currentundercolorremoval exec def +% /u 0 def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def +} +{ +/colorSetup2 { + [ /Indexed /DeviceRGB 255 + {dup red exch get 255 div + exch dup green exch get 255 div + exch blue exch get 255 div} + ] setcolorspace +} bind def +} ifelse +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch fmConcatProcs settransfer +} bind def +/BITMAPCOLOR { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + fMLevel1 { + colorsetup + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} {is} {is} true 3 colorimage + } { + colorSetup2 + /is width depth wbytes string def + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {cf is readhexstring pop} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + fMLevel1 { + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} {is} {is} true 3 colorimage + } { + colorSetup2 + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {ip} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris} {gis} {bis} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYKc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYK { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /mis width string def + /yis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf mis readhexstring pop } + { cf yis readhexstring pop } + { cf kis readhexstring pop } + true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris gis bis width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAYc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop cis mis yis kis width cgray} image + bitmapsave restore + grestore + } bind def +/cgray { + /ww exch def + /k exch def + /y exch def + /m exch def + /c exch def + 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB + .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add + c i 3 -1 roll floor cvi put } for + c + } bind def +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /yis width string def + /mis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf mis readhexstring pop + cf yis readhexstring pop + cf kis readhexstring pop width cgray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +/I { setdash } bind def +/J { [] 0 setdash } bind def +%%EndProlog +%%BeginSetup +(5.0) FMVERSION +1 1 0 0 612 792 0 1 36 FMDOCUMENT +0 0 /Palatino-Italic FMFONTDEFINE +1 0 /Palatino-Roman FMFONTDEFINE +2 1 /Symbol FMFONTDEFINE +3 0 /Palatino-Bold FMFONTDEFINE +4 0 /Times-Roman FMFONTDEFINE +5 0 /Courier FMFONTDEFINE +6 0 /Times-Bold FMFONTDEFINE +7 0 /Helvetica FMFONTDEFINE +8 0 /Helvetica-Bold FMFONTDEFINE +9 0 /Helvetica-Narrow-Bold FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 FMFILL +11 FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 FMFILL +25 FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "1" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +J +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +185 95.74 393.76 113.24 R +7 X +0 0 0 1 0 0 0 K +V +549 99 576 117 R +V +0.3 H +0 Z +N +54 619.13 558 641.38 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 72 612 720 C +0 20 Q +0 X +0 0 0 1 0 0 0 K +-2.5 (The Java) 198 605.79 P +0 9.6 Q +-1.2 (\252) 264.92 610.59 P +0 20 Q +-2.5 ( Platform) 274.52 605.79 P +0 14 Q +-1.61 -0.28 (A White Paper) 198 587.79 B +198 144 297 171 R +7 X +V +1 7 Q +0 X +(May 1996) 198 166.33 T +54 174.47 558 276 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 174.47 558 276 R +7 X +0 0 0 1 0 0 0 K +V +1 7 Q +0 X +(2550 Gar) 199.01 193.9 T +(cia A) 226.24 193.9 T +(venue) 241.43 193.9 T +(Mountain V) 199.01 185.61 T +(iew) 236.06 185.61 T +(, CA 94043 U.S.A.) 246.64 185.61 T +(408-343-1400) 199.01 177.32 T +0 0 0 1 0 0 0 K +0 63 430 539 526 142.79 28.8 170.6 207.44 FMBEGINEPSF +%%BeginDocument: +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Adobe Illustrator(TM) 5.5 +%%For: (Bud Northern) (Mark Anderson Design) +%%Title: (JAVASOFT.1COLOR) +%%CreationDate: (3/5/96) (9:51 AM) +%%BoundingBox: 63 430 539 526 +%%HiResBoundingBox: 63.4812 430.6428 538.2056 525.3151 +%%DocumentProcessColors: Black +%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.0 0 +%%+ procset Adobe_IllustratorA_AI5 1.0 0 +%AI5_FileFormat 1.2 +%AI3_ColorUsage: Black&White +%%CMYKCustomColor: 0 1 0.91 0 (PANTONE 485 CV) +%%+ 0.79 0.76 0 0 (PANTONE 2665 CV) +%AI3_TemplateBox: 306 396 306 396 +%AI3_TileBox: 30 18 606 779 +%AI3_DocumentPreview: Macintosh_ColorPic +%AI5_ArtSize: 612 792 +%AI5_RulerUnits: 0 +%AI5_ArtFlags: 1 0 0 1 0 0 1 1 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI5_OpenToView: -450 900 -1.5 1018 725 26 1 1 3 40 +%AI5_OpenViewLayers: 7 +%%EndComments +%%BeginProlog +%%BeginResource: procset Adobe_level2_AI5 1.0 0 +%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) +%%Version: 1.0 +%%CreationDate: (04/10/93) () +%%Copyright: ((C) 1987-1993 Adobe Systems Incorporated All Rights Reserved) +userdict /Adobe_level2_AI5 21 dict dup begin + put + /packedarray where not + { + userdict begin + /packedarray + { + array astore readonly + } bind def + /setpacking /pop load def + /currentpacking false def + end + 0 + } if + pop + userdict /defaultpacking currentpacking put true setpacking + /initialize + { + Adobe_level2_AI5 begin + } bind def + /terminate + { + currentdict Adobe_level2_AI5 eq + { + end + } if + } bind def + mark + /setcustomcolor where not + { + /findcmykcustomcolor + { + 5 packedarray + } bind def + /setcustomcolor + { + exch aload pop pop + 4 + { + 4 index mul 4 1 roll + } repeat + 5 -1 roll pop + setcmykcolor + } + def + } if + + /gt38? mark {version cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def + userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put + userdict /level2? + systemdict /languagelevel known dup + { + pop systemdict /languagelevel get 2 ge + } if + put + level2? not + { + /setcmykcolor where not + { + /setcmykcolor + { + exch .11 mul add exch .59 mul add exch .3 mul add + 1 exch sub setgray + } def + } if + /currentcmykcolor where not + { + /currentcmykcolor + { + 0 0 0 1 currentgray sub + } def + } if + /setoverprint where not + { + /setoverprint /pop load def + } if + /selectfont where not + { + /selectfont + { + exch findfont exch + dup type /arraytype eq + { + makefont + } + { + scalefont + } ifelse + setfont + } bind def + } if + /cshow where not + { + /cshow + { + [ + 0 0 5 -1 roll aload pop + ] cvx bind forall + } bind def + } if + } if + cleartomark + /anyColor? + { + add add add 0 ne + } bind def + /testColor + { + gsave + setcmykcolor currentcmykcolor + grestore + } bind def + /testCMYKColorThrough + { + testColor anyColor? + } bind def + userdict /composite? + level2? + { + gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore + add add add 4 eq + } + { + 1 0 0 0 testCMYKColorThrough + 0 1 0 0 testCMYKColorThrough + 0 0 1 0 testCMYKColorThrough + 0 0 0 1 testCMYKColorThrough + and and and + } ifelse + put + composite? not + { + userdict begin + gsave + /cyan? 1 0 0 0 testCMYKColorThrough def + /magenta? 0 1 0 0 testCMYKColorThrough def + /yellow? 0 0 1 0 testCMYKColorThrough def + /black? 0 0 0 1 testCMYKColorThrough def + grestore + /isCMYKSep? cyan? magenta? yellow? black? or or or def + /customColor? isCMYKSep? not def + end + } if + end defaultpacking setpacking +%%EndResource +%%BeginResource: procset Adobe_IllustratorA_AI5 1.1 0 +%%Title: (Adobe Illustrator (R) Version 5.0 Abbreviated Prolog) +%%Version: 1.1 +%%CreationDate: (3/7/1994) () +%%Copyright: ((C) 1987-1994 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_IllustratorA_AI5_vars 70 dict dup begin +put +/_lp /none def +/_pf +{ +} def +/_ps +{ +} def +/_psf +{ +} def +/_pss +{ +} def +/_pjsf +{ +} def +/_pjss +{ +} def +/_pola 0 def +/_doClip 0 def +/cf currentflat def +/_tm matrix def +/_renderStart +[ +/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 +] def +/_renderEnd +[ +null null null null /i1 /i1 /i1 /i1 +] def +/_render -1 def +/_rise 0 def +/_ax 0 def +/_ay 0 def +/_cx 0 def +/_cy 0 def +/_leading +[ +0 0 +] def +/_ctm matrix def +/_mtx matrix def +/_sp 16#020 def +/_hyphen (-) def +/_fScl 0 def +/_cnt 0 def +/_hs 1 def +/_nativeEncoding 0 def +/_useNativeEncoding 0 def +/_tempEncode 0 def +/_pntr 0 def +/_tDict 2 dict def +/_wv 0 def +/Tx +{ +} def +/Tj +{ +} def +/CRender +{ +} def +/_AI3_savepage +{ +} def +/_gf null def +/_cf 4 array def +/_if null def +/_of false def +/_fc +{ +} def +/_gs null def +/_cs 4 array def +/_is null def +/_os false def +/_sc +{ +} def +/discardSave null def +/buffer 256 string def +/beginString null def +/endString null def +/endStringLength null def +/layerCnt 1 def +/layerCount 1 def +/perCent (%) 0 get def +/perCentSeen? false def +/newBuff null def +/newBuffButFirst null def +/newBuffLast null def +/clipForward? false def +end +userdict /Adobe_IllustratorA_AI5 74 dict dup begin +put +/initialize +{ + Adobe_IllustratorA_AI5 dup begin + Adobe_IllustratorA_AI5_vars begin + discardDict + { + bind pop pop + } forall + dup /nc get begin + { + dup xcheck 1 index type /operatortype ne and + { + bind + } if + pop pop + } forall + end + newpath +} def +/terminate +{ + end + end +} def +/_ +null def +/ddef +{ + Adobe_IllustratorA_AI5_vars 3 1 roll put +} def +/xput +{ + dup load dup length exch maxlength eq + { + dup dup load dup + length 2 mul dict copy def + } if + load begin + def + end +} def +/npop +{ + { + pop + } repeat +} def +/sw +{ + dup length exch stringwidth + exch 5 -1 roll 3 index mul add + 4 1 roll 3 1 roll mul add +} def +/swj +{ + dup 4 1 roll + dup length exch stringwidth + exch 5 -1 roll 3 index mul add + 4 1 roll 3 1 roll mul add + 6 2 roll /_cnt 0 ddef + { + 1 index eq + { + /_cnt _cnt 1 add ddef + } if + } forall + pop + exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop +} def +/ss +{ + 4 1 roll + { + 2 npop + (0) exch 2 copy 0 exch put pop + gsave + false charpath currentpoint + 4 index setmatrix + stroke + grestore + moveto + 2 copy rmoveto + } exch cshow + 3 npop +} def +/jss +{ + 4 1 roll + { + 2 npop + (0) exch 2 copy 0 exch put + gsave + _sp eq + { + exch 6 index 6 index 6 index 5 -1 roll widthshow + currentpoint + } + { + false charpath currentpoint + 4 index setmatrix stroke + } ifelse + grestore + moveto + 2 copy rmoveto + } exch cshow + 6 npop +} def +/sp +{ + { + 2 npop (0) exch + 2 copy 0 exch put pop + false charpath + 2 copy rmoveto + } exch cshow + 2 npop +} def +/jsp +{ + { + 2 npop + (0) exch 2 copy 0 exch put + _sp eq + { + exch 5 index 5 index 5 index 5 -1 roll widthshow + } + { + false charpath + } ifelse + 2 copy rmoveto + } exch cshow + 5 npop +} def +/pl +{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform +} def +/setstrokeadjust where +{ + pop true setstrokeadjust + /c + { + curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll curveto + } def + /V + /v load def + /y + { + 2 copy curveto + } def + /Y + /y load def + /l + { + lineto + } def + /L + /l load def + /m + { + moveto + } def +} +{ + /c + { + pl curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll pl curveto + } def + /V + /v load def + /y + { + pl 2 copy curveto + } def + /Y + /y load def + /l + { + pl lineto + } def + /L + /l load def + /m + { + pl moveto + } def +} ifelse +/d +{ + setdash +} def +/cf +{ +} def +/i +{ + dup 0 eq + { + pop cf + } if + setflat +} def +/j +{ + setlinejoin +} def +/J +{ + setlinecap +} def +/M +{ + setmiterlimit +} def +/w +{ + setlinewidth +} def +/H +{ +} def +/h +{ + closepath +} def +/N +{ + _pola 0 eq + { + _doClip 1 eq + { + clip /_doClip 0 ddef + } if + newpath + } + { + /CRender + { + N + } ddef + } ifelse +} def +/n +{ + N +} def +/F +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _pf grestore clip newpath /_lp /none ddef _fc + /_doClip 0 ddef + } + { + _pf + } ifelse + } + { + /CRender + { + F + } ddef + } ifelse +} def +/f +{ + closepath + F +} def +/S +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _ps grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + _ps + } ifelse + } + { + /CRender + { + S + } ddef + } ifelse +} def +/s +{ + closepath + S +} def +/B +{ + _pola 0 eq + { + _doClip 1 eq + gsave F grestore + { + gsave S grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + S + } ifelse + } + { + /CRender + { + B + } ddef + } ifelse +} def +/b +{ + closepath + B +} def +/W +{ + /_doClip 1 ddef +} def +/* +{ + count 0 ne + { + dup type /stringtype eq + { + pop + } if + } if + newpath +} def +/u +{ +} def +/U +{ +} def +/q +{ + _pola 0 eq + { + gsave + } if +} def +/Q +{ + _pola 0 eq + { + grestore + } if +} def +/*u +{ + _pola 1 add /_pola exch ddef +} def +/*U +{ + _pola 1 sub /_pola exch ddef + _pola 0 eq + { + CRender + } if +} def +/D +{ + pop +} def +/*w +{ +} def +/*W +{ +} def +/` +{ + /_i save ddef + clipForward? + { + nulldevice + } if + 6 1 roll 4 npop + concat pop + userdict begin + /showpage + { + } def + 0 setgray + 0 setlinecap + 1 setlinewidth + 0 setlinejoin + 10 setmiterlimit + [] 0 setdash + /setstrokeadjust where {pop false setstrokeadjust} if + newpath + 0 setgray + false setoverprint +} def +/~ +{ + end + _i restore +} def +/O +{ + 0 ne + /_of exch ddef + /_lp /none ddef +} def +/R +{ + 0 ne + /_os exch ddef + /_lp /none ddef +} def +/g +{ + /_gf exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _gf setgray + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + fill + } ddef + /_psf + { + _fc + ashow + } ddef + /_pjsf + { + _fc + awidthshow + } ddef + /_lp /none ddef +} def +/G +{ + /_gs exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _gs setgray + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/k +{ + _cf astore pop + /_fc + { + _lp /fill ne + { + _of setoverprint + _cf aload pop setcmykcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + fill + } ddef + /_psf + { + _fc + ashow + } ddef + /_pjsf + { + _fc + awidthshow + } ddef + /_lp /none ddef +} def +/K +{ + _cs astore pop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _cs aload pop setcmykcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/x +{ + /_gf exch ddef + findcmykcustomcolor + /_if exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + fill + } ddef + /_psf + { + _fc + ashow + } ddef + /_pjsf + { + _fc + awidthshow + } ddef + /_lp /none ddef +} def +/X +{ + /_gs exch ddef + findcmykcustomcolor + /_is exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/A +{ + pop +} def +/annotatepage +{ +userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse +} def +/discard +{ + save /discardSave exch store + discardDict begin + /endString exch store + gt38? + { + 2 add + } if + load + stopped + pop + end + discardSave restore +} bind def +userdict /discardDict 7 dict dup begin +put +/pre38Initialize +{ + /endStringLength endString length store + /newBuff buffer 0 endStringLength getinterval store + /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store + /newBuffLast newBuff endStringLength 1 sub 1 getinterval store +} def +/shiftBuffer +{ + newBuff 0 newBuffButFirst putinterval + newBuffLast 0 + currentfile read not + { + stop + } if + put +} def +0 +{ + pre38Initialize + mark + currentfile newBuff readstring exch pop + { + { + newBuff endString eq + { + cleartomark stop + } if + shiftBuffer + } loop + } + { + stop + } ifelse +} def +1 +{ + pre38Initialize + /beginString exch store + mark + currentfile newBuff readstring exch pop + { + { + newBuff beginString eq + { + /layerCount dup load 1 add store + } + { + newBuff endString eq + { + /layerCount dup load 1 sub store + layerCount 0 eq + { + cleartomark stop + } if + } if + } ifelse + shiftBuffer + } loop + } + { + stop + } ifelse +} def +2 +{ + mark + { + currentfile buffer readline not + { + stop + } if + endString eq + { + cleartomark stop + } if + } loop +} def +3 +{ + /beginString exch store + /layerCnt 1 store + mark + { + currentfile buffer readline not + { + stop + } if + dup beginString eq + { + pop /layerCnt dup load 1 add store + } + { + endString eq + { + layerCnt 1 eq + { + cleartomark stop + } + { + /layerCnt dup load 1 sub store + } ifelse + } if + } ifelse + } loop +} def +end +userdict /clipRenderOff 15 dict dup begin +put +{ + /n /N /s /S /f /F /b /B +} +{ + { + _doClip 1 eq + { + /_doClip 0 ddef clip + } if + newpath + } def +} forall +/Tr /pop load def +/Bb {} def +/BB /pop load def +/Bg {12 npop} def +/Bm {6 npop} def +/Bc /Bm load def +/Bh {4 npop} def +end +/Lb +{ + 4 npop + 6 1 roll + pop + 4 1 roll + pop pop pop + 0 eq + { + 0 eq + { + (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard + } + { + /clipForward? true def + + /Tx /pop load def + /Tj /pop load def + currentdict end clipRenderOff begin begin + } ifelse + } + { + 0 eq + { + save /discardSave exch store + } if + } ifelse +} bind def +/LB +{ + discardSave dup null ne + { + restore + } + { + pop + clipForward? + { + currentdict + end + end + begin + + /clipForward? false ddef + } if + } ifelse +} bind def +/Pb +{ + pop pop + 0 (%AI5_EndPalette) discard +} bind def +/Np +{ + 0 (%AI5_End_NonPrinting--) discard +} bind def +/Ln /pop load def +/Ap +/pop load def +/Ar +{ + 72 exch div + 0 dtransform dup mul exch dup mul add sqrt + dup 1 lt + { + pop 1 + } if + setflat +} def +/Mb +{ + q +} def +/Md +{ +} def +/MB +{ + Q +} def +/nc 3 dict def +nc begin +/setgray +{ + pop +} bind def +/setcmykcolor +{ + 4 npop +} bind def +/setcustomcolor +{ + 2 npop +} bind def +currentdict readonly pop +end +currentdict readonly pop +end +setpacking +%%EndResource +%%EndProlog +%%BeginSetup +Adobe_level2_AI5 /initialize get exec +Adobe_IllustratorA_AI5 /initialize get exec +%AI5_Begin_NonPrinting +Np +%AI3_BeginPattern: (Yellow Stripe) +(Yellow Stripe) 8.4499 4.6 80.4499 76.6 [ +%AI3_Tile +(0 O 0 R 0 0.4 1 0 k 0 0.4 1 0 K) @ +( +800 Ar +0 J 0 j 3.6 w 4 M []0 d +%AI3_Note: +0 D +8.1999 8.1999 m +80.6999 8.1999 L +S +8.1999 22.6 m +80.6999 22.6 L +S +8.1999 37.0001 m +80.6999 37.0001 L +S +8.1999 51.3999 m +80.6999 51.3999 L +S +8.1999 65.8 m +80.6999 65.8 L +S +8.1999 15.3999 m +80.6999 15.3999 L +S +8.1999 29.8 m +80.6999 29.8 L +S +8.1999 44.1999 m +80.6999 44.1999 L +S +8.1999 58.6 m +80.6999 58.6 L +S +8.1999 73.0001 m +80.6999 73.0001 L +S +) & +] E +%AI3_EndPattern +%AI5_End_NonPrinting-- +%AI5_Begin_NonPrinting +Np +3 Bn +%AI5_BeginGradient: (Black & White) +(Black & White) 0 2 Bd +[ +< +FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 +D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 +AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 +87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 +5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 +37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 +0F0E0D0C0B0A09080706050403020100 +> +0 %_Br +[ +0 0 50 100 %_Bs +1 0 50 0 %_Bs +BD +%AI5_EndGradient +%AI5_BeginGradient: (Red & Yellow) +(Red & Yellow) 0 2 Bd +[ +0 +< +000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F +505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 +78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F +A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 +C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF +F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF +> +< +FFFFFEFEFDFDFDFCFCFBFBFBFAFAF9F9F9F8F8F7F7F7F6F6F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0EF +EFEFEEEEEDEDEDECECEBEBEBEAEAE9E9E9E8E8E7E7E7E6E6E5E5E5E4E4E3E3E3E2E2E1E1E1E0E0DF +DFDFDEDEDDDDDDDCDCDBDBDBDADAD9D9D9D8D8D7D7D7D6D6D5D5D5D4D4D3D3D3D2D2D1D1D1D0D0CF +CFCFCECECDCDCDCCCCCBCBCBCACAC9C9C9C8C8C7C7C7C6C6C5C5C5C4C4C3C3C3C2C2C1C1C1C0C0BF +BFBFBEBEBDBDBDBCBCBBBBBBBABAB9B9B9B8B8B7B7B7B6B6B5B5B5B4B4B3B3B3B2B2B1B1B1B0B0AF +AFAFAEAEADADADACACABABABAAAAA9A9A9A8A8A7A7A7A6A6A5A5A5A4A4A3A3A3A2A2A1A1A1A0A09F +9F9F9E9E9D9D9D9C9C9B9B9B9A9A9999 +> +0 +1 %_Br +[ +0 1 0.6 0 1 50 100 %_Bs +0 0 1 0 1 50 0 %_Bs +BD +%AI5_EndGradient +%AI5_BeginGradient: (Yellow & Blue Radial) +(Yellow & Blue Radial) 1 2 Bd +[ +< +000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F +505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 +78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F +A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 +C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF +F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF +> +< +1415161718191A1B1C1D1E1F1F202122232425262728292A2A2B2C2D2E2F30313233343536363738 +393A3B3C3D3E3F40414142434445464748494A4B4C4D4D4E4F50515253545556575858595A5B5C5D +5E5F60616263646465666768696A6B6C6D6E6F6F707172737475767778797A7B7B7C7D7E7F808182 +83848586868788898A8B8C8D8E8F90919292939495969798999A9B9C9D9D9E9FA0A1A2A3A4A5A6A7 +A8A9A9AAABACADAEAFB0B1B2B3B4B4B5B6B7B8B9BABBBCBDBEBFC0C0C1C2C3C4C5C6C7C8C9CACBCB +CCCDCECFD0D1D2D3D4D5D6D7D7D8D9DADBDCDDDEDFE0E1E2E2E3E4E5E6E7E8E9EAEBECEDEEEEEFF0 +F1F2F3F4F5F6F7F8F9F9FAFBFCFDFEFF +> +< +ABAAAAA9A8A7A7A6A5A5A4A3A3A2A1A1A09F9F9E9D9D9C9B9B9A9999989797969595949393929191 +908F8F8E8D8D8C8B8B8A8989888787868585848383828181807F7F7E7D7D7C7B7B7A797978777776 +7575747373727171706F6F6E6D6D6C6B6B6A6969686767666565646362626160605F5E5E5D5C5C5B +5A5A5958585756565554545352525150504F4E4E4D4C4C4B4A4A4948484746464544444342424140 +403F3E3E3D3C3C3B3A3A3938383736363534343332323130302F2E2E2D2C2C2B2A2A292828272626 +25242423222121201F1F1E1D1D1C1B1B1A1919181717161515141313121111100F0F0E0D0D0C0B0B +0A090908070706050504030302010100 +> +0 +1 %_Br +[ +0 0.08 0.67 0 1 50 14 %_Bs +1 1 0 0 1 50 100 %_Bs +BD +%AI5_EndGradient +%AI5_End_NonPrinting-- +%AI5_BeginPalette +36 71 Pb +Pn +Pc +1 g +Pc +0 g +Pc +0 0 0 0 k +Pc +0.75 g +Pc +0.5 g +Pc +0.25 g +Pc +0 g +Pc +Bb +2 (Black & White) -4014 4716 0 0 1 0 0 1 0 0 Bg +0 BB +Pc +0.25 0 0 0 k +Pc +0.5 0 0 0 k +Pc +0.75 0 0 0 k +Pc +1 0 0 0 k +Pc +0.25 0.25 0 0 k +Pc +0.5 0.5 0 0 k +Pc +0.75 0.75 0 0 k +Pc +1 1 0 0 k +Pc +Bb +2 (Red & Yellow) -4014 4716 0 0 1 0 0 1 0 0 Bg +0 BB +Pc +0 0.25 0 0 k +Pc +0 0.5 0 0 k +Pc +0 0.75 0 0 k +Pc +0 1 0 0 k +Pc +0 0.25 0.25 0 k +Pc +0 0.5 0.5 0 k +Pc +0 0.75 0.75 0 k +Pc +0 1 1 0 k +Pc +Bb +0 0 0 0 Bh +2 (Yellow & Blue Radial) -4014 4716 0 0 1 0 0 1 0 0 Bg +0 BB +Pc +0 0 0.25 0 k +Pc +0 0 0.5 0 k +Pc +0 0 0.75 0 k +Pc +0 0 1 0 k +Pc +0.25 0 0.25 0 k +Pc +0.5 0 0.5 0 k +Pc +0.75 0 0.75 0 k +Pc +1 0 1 0 k +Pc +(Yellow Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p +Pc +0.25 0.125 0 0 k +Pc +0.5 0.25 0 0 k +Pc +0.75 0.375 0 0 k +Pc +1 0.5 0 0 k +Pc +0.125 0.25 0 0 k +Pc +0.25 0.5 0 0 k +Pc +0.375 0.75 0 0 k +Pc +0.5 1 0 0 k +Pc +0 1 0.91 0 (PANTONE 485 CV) 0 x +Pc +0 0.25 0.125 0 k +Pc +0 0.5 0.25 0 k +Pc +0 0.75 0.375 0 k +Pc +0 1 0.5 0 k +Pc +0 0.125 0.25 0 k +Pc +0 0.25 0.5 0 k +Pc +0 0.375 0.75 0 k +Pc +0 0.5 1 0 k +Pc +0.79 0.76 0 0 (PANTONE 2665 CV) 0 x +Pc +0.125 0 0.25 0 k +Pc +0.25 0 0.5 0 k +Pc +0.375 0 0.75 0 k +Pc +0.5 0 1 0 k +Pc +0.25 0 0.125 0 k +Pc +0.5 0 0.25 0 k +Pc +0.75 0 0.375 0 k +Pc +1 0 0.5 0 k +Pc +0 1 1 0 k +Pc +0.25 0.125 0.125 0 k +Pc +0.5 0.25 0.25 0 k +Pc +0.75 0.375 0.375 0 k +Pc +1 0.5 0.5 0 k +Pc +0.25 0.25 0.125 0 k +Pc +0.5 0.5 0.25 0 k +Pc +0.75 0.75 0.375 0 k +Pc +1 1 0.5 0 k +Pc +0.8 0.75 0 0 k +Pc +0.125 0.25 0.125 0 k +Pc +0.25 0.5 0.25 0 k +Pc +0.375 0.75 0.375 0 k +Pc +0.5 1 0.5 0 k +Pc +0.125 0.25 0.25 0 k +Pc +0.25 0.5 0.5 0 k +Pc +0.375 0.75 0.75 0 k +Pc +0.5 1 1 0 k +Pc +0 0 0 0 k +Pc +0.125 0.125 0.25 0 k +Pc +0.25 0.25 0.5 0 k +Pc +0.375 0.375 0.75 0 k +Pc +0.5 0.5 1 0 k +Pc +0.25 0.125 0.25 0 k +Pc +0.5 0.25 0.5 0 k +Pc +0.75 0.375 0.75 0 k +Pc +1 0.5 1 0 k +Pc +PB +%AI5_EndPalette +%%EndSetup +%AI5_BeginLayer +1 1 1 1 0 0 0 79 128 255 Lb +(Layer 1) Ln +0 A +800 Ar +0 J 0 j 1 w 4 M []0 d +%AI3_Note: +0 D +-4014 524 m +4626 524 L +(N) * +-4014 457 m +4626 457 L +(N) * +-4014 439.5 m +4626 439.5 L +(N) * +498 4716 m +498 -3924 L +(N) * +1 A +u +*u +0 O +0 g +176.5716 507.7789 m +176.5716 519.3653 175.5278 520.6177 169.3692 521.1397 c +166.7596 521.3485 L +166.1334 521.7661 166.3422 523.6449 166.9684 523.9581 c +173.0226 523.7493 176.5716 523.6447 180.9554 523.6447 c +185.1308 523.6447 188.6798 523.7493 192.855 523.9581 c +193.4812 523.6449 193.69 521.7661 193.0638 521.3485 c +191.498 521.1397 L +185.3396 520.3047 185.1308 518.8433 185.1308 507.7789 c +185.1308 469.0535 L +185.1308 460.8073 184.7132 453.6049 182.73 448.8033 c +179.2854 440.4529 171.8744 433.7725 162.1668 433.7725 c +160.9142 433.7725 157.6784 433.8769 157.6784 435.9645 c +157.6784 437.7389 159.2442 440.7659 161.4362 440.7659 c +162.6888 440.7659 163.9412 440.5573 165.2984 440.1397 c +166.7596 439.7221 168.221 439.4091 169.6822 439.4091 c +171.8744 439.4091 173.127 440.6617 173.8576 442.1229 c +176.2584 447.0289 176.5716 462.6861 176.5716 468.3227 C +176.5716 507.7789 l +f +*U +*u +210.0184 474.8477 m +207.886 474.8477 207.9678 474.8477 207.2298 472.6333 c +203.867 462.7909 L +202.2266 457.9519 202.5546 457.7059 205.5894 457.2957 c +207.9678 456.8855 L +208.542 456.3115 208.46 454.8351 207.8038 454.5071 c +205.1792 454.6711 202.4726 454.6711 199.11 454.7531 c +196.4032 454.7531 193.8606 454.6711 190.99 454.5071 c +190.4158 454.9171 190.334 456.1475 190.908 456.8855 c +193.3686 457.2957 L +195.747 457.6237 196.6494 458.3619 197.8796 461.0685 c +198.8638 463.2009 200.176 466.6459 201.8984 471.0749 c +213.135 500.2735 L +214.2014 502.8981 214.9396 504.8665 214.6934 506.2609 c +217.564 506.8349 220.2708 510.1977 220.4346 510.1977 c +221.0908 510.1977 221.501 509.9517 221.829 509.5415 c +223.1414 505.8507 224.2076 501.9959 225.5198 498.3051 c +237.3306 463.9391 L +239.217 458.4441 239.627 457.8699 243.81 457.1317 c +245.0402 456.8855 L +245.6966 456.3115 245.6966 454.9171 245.1224 454.5071 c +241.7596 454.6711 238.7248 454.7531 234.46 454.7531 c +230.933 454.7531 227.3244 454.5891 224.4538 454.5071 c +223.7974 454.9171 223.7154 456.3935 224.2076 456.8855 c +226.012 457.1317 L +228.9646 457.4597 229.2108 457.9519 228.1446 461.4787 c +224.2896 472.6333 L +223.4694 474.8477 223.2234 474.8477 220.9268 474.8477 C +210.0184 474.8477 l +f +1 D +219.8606 478.5385 m +222.157 478.5385 222.4852 478.7027 221.829 480.6711 c +218.3842 490.5133 L +216.9898 494.8603 216.4978 496.4187 216.0878 496.9929 c +215.9238 496.9929 L +215.5956 496.4187 214.9396 494.3683 213.4632 490.5133 c +210.0184 480.9171 L +209.1162 478.5385 209.3622 478.5385 211.3306 478.5385 C +219.8606 478.5385 l +f +*U +*u +0 D +269.7236 475.0937 m +266.4428 467.6301 262.588 458.0339 261.1938 453.8509 c +261.0296 453.6049 260.3734 453.4409 259.7992 453.4409 c +259.2252 453.4409 258.651 453.6049 258.241 453.8509 c +257.2568 457.1317 255.9444 461.1507 254.468 464.5953 c +240.1148 499.1253 L +237.8184 504.6205 237.0802 505.7687 233.7994 506.4249 c +231.831 506.8349 L +231.2568 507.4091 231.2568 508.8855 232.077 509.1315 c +235.2758 508.9675 238.8026 508.8855 242.0012 508.8855 c +245.692 508.8855 248.4808 508.9675 252.8278 509.1315 c +253.566 508.6395 253.648 507.3271 252.9098 506.7529 c +250.8592 506.2609 L +249.0548 505.8507 248.3986 505.4407 248.3986 504.7845 c +248.3986 504.0465 249.0548 502.2419 252.4178 493.8761 c +258.323 479.2767 L +259.7992 475.5859 262.0138 470.7467 262.834 468.8603 c +267.263 479.1947 272.1842 490.5133 276.5312 501.6679 c +277.8434 504.9485 277.5974 505.6047 275.1368 506.1789 c +272.7582 506.7529 L +272.1842 507.4091 272.2662 508.7215 272.9224 509.1315 c +276.2852 508.9675 279.0738 508.8855 281.6984 508.8855 c +284.651 508.8855 287.3576 508.9675 289.6542 509.1315 c +290.3102 508.7215 290.2282 507.4091 289.8182 506.7529 c +287.7678 506.3429 L +285.8812 505.9327 284.0768 505.3587 282.6826 502.9801 c +280.386 499.0431 278.0076 493.5481 274.3166 485.2641 C +269.7236 475.0937 l +f +*U +*u +295.058 474.8477 m +292.9256 474.8477 293.0076 474.8477 292.2694 472.6333 c +288.9066 462.7909 L +287.2662 457.9519 287.5942 457.7059 290.629 457.2957 c +293.0076 456.8855 L +293.5818 456.3115 293.4996 454.8351 292.8436 454.5071 c +290.219 454.6711 287.5124 454.6711 284.1494 454.7531 c +281.4428 454.7531 278.9004 454.6711 276.0298 454.5071 c +275.4556 454.9171 275.3736 456.1475 275.9476 456.8855 c +278.4082 457.2957 L +280.7868 457.6237 281.689 458.3619 282.9192 461.0685 c +283.9034 463.2009 285.2158 466.6459 286.9382 471.0749 c +298.1748 500.2735 L +299.241 502.8981 299.9792 504.8665 299.733 506.2609 c +302.6038 506.8349 305.3104 510.1977 305.4744 510.1977 c +306.1306 510.1977 306.5406 509.9517 306.8686 509.5415 c +308.181 505.8507 309.2472 501.9959 310.5596 498.3051 c +322.3702 463.9391 L +324.2568 458.4441 324.6668 457.8699 328.8498 457.1317 c +330.08 456.8855 L +330.7362 456.3115 330.7362 454.9171 330.162 454.5071 c +326.7992 454.6711 323.7646 454.7531 319.4996 454.7531 c +315.9728 454.7531 312.364 454.5891 309.4932 454.5071 c +308.8372 454.9171 308.7552 456.3935 309.2472 456.8855 c +311.0516 457.1317 L +314.0044 457.4597 314.2504 457.9519 313.1842 461.4787 c +309.3292 472.6333 L +308.5092 474.8477 308.263 474.8477 305.9666 474.8477 C +295.058 474.8477 l +f +1 D +304.9002 478.5385 m +307.1968 478.5385 307.5248 478.7027 306.8686 480.6711 c +303.424 490.5133 L +302.0296 494.8603 301.5376 496.4187 301.1274 496.9929 c +300.9634 496.9929 L +300.6354 496.4187 299.9792 494.3683 298.5028 490.5133 c +295.058 480.9171 L +294.1558 478.5385 294.4018 478.5385 296.3704 478.5385 C +304.9002 478.5385 l +f +*U +*u +0 D +351.5632 453.0831 m +342.7952 453.0831 337.263 455.7969 335.2796 456.9451 c +334.027 459.2415 332.6702 466.6525 332.4614 471.5585 c +332.9832 472.2893 334.549 472.4979 334.9666 471.8717 c +336.5322 466.5483 340.812 456.3189 352.9202 456.3189 c +361.6882 456.3189 365.9678 462.0599 365.9678 468.3227 c +365.9678 472.9155 365.0284 478.0301 357.4086 482.9361 c +347.4924 489.4077 L +342.2732 492.8523 336.2192 498.8021 336.2192 507.3613 c +336.2192 517.2777 343.9434 525.3151 357.513 525.3151 c +360.7488 525.3151 364.5066 524.7931 367.2204 523.9581 c +368.5774 523.6449 370.0388 523.3317 370.8738 523.3317 c +371.8132 520.8265 372.7526 514.9813 372.7526 510.5971 c +372.3352 509.9709 370.665 509.6577 370.1432 510.2841 c +368.7862 515.2943 365.9678 522.0791 355.9474 522.0791 c +345.7178 522.0791 343.5258 515.2943 343.5258 510.4929 c +343.5258 504.4387 348.5362 500.1591 352.3982 497.6539 c +360.7488 492.4349 L +367.3248 488.3641 373.7964 482.3099 373.7964 472.3935 c +373.7964 460.9115 365.1328 453.0831 351.5632 453.0831 c +f +*U +*u +436.2588 495.1933 m +443.7822 480.8941 438.5084 464.4957 423.8462 456.7813 c +407.442 448.1505 391.9338 454.7267 385.136 467.6469 c +377.3454 482.4543 382.3214 499.0667 397.5642 507.0865 c +414.3312 515.9081 429.3082 508.4037 436.2588 495.1933 c +f +1 D +393.9002 474.9455 m +399.1704 464.9289 410.6324 453.5361 423.0444 460.0665 c +431.3192 464.4203 434.7508 474.1035 427.0748 488.6929 c +421.308 499.6533 409.6892 509.7587 398.1482 503.6865 c +390.8896 499.8675 385.7658 490.4061 393.9002 474.9455 c +f +*U +*u +0 D +469.3974 508.8855 m +474.6466 508.8855 479.2396 508.9675 480.962 509.1315 c +480.962 507.3271 480.962 501.1757 481.126 497.3209 c +480.798 496.6647 479.3216 496.5007 478.5014 496.9929 c +477.6814 501.7499 476.369 504.1283 473.2524 504.9485 c +471.0378 505.5227 468.9872 505.6047 466.3626 505.6047 c +462.1796 505.6047 L +458.735 505.6047 458.735 505.4407 458.735 500.8477 c +458.735 486.1663 L +458.735 484.1159 458.817 483.9517 460.7034 483.9517 c +465.5424 483.9517 L +472.6782 483.9517 473.9904 484.1159 474.7286 487.5605 c +475.3848 490.3493 L +475.8768 490.9233 477.4352 490.9233 477.8454 490.2671 c +477.7632 488.1347 477.5992 485.1001 477.5992 482.0653 c +477.5992 479.0307 477.7632 476.0781 477.8454 473.5355 c +477.4352 472.8793 475.8768 472.8793 475.3848 473.4533 c +474.7286 476.6521 L +473.9904 480.0969 472.6782 480.2609 465.5424 480.2609 c +460.7034 480.2609 L +458.817 480.2609 458.735 480.0969 458.735 478.0463 c +458.735 466.5637 L +458.735 457.8699 459.473 457.6237 463.328 457.2957 c +466.7728 456.8855 L +467.347 456.3115 467.2648 454.8351 466.6088 454.5071 c +461.3596 454.6711 457.6688 454.7531 454.0598 454.7531 c +450.451 454.7531 446.7602 454.6711 442.9874 454.5071 c +442.3312 454.8351 442.2492 456.3115 442.8234 456.8855 c +444.6276 457.1317 L +448.4826 457.6237 449.2208 457.8699 449.2208 466.5637 c +449.2208 497.0747 L +449.2208 505.7687 448.4826 506.0149 444.6276 506.5889 c +443.5614 506.7529 L +442.9874 507.3271 443.0694 508.8035 443.7256 509.1315 c +446.5962 508.9675 450.287 508.8855 453.8958 508.8855 C +469.3974 508.8855 l +f +*U +*u +506.6286 501.9959 m +506.6286 505.4407 506.5464 505.6047 504.414 505.6047 c +499.821 505.6047 L +492.2752 505.6047 490.0608 504.7025 487.026 498.0589 c +486.452 497.5669 484.7296 497.8129 484.4014 498.6331 c +485.7956 503.0621 487.026 508.1473 487.6002 511.0179 c +487.7642 511.2639 488.0922 511.3461 488.5024 511.3461 c +488.8304 511.3461 489.1584 511.2639 489.3226 511.0179 c +489.7326 508.9675 490.8808 508.8855 496.4582 508.8855 c +529.9218 508.8855 L +533.9408 508.8855 535.171 509.1315 536.1552 511.0179 c +536.4832 511.1819 536.8114 511.3461 537.1396 511.3461 c +537.6316 511.3461 538.0416 511.1819 538.2056 510.9359 c +537.3856 507.5731 536.7294 500.5195 536.9754 497.8949 c +536.5654 497.2389 535.171 497.0747 534.4328 497.6489 c +533.3666 504.0465 531.8082 505.6047 523.0322 505.6047 c +518.3572 505.6047 L +516.2246 505.6047 516.1426 505.4407 516.1426 501.9959 c +516.1426 466.5637 L +516.1426 457.8699 516.8808 457.6237 520.7358 457.2137 c +523.6884 456.8855 L +524.2624 456.3115 524.1806 454.8351 523.5244 454.5071 c +518.7672 454.6711 515.0764 454.7531 511.4676 454.7531 c +507.8588 454.7531 504.0038 454.6711 498.7546 454.5071 c +498.0986 454.8351 498.0164 456.4755 498.5906 456.8855 c +502.0356 457.2957 L +505.8904 457.6237 506.6286 457.8699 506.6286 466.5637 C +506.6286 501.9959 l +f +*U +1 Ap +0 R +0.9 G +0.0797 w +84.1686 502.0388 m +89.091 497.1166 L +70.6526 478.6605 L +70.3158 478.324 70.3375 477.7555 70.702 477.3919 c +71.0649 477.0283 71.6334 477.0058 71.9708 477.3432 C +90.4005 495.8064 L +95.353 490.8553 L +76.7494 472.2375 L +73.8856 469.373 69.0566 469.5595 65.9624 472.653 c +62.8696 475.7465 62.6828 480.5762 65.5476 483.44 C +84.1686 502.0388 L +b +84.2031 455.1757 m +79.2807 460.0978 L +97.7184 478.5537 L +98.0556 478.8902 98.0342 479.4589 97.6697 479.8225 c +97.3068 480.1871 96.7374 480.2086 96.4001 479.8712 C +77.9712 461.408 L +73.0196 466.3591 L +91.622 484.9769 L +94.4861 487.8415 99.315 487.655 102.4093 484.5614 c +105.5021 481.4685 105.6877 476.639 102.8241 473.7744 C +84.2031 455.1757 L +b +85.3913 454.0591 m +90.3128 458.9812 L +108.7693 440.5428 L +109.1052 440.2063 109.6739 440.2286 110.0382 440.5922 c +110.4011 440.9561 110.4243 441.5246 110.0862 441.8613 C +91.6229 460.2917 L +96.5748 465.2433 L +115.1916 446.6406 L +118.0555 443.776 117.8697 438.9462 114.7763 435.8536 c +111.6835 432.76 106.853 432.5733 103.9891 435.438 C +85.3913 454.0591 L +b +132.2538 454.0933 m +127.3313 449.1711 L +108.8755 467.6096 L +108.539 467.9461 107.9712 467.9245 107.6066 467.56 c +107.2436 467.1964 107.2207 466.6285 107.5579 466.2913 C +126.0218 447.8607 L +121.0703 442.9098 L +102.4524 461.5125 L +99.5884 464.3764 99.7744 469.2062 102.8687 472.2996 c +105.9615 475.3933 110.7918 475.5792 113.6557 472.7153 C +132.2538 454.0933 L +b +133.3701 455.2815 m +128.4479 460.2039 L +146.8872 478.6592 L +147.2229 478.9963 147.2015 479.5641 146.8369 479.9286 c +146.474 480.2925 145.9046 480.3148 145.5688 479.9774 C +127.1384 461.5134 L +122.1868 466.465 L +140.7895 485.0831 L +143.6533 487.9469 148.483 487.7611 151.5765 484.6676 c +154.6694 481.574 154.8568 476.7444 151.9928 473.8803 C +133.3701 455.2815 L +b +133.3358 502.1449 m +138.2582 497.2227 L +119.8198 478.7668 L +119.4831 478.4292 119.5047 477.8616 119.8692 477.498 c +120.2337 477.1335 120.8006 477.1119 121.138 477.4484 C +139.5691 495.9123 L +144.5202 490.9605 L +125.9183 472.3427 L +123.0528 469.4788 118.2239 469.6656 115.1313 472.7582 c +112.0368 475.8517 111.851 480.6816 114.7148 483.5454 C +133.3358 502.1449 L +b +132.1485 503.2615 m +127.2262 498.3391 L +108.7709 516.7768 L +108.4338 517.1143 107.866 517.0917 107.5014 516.7281 c +107.1369 516.3643 107.1155 515.7958 107.4527 515.4593 C +125.9167 497.0289 L +120.9642 492.0771 L +102.347 510.6797 L +99.4832 513.5436 99.669 518.3734 102.7619 521.467 c +105.8554 524.5605 110.685 524.7464 113.5489 521.8825 C +132.1485 503.2615 L +b +85.2842 503.2273 m +90.2073 508.1494 L +108.6625 489.711 L +109 489.3745 109.5678 489.3958 109.9314 489.7595 c +110.2957 490.124 110.3182 490.6918 109.9808 491.0292 C +91.5169 509.4589 L +96.4695 514.4105 L +115.0865 495.8078 L +117.9503 492.9439 117.7645 488.1143 114.6709 485.0208 c +111.5783 481.9272 106.7478 481.7414 103.8839 484.6053 C +85.2842 503.2273 L +b +u +*u +0 Ap +1 w +193.219 433.6811 m +196.0814 445.6746 L +199.1037 445.6746 L +201.8222 433.6811 L +199.4235 433.6811 L +198.8319 436.7195 L +196.2093 436.7195 L +195.6176 433.6811 L +193.219 433.6811 l +f +1 D +196.5611 438.4785 m +198.4801 438.4785 L +197.8724 441.8846 L +197.7605 442.4443 197.7125 442.988 197.6485 443.5477 c +197.6325 443.8196 197.6006 444.0914 197.5686 444.3473 c +197.5366 444.3473 L +197.5046 444.0914 197.4726 443.8196 197.4566 443.5477 c +197.3927 442.988 197.3447 442.4443 197.2328 441.8846 C +196.5611 438.4785 l +f +*U +*u +0 D +218.0943 442.0286 m +218.1103 443.1 218.0144 444.1554 216.783 444.1554 c +216.0315 444.1554 215.5517 443.8516 215.5517 443.036 c +215.5517 442.1245 216.1274 441.7727 216.831 441.3249 c +217.5666 440.8612 218.9259 439.9657 219.5495 439.358 c +220.3171 438.6064 220.557 437.8868 220.557 436.8474 c +220.557 434.5767 219.0538 433.3933 216.863 433.3933 c +214.1765 433.3933 213.217 434.8965 213.217 437.0393 c +213.217 437.9188 L +215.4558 437.9188 L +215.4558 437.2152 L +215.4078 436.0478 215.7596 435.2003 216.863 435.2003 c +217.8065 435.2003 218.2542 435.696 218.2542 436.6075 c +218.2542 437.3112 217.9344 437.7909 217.3587 438.1907 c +216.1914 439.1022 214.7362 439.7578 213.8247 440.9571 c +213.4569 441.5009 213.249 442.1565 213.249 442.7961 c +213.249 444.843 214.4004 445.9624 216.7671 445.9624 c +220.3331 445.9624 220.2371 443.2119 220.2531 442.0286 C +218.0943 442.0286 l +f +*U +*u +228.8296 435.0244 m +228.7976 435.0244 L +228.4777 433.953 227.8701 433.4573 226.8626 433.4413 c +225.2155 433.4413 224.8477 434.2888 224.8477 435.792 c +224.8477 442.7002 L +226.9266 442.7002 L +226.9266 436.5276 L +226.9266 436.1278 226.9106 435.68 227.1345 435.3282 c +227.3104 435.1363 227.5023 435.0404 227.7741 435.0404 c +228.7496 435.0404 228.7336 436.1438 228.7336 436.8474 c +228.7336 442.7002 L +230.8125 442.7002 L +230.8125 433.6811 L +228.8296 433.6811 L +228.8296 435.0244 l +f +*U +*u +238.2065 441.7727 m +238.2385 441.7727 L +238.7022 442.8121 239.6297 442.9401 240.1095 442.9401 c +241.2928 442.9401 242.2523 442.2524 242.1883 440.6373 c +242.1883 433.6811 L +240.1095 433.6811 L +240.1095 439.6938 L +240.1095 440.5734 240.0135 441.149 239.2299 441.181 c +238.4464 441.213 238.1745 440.4774 238.2065 439.5179 c +238.2065 433.6811 L +236.1277 433.6811 L +236.1277 442.7002 L +238.2065 442.7002 L +238.2065 441.7727 l +f +*U +*u +257.0861 433.6811 m +254.8474 433.6811 L +254.8474 445.6746 L +258.4134 445.6746 L +259.6128 440.1096 L +259.8047 439.1981 259.9326 438.2706 260.0285 437.3431 c +260.0605 437.3431 L +260.1725 438.5265 260.2524 439.326 260.4123 440.1096 c +261.6117 445.6746 L +265.1617 445.6746 L +265.1617 433.6811 L +262.9229 433.6811 L +262.9229 437.4551 L +262.9229 439.8378 262.9709 442.2205 263.1148 444.6031 c +263.0829 444.6031 L +260.6842 433.6811 L +259.3249 433.6811 L +256.9742 444.6031 L +256.8943 444.6031 L +257.0382 442.2205 257.0861 439.8378 257.0861 437.4551 C +257.0861 433.6811 l +f +*U +*u +270.6366 433.6811 m +270.6366 442.7002 L +272.7154 442.7002 L +272.7154 433.6811 L +270.6366 433.6811 l +f +1 D +270.6366 443.7876 m +270.6366 445.6746 L +272.7154 445.6746 L +272.7154 443.7876 L +270.6366 443.7876 l +f +*U +*u +0 D +281.3204 439.5659 m +281.3204 440.5734 L +281.2884 441.0691 281.0485 441.3409 280.6008 441.3409 c +279.8012 441.3409 279.8012 440.4294 279.8172 439.326 c +279.8172 437.1992 L +279.7693 435.4402 279.9771 435.1204 280.6008 435.0404 c +281.2404 435.0564 281.2564 435.6481 281.3204 436.3677 c +281.3204 437.1992 L +283.3993 437.1992 L +283.3993 436.3677 L +283.3993 434.4807 282.6157 433.4413 280.5528 433.4413 c +278.7138 433.4413 277.6584 434.4167 277.7384 436.8154 c +277.7384 439.7418 L +277.7224 442.2684 278.9697 442.9401 280.5528 442.9401 c +282.6477 442.9401 283.4152 441.6288 283.3993 440.2855 c +283.3993 439.5659 L +281.3204 439.5659 l +f +*U +*u +290.2627 441.1011 m +290.2946 441.1011 L +290.5505 441.7567 290.8064 442.1245 291.1102 442.3804 c +291.7019 442.8761 292.1016 442.8441 292.4055 442.8601 c +292.4055 440.3975 L +291.2541 440.5094 290.3746 440.2216 290.3426 438.8943 c +290.3426 433.6811 L +288.2638 433.6811 L +288.2638 442.7002 L +290.2627 442.7002 L +290.2627 441.1011 l +f +*U +*u +296.708 437.8708 m +296.724 440.9571 296.7559 442.9401 299.8902 442.9401 c +302.9765 442.9401 302.9925 440.9571 303.0085 437.8708 c +303.0245 434.7366 302.5767 433.3933 299.8902 433.4413 c +297.1557 433.3933 296.692 434.7366 296.708 437.8708 c +f +1 D +298.7868 436.6235 m +298.7868 435.5201 298.8828 435.0404 299.8902 435.0404 c +300.8497 435.0404 300.9297 435.5201 300.9297 436.6235 c +300.9297 439.6299 L +300.9297 440.4774 300.9297 441.3409 299.8902 441.3409 c +298.7868 441.3409 298.7868 440.4774 298.7868 439.6299 C +298.7868 436.6235 l +f +*U +*u +0 D +309.619 436.6555 m +309.4591 434.9924 310.0987 435.0404 310.5785 435.0404 c +311.1701 435.0404 311.5859 435.4722 311.442 436.0478 c +311.41 436.5596 310.8183 436.8474 310.4185 437.1193 c +309.2832 437.9028 L +308.2437 438.6224 307.5721 439.454 307.5721 440.7493 c +307.5721 442.1405 308.6755 442.9401 310.6744 442.9401 c +312.6893 442.9401 313.6168 441.8846 313.5688 439.9497 c +311.49 439.9497 L +311.5379 440.9571 311.2501 441.3409 310.5305 441.3409 c +310.0348 441.3409 309.651 441.1171 309.651 440.6053 c +309.651 440.0776 310.0348 439.8378 310.4345 439.5659 c +312.1296 438.4145 L +312.6573 438.1107 313.4889 437.2472 313.5528 436.6395 c +313.7287 435.0724 313.3449 433.4413 310.4665 433.4413 c +309.3631 433.4413 307.3003 433.905 307.5401 436.6555 C +309.619 436.6555 l +f +*U +*u +319.6966 442.7002 m +320.6081 437.9188 L +320.752 437.1193 320.832 436.3197 320.912 435.5201 c +320.9439 435.5201 L +321.0079 436.3037 321.1198 437.0873 321.2638 437.8549 c +322.1753 442.7002 L +324.2861 442.7002 L +322.0953 433.5532 L +321.5676 431.5063 321.5196 430.227 318.6412 430.6428 c +318.6412 432.2579 L +318.977 432.2579 319.8725 432.082 319.8725 432.6577 c +319.8725 432.9775 319.7606 433.4893 319.6806 433.8091 c +317.5058 442.7002 L +319.6966 442.7002 l +f +*U +*u +329.9662 436.6555 m +329.8062 434.9924 330.4459 435.0404 330.9256 435.0404 c +331.5173 435.0404 331.9331 435.4722 331.7891 436.0478 c +331.7572 436.5596 331.1655 436.8474 330.7657 437.1193 c +329.6303 437.9028 L +328.5909 438.6224 327.9193 439.454 327.9193 440.7493 c +327.9193 442.1405 329.0227 442.9401 331.0216 442.9401 c +333.0365 442.9401 333.964 441.8846 333.916 439.9497 c +331.8371 439.9497 L +331.8851 440.9571 331.5973 441.3409 330.8777 441.3409 c +330.3819 441.3409 329.9981 441.1171 329.9981 440.6053 c +329.9981 440.0776 330.3819 439.8378 330.7817 439.5659 c +332.4768 438.4145 L +333.0045 438.1107 333.836 437.2472 333.9 436.6395 c +334.0759 435.0724 333.6921 433.4413 330.8137 433.4413 c +329.7103 433.4413 327.6474 433.905 327.8873 436.6555 C +329.9662 436.6555 l +f +*U +*u +341.9627 433.6492 m +340.7314 433.5052 339.0044 433.3933 339.0044 435.0724 c +339.0044 441.181 L +338.1568 441.181 L +338.1568 442.7002 L +338.9884 442.7002 L +338.9884 445.1788 L +341.0832 445.1788 L +341.0832 442.7002 L +341.9627 442.7002 L +341.9627 441.181 L +341.0832 441.181 L +341.0832 435.5841 L +341.1312 435.2003 341.7069 435.2483 341.9627 435.2803 C +341.9627 433.6492 l +f +*U +*u +346.4417 439.5979 m +346.3458 441.7247 347.4332 442.9401 349.4801 442.9401 c +352.3745 442.9401 352.6783 441.4369 352.6783 438.9742 c +352.6783 437.7589 L +348.5206 437.7589 L +348.5206 436.4476 L +348.5366 435.2643 348.9843 435.0404 349.608 435.0404 c +350.3756 435.0404 350.5995 435.6001 350.5675 436.7355 c +352.6463 436.7355 L +352.7263 434.7206 351.8947 433.4413 349.7679 433.4413 c +347.3692 433.4413 346.3938 434.5767 346.4417 437.2312 C +346.4417 439.5979 l +f +1 D +350.5995 439.358 m +350.5995 440.1416 L +350.5835 441.0531 350.3436 441.3409 349.5121 441.3409 c +348.4726 441.3409 348.5206 440.5414 348.5206 439.7258 c +348.5206 439.358 L +350.5995 439.358 l +f +*U +*u +0 D +359.9764 441.7727 m +360.0084 441.7727 L +360.4721 442.7642 361.3197 442.9081 361.9913 442.9401 c +362.7589 442.9561 363.7823 442.6202 363.9262 441.7727 c +364.342 442.5563 364.9976 442.9401 366.0211 442.9401 c +367.5562 442.9401 368.2279 441.9806 368.2279 441.0211 c +368.2279 433.6811 L +366.149 433.6811 L +366.149 439.7738 L +366.149 440.5894 366.0691 441.3889 365.1576 441.3409 c +364.2621 441.293 364.1021 440.6693 364.1021 439.6139 c +364.1021 433.6811 L +362.0233 433.6811 L +362.0233 439.8857 L +362.0233 440.6853 361.9593 441.3569 360.9998 441.3409 c +360.0244 441.3249 359.9764 440.6053 359.9764 439.6139 c +359.9764 433.6811 L +357.8975 433.6811 L +357.8975 442.7002 L +359.9764 442.7002 L +359.9764 441.7727 l +f +*U +*u +375.046 436.6555 m +374.8861 434.9924 375.5257 435.0404 376.0055 435.0404 c +376.5971 435.0404 377.0129 435.4722 376.869 436.0478 c +376.837 436.5596 376.2453 436.8474 375.8455 437.1193 c +374.7102 437.9028 L +373.6707 438.6224 372.9991 439.454 372.9991 440.7493 c +372.9991 442.1405 374.1025 442.9401 376.1014 442.9401 c +378.1163 442.9401 379.0438 441.8846 378.9958 439.9497 c +376.917 439.9497 L +376.9649 440.9571 376.6771 441.3409 375.9575 441.3409 c +375.4618 441.3409 375.078 441.1171 375.078 440.6053 c +375.078 440.0776 375.4618 439.8378 375.8615 439.5659 c +377.5566 438.4145 L +378.0843 438.1107 378.9159 437.2472 378.9798 436.6395 c +379.1557 435.0724 378.7719 433.4413 375.8935 433.4413 c +374.7901 433.4413 372.7273 433.905 372.9671 436.6555 C +375.046 436.6555 l +f +*U +*u +384.468 432.066 m +385.2196 432.146 385.6353 432.8176 385.5874 433.6811 c +384.468 433.6811 L +384.468 435.792 L +386.5788 435.792 L +386.5788 433.7291 L +386.5788 432.3699 385.8752 431.5383 384.468 431.3624 C +384.468 432.066 l +f +*U +*u +399.7444 433.6811 m +399.7444 445.6746 L +401.9831 445.6746 L +401.9831 433.6811 L +399.7444 433.6811 l +f +*U +*u +409.3725 441.7727 m +409.4045 441.7727 L +409.8683 442.8121 410.7957 442.9401 411.2755 442.9401 c +412.4588 442.9401 413.4183 442.2524 413.3543 440.6373 c +413.3543 433.6811 L +411.2755 433.6811 L +411.2755 439.6938 L +411.2755 440.5734 411.1795 441.149 410.396 441.181 c +409.6124 441.213 409.3405 440.4774 409.3725 439.5179 c +409.3725 433.6811 L +407.2937 433.6811 L +407.2937 442.7002 L +409.3725 442.7002 L +409.3725 441.7727 l +f +*U +*u +421.8997 439.5659 m +421.8997 440.5734 L +421.8678 441.0691 421.6279 441.3409 421.1801 441.3409 c +420.3806 441.3409 420.3806 440.4294 420.3966 439.326 c +420.3966 437.1992 L +420.3486 435.4402 420.5565 435.1204 421.1801 435.0404 c +421.8198 435.0564 421.8358 435.6481 421.8997 436.3677 c +421.8997 437.1992 L +423.9786 437.1992 L +423.9786 436.3677 L +423.9786 434.4807 423.195 433.4413 421.1322 433.4413 c +419.2932 433.4413 418.2378 434.4167 418.3177 436.8154 c +418.3177 439.7418 L +418.3017 442.2684 419.549 442.9401 421.1322 442.9401 c +423.227 442.9401 423.9946 441.6288 423.9786 440.2855 c +423.9786 439.5659 L +421.8997 439.5659 l +f +*U +*u +429.3391 433.6811 m +429.3391 435.792 L +431.4499 435.792 L +431.4499 433.6811 L +429.3391 433.6811 l +f +*U +*u +444.5515 433.6811 m +444.5515 445.6746 L +448.1655 445.6746 L +449.125 445.6746 450.0684 445.6106 450.7081 444.795 c +451.2198 444.1394 451.2998 443.4518 451.2998 442.6362 c +451.2998 441.5968 451.0759 440.5734 449.8606 440.1256 c +449.8606 440.0936 L +451.1239 439.9177 451.6036 438.8623 451.6036 437.3112 c +451.6036 436.8154 451.5716 436.3197 451.4437 435.84 c +450.964 434.3208 450.1004 433.6811 448.5013 433.6811 C +444.5515 433.6811 l +f +1 D +447.27 435.4402 m +447.7337 435.4402 448.2135 435.3922 448.6132 435.5681 c +449.2209 435.84 449.3009 436.6235 449.3009 437.2312 c +449.3009 438.5265 449.045 439.0702 447.6538 439.0702 c +446.7902 439.0702 L +446.7902 435.4402 L +447.27 435.4402 l +f +447.206 440.8292 m +447.7497 440.8292 448.4533 440.7972 448.8051 441.245 c +449.013 441.5488 449.045 441.9646 449.045 442.5403 c +449.045 443.4358 448.8531 443.8835 447.8297 443.9155 c +446.7902 443.9155 L +446.7902 440.8292 L +447.206 440.8292 l +f +*U +*u +0 D +460.5478 435.0244 m +460.5158 435.0244 L +460.196 433.953 459.5883 433.4573 458.5809 433.4413 c +456.9338 433.4413 456.566 434.2888 456.566 435.792 c +456.566 442.7002 L +458.6449 442.7002 L +458.6449 436.5276 L +458.6449 436.1278 458.6289 435.68 458.8527 435.3282 c +459.0287 435.1363 459.2205 435.0404 459.4924 435.0404 c +460.4679 435.0404 460.4519 436.1438 460.4519 436.8474 c +460.4519 442.7002 L +462.5307 442.7002 L +462.5307 433.6811 L +460.5478 433.6811 L +460.5478 435.0244 l +f +*U +*u +469.3971 436.6555 m +469.2371 434.9924 469.8768 435.0404 470.3565 435.0404 c +470.9482 435.0404 471.364 435.4722 471.2201 436.0478 c +471.1881 436.5596 470.5964 436.8474 470.1966 437.1193 c +469.0612 437.9028 L +468.0218 438.6224 467.3502 439.454 467.3502 440.7493 c +467.3502 442.1405 468.4536 442.9401 470.4525 442.9401 c +472.4674 442.9401 473.3949 441.8846 473.3469 439.9497 c +471.268 439.9497 L +471.316 440.9571 471.0282 441.3409 470.3086 441.3409 c +469.8128 441.3409 469.429 441.1171 469.429 440.6053 c +469.429 440.0776 469.8128 439.8378 470.2126 439.5659 c +471.9077 438.4145 L +472.4354 438.1107 473.2669 437.2472 473.3309 436.6395 c +473.5068 435.0724 473.123 433.4413 470.2446 433.4413 c +469.1412 433.4413 467.0783 433.905 467.3182 436.6555 C +469.3971 436.6555 l +f +*U +*u +478.3873 433.6811 m +478.3873 442.7002 L +480.4662 442.7002 L +480.4662 433.6811 L +478.3873 433.6811 l +f +478.3873 443.7876 m +478.3873 445.6746 L +480.4662 445.6746 L +480.4662 443.7876 L +478.3873 443.7876 l +f +*U +*u +487.9355 441.7727 m +487.9675 441.7727 L +488.4312 442.8121 489.3587 442.9401 489.8385 442.9401 c +491.0218 442.9401 491.9813 442.2524 491.9173 440.6373 c +491.9173 433.6811 L +489.8385 433.6811 L +489.8385 439.6938 L +489.8385 440.5734 489.7425 441.149 488.9589 441.181 c +488.1754 441.213 487.9035 440.4774 487.9355 439.5179 c +487.9355 433.6811 L +485.8567 433.6811 L +485.8567 442.7002 L +487.9355 442.7002 L +487.9355 441.7727 l +f +*U +*u +497.1046 439.5979 m +497.0086 441.7247 498.096 442.9401 500.1429 442.9401 c +503.0373 442.9401 503.3412 441.4369 503.3412 438.9742 c +503.3412 437.7589 L +499.1834 437.7589 L +499.1834 436.4476 L +499.1994 435.2643 499.6472 435.0404 500.2708 435.0404 c +501.0384 435.0404 501.2623 435.6001 501.2303 436.7355 c +503.3092 436.7355 L +503.3891 434.7206 502.5576 433.4413 500.4308 433.4413 c +498.0321 433.4413 497.0566 434.5767 497.1046 437.2312 C +497.1046 439.5979 l +f +501.2623 439.358 m +501.2623 440.1416 L +501.2463 441.0531 501.0064 441.3409 500.1749 441.3409 c +499.1355 441.3409 499.1834 440.5414 499.1834 439.7258 c +499.1834 439.358 L +501.2623 439.358 l +f +*U +*u +509.7118 436.6555 m +509.5518 434.9924 510.1915 435.0404 510.6712 435.0404 c +511.2629 435.0404 511.6787 435.4722 511.5348 436.0478 c +511.5028 436.5596 510.9111 436.8474 510.5113 437.1193 c +509.3759 437.9028 L +508.3365 438.6224 507.6649 439.454 507.6649 440.7493 c +507.6649 442.1405 508.7683 442.9401 510.7672 442.9401 c +512.7821 442.9401 513.7096 441.8846 513.6616 439.9497 c +511.5827 439.9497 L +511.6307 440.9571 511.3429 441.3409 510.6233 441.3409 c +510.1275 441.3409 509.7437 441.1171 509.7437 440.6053 c +509.7437 440.0776 510.1275 439.8378 510.5273 439.5659 c +512.2224 438.4145 L +512.7501 438.1107 513.5816 437.2472 513.6456 436.6395 c +513.8215 435.0724 513.4377 433.4413 510.5593 433.4413 c +509.4559 433.4413 507.393 433.905 507.6329 436.6555 C +509.7118 436.6555 l +f +*U +*u +520.0453 436.6555 m +519.8853 434.9924 520.525 435.0404 521.0047 435.0404 c +521.5964 435.0404 522.0122 435.4722 521.8683 436.0478 c +521.8363 436.5596 521.2446 436.8474 520.8448 437.1193 c +519.7094 437.9028 L +518.67 438.6224 517.9984 439.454 517.9984 440.7493 c +517.9984 442.1405 519.1018 442.9401 521.1007 442.9401 c +523.1156 442.9401 524.0431 441.8846 523.9951 439.9497 c +521.9162 439.9497 L +521.9642 440.9571 521.6764 441.3409 520.9568 441.3409 c +520.461 441.3409 520.0772 441.1171 520.0772 440.6053 c +520.0772 440.0776 520.461 439.8378 520.8608 439.5659 c +522.5559 438.4145 L +523.0836 438.1107 523.9151 437.2472 523.9791 436.6395 c +524.155 435.0724 523.7712 433.4413 520.8928 433.4413 c +519.7894 433.4413 517.7265 433.905 517.9664 436.6555 C +520.0453 436.6555 l +f +*U +U +U +LB +%AI5_EndLayer-- +%%PageTrailer +gsave annotatepage grestore showpage +%%Trailer +Adobe_IllustratorA_AI5 /terminate get exec +Adobe_level2_AI5 /terminate get exec +%%EOF + +%%EndDocument +FMENDEPSF +0 0 0 1 0 0 0 K +0 72 612 720 C +0 14 Q +0 X +0 0 0 1 0 0 0 K +-1.61 -0.28 (Douglas Kramer) 198 522.01 B +0 10 Q +-1.15 -0.2 (W) 198 468.68 B +-1.15 -0.2 (ith contributions by) 207.04 468.68 B +-1.15 -0.2 (Bill Joy and David Spenhoff) 198 456.68 B +0 0 0 1 0 0 0 K +[/Creator(FrameMaker xm5.0P3f)/DOCINFO FmPD2 +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.1/DEST FmPD2 +[/Dest/F.TitlePagedoc/DEST FmPD2 +[/Dest/L.TitlePagedoc/DEST FmPD2 +[/Title(A)/Rect[45 540 567 650]/ARTICLE FmPD2 +[/Title(A)/Rect[45 294 567 540]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "1" 1 +%%Page: "2" 2 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +184.97 83.74 393.7 101.23 R +7 X +0 0 0 1 0 0 0 K +V +1 1 0 0 0 0 1 K +0 28 26 105 100 36 36 54 162 FMBEGINEPSF +%%BeginDocument: +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: Adobe Illustrator(TM) 3.0 +%%For: (clyde) (sun) +%%Title: (recycle.logo) +%%CreationDate: (9/24/91) (4:13 PM) +%%DocumentProcessColors: Black +%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 +%%+ procset Adobe_cmykcolor 1.1 0 +%%+ procset Adobe_cshow 1.1 0 +%%+ procset Adobe_customcolor 1.0 0 +%%+ procset Adobe_IllustratorA_AI3 1.0 0 +%%BoundingBox: 28 26 105 100 +%AI3_ColorUsage: Black&White +%AI3_TemplateBox: 306 396 306 396 +%AI3_TileBox: 30 31 582 761 +%AI3_DocumentPreview: Macintosh_Pic +%%EndComments +%%BeginProlog +%%BeginResource: procset Adobe_packedarray 2.0 0 +%%Title: (Packed Array Operators) +%%Version: 2.0 +%%CreationDate: (8/2/90) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) +userdict /Adobe_packedarray 5 dict dup begin put +/initialize % - initialize - +{ +/packedarray where + { + pop + } + { + Adobe_packedarray begin + Adobe_packedarray + { + dup xcheck + { + bind + } if + userdict 3 1 roll put + } forall + end + } ifelse +} def +/terminate % - terminate - +{ +} def +/packedarray % arguments count packedarray array +{ +array astore readonly +} def +/setpacking % boolean setpacking - +{ +pop +} def +/currentpacking % - setpacking boolean +{ +false +} def +currentdict readonly pop end +%%EndResource +Adobe_packedarray /initialize get exec +%%BeginResource: procset Adobe_cmykcolor 1.1 0 +%%Title: (CMYK Color Operators) +%%Version: 1.1 +%%CreationDate: (1/23/89) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_cmykcolor 4 dict dup begin put +/initialize % - initialize - +{ +/setcmykcolor where + { + pop + } + { + userdict /Adobe_cmykcolor_vars 2 dict dup begin put + /_setrgbcolor + /setrgbcolor load def + /_currentrgbcolor + /currentrgbcolor load def + Adobe_cmykcolor begin + Adobe_cmykcolor + { + dup xcheck + { + bind + } if + pop pop + } forall + end + end + Adobe_cmykcolor begin + } ifelse +} def +/terminate % - terminate - +{ +currentdict Adobe_cmykcolor eq + { + end + } if +} def +/setcmykcolor % cyan magenta yellow black setcmykcolor - +{ +1 sub 4 1 roll +3 + { + 3 index add neg dup 0 lt + { + pop 0 + } if + 3 1 roll + } repeat +Adobe_cmykcolor_vars /_setrgbcolor get exec +pop +} def +/currentcmykcolor % - currentcmykcolor cyan magenta yellow black +{ +Adobe_cmykcolor_vars /_currentrgbcolor get exec +3 + { + 1 sub neg 3 1 roll + } repeat +0 +} def +currentdict readonly pop end +setpacking +%%EndResource +%%BeginResource: procset Adobe_cshow 1.1 0 +%%Title: (cshow Operator) +%%Version: 1.1 +%%CreationDate: (1/23/89) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_cshow 3 dict dup begin put +/initialize % - initialize - +{ +/cshow where + { + pop + } + { + userdict /Adobe_cshow_vars 1 dict dup begin put + /_cshow % - _cshow proc + {} def + Adobe_cshow begin + Adobe_cshow + { + dup xcheck + { + bind + } if + userdict 3 1 roll put + } forall + end + end + } ifelse +} def +/terminate % - terminate - +{ +} def +/cshow % proc string cshow - +{ +exch +Adobe_cshow_vars + exch /_cshow + exch put + { + 0 0 Adobe_cshow_vars /_cshow get exec + } forall +} def +currentdict readonly pop end +setpacking +%%EndResource +%%BeginResource: procset Adobe_customcolor 1.0 0 +%%Title: (Custom Color Operators) +%%Version: 1.0 +%%CreationDate: (5/9/88) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_customcolor 5 dict dup begin put +/initialize % - initialize - +{ +/setcustomcolor where + { + pop + } + { + Adobe_customcolor begin + Adobe_customcolor + { + dup xcheck + { + bind + } if + pop pop + } forall + end + Adobe_customcolor begin + } ifelse +} def +/terminate % - terminate - +{ +currentdict Adobe_customcolor eq + { + end + } if +} def +/findcmykcustomcolor % cyan magenta yellow black name findcmykcustomcolor object +{ +5 packedarray +} def +/setcustomcolor % object tint setcustomcolor - +{ +exch +aload pop pop +4 + { + 4 index mul 4 1 roll + } repeat +5 -1 roll pop +setcmykcolor +} def +/setoverprint % boolean setoverprint - +{ +pop +} def +currentdict readonly pop end +setpacking +%%EndResource +%%BeginResource: procset Adobe_IllustratorA_AI3 1.0 0 +%%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog) +%%Version: 1.0 +%%CreationDate: (7/22/89) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_IllustratorA_AI3 61 dict dup begin put +% initialization +/initialize % - initialize - +{ +userdict /Adobe_IllustratorA_AI3_vars 46 dict dup begin put +% paint operands +/_lp /none def +/_pf {} def +/_ps {} def +/_psf {} def +/_pss {} def +/_pjsf {} def +/_pjss {} def +/_pola 0 def +/_doClip 0 def +% paint operators +/cf currentflat def % - cf flatness +% typography operands +/_tm matrix def +/_renderStart [/e0 /r0 /a0 /o0 /i0 /i0 /i0 /i0] def +/_renderEnd [null null null null /e1 /r1 /a1 /clip] def +/_render -1 def +/_rise 0 def +/_ax 0 def % x character spacing (_ax, _ay, _cx, _cy follows awidthshow naming convention) +/_ay 0 def % y character spacing +/_cx 0 def % x word spacing +/_cy 0 def % y word spacing +/_leading [0 0] def +/_ctm matrix def +/_mtx matrix def +/_sp 16#020 def +/_hyphen (-) def +/_fScl 0 def +/_cnt 0 def +/_hs 1 def +/_nativeEncoding 0 def +/_useNativeEncoding 0 def +/_tempEncode 0 def +/_pntr 0 def +% typography operators +/Tx {} def +/Tj {} def +% compound path operators +/CRender {} def +% printing +/_AI3_savepage {} def +% color operands +/_gf null def +/_cf 4 array def +/_if null def +/_of false def +/_fc {} def +/_gs null def +/_cs 4 array def +/_is null def +/_os false def +/_sc {} def +/_i null def +Adobe_IllustratorA_AI3 begin +Adobe_IllustratorA_AI3 + { + dup xcheck + { + bind + } if + pop pop + } forall +end +end +Adobe_IllustratorA_AI3 begin +Adobe_IllustratorA_AI3_vars begin +newpath +} def +/terminate % - terminate - +{ +end +end +} def +% definition operators +/_ % - _ null +null def +/ddef % key value ddef - +{ +Adobe_IllustratorA_AI3_vars 3 1 roll put +} def +/xput % key value literal xput - +{ +dup load dup length exch maxlength eq + { + dup dup load dup + length 2 mul dict copy def + } if +load begin def end +} def +/npop % integer npop - +{ + { + pop + } repeat +} def +% marking operators +/sw % ax ay string sw x y +{ +dup length exch stringwidth +exch 5 -1 roll 3 index 1 sub mul add +4 1 roll 3 1 roll 1 sub mul add +} def +/swj % cx cy fillchar ax ay string swj x y +{ +dup 4 1 roll +dup length exch stringwidth +exch 5 -1 roll 3 index 1 sub mul add +4 1 roll 3 1 roll 1 sub mul add +6 2 roll /_cnt 0 ddef +{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop +exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop +} def +/ss % ax ay string matrix ss - +{ +4 1 roll + { % matrix ax ay char 0 0 {proc} - + 2 npop + (0) exch 2 copy 0 exch put pop + gsave + false charpath currentpoint + 4 index setmatrix + stroke + grestore + moveto + 2 copy rmoveto + } exch cshow +3 npop +} def +/jss % cx cy fillchar ax ay string matrix jss - +{ +4 1 roll + { % cx cy fillchar matrix ax ay char 0 0 {proc} - + 2 npop + (0) exch 2 copy 0 exch put + gsave + _sp eq + { + exch 6 index 6 index 6 index 5 -1 roll widthshow + currentpoint + } + { + false charpath currentpoint + 4 index setmatrix stroke + }ifelse + grestore + moveto + 2 copy rmoveto + } exch cshow +6 npop +} def +% path operators +/sp % ax ay string sp - +{ + { + 2 npop (0) exch + 2 copy 0 exch put pop + false charpath + 2 copy rmoveto + } exch cshow +2 npop +} def +/jsp % cx cy fillchar ax ay string jsp - +{ + { % cx cy fillchar ax ay char 0 0 {proc} - + 2 npop + (0) exch 2 copy 0 exch put + _sp eq + { + exch 5 index 5 index 5 index 5 -1 roll widthshow + } + { + false charpath + }ifelse + 2 copy rmoveto + } exch cshow +5 npop +} def +% path construction operators +/pl % x y pl x y +{ +transform +0.25 sub round 0.25 add exch +0.25 sub round 0.25 add exch +itransform +} def +/setstrokeadjust where + { + pop true setstrokeadjust + /c % x1 y1 x2 y2 x3 y3 c - + { + curveto + } def + /C + /c load def + /v % x2 y2 x3 y3 v - + { + currentpoint 6 2 roll curveto + } def + /V + /v load def + /y % x1 y1 x2 y2 y - + { + 2 copy curveto + } def + /Y + /y load def + /l % x y l - + { + lineto + } def + /L + /l load def + /m % x y m - + { + moveto + } def + } + {%else + /c + { + pl curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll pl curveto + } def + /V + /v load def + /y + { + pl 2 copy curveto + } def + /Y + /y load def + /l + { + pl lineto + } def + /L + /l load def + /m + { + pl moveto + } def + }ifelse +% graphic state operators +/d % array phase d - +{ +setdash +} def +/cf {} def % - cf flatness +/i % flatness i - +{ +dup 0 eq + { + pop cf + } if +setflat +} def +/j % linejoin j - +{ +setlinejoin +} def +/J % linecap J - +{ +setlinecap +} def +/M % miterlimit M - +{ +setmiterlimit +} def +/w % linewidth w - +{ +setlinewidth +} def +% path painting operators +/H % - H - +{} def +/h % - h - +{ +closepath +} def +/N % - N - +{ +_pola 0 eq + { + _doClip 1 eq {clip /_doClip 0 ddef} if + newpath + } + { + /CRender {N} ddef + }ifelse +} def +/n % - n - +{N} def +/F % - F - +{ +_pola 0 eq + { + _doClip 1 eq + { + gsave _pf grestore clip newpath /_lp /none ddef _fc + /_doClip 0 ddef + } + { + _pf + }ifelse + } + { + /CRender {F} ddef + }ifelse +} def +/f % - f - +{ +closepath +F +} def +/S % - S - +{ +_pola 0 eq + { + _doClip 1 eq + { + gsave _ps grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + _ps + }ifelse + } + { + /CRender {S} ddef + }ifelse +} def +/s % - s - +{ +closepath +S +} def +/B % - B - +{ +_pola 0 eq + { + _doClip 1 eq % F clears _doClip + gsave F grestore + { + gsave S grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + S + }ifelse + } + { + /CRender {B} ddef + }ifelse +} def +/b % - b - +{ +closepath +B +} def +/W % - W - +{ +/_doClip 1 ddef +} def +/* % - [string] * - +{ +count 0 ne + { + dup type (stringtype) eq {pop} if + } if +_pola 0 eq {newpath} if +} def +% group operators +/u % - u - +{} def +/U % - U - +{} def +/q % - q - +{ +_pola 0 eq {gsave} if +} def +/Q % - Q - +{ +_pola 0 eq {grestore} if +} def +/*u % - *u - +{ +_pola 1 add /_pola exch ddef +} def +/*U % - *U - +{ +_pola 1 sub /_pola exch ddef +_pola 0 eq {CRender} if +} def +/D % polarized D - +{pop} def +/*w % - *w - +{} def +/*W % - *W - +{} def +% place operators +/` % matrix llx lly urx ury string ` - +{ +/_i save ddef +6 1 roll 4 npop +concat +userdict begin +/showpage {} def +false setoverprint +pop +} def +/~ % - ~ - +{ +end +_i restore +} def +% color operators +/O % flag O - +{ +0 ne +/_of exch ddef +/_lp /none ddef +} def +/R % flag R - +{ +0 ne +/_os exch ddef +/_lp /none ddef +} def +/g % gray g - +{ +/_gf exch ddef +/_fc +{ +_lp /fill ne + { + _of setoverprint + _gf setgray + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +ashow +} ddef +/_pjsf +{ +_fc +awidthshow +} ddef +/_lp /none ddef +} def +/G % gray G - +{ +/_gs exch ddef +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _gs setgray + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_pjss +{ +_sc +jss +} ddef +/_lp /none ddef +} def +/k % cyan magenta yellow black k - +{ +_cf astore pop +/_fc +{ +_lp /fill ne + { + _of setoverprint + _cf aload pop setcmykcolor + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +ashow +} ddef +/_pjsf +{ +_fc +awidthshow +} ddef +/_lp /none ddef +} def +/K % cyan magenta yellow black K - +{ +_cs astore pop +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _cs aload pop setcmykcolor + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_pjss +{ +_sc +jss +} ddef +/_lp /none ddef +} def +/x % cyan magenta yellow black name gray x - +{ +/_gf exch ddef +findcmykcustomcolor +/_if exch ddef +/_fc +{ +_lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +ashow +} ddef +/_pjsf +{ +_fc +awidthshow +} ddef +/_lp /none ddef +} def +/X % cyan magenta yellow black name gray X - +{ +/_gs exch ddef +findcmykcustomcolor +/_is exch ddef +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_pjss +{ +_sc +jss +} ddef +/_lp /none ddef +} def +% locked object operator +/A % value A - +{ +pop +} def +currentdict readonly pop end +setpacking +% annotate page operator +/annotatepage +{ +} def +%%EndResource +%%EndProlog +%%BeginSetup +Adobe_cmykcolor /initialize get exec +Adobe_cshow /initialize get exec +Adobe_customcolor /initialize get exec +Adobe_IllustratorA_AI3 /initialize get exec +%%EndSetup +0 A +u +u +0 R +0 G +0 i 0 J 0 j 1.5 w 10 M []0 d +%AI3_Note: +0 D +55.8513 89.3866 m +70.6271 89.3302 l +77.0061 89.4337 78.4273 86.3828 y +81.2352 82.0317 l +85.1147 84.3127 l +78.8875 72.4495 l +65.0513 72.4954 l +68.806 74.7695 l +62.7847 84.0125 l +57.169 92.7147 54.0208 88.5339 53.0985 87.1056 c +46.3582 75.4643 l +58.1242 68.7309 l +65.0414 80.5698 l +S +U +u +46.1811 39.5344 m +38.8421 52.3589 l +35.5629 57.8315 37.4945 60.5878 y +39.8587 65.195 l +35.9435 67.4144 l +49.3311 67.953 l +56.2094 55.9475 l +52.3626 58.0622 l +47.3685 48.226 l +42.64 39.0115 47.8349 38.3755 49.5329 38.2909 c +62.9848 38.2743 l +62.9331 51.8307 l +49.2217 51.9017 l +S +U +u +94.6634 56.0541 m +87.2266 43.2861 l +84.1268 37.7099 80.774 38.0046 y +75.6019 37.7484 l +75.6374 33.2481 l +68.4772 44.5727 l +75.4352 56.5324 l +75.5272 52.1436 l +86.5426 52.7367 l +96.8869 53.249 94.8403 58.0658 94.0645 59.5787 c +87.353 71.2367 l +75.6386 64.4136 l +82.4327 52.5037 l +S +U +U +%%PageTrailer +gsave annotatepage grestore showpage +%%Trailer +Adobe_IllustratorA_AI3 /terminate get exec +Adobe_customcolor /terminate get exec +Adobe_cshow /terminate get exec +Adobe_cmykcolor /terminate get exec +Adobe_packedarray /terminate get exec +%%EOF + +%%EndDocument +FMENDEPSF +54.67 126 90.67 162 R +1 1 0 0 0 0 1 K +V +0 0 0 1 0 0 0 K +1 8 Q +0 X +0 0 0 1 0 0 0 K +0.08 (Please) 61.32 156.67 S +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +0.08 (Recycle) 58.94 145.67 S +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 9 Q +-0.58 0.09 (Copyright Information) 54 591 B +2 F +-0.58 0.09 (\323) 54 574 B +1 F +-0.58 0.09 ( 1995, 1996, Sun Micr) 61.2 574 B +-0.58 0.09 (osystems, Inc. All rights r) 144.16 574 B +-0.58 0.09 (eserved.) 245.37 574 B +-0.58 0.09 (2550 Gar) 54 563 B +-0.58 0.09 (cia A) 89.14 563 B +-0.58 0.09 (venue, Mountain V) 108.55 563 B +-0.58 0.09 (iew) 185.42 563 B +-0.58 0.09 (, California 94043-1) 199.29 563 B +-0.58 0.09 (100 U.S.A.) 276.12 563 B +-0.58 0.09 (This document is pr) 54 546 B +-0.58 0.09 (otected by copyright. No part of this document may be r) 133.4 546 B +-0.58 0.09 (epr) 356.5 546 B +-0.58 0.09 (oduced in any form by any means without prior) 369.89 546 B +-0.58 0.09 (written authorization of Sun and its licensors, if any) 54 535 B +-0.58 0.09 (.) 259.57 535 B +-0.58 0.09 (The information described in this document may be pr) 54 518 B +-0.58 0.09 (otected by one or mor) 271.39 518 B +-0.58 0.09 (e U.S. patents, for) 358.01 518 B +-0.58 0.09 (eign patents, or pending) 427.95 518 B +0.09 (applications.) 54 507 S +0.09 (TRADEMARKS) 54 473 S +-0.58 0.09 (Sun, Sun Micr) 54 456 B +-0.58 0.09 (osystems, Sun Micr) 110.05 456 B +-0.58 0.09 (oelectr) 187.72 456 B +-0.58 0.09 (onics, the Sun Logo, SunXTL, JavaSoft, JavaOS, the JavaSoft Logo, Java, HotJava,) 214.83 456 B +-0.58 0.09 (JavaChips, picoJava, micr) 54 445 B +-0.58 0.09 (oJava, UltraJava, JDBC, the Java Cup and Steam Logo, \322W) 156.6 445 B +-0.58 0.09 (rite Once, Run Anywher) 386.66 445 B +-0.58 0.09 (e\323 and Solaris ar) 484.29 445 B +-0.58 0.09 (e) 549.51 445 B +-0.58 0.09 (trademarks or r) 54 434 B +-0.58 0.09 (egister) 116.16 434 B +-0.58 0.09 (ed trademarks of Sun Micr) 143.18 434 B +-0.58 0.09 (osystems, Inc. in the United States and other countries.) 249.34 434 B +-0.58 0.09 (UNIX) 54 423 B +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 6.4 Q +-0.42 0.06 (\250) 79.12 426.2 B +1 9 Q +-0.58 0.09 ( is a r) 83.97 423 B +-0.58 0.09 (egister) 103.92 423 B +-0.58 0.09 (ed trademark in the United States and other countries, exclusively licensed thr) 130.94 423 B +-0.58 0.09 (ough X/Open Company) 442.81 423 B +-0.58 0.09 (, Ltd.) 540.32 423 B +-0.58 0.09 (Adobe) 54 412 B +1 6.4 Q +-0.42 0.06 (\250) 82.91 415.2 B +1 9 Q +-0.58 0.09 ( is a r) 87.75 412 B +-0.58 0.09 (egister) 107.71 412 B +-0.58 0.09 (ed trademark of Adobe Systems, Inc.) 134.72 412 B +-0.58 0.09 (Netscape Navigator) 54 401 B +1 6.4 Q +-0.42 0.06 (\252) 134.63 404.2 B +1 9 Q +-0.58 0.09 ( is a trademark of Netscape Communications Corporation.) 140.96 401 B +-0.58 0.09 (All other pr) 54 390 B +-0.58 0.09 (oduct names mentioned her) 100.4 390 B +-0.58 0.09 (ein ar) 212.18 390 B +-0.58 0.09 (e the trademarks of their r) 234.45 390 B +-0.58 0.09 (espective owners.) 337.58 390 B +0.47 0.09 (THIS DOCUMENT IS PROVIDED \322AS IS\323 WITHOUT W) 54 356 B +0.47 0.09 (ARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,) 288.62 356 B +0.47 0.09 (INCLUDING, BUT NOT LIMITED T) 54 345 B +0.47 0.09 (O, THE IMPLIED W) 204.88 345 B +0.47 0.09 (ARRANTIES OF MERCHANT) 288.46 345 B +0.47 0.09 (ABILITY) 413.37 345 B +0.47 0.09 (, FITNESS FOR A) 448.58 345 B +0.47 0.09 (P) 54 334 B +0.47 0.09 (AR) 58.7 334 B +0.47 0.09 (TICULAR PURPOSE, OR NON-INFRINGEMENT) 71.56 334 B +0.47 0.09 (.) 275.7 334 B +0.47 0.09 (THIS DOCUMENT COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS. CHANGES ARE) 54 317 B +0.47 0.09 (PERIODICALL) 54 306 B +0.47 0.09 (Y ADDED T) 115.6 306 B +0.47 0.09 (O THE INFORMA) 166.6 306 B +0.47 0.09 (TION HEREIN; THESE CHANGES WILL BE INCORPORA) 242.23 306 B +0.47 0.09 (TED IN NEW) 485.9 306 B +-0.32 0.09 (EDITIONS OF THE DOCUMENT) 54 295 B +-0.32 0.09 (. SUN MICROSYSTEMS, INC. MA) 189.63 295 B +-0.32 0.09 (Y MAKE IMPROVEMENTS AND/OR CHANGES IN THE) 327.89 295 B +0.47 0.09 (PRODUCT\050S\051 AND/OR THE PROGRAM\050S\051 DESCRIBED IN THIS DOCUMENT A) 54 284 B +0.47 0.09 (T ANY TIME.) 395.09 284 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.2/DEST FmPD2 +[/Dest/F.Copyrightdoc/DEST FmPD2 +[/Dest/L.Copyrightdoc/DEST FmPD2 +FMENDPAGE +%%EndPage: "2" 2 +%%Page: "iii" 3 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (iii) 549.87 108.7 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +0 0 0 1 0 0 0 K +V +198 500.18 558 500.18 2 L +0.3 H +2 Z +0 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 522.64 558 589.39 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 72 612 720 C +0 20 Q +0 X +0 0 0 1 0 0 0 K +-2.5 (The Java) 198 509.31 P +0 11.2 Q +-1.4 (\252) 264.92 514.91 P +0 20 Q +-2.5 ( Platform) 276.12 509.31 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 11 Q +0.11 (What is the Java Platform?) 216 469.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 351.77 469.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (6) 552.39 469.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +0.11 (The Java Base Platform) 234 452.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 348.91 452.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (7) 552.39 452.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (The Embedded Java Platform) 234 437.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . . . . . .) 380.37 437.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (7) 552.39 437.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Bene\336ts of the Java Platform) 234 422.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . .) 377.51 422.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (8) 552.39 422.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Applets and Applications) 234 407.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 363.21 407.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (9) 552.39 407.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Wher) 234 392.67 S +0.11 (e W) 261.26 392.67 S +0.11 (ill the Java Platform Be Deployed?) 280 392.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . .) 451.87 392.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (10) 546.78 392.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (JavaChip) 234 377.67 S +1 8.8 Q +0.09 (\252) 279.77 382.07 S +1 11 Q +0.11 ( Family) 288.47 377.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 326.03 377.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (1) 547.39 377.67 S +0.11 (1) 552.39 377.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (JavaOS) 234 362.67 S +1 8.8 Q +0.09 (\252) 269.96 367.07 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 280.27 362.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (12) 546.78 362.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (A W) 234 347.67 S +0.11 (or) 255.63 347.67 S +0.11 (d About the Java Language) 266 347.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . .) 403.25 347.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (12) 546.78 347.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +0.11 (A Look Inside the Java Platform) 216 322.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . .) 383.23 322.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (14) 546.78 322.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +0.11 (Java V) 234 305.67 S +0.11 (irtual Machine) 265.62 305.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 340.33 305.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (15) 546.78 305.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Base API) 234 290.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 303.15 290.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (16) 546.78 290.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Applet API) 252 275.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 334.61 275.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (16) 546.78 275.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Standar) 234 259.67 S +0.11 (d Extension API) 296.58 259.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . .) 377.51 259.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (16) 546.78 259.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Security API) 252 244.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 340.33 244.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (17) 546.78 244.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Media API) 252 228.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 331.75 228.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (18) 546.78 228.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Enterprise API) 252 212.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 351.77 212.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (19) 546.78 212.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Commer) 252 196.67 S +0.11 (ce API) 319.48 196.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 354.63 196.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (20) 546.78 196.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Server API) 252 180.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 331.75 180.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (21) 546.78 180.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (Java Management API) 252 164.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (. . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 366.07 164.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (22) 546.78 164.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +0.11 (Java Compile and Runtime Environments) 216 140.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 ( . . . . . . . . . . . . . . . . .) 431.85 140.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.11 (24) 546.78 140.67 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.iii/DEST FmPD2 +[/Dest/F.JavaPlatformTOCdoc/DEST FmPD2 +[/Rect[54 466 558 477]/Border[0 0 0]/Dest/G4.5760/LNK FmPD2 +[/Rect[54 449 558 460]/Border[0 0 0]/Dest/G4.5787/LNK FmPD2 +[/Rect[54 434 558 445]/Border[0 0 0]/Dest/G4.7020/LNK FmPD2 +[/Rect[54 419 558 430]/Border[0 0 0]/Dest/G4.4394/LNK FmPD2 +[/Rect[54 404 558 415]/Border[0 0 0]/Dest/G4.1368/LNK FmPD2 +[/Rect[54 389 558 400]/Border[0 0 0]/Dest/G4.6317/LNK FmPD2 +[/Rect[234 374 280 387]/Border[0 0 0]/Dest/G4.6689/LNK FmPD2 +[/Rect[234 359 270 372]/Border[0 0 0]/Dest/G4.8594/LNK FmPD2 +[/Rect[54 344 558 355]/Border[0 0 0]/Dest/G4.5887/LNK FmPD2 +[/Rect[54 319 558 330]/Border[0 0 0]/Dest/G4.7205/LNK FmPD2 +[/Rect[54 302 558 313]/Border[0 0 0]/Dest/G4.6978/LNK FmPD2 +[/Rect[54 287 558 298]/Border[0 0 0]/Dest/G4.7755/LNK FmPD2 +[/Rect[54 272 558 283]/Border[0 0 0]/Dest/G4.6768/LNK FmPD2 +[/Rect[54 256 558 267]/Border[0 0 0]/Dest/G4.6770/LNK FmPD2 +[/Rect[54 241 558 252]/Border[0 0 0]/Dest/G4.8471/LNK FmPD2 +[/Rect[54 225 558 236]/Border[0 0 0]/Dest/G4.8497/LNK FmPD2 +[/Rect[54 209 558 220]/Border[0 0 0]/Dest/G4.3695/LNK FmPD2 +[/Rect[54 193 558 204]/Border[0 0 0]/Dest/G4.1346/LNK FmPD2 +[/Rect[54 177 558 188]/Border[0 0 0]/Dest/G4.5289/LNK FmPD2 +[/Rect[54 161 558 172]/Border[0 0 0]/Dest/G4.7424/LNK FmPD2 +[/Rect[216 137 558 148]/Border[0 0 0]/Dest/G4.4801/LNK FmPD2 +[/Title(A)/Rect[45 488 567 598]/ARTICLE FmPD2 +[/Title(A)/Rect[45 121 567 486]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "iii" 3 +%%Page: "iv" 4 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (iv) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +0.09 (The Java\252 Platform) 198 108.7 S +1 F +0.09 (\321) 274.1 108.7 S +0 F +0.09 (May 1996) 283.19 108.7 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36 351 567 558 R +V +0.5 H +N +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.iv/DEST FmPD2 +[/Dest/L.JavaPlatformTOCdoc/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "iv" 4 +%%Page: "5" 5 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (5) 553.41 108.7 S +0 0 0 1 0 0 0 K +198 500.18 558 500.18 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +540.76 521.07 558.36 524.92 R +0 X +1 1 0 0 0 0 1 K +V +540.76 514.65 558.36 518.5 R +V +540.76 508.42 558.36 512.27 R +V +540.76 518.61 558.36 521.29 R +7 X +V +540.76 512.4 558.36 514.87 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 522.64 558 589.39 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 72 612 720 C +0 20 Q +0 X +0 0 0 1 0 0 0 K +-2.5 (The Java) 198 509.31 P +4 9.6 Q +-1.2 (\252) 264.92 514.11 P +0 20 Q +-2.5 ( Platform) 274.33 509.31 P +54 653/G4.5026 FmPA +1 10 Q +0.52 0.1 (This paper de\336nes the Java) 198 459.68 B +4 6.4 Q +0.32 (\252) 322.19 462.88 P +1 10 Q +0.52 0.1 ( Platform and pr) 328.46 459.68 B +0.52 0.1 (ovides descriptions of each of its) 404.61 459.68 B +0.52 0.1 (parts. It is written for developers and others inter) 198 447.68 B +0.52 0.1 (ested in understanding the) 427.99 447.68 B +0.28 0.1 (wide range of envir) 198 435.68 B +0.28 0.1 (onments wher) 287.24 435.68 B +0.28 0.1 (e Java-power) 352.16 435.68 B +0.28 0.1 (ed applets and applications can) 411.61 435.68 B +0.52 0.1 (r) 198 423.68 B +0.52 0.1 (un.) 201.97 423.68 B +0.52 0.1 (For mor) 198 403.68 B +0.52 0.1 (e up-to-date and detailed information about the featur) 234.75 403.68 B +0.52 0.1 (es and) 483.55 403.68 B +0.52 0.1 (ar) 198 391.68 B +0.52 0.1 (chitectur) 206.97 391.68 B +0.52 0.1 (e of the Java Platform and development envir) 246.59 391.68 B +0.52 0.1 (onment, r) 455.63 391.68 B +0.52 0.1 (efer to the) 499.8 391.68 B +0.52 0.1 (Developer) 198 379.68 B +0.52 0.1 (\325s Corner at the JavaSoft web site) 245.73 379.68 B +5 9.5 Q +1.14 (http://java.sun.com) 400.72 379.68 P +1 10 Q +0.52 0.1 (. In) 509.02 379.68 B +0.52 0.1 (particular) 198 367.68 B +0.52 0.1 (, see) 241.72 367.68 B +0 F +0.52 0.1 (The Java Language Envir) 264.68 367.68 B +0.52 0.1 (onment: A White Paper) 370.86 367.68 B +1 F +0.52 0.1 (.) 469.33 367.68 B +0.52 0.1 (The Java Platform is developed by JavaSoft, an operating company of Sun) 198 347.68 B +0.52 0.1 (Micr) 198 335.68 B +0.52 0.1 (osystems, Inc.) 218.98 335.68 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.5/DEST FmPD2 +[/Dest/F.JavaPlatformdoc/DEST FmPD2 +[/Title(A)/Rect[45 488 567 598]/ARTICLE FmPD2 +[/Title(A)/Rect[45 108 567 475]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "5" 5 +%%Page: "6" 6 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (6) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 15 Q +0 X +0 0 0 1 0 0 0 K +-0.94 (What is the Java Platform?) 54 638 P +54 782/G4.5760 FmPA +1 10 Q +0.48 -0.1 (The computer world curr) 198 616.33 B +0.48 -0.1 (ently has many platforms, among them Micr) 309.11 616.33 B +0.48 -0.1 (osoft) 504.94 616.33 B +0.48 -0.1 (W) 198 604.33 B +0.48 -0.1 (indows, Macintosh, OS/2, UNIX) 207.35 604.33 B +1 6.4 Q +0.31 -0.06 (\250) 350.48 607.53 B +1 10 Q +0.48 -0.1 ( and NetW) 355.2 604.33 B +0.48 -0.1 (ar) 402.63 604.33 B +0.48 -0.1 (e) 411.2 604.33 B +1 6.4 Q +0.31 -0.06 (\250) 415.89 607.53 B +1 10 Q +0.48 -0.1 (; softwar) 420.61 604.33 B +0.48 -0.1 (e must be compiled) 461.47 604.33 B +0.3 -0.1 (separately to r) 198 592.33 B +0.3 -0.1 (un on each platform. The binary \336le for an application that r) 260.2 592.33 B +0.3 -0.1 (uns on) 525.83 592.33 B +0.48 -0.1 (one platform cannot r) 198 580.33 B +0.48 -0.1 (un on another platform, because the binary \336le is machine-) 293.33 580.33 B +-0.1 (speci\336c.) 198 568.33 S +0.48 -0.1 (The Java Platform is a new softwar) 198 548.33 B +0.48 -0.1 (e platform for delivering and r) 351.48 548.33 B +0.48 -0.1 (unning highly) 485.76 548.33 B +0.23 -0.1 (interactive, dynamic, and secur) 198 536.33 B +0.23 -0.1 (e applets and applications on networked computer) 333.74 536.33 B +0.48 -0.1 (systems. But what sets the Java Platform apart is that it sits on top of these other) 198 524.33 B +0.48 -0.1 (platforms, and compiles to) 198 512.33 B +0 F +0.48 -0.1 (bytecodes) 317.95 512.33 B +1 F +0.48 -0.1 (, which ar) 355.19 512.33 B +0.48 -0.1 (e not speci\336c to any physical) 398.75 512.33 B +0.43 -0.1 (machine, but ar) 198 500.33 B +0.43 -0.1 (e machine instr) 266.05 500.33 B +0.43 -0.1 (uctions for a) 332.91 500.33 B +0 F +0.43 -0.1 (virtual machine) 390.19 500.33 B +1 F +0.43 -0.1 (. A pr) 452.92 500.33 B +0.43 -0.1 (ogram written in) 481.06 500.33 B +0.48 -0.1 (the Java Language compiles to a bytecode \336le that can r) 198 488.33 B +0.48 -0.1 (un wher) 442.49 488.33 B +0.48 -0.1 (ever the Java) 479.34 488.33 B +0.05 -0.1 (Platform is pr) 198 476.33 B +0.05 -0.1 (esent, on) 257.4 476.33 B +0 F +0.05 -0.1 (any) 298.18 476.33 B +1 F +0.05 -0.1 (underlying operating system. In other wor) 315.32 476.33 B +0.05 -0.1 (ds, the same) 502.08 476.33 B +0.38 -0.1 (exact \336le can r) 198 464.33 B +0.38 -0.1 (un on any operating system that is r) 260.68 464.33 B +0.38 -0.1 (unning the Java Platform. This) 418.81 464.33 B +0.48 -0.1 (portability is possible because at the cor) 198 452.33 B +0.48 -0.1 (e of the Java Platform is the Java V) 372.3 452.33 B +0.48 -0.1 (irtual) 524.42 452.33 B +0.48 -0.1 (Machine.) 198 440.33 B +0.48 -0.1 (While each underlying platform has its own implementation of the Java V) 198 420.33 B +0.48 -0.1 (irtual) 522.37 420.33 B +0.46 -0.1 (Machine, ther) 198 408.33 B +0.46 -0.1 (e is only one virtual machine speci\336cation. Because of this, the Java) 258.04 408.33 B +0.48 -0.1 (Platform can pr) 198 396.33 B +0.48 -0.1 (ovide a standar) 266.28 396.33 B +0.48 -0.1 (d, uniform pr) 333.86 396.33 B +0.48 -0.1 (ogramming interface to applets and) 393.24 396.33 B +-0.03 -0.1 (applications on any har) 198 384.33 B +-0.03 -0.1 (dwar) 299.32 384.33 B +-0.03 -0.1 (e. The Java Platform is ther) 322.14 384.33 B +-0.03 -0.1 (efor) 440.63 384.33 B +-0.03 -0.1 (e ideal for the Internet,) 457.58 384.33 B +0.44 -0.1 (wher) 198 372.33 B +0.44 -0.1 (e one pr) 220.32 372.33 B +0.44 -0.1 (ogram should be capable of r) 256.05 372.33 B +0.44 -0.1 (unning on any computer in the world.) 383.99 372.33 B +0.48 -0.1 (The Java Platform is designed to pr) 198 360.33 B +0.48 -0.1 (ovide this \322W) 352.86 360.33 B +0.48 -0.1 (rite Once, Run Anywher) 412.93 360.33 B +0.48 -0.1 (e\323) 520.4 360.33 B +1 6.4 Q +0.33 0.06 (SM) 529.99 363.53 B +1 10 Q +-0.1 (capability) 198 348.33 S +-0.1 (.) 239.42 348.33 S +0.48 -0.1 (Developers use the Java Language to write sour) 198 328.33 B +0.48 -0.1 (ce code for Java-power) 407.84 328.33 B +0.48 -0.1 (ed) 508.03 328.33 B +0.48 -0.1 (applications. They compile once to the Java Platform, rather than to the) 198 316.33 B +0.48 -0.1 (underlying system. Java Language sour) 198 304.33 B +0.48 -0.1 (ce code compiles to an intermediate,) 374.33 304.33 B +0.48 -0.1 (portable form of bytecodes that will r) 198 292.33 B +0.48 -0.1 (un anywher) 361.81 292.33 B +0.48 -0.1 (e the Java Platform is pr) 414.74 292.33 B +0.48 -0.1 (esent.) 520.49 292.33 B +0.52 0.1 (Developers can write object-oriented, multithr) 198 272.33 B +0.52 0.1 (eaded, dynamically linked) 409.05 272.33 B +0.52 0.1 (applications using the Java Language. The platform has built-in security) 198 260.33 B +0.52 0.1 (,) 530.57 260.33 B +0.52 0.1 (exception handling, and automatic garbage collection. Just-in-time compilers) 198 248.33 B +0.22 0.1 (ar) 198 236.33 B +0.22 0.1 (e available to speed up execution by converting Java bytecodes into machine) 206.97 236.33 B +0.52 0.1 (language. Fr) 198 224.33 B +0.52 0.1 (om within the Java Language, developers can also write and call) 257.84 224.33 B +0.52 0.1 (native methods\321methods in C, C++ or another language, compiled to a) 198 212.33 B +0.52 0.1 (speci\336c underlying operating system\321for speed or special functionality) 198 200.33 B +0.52 0.1 (.) 526.15 200.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.6/DEST FmPD2 +[/Title(A)/Rect[45 130 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "6" 6 +%%Page: "7" 7 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (7) 553.41 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (The Java Language is the the entry ramp to the Java Platform. Pr) 198 641.33 B +0.52 0.1 (ograms) 498.07 641.33 B +0.26 0.1 (written in the Java Language and then compiled will r) 198 629.33 B +0.26 0.1 (un on the Java Plaform.) 444.94 629.33 B +0.52 0.1 (The Java Platform has two basic parts:) 198 617.33 B +6 14 Q +0.14 (\245) 198 599.33 S +1 10 Q +0.52 0.1 (Java V) 210.6 599.33 B +0.52 0.1 (irtual Machine) 239.87 599.33 B +6 14 Q +0.14 (\245) 198 581.33 S +1 10 Q +0.52 0.1 (Java Application Pr) 210.6 581.33 B +0.52 0.1 (ogramming Interface \050Java API\051) 299.84 581.33 B +0.15 0.1 (These ar) 198 561.33 B +0.15 0.1 (e described in detail later in this paper) 235.99 561.33 B +0.15 0.1 (. Combined, these parts pr) 409.93 561.33 B +0.15 0.1 (ovide) 529.83 561.33 B +0.52 0.1 (an end-user r) 198 549.33 B +0.52 0.1 (untime envir) 259.09 549.33 B +0.52 0.1 (onment for deploying Internet and intranet) 317.89 549.33 B +0.52 0.1 (applications.) 198 537.33 B +0 14 Q +0.7 (The Java Base Platform) 160.49 504.67 P +54 649/G4.5787 FmPA +1 10 Q +0.48 -0.1 (The Java Base Platform is the) 198 483.33 B +0 F +0.48 -0.1 (minimum) 328.54 483.33 B +1 F +0.48 -0.1 ( Java Platform that developers can safely) 367.86 483.33 B +0.48 -0.1 (assume is pr) 198 471.33 B +0.48 -0.1 (esent for r) 252.82 471.33 B +0.48 -0.1 (unning Java-power) 297.19 471.33 B +0.48 -0.1 (ed applets and applications. This) 381.11 471.33 B +0.48 -0.1 (platform applies to Network Computers, desktop computers, and workstations) 198 459.33 B +0.48 -0.1 (\050the next section describes the platform for smaller systems\051. This platform) 198 447.33 B +0.03 -0.1 (contains the same Java V) 198 435.33 B +0.03 -0.1 (irtual Machine mentioned befor) 305.06 435.33 B +0.03 -0.1 (e, but has a minimal set of) 442.62 435.33 B +0.08 -0.1 (API r) 198 423.33 B +0.08 -0.1 (equir) 221.04 423.33 B +0.08 -0.1 (ed to r) 243.63 423.33 B +0.08 -0.1 (un basic applets and applications) 271.58 423.33 B +0.08 0.1 (. This minimal set is known as) 415.67 423.33 B +0.06 0.1 (the Java Applet API, or Java Base API. Developers who write to this minimum) 198 411.33 B +0.52 0.1 (set can feel secur) 198 399.33 B +0.52 0.1 (e that the pr) 275.5 399.33 B +0.52 0.1 (ogram will r) 331.64 399.33 B +0.52 0.1 (un anywher) 388.62 399.33 B +0.52 0.1 (e without the need for) 443.59 399.33 B +0.52 0.1 (additional class libraries.) 198 387.33 B +0.52 0.1 (Certain Java Platform licensees \050listed in \322Wher) 198 367.33 B +0.52 0.1 (e W) 416.09 367.33 B +0.52 0.1 (ill the Java Platform Be) 433.65 367.33 B +0.33 0.1 (Deployed?\323 on page) 198 355.33 B +0.33 0.1 (10\323\051 have contracted to include the Java Base API in their) 293.51 355.33 B +0.52 0.1 (particular implementation of the Java Platform. As mor) 198 343.33 B +0.52 0.1 (e class libraries ar) 454.72 343.33 B +0.52 0.1 (e) 536.35 343.33 B +0.52 0.1 (developed, the Java Base Platform will gr) 198 331.33 B +0.52 0.1 (ow) 387.51 331.33 B +0.52 0.1 (, and these additions will migrate) 400.59 331.33 B +0.52 0.1 (in a timely fashion into the Java Base Platform pr) 198 319.33 B +0.52 0.1 (esent on each licensee\325s) 423.75 319.33 B +0.52 0.1 (operating system.) 198 307.33 B +0.52 0.1 (Another set of APIs, called the Standar) 198 287.33 B +0.52 0.1 (d Extension API, is being de\336ned by) 376.15 287.33 B +0.52 0.1 (JavaSoft, in partnership with leading industry companies, to extend the base) 198 275.33 B +0.52 0.1 (functionality) 198 263.33 B +0.52 0.1 (. Over time, some subset of the Standar) 254.9 263.33 B +0.52 0.1 (d Extension API will) 438.38 263.33 B +0.52 0.1 (migrate into the Java Base Platform.) 198 251.33 B +0 14 Q +0.7 (The Embedded Java Platform) 160.49 218.67 P +54 363/G4.7020 FmPA +1 10 Q +0.52 0.1 (The Embedded Java Platform is being tar) 198 197.33 B +0.52 0.1 (geted for consumer devices with) 386.69 197.33 B +0.33 0.1 (fewer r) 198 185.33 B +0.33 0.1 (esour) 230.5 185.33 B +0.33 0.1 (ces and mor) 255.29 185.33 B +0.33 0.1 (e specialized functionality than a Network Computer) 310.52 185.33 B +0.33 0.1 (,) 552.47 185.33 B +0.52 0.1 (such as set-top boxes, printers, copiers, and cellular phones. Such devices) 198 173.33 B +0.52 0.1 (might have special constraints such as small memory footprint, no display) 198 161.33 B +0.52 0.1 (, or) 537.78 161.33 B +0.52 0.1 (no connection to a network.) 198 149.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.7/DEST FmPD2 +160 372/M9.41580.Head2.The.Embedded.Java.Platform FmPA +160 372/I4.1.7246 FmPA +[/Rect[386 363 558 374]/Border[0 0 0]/Page 10/View[/XYZ null 160 554 FmDC exch pop null]/LNK FmPD +[/Rect[54 351 304 363]/Border[0 0 0]/Page 10/View[/XYZ null 160 554 FmDC exch pop null]/LNK FmPD +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "7" 7 +%%Page: "8" 8 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (8) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.44 0.1 (The API tar) 198 641.33 B +0.44 0.1 (geted for this platform is called the Java Embedded API. The Java) 250.93 641.33 B +0.52 0.1 (Embedded API is the smallest API a low-function embedded device can have) 198 629.33 B +0.52 0.1 (and still r) 198 617.33 B +0.52 0.1 (un. Because this platform is still under development, this API has) 242.17 617.33 B +0.26 0.1 (not yet achieved the level of a standar) 198 605.33 B +0.26 0.1 (d. Consequently this API is not yet well-) 370.77 605.33 B +0.52 0.1 (de\336ned, but it will pr) 198 593.33 B +0.52 0.1 (obably consist of the packages) 296.29 593.33 B +5 F +1.2 (java.lang) 438.11 593.33 P +1 F +0.52 0.1 ( and) 492.11 593.33 B +5 F +1.2 (java.util) 198 581.33 P +1 F +0.52 0.1 (. A Java-power) 252 581.33 B +0.52 0.1 (ed application written for one particular device) 323.52 581.33 B +0.52 0.1 (could operate on a wide range of similar) 198 569.33 B +0.52 0.1 (, dedicated devices.) 383.7 569.33 B +0 14 Q +0.7 (Bene\336ts of the Java Platform) 160.49 536.67 P +54 681/G4.4394 FmPA +1 10 Q +0.52 0.1 (The Java Platform has bene\336ts for the end-user as well as the developer and) 198 515.33 B +0.52 0.1 (support personnel:) 198 503.33 B +0 13 Q +-0.85 0.13 (End-User Bene\336ts) 198 471.33 B +54 615/G4.3498 FmPA +1 10 Q +0.52 0.1 (T) 198 450.33 B +0.52 0.1 (oday) 203.31 450.33 B +0.52 0.1 (, the Java Platform pr) 224.73 450.33 B +0.52 0.1 (ovides live, interactive content on the W) 322.92 450.33 B +0.52 0.1 (orld W) 506.92 450.33 B +0.52 0.1 (ide) 538.41 450.33 B +0.52 0.1 (W) 198 438.33 B +0.52 0.1 (eb, with just-in-time softwar) 207.18 438.33 B +0.52 0.1 (e access. Applications ar) 336.74 438.33 B +0.52 0.1 (e r) 451.38 438.33 B +0.52 0.1 (eadily available on) 463.26 438.33 B +0.52 0.1 (all operating systems at once, fr) 198 426.33 B +0.52 0.1 (eeing users fr) 343.51 426.33 B +0.52 0.1 (om having to choose operating) 405.17 426.33 B +0.52 0.1 (systems on that basis. Smaller) 198 414.33 B +0.52 0.1 (, less expensive, dedicated systems will) 337.3 414.33 B +0.52 0.1 (eventually be available for specialized applications.) 198 402.33 B +0 13 Q +-0.85 0.13 (Developer Bene\336ts) 198 370.33 B +54 514/G4.9177 FmPA +1 10 Q +0.52 0.1 (The Java Language is a small, \322knowable\323 system and is coupled with a) 198 349.33 B +0.52 0.1 (gr) 198 337.33 B +0.52 0.1 (owingly compr) 207.53 337.33 B +0.52 0.1 (ehensive set of APIs. Developers can \322W) 276.92 337.33 B +0.52 0.1 (rite Once, Run) 465.73 337.33 B +0.52 0.1 (Anywher) 198 325.33 B +0.52 0.1 (e,\323 which pr) 240.58 325.33 B +0.52 0.1 (ovides tr) 297.22 325.33 B +0.52 0.1 (emendous marketing leverage over other) 337.33 325.33 B +0.52 0.1 (languages. In addition, Java development envir) 198 313.33 B +0.52 0.1 (onments on all operating) 417.84 313.33 B +0.19 0.1 (systems compile to a single binary format. Rather than developing on multiple) 198 301.33 B +0.52 0.1 (platforms to deliver on multiple platforms, developers can now develop on) 198 289.33 B +0.52 0.1 (one platform, saving cost, to deliver on that same platform, which is) 198 277.33 B +0.34 0.1 (everywher) 198 265.33 B +0.34 0.1 (e. The ability to \322W) 246.36 265.33 B +0.34 0.1 (rite Once, Run Anywher) 337.73 265.33 B +0.34 0.1 (e\323 is enough r) 449.17 265.33 B +0.34 0.1 (eason for) 513.28 265.33 B +0.52 0.1 (some developers to turn to the Java Language as an alternative to C or C++) 198 253.33 B +0.52 0.1 (even for stand-alone, non-networked applications.) 198 241.33 B +0.52 0.1 (In addition, building applications fr) 198 221.33 B +0.52 0.1 (om shar) 361.9 221.33 B +0.52 0.1 (ed, r) 398.74 221.33 B +0.52 0.1 (eusable objects can further) 419.43 221.33 B +0.52 0.1 (r) 198 209.33 B +0.52 0.1 (educe cost by allowing developers to concentrate on cr) 201.87 209.33 B +0.52 0.1 (eating only what is) 452.93 209.33 B +0.52 0.1 (novel. Developers can distribute by network rather than compete for shelf-) 198 197.33 B +0.52 0.1 (space in softwar) 198 185.33 B +0.52 0.1 (e stor) 272.25 185.33 B +0.52 0.1 (es.) 297.39 185.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.8/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "8" 8 +%%Page: "9" 9 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (9) 553.41 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 13 Q +0 X +0 0 0 1 0 0 0 K +-0.85 0.13 (Administrative and Support Bene\336ts) 198 639.33 B +54 783/G4.1678 FmPA +1 10 Q +0.48 0.1 (The Java Platform has bene\336ts for corporate computer systems administration) 198 618.33 B +0.52 0.1 (departments. V) 198 606.33 B +0.52 0.1 (ersion contr) 267.09 606.33 B +0.52 0.1 (ol and upgrades ar) 321.23 606.33 B +0.52 0.1 (e simpli\336ed because Java-) 407.85 606.33 B +0.12 0.1 (power) 198 594.33 B +0.12 0.1 (ed applications can be kept in a central r) 226.87 594.33 B +0.12 0.1 (epository and served fr) 409.78 594.33 B +0.12 0.1 (om ther) 515.14 594.33 B +0.12 0.1 (e) 550.39 594.33 B +0.52 0.1 (for each individual use. In multivendor) 198 582.33 B +0.52 0.1 (, multiplatform envir) 381 582.33 B +0.52 0.1 (onments, the) 477.27 582.33 B +0.52 0.1 (number of platforms to support is r) 198 570.33 B +0.52 0.1 (educed to one. Emer) 360.95 570.33 B +0.52 0.1 (ging lower) 458.09 570.33 B +0.52 0.1 (-cost) 507.23 570.33 B +0.52 0.1 (network computers have the potential to r) 198 558.33 B +0.52 0.1 (educe maintenance and capital) 391.45 558.33 B +0.52 0.1 (expenditur) 198 546.33 B +0.52 0.1 (es. W) 247.65 546.33 B +0.52 0.1 (ith these network computers, data management can r) 275.27 546.33 B +0.52 0.1 (emain) 519.09 546.33 B +0.52 0.1 (centralized while data pr) 198 534.33 B +0.52 0.1 (ocessing is done locally) 312.46 534.33 B +0.52 0.1 (.) 418.79 534.33 B +0.29 0.1 (Companies with lar) 198 514.33 B +0.29 0.1 (ge intranets, that may not \336nd it worthwhile to upgrade to) 287.53 514.33 B +0.52 0.1 (the latest memory-consuming operating system, can r) 198 502.33 B +0.52 0.1 (un Java-power) 443.72 502.33 B +0.52 0.1 (ed) 510.57 502.33 B +0.52 0.1 (applications on all their existing machines. By pr) 198 490.33 B +0.52 0.1 (oviding corporate data in a) 424.51 490.33 B +0.52 0.1 (format r) 198 478.33 B +0.52 0.1 (eadable by Java-power) 235.42 478.33 B +0.52 0.1 (ed applications, corporations give users the) 339.46 478.33 B +0.52 0.1 (platform-neutral access to the data they need.) 198 466.33 B +0.52 0.1 (When customers ar) 198 446.33 B +0.52 0.1 (e r) 286.18 446.33 B +0.52 0.1 (unning on the Java Platform, companies can take) 298.16 446.33 B +0.39 0.1 (advantage of the interactivity of the Internet by moving employee tasks out to) 198 434.33 B +0.52 0.1 (customers. Companies can r) 198 422.33 B +0.52 0.1 (educe time spent on or) 329.7 422.33 B +0.52 0.1 (der) 434.56 422.33 B +0.52 0.1 (-entry by having) 449.53 422.33 B +0.52 0.1 (customers \336ll in or) 198 410.33 B +0.52 0.1 (der) 284.03 410.33 B +0.52 0.1 (-entry forms themselves on W) 299 410.33 B +0.52 0.1 (eb pages. This is mor) 436.08 410.33 B +0.52 0.1 (e) 536.1 410.33 B +0.52 0.1 (practical than pr) 198 398.33 B +0.52 0.1 (eviously possible, because the customer can now be on any) 273.34 398.33 B +0.52 0.1 (operating system.) 198 386.33 B +0 14 Q +0.7 (Applets and Applications) 160.49 353.67 P +54 498/G4.1368 FmPA +1 10 Q +0.52 0.1 (The Java Platform enables developers to cr) 198 332.33 B +0.52 0.1 (eate two dif) 393.53 332.33 B +0.52 0.1 (fer) 447.84 332.33 B +0.52 0.1 (ent kinds of) 460.03 332.33 B +0.52 0.1 (pr) 198 320.33 B +0.52 0.1 (ograms:) 207.98 320.33 B +6 14 Q +0.14 (\245) 198 302.33 S +3 10 Q +0.52 0.1 (Applets) 210.6 302.33 B +1 F +0.52 0.1 ( ar) 247.4 302.33 B +0.52 0.1 (e pr) 259.49 302.33 B +0.52 0.1 (ograms that r) 277.48 302.33 B +0.52 0.1 (equir) 338.97 302.33 B +0.52 0.1 (e a br) 362.57 302.33 B +0.52 0.1 (owser to r) 388.3 302.33 B +0.52 0.1 (un. The) 434.71 302.33 B +5 F +1.2 () 475.76 302.33 P +1 F +0.52 0.1 ( tag is) 523.76 302.33 B +0.05 0.1 (embedded in a W) 210.6 290.33 B +0.05 0.1 (eb page and names the pr) 289.63 290.33 B +0.05 0.1 (ogram to be r) 405.74 290.33 B +0.05 0.1 (un. When that page) 466.41 290.33 B +0.52 0.1 (is accessed by a user) 210.6 278.33 B +0.52 0.1 (, either over the Internet or corporate intranet, the) 304.34 278.33 B +0.52 0.1 (applet automatically downloads fr) 210.6 266.33 B +0.52 0.1 (om the server and r) 368.06 266.33 B +0.52 0.1 (uns on the client) 458.37 266.33 B +0.52 0.1 (machine. Because applets ar) 210.6 254.33 B +0.52 0.1 (e downloaded, they tend to be designed small) 341.98 254.33 B +0.52 0.1 (or modular) 210.6 242.33 B +0.52 0.1 (, to avoid lar) 261.58 242.33 B +0.52 0.1 (ge download times.) 320.07 242.33 B +6 14 Q +0.14 (\245) 198 224.33 S +3 10 Q +0.29 0.1 (Applications) 210.6 224.33 B +1 F +0.29 0.1 ( ar) 270.67 224.33 B +0.29 0.1 (e pr) 282.53 224.33 B +0.29 0.1 (ograms that do not r) 300.3 224.33 B +0.29 0.1 (equir) 393.73 224.33 B +0.29 0.1 (e a br) 417.33 224.33 B +0.29 0.1 (owser to r) 442.61 224.33 B +0.29 0.1 (un\321they have) 488.57 224.33 B +-0.07 0.1 (no built-in downloading mechanism. When an application is called, it r) 210.6 212.33 B +-0.07 0.1 (uns.) 533.95 212.33 B +0.16 0.1 (In this way) 210.6 200.33 B +0.16 0.1 (, applications ar) 260.22 200.33 B +0.16 0.1 (e just like pr) 332.47 200.33 B +0.16 0.1 (ograms in other languages. They can) 388.45 200.33 B +0.35 0.1 (perform traditional desktop tasks, such as that done with a wor) 210.6 188.33 B +0.35 0.1 (d pr) 500.76 188.33 B +0.35 0.1 (ocessor) 519.91 188.33 B +0.35 0.1 (,) 552.45 188.33 B +0.24 0.1 (spr) 210.6 176.33 B +0.24 0.1 (eadsheet or graphics application. Like an applet, an application r) 224.92 176.33 B +0.24 0.1 (equir) 522.33 176.33 B +0.24 0.1 (es) 545.93 176.33 B +0.52 0.1 (the Java Platform for it to r) 210.6 164.33 B +0.52 0.1 (un; however the Platform can be available as a) 334.75 164.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.9/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "9" 9 +%%Page: "10" 10 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (10) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (separate pr) 210.6 641.33 B +0.52 0.1 (ogram, can be embedded dir) 261.54 641.33 B +0.52 0.1 (ectly within the underlying) 392.95 641.33 B +0.52 0.1 (operating system, or pr) 210.6 629.33 B +0.52 0.1 (esumably can be embedded in the application itself.) 317.33 629.33 B +0.5 0.1 (While applets and applications have dif) 198 609.33 B +0.5 0.1 (fer) 379.87 609.33 B +0.5 0.1 (ent means of being invoked, for the) 392.06 609.33 B +0.48 0.1 (most part they have the same access to a wide range of language capabilities.) 198 597.33 B +0.52 0.1 (For example, either an applet or an application can access a host database,) 198 585.33 B +0.02 0.1 (r) 198 573.33 B +0.02 0.1 (etrieve the data it needs, do local data pr) 201.87 573.33 B +0.02 0.1 (ocessing, and stor) 385.58 573.33 B +0.02 0.1 (e the r) 466.04 573.33 B +0.02 0.1 (esults back to) 494.22 573.33 B +0.52 0.1 (the host.) 198 561.33 B +0.52 0.1 (However) 198 541.33 B +0.52 0.1 (, an applet r) 239.26 541.33 B +0.52 0.1 (equir) 294.69 541.33 B +0.52 0.1 (es a network to r) 318.29 541.33 B +0.52 0.1 (un, while an application does not.) 395.87 541.33 B +0.52 0.1 (Applications have gr) 198 529.33 B +0.52 0.1 (eater fr) 293.38 529.33 B +0.52 0.1 (eedom in that they have full access to system) 326.09 529.33 B +0.52 0.1 (services. For example an application, unlike an applet, can have normal r) 198 517.33 B +0.52 0.1 (ead) 536.23 517.33 B +0.52 0.1 (and write access to \336les on any disk. Since an applet can potentially be) 198 505.33 B +0.52 0.1 (downloaded fr) 198 493.33 B +0.52 0.1 (om an untr) 265.53 493.33 B +0.52 0.1 (usted W) 316.66 493.33 B +0.52 0.1 (eb page, it is r) 353.89 493.33 B +0.52 0.1 (estricted fr) 418.84 493.33 B +0.52 0.1 (om having r) 467.91 493.33 B +0.52 0.1 (ead or) 523.87 493.33 B +0.52 0.1 (write access to any \336le system except the server fr) 198 481.33 B +0.52 0.1 (om which it came. This) 427.24 481.33 B +0.34 0.1 (constraint will be r) 198 469.33 B +0.34 0.1 (elaxed when applets can be marked with digital signatur) 283.85 469.33 B +0.34 0.1 (es,) 543.23 469.33 B +0.52 0.1 (allowing the end-user to be assur) 198 457.33 B +0.52 0.1 (ed that it has been downloaded unalter) 350.56 457.33 B +0.52 0.1 (ed) 530.57 457.33 B +0.52 0.1 (fr) 198 445.33 B +0.52 0.1 (om a tr) 205.3 445.33 B +0.52 0.1 (usted sour) 238.46 445.33 B +0.52 0.1 (ce. Wher) 286.41 445.33 B +0.52 0.1 (e local \336le storage is r) 329.46 445.33 B +0.52 0.1 (equir) 429.4 445.33 B +0.52 0.1 (ed, curr) 453 445.33 B +0.52 0.1 (ently an) 488.41 445.33 B +0.52 0.1 (application is r) 198 433.33 B +0.52 0.1 (equir) 266.29 433.33 B +0.52 0.1 (ed.) 289.89 433.33 B +0 14 Q +0.7 (Wher) 160.49 400.67 P +0.7 (e W) 191.34 400.67 P +0.7 (ill the Java Platform Be Deployed?) 213.93 400.67 P +54 545/G4.6317 FmPA +1 10 Q +0.52 0.1 (The pr) 198 379.33 B +0.52 0.1 (ogr) 228.14 379.33 B +0.52 0.1 (ession towar) 243.23 379.33 B +0.52 0.1 (ds ubiquity has gr) 300.74 379.33 B +0.52 0.1 (eat momentum, moving in thr) 384.17 379.33 B +0.52 0.1 (ee) 522.16 379.33 B +0.16 0.1 (stages fr) 198 367.33 B +0.16 0.1 (om br) 235.75 367.33 B +0.16 0.1 (owsers, to desktop, workstation and network operating systems,) 262.49 367.33 B +0.52 0.1 (and \336nally to embedded devices.) 198 355.33 B +0.52 0.1 (First, the Java Base Platform is curr) 198 335.33 B +0.52 0.1 (ently embedded in the most widely used) 359.35 335.33 B +0.52 0.1 (Internet br) 198 323.33 B +0.52 0.1 (owser) 246.48 323.33 B +0.52 0.1 (, Netscape Navigator) 273.02 323.33 B +4 6.4 Q +0.32 (\252) 369.5 326.53 P +1 10 Q +0.52 0.1 (, and will soon be in Micr) 375.77 323.33 B +0.52 0.1 (osoft Internet) 493.6 323.33 B +0.52 0.1 (Explor) 198 311.33 B +0.52 0.1 (er) 228.02 311.33 B +0.52 0.1 (. It is, or will become, available in other br) 236.22 311.33 B +0.52 0.1 (owsers, such as HotJava) 433.73 311.33 B +4 6.4 Q +0.32 (\252) 544.4 314.53 P +1 10 Q +0.52 0.1 (.) 550.67 311.33 B +0.52 0.1 (Second, the Java Base Platform will soon be embedded in all leading desktop,) 198 291.33 B +0.08 0.1 (workstation, and network operating systems\321see Figur) 198 279.33 B +0.08 0.1 (e 1. Being available on) 451.55 279.33 B +0.52 0.1 (the combination of Micr) 198 267.33 B +0.52 0.1 (osoft W) 308.04 267.33 B +0.52 0.1 (indows, Macintosh, OS/2, and UNIX) 342.96 267.33 B +0.4 0.1 (computers, the Java Base Platform will have an installed base as lar) 198 255.33 B +0.4 0.1 (ge as these) 505.6 255.33 B +0.52 0.1 (platforms combined. By tar) 198 243.33 B +0.52 0.1 (geting this platform, developers will tap into the) 322.74 243.33 B +0.19 0.1 (new) 198 231.33 B +0.19 0.1 (, exploding market for W) 216.33 231.33 B +0.19 0.1 (eb and intranet applications without being tied to) 329.91 231.33 B +0.5 0.1 (any particular har) 198 219.33 B +0.5 0.1 (dwar) 280.22 219.33 B +0.5 0.1 (e or operating system envir) 303.84 219.33 B +0.5 0.1 (onment. The Java Platform) 429.34 219.33 B +0.52 0.1 (will become the platform for all network- and W) 198 207.33 B +0.52 0.1 (eb-based computing.) 420.47 207.33 B +0.52 0.1 (Thir) 198 187.33 B +0.52 0.1 (d, with the JavaChip) 217.03 187.33 B +1 6.4 Q +0.33 0.06 (\252) 311.71 190.53 B +1 10 Q +0.52 0.1 ( family of integrated cir) 318.04 187.33 B +0.52 0.1 (cuits, the platform will be) 426.52 187.33 B +0.52 0.1 (available in a wide range of consumer and industrial embedded devices such) 198 175.33 B +0.52 0.1 (as dedicated Network Computers, set-top boxes, printers, copiers and cellular) 198 163.33 B +0.1 (phones.) 198 151.33 S +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.10/DEST FmPD2 +160 554/M9.37847.Head2.Where.is.the.Java.Platform.Deployed FmPA +160 554/I4.1.6316 FmPA +[/Title(A)/Rect[45 126 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "10" 10 +%%Page: "11" 11 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (1) 549.32 108.7 S +0.09 (1) 553.41 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 X +0 0 0 1 0 0 0 K +0.47 0.09 (Figur) 198 325.5 B +0.47 0.09 (e 1. Companies licensing the Java Base Platform to embed in operating systems.) 219.9 325.5 B +0 14 Q +0.7 (JavaChip) 160.49 293.17 P +0 6.4 Q +0.32 (\252) 211.81 296.37 P +0 14 Q +0.7 ( Family) 218.21 293.17 P +54 437/G4.6689 FmPA +1 10 Q +0.52 0.1 (JavaSoft is working with Sun Micr) 198 271.83 B +0.52 0.1 (oelectr) 355.44 271.83 B +0.52 0.1 (onics) 385.56 271.83 B +1 6.4 Q +0.33 0.06 (\252) 408.93 275.03 B +1 10 Q +0.52 0.1 ( to develop the picoJava) 415.26 271.83 B +1 6.4 Q +0.33 0.06 (\252) 525.84 275.03 B +1 10 Q +0.52 0.1 (,) 532.17 271.83 B +0.52 0.1 (micr) 198 259.83 B +0.52 0.1 (oJava) 218.35 259.83 B +1 6.4 Q +0.33 0.06 (\252) 243.29 263.03 B +1 10 Q +0.52 0.1 (, and UltraJava) 249.62 259.83 B +1 6.4 Q +0.33 0.06 (\252) 318.47 263.03 B +1 10 Q +0.52 0.1 ( family of micr) 324.8 259.83 B +0.52 0.1 (opr) 392.64 259.83 B +0.52 0.1 (ocessors. The \336rst of these,) 408.18 259.83 B +0.17 0.1 (picoJava, is actually a standar) 198 247.83 B +0.17 0.1 (d speci\336cation for the design of a micr) 332.53 247.83 B +0.17 0.1 (opr) 506.31 247.83 B +0.17 0.1 (ocessor) 521.85 247.83 B +0.39 0.1 (that supports the Java V) 198 235.83 B +0.39 0.1 (irtual Machine; this design is available for licensing to) 308.02 235.83 B +0.52 0.1 (chip manufactur) 198 223.83 B +0.52 0.1 (ers. This design is a new ar) 273.21 223.83 B +0.52 0.1 (chitectur) 401.13 223.83 B +0.52 0.1 (e that is not SP) 440.75 223.83 B +0.52 0.1 (ARC-) 508.62 223.83 B +0.19 0.1 (based\321it is optimized for the unique demands of Java, such as multithr) 198 211.83 B +0.19 0.1 (eading) 524.42 211.83 B +0.52 0.1 (and garbage collection.) 198 199.83 B +0.52 0.1 (The micr) 198 179.83 B +0.52 0.1 (oJava and UltraJava ar) 238.51 179.83 B +0.52 0.1 (e actual chips being developed by Sun) 341.79 179.83 B +0.52 0.1 (Micr) 198 167.83 B +0.52 0.1 (oelectr) 218.98 167.83 B +0.52 0.1 (onics based on the picoJava design. These chips have the Java) 249.1 167.83 B +0.52 0.1 (V) 198 155.83 B +0.52 0.1 (irtual Machine and Java Embedded API implemented in silicon, and vary in) 204.77 155.83 B +54 144 558 648 C +54.28 337.5 557.72 638 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54.28 337.5 557.72 638 R +7 X +0 0 0 1 0 0 0 K +V +7 11 Q +0 X +0.63 0.11 (Oper) 210.35 619.74 B +0.63 0.11 (ating Systems That Embed the J) 235.13 619.74 B +0.63 0.11 (a) 400.34 619.74 B +0.63 0.11 (v) 406.35 619.74 B +0.63 0.11 (a Base Platf) 411.68 619.74 B +0.63 0.11 (or) 473.25 619.74 B +0.63 0.11 (m) 483.53 619.74 B +3 10 Q +0.1 (W) 210.35 601.41 S +0.1 (indows) 220.08 601.41 S +6 14 Q +0.14 (\245) 210.35 589.41 S +7 10 Q +0.58 0.1 (Microsoft Cor) 222.95 589.41 B +0.58 0.1 (por) 284.58 589.41 B +0.58 0.1 (ation) 299.23 589.41 B +0.58 0.1 (Windo) 414.28 589.41 B +0.58 0.1 (ws 95, Windo) 442.97 589.41 B +0.58 0.1 (ws NT) 505.19 589.41 B +6 14 Q +0.14 (\245) 210.35 577.41 S +7 10 Q +0.58 0.1 (Inter) 222.95 577.41 B +0.58 0.1 (national Business Machines) 243.71 577.41 B +0.58 0.1 (Windo) 414.28 577.41 B +0.58 0.1 (ws 3.1) 442.97 577.41 B +3 F +0.1 (Macintosh) 210.35 559.41 S +6 14 Q +0.14 (\245) 210.35 547.41 S +7 10 Q +0.58 0.1 (Apple Computer) 222.95 547.41 B +0.58 0.1 (, Inc.) 296.68 547.41 B +0.1 (MacOS) 414.28 547.41 S +3 F +0.1 (OS/2) 210.35 529.41 S +6 14 Q +0.14 (\245) 210.35 517.41 S +7 10 Q +0.58 0.1 (Inter) 222.95 517.41 B +0.58 0.1 (national Business Machines) 243.71 517.41 B +0.1 (OS/2) 414.28 517.41 S +3 F +0.1 (Unix) 210.35 499.4 S +6 14 Q +0.14 (\245) 210.35 487.4 S +7 10 Q +0.58 0.1 (He) 222.95 487.4 B +0.58 0.1 (wlett P) 235.73 487.4 B +0.58 0.1 (ac) 266.62 487.4 B +0.58 0.1 (kard Cor) 277.18 487.4 B +0.58 0.1 (p) 317.19 487.4 B +0.58 0.1 (.) 322.5 487.4 B +0.1 (HPUX) 414.28 487.4 S +6 14 Q +0.14 (\245) 210.35 475.4 S +7 10 Q +0.58 0.1 (Hitachi, Ltd.) 222.95 475.4 B +0.58 0.1 (Hitachi OS) 414.28 475.4 B +6 14 Q +0.14 (\245) 210.35 463.4 S +7 10 Q +0.58 0.1 (Inter) 222.95 463.4 B +0.58 0.1 (national Business Machines) 243.71 463.4 B +0.1 (AIX) 414.28 463.4 S +6 14 Q +0.14 (\245) 210.35 451.4 S +7 10 Q +0.58 0.1 (Silicon Gr) 222.95 451.4 B +0.58 0.1 (aphics) 267.77 451.4 B +0.58 0.1 (, Inc.) 297.12 451.4 B +0.1 (Ir) 414.28 451.4 S +0.1 (ix) 420.74 451.4 S +6 14 Q +0.14 (\245) 210.35 439.4 S +7 10 Q +0.58 0.1 (SunSoft, Sun Microsystems) 222.95 439.4 B +0.58 0.1 (, Inc.) 349.27 439.4 B +0.1 (Solar) 414.28 439.4 S +0.1 (is) 438.27 439.4 S +7 8 Q +0.08 (\252) 445.69 443.4 S +6 14 Q +0.14 (\245) 210.35 427.4 S +7 10 Q +0.58 0.1 (The Santa Cr) 222.95 427.4 B +0.58 0.1 (uz Oper) 284.92 427.4 B +0.58 0.1 (ation, Inc. \050SCO\051) 321.67 427.4 B +0.1 (UnixW) 414.28 427.4 S +0.1 (are) 443.82 427.4 S +6 14 Q +0.14 (\245) 210.35 415.4 S +7 10 Q +0.58 0.1 (T) 222.95 415.4 B +0.58 0.1 (andem Computers) 227.96 415.4 B +0.58 0.1 (Non-Stop K) 414.28 415.4 B +0.58 0.1 (er) 467.15 415.4 B +0.58 0.1 (nel) 476.49 415.4 B +3 F +0.52 0.1 (Network OS) 210.35 397.4 B +6 14 Q +0.14 (\245) 210.35 385.4 S +7 10 Q +0.58 0.1 (No) 222.95 385.4 B +0.58 0.1 (v) 235.78 385.4 B +0.58 0.1 (ell, Inc.) 240.63 385.4 B +0.58 0.1 (NetW) 414.28 385.4 B +0.58 0.1 (are 4.0) 439.28 385.4 B +3 F +0.52 0.1 (Mainframe OS) 210.35 367.41 B +6 14 Q +0.14 (\245) 210.35 355.41 S +7 10 Q +0.58 0.1 (Inter) 222.95 355.41 B +0.58 0.1 (national Business Machines) 243.71 355.41 B +0.1 (MVS) 414.28 355.41 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +198.28 341 555.92 636.36 R +0.5 H +0 Z +N +54 144 558 648 C +0 72 612 720 C +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.11/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "11" 11 +%%Page: "12" 12 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (12) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +-0.11 0.1 (their application-speci\336c I/O, memory) 198 641.33 B +-0.11 0.1 (, communications and contr) 371.64 641.33 B +-0.11 0.1 (ol functions.) 497.05 641.33 B +0.52 0.1 (The JavaOS can r) 198 629.33 B +0.52 0.1 (un in RAM on JavaChip. The JavaChip family enables the) 276.62 629.33 B +0.52 0.1 (Java V) 198 617.33 B +0.52 0.1 (irtual Machine to r) 227.27 617.33 B +0.52 0.1 (un in the most ef) 313.12 617.33 B +0.52 0.1 (\336cient, cost-ef) 391.08 617.33 B +0.52 0.1 (fective manner) 454.04 617.33 B +0.52 0.1 (,) 521.09 617.33 B +0.52 0.1 (bringing high performance to dedicated Java-power) 198 605.33 B +0.52 0.1 (ed devices, such as) 435.46 605.33 B +0.52 0.1 (Network Computers.) 198 593.33 B +0 14 Q +(JavaOS) 160.49 560.67 T +0 6.4 Q +(\252) 203.26 563.87 T +54 705/G4.8594 FmPA +1 10 Q +0.52 0.1 (JavaOS is an operating system that implements the Java Base Platform for) 198 539.33 B +0.52 0.1 (r) 198 527.33 B +0.52 0.1 (unning Java-power) 201.97 527.33 B +0.52 0.1 (ed applets and applications. As such, it implements the) 289.33 527.33 B +0.52 0.1 (Java V) 198 515.33 B +0.52 0.1 (irtual Machine, Java Embedded API, and the underlying functionality) 227.27 515.33 B +0.52 0.1 (for windowing, networking and \336le system.) 198 503.33 B +0.52 0.1 (JavaOS is designed for Network Computers, consumer devices, and network) 198 483.33 B +0.52 0.1 (devices for embedded applications, such as printers, copiers and industrial) 198 471.33 B +0.52 0.1 (contr) 198 459.33 B +0.52 0.1 (ollers. These devices will have instant turn-on, no installation setup, no) 221.25 459.33 B +0.52 0.1 (system administration, and, when on a network, can be automatically) 198 447.33 B +0.1 (upgraded.) 198 435.33 S +0.52 0.1 (JavaOS will be widely ported to a range of micr) 198 415.33 B +0.52 0.1 (opr) 417.14 415.33 B +0.52 0.1 (ocessors, including the) 432.68 415.33 B +0.52 0.1 (JavaChip family) 198 403.33 B +0.52 0.1 (. When JavaOS r) 270.76 403.33 B +0.52 0.1 (uns on a JavaChip, the micr) 349.33 403.33 B +0.52 0.1 (opr) 476.63 403.33 B +0.52 0.1 (ocessor) 492.17 403.33 B +0.52 0.1 (\325s) 526.19 403.33 B +0.52 0.1 (silicon Java V) 198 391.33 B +0.52 0.1 (irtual Machine is used.) 259.78 391.33 B +0 14 Q +0.7 (A W) 160.49 358.67 P +0.7 (ord About the Java Language) 187.73 358.67 P +0 11.2 Q +0.56 (*) 354.88 364.27 P +54 503/G4.5887 FmPA +1 10 Q +0.28 0.1 (The Java Language is the means for a developer to write sour) 198 337.33 B +0.28 0.1 (ce code. Applets) 477.55 337.33 B +0.52 0.1 (and applications written in the Java Language compile to a form that r) 198 325.33 B +0.52 0.1 (uns on) 521.77 325.33 B +0.52 0.1 (the Java Platform.) 198 313.33 B +0.52 0.1 (When developers write sour) 198 293.33 B +0.52 0.1 (ce code in the Java Language, this code can call) 327.54 293.33 B +0.06 0.1 (APIs de\336ned in the Java Base API, Java Standar) 198 281.33 B +0.06 0.1 (d Extensions API, or a new API) 412.75 281.33 B +0.52 0.1 (de\336ned in the sour) 198 269.33 B +0.52 0.1 (ce code itself. At r) 284.63 269.33 B +0.52 0.1 (untime, all thr) 370.71 269.33 B +0.52 0.1 (ee kinds of APIs have) 436.06 269.33 B +0.52 0.1 (equal standing, and ar) 198 257.33 B +0.52 0.1 (e not distinguished on the basis of their sour) 300.51 257.33 B +0.52 0.1 (ce.) 505.4 257.33 B +0.52 0.1 (Compiling the sour) 198 245.33 B +0.52 0.1 (ce with the Java Compiler generates bytecodes that ar) 286.71 245.33 B +0.52 0.1 (e) 533.02 245.33 B +0.52 0.1 (executed on the Java Platform.) 198 233.33 B +0.52 0.1 (As pr) 198 213.33 B +0.52 0.1 (ofessional pr) 223.32 213.33 B +0.52 0.1 (ogramming languages go, the Java Language is simple, yet) 281.58 213.33 B +0.52 0.1 (\337exible and powerful. It is object-oriented \050with single inheritance\051, statically) 198 201.33 B +54 170 558 180.5 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +198 179.88 342 179.88 2 L +0.3 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 72 612 720 C +1 7 Q +0 X +0 0 0 1 0 0 0 K +-0.25 (* This section and the Virtual Machine section are borrowed heavily from the keynote address given by Bill Joy,) 198 165.33 P +(Founder and Vice President of Research at Sun Microsystems, to Internet World on April 30, 1996.) 205.2 157.33 T +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.12/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "12" 12 +%%Page: "13" 13 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (13) 548.82 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (typed, multithr) 198 641.33 B +0.52 0.1 (eaded, dynamically linked, and has automatic garbage) 267.54 641.33 B +0.1 (collection.) 198 629.33 S +0.52 0.1 (Its syntax is based on C and C++, so those pr) 198 609.33 B +0.52 0.1 (ogrammers can pick it up quite) 405.49 609.33 B +0.52 0.1 (easily) 198 597.33 B +0.52 0.1 (. Ther) 222.9 597.33 B +0.52 0.1 (e\325s less r) 252.65 597.33 B +0.52 0.1 (edundancy which means developers should be able to) 291.45 597.33 B +0.35 0.1 (mor) 198 585.33 B +0.35 0.1 (e easily r) 216.36 585.33 B +0.35 0.1 (ead someone else\325s code. For example, the Java Language has no) 257.03 585.33 B +0.52 0.1 (user) 198 573.33 B +0.52 0.1 (-de\336ned operator overloading, as is found in C++.) 217.23 573.33 B +0.52 0.1 (The Java Language gives developers the ability to do thr) 198 553.33 B +0.52 0.1 (ee dif) 457.31 553.33 B +0.52 0.1 (fer) 482.68 553.33 B +0.52 0.1 (ent kinds of) 494.87 553.33 B +0.52 0.1 (pr) 198 541.33 B +0.52 0.1 (ogramming in one language. Like the symbolic pr) 207.98 541.33 B +0.52 0.1 (ogramming language) 439.73 541.33 B +0.05 0.1 (Smalltalk, the Java Language is object-oriented, has dynamic linking, and has a) 198 529.33 B +0.52 0.1 (class hierar) 198 517.33 B +0.52 0.1 (chy with single inheritance. For numeric pr) 249.29 517.33 B +0.52 0.1 (ogramming, the Java) 450.74 517.33 B +0.52 0.1 (Language has platform-independent data types, array bounds-checking, and) 198 505.33 B +0.52 0.1 (well-de\336ned IEEE arithmetic. These capabilities pr) 198 493.33 B +0.52 0.1 (ovide good gr) 432 493.33 B +0.52 0.1 (ounding for) 496.18 493.33 B +0.52 0.1 (writing stable numerical algorithms that give r) 198 481.33 B +0.52 0.1 (epeatable r) 411.94 481.33 B +0.52 0.1 (esults. For systems) 461.91 481.33 B +0.11 0.1 (pr) 198 469.33 B +0.11 0.1 (ogramming, expr) 207.98 469.33 B +0.11 0.1 (essions, statements, and operators in the Java Language ar) 286.24 469.33 B +0.11 0.1 (e) 550.4 469.33 B +0.52 0.1 (in most cases the same as in the C language.) 198 457.33 B +0.52 0.1 (The Java Language encourages catching bugs early) 198 437.33 B +0.52 0.1 (, during development,) 430.3 437.33 B +0.52 0.1 (befor) 198 425.33 B +0.52 0.1 (e the softwar) 221.38 425.33 B +0.52 0.1 (e is r) 280.78 425.33 B +0.52 0.1 (eleased. It does this by str) 303.13 425.33 B +0.52 0.1 (ong data typing, automatic) 425.1 425.33 B +0.52 0.1 (garbage collection, array bounds checking, lack of automatic type coer) 198 413.33 B +0.52 0.1 (cion,) 519.93 413.33 B +0.52 0.1 (and the lack of the pointer data type. These safeguar) 198 401.33 B +0.52 0.1 (ds help in the age of the) 442.15 401.33 B +0.52 0.1 (Internet, wher) 198 389.33 B +0.52 0.1 (e developers ar) 262.7 389.33 B +0.52 0.1 (e deploying softwar) 332.5 389.33 B +0.52 0.1 (e very rapidly) 423.76 389.33 B +0.52 0.1 (.) 487.28 389.33 B +0.52 0.1 (The Java Language has multithr) 198 369.33 B +0.52 0.1 (eading built in, with a str) 344.52 369.33 B +0.52 0.1 (ong model of how) 460.98 369.33 B +0.52 0.1 (thr) 198 357.33 B +0.52 0.1 (ead-critical code can be synchr) 211.15 357.33 B +0.52 0.1 (onized to avoid race or timing pr) 351.41 357.33 B +0.52 0.1 (oblems.) 503.43 357.33 B +0.32 0.1 (W) 198 345.33 B +0.32 0.1 (ith the gr) 207.55 345.33 B +0.32 0.1 (owth of multipr) 249.38 345.33 B +0.32 0.1 (ocessing and a decr) 321.91 345.33 B +0.32 0.1 (ease in pr) 410.77 345.33 B +0.32 0.1 (ocessor costs, the Java) 454.75 345.33 B +0.45 0.1 (Language is poised to enable a new generation of concurr) 198 333.33 B +0.45 0.1 (ent applications and) 462.27 333.33 B +0.1 (services.) 198 321.33 S +0.52 0.1 (Exception and thr) 198 301.33 B +0.52 0.1 (ead mechanisms ar) 279.48 301.33 B +0.52 0.1 (e integrated with the language and its) 366.81 301.33 B +0.28 0.1 (type system. In addition, the language includes dynamic linking of subclasses) 198 289.33 B +0.52 0.1 (with methods that override or add functionality at r) 198 277.33 B +0.52 0.1 (untime. In other) 436.62 277.33 B +0.52 0.1 (envir) 198 265.33 B +0.52 0.1 (onments, these featur) 221.44 265.33 B +0.52 0.1 (es have typically been ar) 319.38 265.33 B +0.52 0.1 (cane and complicated) 432.51 265.33 B +0.52 0.1 (system services. Ther) 198 253.33 B +0.52 0.1 (e is a gr) 298.2 253.33 B +0.52 0.1 (eat simplicity and advantage to having these) 334.43 253.33 B +0.52 0.1 (facilities in the language and ther) 198 241.33 B +0.52 0.1 (efor) 351.14 241.33 B +0.52 0.1 (e portable between platforms. The) 368.89 241.33 B +0.52 0.1 (language also de\336nes what binary compatibility is, by de\336ning a class) 198 229.33 B +0.52 0.1 (\050) 198 217.33 B +5 F +1.2 (.class) 201.43 217.33 P +1 F +0.52 0.1 (\051 \336le format, which includes the instr) 237.43 217.33 B +0.52 0.1 (uctions for the Java V) 407.31 217.33 B +0.52 0.1 (irtual) 506.01 217.33 B +0.52 0.1 (Machine in the form of bytecodes.) 198 205.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.13/DEST FmPD2 +[/Title(A)/Rect[45 126 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "13" 13 +%%Page: "14" 14 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (14) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 15 Q +0 X +0 0 0 1 0 0 0 K +-0.94 (A Look Inside the Java Platform) 54 638 P +54 782/G4.7205 FmPA +1 10 Q +0.52 0.1 (The Java Platform has two main parts, the Java V) 198 616.33 B +0.52 0.1 (irtual Machine and the Java) 423.64 616.33 B +0.52 0.1 (API, as shown in Figur) 198 604.33 B +0.52 0.1 (e 2.) 303.45 604.33 B +6 14 Q +0.14 (\245) 198 586.33 S +3 10 Q +0.52 0.1 (Java V) 210.6 586.33 B +0.52 0.1 (irtual Machine) 240.9 586.33 B +1 F +0.52 0.1 ( - The Java V) 310.3 586.33 B +0.52 0.1 (irtual Machine is a \322soft\323 computer that) 369.4 586.33 B +0.52 0.1 (can be implemented in softwar) 210.6 574.33 B +0.52 0.1 (e or har) 352.34 574.33 B +0.52 0.1 (dwar) 387.97 574.33 B +0.52 0.1 (e. It\325s an abstract machine) 411.59 574.33 B +0.52 0.1 (designed to be implemented on top of existing pr) 210.6 562.33 B +0.52 0.1 (ocessors. The porting) 437.21 562.33 B +0.52 0.1 (interface and adapters enable it to be easily ported to new operating) 210.6 550.33 B +0.52 0.1 (systems without being completely r) 210.6 538.33 B +0.52 0.1 (ewritten.) 373.66 538.33 B +6 14 Q +0.14 (\245) 198 520.33 S +3 10 Q +0.52 0.1 (Java API) 210.6 520.33 B +1 F +0.52 0.1 ( - The Java API forms a standar) 251.65 520.33 B +0.52 0.1 (d interface to applets and) 396.14 520.33 B +-0.03 0.1 (applications, r) 210.6 508.33 B +-0.03 0.1 (egar) 274.8 508.33 B +-0.03 0.1 (dless of the underlying operating system. The Java API is) 294.33 508.33 B +0.52 0.1 (the essential framework for application development. This API speci\336es a) 210.6 496.33 B +0.46 0.1 (set of essential interfaces in a gr) 210.6 484.33 B +0.46 0.1 (owing number of key ar) 356.49 484.33 B +0.46 0.1 (eas that developers) 467.05 484.33 B +0.52 0.1 (will use to build their Java-power) 210.6 472.33 B +0.52 0.1 (ed applications.) 364.85 472.33 B +6 14 Q +0.14 (\320) 210.6 454.33 S +3 10 Q +0.52 0.1 (The Java Base API) 223.2 454.33 B +1 F +0.52 0.1 ( pr) 310.08 454.33 B +0.52 0.1 (ovides the very basic language, utility) 323.18 454.33 B +0.52 0.1 (, I/O,) 496.18 454.33 B +-0.01 0.1 (network, GUI, and applet services; OS companies that have licensed Java) 223.2 442.33 B +0.52 0.1 (have contracted to include them in any Java Platform they deploy) 223.2 430.33 B +0.52 0.1 (.) 524.05 430.33 B +6 14 Q +0.14 (\320) 210.6 412.33 S +3 10 Q +-0.05 0.1 (The Java Standard Extension API) 223.2 412.33 B +1 F +-0.05 0.1 ( extends the capabilities of Java beyond) 377.76 412.33 B +0.52 0.1 (the Java Base API. Some of these extensions will eventually migrate to) 223.2 400.33 B +-0.06 0.1 (the Java Base API. Other nonstandar) 223.2 388.33 B +-0.06 0.1 (d extension APIs can be pr) 390.08 388.33 B +-0.06 0.1 (ovided by) 510.01 388.33 B +0.52 0.1 (the applet, application, or underlying operating system. As each new) 223.2 376.33 B +0.52 0.1 (extension API speci\336cation is published, it will be made available for) 223.2 364.33 B +0.52 0.1 (industry r) 223.2 352.33 B +0.52 0.1 (eview and feedback befor) 268.87 352.33 B +0.52 0.1 (e it is \336nalized.) 386.17 352.33 B +1 9 Q +0.47 0.09 (Figur) 198 141.5 B +0.47 0.09 (e 2. The Java Base Platform is uniform acr) 219.9 141.5 B +0.47 0.09 (oss all operating systems.) 395.48 141.5 B +54 135 558 648 C +54.28 153.5 557.72 337 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54.28 153.5 557.72 337 R +7 X +0 0 0 1 0 0 0 K +V +199.23 297.17 532.22 315.17 R +0 X +V +0.5 H +0 Z +N +289.18 179.5 352.18 197.5 R +7 X +V +0 X +N +7 10 Q +(Hardw) 298.9 185.57 T +(are) 327.64 185.57 T +379.18 179.5 442.18 197.5 R +7 X +V +0 X +N +(Hardw) 388.9 185.57 T +(are) 417.64 185.57 T +469.18 179.5 532.18 197.5 R +7 X +V +0 X +N +(Hardw) 478.9 185.57 T +(are) 507.64 185.57 T +198.78 179.5 261.78 197.5 R +7 X +V +0 X +N +(Hardw) 208.49 185.57 T +(are) 237.24 185.57 T +199.18 211.67 262.18 229.67 R +7 X +V +0 X +N +(Bro) 215.04 217.31 T +(wser) 230.45 217.31 T +199.18 229.67 262.18 243.17 R +5 X +V +0 X +N +8 F +(Adapter) 215.04 233.26 T +289.18 197.5 352.18 229.67 R +7 X +V +0 X +N +7 F +(OS) 313.59 210.55 T +289.18 229.67 352.18 243.17 R +5 X +V +0 X +N +8 F +(Adapter) 305.04 233.26 T +379.18 197.5 442.18 216.17 R +7 X +V +0 X +N +7 F +(OS) 403.59 204 T +379.18 216.17 442.18 243.17 R +5 X +V +0 X +N +8 F +(Adapter) 395.04 225.91 T +469.18 197.5 532.18 243.17 R +7 X +V +0 X +N +7 F +(J) 484.69 218.01 T +(a) 489.49 218.01 T +(v) 494.85 218.01 T +(aOS) 499.6 218.01 T +199.18 243.17 532.18 297.17 R +V +N +291.7 258.04 445.06 277.48 R +V +0 0 0 0 1 1 1 K +9 12 Q +7 X +0 0 0 0 1 1 1 K +(Ja) 319.81 269.48 T +(v) 330.62 269.48 T +(a Vir) 335.91 269.48 T +(tual Mac) 357.44 269.48 T +(hine) 396.73 269.48 T +0 0 0 1 0 0 0 K +199.18 314.5 532.18 332.5 R +0 0 0 1 0 0 0 K +V +0 X +N +(The) 151.01 293.98 T +(Ja) 149.08 282.9 T +(v) 159.89 282.9 T +(a) 165.18 282.9 T +(Platf) 139.03 258.53 T +(orm) 160.18 258.53 T +7 X +90 180 4 28.81 194.03 283.94 G +2 Z +0 X +90 180 4 28.81 194.03 283.94 A +7 X +270 360 2 4.12 188.03 283.5 G +0 X +270 360 2 4.12 188.03 283.5 A +7 X +180 270 4 28.81 194.03 274.31 G +0 X +180 270 4 28.81 194.03 274.31 A +7 X +0 90 2 4.8 188.03 274.32 G +0 X +0 90 2 4.8 188.03 274.32 A +0 0 0 0 1 1 1 K +9 9 Q +7 X +0 0 0 0 1 1 1 K +(P) 336.64 248.8 T +(or) 341.28 248.8 T +(ting Interface) 348.8 248.8 T +0 0 0 1 0 0 0 K +0 0 0 0 1 1 1 K +198.82 259.39 535.78 259.39 2 L +N +0 0 0 1 0 0 0 K +7 8 Q +0 X +0 0 0 1 0 0 0 K +(J) 470.34 159.83 T +(a) 474.18 159.83 T +(v) 478.47 159.83 T +(a on J) 482.27 159.83 T +(a) 503.9 159.83 T +(v) 508.19 159.83 T +(aOS) 511.99 159.83 T +(J) 373.57 159.83 T +(a) 377.41 159.83 T +(v) 381.7 159.83 T +(a on a smaller OS) 385.5 159.83 T +(J) 196.4 159.83 T +(a) 200.24 159.83 T +(v) 204.53 159.83 T +(a on a Bro) 208.33 159.83 T +(wser) 245.12 159.83 T +(J) 280.77 159.83 T +(a) 284.61 159.83 T +(v) 288.89 159.83 T +(a on a desktop OS) 292.69 159.83 T +0 0 0 0 1 1 1 K +9 12 Q +7 X +0 0 0 0 1 1 1 K +(Ja) 232.4 289.07 T +(v) 243.21 289.07 T +(a Base Classes) 248.5 289.07 T +0 0 0 1 0 0 0 K +0 0 0 0 1 1 1 K +9 9 Q +(Ja) 252.42 306.04 T +(v) 260.53 306.04 T +(a Base API) 264.5 306.04 T +0 0 0 1 0 0 0 K +346.78 283.25 532.28 314.5 R +5 X +0 0 0 1 0 0 0 K +V +0 Z +0 X +N +9 12 Q +(Ja) 357.17 289.28 T +(v) 367.98 289.28 T +(a Standar) 373.28 289.28 T +(d Extension Classes) 417.94 289.28 T +0 0 0 0 1 1 1 K +J +198.07 303.39 346.78 303.39 2 L +J +198.07 303.39 198.82 303.39 2 L +2 Z +7 X +0 0 0 0 1 1 1 K +N +[1.487 4.461] 1.487 I +198.82 303.39 346.03 303.39 2 L +N +J +346.03 303.39 346.78 303.39 2 L +N +J +197.56 283.28 531.75 283.28 2 L +N +0 0 0 1 0 0 0 K +9 9 Q +0 X +0 0 0 1 0 0 0 K +(Ja) 392.18 306.54 T +(v) 400.29 306.54 T +(a Standar) 404.26 306.54 T +(d Extension API) 439.81 306.54 T +J +346.78 303.14 531.75 303.14 2 L +J +346.78 303.14 347.53 303.14 2 L +N +[1.492 4.475] 1.492 I +347.53 303.14 531 303.14 2 L +N +J +531 303.14 531.75 303.14 2 L +N +J +9 12 Q +(Base) 148.03 270.56 T +8 10 Q +(Applets and Applications) 316.5 320 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +7 9 Q +0.09 (\050in b) 141.21 247 S +0.09 (lac) 158.98 247 S +0.09 (k\051) 170.58 247 S +180.28 170.5 477.28 170.5 2 L +N +477.28 170.5 477.28 179.5 2 L +N +387.28 170.5 387.28 179.5 2 L +N +297.28 170.5 297.28 179.5 2 L +N +207.28 170.5 207.28 179.5 2 L +N +7 8 Q +0.08 (Netw) 144.03 169.25 S +0.08 (or) 162.49 169.25 S +0.08 (k) 169.89 169.25 S +199.18 197.5 262.18 211.67 R +7 X +V +0 Z +0 X +N +7 10 Q +(OS) 223.59 201.82 T +54 135 558 648 C +0 72 612 720 C +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.14/DEST FmPD2 +[/Title(A)/Rect[45 126 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "14" 14 +%%Page: "15" 15 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (15) 548.82 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (In this \336gur) 198 641.33 B +0.52 0.1 (e, the Java Base Platform is the part shown in black, including the) 252.07 641.33 B +-0.04 0.1 (blocks labeled Adapter) 198 629.33 B +-0.04 0.1 (. The Java API includes both the Java Base API and Java) 301.46 629.33 B +0.52 0.1 (Standar) 198 617.33 B +0.52 0.1 (d Extension API. The classes ar) 232.91 617.33 B +0.52 0.1 (e the implementation of that API. The) 375.85 617.33 B +0.52 0.1 (Java V) 198 605.33 B +0.52 0.1 (irtual Machine is at the cor) 227.27 605.33 B +0.52 0.1 (e of the platform. The Porting Interface lies) 350.42 605.33 B +0.52 0.1 (between the Java V) 198 593.33 B +0.52 0.1 (irtual Machine and the operating system \050OS\051 or br) 285.7 593.33 B +0.52 0.1 (owser) 520.12 593.33 B +0.52 0.1 (.) 546.66 593.33 B +0.4 0.1 (This Porting Interface has a platform independent part \050shown in black\051 and a) 198 581.33 B +0.18 0.1 (platform-dependent part, shown as Adapters. The OS and JavaOS pr) 198 569.33 B +0.18 0.1 (ovide the) 512.84 569.33 B +0.52 0.1 (window) 198 557.33 B +0.52 0.1 (, \336ling and network functionality) 234.66 557.33 B +0.52 0.1 (. Dif) 385.5 557.33 B +0.52 0.1 (fer) 408.44 557.33 B +0.52 0.1 (ent machines can be) 420.63 557.33 B +0.52 0.1 (connected by a network, as shown.) 198 545.33 B +0.52 0.1 (The Java API framework is open and extensible. Speci\336cations for each) 198 525.33 B +0.52 0.1 (interface ar) 198 513.33 B +0.52 0.1 (e being developed by industry-wide specialists in each ar) 249.28 513.33 B +0.52 0.1 (ea.) 512.11 513.33 B +0.52 0.1 (Forthcoming speci\336cations will be published and open to industry r) 198 501.33 B +0.52 0.1 (eview) 509.54 501.33 B +0.52 0.1 (.) 535.59 501.33 B +0.52 0.1 (Implementations of the API speci\336cations will be available fr) 198 489.33 B +0.52 0.1 (om JavaSoft and) 477.17 489.33 B +0.52 0.1 (others thr) 198 477.33 B +0.52 0.1 (oughout the industry) 242.39 477.33 B +0.52 0.1 (. In today's envir) 338.69 477.33 B +0.52 0.1 (onment of rapid innovation,) 419.01 477.33 B +0.52 0.1 (the Java API framework allows that innovation to easily exist as extensions to) 198 465.33 B +0.52 0.1 (the Java Platform.) 198 453.33 B +0.52 0.1 (The API is or) 198 433.33 B +0.52 0.1 (ganized by gr) 258.67 433.33 B +0.52 0.1 (oups, or sets. Each of the API sets can be) 321.62 433.33 B +0.52 0.1 (implemented as one or mor) 198 421.33 B +0.52 0.1 (e packages \050namespaces\051. Each package gr) 324.41 421.33 B +0.52 0.1 (oups) 521.4 421.33 B +0.52 0.1 (together a set of classes and interfaces that de\336ne a set of r) 198 409.33 B +0.52 0.1 (elated \336elds,) 467.48 409.33 B +0.52 0.1 (constr) 198 397.33 B +0.52 0.1 (uctors, and methods.) 225.69 397.33 B +0 14 Q +0.7 (Java V) 160.49 364.67 P +0.7 (irtual Machine) 197.85 364.67 P +54 509/G4.6978 FmPA +1 10 Q +0.52 0.1 (The Java V) 198 343.33 B +0.52 0.1 (irtual Machine is key to the independence of the underlying) 247.43 343.33 B +0.52 0.1 (operating system and har) 198 331.33 B +0.52 0.1 (dwar) 314.66 331.33 B +0.52 0.1 (e\321it is a platform that hides the underlying) 338.28 331.33 B +0.52 0.1 (operating system fr) 198 319.33 B +0.52 0.1 (om Java-power) 286.72 319.33 B +0.52 0.1 (ed applets and applications. And it\325s very) 356.01 319.33 B +0.52 0.1 (easy to port the V) 198 307.33 B +0.52 0.1 (irtual Machine to a br) 279.41 307.33 B +0.52 0.1 (owser or another operating system.) 379.01 307.33 B +0.52 0.1 (In addition, the V) 198 287.33 B +0.52 0.1 (irtual Machine de\336nes a machine-independent format for) 278.67 287.33 B +0.52 0.1 (binary \336les called the class \050) 198 275.33 B +5 F +1.2 (.class) 327.05 275.33 P +1 F +0.52 0.1 (\051 \336le format. This format includes) 363.05 275.33 B +0.52 0.1 (instr) 198 263.33 B +0.52 0.1 (uctions for a virtual computer in the form of bytecodes. The bytecode) 218.6 263.33 B +0.52 0.1 (r) 198 251.33 B +0.52 0.1 (epr) 201.87 251.33 B +0.52 0.1 (esentation of any Java Language pr) 216.74 251.33 B +0.52 0.1 (ogram is symbolic in the sense that) 378.39 251.33 B +0.52 0.1 (of) 198 239.33 B +0.52 0.1 (fsets and indexes into methods ar) 206.81 239.33 B +0.52 0.1 (e not constants, but ar) 360.55 239.33 B +0.52 0.1 (e, instead, given) 461.89 239.33 B +0.52 0.1 (symbolically as string names. The \336rst time a method is called, it is sear) 198 227.33 B +0.52 0.1 (ched) 530.42 227.33 B +0.52 0.1 (by name in the class \336le format, and its of) 198 215.33 B +0.52 0.1 (fset numeric value is determined at) 390.47 215.33 B +0.52 0.1 (that time for quicker access at subsequent lookups. Ther) 198 203.33 B +0.52 0.1 (efor) 455.33 203.33 B +0.52 0.1 (e, any new or) 473.08 203.33 B +0.52 0.1 (overriding method can be intr) 198 191.33 B +0.52 0.1 (oduced late at r) 335.7 191.33 B +0.52 0.1 (untime anywher) 407.39 191.33 B +0.52 0.1 (e in the class) 482.55 191.33 B +-0.09 0.1 (str) 198 179.33 B +-0.09 0.1 (uctur) 209.67 179.33 B +-0.09 0.1 (e, and it will be r) 233.7 179.33 B +-0.09 0.1 (eferr) 309.2 179.33 B +-0.09 0.1 (ed to symbolically) 330.33 179.33 B +-0.09 0.1 (, and pr) 411.73 179.33 B +-0.09 0.1 (operly accessed without) 446.56 179.33 B +0.52 0.1 (br) 198 167.33 B +0.52 0.1 (eaking the code.) 207.5 167.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.15/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "15" 15 +%%Page: "16" 16 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (16) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (The bytecodes ar) 198 641.33 B +0.52 0.1 (e a high-level r) 275.33 641.33 B +0.52 0.1 (epr) 344.04 641.33 B +0.52 0.1 (esentation of the pr) 358.91 641.33 B +0.52 0.1 (ogram so that) 447.76 641.33 B +0.37 0.1 (optimization and machine code generation \050via a just-in-time compiler\051 can be) 198 629.33 B +0.52 0.1 (performed at that level. In addition, garbage collection can occur inside the) 198 617.33 B +0.38 0.1 (V) 198 605.33 B +0.38 0.1 (irtual Machine, since it holds variables in stacks in the Java Platform addr) 204.77 605.33 B +0.38 0.1 (ess) 541.45 605.33 B +0.1 (space.) 198 593.33 S +0 14 Q +0.7 (Java Base API) 160.49 560.67 P +54 705/G4.7755 FmPA +1 10 Q +0.52 0.1 (By tar) 198 539.33 B +0.52 0.1 (geting the APIs in the Java Platform, developers ar) 225.32 539.33 B +0.52 0.1 (e assur) 458.11 539.33 B +0.52 0.1 (ed that their) 489.9 539.33 B +0.52 0.1 (applications will r) 198 527.33 B +0.52 0.1 (un everywher) 280.85 527.33 B +0.52 0.1 (e. \050See \322The Embedded Java Platform\323 on) 344.38 527.33 B +0.52 0.1 (page) 198 515.33 B +0.52 0.1 (7 for the single possible exception\321dedicated, constrained, embedded) 222.36 515.33 B +0.52 0.1 (systems, such as set-top boxes, printers, copiers, and cellular phones.\051) 198 503.33 B +0.33 0.1 (Curr) 198 483.33 B +0.33 0.1 (ently) 219.24 483.33 B +0.33 0.1 (, the Java Base API is de\336ned to be the Java Applet API, described in) 240.97 483.33 B +0.52 0.1 (the next section. Over time, as the platform develops, this base will gr) 198 471.33 B +0.52 0.1 (ow) 521.92 471.33 B +0.52 0.1 (, as) 535.01 471.33 B +0.51 0.1 (some of the Standar) 198 459.33 B +0.51 0.1 (d Extension API migrate into the Java Base API. The Java) 289.11 459.33 B +0.52 0.1 (Base API is also known as the Java Cor) 198 447.33 B +0.52 0.1 (e API.) 377.46 447.33 B +0 13 Q +-0.85 0.13 (Java Applet API) 198 415.33 B +54 559/G4.6768 FmPA +1 10 Q +0.52 0.1 (The Java Applet API, also known as the Java Base API, de\336nes the basic) 198 394.33 B +0.52 0.1 (building blocks for cr) 198 382.33 B +0.52 0.1 (eating fully functional Java-power) 296.13 382.33 B +0.52 0.1 (ed applets and) 452.33 382.33 B +0.52 0.1 (applications. It includes all the classes in the) 198 370.33 B +5 F +1.2 (java) 407.68 370.33 P +1 F +0.52 0.1 ( package:) 431.68 370.33 B +5 F +1.2 (java.lang) 477.58 370.33 P +1 F +0.52 0.1 (,) 531.58 370.33 B +5 F +1.2 (java.util) 198 358.33 P +1 F +0.52 0.1 (,) 252 358.33 B +5 F +1.2 (java.io) 257.72 358.33 P +1 F +0.52 0.1 (,) 299.72 358.33 B +5 F +1.2 (java.net) 305.44 358.33 P +1 F +0.52 0.1 (,) 353.44 358.33 B +5 F +1.2 (java.awt) 359.16 358.33 P +1 F +0.52 0.1 (, and) 407.16 358.33 B +5 F +1.2 (java.applet) 433.23 358.33 P +1 F +0.52 0.1 (. \050Notice) 499.23 358.33 B +0.5 0.1 (that the Java Applet API is the full set of APIs available in version 1.0.2 of the) 198 346.33 B +0.52 0.1 (Java Development Kit fr) 198 334.33 B +0.52 0.1 (om JavaSoft.\051) 308.92 334.33 B +0 14 Q +0.7 (Java Standard Extension API) 160.49 301.67 P +54 446/G4.6770 FmPA +1 10 Q +0.52 0.1 (This section describes the Java Standar) 198 280.33 B +0.52 0.1 (d Extension API. These extensions ar) 375.08 280.33 B +0.52 0.1 (e) 547.29 280.33 B +0.52 0.1 (\322standar) 198 268.33 B +0.52 0.1 (d\323 in that they form a published, uniform, open API that anyone can) 237 268.33 B +0.52 0.1 (implement. Once de\336ned, they can be added to, but, to maintain backwar) 198 256.33 B +0.52 0.1 (d) 538.65 256.33 B +0.52 0.1 (compatibility) 198 244.33 B +0.52 0.1 (, not changed in a way that calls to them would fail. Over time,) 257.18 244.33 B +0.52 0.1 (new extensions will be added. In addition, some of these extensions will) 198 232.33 B +0.52 0.1 (migrate into the Java Base API.) 198 220.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.16/DEST FmPD2 +[/Rect[377 523 558 534]/Border[0 0 0]/Page 7/View[/XYZ null 160 372 FmDC exch pop null]/LNK FmPD +[/Rect[54 511 227 523]/Border[0 0 0]/Page 7/View[/XYZ null 160 372 FmDC exch pop null]/LNK FmPD +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "16" 16 +%%Page: "17" 17 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (17) 548.82 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (The curr) 198 641.33 B +0.52 0.1 (ent plan for this migration is shown in the following table:) 236.75 641.33 B +0.3 0.1 (An implementation should do whatever is appr) 198 457.93 B +0.3 0.1 (opriate for the platform it r) 415.05 457.93 B +0.3 0.1 (uns) 538.71 457.93 B +0.52 0.1 (on, within its har) 198 445.93 B +0.52 0.1 (dwar) 276.7 445.93 B +0.52 0.1 (e constraints. For example, desktop operating systems) 300.32 445.93 B +0.52 0.1 (that have access to a speaker will pr) 198 433.93 B +0.52 0.1 (oduce audio; however) 363.5 433.93 B +0.52 0.1 (, a mainframe or) 467.56 433.93 B +0.52 0.1 (network operating system that has no speaker is permitted to do the) 198 421.93 B +0.52 0.1 (equivalent of a no-op or some other well-de\336ned behavior) 198 409.93 B +0.52 0.1 (, such as thr) 464.72 409.93 B +0.52 0.1 (ow an) 520.2 409.93 B +0.1 (exception.) 198 397.93 S +0 13 Q +-0.85 0.13 (Java Security API) 198 365.93 B +54 510/G4.8471 FmPA +1 10 Q +0.52 0.1 (The Java Security API is a framework for developers to easily and secur) 198 344.93 B +0.52 0.1 (ely) 527.57 344.93 B +0.52 0.1 (include security functionality in their applets and applications. This) 198 332.93 B +0.52 0.1 (functionality includes cryptography) 198 320.93 B +0.52 0.1 (, with digital signatur) 360.97 320.93 B +0.52 0.1 (es, encryption and) 460.41 320.93 B +0.1 (authentication.) 198 308.93 S +-0.06 0.1 (Java Security includes an abstract layer that applications can call. That layer) 198 288.93 B +-0.06 0.1 (, in) 541.39 288.93 B +0.52 0.1 (turn, makes calls to Java Security packages that implement the actual) 198 276.93 B +0.52 0.1 (cryptography) 198 264.93 B +0.52 0.1 (. This allows thir) 258.67 264.93 B +0.52 0.1 (d-party developers specializing in pr) 335.75 264.93 B +0.52 0.1 (oviding) 504.46 264.93 B +0.52 0.1 (cryptographic functionality to write packages for Java Security) 198 252.93 B +0.52 0.1 (. Java Security) 483.89 252.93 B +0.52 0.1 (also includes system support for key management, including a secur) 198 240.93 B +0.52 0.1 (e) 512.15 240.93 B +0.52 0.1 (database, certi\336cate facilities, and so on.) 198 228.93 B +0.52 0.1 (This ar) 198 208.93 B +0.52 0.1 (chitectur) 229.59 208.93 B +0.52 0.1 (e pr) 269.21 208.93 B +0.52 0.1 (ovides for r) 287.2 208.93 B +0.52 0.1 (eplaceable, upgradable security) 340.11 208.93 B +0.52 0.1 (. Whenever a) 482.88 208.93 B +0.33 0.1 (str) 198 196.93 B +0.33 0.1 (onger algorithm or a faster implementation becomes available, modules can) 209.57 196.93 B +0.52 0.1 (be r) 198 184.93 B +0.52 0.1 (eplaced in the platform, in a manner completely transpar) 215.51 184.93 B +0.52 0.1 (ent to) 477.12 184.93 B +0.1 (applications.) 198 172.93 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 9 Q +0.47 0.09 (Migrate to) 204 614 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Base API) 204 602.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Remain as) 366 614 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Standard Extension) 366 602.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +0.47 0.09 (Java 2D) 204 585.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java 3D) 366 585.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.09 (Audio) 204 568.6 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (V) 366 568.6 B +0.47 0.09 (ideo, MIDI) 372.09 568.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Media Framework) 204 551.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Shar) 366 551.6 B +0.47 0.09 (e) 404.46 551.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Animation) 204 534.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java T) 366 534.6 B +0.47 0.09 (elephony) 391.03 534.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Enterprise) 204 517.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Server) 366 517.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Commer) 204 500.6 B +0.47 0.09 (ce) 259.68 500.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Management) 366 500.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.47 0.09 (Java Security) 204 483.6 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +198 625.85 198 478.75 2 L +3 X +V +0 Z +N +360 626.15 360 478.45 2 L +V +N +558 625.85 558 478.75 2 L +V +N +197.85 626 558.15 626 2 L +V +N +197.85 597.6 558.15 597.6 2 L +V +N +197.85 580.6 558.15 580.6 2 L +V +N +197.85 563.6 558.15 563.6 2 L +V +N +197.85 546.6 558.15 546.6 2 L +V +N +197.85 529.6 558.15 529.6 2 L +V +N +197.85 512.6 558.15 512.6 2 L +V +N +197.85 495.6 558.15 495.6 2 L +V +N +197.85 478.6 558.15 478.6 2 L +V +N +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.17/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "17" 17 +%%Page: "18" 18 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (18) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 13 Q +0 X +0 0 0 1 0 0 0 K +-0.85 0.13 (Java Media API) 198 639.33 B +54 783/G4.8497 FmPA +1 10 Q +0.52 0.1 (The Java Media API de\336nes the multimedia classes that support a wide range) 198 618.33 B +0.52 0.1 (of rich, interactive media on and of) 198 606.33 B +0.52 0.1 (f the W) 359.37 606.33 B +0.52 0.1 (eb, including audio, video, 2D, 3D,) 392.39 606.33 B +0.52 0.1 (animation, telephony) 198 594.33 B +0.52 0.1 (, and collaboration. An extensible Media Framework) 293.84 594.33 B +0.52 0.1 (pr) 198 582.33 B +0.52 0.1 (ovides for common contr) 207.98 582.33 B +0.52 0.1 (ol and synchr) 322.83 582.33 B +0.52 0.1 (onization of all time-based media) 385.12 582.33 B +0.52 0.1 (\050audio, video, animation, video teleconfer) 198 570.33 B +0.52 0.1 (encing\051 as well as for \336lters and) 388.83 570.33 B +0.1 (pr) 198 558.33 S +0.1 (ocessors.) 207.98 558.33 S +0.52 0.1 (The Java Media API is composed of several distinct components, each) 198 538.33 B +0.52 0.1 (associated with either a speci\336c type of media \050audio, video, 2D, 3D\051, or a) 198 526.33 B +-0.19 0.1 (media-r) 198 514.33 B +-0.19 0.1 (elated activity \050animation, collaboration, telephony\051. Collectively) 233.44 514.33 B +-0.19 0.1 (, these) 527.19 514.33 B +0.52 0.1 (interfaces pr) 198 502.33 B +0.52 0.1 (ovide Java Language pr) 254.63 502.33 B +0.52 0.1 (ogrammers with the ability to handle a) 363.44 502.33 B +0.52 0.1 (wide variety of dif) 198 490.33 B +0.52 0.1 (fer) 283.19 490.33 B +0.52 0.1 (ent media types within their applications and applets.) 295.38 490.33 B +0.38 0.1 (The Java Media API is highly extensible. The API accommodates today\325s lar) 198 470.33 B +0.38 0.1 (ge) 544.47 470.33 B +-0.1 0.1 (and ever) 198 458.33 B +-0.1 0.1 (-changing suite of media transports, containers, and encoding formats,) 237.13 458.33 B +0.52 0.1 (and allows the addition of new media-r) 198 446.33 B +0.52 0.1 (elated functionality as they become) 379.64 446.33 B +0.52 0.1 (available.) 198 434.33 B +0.52 0.1 (JavaSoft has been working with a gr) 198 414.33 B +0.52 0.1 (oup of industry-leading companies to) 364.15 414.33 B +0.52 0.1 (establish the standar) 198 402.33 B +0.52 0.1 (ds for Java Media: Adobe) 291.91 402.33 B +1 6.4 Q +0.33 0.06 (\250) 412.02 405.53 B +1 10 Q +0.52 0.1 (, Apple, Intel, Macr) 416.86 402.33 B +0.52 0.1 (omedia,) 505.74 402.33 B +0.52 0.1 (Netscape, SGI, and Sun Micr) 198 390.33 B +0.52 0.1 (osystems.) 329.48 390.33 B +0.52 0.1 (The components of the Java Media APIs ar) 198 370.33 B +0.52 0.1 (e as follows.) 394.12 370.33 B +6 14 Q +0.14 (\245) 198 352.33 S +3 10 Q +0.52 0.1 (Java 2D API) 210.6 352.33 B +1 F +0.52 0.1 ( - Pr) 268.3 352.33 B +0.52 0.1 (ovides graphics and imaging capabilities beyond those) 287.98 352.33 B +0.31 0.1 (available with the Java Applet API. The 2D API allows the cr) 210.6 340.33 B +0.31 0.1 (eation of high-) 491.4 340.33 B +0.52 0.1 (quality) 210.6 328.33 B +0.52 0.1 (, platform-independent graphics including line art, text, and images) 241.46 328.33 B +0.52 0.1 (in a single model that uniformly addr) 210.6 316.33 B +0.52 0.1 (esses color) 383.61 316.33 B +0.52 0.1 (, spatial transforms and) 431.51 316.33 B +0.52 0.1 (compositing. It also pr) 210.6 304.33 B +0.52 0.1 (ovides an extension mechanism to support a wide) 316.5 304.33 B +-0.1 0.1 (array of dif) 210.6 292.33 B +-0.1 0.1 (fer) 261.02 292.33 B +-0.1 0.1 (ent pr) 273.21 292.33 B +-0.1 0.1 (esentation devices \050such as displays and printers\051, image) 299.86 292.33 B +0.52 0.1 (formats, image encodings, color spaces, and compositors.) 210.6 280.33 B +6 14 Q +0.14 (\245) 198 262.33 S +3 10 Q +0.52 0.1 (Java Media Framework API) 210.6 262.33 B +1 F +0.52 0.1 ( - Handles traditional time-critical media, such) 340.96 262.33 B +0.52 0.1 (as audio, video and MIDI. The framework pr) 210.6 250.33 B +0.52 0.1 (ovides a common model for) 420.33 250.33 B +0.52 0.1 (timing, synchr) 210.6 238.33 B +0.52 0.1 (onization, and composition, which can be applied to media) 276.46 238.33 B +0.52 0.1 (components to allow them to inter) 210.6 226.33 B +0.52 0.1 (operate. It is designed to handle) 368.44 226.33 B +0.52 0.1 (str) 210.6 214.33 B +0.52 0.1 (eaming data, live or stor) 222.17 214.33 B +0.52 0.1 (ed, compr) 333.93 214.33 B +0.52 0.1 (essed or raw) 379.76 214.33 B +0.52 0.1 (, as well as fr) 436.95 214.33 B +0.52 0.1 (om sampled) 497.56 214.33 B +0.52 0.1 (audio and video str) 210.6 202.33 B +0.52 0.1 (eams.) 300.19 202.33 B +6 14 Q +0.14 (\320) 210.6 184.33 S +3 10 Q +0.42 0.1 (V) 223.2 184.33 B +0.42 0.1 (ideo API) 230.53 184.33 B +1 F +0.42 0.1 ( - Accommodates both str) 272.03 184.33 B +0.42 0.1 (eaming and stor) 389.4 184.33 B +0.42 0.1 (ed video sour) 463.3 184.33 B +0.42 0.1 (ces. It) 525.75 184.33 B +0.52 0.1 (de\336nes basic data formats and contr) 223.2 172.33 B +0.52 0.1 (ol interfaces.) 388.84 172.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.18/DEST FmPD2 +272 455/I4.1.8796 FmPA +408 377/I4.1.8805 FmPA +453 323/I4.1.8814 FmPA +[/Title(A)/Rect[45 126 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "18" 18 +%%Page: "19" 19 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (19) 548.82 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +6 14 Q +0 X +0 0 0 1 0 0 0 K +0.14 (\320) 210.6 641.33 S +3 10 Q +0.52 0.1 (Audio API) 223.2 641.33 B +1 F +0.52 0.1 ( - Supports sampled and synthesized audio. It includes a) 273.79 641.33 B +0.05 0.1 (speci\336cation for 3D spatial audio, and accommodates both str) 223.2 629.33 B +0.05 0.1 (eaming and) 501.86 629.33 B +0.52 0.1 (stor) 223.2 617.33 B +0.52 0.1 (ed audio sour) 240.33 617.33 B +0.52 0.1 (ces.) 303.58 617.33 B +6 14 Q +0.14 (\320) 210.6 599.33 S +3 10 Q +0.23 0.1 (MIDI API) 223.2 599.33 B +1 F +0.23 0.1 (- Pr) 273.45 599.33 B +0.23 0.1 (ovides support for timed-event str) 289.72 599.33 B +0.23 0.1 (eams. It uses the Media) 445.7 599.33 B +0.52 0.1 (Framework for synchr) 223.2 587.33 B +0.52 0.1 (onization with other activities, and for an) 325.07 587.33 B +0.52 0.1 (extensibility mechanism for new synthesizers and ef) 223.2 575.33 B +0.52 0.1 (fects.) 462.33 575.33 B +6 14 Q +0.14 (\245) 198 557.33 S +3 10 Q +0.52 0.1 (Java Animation API) 210.6 557.33 B +1 F +0.52 0.1 ( - Supports traditional 2D animation of sprites, with) 305.11 557.33 B +0.52 0.1 (stacking or) 210.6 545.33 B +0.52 0.1 (der contr) 260.74 545.33 B +0.52 0.1 (ol. It makes use of 2D interfaces for compositing and) 302.26 545.33 B +0.52 0.1 (the Media Framework for synchr) 210.6 533.33 B +0.52 0.1 (onization, composition, and timing.) 361.65 533.33 B +6 14 Q +0.14 (\245) 198 515.33 S +3 10 Q +0.52 0.1 (Java Share API) 210.6 515.33 B +1 F +0.52 0.1 ( - Pr) 281.38 515.33 B +0.52 0.1 (ovides the basic abstraction for live, two-way) 301.06 515.33 B +0.52 0.1 (, multi-) 507.48 515.33 B +0.52 0.1 (party communication between objects over a variety of networks and) 210.6 503.33 B +0.52 0.1 (transport pr) 210.6 491.33 B +0.52 0.1 (otocols. The API enables synchr) 265.55 491.33 B +0.52 0.1 (onization and session) 414.24 491.33 B +0.52 0.1 (management, and allows sharing of both \322collaboration-awar) 210.6 479.33 B +0.52 0.1 (e\323 and) 491.22 479.33 B +0.52 0.1 (\322collaboration-unawar) 210.6 467.33 B +0.52 0.1 (e\323 applets.) 313.1 467.33 B +6 14 Q +0.14 (\245) 198 449.33 S +3 10 Q +0.44 0.1 (Java T) 210.6 449.33 B +0.44 0.1 (elephony API) 239.15 449.33 B +1 F +0.44 0.1 ( - Uni\336es computer/telephony integration. It pr) 303.86 449.33 B +0.44 0.1 (ovides) 525.09 449.33 B +0.52 0.1 (basic functionality for contr) 210.6 437.33 B +0.52 0.1 (ol of phone calls: 1st-party call contr) 336.88 437.33 B +0.52 0.1 (ol \050simple) 506.7 437.33 B +0.52 0.1 (desktop phone\051, 3r) 210.6 425.33 B +0.52 0.1 (d-party call contr) 296.37 425.33 B +0.52 0.1 (ol \050phone call distribution center\051,) 375.44 425.33 B +0.52 0.1 (teleconfer) 210.6 413.33 B +0.52 0.1 (encing, call transfer) 254.96 413.33 B +0.52 0.1 (, caller ID, and DTMF decode/encode.) 343.8 413.33 B +6 14 Q +0.14 (\245) 198 395.33 S +3 10 Q +-0.03 0.1 (Java 3D API) 210.6 395.33 B +1 F +-0.03 0.1 ( - Pr) 267.21 395.33 B +-0.03 0.1 (ovides high-performance, interactive, 3D graphics support.) 285.8 395.33 B +-0.07 0.1 (It supports VRML, and has a high-level speci\336cation of behavior and contr) 210.6 383.33 B +-0.07 0.1 (ol) 546.8 383.33 B +0.52 0.1 (of 3D objects. The 3D API simpli\336es 3D application pr) 210.6 371.33 B +0.52 0.1 (ogramming and) 462.1 371.33 B +0.52 0.1 (pr) 210.6 359.33 B +0.52 0.1 (ovides access to lower level interfaces for performance. The 3D API is) 220.58 359.33 B +0.52 0.1 (closely integrated with Audio, V) 210.6 347.33 B +0.52 0.1 (ideo, MIDI, and Animation ar) 359.43 347.33 B +0.52 0.1 (eas.) 496.01 347.33 B +0 13 Q +-0.85 0.13 (Java Enterprise API) 198 315.33 B +54 459/G4.3695 FmPA +1 10 Q +0.52 0.1 (The Enterprise classes connect Java-power) 198 294.33 B +0.52 0.1 (ed applications to enterprise) 391.32 294.33 B +0.52 0.1 (information r) 198 282.33 B +0.52 0.1 (esour) 258.84 282.33 B +0.52 0.1 (ces. Ther) 283.63 282.33 B +0.52 0.1 (e ar) 327.15 282.33 B +0.52 0.1 (e curr) 344.13 282.33 B +0.52 0.1 (ently thr) 370.73 282.33 B +0.52 0.1 (ee gr) 409.84 282.33 B +0.52 0.1 (oups for connectivity:) 432.27 282.33 B +0.52 0.1 (JDBC) 198 270.33 B +3 6.4 Q +0.33 0.06 (\252) 222.67 273.53 B +1 10 Q +0.52 0.1 ( \050Java Database Connectivity\051, Interface De\336nition Language, and) 229.12 270.33 B +0.52 0.1 (Remote Method Invocation.) 198 258.33 B +6 14 Q +0.14 (\245) 198 240.33 S +3 10 Q +0.52 0.1 (JDBC) 210.6 240.33 B +3 6.4 Q +0.33 0.06 (\252) 237.11 243.53 B +1 10 Q +0.52 0.1 ( \050Java Database Connectivity\051 is a standar) 243.56 240.33 B +0.52 0.1 (d SQL database access) 434.4 240.33 B +0.52 0.1 (interface. It pr) 210.6 228.33 B +0.52 0.1 (ovides Java pr) 275.44 228.33 B +0.52 0.1 (ogrammers with a uniform interface to a wide) 340.8 228.33 B +0.52 0.1 (range of r) 210.6 216.33 B +0.52 0.1 (elational databases, and also pr) 255.32 216.33 B +0.52 0.1 (ovides a common base on which) 398.65 216.33 B +0.52 0.1 (higher level tools and interfaces can be built. Partners such as Intersolv) 210.6 204.33 B +0.52 0.1 (,) 535.78 204.33 B +0.52 0.1 (V) 210.6 192.33 B +0.52 0.1 (isigenic, and a dozen other database-connectivity vendors ar) 217.37 192.33 B +0.52 0.1 (e pr) 494.35 192.33 B +0.52 0.1 (oviding) 512.34 192.33 B +0.52 0.1 (JDBC drivers in the next few months for dozens of DBMSs, including) 210.6 180.33 B +0.52 0.1 (Oracle, Sybase, and Informix. These database companies, and leading tool) 210.6 168.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.19/DEST FmPD2 +326 768/I4.1.8823 FmPA +523 564/I4.1.8832 FmPA +519 498/I4.1.8841 FmPA +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "19" 19 +%%Page: "20" 20 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (20) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (vendors, such as Symantec and Borland, have alr) 210.6 641.33 B +0.52 0.1 (eady endorsed the JDBC) 435.41 641.33 B +0.52 0.1 (API and ar) 210.6 629.33 B +0.52 0.1 (e developing pr) 260.53 629.33 B +0.52 0.1 (oducts using JDBC.) 332.65 629.33 B +0.52 0.1 (The JDBC API de\336nes classes to r) 210.6 611.33 B +0.52 0.1 (epr) 364.27 611.33 B +0.52 0.1 (esent constr) 379.14 611.33 B +0.52 0.1 (ucts such as database) 433.35 611.33 B +0.52 0.1 (connections, SQL statements, r) 210.6 599.33 B +0.52 0.1 (esult sets, and database metadata. JDBC) 350.6 599.33 B +0.52 0.1 (allows a Java-power) 210.6 587.33 B +0.52 0.1 (ed pr) 303.08 587.33 B +0.52 0.1 (ogram to issue SQL statements and pr) 327.28 587.33 B +0.52 0.1 (ocess the) 502.15 587.33 B +0.1 (r) 210.6 575.33 S +0.1 (esults.) 214.47 575.33 S +0.52 0.1 (In conjunction with JDBC, JavaSoft is r) 210.6 557.33 B +0.52 0.1 (eleasing a JDBC-ODBC bridge) 387.91 557.33 B +0.52 0.1 (implementation that allows any of the dozens of existing Micr) 210.6 545.33 B +0.52 0.1 (osoft ODBC) 495.16 545.33 B +0.52 0.1 (database drivers to operate as JDBC drivers. The JDBC-ODBC bridge can) 210.6 533.33 B +0.47 0.1 (r) 210.6 521.33 B +0.47 0.1 (un on the server rather than client side using a JDBC driver that translates) 214.57 521.33 B +0.52 0.1 (to a DBMS-independent network pr) 210.6 509.33 B +0.52 0.1 (otocol.) 374.68 509.33 B +6 14 Q +0.14 (\245) 198 491.33 S +3 10 Q +0.52 0.1 (Interface De\336nition Language) 210.6 491.33 B +1 F +0.52 0.1 ( \050IDL\051 is a language-neutral way to specify) 351.65 491.33 B +0.52 0.1 (an interface between an object and its client when they ar) 210.6 479.33 B +0.52 0.1 (e on dif) 474.11 479.33 B +0.52 0.1 (fer) 509.19 479.33 B +0.52 0.1 (ent) 521.38 479.33 B +0.52 0.1 (platforms. This IDL component pr) 210.6 467.33 B +0.52 0.1 (ovides a mapping of its methods,) 370.48 467.33 B +0.52 0.1 (packages, and other featur) 210.6 455.33 B +0.52 0.1 (es to IDL operations and featur) 331.75 455.33 B +0.52 0.1 (es.) 474.93 455.33 B +6 14 Q +0.14 (\245) 198 437.33 S +3 10 Q +0.52 0.1 (Remote Method Invocation) 210.6 437.33 B +1 F +0.52 0.1 ( \050RMI\051 lets pr) 339.04 437.33 B +0.52 0.1 (ogrammers cr) 400.65 437.33 B +0.52 0.1 (eate Java objects) 463.69 437.33 B +0.52 0.1 (whose methods can be invoked fr) 210.6 425.33 B +0.52 0.1 (om another virtual machine. RMI is) 364.94 425.33 B +0.52 0.1 (analogous to a r) 210.6 413.33 B +0.52 0.1 (emote pr) 284.23 413.33 B +0.52 0.1 (ocedur) 324.96 413.33 B +0.52 0.1 (e call \050RPC\051 in the non-object world.) 356.16 413.33 B +0 13 Q +-0.85 0.13 (Java Commer) 198 381.33 B +-0.85 0.13 (ce API) 268.76 381.33 B +54 525/G4.1346 FmPA +1 10 Q +0.52 0.1 (The Java Commer) 198 360.33 B +0.52 0.1 (ce API brings secur) 280.03 360.33 B +0.52 0.1 (e pur) 368.69 360.33 B +0.52 0.1 (chasing and \336nancial management) 392.81 360.33 B +0.52 0.1 (to the W) 198 348.33 B +0.52 0.1 (eb.) 236.51 348.33 B +0.52 0.1 (W) 198 328.33 B +0.52 0.1 (orld wide pur) 207.18 328.33 B +0.52 0.1 (chases of r) 270.91 328.33 B +0.52 0.1 (etail and wholesale goods and services during 1994) 319.14 328.33 B +0.52 0.1 (totaled 4.6 million dollars, 13% of which was spent r) 198 316.33 B +0.52 0.1 (emotely via catalogs,) 438.59 316.33 B +0.52 0.1 (television, and various public and private communications networks. As this) 198 304.33 B +0 0.1 (r) 198 292.33 B +0 0.1 (emote commer) 201.87 292.33 B +0 0.1 (ce migrates to the Internet, a standar) 268.82 292.33 B +0 0.1 (d framework within which) 433.77 292.33 B +0.52 0.1 (to conduct these transactions becomes incr) 198 280.33 B +0.52 0.1 (easingly important. This is) 392.9 280.33 B +0.52 0.1 (especially tr) 198 268.33 B +0.52 0.1 (ue as a rapidly incr) 253.01 268.33 B +0.52 0.1 (easing number of players vie for position to) 341.54 268.33 B +0.52 0.1 (pr) 198 256.33 B +0.52 0.1 (ovide such facilities as electr) 207.98 256.33 B +0.52 0.1 (onic curr) 338.51 256.33 B +0.52 0.1 (ency) 379.25 256.33 B +0.52 0.1 (, online shopping malls, digital) 399.15 256.33 B +0.52 0.1 (signatur) 198 244.33 B +0.52 0.1 (e veri\336cation, and \336nancial analysis.) 235.39 244.33 B +0.52 0.1 (The initial component of the Java Commer) 198 224.33 B +0.52 0.1 (ce API is the Java W) 392.88 224.33 B +0.52 0.1 (allet, which) 485.48 224.33 B +0.03 0.1 (de\336nes and implements a client-side framework for conducting network-based) 198 212.33 B +0.41 0.1 (commer) 198 200.33 B +0.41 0.1 (ce. Think of Java W) 234.72 200.33 B +0.41 0.1 (allet as an empty wallet r) 326.07 200.33 B +0.41 0.1 (eady to hold cr) 441.55 200.33 B +0.41 0.1 (edit car) 510.46 200.33 B +0.41 0.1 (ds) 544.44 200.33 B +0.52 0.1 (and cash, and a blank ID car) 198 188.33 B +0.52 0.1 (d r) 328.92 188.33 B +0.52 0.1 (eady to be \336lled in with personal information.) 342.12 188.33 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.20/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "20" 20 +%%Page: "21" 21 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (21) 548.82 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.52 0.1 (The Java W) 198 641.33 B +0.52 0.1 (allet pr) 249.84 641.33 B +0.52 0.1 (ovides:) 282.31 641.33 B +6 14 Q +0.14 (\245) 198 623.33 S +1 10 Q +0.52 0.1 (Storage of personal information about:) 210.6 623.33 B +6 14 Q +0.14 (\320) 210.6 605.33 S +1 10 Q +0.52 0.1 (The shopper \050such as name, billing addr) 223.2 605.33 B +0.52 0.1 (ess, and shipping addr) 407.82 605.33 B +0.52 0.1 (ess\051) 512.05 605.33 B +6 14 Q +0.14 (\320) 210.6 587.33 S +1 10 Q +0.52 0.1 (Payment instr) 223.2 587.33 B +0.52 0.1 (uments \050such as cr) 286.92 587.33 B +0.52 0.1 (edit car) 372.06 587.33 B +0.52 0.1 (ds, debit car) 406.16 587.33 B +0.52 0.1 (ds, and electr) 462.16 587.33 B +0.52 0.1 (onic) 523.34 587.33 B +0.1 (cash\051) 223.2 575.33 S +6 14 Q +0.14 (\320) 210.6 557.33 S +1 10 Q +0.52 0.1 (Details of every pur) 223.2 557.33 B +0.52 0.1 (chase transaction \050such as date and time, item) 314.45 557.33 B +0.52 0.1 (descriptions, quantities, and dollar amounts\051) 223.2 545.33 B +6 14 Q +0.14 (\245) 198 527.33 S +1 10 Q +0.52 0.1 (Support for two new types of signed applets) 210.6 527.33 B +6 14 Q +0.14 (\320) 210.6 509.33 S +1 10 Q +0.09 0.1 (Payment cassettes, which implement a speci\336c payment pr) 223.2 509.33 B +0.09 0.1 (otocol, such as) 489.28 509.33 B +0.52 0.1 (the Secur) 223.2 497.33 B +0.52 0.1 (e Electr) 265.27 497.33 B +0.52 0.1 (onic T) 299.16 497.33 B +0.52 0.1 (ransaction \050SET\051 supported by V) 326.64 497.33 B +0.52 0.1 (isa and) 475.49 497.33 B +0.1 (MasterCar) 223.2 485.33 S +0.1 (d) 270.66 485.33 S +6 14 Q +0.14 (\320) 210.6 467.33 S +1 10 Q +0.52 0.1 (Service cassettes, which implement value-added services, such as) 223.2 467.33 B +0.52 0.1 (budgeting and \336nancial analysis) 223.2 455.33 B +6 14 Q +0.14 (\245) 198 437.33 S +1 10 Q +0.52 0.1 (Extensibility to install new payment and service cassettes dynamically by) 210.6 437.33 B +0.52 0.1 (downloading them fr) 210.6 425.33 B +0.52 0.1 (om the network) 307.84 425.33 B +6 14 Q +0.14 (\245) 198 407.33 S +1 10 Q +0.52 0.1 (Str) 210.6 407.33 B +0.52 0.1 (ong cryptographic services that make it possible to implement all of the) 223.18 407.33 B +0.52 0.1 (facilities described above in a secur) 210.6 395.33 B +0.52 0.1 (e envir) 372.4 395.33 B +0.52 0.1 (onment) 403.85 395.33 B +0 13 Q +-0.85 0.13 (Java Server API) 198 363.33 B +54 507/G4.5289 FmPA +1 10 Q +0.06 0.1 (Java Server is an extensible framework that enables and eases the development) 198 342.33 B +0.52 0.1 (of a whole spectr) 198 330.33 B +0.52 0.1 (um of Java-power) 276.48 330.33 B +0.52 0.1 (ed Internet and intranet servers. The) 358.45 330.33 B +0.52 0.1 (framework API contains server) 198 318.33 B +0.52 0.1 (-side class libraries for server administration,) 340.5 318.33 B +0.52 0.1 (access contr) 198 306.33 B +0.52 0.1 (ol, and dynamic server r) 252.12 306.33 B +0.52 0.1 (esour) 364.21 306.33 B +0.52 0.1 (ce handling. The framework also) 389 306.33 B +0.52 0.1 (encompasses the Servlet API.) 198 294.33 B +0.52 0.1 (Servlets ar) 198 274.33 B +0.52 0.1 (e platform-independent Java-power) 245.73 274.33 B +0.52 0.1 (ed objects, the server side) 408.85 274.33 B +0.52 0.1 (counterpart of applets. Servlets can r) 198 262.33 B +0.52 0.1 (eside locally on the server) 369.37 262.33 B +0.52 0.1 (, or be) 487.96 262.33 B +0.52 0.1 (downloaded to the server fr) 198 250.33 B +0.52 0.1 (om the net under security r) 325.95 250.33 B +0.52 0.1 (estrictions. Servlet) 451.43 250.33 B +0.52 0.1 (examples range fr) 198 238.33 B +0.52 0.1 (om simple HTTP servlets \050ef) 279.69 238.33 B +0.52 0.1 (\336cient r) 410.17 238.33 B +0.52 0.1 (eplacements of cgi-) 445.03 238.33 B +0.52 0.1 (scripts\051 to mor) 198 226.33 B +0.52 0.1 (e complex servlets using JDBC/ODBC that of) 264.7 226.33 B +0.52 0.1 (fer database) 472.88 226.33 B +0.1 (connectivity) 198 214.33 S +0.1 (.) 252.41 214.33 S +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.21/DEST FmPD2 +[/Title(A)/Rect[45 121 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "21" 21 +%%Page: "22" 22 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (22) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 13 Q +0 X +0 0 0 1 0 0 0 K +-0.85 0.13 (Java Management API) 198 639.33 B +54 783/G4.7424 FmPA +1 10 Q +0.52 0.1 (The Java Management API is a collection of Java Classes that pr) 198 618.33 B +0.52 0.1 (ovide the) 490.71 618.33 B +-0.07 0.1 (building blocks for integrated management. It does this by pr) 198 605.93 B +-0.07 0.1 (oviding a number) 474.63 605.93 B +0.37 0.1 (of interfaces, classes, applets, and guidelines that facilitate the development of) 198 593.53 B +0.52 0.1 (integrated management solutions.) 198 581.13 B +0.52 0.1 (The Java Management API is composed of several distinct components, each) 198 560.73 B +0.52 0.1 (associated with an aspect of the total management space. T) 198 548.33 B +0.52 0.1 (aken together the) 467.76 548.33 B +0.52 0.1 (objects de\336ned using the Java Management API will encapsulate distributed) 198 535.93 B +0.52 0.1 (network, system, and service management components.) 198 523.53 B +0.52 0.1 (The components of the Java Management APIs ar) 198 503.13 B +0.52 0.1 (e as follows:) 424.68 503.13 B +6 14 Q +0.14 (\245) 198 484.73 S +3 10 Q +0.17 0.1 (Admin V) 210.6 484.73 B +0.17 0.1 (iew Module) 253.42 484.73 B +1 F +0.17 0.1 ( - The Admin V) 309.85 484.73 B +0.17 0.1 (iew Module is an extension of the Java) 380.11 484.73 B +0.52 0.1 (Abstract W) 210.6 472.73 B +0.52 0.1 (indow T) 261.53 472.73 B +0.52 0.1 (oolkit \050A) 299.1 472.73 B +0.52 0.1 (WT\051 that is speci\336cally designed for cr) 338.95 472.73 B +0.52 0.1 (eating) 515.46 472.73 B +-0.1 0.1 (integrated management solutions. The Admin V) 210.6 460.73 B +-0.1 0.1 (iew Module classes ar) 427.82 460.73 B +-0.1 0.1 (e used) 526.54 460.73 B +0.09 0.1 (to implement the user model that builds on the web br) 210.6 448.73 B +0.09 0.1 (owser hypertext style) 457.88 448.73 B +0.52 0.1 (of navigation.) 210.6 436.73 B +6 14 Q +0.14 (\245) 198 418.73 S +3 10 Q +0.52 0.1 (Base Object Interfaces) 210.6 418.73 B +1 F +0.52 0.1 ( - The Base Object Interfaces support constr) 315.48 418.73 B +0.52 0.1 (ucting) 514.49 418.73 B +0.52 0.1 (objects that r) 210.6 406.73 B +0.52 0.1 (epr) 269.21 406.73 B +0.52 0.1 (esent distributed r) 284.08 406.73 B +0.52 0.1 (esour) 367.79 406.73 B +0.52 0.1 (ces and services that make up the) 392.58 406.73 B +0.52 0.1 (enterprise computing envir) 210.6 394.73 B +0.52 0.1 (onment. These interfaces allow developers to) 335.01 394.73 B +0.52 0.1 (de\336ne abstractions that contain distributed attributes and methods, and) 210.6 382.73 B +0.52 0.1 (persistent attributes.) 210.6 370.73 B +6 14 Q +0.14 (\245) 198 352.73 S +3 10 Q +0.52 0.1 (Managed Noti\336cation Interface) 210.6 352.73 B +1 F +0.52 0.1 (s - The Managed Noti\336cation Interfaces) 357.3 352.73 B +0.39 0.1 (pr) 210.6 340.73 B +0.39 0.1 (ovide the basic foundation fr) 220.58 340.73 B +0.39 0.1 (om which mor) 352.24 340.73 B +0.39 0.1 (e complex event-management) 418.9 340.73 B +0.52 0.1 (services can be easily built. The model pr) 210.6 328.73 B +0.52 0.1 (ovides asynchr) 399.7 328.73 B +0.52 0.1 (onous event) 467.93 328.73 B +0.52 0.1 (noti\336cation between managed objects or management applications) 210.6 316.73 B +0.52 0.1 (pr) 210.6 304.73 B +0.52 0.1 (oviding the interfaces to an implementation of a basic event-dispatching) 220.58 304.73 B +0.1 (service.) 210.6 292.73 S +6 14 Q +0.14 (\245) 198 274.73 S +3 10 Q +0.52 0.1 (Managed Container Interfaces) 210.6 274.73 B +1 F +0.52 0.1 ( - These) 352.76 274.73 B +0.52 0.1 (allow managed objects to be) 391.82 274.73 B +0.52 0.1 (gr) 210.6 262.73 B +0.52 0.1 (ouped so that management applications can perform actions on a single) 220.13 262.73 B +0.52 0.1 (gr) 210.6 250.73 B +0.52 0.1 (oup, instead of each instance. This permits management applications to) 220.13 250.73 B +0.52 0.1 (scale upwar) 210.6 238.73 B +0.52 0.1 (ds by allowing for multiple instances to be tr) 265.25 238.73 B +0.52 0.1 (eated as one.) 471.34 238.73 B +0.52 0.1 (Container interfaces ar) 210.6 226.73 B +0.52 0.1 (e of two types:) 314.34 226.73 B +0 F +0.52 0.1 (Extensional,) 385.02 226.73 B +1 F +0.52 0.1 ( which ar) 436.5 226.73 B +0.52 0.1 (e constr) 479.54 226.73 B +0.52 0.1 (ucted) 515.24 226.73 B +-0.01 0.1 (pr) 210.6 214.73 B +-0.01 0.1 (ogrammatically thr) 220.58 214.73 B +-0.01 0.1 (ough simple add and r) 307.34 214.73 B +-0.01 0.1 (emove methods, and) 409.88 214.73 B +0 F +-0.01 0.1 (Intentional,) 506.71 214.73 B +1 F +0.52 0.1 (which stor) 210.6 202.73 B +0.52 0.1 (e only the query to be executed) 258.68 202.73 B +4 F +0.52 0.1 (\321) 402.65 202.73 B +1 F +0.52 0.1 (by using the Managed Data) 412.75 202.73 B +0.52 0.1 (Interfaces) 210.6 190.73 B +4 F +0.52 0.1 (\321) 254.59 190.73 B +1 F +0.52 0.1 (that generate the instances for the container) 264.69 190.73 B +0.52 0.1 (.) 464.32 190.73 B +6 14 Q +0.14 (\245) 198 172.73 S +3 10 Q +0.4 0.1 (Managed Data Interfaces) 210.6 172.73 B +1 F +0.4 0.1 ( - These support mapping attributes of extensions) 328.12 172.73 B +0.52 0.1 (to the Base Object Interfaces to a r) 210.6 160.73 B +0.52 0.1 (elational database. These interfaces ar) 366.77 160.73 B +0.52 0.1 (e) 539.3 160.73 B +0.52 0.1 (implemented on the appr) 210.6 148.73 B +0.52 0.1 (opriate subset of JDBC \050Java Database) 326.95 148.73 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.22/DEST FmPD2 +[/Title(A)/Rect[45 121 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "22" 22 +%%Page: "23" 23 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 9 Q +0 X +1 1 0 0 0 0 1 K +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 F +0.09 (23) 548.82 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +543.04 690.29 558 693.56 R +0 X +1 1 0 0 0 0 1 K +V +543.04 684.84 558 688.11 R +V +543.04 679.54 558 682.81 R +V +543.04 688.2 558 690.48 R +7 X +V +543.04 682.92 558 685.02 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.34 0.1 (Connectivity\051. These interfaces support a number of commer) 210.6 641.33 B +0.34 0.1 (cially available) 487.19 641.33 B +0.52 0.1 (r) 210.6 629.33 B +0.52 0.1 (elational database engines.) 214.47 629.33 B +6 14 Q +0.14 (\245) 198 611.33 S +3 10 Q +0.52 0.1 (Managed Protocol Interfaces) 210.6 611.33 B +1 F +0.52 0.1 ( - These implement the distribution and) 344.89 611.33 B +0.52 0.1 (security capabilities for extensions of the Base Object Interfaces. These) 210.6 599.33 B +0.52 0.1 (interfaces build up the Java Security APIs and Java Remote Method) 210.6 587.33 B +0.52 0.1 (Invocation \050RMI\051.) 210.6 575.33 B +6 14 Q +0.14 (\245) 198 557.33 S +3 10 Q +0.52 0.1 (SNMP Interfaces) 210.6 557.33 B +1 F +0.52 0.1 (- These extend the Managed Pr) 293.78 557.33 B +0.52 0.1 (otocol Interfaces to allow) 436.23 557.33 B +0.12 0.1 (extensions of the Base Objects to contain information obtained fr) 210.6 545.33 B +0.12 0.1 (om existing) 502.61 545.33 B +0.52 0.1 (SNMP agents. By extending the Managed Pr) 210.6 533.33 B +0.52 0.1 (otocol Interfaces, this allows) 414.26 533.33 B +0.52 0.1 (SNMP information to be available to all users of the Java Management API.) 210.6 521.33 B +0.52 0.1 (The \322Java Management API User Interface Style Guide\323 pr) 198 501.33 B +0.52 0.1 (ovides guidelines) 467.43 501.33 B +0.52 0.1 (for developing interfaces for con\336guration and tr) 198 488.93 B +0.52 0.1 (oubleshooting of the system,) 422.76 488.93 B +0.52 0.1 (network, and service elements that make up the computing infrastr) 198 476.53 B +0.52 0.1 (uctur) 506.62 476.53 B +0.52 0.1 (e.) 530.65 476.53 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.23/DEST FmPD2 +[/Title(A)/Rect[45 135 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "23" 23 +%%Page: "24" 24 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +1 9 Q +0 X +1 1 0 0 0 0 1 K +0.09 (24) 54 108.7 S +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 F +-0.58 0.09 (The Java\252 Platform) 198 108.7 B +1 F +-0.58 0.09 (\321) 272.93 108.7 B +0 F +-0.58 0.09 (May 1996) 282.02 108.7 B +0 0 0 1 0 0 0 K +558 675 54 675 2 L +0.3 H +2 Z +0 0 0 1 0 0 0 K +N +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +185 83.74 393.76 101.24 R +7 X +V +1 1 0 0 0 0 1 K +54 690.23 68.96 693.5 R +0 X +1 1 0 0 0 0 1 K +V +54 684.77 68.96 688.05 R +V +54 679.47 68.96 682.75 R +V +54 688.14 68.96 690.41 R +7 X +V +54 682.86 68.96 684.96 R +V +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 15 Q +0 X +0 0 0 1 0 0 0 K +-0.94 (Java Compile and Runtime Envir) 54 638 P +-0.94 (onments) 251.67 638 P +54 782/G4.4801 FmPA +1 10 Q +0.52 0.1 (A Java Language development envir) 198 616.33 B +0.52 0.1 (onment includes both the compile-time) 365.37 616.33 B +0.52 0.1 (and r) 198 604.33 B +0.52 0.1 (untime envir) 222.32 604.33 B +0.52 0.1 (onments, as shown in Figur) 281.12 604.33 B +0.52 0.1 (e 3. The Java Platform is) 408 604.33 B +0.12 0.1 (r) 198 592.33 B +0.12 0.1 (epr) 201.87 592.33 B +0.12 0.1 (esented by the r) 216.74 592.33 B +0.12 0.1 (untime envir) 288.83 592.33 B +0.12 0.1 (onment. The developer writes Java Language) 347.23 592.33 B +0.52 0.1 (sour) 198 580.33 B +0.52 0.1 (ce code \050) 217.9 580.33 B +5 F +1.22 0.1 (.java) 258.2 580.33 B +1 F +0.52 0.1 ( \336les\051 and compiles it to bytecodes \050) 288.7 580.33 B +5 F +1.22 0.1 (.class) 453.78 580.33 B +1 F +0.52 0.1 ( \336les\051. These) 490.38 580.33 B +0.52 0.1 (bytecodes ar) 198 568.33 B +0.52 0.1 (e instr) 255.17 568.33 B +0.52 0.1 (uctions for the Java V) 283.78 568.33 B +0.52 0.1 (irtual Machine. T) 382.48 568.33 B +0.52 0.1 (o cr) 463.35 568.33 B +0.52 0.1 (eate an applet,) 480.44 568.33 B +0.44 0.1 (the developer next stor) 198 556.33 B +0.44 0.1 (es these bytecode \336les on an HTTP server) 303.22 556.33 B +0.44 0.1 (, and adds an) 493.02 556.33 B +5 F +1.2 () 311.52 544.33 P +1 F +0.52 0.1 ( tag to a W) 317.52 544.33 B +0.52 0.1 (eb page, which names the entry-point) 367.32 544.33 B +0.52 0.1 (bytecode \336le.) 198 532.33 B +0.31 0.1 (When an end user visits that page, the) 198 512.33 B +5 F +0.72 () 375.66 512.33 P +1 F +0.31 0.1 ( tag causes the bytecode \336les) 423.66 512.33 B +0.52 0.1 (to be transported over the network fr) 198 500.33 B +0.52 0.1 (om the server to the end user) 368.71 500.33 B +0.52 0.1 (\325s br) 504.32 500.33 B +0.52 0.1 (owser) 524.16 500.33 B +0.52 0.1 (in the Java Platform. At this end, the bytecodes ar) 198 488.33 B +0.52 0.1 (e loaded into memory and) 429.57 488.33 B +0.52 0.1 (then veri\336ed for security befor) 198 476.33 B +0.52 0.1 (e they enter the V) 337.92 476.33 B +0.52 0.1 (irtual Machine.) 419.17 476.33 B +0.11 0.1 (Once in the V) 198 456.33 B +0.11 0.1 (irtual Machine, the bytecodes ar) 259.31 456.33 B +0.11 0.1 (e interpr) 404.56 456.33 B +0.11 0.1 (eted by the Intepr) 443.37 456.33 B +0.11 0.1 (eter) 523.92 456.33 B +0.11 0.1 (, or) 540.37 456.33 B +0.52 0.1 (optionally turned into machine code by the just-in-time \050JIT\051 code generator) 198 444.33 B +0.52 0.1 (,) 545.05 444.33 B +0.23 0.1 (known mor) 198 432.33 B +0.23 0.1 (e commonly as the JIT Compiler) 250.69 432.33 B +0.23 0.1 (. The Interpr) 396.58 432.33 B +0.23 0.1 (eter and JIT Compiler) 456.38 432.33 B +0.52 0.1 (operate in the context of the r) 198 420.33 B +0.52 0.1 (untime system \050thr) 333.8 420.33 B +0.52 0.1 (eads, memory) 420.38 420.33 B +0.52 0.1 (, other system) 483.55 420.33 B +0.52 0.1 (r) 198 408.33 B +0.52 0.1 (esour) 201.87 408.33 B +0.52 0.1 (ces\051. Any classes fr) 226.66 408.33 B +0.52 0.1 (om the Java Class Libraries \050API\051 ar) 313.14 408.33 B +0.52 0.1 (e dynamically) 477.49 408.33 B +0.52 0.1 (loaded as needed by the applet.) 198 396.33 B +1 9 Q +0.47 0.09 (Figur) 198 136.5 B +0.47 0.09 (e 3. Sour) 219.9 136.5 B +0.47 0.09 (ce code is compiled to bytecodes, which ar) 258.47 136.5 B +0.47 0.09 (e executed at r) 434.4 136.5 B +0.47 0.09 (untime.) 494.56 136.5 B +54 130.5 558 648 C +193.5 148.5 558 381 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +369 205.5 513 300 R +5 X +0 0 0 1 0 0 0 K +V +0.5 H +0 Z +0 X +N +7 X +90 450 31.5 24.75 229.5 320.25 G +0 X +90 450 31.5 24.75 229.5 320.25 A +198 228 261 273 R +7 X +V +0 X +N +7 9 Q +0.09 (J) 219.72 253.47 S +0.09 (a) 224.13 253.47 S +0.09 (v) 229.04 253.47 S +0.09 (a) 233.41 253.47 S +0.09 (Compiler) 211.5 243.36 S +373.5 246 436.5 291 R +7 X +V +0 X +N +0.09 (J) 395.22 271.47 S +0.09 (a) 399.63 271.47 S +0.09 (v) 404.54 271.47 S +0.09 (a) 408.91 271.47 S +0.09 (Inter) 384.78 261.36 S +0.09 (preter) 403.51 261.36 S +490.5 314.83 544.5 355.33 R +7 X +V +0 X +N +0.09 (J) 496.26 337.53 S +0.09 (a) 500.67 337.53 S +0.09 (v) 505.58 337.53 S +0.09 (a Class) 509.95 337.53 S +0.09 (Libr) 502.07 328.43 S +0.09 (ar) 517.34 328.43 S +0.09 (ies) 525.66 328.43 S +409.5 314.83 472.5 355.33 R +7 X +V +0 X +N +0.09 (Class Loader) 415.07 342.19 S +0.09 (Bytecode) 422.67 329.04 S +0.09 (V) 425.86 320.94 S +0.09 (er) 431.24 320.94 S +0.09 (i\336er) 439.55 320.94 S +373.5 178.5 508.5 192 R +7 X +V +0 X +N +0.09 (Oper) 406.67 182.4 S +0.09 (ating System) 426.94 182.4 S +373.5 151.5 508.5 165 R +7 X +V +0 X +N +0.09 (Hardw) 423.89 155.4 S +0.09 (are) 450.2 155.4 S +441 196.95 443.57 196.95 441 192.5 438.43 196.95 4 Y +N +441 196.95 443.57 196.95 441 192.5 438.43 196.95 4 Y +V +441 210 441 197.2 2 L +7 X +V +2 Z +0 X +N +477 232.95 479.57 232.95 477 228.5 474.43 232.95 4 Y +0 Z +N +477 232.95 479.57 232.95 477 228.5 474.43 232.95 4 Y +V +477 246 477 233.2 2 L +7 X +V +2 Z +0 X +N +405 232.95 407.57 232.95 405 228.5 402.43 232.95 4 Y +0 Z +N +405 232.95 407.57 232.95 405 228.5 402.43 232.95 4 Y +V +405 246 405 233.2 2 L +7 X +V +2 Z +0 X +N +417.8 294.17 419.44 292.19 414.38 291.32 416.16 296.14 4 Y +0 Z +N +417.8 294.17 419.44 292.19 414.38 291.32 416.16 296.14 4 Y +V +441 313.5 417.99 294.33 2 L +7 X +V +2 Z +0 X +N +464.2 294.17 465.84 296.14 467.62 291.32 462.56 292.19 4 Y +0 Z +N +464.2 294.17 465.84 296.14 467.62 291.32 462.56 292.19 4 Y +V +441 313.5 464.01 294.33 2 L +7 X +V +2 Z +0 X +N +404.55 336 404.55 338.57 409 336 404.55 333.43 4 Y +0 Z +N +404.55 336 404.55 338.57 409 336 404.55 333.43 4 Y +V +373.5 336 404.3 336 2 L +7 X +V +2 Z +0 X +N +298.66 228.45 296.56 229.92 301.21 232.09 300.77 226.98 4 Y +0 Z +N +298.66 228.45 296.56 229.92 301.21 232.09 300.77 226.98 4 Y +V +270 187.5 298.52 228.24 2 L +7 X +V +2 Z +0 X +N +8 F +0.09 (Runtime En) 395.17 373.35 S +0.09 (vir) 445.71 373.35 S +0.09 (onment) 456.81 373.35 S +0.09 (Compile-time En) 198 373.71 S +0.09 (vir) 270 373.71 S +0.09 (onment) 281.1 373.71 S +7 F +0.09 (J) 220.5 325.89 S +0.09 (a) 224.91 325.89 S +0.09 (v) 229.82 325.89 S +0.09 (a) 234.19 325.89 S +0.09 (Source) 216 317.03 S +229.5 277.96 232.07 277.96 229.5 273.52 226.93 277.96 4 Y +0 Z +N +229.5 277.96 232.07 277.96 229.5 273.52 226.93 277.96 4 Y +V +229.5 295.52 229.5 278.21 2 L +7 X +V +2 Z +0 X +N +229.5 214.96 232.07 214.96 229.5 210.52 226.93 214.96 4 Y +0 Z +N +229.5 214.96 232.07 214.96 229.5 210.52 226.93 214.96 4 Y +V +229.5 228.02 229.5 215.21 2 L +7 X +V +2 Z +0 X +N +373.5 336 337.5 286.5 2 L +7 X +V +0 X +N +5 X +90 450 31.5 31.5 319.5 259.5 G +0 Z +0 X +90 450 31.5 31.5 319.5 259.5 A +(Bytecodes) 299.15 267.26 T +(or through) 298.61 247.2 T +(netw) 304.02 237.76 T +(or) 322.94 237.76 T +(k) 331.07 237.76 T +252 187.5 270 187.5 2 L +5 X +V +2 Z +0 X +N +7 X +90 450 31.5 24.75 229.5 185.25 G +0 Z +0 X +90 450 31.5 24.75 229.5 185.25 A +0.09 (J) 219.94 192.06 S +0.09 (a) 224.35 192.06 S +0.09 (v) 229.27 192.06 S +0.09 (a) 233.63 192.06 S +0.09 (Bytecodes) 211 182.64 S +445.5 246 508.5 291 R +7 X +V +0 X +N +0.09 (J) 452.22 271.47 S +0.09 (ust-In-Time) 456.63 271.47 S +0.09 (Compiler) 459 261.36 S +477.45 336 477.45 333.43 473 336 477.45 338.57 4 Y +N +477.45 336 477.45 333.43 473 336 477.45 338.57 4 Y +V +490.5 336 477.7 336 2 L +7 X +V +2 Z +0 X +N +373.5 210 508.5 228 R +7 X +V +0 Z +0 X +N +0.09 (Runtime System) 407.22 215.96 S +441 169.95 443.57 169.95 441 165.5 438.43 169.95 4 Y +N +441 169.95 443.57 169.95 441 165.5 438.43 169.95 4 Y +V +441 178.5 441 170.2 2 L +7 X +V +2 Z +0 X +N +(J) 518.11 277.5 T +(a) 522.43 277.5 T +(v) 527.26 277.5 T +(a) 531.53 277.5 T +(Machine) 518.11 258.5 T +(Vir) 518.11 267.94 T +(tual) 529.47 267.94 T +7 8 Q +0.08 (\050.class\051) 215.44 171.42 S +0.08 (\050.ja) 218.28 307.04 S +0.08 (v) 229.55 307.04 S +0.08 (a\051) 233.43 307.04 S +7 9 Q +(mo) 295.25 257.17 T +(v) 307.62 257.17 T +(e locally) 311.89 257.17 T +8 F +0.09 (\050Ja) 408.5 363.69 S +0.09 (v) 421.64 363.69 S +0.09 (a Platf) 426.55 363.69 S +0.09 (orm\051) 454.01 363.69 S +7 F +(J) 308.64 276.97 T +(a) 312.96 276.97 T +(v) 317.79 276.97 T +(a) 322.06 276.97 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 130.5 558 648 C +0 72 612 720 C +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.24/DEST FmPD2 +[/Dest/L.JavaPlatformdoc/DEST FmPD2 +[/Title(A)/Rect[45 121 567 657]/ARTICLE FmPD2 +FMENDPAGE +%%EndPage: "24" 24 +%%Page: "25" 25 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] +[ 0 1 0.91 0 1 0 0.09] +[ 0.79 0.76 0 0 0.21 0.24 1] + 9 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 63 430 539 526 142.79 28.8 34.6 639.93 FMBEGINEPSF +%%BeginDocument: +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Adobe Illustrator(TM) 5.5 +%%For: (Bud Northern) (Mark Anderson Design) +%%Title: (JAVASOFT.1COLOR) +%%CreationDate: (3/5/96) (9:51 AM) +%%BoundingBox: 63 430 539 526 +%%HiResBoundingBox: 63.4812 430.6428 538.2056 525.3151 +%%DocumentProcessColors: Black +%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.0 0 +%%+ procset Adobe_IllustratorA_AI5 1.0 0 +%AI5_FileFormat 1.2 +%AI3_ColorUsage: Black&White +%%CMYKCustomColor: 0 1 0.91 0 (PANTONE 485 CV) +%%+ 0.79 0.76 0 0 (PANTONE 2665 CV) +%AI3_TemplateBox: 306 396 306 396 +%AI3_TileBox: 30 18 606 779 +%AI3_DocumentPreview: Macintosh_ColorPic +%AI5_ArtSize: 612 792 +%AI5_RulerUnits: 0 +%AI5_ArtFlags: 1 0 0 1 0 0 1 1 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI5_OpenToView: -450 900 -1.5 1018 725 26 1 1 3 40 +%AI5_OpenViewLayers: 7 +%%EndComments +%%BeginProlog +%%BeginResource: procset Adobe_level2_AI5 1.0 0 +%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) +%%Version: 1.0 +%%CreationDate: (04/10/93) () +%%Copyright: ((C) 1987-1993 Adobe Systems Incorporated All Rights Reserved) +userdict /Adobe_level2_AI5 21 dict dup begin + put + /packedarray where not + { + userdict begin + /packedarray + { + array astore readonly + } bind def + /setpacking /pop load def + /currentpacking false def + end + 0 + } if + pop + userdict /defaultpacking currentpacking put true setpacking + /initialize + { + Adobe_level2_AI5 begin + } bind def + /terminate + { + currentdict Adobe_level2_AI5 eq + { + end + } if + } bind def + mark + /setcustomcolor where not + { + /findcmykcustomcolor + { + 5 packedarray + } bind def + /setcustomcolor + { + exch aload pop pop + 4 + { + 4 index mul 4 1 roll + } repeat + 5 -1 roll pop + setcmykcolor + } + def + } if + + /gt38? mark {version cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def + userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put + userdict /level2? + systemdict /languagelevel known dup + { + pop systemdict /languagelevel get 2 ge + } if + put + level2? not + { + /setcmykcolor where not + { + /setcmykcolor + { + exch .11 mul add exch .59 mul add exch .3 mul add + 1 exch sub setgray + } def + } if + /currentcmykcolor where not + { + /currentcmykcolor + { + 0 0 0 1 currentgray sub + } def + } if + /setoverprint where not + { + /setoverprint /pop load def + } if + /selectfont where not + { + /selectfont + { + exch findfont exch + dup type /arraytype eq + { + makefont + } + { + scalefont + } ifelse + setfont + } bind def + } if + /cshow where not + { + /cshow + { + [ + 0 0 5 -1 roll aload pop + ] cvx bind forall + } bind def + } if + } if + cleartomark + /anyColor? + { + add add add 0 ne + } bind def + /testColor + { + gsave + setcmykcolor currentcmykcolor + grestore + } bind def + /testCMYKColorThrough + { + testColor anyColor? + } bind def + userdict /composite? + level2? + { + gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore + add add add 4 eq + } + { + 1 0 0 0 testCMYKColorThrough + 0 1 0 0 testCMYKColorThrough + 0 0 1 0 testCMYKColorThrough + 0 0 0 1 testCMYKColorThrough + and and and + } ifelse + put + composite? not + { + userdict begin + gsave + /cyan? 1 0 0 0 testCMYKColorThrough def + /magenta? 0 1 0 0 testCMYKColorThrough def + /yellow? 0 0 1 0 testCMYKColorThrough def + /black? 0 0 0 1 testCMYKColorThrough def + grestore + /isCMYKSep? cyan? magenta? yellow? black? or or or def + /customColor? isCMYKSep? not def + end + } if + end defaultpacking setpacking +%%EndResource +%%BeginResource: procset Adobe_IllustratorA_AI5 1.1 0 +%%Title: (Adobe Illustrator (R) Version 5.0 Abbreviated Prolog) +%%Version: 1.1 +%%CreationDate: (3/7/1994) () +%%Copyright: ((C) 1987-1994 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_IllustratorA_AI5_vars 70 dict dup begin +put +/_lp /none def +/_pf +{ +} def +/_ps +{ +} def +/_psf +{ +} def +/_pss +{ +} def +/_pjsf +{ +} def +/_pjss +{ +} def +/_pola 0 def +/_doClip 0 def +/cf currentflat def +/_tm matrix def +/_renderStart +[ +/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 +] def +/_renderEnd +[ +null null null null /i1 /i1 /i1 /i1 +] def +/_render -1 def +/_rise 0 def +/_ax 0 def +/_ay 0 def +/_cx 0 def +/_cy 0 def +/_leading +[ +0 0 +] def +/_ctm matrix def +/_mtx matrix def +/_sp 16#020 def +/_hyphen (-) def +/_fScl 0 def +/_cnt 0 def +/_hs 1 def +/_nativeEncoding 0 def +/_useNativeEncoding 0 def +/_tempEncode 0 def +/_pntr 0 def +/_tDict 2 dict def +/_wv 0 def +/Tx +{ +} def +/Tj +{ +} def +/CRender +{ +} def +/_AI3_savepage +{ +} def +/_gf null def +/_cf 4 array def +/_if null def +/_of false def +/_fc +{ +} def +/_gs null def +/_cs 4 array def +/_is null def +/_os false def +/_sc +{ +} def +/discardSave null def +/buffer 256 string def +/beginString null def +/endString null def +/endStringLength null def +/layerCnt 1 def +/layerCount 1 def +/perCent (%) 0 get def +/perCentSeen? false def +/newBuff null def +/newBuffButFirst null def +/newBuffLast null def +/clipForward? false def +end +userdict /Adobe_IllustratorA_AI5 74 dict dup begin +put +/initialize +{ + Adobe_IllustratorA_AI5 dup begin + Adobe_IllustratorA_AI5_vars begin + discardDict + { + bind pop pop + } forall + dup /nc get begin + { + dup xcheck 1 index type /operatortype ne and + { + bind + } if + pop pop + } forall + end + newpath +} def +/terminate +{ + end + end +} def +/_ +null def +/ddef +{ + Adobe_IllustratorA_AI5_vars 3 1 roll put +} def +/xput +{ + dup load dup length exch maxlength eq + { + dup dup load dup + length 2 mul dict copy def + } if + load begin + def + end +} def +/npop +{ + { + pop + } repeat +} def +/sw +{ + dup length exch stringwidth + exch 5 -1 roll 3 index mul add + 4 1 roll 3 1 roll mul add +} def +/swj +{ + dup 4 1 roll + dup length exch stringwidth + exch 5 -1 roll 3 index mul add + 4 1 roll 3 1 roll mul add + 6 2 roll /_cnt 0 ddef + { + 1 index eq + { + /_cnt _cnt 1 add ddef + } if + } forall + pop + exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop +} def +/ss +{ + 4 1 roll + { + 2 npop + (0) exch 2 copy 0 exch put pop + gsave + false charpath currentpoint + 4 index setmatrix + stroke + grestore + moveto + 2 copy rmoveto + } exch cshow + 3 npop +} def +/jss +{ + 4 1 roll + { + 2 npop + (0) exch 2 copy 0 exch put + gsave + _sp eq + { + exch 6 index 6 index 6 index 5 -1 roll widthshow + currentpoint + } + { + false charpath currentpoint + 4 index setmatrix stroke + } ifelse + grestore + moveto + 2 copy rmoveto + } exch cshow + 6 npop +} def +/sp +{ + { + 2 npop (0) exch + 2 copy 0 exch put pop + false charpath + 2 copy rmoveto + } exch cshow + 2 npop +} def +/jsp +{ + { + 2 npop + (0) exch 2 copy 0 exch put + _sp eq + { + exch 5 index 5 index 5 index 5 -1 roll widthshow + } + { + false charpath + } ifelse + 2 copy rmoveto + } exch cshow + 5 npop +} def +/pl +{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform +} def +/setstrokeadjust where +{ + pop true setstrokeadjust + /c + { + curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll curveto + } def + /V + /v load def + /y + { + 2 copy curveto + } def + /Y + /y load def + /l + { + lineto + } def + /L + /l load def + /m + { + moveto + } def +} +{ + /c + { + pl curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll pl curveto + } def + /V + /v load def + /y + { + pl 2 copy curveto + } def + /Y + /y load def + /l + { + pl lineto + } def + /L + /l load def + /m + { + pl moveto + } def +} ifelse +/d +{ + setdash +} def +/cf +{ +} def +/i +{ + dup 0 eq + { + pop cf + } if + setflat +} def +/j +{ + setlinejoin +} def +/J +{ + setlinecap +} def +/M +{ + setmiterlimit +} def +/w +{ + setlinewidth +} def +/H +{ +} def +/h +{ + closepath +} def +/N +{ + _pola 0 eq + { + _doClip 1 eq + { + clip /_doClip 0 ddef + } if + newpath + } + { + /CRender + { + N + } ddef + } ifelse +} def +/n +{ + N +} def +/F +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _pf grestore clip newpath /_lp /none ddef _fc + /_doClip 0 ddef + } + { + _pf + } ifelse + } + { + /CRender + { + F + } ddef + } ifelse +} def +/f +{ + closepath + F +} def +/S +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _ps grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + _ps + } ifelse + } + { + /CRender + { + S + } ddef + } ifelse +} def +/s +{ + closepath + S +} def +/B +{ + _pola 0 eq + { + _doClip 1 eq + gsave F grestore + { + gsave S grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + S + } ifelse + } + { + /CRender + { + B + } ddef + } ifelse +} def +/b +{ + closepath + B +} def +/W +{ + /_doClip 1 ddef +} def +/* +{ + count 0 ne + { + dup type /stringtype eq + { + pop + } if + } if + newpath +} def +/u +{ +} def +/U +{ +} def +/q +{ + _pola 0 eq + { + gsave + } if +} def +/Q +{ + _pola 0 eq + { + grestore + } if +} def +/*u +{ + _pola 1 add /_pola exch ddef +} def +/*U +{ + _pola 1 sub /_pola exch ddef + _pola 0 eq + { + CRender + } if +} def +/D +{ + pop +} def +/*w +{ +} def +/*W +{ +} def +/` +{ + /_i save ddef + clipForward? + { + nulldevice + } if + 6 1 roll 4 npop + concat pop + userdict begin + /showpage + { + } def + 0 setgray + 0 setlinecap + 1 setlinewidth + 0 setlinejoin + 10 setmiterlimit + [] 0 setdash + /setstrokeadjust where {pop false setstrokeadjust} if + newpath + 0 setgray + false setoverprint +} def +/~ +{ + end + _i restore +} def +/O +{ + 0 ne + /_of exch ddef + /_lp /none ddef +} def +/R +{ + 0 ne + /_os exch ddef + /_lp /none ddef +} def +/g +{ + /_gf exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _gf setgray + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + fill + } ddef + /_psf + { + _fc + ashow + } ddef + /_pjsf + { + _fc + awidthshow + } ddef + /_lp /none ddef +} def +/G +{ + /_gs exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _gs setgray + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/k +{ + _cf astore pop + /_fc + { + _lp /fill ne + { + _of setoverprint + _cf aload pop setcmykcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + fill + } ddef + /_psf + { + _fc + ashow + } ddef + /_pjsf + { + _fc + awidthshow + } ddef + /_lp /none ddef +} def +/K +{ + _cs astore pop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _cs aload pop setcmykcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/x +{ + /_gf exch ddef + findcmykcustomcolor + /_if exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + fill + } ddef + /_psf + { + _fc + ashow + } ddef + /_pjsf + { + _fc + awidthshow + } ddef + /_lp /none ddef +} def +/X +{ + /_gs exch ddef + findcmykcustomcolor + /_is exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/A +{ + pop +} def +/annotatepage +{ +userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse +} def +/discard +{ + save /discardSave exch store + discardDict begin + /endString exch store + gt38? + { + 2 add + } if + load + stopped + pop + end + discardSave restore +} bind def +userdict /discardDict 7 dict dup begin +put +/pre38Initialize +{ + /endStringLength endString length store + /newBuff buffer 0 endStringLength getinterval store + /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store + /newBuffLast newBuff endStringLength 1 sub 1 getinterval store +} def +/shiftBuffer +{ + newBuff 0 newBuffButFirst putinterval + newBuffLast 0 + currentfile read not + { + stop + } if + put +} def +0 +{ + pre38Initialize + mark + currentfile newBuff readstring exch pop + { + { + newBuff endString eq + { + cleartomark stop + } if + shiftBuffer + } loop + } + { + stop + } ifelse +} def +1 +{ + pre38Initialize + /beginString exch store + mark + currentfile newBuff readstring exch pop + { + { + newBuff beginString eq + { + /layerCount dup load 1 add store + } + { + newBuff endString eq + { + /layerCount dup load 1 sub store + layerCount 0 eq + { + cleartomark stop + } if + } if + } ifelse + shiftBuffer + } loop + } + { + stop + } ifelse +} def +2 +{ + mark + { + currentfile buffer readline not + { + stop + } if + endString eq + { + cleartomark stop + } if + } loop +} def +3 +{ + /beginString exch store + /layerCnt 1 store + mark + { + currentfile buffer readline not + { + stop + } if + dup beginString eq + { + pop /layerCnt dup load 1 add store + } + { + endString eq + { + layerCnt 1 eq + { + cleartomark stop + } + { + /layerCnt dup load 1 sub store + } ifelse + } if + } ifelse + } loop +} def +end +userdict /clipRenderOff 15 dict dup begin +put +{ + /n /N /s /S /f /F /b /B +} +{ + { + _doClip 1 eq + { + /_doClip 0 ddef clip + } if + newpath + } def +} forall +/Tr /pop load def +/Bb {} def +/BB /pop load def +/Bg {12 npop} def +/Bm {6 npop} def +/Bc /Bm load def +/Bh {4 npop} def +end +/Lb +{ + 4 npop + 6 1 roll + pop + 4 1 roll + pop pop pop + 0 eq + { + 0 eq + { + (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard + } + { + /clipForward? true def + + /Tx /pop load def + /Tj /pop load def + currentdict end clipRenderOff begin begin + } ifelse + } + { + 0 eq + { + save /discardSave exch store + } if + } ifelse +} bind def +/LB +{ + discardSave dup null ne + { + restore + } + { + pop + clipForward? + { + currentdict + end + end + begin + + /clipForward? false ddef + } if + } ifelse +} bind def +/Pb +{ + pop pop + 0 (%AI5_EndPalette) discard +} bind def +/Np +{ + 0 (%AI5_End_NonPrinting--) discard +} bind def +/Ln /pop load def +/Ap +/pop load def +/Ar +{ + 72 exch div + 0 dtransform dup mul exch dup mul add sqrt + dup 1 lt + { + pop 1 + } if + setflat +} def +/Mb +{ + q +} def +/Md +{ +} def +/MB +{ + Q +} def +/nc 3 dict def +nc begin +/setgray +{ + pop +} bind def +/setcmykcolor +{ + 4 npop +} bind def +/setcustomcolor +{ + 2 npop +} bind def +currentdict readonly pop +end +currentdict readonly pop +end +setpacking +%%EndResource +%%EndProlog +%%BeginSetup +Adobe_level2_AI5 /initialize get exec +Adobe_IllustratorA_AI5 /initialize get exec +%AI5_Begin_NonPrinting +Np +%AI3_BeginPattern: (Yellow Stripe) +(Yellow Stripe) 8.4499 4.6 80.4499 76.6 [ +%AI3_Tile +(0 O 0 R 0 0.4 1 0 k 0 0.4 1 0 K) @ +( +800 Ar +0 J 0 j 3.6 w 4 M []0 d +%AI3_Note: +0 D +8.1999 8.1999 m +80.6999 8.1999 L +S +8.1999 22.6 m +80.6999 22.6 L +S +8.1999 37.0001 m +80.6999 37.0001 L +S +8.1999 51.3999 m +80.6999 51.3999 L +S +8.1999 65.8 m +80.6999 65.8 L +S +8.1999 15.3999 m +80.6999 15.3999 L +S +8.1999 29.8 m +80.6999 29.8 L +S +8.1999 44.1999 m +80.6999 44.1999 L +S +8.1999 58.6 m +80.6999 58.6 L +S +8.1999 73.0001 m +80.6999 73.0001 L +S +) & +] E +%AI3_EndPattern +%AI5_End_NonPrinting-- +%AI5_Begin_NonPrinting +Np +3 Bn +%AI5_BeginGradient: (Black & White) +(Black & White) 0 2 Bd +[ +< +FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 +D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 +AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 +87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 +5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 +37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 +0F0E0D0C0B0A09080706050403020100 +> +0 %_Br +[ +0 0 50 100 %_Bs +1 0 50 0 %_Bs +BD +%AI5_EndGradient +%AI5_BeginGradient: (Red & Yellow) +(Red & Yellow) 0 2 Bd +[ +0 +< +000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F +505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 +78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F +A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 +C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF +F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF +> +< +FFFFFEFEFDFDFDFCFCFBFBFBFAFAF9F9F9F8F8F7F7F7F6F6F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0EF +EFEFEEEEEDEDEDECECEBEBEBEAEAE9E9E9E8E8E7E7E7E6E6E5E5E5E4E4E3E3E3E2E2E1E1E1E0E0DF +DFDFDEDEDDDDDDDCDCDBDBDBDADAD9D9D9D8D8D7D7D7D6D6D5D5D5D4D4D3D3D3D2D2D1D1D1D0D0CF +CFCFCECECDCDCDCCCCCBCBCBCACAC9C9C9C8C8C7C7C7C6C6C5C5C5C4C4C3C3C3C2C2C1C1C1C0C0BF +BFBFBEBEBDBDBDBCBCBBBBBBBABAB9B9B9B8B8B7B7B7B6B6B5B5B5B4B4B3B3B3B2B2B1B1B1B0B0AF +AFAFAEAEADADADACACABABABAAAAA9A9A9A8A8A7A7A7A6A6A5A5A5A4A4A3A3A3A2A2A1A1A1A0A09F +9F9F9E9E9D9D9D9C9C9B9B9B9A9A9999 +> +0 +1 %_Br +[ +0 1 0.6 0 1 50 100 %_Bs +0 0 1 0 1 50 0 %_Bs +BD +%AI5_EndGradient +%AI5_BeginGradient: (Yellow & Blue Radial) +(Yellow & Blue Radial) 1 2 Bd +[ +< +000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 +28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F +505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 +78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F +A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 +C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF +F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF +> +< +1415161718191A1B1C1D1E1F1F202122232425262728292A2A2B2C2D2E2F30313233343536363738 +393A3B3C3D3E3F40414142434445464748494A4B4C4D4D4E4F50515253545556575858595A5B5C5D +5E5F60616263646465666768696A6B6C6D6E6F6F707172737475767778797A7B7B7C7D7E7F808182 +83848586868788898A8B8C8D8E8F90919292939495969798999A9B9C9D9D9E9FA0A1A2A3A4A5A6A7 +A8A9A9AAABACADAEAFB0B1B2B3B4B4B5B6B7B8B9BABBBCBDBEBFC0C0C1C2C3C4C5C6C7C8C9CACBCB +CCCDCECFD0D1D2D3D4D5D6D7D7D8D9DADBDCDDDEDFE0E1E2E2E3E4E5E6E7E8E9EAEBECEDEEEEEFF0 +F1F2F3F4F5F6F7F8F9F9FAFBFCFDFEFF +> +< +ABAAAAA9A8A7A7A6A5A5A4A3A3A2A1A1A09F9F9E9D9D9C9B9B9A9999989797969595949393929191 +908F8F8E8D8D8C8B8B8A8989888787868585848383828181807F7F7E7D7D7C7B7B7A797978777776 +7575747373727171706F6F6E6D6D6C6B6B6A6969686767666565646362626160605F5E5E5D5C5C5B +5A5A5958585756565554545352525150504F4E4E4D4C4C4B4A4A4948484746464544444342424140 +403F3E3E3D3C3C3B3A3A3938383736363534343332323130302F2E2E2D2C2C2B2A2A292828272626 +25242423222121201F1F1E1D1D1C1B1B1A1919181717161515141313121111100F0F0E0D0D0C0B0B +0A090908070706050504030302010100 +> +0 +1 %_Br +[ +0 0.08 0.67 0 1 50 14 %_Bs +1 1 0 0 1 50 100 %_Bs +BD +%AI5_EndGradient +%AI5_End_NonPrinting-- +%AI5_BeginPalette +36 71 Pb +Pn +Pc +1 g +Pc +0 g +Pc +0 0 0 0 k +Pc +0.75 g +Pc +0.5 g +Pc +0.25 g +Pc +0 g +Pc +Bb +2 (Black & White) -4014 4716 0 0 1 0 0 1 0 0 Bg +0 BB +Pc +0.25 0 0 0 k +Pc +0.5 0 0 0 k +Pc +0.75 0 0 0 k +Pc +1 0 0 0 k +Pc +0.25 0.25 0 0 k +Pc +0.5 0.5 0 0 k +Pc +0.75 0.75 0 0 k +Pc +1 1 0 0 k +Pc +Bb +2 (Red & Yellow) -4014 4716 0 0 1 0 0 1 0 0 Bg +0 BB +Pc +0 0.25 0 0 k +Pc +0 0.5 0 0 k +Pc +0 0.75 0 0 k +Pc +0 1 0 0 k +Pc +0 0.25 0.25 0 k +Pc +0 0.5 0.5 0 k +Pc +0 0.75 0.75 0 k +Pc +0 1 1 0 k +Pc +Bb +0 0 0 0 Bh +2 (Yellow & Blue Radial) -4014 4716 0 0 1 0 0 1 0 0 Bg +0 BB +Pc +0 0 0.25 0 k +Pc +0 0 0.5 0 k +Pc +0 0 0.75 0 k +Pc +0 0 1 0 k +Pc +0.25 0 0.25 0 k +Pc +0.5 0 0.5 0 k +Pc +0.75 0 0.75 0 k +Pc +1 0 1 0 k +Pc +(Yellow Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p +Pc +0.25 0.125 0 0 k +Pc +0.5 0.25 0 0 k +Pc +0.75 0.375 0 0 k +Pc +1 0.5 0 0 k +Pc +0.125 0.25 0 0 k +Pc +0.25 0.5 0 0 k +Pc +0.375 0.75 0 0 k +Pc +0.5 1 0 0 k +Pc +0 1 0.91 0 (PANTONE 485 CV) 0 x +Pc +0 0.25 0.125 0 k +Pc +0 0.5 0.25 0 k +Pc +0 0.75 0.375 0 k +Pc +0 1 0.5 0 k +Pc +0 0.125 0.25 0 k +Pc +0 0.25 0.5 0 k +Pc +0 0.375 0.75 0 k +Pc +0 0.5 1 0 k +Pc +0.79 0.76 0 0 (PANTONE 2665 CV) 0 x +Pc +0.125 0 0.25 0 k +Pc +0.25 0 0.5 0 k +Pc +0.375 0 0.75 0 k +Pc +0.5 0 1 0 k +Pc +0.25 0 0.125 0 k +Pc +0.5 0 0.25 0 k +Pc +0.75 0 0.375 0 k +Pc +1 0 0.5 0 k +Pc +0 1 1 0 k +Pc +0.25 0.125 0.125 0 k +Pc +0.5 0.25 0.25 0 k +Pc +0.75 0.375 0.375 0 k +Pc +1 0.5 0.5 0 k +Pc +0.25 0.25 0.125 0 k +Pc +0.5 0.5 0.25 0 k +Pc +0.75 0.75 0.375 0 k +Pc +1 1 0.5 0 k +Pc +0.8 0.75 0 0 k +Pc +0.125 0.25 0.125 0 k +Pc +0.25 0.5 0.25 0 k +Pc +0.375 0.75 0.375 0 k +Pc +0.5 1 0.5 0 k +Pc +0.125 0.25 0.25 0 k +Pc +0.25 0.5 0.5 0 k +Pc +0.375 0.75 0.75 0 k +Pc +0.5 1 1 0 k +Pc +0 0 0 0 k +Pc +0.125 0.125 0.25 0 k +Pc +0.25 0.25 0.5 0 k +Pc +0.375 0.375 0.75 0 k +Pc +0.5 0.5 1 0 k +Pc +0.25 0.125 0.25 0 k +Pc +0.5 0.25 0.5 0 k +Pc +0.75 0.375 0.75 0 k +Pc +1 0.5 1 0 k +Pc +PB +%AI5_EndPalette +%%EndSetup +%AI5_BeginLayer +1 1 1 1 0 0 0 79 128 255 Lb +(Layer 1) Ln +0 A +800 Ar +0 J 0 j 1 w 4 M []0 d +%AI3_Note: +0 D +-4014 524 m +4626 524 L +(N) * +-4014 457 m +4626 457 L +(N) * +-4014 439.5 m +4626 439.5 L +(N) * +498 4716 m +498 -3924 L +(N) * +1 A +u +*u +0 O +0 g +176.5716 507.7789 m +176.5716 519.3653 175.5278 520.6177 169.3692 521.1397 c +166.7596 521.3485 L +166.1334 521.7661 166.3422 523.6449 166.9684 523.9581 c +173.0226 523.7493 176.5716 523.6447 180.9554 523.6447 c +185.1308 523.6447 188.6798 523.7493 192.855 523.9581 c +193.4812 523.6449 193.69 521.7661 193.0638 521.3485 c +191.498 521.1397 L +185.3396 520.3047 185.1308 518.8433 185.1308 507.7789 c +185.1308 469.0535 L +185.1308 460.8073 184.7132 453.6049 182.73 448.8033 c +179.2854 440.4529 171.8744 433.7725 162.1668 433.7725 c +160.9142 433.7725 157.6784 433.8769 157.6784 435.9645 c +157.6784 437.7389 159.2442 440.7659 161.4362 440.7659 c +162.6888 440.7659 163.9412 440.5573 165.2984 440.1397 c +166.7596 439.7221 168.221 439.4091 169.6822 439.4091 c +171.8744 439.4091 173.127 440.6617 173.8576 442.1229 c +176.2584 447.0289 176.5716 462.6861 176.5716 468.3227 C +176.5716 507.7789 l +f +*U +*u +210.0184 474.8477 m +207.886 474.8477 207.9678 474.8477 207.2298 472.6333 c +203.867 462.7909 L +202.2266 457.9519 202.5546 457.7059 205.5894 457.2957 c +207.9678 456.8855 L +208.542 456.3115 208.46 454.8351 207.8038 454.5071 c +205.1792 454.6711 202.4726 454.6711 199.11 454.7531 c +196.4032 454.7531 193.8606 454.6711 190.99 454.5071 c +190.4158 454.9171 190.334 456.1475 190.908 456.8855 c +193.3686 457.2957 L +195.747 457.6237 196.6494 458.3619 197.8796 461.0685 c +198.8638 463.2009 200.176 466.6459 201.8984 471.0749 c +213.135 500.2735 L +214.2014 502.8981 214.9396 504.8665 214.6934 506.2609 c +217.564 506.8349 220.2708 510.1977 220.4346 510.1977 c +221.0908 510.1977 221.501 509.9517 221.829 509.5415 c +223.1414 505.8507 224.2076 501.9959 225.5198 498.3051 c +237.3306 463.9391 L +239.217 458.4441 239.627 457.8699 243.81 457.1317 c +245.0402 456.8855 L +245.6966 456.3115 245.6966 454.9171 245.1224 454.5071 c +241.7596 454.6711 238.7248 454.7531 234.46 454.7531 c +230.933 454.7531 227.3244 454.5891 224.4538 454.5071 c +223.7974 454.9171 223.7154 456.3935 224.2076 456.8855 c +226.012 457.1317 L +228.9646 457.4597 229.2108 457.9519 228.1446 461.4787 c +224.2896 472.6333 L +223.4694 474.8477 223.2234 474.8477 220.9268 474.8477 C +210.0184 474.8477 l +f +1 D +219.8606 478.5385 m +222.157 478.5385 222.4852 478.7027 221.829 480.6711 c +218.3842 490.5133 L +216.9898 494.8603 216.4978 496.4187 216.0878 496.9929 c +215.9238 496.9929 L +215.5956 496.4187 214.9396 494.3683 213.4632 490.5133 c +210.0184 480.9171 L +209.1162 478.5385 209.3622 478.5385 211.3306 478.5385 C +219.8606 478.5385 l +f +*U +*u +0 D +269.7236 475.0937 m +266.4428 467.6301 262.588 458.0339 261.1938 453.8509 c +261.0296 453.6049 260.3734 453.4409 259.7992 453.4409 c +259.2252 453.4409 258.651 453.6049 258.241 453.8509 c +257.2568 457.1317 255.9444 461.1507 254.468 464.5953 c +240.1148 499.1253 L +237.8184 504.6205 237.0802 505.7687 233.7994 506.4249 c +231.831 506.8349 L +231.2568 507.4091 231.2568 508.8855 232.077 509.1315 c +235.2758 508.9675 238.8026 508.8855 242.0012 508.8855 c +245.692 508.8855 248.4808 508.9675 252.8278 509.1315 c +253.566 508.6395 253.648 507.3271 252.9098 506.7529 c +250.8592 506.2609 L +249.0548 505.8507 248.3986 505.4407 248.3986 504.7845 c +248.3986 504.0465 249.0548 502.2419 252.4178 493.8761 c +258.323 479.2767 L +259.7992 475.5859 262.0138 470.7467 262.834 468.8603 c +267.263 479.1947 272.1842 490.5133 276.5312 501.6679 c +277.8434 504.9485 277.5974 505.6047 275.1368 506.1789 c +272.7582 506.7529 L +272.1842 507.4091 272.2662 508.7215 272.9224 509.1315 c +276.2852 508.9675 279.0738 508.8855 281.6984 508.8855 c +284.651 508.8855 287.3576 508.9675 289.6542 509.1315 c +290.3102 508.7215 290.2282 507.4091 289.8182 506.7529 c +287.7678 506.3429 L +285.8812 505.9327 284.0768 505.3587 282.6826 502.9801 c +280.386 499.0431 278.0076 493.5481 274.3166 485.2641 C +269.7236 475.0937 l +f +*U +*u +295.058 474.8477 m +292.9256 474.8477 293.0076 474.8477 292.2694 472.6333 c +288.9066 462.7909 L +287.2662 457.9519 287.5942 457.7059 290.629 457.2957 c +293.0076 456.8855 L +293.5818 456.3115 293.4996 454.8351 292.8436 454.5071 c +290.219 454.6711 287.5124 454.6711 284.1494 454.7531 c +281.4428 454.7531 278.9004 454.6711 276.0298 454.5071 c +275.4556 454.9171 275.3736 456.1475 275.9476 456.8855 c +278.4082 457.2957 L +280.7868 457.6237 281.689 458.3619 282.9192 461.0685 c +283.9034 463.2009 285.2158 466.6459 286.9382 471.0749 c +298.1748 500.2735 L +299.241 502.8981 299.9792 504.8665 299.733 506.2609 c +302.6038 506.8349 305.3104 510.1977 305.4744 510.1977 c +306.1306 510.1977 306.5406 509.9517 306.8686 509.5415 c +308.181 505.8507 309.2472 501.9959 310.5596 498.3051 c +322.3702 463.9391 L +324.2568 458.4441 324.6668 457.8699 328.8498 457.1317 c +330.08 456.8855 L +330.7362 456.3115 330.7362 454.9171 330.162 454.5071 c +326.7992 454.6711 323.7646 454.7531 319.4996 454.7531 c +315.9728 454.7531 312.364 454.5891 309.4932 454.5071 c +308.8372 454.9171 308.7552 456.3935 309.2472 456.8855 c +311.0516 457.1317 L +314.0044 457.4597 314.2504 457.9519 313.1842 461.4787 c +309.3292 472.6333 L +308.5092 474.8477 308.263 474.8477 305.9666 474.8477 C +295.058 474.8477 l +f +1 D +304.9002 478.5385 m +307.1968 478.5385 307.5248 478.7027 306.8686 480.6711 c +303.424 490.5133 L +302.0296 494.8603 301.5376 496.4187 301.1274 496.9929 c +300.9634 496.9929 L +300.6354 496.4187 299.9792 494.3683 298.5028 490.5133 c +295.058 480.9171 L +294.1558 478.5385 294.4018 478.5385 296.3704 478.5385 C +304.9002 478.5385 l +f +*U +*u +0 D +351.5632 453.0831 m +342.7952 453.0831 337.263 455.7969 335.2796 456.9451 c +334.027 459.2415 332.6702 466.6525 332.4614 471.5585 c +332.9832 472.2893 334.549 472.4979 334.9666 471.8717 c +336.5322 466.5483 340.812 456.3189 352.9202 456.3189 c +361.6882 456.3189 365.9678 462.0599 365.9678 468.3227 c +365.9678 472.9155 365.0284 478.0301 357.4086 482.9361 c +347.4924 489.4077 L +342.2732 492.8523 336.2192 498.8021 336.2192 507.3613 c +336.2192 517.2777 343.9434 525.3151 357.513 525.3151 c +360.7488 525.3151 364.5066 524.7931 367.2204 523.9581 c +368.5774 523.6449 370.0388 523.3317 370.8738 523.3317 c +371.8132 520.8265 372.7526 514.9813 372.7526 510.5971 c +372.3352 509.9709 370.665 509.6577 370.1432 510.2841 c +368.7862 515.2943 365.9678 522.0791 355.9474 522.0791 c +345.7178 522.0791 343.5258 515.2943 343.5258 510.4929 c +343.5258 504.4387 348.5362 500.1591 352.3982 497.6539 c +360.7488 492.4349 L +367.3248 488.3641 373.7964 482.3099 373.7964 472.3935 c +373.7964 460.9115 365.1328 453.0831 351.5632 453.0831 c +f +*U +*u +436.2588 495.1933 m +443.7822 480.8941 438.5084 464.4957 423.8462 456.7813 c +407.442 448.1505 391.9338 454.7267 385.136 467.6469 c +377.3454 482.4543 382.3214 499.0667 397.5642 507.0865 c +414.3312 515.9081 429.3082 508.4037 436.2588 495.1933 c +f +1 D +393.9002 474.9455 m +399.1704 464.9289 410.6324 453.5361 423.0444 460.0665 c +431.3192 464.4203 434.7508 474.1035 427.0748 488.6929 c +421.308 499.6533 409.6892 509.7587 398.1482 503.6865 c +390.8896 499.8675 385.7658 490.4061 393.9002 474.9455 c +f +*U +*u +0 D +469.3974 508.8855 m +474.6466 508.8855 479.2396 508.9675 480.962 509.1315 c +480.962 507.3271 480.962 501.1757 481.126 497.3209 c +480.798 496.6647 479.3216 496.5007 478.5014 496.9929 c +477.6814 501.7499 476.369 504.1283 473.2524 504.9485 c +471.0378 505.5227 468.9872 505.6047 466.3626 505.6047 c +462.1796 505.6047 L +458.735 505.6047 458.735 505.4407 458.735 500.8477 c +458.735 486.1663 L +458.735 484.1159 458.817 483.9517 460.7034 483.9517 c +465.5424 483.9517 L +472.6782 483.9517 473.9904 484.1159 474.7286 487.5605 c +475.3848 490.3493 L +475.8768 490.9233 477.4352 490.9233 477.8454 490.2671 c +477.7632 488.1347 477.5992 485.1001 477.5992 482.0653 c +477.5992 479.0307 477.7632 476.0781 477.8454 473.5355 c +477.4352 472.8793 475.8768 472.8793 475.3848 473.4533 c +474.7286 476.6521 L +473.9904 480.0969 472.6782 480.2609 465.5424 480.2609 c +460.7034 480.2609 L +458.817 480.2609 458.735 480.0969 458.735 478.0463 c +458.735 466.5637 L +458.735 457.8699 459.473 457.6237 463.328 457.2957 c +466.7728 456.8855 L +467.347 456.3115 467.2648 454.8351 466.6088 454.5071 c +461.3596 454.6711 457.6688 454.7531 454.0598 454.7531 c +450.451 454.7531 446.7602 454.6711 442.9874 454.5071 c +442.3312 454.8351 442.2492 456.3115 442.8234 456.8855 c +444.6276 457.1317 L +448.4826 457.6237 449.2208 457.8699 449.2208 466.5637 c +449.2208 497.0747 L +449.2208 505.7687 448.4826 506.0149 444.6276 506.5889 c +443.5614 506.7529 L +442.9874 507.3271 443.0694 508.8035 443.7256 509.1315 c +446.5962 508.9675 450.287 508.8855 453.8958 508.8855 C +469.3974 508.8855 l +f +*U +*u +506.6286 501.9959 m +506.6286 505.4407 506.5464 505.6047 504.414 505.6047 c +499.821 505.6047 L +492.2752 505.6047 490.0608 504.7025 487.026 498.0589 c +486.452 497.5669 484.7296 497.8129 484.4014 498.6331 c +485.7956 503.0621 487.026 508.1473 487.6002 511.0179 c +487.7642 511.2639 488.0922 511.3461 488.5024 511.3461 c +488.8304 511.3461 489.1584 511.2639 489.3226 511.0179 c +489.7326 508.9675 490.8808 508.8855 496.4582 508.8855 c +529.9218 508.8855 L +533.9408 508.8855 535.171 509.1315 536.1552 511.0179 c +536.4832 511.1819 536.8114 511.3461 537.1396 511.3461 c +537.6316 511.3461 538.0416 511.1819 538.2056 510.9359 c +537.3856 507.5731 536.7294 500.5195 536.9754 497.8949 c +536.5654 497.2389 535.171 497.0747 534.4328 497.6489 c +533.3666 504.0465 531.8082 505.6047 523.0322 505.6047 c +518.3572 505.6047 L +516.2246 505.6047 516.1426 505.4407 516.1426 501.9959 c +516.1426 466.5637 L +516.1426 457.8699 516.8808 457.6237 520.7358 457.2137 c +523.6884 456.8855 L +524.2624 456.3115 524.1806 454.8351 523.5244 454.5071 c +518.7672 454.6711 515.0764 454.7531 511.4676 454.7531 c +507.8588 454.7531 504.0038 454.6711 498.7546 454.5071 c +498.0986 454.8351 498.0164 456.4755 498.5906 456.8855 c +502.0356 457.2957 L +505.8904 457.6237 506.6286 457.8699 506.6286 466.5637 C +506.6286 501.9959 l +f +*U +1 Ap +0 R +0.9 G +0.0797 w +84.1686 502.0388 m +89.091 497.1166 L +70.6526 478.6605 L +70.3158 478.324 70.3375 477.7555 70.702 477.3919 c +71.0649 477.0283 71.6334 477.0058 71.9708 477.3432 C +90.4005 495.8064 L +95.353 490.8553 L +76.7494 472.2375 L +73.8856 469.373 69.0566 469.5595 65.9624 472.653 c +62.8696 475.7465 62.6828 480.5762 65.5476 483.44 C +84.1686 502.0388 L +b +84.2031 455.1757 m +79.2807 460.0978 L +97.7184 478.5537 L +98.0556 478.8902 98.0342 479.4589 97.6697 479.8225 c +97.3068 480.1871 96.7374 480.2086 96.4001 479.8712 C +77.9712 461.408 L +73.0196 466.3591 L +91.622 484.9769 L +94.4861 487.8415 99.315 487.655 102.4093 484.5614 c +105.5021 481.4685 105.6877 476.639 102.8241 473.7744 C +84.2031 455.1757 L +b +85.3913 454.0591 m +90.3128 458.9812 L +108.7693 440.5428 L +109.1052 440.2063 109.6739 440.2286 110.0382 440.5922 c +110.4011 440.9561 110.4243 441.5246 110.0862 441.8613 C +91.6229 460.2917 L +96.5748 465.2433 L +115.1916 446.6406 L +118.0555 443.776 117.8697 438.9462 114.7763 435.8536 c +111.6835 432.76 106.853 432.5733 103.9891 435.438 C +85.3913 454.0591 L +b +132.2538 454.0933 m +127.3313 449.1711 L +108.8755 467.6096 L +108.539 467.9461 107.9712 467.9245 107.6066 467.56 c +107.2436 467.1964 107.2207 466.6285 107.5579 466.2913 C +126.0218 447.8607 L +121.0703 442.9098 L +102.4524 461.5125 L +99.5884 464.3764 99.7744 469.2062 102.8687 472.2996 c +105.9615 475.3933 110.7918 475.5792 113.6557 472.7153 C +132.2538 454.0933 L +b +133.3701 455.2815 m +128.4479 460.2039 L +146.8872 478.6592 L +147.2229 478.9963 147.2015 479.5641 146.8369 479.9286 c +146.474 480.2925 145.9046 480.3148 145.5688 479.9774 C +127.1384 461.5134 L +122.1868 466.465 L +140.7895 485.0831 L +143.6533 487.9469 148.483 487.7611 151.5765 484.6676 c +154.6694 481.574 154.8568 476.7444 151.9928 473.8803 C +133.3701 455.2815 L +b +133.3358 502.1449 m +138.2582 497.2227 L +119.8198 478.7668 L +119.4831 478.4292 119.5047 477.8616 119.8692 477.498 c +120.2337 477.1335 120.8006 477.1119 121.138 477.4484 C +139.5691 495.9123 L +144.5202 490.9605 L +125.9183 472.3427 L +123.0528 469.4788 118.2239 469.6656 115.1313 472.7582 c +112.0368 475.8517 111.851 480.6816 114.7148 483.5454 C +133.3358 502.1449 L +b +132.1485 503.2615 m +127.2262 498.3391 L +108.7709 516.7768 L +108.4338 517.1143 107.866 517.0917 107.5014 516.7281 c +107.1369 516.3643 107.1155 515.7958 107.4527 515.4593 C +125.9167 497.0289 L +120.9642 492.0771 L +102.347 510.6797 L +99.4832 513.5436 99.669 518.3734 102.7619 521.467 c +105.8554 524.5605 110.685 524.7464 113.5489 521.8825 C +132.1485 503.2615 L +b +85.2842 503.2273 m +90.2073 508.1494 L +108.6625 489.711 L +109 489.3745 109.5678 489.3958 109.9314 489.7595 c +110.2957 490.124 110.3182 490.6918 109.9808 491.0292 C +91.5169 509.4589 L +96.4695 514.4105 L +115.0865 495.8078 L +117.9503 492.9439 117.7645 488.1143 114.6709 485.0208 c +111.5783 481.9272 106.7478 481.7414 103.8839 484.6053 C +85.2842 503.2273 L +b +u +*u +0 Ap +1 w +193.219 433.6811 m +196.0814 445.6746 L +199.1037 445.6746 L +201.8222 433.6811 L +199.4235 433.6811 L +198.8319 436.7195 L +196.2093 436.7195 L +195.6176 433.6811 L +193.219 433.6811 l +f +1 D +196.5611 438.4785 m +198.4801 438.4785 L +197.8724 441.8846 L +197.7605 442.4443 197.7125 442.988 197.6485 443.5477 c +197.6325 443.8196 197.6006 444.0914 197.5686 444.3473 c +197.5366 444.3473 L +197.5046 444.0914 197.4726 443.8196 197.4566 443.5477 c +197.3927 442.988 197.3447 442.4443 197.2328 441.8846 C +196.5611 438.4785 l +f +*U +*u +0 D +218.0943 442.0286 m +218.1103 443.1 218.0144 444.1554 216.783 444.1554 c +216.0315 444.1554 215.5517 443.8516 215.5517 443.036 c +215.5517 442.1245 216.1274 441.7727 216.831 441.3249 c +217.5666 440.8612 218.9259 439.9657 219.5495 439.358 c +220.3171 438.6064 220.557 437.8868 220.557 436.8474 c +220.557 434.5767 219.0538 433.3933 216.863 433.3933 c +214.1765 433.3933 213.217 434.8965 213.217 437.0393 c +213.217 437.9188 L +215.4558 437.9188 L +215.4558 437.2152 L +215.4078 436.0478 215.7596 435.2003 216.863 435.2003 c +217.8065 435.2003 218.2542 435.696 218.2542 436.6075 c +218.2542 437.3112 217.9344 437.7909 217.3587 438.1907 c +216.1914 439.1022 214.7362 439.7578 213.8247 440.9571 c +213.4569 441.5009 213.249 442.1565 213.249 442.7961 c +213.249 444.843 214.4004 445.9624 216.7671 445.9624 c +220.3331 445.9624 220.2371 443.2119 220.2531 442.0286 C +218.0943 442.0286 l +f +*U +*u +228.8296 435.0244 m +228.7976 435.0244 L +228.4777 433.953 227.8701 433.4573 226.8626 433.4413 c +225.2155 433.4413 224.8477 434.2888 224.8477 435.792 c +224.8477 442.7002 L +226.9266 442.7002 L +226.9266 436.5276 L +226.9266 436.1278 226.9106 435.68 227.1345 435.3282 c +227.3104 435.1363 227.5023 435.0404 227.7741 435.0404 c +228.7496 435.0404 228.7336 436.1438 228.7336 436.8474 c +228.7336 442.7002 L +230.8125 442.7002 L +230.8125 433.6811 L +228.8296 433.6811 L +228.8296 435.0244 l +f +*U +*u +238.2065 441.7727 m +238.2385 441.7727 L +238.7022 442.8121 239.6297 442.9401 240.1095 442.9401 c +241.2928 442.9401 242.2523 442.2524 242.1883 440.6373 c +242.1883 433.6811 L +240.1095 433.6811 L +240.1095 439.6938 L +240.1095 440.5734 240.0135 441.149 239.2299 441.181 c +238.4464 441.213 238.1745 440.4774 238.2065 439.5179 c +238.2065 433.6811 L +236.1277 433.6811 L +236.1277 442.7002 L +238.2065 442.7002 L +238.2065 441.7727 l +f +*U +*u +257.0861 433.6811 m +254.8474 433.6811 L +254.8474 445.6746 L +258.4134 445.6746 L +259.6128 440.1096 L +259.8047 439.1981 259.9326 438.2706 260.0285 437.3431 c +260.0605 437.3431 L +260.1725 438.5265 260.2524 439.326 260.4123 440.1096 c +261.6117 445.6746 L +265.1617 445.6746 L +265.1617 433.6811 L +262.9229 433.6811 L +262.9229 437.4551 L +262.9229 439.8378 262.9709 442.2205 263.1148 444.6031 c +263.0829 444.6031 L +260.6842 433.6811 L +259.3249 433.6811 L +256.9742 444.6031 L +256.8943 444.6031 L +257.0382 442.2205 257.0861 439.8378 257.0861 437.4551 C +257.0861 433.6811 l +f +*U +*u +270.6366 433.6811 m +270.6366 442.7002 L +272.7154 442.7002 L +272.7154 433.6811 L +270.6366 433.6811 l +f +1 D +270.6366 443.7876 m +270.6366 445.6746 L +272.7154 445.6746 L +272.7154 443.7876 L +270.6366 443.7876 l +f +*U +*u +0 D +281.3204 439.5659 m +281.3204 440.5734 L +281.2884 441.0691 281.0485 441.3409 280.6008 441.3409 c +279.8012 441.3409 279.8012 440.4294 279.8172 439.326 c +279.8172 437.1992 L +279.7693 435.4402 279.9771 435.1204 280.6008 435.0404 c +281.2404 435.0564 281.2564 435.6481 281.3204 436.3677 c +281.3204 437.1992 L +283.3993 437.1992 L +283.3993 436.3677 L +283.3993 434.4807 282.6157 433.4413 280.5528 433.4413 c +278.7138 433.4413 277.6584 434.4167 277.7384 436.8154 c +277.7384 439.7418 L +277.7224 442.2684 278.9697 442.9401 280.5528 442.9401 c +282.6477 442.9401 283.4152 441.6288 283.3993 440.2855 c +283.3993 439.5659 L +281.3204 439.5659 l +f +*U +*u +290.2627 441.1011 m +290.2946 441.1011 L +290.5505 441.7567 290.8064 442.1245 291.1102 442.3804 c +291.7019 442.8761 292.1016 442.8441 292.4055 442.8601 c +292.4055 440.3975 L +291.2541 440.5094 290.3746 440.2216 290.3426 438.8943 c +290.3426 433.6811 L +288.2638 433.6811 L +288.2638 442.7002 L +290.2627 442.7002 L +290.2627 441.1011 l +f +*U +*u +296.708 437.8708 m +296.724 440.9571 296.7559 442.9401 299.8902 442.9401 c +302.9765 442.9401 302.9925 440.9571 303.0085 437.8708 c +303.0245 434.7366 302.5767 433.3933 299.8902 433.4413 c +297.1557 433.3933 296.692 434.7366 296.708 437.8708 c +f +1 D +298.7868 436.6235 m +298.7868 435.5201 298.8828 435.0404 299.8902 435.0404 c +300.8497 435.0404 300.9297 435.5201 300.9297 436.6235 c +300.9297 439.6299 L +300.9297 440.4774 300.9297 441.3409 299.8902 441.3409 c +298.7868 441.3409 298.7868 440.4774 298.7868 439.6299 C +298.7868 436.6235 l +f +*U +*u +0 D +309.619 436.6555 m +309.4591 434.9924 310.0987 435.0404 310.5785 435.0404 c +311.1701 435.0404 311.5859 435.4722 311.442 436.0478 c +311.41 436.5596 310.8183 436.8474 310.4185 437.1193 c +309.2832 437.9028 L +308.2437 438.6224 307.5721 439.454 307.5721 440.7493 c +307.5721 442.1405 308.6755 442.9401 310.6744 442.9401 c +312.6893 442.9401 313.6168 441.8846 313.5688 439.9497 c +311.49 439.9497 L +311.5379 440.9571 311.2501 441.3409 310.5305 441.3409 c +310.0348 441.3409 309.651 441.1171 309.651 440.6053 c +309.651 440.0776 310.0348 439.8378 310.4345 439.5659 c +312.1296 438.4145 L +312.6573 438.1107 313.4889 437.2472 313.5528 436.6395 c +313.7287 435.0724 313.3449 433.4413 310.4665 433.4413 c +309.3631 433.4413 307.3003 433.905 307.5401 436.6555 C +309.619 436.6555 l +f +*U +*u +319.6966 442.7002 m +320.6081 437.9188 L +320.752 437.1193 320.832 436.3197 320.912 435.5201 c +320.9439 435.5201 L +321.0079 436.3037 321.1198 437.0873 321.2638 437.8549 c +322.1753 442.7002 L +324.2861 442.7002 L +322.0953 433.5532 L +321.5676 431.5063 321.5196 430.227 318.6412 430.6428 c +318.6412 432.2579 L +318.977 432.2579 319.8725 432.082 319.8725 432.6577 c +319.8725 432.9775 319.7606 433.4893 319.6806 433.8091 c +317.5058 442.7002 L +319.6966 442.7002 l +f +*U +*u +329.9662 436.6555 m +329.8062 434.9924 330.4459 435.0404 330.9256 435.0404 c +331.5173 435.0404 331.9331 435.4722 331.7891 436.0478 c +331.7572 436.5596 331.1655 436.8474 330.7657 437.1193 c +329.6303 437.9028 L +328.5909 438.6224 327.9193 439.454 327.9193 440.7493 c +327.9193 442.1405 329.0227 442.9401 331.0216 442.9401 c +333.0365 442.9401 333.964 441.8846 333.916 439.9497 c +331.8371 439.9497 L +331.8851 440.9571 331.5973 441.3409 330.8777 441.3409 c +330.3819 441.3409 329.9981 441.1171 329.9981 440.6053 c +329.9981 440.0776 330.3819 439.8378 330.7817 439.5659 c +332.4768 438.4145 L +333.0045 438.1107 333.836 437.2472 333.9 436.6395 c +334.0759 435.0724 333.6921 433.4413 330.8137 433.4413 c +329.7103 433.4413 327.6474 433.905 327.8873 436.6555 C +329.9662 436.6555 l +f +*U +*u +341.9627 433.6492 m +340.7314 433.5052 339.0044 433.3933 339.0044 435.0724 c +339.0044 441.181 L +338.1568 441.181 L +338.1568 442.7002 L +338.9884 442.7002 L +338.9884 445.1788 L +341.0832 445.1788 L +341.0832 442.7002 L +341.9627 442.7002 L +341.9627 441.181 L +341.0832 441.181 L +341.0832 435.5841 L +341.1312 435.2003 341.7069 435.2483 341.9627 435.2803 C +341.9627 433.6492 l +f +*U +*u +346.4417 439.5979 m +346.3458 441.7247 347.4332 442.9401 349.4801 442.9401 c +352.3745 442.9401 352.6783 441.4369 352.6783 438.9742 c +352.6783 437.7589 L +348.5206 437.7589 L +348.5206 436.4476 L +348.5366 435.2643 348.9843 435.0404 349.608 435.0404 c +350.3756 435.0404 350.5995 435.6001 350.5675 436.7355 c +352.6463 436.7355 L +352.7263 434.7206 351.8947 433.4413 349.7679 433.4413 c +347.3692 433.4413 346.3938 434.5767 346.4417 437.2312 C +346.4417 439.5979 l +f +1 D +350.5995 439.358 m +350.5995 440.1416 L +350.5835 441.0531 350.3436 441.3409 349.5121 441.3409 c +348.4726 441.3409 348.5206 440.5414 348.5206 439.7258 c +348.5206 439.358 L +350.5995 439.358 l +f +*U +*u +0 D +359.9764 441.7727 m +360.0084 441.7727 L +360.4721 442.7642 361.3197 442.9081 361.9913 442.9401 c +362.7589 442.9561 363.7823 442.6202 363.9262 441.7727 c +364.342 442.5563 364.9976 442.9401 366.0211 442.9401 c +367.5562 442.9401 368.2279 441.9806 368.2279 441.0211 c +368.2279 433.6811 L +366.149 433.6811 L +366.149 439.7738 L +366.149 440.5894 366.0691 441.3889 365.1576 441.3409 c +364.2621 441.293 364.1021 440.6693 364.1021 439.6139 c +364.1021 433.6811 L +362.0233 433.6811 L +362.0233 439.8857 L +362.0233 440.6853 361.9593 441.3569 360.9998 441.3409 c +360.0244 441.3249 359.9764 440.6053 359.9764 439.6139 c +359.9764 433.6811 L +357.8975 433.6811 L +357.8975 442.7002 L +359.9764 442.7002 L +359.9764 441.7727 l +f +*U +*u +375.046 436.6555 m +374.8861 434.9924 375.5257 435.0404 376.0055 435.0404 c +376.5971 435.0404 377.0129 435.4722 376.869 436.0478 c +376.837 436.5596 376.2453 436.8474 375.8455 437.1193 c +374.7102 437.9028 L +373.6707 438.6224 372.9991 439.454 372.9991 440.7493 c +372.9991 442.1405 374.1025 442.9401 376.1014 442.9401 c +378.1163 442.9401 379.0438 441.8846 378.9958 439.9497 c +376.917 439.9497 L +376.9649 440.9571 376.6771 441.3409 375.9575 441.3409 c +375.4618 441.3409 375.078 441.1171 375.078 440.6053 c +375.078 440.0776 375.4618 439.8378 375.8615 439.5659 c +377.5566 438.4145 L +378.0843 438.1107 378.9159 437.2472 378.9798 436.6395 c +379.1557 435.0724 378.7719 433.4413 375.8935 433.4413 c +374.7901 433.4413 372.7273 433.905 372.9671 436.6555 C +375.046 436.6555 l +f +*U +*u +384.468 432.066 m +385.2196 432.146 385.6353 432.8176 385.5874 433.6811 c +384.468 433.6811 L +384.468 435.792 L +386.5788 435.792 L +386.5788 433.7291 L +386.5788 432.3699 385.8752 431.5383 384.468 431.3624 C +384.468 432.066 l +f +*U +*u +399.7444 433.6811 m +399.7444 445.6746 L +401.9831 445.6746 L +401.9831 433.6811 L +399.7444 433.6811 l +f +*U +*u +409.3725 441.7727 m +409.4045 441.7727 L +409.8683 442.8121 410.7957 442.9401 411.2755 442.9401 c +412.4588 442.9401 413.4183 442.2524 413.3543 440.6373 c +413.3543 433.6811 L +411.2755 433.6811 L +411.2755 439.6938 L +411.2755 440.5734 411.1795 441.149 410.396 441.181 c +409.6124 441.213 409.3405 440.4774 409.3725 439.5179 c +409.3725 433.6811 L +407.2937 433.6811 L +407.2937 442.7002 L +409.3725 442.7002 L +409.3725 441.7727 l +f +*U +*u +421.8997 439.5659 m +421.8997 440.5734 L +421.8678 441.0691 421.6279 441.3409 421.1801 441.3409 c +420.3806 441.3409 420.3806 440.4294 420.3966 439.326 c +420.3966 437.1992 L +420.3486 435.4402 420.5565 435.1204 421.1801 435.0404 c +421.8198 435.0564 421.8358 435.6481 421.8997 436.3677 c +421.8997 437.1992 L +423.9786 437.1992 L +423.9786 436.3677 L +423.9786 434.4807 423.195 433.4413 421.1322 433.4413 c +419.2932 433.4413 418.2378 434.4167 418.3177 436.8154 c +418.3177 439.7418 L +418.3017 442.2684 419.549 442.9401 421.1322 442.9401 c +423.227 442.9401 423.9946 441.6288 423.9786 440.2855 c +423.9786 439.5659 L +421.8997 439.5659 l +f +*U +*u +429.3391 433.6811 m +429.3391 435.792 L +431.4499 435.792 L +431.4499 433.6811 L +429.3391 433.6811 l +f +*U +*u +444.5515 433.6811 m +444.5515 445.6746 L +448.1655 445.6746 L +449.125 445.6746 450.0684 445.6106 450.7081 444.795 c +451.2198 444.1394 451.2998 443.4518 451.2998 442.6362 c +451.2998 441.5968 451.0759 440.5734 449.8606 440.1256 c +449.8606 440.0936 L +451.1239 439.9177 451.6036 438.8623 451.6036 437.3112 c +451.6036 436.8154 451.5716 436.3197 451.4437 435.84 c +450.964 434.3208 450.1004 433.6811 448.5013 433.6811 C +444.5515 433.6811 l +f +1 D +447.27 435.4402 m +447.7337 435.4402 448.2135 435.3922 448.6132 435.5681 c +449.2209 435.84 449.3009 436.6235 449.3009 437.2312 c +449.3009 438.5265 449.045 439.0702 447.6538 439.0702 c +446.7902 439.0702 L +446.7902 435.4402 L +447.27 435.4402 l +f +447.206 440.8292 m +447.7497 440.8292 448.4533 440.7972 448.8051 441.245 c +449.013 441.5488 449.045 441.9646 449.045 442.5403 c +449.045 443.4358 448.8531 443.8835 447.8297 443.9155 c +446.7902 443.9155 L +446.7902 440.8292 L +447.206 440.8292 l +f +*U +*u +0 D +460.5478 435.0244 m +460.5158 435.0244 L +460.196 433.953 459.5883 433.4573 458.5809 433.4413 c +456.9338 433.4413 456.566 434.2888 456.566 435.792 c +456.566 442.7002 L +458.6449 442.7002 L +458.6449 436.5276 L +458.6449 436.1278 458.6289 435.68 458.8527 435.3282 c +459.0287 435.1363 459.2205 435.0404 459.4924 435.0404 c +460.4679 435.0404 460.4519 436.1438 460.4519 436.8474 c +460.4519 442.7002 L +462.5307 442.7002 L +462.5307 433.6811 L +460.5478 433.6811 L +460.5478 435.0244 l +f +*U +*u +469.3971 436.6555 m +469.2371 434.9924 469.8768 435.0404 470.3565 435.0404 c +470.9482 435.0404 471.364 435.4722 471.2201 436.0478 c +471.1881 436.5596 470.5964 436.8474 470.1966 437.1193 c +469.0612 437.9028 L +468.0218 438.6224 467.3502 439.454 467.3502 440.7493 c +467.3502 442.1405 468.4536 442.9401 470.4525 442.9401 c +472.4674 442.9401 473.3949 441.8846 473.3469 439.9497 c +471.268 439.9497 L +471.316 440.9571 471.0282 441.3409 470.3086 441.3409 c +469.8128 441.3409 469.429 441.1171 469.429 440.6053 c +469.429 440.0776 469.8128 439.8378 470.2126 439.5659 c +471.9077 438.4145 L +472.4354 438.1107 473.2669 437.2472 473.3309 436.6395 c +473.5068 435.0724 473.123 433.4413 470.2446 433.4413 c +469.1412 433.4413 467.0783 433.905 467.3182 436.6555 C +469.3971 436.6555 l +f +*U +*u +478.3873 433.6811 m +478.3873 442.7002 L +480.4662 442.7002 L +480.4662 433.6811 L +478.3873 433.6811 l +f +478.3873 443.7876 m +478.3873 445.6746 L +480.4662 445.6746 L +480.4662 443.7876 L +478.3873 443.7876 l +f +*U +*u +487.9355 441.7727 m +487.9675 441.7727 L +488.4312 442.8121 489.3587 442.9401 489.8385 442.9401 c +491.0218 442.9401 491.9813 442.2524 491.9173 440.6373 c +491.9173 433.6811 L +489.8385 433.6811 L +489.8385 439.6938 L +489.8385 440.5734 489.7425 441.149 488.9589 441.181 c +488.1754 441.213 487.9035 440.4774 487.9355 439.5179 c +487.9355 433.6811 L +485.8567 433.6811 L +485.8567 442.7002 L +487.9355 442.7002 L +487.9355 441.7727 l +f +*U +*u +497.1046 439.5979 m +497.0086 441.7247 498.096 442.9401 500.1429 442.9401 c +503.0373 442.9401 503.3412 441.4369 503.3412 438.9742 c +503.3412 437.7589 L +499.1834 437.7589 L +499.1834 436.4476 L +499.1994 435.2643 499.6472 435.0404 500.2708 435.0404 c +501.0384 435.0404 501.2623 435.6001 501.2303 436.7355 c +503.3092 436.7355 L +503.3891 434.7206 502.5576 433.4413 500.4308 433.4413 c +498.0321 433.4413 497.0566 434.5767 497.1046 437.2312 C +497.1046 439.5979 l +f +501.2623 439.358 m +501.2623 440.1416 L +501.2463 441.0531 501.0064 441.3409 500.1749 441.3409 c +499.1355 441.3409 499.1834 440.5414 499.1834 439.7258 c +499.1834 439.358 L +501.2623 439.358 l +f +*U +*u +509.7118 436.6555 m +509.5518 434.9924 510.1915 435.0404 510.6712 435.0404 c +511.2629 435.0404 511.6787 435.4722 511.5348 436.0478 c +511.5028 436.5596 510.9111 436.8474 510.5113 437.1193 c +509.3759 437.9028 L +508.3365 438.6224 507.6649 439.454 507.6649 440.7493 c +507.6649 442.1405 508.7683 442.9401 510.7672 442.9401 c +512.7821 442.9401 513.7096 441.8846 513.6616 439.9497 c +511.5827 439.9497 L +511.6307 440.9571 511.3429 441.3409 510.6233 441.3409 c +510.1275 441.3409 509.7437 441.1171 509.7437 440.6053 c +509.7437 440.0776 510.1275 439.8378 510.5273 439.5659 c +512.2224 438.4145 L +512.7501 438.1107 513.5816 437.2472 513.6456 436.6395 c +513.8215 435.0724 513.4377 433.4413 510.5593 433.4413 c +509.4559 433.4413 507.393 433.905 507.6329 436.6555 C +509.7118 436.6555 l +f +*U +*u +520.0453 436.6555 m +519.8853 434.9924 520.525 435.0404 521.0047 435.0404 c +521.5964 435.0404 522.0122 435.4722 521.8683 436.0478 c +521.8363 436.5596 521.2446 436.8474 520.8448 437.1193 c +519.7094 437.9028 L +518.67 438.6224 517.9984 439.454 517.9984 440.7493 c +517.9984 442.1405 519.1018 442.9401 521.1007 442.9401 c +523.1156 442.9401 524.0431 441.8846 523.9951 439.9497 c +521.9162 439.9497 L +521.9642 440.9571 521.6764 441.3409 520.9568 441.3409 c +520.461 441.3409 520.0772 441.1171 520.0772 440.6053 c +520.0772 440.0776 520.461 439.8378 520.8608 439.5659 c +522.5559 438.4145 L +523.0836 438.1107 523.9151 437.2472 523.9791 436.6395 c +524.155 435.0724 523.7712 433.4413 520.8928 433.4413 c +519.7894 433.4413 517.7265 433.905 517.9664 436.6555 C +520.0453 436.6555 l +f +*U +U +U +LB +%AI5_EndLayer-- +%%PageTrailer +gsave annotatepage grestore showpage +%%Trailer +Adobe_IllustratorA_AI5 /terminate get exec +Adobe_level2_AI5 /terminate get exec +%%EOF + +%%EndDocument +FMENDEPSF +0 0 0 1 0 0 0 K +36.67 90 225 630 R +7 X +0 0 0 1 0 0 0 K +V +1 9 Q +0 X +0.47 0.09 (2550 Gar) 36.67 624 B +0.47 0.09 (cia A) 72.86 624 B +0.47 0.09 (venue) 93.32 624 B +0.47 0.09 (Mountain V) 36.67 613 B +0.47 0.09 (iew) 85.67 613 B +0.47 0.09 (, CA 94043) 99.55 613 B +0.09 (408-343-1400) 36.67 602 S +0.47 0.09 (For U.S. Sales Of) 36.67 580 B +0.47 0.09 (\336ce locations, call:) 105.93 580 B +0.47 0.09 (800 821-4643) 36.67 569 B +0.47 0.09 (In California:) 36.67 558 B +0.47 0.09 (800 821-4642) 36.67 547 B +0.47 0.09 (Australia: \05002\051 844 5000) 36.67 525 B +0.47 0.09 (Belgium: 32 2 716 791) 36.67 514 B +0.47 0.09 (1) 125.11 514 B +0.47 0.09 (Canada: 416 477-6745) 36.67 503 B +0.47 0.09 (Finland: +358-0-525561) 36.67 492 B +0.47 0.09 (France: \0501\051 30 67 50 00) 36.67 481 B +0.47 0.09 (Germany: \0500\051 89-46 00 8-0) 36.67 470 B +0.47 0.09 (Hong Kong: 852 802 4188) 36.67 459 B +0.47 0.09 (Italy: 039 60551) 36.67 448 B +0.47 0.09 (Japan: \05003\051 5717-5000) 36.67 437 B +0.47 0.09 (Kor) 36.67 426 B +0.47 0.09 (ea: 822-563-8700) 51.78 426 B +0.47 0.09 (Latin America: 415 688-9464) 36.67 415 B +0.47 0.09 (The Netherlands: 033 501234) 36.67 404 B +0.47 0.09 (New Zealand: \05004\051 499 2344) 36.67 393 B +0.47 0.09 (Nor) 36.67 382 B +0.47 0.09 (dic Countries: +46 \0500\051 8 623 90 00) 52.72 382 B +0.47 0.09 (PRC: 861-849 2828) 36.67 371 B +0.47 0.09 (Singapor) 36.67 360 B +0.47 0.09 (e: 224 3388) 73.19 360 B +0.47 0.09 (Spain: \05091\051 5551648) 36.67 349 B +0.47 0.09 (Switzerland: \0501\051 825 71 1) 36.67 338 B +0.47 0.09 (1) 137.04 338 B +0.47 0.09 (T) 36.67 327 B +0.47 0.09 (aiwan: 2-514-0567) 41.45 327 B +0.47 0.09 (UK: 0276 20444) 36.67 316 B +0.47 0.09 (Elsewher) 36.67 294 B +0.47 0.09 (e in the world,) 74.08 294 B +0.47 0.09 (call Corporate Headquarters:) 36.67 283 B +0.47 0.09 (415 960-1300) 36.67 272 B +0.47 0.09 (Inter) 36.67 261 B +0.47 0.09 (continental Sales: 415 688-9000) 56.03 261 B +0 0 0 1 0 0 0 K +[/CropBox[0 72 FmDC 612 720 FmDC FmBx]/PAGE FmPD +[/Dest/P.25/DEST FmPD2 +[/Dest/F.BackCoverdoc/DEST FmPD2 +[/Dest/L.BackCoverdoc/DEST FmPD2 +[/Page 1/View[/XYZ null 198 763 FmDC exch pop null]/Title(The Java\222 Platform)/Count 3/OUT FmPD +[/Page 1/View[/XYZ null 198 741 FmDC exch pop null]/Title(A White Paper)/Count 1/OUT FmPD +[/Page 1/View[/XYZ null 198 675 FmDC exch pop null]/Title(Douglas Kramer)/Count -2/OUT FmPD +[/Page 3/View[/XYZ null 198 667 FmDC exch pop null]/Title(The Java\222 Platform)/OUT FmPD +[/Page 5/View[/XYZ null 198 667 FmDC exch pop null]/Title(The Java\222 Platform)/OUT FmPD +[/Page 6/View[/XYZ null 54 792 FmDC exch pop null]/Title(What is the Java Platform?)/Count 8/OUT FmPD +[/Page 7/View[/XYZ null 160 658 FmDC exch pop null]/Title(The Java Base Platform)/OUT FmPD +[/Page 7/View[/XYZ null 160 372 FmDC exch pop null]/Title(The Embedded Java Platform)/OUT FmPD +[/Page 8/View[/XYZ null 160 690 FmDC exch pop null]/Title(Benefits of the Java Platform)/Count -3/OUT FmPD +[/Page 8/View[/XYZ null 198 624 FmDC exch pop null]/Title(End-User Benefits)/OUT FmPD +[/Page 8/View[/XYZ null 198 523 FmDC exch pop null]/Title(Developer Benefits)/OUT FmPD +[/Page 9/View[/XYZ null 198 792 FmDC exch pop null]/Title(Administrative and Support Benefits)/OUT FmPD +[/Page 9/View[/XYZ null 160 507 FmDC exch pop null]/Title(Applets and Applications)/OUT FmPD +[/Page 10/View[/XYZ null 160 554 FmDC exch pop null]/Title(Where Will the Java Platform Be Deployed?)/OUT FmPD +[/Page 11/View[/XYZ null 160 446 FmDC exch pop null]/Title(JavaChip\222 Family)/OUT FmPD +[/Page 12/View[/XYZ null 160 714 FmDC exch pop null]/Title(JavaOS\222)/OUT FmPD +[/Page 12/View[/XYZ null 160 512 FmDC exch pop null]/Title(A Word About the Java Language)/OUT FmPD +[/Page 14/View[/XYZ null 54 792 FmDC exch pop null]/Title(A Look Inside the Java Platform)/OUT FmPD +[/Page 14/View[/XYZ null 320 421 FmDC exch pop null]/Title(Java Virtual Machine)/Count 4/OUT FmPD +[/Page 15/View[/XYZ null 160 518 FmDC exch pop null]/Title(Java Virtual Machine)/OUT FmPD +[/Page 16/View[/XYZ null 160 714 FmDC exch pop null]/Title(Java Base API)/Count 1/OUT FmPD +[/Page 16/View[/XYZ null 198 568 FmDC exch pop null]/Title(Java Applet API)/OUT FmPD +[/Page 16/View[/XYZ null 160 455 FmDC exch pop null]/Title(Java Standard Extension API)/Count 6/OUT FmPD +[/Page 17/View[/XYZ null 198 519 FmDC exch pop null]/Title(Java Security API)/OUT FmPD +[/Page 18/View[/XYZ null 198 792 FmDC exch pop null]/Title(Java Media API)/OUT FmPD +[/Page 19/View[/XYZ null 198 468 FmDC exch pop null]/Title(Java Enterprise API)/OUT FmPD +[/Page 20/View[/XYZ null 198 534 FmDC exch pop null]/Title(Java Commerce API)/OUT FmPD +[/Page 21/View[/XYZ null 198 516 FmDC exch pop null]/Title(Java Server API)/OUT FmPD +[/Page 22/View[/XYZ null 198 792 FmDC exch pop null]/Title(Java Management API)/OUT FmPD +[/Page 24/View[/XYZ null 54 792 FmDC exch pop null]/Title(Java Compile and Runtime Environments)/OUT FmPD +FMENDPAGE +%%EndPage: "25" 25 +%%Trailer +%%BoundingBox: 0 0 612 792 +%%PageOrder: Ascend +%%Pages: 25 +%%DocumentFonts: Palatino-Italic +%%+ Palatino-Roman +%%+ Symbol +%%+ Palatino-Bold +%%+ Times-Roman +%%+ Courier +%%+ Times-Bold +%%+ Helvetica +%%+ Helvetica-Bold +%%+ Helvetica-Narrow-Bold +%%EOF diff --git a/vendor/github.com/llgcode/ps/samples/Koch.ps b/vendor/github.com/llgcode/ps/samples/Koch.ps new file mode 100644 index 0000000..539432c --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/Koch.ps @@ -0,0 +1,76 @@ +%%% Start of L-system definition + +/STARTK { FK plusK plusK FK plusK plusK FK} def +/FK { + dup 0 eq + { DK } % if the recursion order ends, draw forward + { + 1 sub % recurse + 4 {dup} repeat % dup the number of parameters (order) needed. + FK minusK FK plusK plusK FK minusK FK } + ifelse + pop % pop the dup'd order +} bind def + +/angleK 60 def + +/minusK { % rotation to the right + angleK neg rotate +} bind def + +/plusK { % rotation to the left + angleK rotate +} bind def + +%%% End of L-System definition + +/DK { sizeK 3 orderK exp div 0 rlineto } bind def +/thicknessK {1 orderK dup mul div} bind def + +%%% Scaling factors + +/orderK 3 def +/sizeK 300 def + +%%% Draws a Koch's snowflake of radius 180 at 0 0 + +/Koch180 { + gsave + newpath + thicknessK setlinewidth + 200 300 60 cos mul add + neg + 200 100 60 sin mul add + neg + translate + 200 200 moveto + orderK orderK orderK STARTK + stroke + closepath + grestore +} def % receives nothing + +%%% Draws an arbitrary Koch's snowflake + +/Koch { + /orderK exch store + gsave + 3 1 roll + translate + 180 div dup scale + rand 360 mod rotate + Koch180 + grestore +} def % Receives x y size order + + +%%% Sample, bounded by an arc + + 400 400 100 3 Koch + newpath + 400 400 + 100 0 360 arc + stroke + closepath + +showpage \ No newline at end of file diff --git a/vendor/github.com/llgcode/ps/samples/Mand.ps b/vendor/github.com/llgcode/ps/samples/Mand.ps new file mode 100644 index 0000000..1f0d427 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/Mand.ps @@ -0,0 +1,68 @@ +%!PS-Adobe-2.0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Mandelbrot set via PostScript code. Not optimized % +% in any way. Centered in A4 paper. Escape time, B&W % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +/fun { + 4 3 roll % y c1 c2 x + dup dup % y c1 c2 x x x + mul % y c1 c2 x x^2 + 5 4 roll % c1 c2 x x^2 y + dup dup mul % c1 c2 x x^2 y y^2 + 2 index exch sub % c1 c2 x x^2 y (x^2-y^2) + 6 1 roll 2 index % (x^2-y^2) c1 c2 x x^2 y x + 2 mul mul % (x^2-y^2) c1 c2 x x^2 2xy + 6 1 roll % 2xy (x^2-y^2) c1 c2 x x^2 + pop pop 4 1 roll % c2 2xy (x^2-y^2) c1 + dup 5 1 roll add % c1 c2 2xy (x^2-y^2+c1) + 4 1 roll % (x^2-y^2+c1) c1 c2 2xy + 1 index % (x^2-y^2+c1) c1 c2 2xy c2 + add 4 3 roll % c1 c2 (2xy+c2) (x^2-y^2+c1) + exch 4 2 roll % (x^2-y^2+c1) (2xy+c2) c1 c2 +} def + +/res 500 def +/iter 50 def + + +300 300 translate +90 rotate +-150 -260 translate +0 1 res { + /x exch def + 0 1 res { + /y exch def + 0 0 + -2.5 4 x mul res div add + 2 4 y mul res div sub + iter -1 0 { + /n exch store + fun + 2 index dup mul + 4 index dup mul + add sqrt + 4 gt + {exit} if + } for + pop pop pop pop + + + n 0 gt + {1 setgray + x y 0.7 0 360 arc + fill + } + { + 0 setgray + x y 0.5 0 360 arc + fill + } ifelse + } for + }for +showpage + + \ No newline at end of file diff --git a/vendor/github.com/llgcode/ps/samples/bell_206.ps b/vendor/github.com/llgcode/ps/samples/bell_206.ps new file mode 100644 index 0000000..d3e1d0e --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/bell_206.ps @@ -0,0 +1,3537 @@ +%!PS-Adobe-3.0 +%%Creator: GIMP PostScript file plugin V 1.11 by Peter Kirchgessner +%%Title: C:\Documents and Settings\burkardt\My Documents\bell_206.ps +%%CreationDate: Fri Feb 08 10:41:12 2002 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 275 815 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228 14.173228 translate +% Translate to begin of first scanline +0.000000 800.000000 translate +260.000000 -800.000000 scale +% Image geometry +260 800 8 +% Transformation matrix +[ 260 0 0 800 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 260 string def +/gstr 260 string def +/bstr 260 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 188979 ASCII Bytes +colorimage +JcELb!c9aT_Z,,~> +JcELb!c9aT_Z,,~> +JcELb!c9gV_Z,,~> +JcELb!b+i-_Z,,~> +JcELb!b+i-_Z,,~> +JcELb!b+i/_Z,,~> +JcELb",]cGTu6n\~> +JcELb",]cGTu6n\~> +JcELb",]cGTu6n\~> +JcELb"JJL_:$T[sJ,~> +JcELb"JJL_:$T[sJ,~> +JcELb"JJL_:$on!J,~> +JcELb!4i)&!,][SJ,~> +JcELb!4i)&!,][SJ,~> +JcELb!4i)&!,][SJ,~> +JcELb"k$(<:/&LCs*t~> +JcELb"k$(<:/&LCs*t~> +JcELb"k$(<:/&LCs*t~> +JcELb!:]t]!`!A"`rCP~> +JcELb!:]t]!`!A"`rCP~> +JcELb!:]t]!`!A"`rCP~> +JcELb#5M"f9MJ*]`rCP~> +JcELb#5M"f9MJ*]`rCP~> +JcELb#5M"f9MJ*]`rCP~> +JcELb#Q7Xr9MLs7lGrpT~> +JcELb#Q7Xr9MLs7lGrpT~> +JcELb#Q7Xr9MLs9mDo6W~> +JcEIa!+Pq$"/UTuoZ7&_~> +JcEIa!+Pq$"/UTuoZ7&_~> +JcEIa!+Pq$"/UTuoZ7&_~> +JcEIa#C0!:9nhjk`lS11~> +JcEIa#C0!:9nhjk`lS11~> +JcEIa#CB-<9nhsp`lS11~> +JcEIa#a%eS9kOF.8b'q&J,~> +JcEIa#a%eS9kOF.8b'q&J,~> +JcEIa#a%eS9kOF.8b'q&J,~> +JcEIa!2]Zg"B56jBp$O;J,~> +JcEIa!2]Zg"B>6iBp$O;J,~> +JcEIa!2]Zg"BGBlC6?X +JcEIa!5e_/"\nLdiA9oEs*t~> +JcEIa!5e_/"\nLdiA9oEs*t~> +JcEIa!65"3"\nLdiAL&Gs*t~> +JcEIa!8[WJ"\mGFmPF:Rs*t~> +JcEIa!8[WJ"\mGFmPF:Rs*t~> +JcEIa!8[WJ"\mGFmPXFTs*t~> +JcEIa$1U_`9MM\io/kdNs*t~> +JcEIa$1U_`9MM\io/kdNs*t~> +JcEIa$1U_`9MM\io/kdNs*t~> +JcEIa$2IFl9MLQIoO>,Ks*t~> +JcEIa$2IFl9MLQIoO>,Ks*t~> +JcEIa$2IFl9MLQIoO>5Ns*t~> +JcEIa$N=1%9MK=&s,N-3bQ!(~> +JcEIa$N=1%9MK=&s,N-3bQ!(~> +JcEIa$N=4&9MKF)s,N-3bQ!(~> +JcEF`!+u4("]bR%Y&3gSs*t~> +JcEF`!+u4("]bR%Y&3gSs*t~> +JcEF`!+u4("]bR%Y&3gSs*t~> +JcEF`!.t2D"]"^idRj)Ss*t~> +JcEF`!.t2D"]"^idRj)Ss*t~> +JcEF`!.t2D"]"^idRj)Ss*t~> +JcEF`!29Bc"\mtUkr&"Ss*t~> +JcEF`!29Bc"\mtUkr&"Ss*t~> +JcEF`!29Bc"\mtUl8A+Ts*t~> +JcEF`!3uMs"\l`2nMBFQs*t~> +JcEF`!3uMs"\l`2nMBFQs*t~> +JcEF`!3uMs"\l`2nMTUTs*t~> +JcEF`!71X<"\kinoL.BUs*t~> +JcEF`!71X<"\kinoL.BUs*t~> +JcEF`!71X<"\kinoL.BUs*t~> +JcEF`!9O2R"\jUKoPLbSs*t~> +JcEF`!9O2R"\jUKoPLbSs*t~> +JcEF`!9O2R"\jUKoPLbSs*t~> +_#FH2p4<5Os7B&[9MK!rs,N!/bl<1~> +_#FH2p4<5Os7B&[9MK!rs,N!/bl<1~> +_#FH2pOW>Ps7B&[9MK!rs,N!/bl<1~> +_>aW5;#p<@rrN'sr_*Jmr;X0:oZ[>c~> +_>aW5;#p<@rrN'tr_*JmqZ!s8oZ[>c~> +_>aW5;#p?ArrN'ur_*Jmr;X0:oZ[>c~> +_>aW-%05gIrrN+*r_*JinGh00oZ[>c~> +_>aW-%05gIrrN+*r_*JinGh00oZ[>c~> +_>aW-%05gIrrN+*r_*JinGh00oZ[>c~> +_>aW-'*.HOrrN.>r_*Jig&L=nnBCo_~> +_>aW-'*.HOrrN.?r_*Jig&L=nnBCo_~> +_>aW-'*.HOrrN.?r_*Jig&LFsnBCo_~> +_>aW-'*.HOrrN.^r_*Ji[K#hWjimaT~> +_>aW-'*.HOrrN.^r_*Ji[K#hWjimaT~> +_>aW-'*.HOrrN.^r_*Ji[K#hYjimaT~> +_>aW-'*.HOrrN.rr_*JiScA=\`m"I5~> +_>aW-'*.HOrrN.rr_*JiScA=]`m"I5~> +_>aW-'*.HOrrN.rr_*JiScA=^`m"I5~> +_>aW-'*.HOrrN/6r_*JiH2mMcS]q+a~> +_>aW-'*.HOrrN/6r_*JiH2mMcS]q+a~> +_>aW-'*.HOrrN/6r_*JiHiN_eS]q+a~> +_>aW-!!(u/rrN/Ur_*Mj?N0tnK(R=fJ,~> +_>aW-!!(u/rrN/Ur_*Mj?N0tnK(R=fJ,~> +_>aW-!!(u/rrN/Ur_*Mj?N0tnK(R=fJ,~> +_>aY;!%1J1Jc>c?:&[fi;>L7.=nKu=J,~> +_>aY;!%1J1Jc>c?:&[fi;>L7.=nKu=J,~> +_>aYc?:&[fi;>L7.>4g)>J,~> +_>aY;1NcjjJc>cH;>s5m:$M]:47g_sJ,~> +_>aY;1NcjjJc>cH;>s5m:$M]:47g_sJ,~> +_>aY<20E*mJc>cH;>s5m:$Vc;47g_sJ,~> +_>aY;4+:?&Jc>cM=oM(u9ud5$1[`NfJ,~> +_>aY;4+:?&Jc>cM=oM(u9ud5$1[`NfJ,~> +_>aY<4+:B'Jc>cM>5h2!9ud5$2=A`hJ,~> +_>aY;4+:?&Jc>cND>m349r7m]45J0]J,~> +_>aY;4+:?&Jc>cND>m349r7m]45J0]J,~> +_>aY<4+:B'Jc>cND>m349r7m]45J0]J,~> +_>aY;4+:?&Jc>cNMZ-9Q9oAuC?FnD]J,~> +_>aY;4+:?&Jc>cNMZ-9Q9oAuC?FnD]J,~> +_>aY<4+:B'Jc>cNMZ-9Q9oAuC?G+P_J,~> +_>aY;4+:?&Jc>cNU&I^h9k+.pJsFU\J,~> +_>aY;4+:?&Jc>cNU&I^h9k+.pJsFU\J,~> +_>aY<4+:B'Jc>cNU&I^h9k+.pJsFU\J,~> +_Z'l*F\0`u/#`H!rrB>&9EeAns.O`1cMrC~> +_Z'l*F\)fC/#`H!rrB>&9EeDos.O`1cMrC~> +_Z'l+F\+SRFN+62rrB>&9EeGps.Of3cMrC~> +`;^2DXtC&nf\!>,'8;)=!6kC8"]"^i``)NTs*t~> +`;^2DY$>j"!!!9)'8;)=!6kC8"]"^i``2TUs*t~> +`;^2DY%`_l1G^psAZCC_!6kC8"]"^i``;ZVs*t~> +`W$5BIO>0uB%Yb=rVut2r.Y.Njo%jV:#Z-62tP>pJ,~> +`W$5BIU@,91&q=\rVut2qM"qLjo%jV:#Z-62tP>pJ,~> +`W$5BIVt:1<&6?hra5bpr.Y.Njo%jV:#Z-63V1PrJ,~> +`r?,$2uJF1!;-4`"\li5nMBFTs*t~> +`r?,:EaSfd!u_.?#lO`(2u8:/!;-4`"\li5nMBFTs*t~> +`r?, +`r?'b-iF)KRb68qqu?^ULAq;P;>s5m9r7m^7+KT_J,~> +`r?'b?i>!I)?9dDqu?^ULAq;N;>s5m9r7m^7+KT_J,~> +`r?'dDZ,\":GXgcr*TMMLAq;P;>s5m9r7m^7+KT_J,~> +a8Z0t-iF)M$Ei%6E!H4?!0i9=!WHR-9Ee.Js7Bp2cMrC~> +a8Z0t?i>!KD?p4C#R:2,!0i9=!WHR-9Ee.Js7Bp2cMrC~> +a8Z0tDZ,\$M)I.H:LsB2!1\iE!WHR-9Ee.Js7Bp2cMrC~> +aSu:;0)YhU"A>oMfPh#k!!%+rrr@?D9Ee.)s7D#-cMrC~> +aSu:;>lA[IED$Q;!=/l+!!%+rrr@?D9Ee.)s7D#-cMrC~> +aSu:;C&O.uOA.Vh1f%TX?iZaQrr@EF9Ee.*s7D#-cMrC~> +ao;Fd9*G4q#6ZYQb1P?c"8VutS;@1FQ2OA[ +ao;Fd96'rO#B=!B#64c1"8VutS;@1FQ2OA[ +ao;Fd9p#@:#EWXn3AWKf@esI4_MJ3lQ2OA[YaJ,~> +b5VPBAgdNY#:E2=b1P?c"8Vuu"lY= +b5VPBAmbLW#@C.u#64c1"8Vuu"lY= +b5VPBAo@R0#B!4/3AWKf@esI5@ciOI!35uk"]"[ha\h]Vs*t~> +b5VL=0)YhW$;4&eb1P?c!r2fr7#CpD_Ym.3:"fR.2tPAqJ,~> +b5VL=>lA[KDG*Ys#64c1!r2fr7#CpD_Ym.3:"fR.2tPAqJ,~> +b5VL=C&O/"M+pZ;3AWKf@JO:2I>Rt(`r/R7:"fR.3V1SsJ,~> +bPr+@:'q%("9L2L9MO*jfPgoe!!&sTrrCmR9Ee.us7%u2ci8L~> +bPqh8:2Y)mEH5=`9EY@r!=/c%!!&sTrrCmR9Ee.us7%u2ci8L~> +bPqh8:5P*qOHF8V9E[1.1f%QT?i\0'rrCmR9Ee.us7%u3ci8L~> +bPqU3-iF)H-iQdC:"ItLDuo_6!=Sg`rrDKc9Ee.Zs7An2ci8L~> +bPqU3?i>!F?i +bPqU3DZ,[tDZ*631c$sa@JF42Ac.Jd!:KeZ"\kHcoL[KWs*t~> +bl7b::($t%!s5m9mQd2D5kk]J,~> +bl7b::2^&O!HCd29EY@r!=/`#!!%8%rrMpmr_*JiH2mMRWR(Tp~> +bl7b::5St4!K^%S9E[1.1f%QS?i[*_rrMpmr_*JiHiN_TWmC]q~> +bl7^/0)YhO-iH^=:&`cG:BC1i! +bl7^/>lA[C?i3Ut!!30(!VZQp"Q>=>!WH*t9EeZ"s,N!/d/SU~> +bl7^/C&O.oDZ!3.1BKC1@J=.1?KR4H!WH*t9Ee`$s,N!/d/SU~> +c2Rk::($t%! +c2Rk::2^&O!HCd19`G(o!<`Gs!!%_2rr?O,9Ee;es/p).d/SU~> +c2Rk::5St4!K^%R9`HmM1f7]T?i[3brr?O,9Ee;fs/p,/d/SU~> +c2RgD0)YhO-i?X<:&`cG:BC.h!>GEjrr@NH9Ee/Ps3aL2d/SU~> +c2RgD>lA[C?i*Os!!30(!VQKo'E*mi!.Ol?"\n+YdRj)Xs*t~> +c2RgEC&O.oDYm--1BKC1@J4(0Ac7Sf!.Ol?"\n+YdRj)Xs*t~> +cMmtF=UP-0! +cMmtF=`44Z!HCd09`G(o!<`Gr!!(&urrAMd9Ee/5s62E2d/SU~> +cMmtF>)E6@!K^%Q9`HmM1f7]S?i\i +cMmpn9Dnnl-i6R;:&`cG/ckVF!(`(K!3,oj"\kuro/GdXs*t~> +cMmpn9Drl2?i!Ir!!30(!VHEm8 +cMmpn:&U1SDYd',1BKC6@J+".LQ)65Wr5Tp9re6b3T\WfJ,~> +cMn)t-NX>P"AAVc!+c)]""jTS#58)u"mV*I!5e\."\k9^oM*TWs*t~> +cMn)t?ZL1,ED-1&#>tO%!<`E'#58)u"R;!H!5e\."\k9^oM*TWs*t~> +cMn)tDNU'COA5UG#>m951fe!lAG9I4?L +ci4(29a(Fs!%7V:!+u5_""jTS"nhor]8cgjh>L"N9m-L.EN.=bJ,~> +ci4(29l^/Q!+5Rr#;Q8Z!<`E'"nhor]8cgjh>L"N9m-L.EiIFcJ,~> +ci4(39p#@:!,hX,#?3K81fe$m@eO10duFA-h>L"N9m-L.EiRLdJ,~> +ci4$B0)YhO9DV<^B)^Eb(BFLQ4Y_MY, +ci4$B>lA[C9DVQ4Y_MY, +ci4$BC&O.o:&7Ng<&6 +ci4#P$N:),$Md?qB)^Ed(BFL[U7o[3\h~> +ci4#PDZ4YVDYZs41&q:T"p"]+!!`2u![U7o[3\h~> +ci4#PM>iV;M>9gO<&6[U7o[3\h~> +d/O.&9Dnnl-i$F9B)^Ed(BFL;!!`/t!5"9k!WH=%9Ee/Ps3aL2dJn^~> +d/O.&9Drl2?hmA%1&q:T"p"]*!!`/t!5"9k!WH=%9Ee/Ps3aL2dJn^~> +d/O.&:&U1SDYZs4<&6!7Qu.!WHC'9Ee/Ps3aL2dJn^~> +d/O-8-iO/J"AAPa$"hiBee\>e!<<;t!!#fSrr@';9Ee/1s5c-.dJn^~> +d/O-8?iG'HED-+$#r2J\! +d/O-8DZ5b!OA5OE#ui]:1fe$m@:3R=?iZ:Jrr@*<9Ee/1s5c-.dJn^~> +dJj:I<=8^,!%7P8$"hiBedDKY!<<;t!!*DuNrK*>rCdAhWW2KGl-]N]~> +dJj:IrCdAhWW2KGl-]N]~> +dJj:IrCdAhWrMTHlI#W^~> +dJj6n9Dnnl0)/*HRb69D"T\T(!!W&r!7Ho-!2]Wf"\jmSoL.6Ws*t~> +dJj6n9Drl2>kgu!)?9a<"9AK'!!W&r!7Ho-!2]Wf"\jmSoL.6Ws*t~> +dJj6n:&U1SC%t@.:GXd`?=@5M?t/h;!8W\8!2]Wf"\k!VoL.6Ws*t~> +dJjEE-NX>P"AAM`$(BN!ecc$R!<<5q!!$VkrrBV.9Ee.-s7Bp/dJn^~> +dJjEE?ZL1,ED-(##oWdD!<`B&!<<5q!!$VkrrBV.9Ee.-s7Bp/dJn^~> +dJjEEDNU'COA5LD#u +dJj5R$N:),$MR4#Rb69D"T\T(!!;io!#(Cm!7Ld="Bk`rKosd_J,~> +dJj5RDZ4YVDYHg2)?9a<"9AK'!!;io!#(Cm!7Ld="Bk`rKosd_J,~> +dJj5RM>iV;M>'[M:GXd`?=@5M?t&b:!+h2j!7Ld="BtfsKosd_J,~> +df0C-9*G4q!&"">$(BN!ecc'S!<<2o!!(u=rrD<]9Ee;hs.O`1df4g~> +df0C-96'rO!*o7l#oWdD!<`E'!<<2o!!(u=rrD<]9Ee;hs.O`1df4g~> +df0C-9p#@:!,;1$#uMrrD?^9Ee;hs.Of3df4g~> +df0?Z0)bnQ"AAJ_$(BMtec>dO!< +df0?Z>lJaEED-%"#oWdE!<<-#!< +df0?\C&X4qOA5IC"]$p21gXVi?iXX.?i[3frrMpmrCdAhlMnk(o[ +df0?"$N:),$MI."Rb63B!p.df4g~> +df0?"DZ4YVDY?a1)?9d=!!*'#!!2`m!%X-1!WH*t9Ee/:s5>p.df4g~> +df0?"M>iV;M=sUL:GXga?=@5M?t&_9!-F;%!WH*t9Ee/:s5?!0df4g~> +e,KLJ;$?k"!&!t=$(BMtaoMMC!< +e,KLJ;/uSU!*o4k#oWdE#6=i*!< +e,KLJ;3:d>!,;.#"&C^03W*7b@J+"/@I'!S!+u1'"\l9%n29U]s*t~> +e,KI19Dnnl9D2$cY1V=J! +e,KI19Drl29D2$c#QOl1!!*'#!!2]l!2ttY!.t/C"\kHcoL.B\s*t~> +e,KI1:&U1S:%h6e2D[0M?=7/L?t&\8!6($!!.t/C"\kHcoL.B\s*t~> +e,KHV-iO/I$M@(!Y1VCL! +e,KHV?iG'GDY6[0#QOl1! +e,KHVDZ5auM=jOE2D[0Mra5e9?t&_9!Ffr-rrAMd9Ee.5s7Bp2df4g~> +e,KGo$N:),-hU.>Y1VCL! +e,KGoDZ4YV?hI)!#QOl1! +e,KGqM>iV;DY6[02D[0M?t!GO?t&_9!c(O$OT,<`r(I6!rq))1df4g~> +eGfRK:Ak4o0(hmEb1P@h!!*'#!!2cn"ASps@ePra!64q1"]>*qTlp"Vs*t~> +eGfRK9`8u3>kLbs#64`/!!*'#!!2cn"AJjr@ePra!64q1"]>*qTlp"Vs*t~> +eGfRK;#QLVC%Y.%3AWHOra5e9?t&b:"DRo:@eZ#b!64q1"]>*qTlp"Vs*t~> +eGfR20)bnQ"AAD]$-LoQXoJJ&!< +eGfR2>lJaEED,su#mUG1#QOl*!< +eGfR2C&X4qOA5CA#rsdt2IKs$@:3O +eGfQ[-iO/I$M7!ob1P@LrW!!#!!2ip#R`Ql6o+ukS*H4;!VB.c9Ee/7s5c32e,Op~> +eGfQ[?iG'GDY-U)#64`0rW!!#!!2ip#R`Ql6o+ukS*H4;!VB.c9Ee/7s5c32e,Op~> +eGfQ[DZ5auM=aID3AWHLr*TM5pg=A=3<;N*"XKZ+PQ([U:Amii:!EY!3V1`"J,~> +eGfQ'$N:),-hU.9:!2,@Y5SD&!< +eGfQ'DZ4YV?h@"o#64`0rW!!#!!2ip#u(RR9M#mF"\J!DrrMsqrCdAhY5e#JlI5c`~> +eGfQ'M>iV;DY-U)3AWHLr*TM5pg=DC"Y38<'.F)Vm?IVOr)N\h"\l0"nMT^_s*t~> +ec,^M;[!($!&!q<"AR%kfWP2R!W`9%q#CdB,83XB:-/Jr1Kj=7rrN+*rCdAhQ2gJEg!ftO~> +ec,^M<,qnX!*o.i!s\f+#lXf*!< +ec,^M +ec,[39E"tn"AAD]"ARJ"fWP2R!W`9%q>^s*9)q@R9]:+--a!H0jH]`FFo=u;9l^4*B!p+fJ,~> +ec,[39E&r4ED,pt!s&B%#lXf*!</+~> +ec,[3:&^7UOA5@@"#Mei2Z@(c@:3O??k$O=!(9LSiH6(gXoOLJQ2^i,rCdAhErYcD[F>/+~> +ec,Zd0)bnP$M7!p:"ItLE;fh=!<:hJrr%ELI\d]\jHffGOo.lU>Q48KOjj>\~> +ec,Zd>lJaDDY$O(!<<**rW!!#!!2or%Q>%G9MNA&rIP'!V%["mQN$rIr(I5trq(o,e,Op~> +ec,ZdC&X4pM=XCC1c$p`ra5e9?t&n>%V-4u9MNA&rIP*"V&NV(QN$rIr(I6!rq(o,e,Op~> +ec,Z8-iO/I-hL(4:&`cLDu]n=!< +ec,Z8?iG'G?h6tj!!W]/!<<-#!W)j."ZHTV9MA4-rr%^!_R1%3jHolHV>O!j;>L6cH1]VdJ,~> +ec,Z8DZ5auDY$R$1B:5M?ijbE@JaFD@Q=T`9MA4-rr%^"`jHI8l^.VOV>O!j;>L6cHh>hfJ,~> +ec,Ya$N:),0(_g;:&`cLDu]n=!< +ec,YaDZ4YV>k:Yg!!W]/!<<-#!W)iu9aWEL9F=YUrr7[tbec)&lBqSO])55*:$M\t<:n]?J,~> +ec,YbM>iV;C%G$t1B:5M?ijbE@JaF6C'lKi9F=YUrr7\!bf2D+m?mnR]_kG,:$Vbu +f)GdL;>gOr9CtmX:&`cLDu]n=!< +f)GdL;>kM89CkjV!!W]/!<<-#!W2p""Yg?Ur(IH#mf*6W`ltsnWUlPX!7h!@"\m>CiA^AXs*t~> +f)GdL;>lUW:%M'X1BpW_@:3MO@JjL8@PS9^r(IH$mf*6W`ltsnWq2YY!7h!@"\m>CiApMZs*t~> +f)Gs5/cl(W"AAA\!)K>9s3Js6RfQjbRfia~> +f)Gs5>]Ok)ED,msrW!-.!!*'#!!2ut!_j"VqFh61q>^K@c-2XX?LXE`!9sDT"\l9%n2'@Zs*t~> +f)Gs5Bp"O>OA5=?r\FOMra5e9?t&t@!br&tqFh62q>^K@c-2^Z?LXE`!:'JU"\l9%n29U_s*t~> +f)Gc]-iO/I$M-pkAH(3_Du]q +f)Gc]?iG'GDY$O%;Z6Xt#QOo)!!!&u!! +f)Gc]DZ5auM=XC@;>r?Q:LIW1?iXX6?isjq$;(%e$B"i_s7":WXpSe4S,WN`:Amii9qD=V7,?Am +J,~> +f)Gc9$N:),-hC"3B)^EaDu]q +f)Gc9DZ4YV?h6qk1B%7T#QOo)!!!&u!!5Ot/,)^EU&P)loZtaa$=`XtrrN'trCdAhK)bII^=<15~> +f)Gc9M>iV;DY$O%<;nZT:LIW1?iXX6?ik +f)Gbb$N:),0(Va:B)^Ea:Bgn"!!!&u!!5Ol8bPgbY5\J$q9R9f$>]:)rrN+*rCdAhB)hLPS^d[i~> +f)GbbDZ4YV>k:Vh1B%7T"9nr,!!!&u!!5Ol8bPgbY5\J$q9R9f$>]:)rrN+*rCdAhB)hLPS^d[i~> +f)GbcM>iV;C%G!u<;nZT;.O,7?iXX6?ii_"8bPgbY5\J$q9R9f$?#L,rrN+*rCdAhB)hLPS^d[i~> +fDbmN;uHat9CkgWB)^Ea:B^h!!!!'!!!4Db,P=_<9u6i/s7t!bT`KH:Sc8\4r(I8mr;W%9o[Wtl~> +fDbmN<;gh;9CkgW1B%7T"9el+!!!'!!!45],P=_<9u6i/s7t!bT`KH8Sc8\4r(I8nqYuh7o[Wtl~> +fDbmN +fDc$H/cl(W"S,4dB)^Ea:BL^u!!!'!!!5mr7.a.\:"fOGs7sm_PlQI8T)SeUr(I8gnc,k.o[Wtl~> +fDc$H>]Ok)EUld'1B%7T"9Sc*!!!'!!!5jq7.a.\:"fOGs7sm_PlQI8T)SeUr(I8gnc,k.o[Wtl~> +fDc$HBp"O>ORc'F<;nZT;.=#6?iXX7?ik'D7.a.\:"fOGs7sm_PlQa@T)SeUr(I8gnc,k/o[Wtl~> +fDblt-iO/I$M$jjB)^Ea:BCXt!!WH(!!,.g8b5UV47N7L#5QThJcU`-TDnnjr(I8gg&KJlo[Wtl~> +fDblt?iG'GDXpI$1B%7T"9J])!!WH(!!,.g8b5UV47N7L#5QThJcU`-TDnnjr(I8gg&KJlo[Wtl~> +fDbltDZ5auM=O=?<;nZT;.3r5?j:%I?su,(8b5UV47N7L#5QThJc_8;TDnnkr(I8gg&KJlo[Wtl~> +fDblN-iO/I-h9q2B)^Ea/cl.S!!WH(!!skh8b5UW6oY)Drrr5Eb]*uHTDno-r(I8g\c:bMo@ +fDblN?iG'G?h-kj1B%7T"9J])!!WH(!!skh8b5UW6oY)Drrr5Eb]4&ITDno-r(I8g\c:bMo@ +fDblODZ5auDXpI$<;nZT +fDbl:$N:),0(M[9Rf:q@/cc(R!!NB'!%/F7nk9*V)gVD^"o6Kg@M>*$rrCmQ9Ee.as7%u2ec1.~> +fDbl:DZ4YV>k1Pg)ZB^<"9AW(!!NB'!%/F7nk9*V)gVD^"o6Kg@M>*$rrCmQ9Ee.as7%u2ec1.~> +fDbl:M>iV;C%=pt:]<-OZ4rrCmQ9Ee.as7%u3ec1.~> +fDbkk"TAH&0(M[9Rf:q@/cc(R!!NB'!) +fDbklEW0tY>k1Pg)ZB^<"9AW(!!NB'!)3J^nOs!G"igN@"o6Kg=X0]8rrMXarCdAhIfK%.e^a\M~> +fDbklOT(@BC%=pt:]<-O +fDbhMr;lsloLo<]9q)(6!\OKUrW!*&!!#ap8b#IV8I@lRrVm&sbfid9\t]3*q,.)a"\iV/oObAY +s*t~> +fDbhOrGhm2oLoNc9c=!3!<`E*rW!*&!!#[n8b#IV8I@lRrVm&sbfid9\t]3*q,.)a"\iV/oObAY +s*t~> +fDbhSrK.(SoLoNc9i!Q$1fe$ora5nE,q,.)a"\iV/oObAY +s*t~> +f`)-R/cl(W"SGIg9`e1Le,Iu$(BFX;!!NB'!':W]n4Wp7'<1^(rrr,B_)k6:U]1Ao>Pq.t;uQ?G +Ok'J^~> +f`)-R>]Ok)EV3$*9aFURB`J,6"p"i*!!NB'!':W]n4Wp7'<1^(rrr,B_)k6:U]1Ao>Pq.t<;lHH +Ok'J^~> +f`)-RBp"O>OS)U]1Ao?2RA! +f`)!6-iO/I$MR6o9a"ImnGhbPfE)ii"8i-$""P<^n4WsQ!--HcrVm&mc+4iuo:u['2:A"R[ +FnF8bJ,~> +f`)!6?iG'GDYHj)9aXmsnGdJ.!!*9)"8i-$""P<^n4WsQ!-6NdrVm&mc+4iuo:u['2:A"R[ +FnF8bJ,~> +f`)!6DZ5auM>'^D9aXmsnGeJ(1Gi-@@f0U9@OiBhn4WsQ!-6NdrVm&mc+G!$o:u['2:A"R[ +FnF8bJ,~> +f`(ur-iO/I$MdBq9`eq7q>UBol2K<:(BFX;!!E<&$R6nb9Ee!,-cXj=rVm&jc*7Flr1s>mL&=UJ +:$)Dp;tSZ@J,~> +f`(ur?iG'GDY[!+9`eq7q>UBuE<#t>"p"i*!!E<&#U:S_9Ee!,-cXj=rVm&jc*7FlqP=,kL&=UJ +:$)Dp<:ncAJ,~> +f`(urDZ5auM>9jF9`eq7q>UBuNAE@ImL&=UJ +:$)Dp +f`(u_$N:),-i?XA9h\<2ci3kB!9F.3!Z(k=rW!'%!#?M(mS!a@$C/ior;QrcbaJNarh]VpU&7Rf +9ud4l2tPW#J,~> +f`(u_DZ4YV?i3S$9h\<2ci3kB##G:"! +f`(u_M>iV;DZ!039h\<2ci3kB#'2RV1fe$nra5k;?s4L"mS!a@$C/ior;QrfbaJNirh]VpU&7Rf +9ud4l3V1i%J,~> +f`(uA"TAH&0)eQE9`e1\l1t>`jOi,9$NU>.!!E<&-PJ6&9EdukgP#r(I8g +WW2HDmahDg~> +f`(uAEW0tY>lIFs9`e1\l1t>`:]LIr#QY#+!!E<&-PJ6&9EdukgP#r(I8g +WW2HDmahDg~> +f`(uCOT(@BC&Ug+9`e1\lM:GaF#,U/=^bbgP#r(I8g +WrMQGmahDg~> +f`(u("TAH,/keu6>H.>jrrD-ZfE)3W!r`0&!<>%c47,`A,6PL#c1Cl5"Qdj:)mZ@@!6k@7"\k9^ +o/kdZs*t~> +f`(u(EW0t_>YIjd>H.>jrru:"!!39(!r`0&!<>%c47,`A,6PL#c1Cl5"Qdj:)mZ@@!6k@7"\k9^ +o/kdZs*t~> +f`(u(OT(@HBhV5q?)mYnrs!O#1GrKI@K'X;@:3UQ47,`A,QkU$c1Cl5"Qdj:)muRC!6k@7"\k9^ +o/kdZs*t~> +f`(q_r;m*s9l\#Jp&>3Nf\"aY!WLk7.!YP3sCYgbg6+_rrh0%:,TndrrD0Y9Ee.5s7BX/ +f)L7~> +f`(q_rGi$79le)Kp&>1R!!!$&!WLk7.!YP3sCYgbg6+_rrh0%:,TndrrD0Y9Ee.5s7BX/ +f)L7~> +f`(qerK.4Z9le)Kp&>2&1G^jo@JsR:@:4'Y7.!YP3sCYgbg6+_rrh0%:,U%hrrD0Y9Ee.5s7BX1 +f)L7~> +g&Djq7.!YL8HhifbQ68nrVm'#e\3P6n>Q?foM5?Y"\i>& +oR`O_s*t~> +g&D]Ok)>`.A.rsgpe!!*3'!!!$"!<>gp7.!YL8HhifbQ68nrVm'#e\3P6n>Q?foM5?Y"\i>& +oR`O_s*t~> +g&DBo:a;rrlac1GiEHrEob:?to^1m7[RQ"\o!?!S.2JrrrDP^+34QW;cnj:Amii9j[hk +Jst9jJ,~> +g&D6S:'q>tnF6JXfF6Ha!^C5!W>sp9Ee;hs-eQ3 +fDg@~> +g&D6S:2Xs=nF6Gf.KBSP!!*'"!<<-#9`RTJ9EHFX[JnAMiV`]ZqU2bYD>L73!W?!q9Ee;hs-eQ3 +fDg@~> +g&D6S:5OgunF6G]<&6Eh?=Ee?"CY\Q!(?0I![J_mrlbB$r;Qrud^9F!r2K\srDibh"]>*qRY(1` +s*t~> +g&D0E=`+!&rsmc8g"$0)!!!$"! +g&D0E=`+!&rrNu:"TAH%!!WH(! +g&D0E>&F*'rrkkJ2DefMrEob:?s3S&lq@IB"dT&1!9O.Y"S^65!1'S`!+Pk""\nFb\RP3_s*t~> +g&D-D1Tpjq8aK+P8HE;ubQ./1rrhi8E>,4Krr@?B9Ee/Ds4Kg4 +fDg@~> +g&D-D1Tpdo8aK+P8HE;ubQ./1rrhi8EYG=Lrr@?B9Ee/Ds4Kg4 +fDg@~> +g&D-D26QNM$KfLRrr,AC2*"uOrEob:?r-nrlq@IP!b2)O!:]pd"RsWU'=k+B!.4W;"\m\MfgPJa +s*t~> +g&D-D'@$+JrW!Karn#fTaoMMC!!*'#!)!Jelq@LQ)^if,bQ6&cr;QoabY^IEWrE'ar(I8g])V"P +n^mek~> +g&D-D'@$+JrW!K\rWrQ+#6=i*!!*'#!)!Jelq@LQ)^if,bQ6&cr;QoabY^ICWrE'ar(I8g])V"P +n^mek~> +g&D-D'@$+Jr_F)Hr]2hm3FH9'?t!GO?qgerlq@LQ)_&r.bQ6&cr;QobbY^IGWrE'ar(I8g]`77S +n^mek~> +g&D-C"l]+R!T=.Z!"UX4f\"=I!<<<)!!*'f$;'PW!\k.\r6,2lrqud!iP$7?q5aMqWVfEn9r7m[ +2 +g&D-C"l]+R!T=.Z!"UUe!!3B+!<<<)!!*'f$;'PW!\k.\r6,2lrqud!iP$7?q5aMqWVfEn9r7m[ +2 +g&D-C"l]+R!TmA[:Ch5%1Gq1#@:3VS?t!G2$;'PW!\t4]r6,2lrqud!iP$7?q5aMqWr,No9r7m[ +2 +g&D- +g&D- +g&D-=!:BIZ!rdIArD*Pm:GXgfra5t?@:3MO3t4dI9EIT^K) +g&D-0$Lm]f!*B'u%fricfZF0p!!NE(!<>%l8aB%O8IA&cbQ-o*rri/DFVD'^rrCmQ9Ee.5s7Bd2 +fDg@~> +g&D-0$Lm]f!*B'u%flq9!=&T*!!NE(!<>%l8aB%O8IA&cbQ-o*rri/DFVD'^rrCmQ9Ee.5s7Bd2 +fDg@~> +g&D-0$Lm]f!/^VL%o>/?1c\rP?t*PP@:2)/8aB%O8IA&cbQ-r+rri/DFVD0arrCmQ9Ee.5s7Bd2 +fDg@~> +g&D,i)tES#!JpjV!"]/5b1P@L!!*''!WW6%0b[.D9`H=;\bjSOc1Lr6"R& +oR`@[s*t~> +g&D,i)tES#!JpjV!"]/5#64c1!!*''!WW6%0b[.D9`H=;\bjSOc1Lr6"R& +oR`@[s*t~> +g&D,i)tES#!OGW%:Cp?%3AWKM?t!GP@:3MP1)!7E9`H@<\bjSOc1Lr6"RX#n:#2rO!:KbY"\i>& +oR`@[s*t~> +g&D,M47VnAr;coorn%U]!!*'%!WW6'.iV(F9EI-[Rek5/df'+D"Qd0'EW*'?!VoUj9Ee;ks-nK0 +f`-I~> +g&D,M47VnAr;dGl!!!$*!!*'%!WW6'.iV(F9EI-[Rek5/df'+D"Qd0'EW*'?!VoUj9Ee;is-nK0 +f`-I~> +g&D,M47VnArD4$j1G^jG?t!GP@:3MQ.iV(F9EI3]Rek5/df'+D"Qd0'G5\TD!VoUj9Ee;ks.+W2 +f`-I~> +g&D,*?LdUd"F*=*R/-a6$a'I1!!33%!OPl[5SrrN+%r(I8hoDcX0 +o[s1o~> +g&D,*?LdUd'6lo9R-+GL!=/Z+!!33%!OPl[5SrrN+%r(I8hoDcX0 +o[s1o~> +g&D,*?LdUd';p86]'D..1cA`M?t!JO@:C`+8a8tN6i_i7bQ-Jsrri>OPldkdrrN+&r(I8hoDcX1 +o[s1o~> +gA_6ED0>7G!;-9C$a'I1!!33%!;O:%rr?d29Ee/Hs4od.f`-I~> +gA_6ED0>7G&)I9d!=/Z+!!33%!;O:%rr?d29Ee/Hs4od.f`-I~> +gA_6ED0>7G&*5T'1cA`M?t!JO@:CK$8a8tN8Hi,hbQ-c&rri)@>rBa,rr?g39Ee/Hs4od.f`-I~> +gA_6E;3(&D!;-9C$a'I1!!33%! +gA_6E;3(&D&)I9d!=/Z+!!33%! +gA_6E;3(&D&*5T'1cA`M?t!JO@:CK-8a8tN8K02SbQ./1rrhGt'6aAYrr@ZK9Ee/1s6_c4f`-I~> +gA_6E0sU-G!;-9C$CUqq!!*-$!>ZV%kY)%*)n#Ib!RL]Brri>SNXDPbrrAVf9Ee.is78>2f`-I~> +gA_6E0sU-G%a4nQ!?(q=!!*-$!>ZV%kY)%*)n#Ib!RLW@rri>SNXD;[rrAVf9Ee.is78>2f`-I~> +gA_6E19p6H%b3?k1f%Lf?t!JO@9OU!kY)%,)n#Ib!RL]Brri>SNXDhjrrAVf9Ee.js78>2f`-I~> +gA_6E'?p.L#km]7_84gss6]g<$ZH(H!!*-$!>?[s8a/nM2%?PZbQ->orri/68P\6KrrB>%9Ee.U +s7B70f`-I~> +gA_6E'?p.L(\[:F_84gss1&+0!=/Z+!!*-$!>?[s8a/nM2%?PZbQ->orri/68P\6KrrB>%9Ee.U +s7B:1f`-I~> +gA_6E'?p.L(\d@G_84gss2ZuP1f%Lf?t!JO@:^]'8a/nM2%?S[bQ->orri/68P\EPrrB>%9Ee.U +s7B=2f`-I~> +gA_6D"l8qQ$MMK"JsrjFOb1.2rn%Wu!!*'#!WW3&0`W^lr^lKN!^m'Op<3Nur;Ql\\HRVirrCCC +9Ee.9s7CH1f`-I~> +gA_6D"l8qQ)YV12JsrjFOb1-S!!!$*!!*'#!WW3&0`W^lr^lKN!^m'Op<3Nur;Ql\\HRVirrCCC +9Ee.9s7CH1f`-I~> +gA_6D"l8qQ)Y_73JsrjFOb1-b1G^j`?t!GO@:3JP1&rgmr^lKN!^m'Op<3Nur;Ql\\HRnqrrCCC +9Ee.;s7CH1f`-I~> +gA_6B!9s:Y"SS+Leb8t;$gFXB[+ErL!!*'#!WE'+6othY!=]tm.lBEf7.s1T6oQUrIeCnboDS[l +rmH'2]!;88l243Z9k+,%NfNbbs*t~> +gA_6B!9s:Y"SS+Leb8t;$gFXB.gZ4^!!*'#!WE'+6othY!=]tm.lBEf7.s1T6oQUrIeCnboDS[l +rmH'2]!;88l243Z9k+,%NfNbbs*t~> +gA_6B!:'@Z"S\1MebB%<#3r4?;`Za2ra>b7ra6(]3t22k%3$QC2*:e*p.5BT3@b)YoumF-rVm$" +dX)qGZ2Xghr(I;h@fHCfNqD$)J,~> +q#:?ZjSo;C!Ufd`"7qPHq>1*uq)YcrNcG(q,.&`"]P@!WH%R`s*t~> +q#:?ZjSo;C!Ufd`"7qPHq>1*uq35l=.gQ+U!!*-"!$))Q)d@>N.jGuB"T\T'!)YcrNcG(q,.&`"]Y?uWH.Xas*t~> +q#:?]jSo;C!Ufd`"7qPHq>1*pq5/@[;c!C#s'bn7*FX.2?#i=`,T@0r!<<*#"Uu+Y)]KFt"T\W2 +'.\+rbQ6/jrVm#l_'EdoZMst$;>a)k +q>UNX!4(_d!ndqMqYpW^K"h!Z$16?OM0L9P"UbD0!#h^7::\T_[AfXQKmn#A6oR%P.kse%EJ:6g +_XktOiV`]Xh3nMBZMst)=o:qs:@nM.;=rQAJ,~> +q>UNX!4(_d!ndqMqYpW^K"h!Z$'PZGEG?a*":,),!#h^7::\T_[AfXQKmn&B6oR%P.kse%EeU?h +_XktOiV`]Xh3nM;ZMst)=o:qs:@nM.;=rQAJ,~> +q>UNX!4Cqg!ndqMqYpWaK"h!Z$)fm`GBR_1?5V%t:@nM.;=rQAJ,~> +qYpZ^)ZY?KrrU1Znb`=fq6@3ursA)Ff[j_\/5/_Fqu?m6UI5,l^>7!5mf!.gq8#-slE^EiC]$j0 +:#Z-247h/*J,~> +qYpZ^)ZY?KrrU1Znb`=fq6@3urs=kh!!tE+/5/_Cqu?m6S4!Be^>7!5mf!.gq8#-slE^EiC]$j0 +:#Z-247h/*J,~> +qYpZ_)ZY?KrrU:]nb`=fq6@3urs>V[1HJK^CJ7E)r*T\EX$d"u^>7!5mf!.gq8#-umBZ`lDZ!03 +:#Z-247h/*J,~> +qu6fC"^Ynljo5Ci/+NN:!q:g5pAY-Wrn%Bn#p`25.f02M'/=Yb'8"'XbQ6&grVlu]W<&?krr@cN +9Ee/5s6_]2g&HR~> +qu6fC"^Ynljo5Ci/+NN:!q:g5pAYG=!!!$*#p2i/.f02M'.e;]'8"'XbQ6&grVlu]W<&?krr@cN +9Ee/5s6_]2g&HR~> +qu6fC"^Yqmjo5Ci/+NN:!q:g5pAYGY1G^j`@V8A/>l.n5CibCf'8"'XbQ6&grVlu]WWB$'rr@cN +9Ee/5s6_c4g&HR~> +r;Qrb)hmfrIc^S2Tg\GJrrV#=q=aggl2K^[XF;$0u_;NN;iVicZrPD6.lEgKj +U&7Rf9sO`i45nlmJ,~> +r;Qrb)hmfrIc^S2Tg\GJrrV#=q=agrE<#t>#QPW56n1S2q>^[XF;$0u_;NN;iVicZrPD6.lEgKj +U&7Rf9sO`i45nlmJ,~> +r;Qrc)hmfsIc^S2Tg\GJrrV#=q=agrNAE@I:LI@#9jD[IqHsJPHkS$(_;NN;iVicZrPhN2mBcfm +U&7Rf9sO`i45nlmJ,~> +rVm*#?=*6nBn#1D!fC"Jqu6`JSb`!Z!9sL8#u:O:78"D$Grl?0!!NF*@KB32i622mrVluaXoOfp +rrB>%9Ee.]s7B70g&HR~> +rVm*#?=*6nBn#1D!fC"Jqu6`JSb`!Z%<2@J!<`B<6q\;#Grl?0!!NF*@KB32i622mrVluaXoOfp +rrB>%9Ee.]s7B:1g&HR~> +rVm*#?=*6nC4>:E!fC"Jqu6`JSb`!Z%?3/"1f7Xa9hef7HZ!%9Ee.]s7B=2g&HR~> +rVm)G!Tj@OBn#1D!dSMMqu6`JSb`!Z!9sL8$VpdQ9M?3,,\M3M#Q"K)$YE-7BtiTN!RguHrri;? +:0ID"rrC4>9Ee.Es7CH1g&HR~> +rVm)G!Tj@OBn#1D!dSMMqu6`JSb`!Z%rhRL!<`EQ9M?3,+(o[H#Q"K)$YE-7BtiTN!RguHrri;? +:0ID"rrC4>9Ee.Es7CH1g&HR~> +rVm)G!p0IPC4>:E!de\Pqu6`JSb`!Z%uiA$1f7Xc9MAW!B6S`=@f'O:AW':bC;/]O!RguHrri;? +:0RJ#rrC4>9Ee.Es7CH1g&HR~> +rr35n7"519nS*I7rrV_-Fo)+>eXcO0rrD-ZfE=tM!]DP-!!NTYFCuj(qZ$d>Fse5h_;i`>jo,2] +jf&9e[/U-br(I;hC]FEpMY,X&J,~> +rr35n7"519nS*I7rrV_-Fo)+>eXcO0rs2F$!!*3&!]MV.!!NTYFCu[#qZ$d>Fse5h_;i`>jo,2] +jf&9e[/U-br(I;hC]FEpMY,X&J,~> +rr35n7"519nS3O8rrV_-Fo)+>eXcO0rs3[%1Ghs:@8'r*?j1"TI!944qd9SILaa:'_;i`>jo,2] +jf/Bq[/U-br(I;hDZB`sNV(s)J,~> +rr35?$L[ronS*I7rrV^sK)5KKeXcO0rrD-ZfFC[W!X/W*!!*'"#s3E;'Dhb5!CUo:26#Z\!R:H> +rri;;0l?otrrMaer(I8srr8s;o\0=q~> +rr35?$L[ronS*I7rrV^sK)5KKeXcO0rt8-.!!*3&!X&Q)!!*'"#s3E;'Dhb5!CUr;26#Z\!R:H> +rri;;0l?otrrMaer(I8srr8s +rr35C$L[ronS3O8rrV^sK)5KKeXcO0rs3[%1Ghs:@:!C??j'qVHZiut?j0teEXan+jNIYLq>UBs +rPgU0rjDb,oM5 +s8N/j;0i0@!pLY]k5PMQ9U5JS!nEk;pAY-Rrn%HO!!3-$!!!&u!!ETrIS1(G!!NO->6.U3jid_\ +rVlu]Jg8^OrrN'sr(I8kq>\H3o\0=q~> +s8N/j;0i0@!pLY]k5PMQ9U5JS!nEk;pAYLs!!!$&!!3-$!!!&u!!ETrIS1(G!!NO->6.U3jid_\ +rVlu]Jg8^OrrN'tr(I8kq>\H3o\0=q~> +s8N/j;1&1G^jb?t!GOqHsG8EIMq>qd9S:M-U-Z\`M$8h>R?U +janc/[Jp:+L76;=rTBJ,~> +s8N/b!TF%X!b,=&k5PMQ2lZZR!nEk;pAY-Jrn%H.!!3-$!!!&s!!E[&IRFM>!!NjE9*&b@k0*hs +rr3)u^&b"9rr?[/9Ee/Ys5?'2gAc[~> +s8N/b!TF%X!b,=&k5PMQ2lZZR!nEk;pAYLY!!!$&!!3-$!!!&s!!E[&IRFM>!!NjE9*&b@k0*hs +rr3)s^&b"9rr?[/9Ee/Ys5?'2gAc[~> +s8N/c!TF%X!b,@'k5PMQ3NDrU!nEk;pAYD*1G^jg?t!GOpg=59Edi";qd9SAMbO7f^?3W>oD\al +r4W64[/U, +s8N=h2t?qJeH+XjrrV^8^A@j2eXcO0rrCjRfEX#/!WW6$!!2or"U>]GGrl?0!!O?c-PMBRkfa(X +rr2p!eMV?Rrr@NG9Ee/Ds6_]4gAc[~> +s8N=h2t?qJeH+XjrrV^8^A@j2eXcO0rsL^b!!*3&!WW6$!!2or"U>]GGrl?0!!O?c-PMBRkfa(X +rr2p!eMVBSrr@NG9Ee/Ds6_]4gAc[~> +s8N=h3V!.LeH+XjrrV^9^A@j2eXcO0rsN0i1Gi-?@:3MO?t&n>"_)%dHZ!%.2.TTkfa(X +rr2p!eMVBSrr@NG9Ee/Ds6_c6gAc[~> +#ljELScA`[7"44s!q?rMqYpWISb`!ZrR_?-!!<3%!!!&p!!NTQB65[0qZ$aeE=Fe)kfa%krr3)l +Bh@9krrAMc9Ee/)s7822gAc[~> +#ljELScA`[7"44s!q?rMqYpWISb`!Z$Ru,V!<`B)!!*'"!VcWu#9RT#/-l%P"@R5=26#f`!9sL_ +"7p4uiO/[cRf#h_9tpZ!2s&cnJ,~> +#ljEMScA`[7"44s!q?rMqYpWISb`!Z$WJo<1fe!n?t!GN@JF46@V9n4CL[0K"FYG&26,la!:'R` +"7p8!iO/[cRf#h_9tpZ!3T\upJ,~> +#liudl2UeJ!9O4[!;#FS!q6QQqYpWISb`!Z!8@G)#8[RH!!*'"!VQKs#:st-*!cBA"Tqh1!*-Sp +bQlJms8W(p'@O;g!3Z5n"\kuroL[Kbs*t~> +#liudl2UeJ!9O4[!;#FS!q6QQqYpWISb`!Z$PrdC! +#liudlMpnL!9O4[!;#FS!q6QQqYpWISb`!Z#Y$U+1fe-r?t&Y7"_)7pH#$me?j1"r>l[m8lHBLZ +rVuosV%_FfrrB5"9Ee.js7An2gAc[~> +%0)bXnc/W[1\(MFfo#"n!q$*NqYpWISb`$[!WLgPfEW2r"TSQ'!!2]l":7/=<"o-/"V,-4"`_9B +bQ-c(rrUjS]!_P<`r&L69q)+S@^XqiJ,~> +%0)bXnc/W[1\(MFfo#"n!q$*NqYpWISb`$[%/q%C!!*9-"TSQ'!!2]l":7/=<"o-/"V,-4"`h?C +bQ-c(rrUjS]!_P<`r&L69q)+S@^XqiJ,~> +%0)bXnc/W[2=^_Hfo#"n!q$-OqYpWISb`$[#Q@1K1Gi-A@f9[7@J!q1@W$X:Ac#j=Bo>@_Ek^k` +!9O4[!ndUe[Jp6Hr(I8gRfE"h[G(Y2~> +#OtrKs8VUaMZ3VW0`]ParrVHcl2(D]eXcO1rrN,Qrn%Gl!sJZ*!!!&j!!EZtIS1(G!!Olr,9)ZZ +mE>dZq>^Kg"f&L*!9*iL"\jUKoR`Ocs*t~> +#OtrKs8VUaMZ3VW0`]ParrVHcl2(D]eXcO1rs\lC!!!$(!sJZ*!!!&j!!EZtIS1(G!!Olr,9)ZZ +mE>dZq>^Kg"e<"#!9*iL"\jUKoR`Ocs*t~> +#OtuLs8VUaMZ3VW1'#YbrrVQflMCM^eXcO1rs\lr1G^jg@U`_R?smF6?j(%\IWB#s?j1Y.,TDc[ +mE>dZq>^Kh"fo'2!9*iL"\jUKoR`Ocs*t~> +%IahTs8VKjg&K2."TZm5rrV9_meZqbeXcO1rs\kXf\"a_!sS`+!!!&h!!Es7IRFM?!!NBkE=F_# +mE>Rhrr3!oK=1^[nP/sU##/h3s-8<1g])d~> +%IahTs8VKjg&K2."TZm5rrV9_meZqbeXcO1rs\i4!!!$*!sS`+!!!&h!!Es7IRFM?!!NBkE=F_# +mE>Rhrr3!oK=1^[nP/sU##/h3s-8<1g])d~> +%IahTs8VKjg&K2."TZm5rrV9_meZqbeXcO1rs\ie1G^jj@UrkT?smF4?j(%_IW8ip?j0teFq$=* +mE>Rhrr3!oMm`QcnP/sU##/k4s-8<1g])d~> +%H.?Us8U=WnC8mh^&cRErrV![nG<.deXcO1rrN&Lrn%8U!XAT'!!;Th"U>rNGrl9/!!NO-?3*p6 +n&ts]rVunkEOGfIr)*Dd##/>$s0?8/g])d~> +%H.?Us8U=WnC8mh^&cRErrV![nG<.deXcO1rs/B,!!!''!XAT'!!;Th"U>rNGrl9/!!NO-?3*p6 +n&ts]rVunkEOGfIqGI2b##/>$s0?8/g])d~> +%H.BVs8U=WnC8sk^&cRErrV![nG<.deXcO1rs/H_1G^mp@:]=E!+G>("_)(eHZ!Nr)*Dd##/D&s0ZJ2g])d~> +%B2)Ps8RdQj]+7U^&cRErrUU^nbW7eeXcO1rs\hWf\"aY!X8W*!!WMl!!NTQB5oI-qu?m1AkN/= +^@9>MiW&r6@fEh9!WHF'9Ee;ks3aL2g])d~> +%B2)Ps8RdQj]+7U^&cRErrUU^nbW7eeXcO1rs\`1!!!$&!X8W*!!WMl!!NTQB5oI-qu?m1AkN/= +^@9>MiW&r6@fEh9!WHF'9Ee;is3aL2g])d~> +%B;2Rs8RdQj]+=W^&cRErrUU^nbW7eeXcO1rs\fd1G^jo@:WbS?t<^5?j1"SGBRb2r*T\BMbO7f +^@9>MiW&r6@fEh9!WHF'9Ee;ks3aL2g])d~> +%=)RUs7&LBZ2q5S^&cRErrU%VnbW7eeXcO1rrDlnfEVQ\"onZ("p4)j"U?i*A/Y^N!!O?c-PM3M +o#q9^r;Z\!iO/[cFo4o::A"SJ2tPf(J,~> +%=)RUs7&LBZ2q5S^&cRErrU%VnbW7eeXcO1rrDlo!!iW/!N*!i!-S35"]"^ijYuecs*t~> +%=;^Ws7&LB[/mPV^&cRErrU1ZnbW7eeXcO1rrDlo1C,jE@:WbS?t<^3?j1"UI!K=5r*T\DLaa!k +_=GeRc2@V>?/`3k!-S35"]"^ijZ2qes*t~> +%8i/cs6p]G4'p.T^&cRErrTG[nbW7eeXcO1rs\\Tf\+gV!=8`,!!WMh!!ETiIT.!X!!Pc1'/??" +o?7?rs8I#o[Jp5ar(I8gl2U6/mb@bl~> +%8i/cs6p]G4'p.T^&cRErrTG[nbW7eeXcO1rs\Q#!!E<&!=8`,!!WMh!!ETiIT.!X!!Pc1'/??" +o?7?rs8I&p[Jp5ar(I8gl2U6/mb@bl~> +%8i/cs6p]G4'p.T^&cRErrTG\nbW7eeXcO1rs\ZY1H%'r@:EVQ?t<^1?j'qVIWT/u?j1t%'/HE# +o?7?rs8I&p[Jp5ar(I8glMp?2mb@bl~> +%3rUes60O'"hMq%^&cRErrS`ZnbW7eeXcO1rs\_Uf\+gV! +%3rUes60O'"hMq%^&cRErrS`ZnbW7eeXcO1rr_Ea!!N9%"U4r-!!NGe!!EU$IS1(H!!NI+@KB32 +oZRH_qZ!8B[Jp5qr(I8gg&LY*h:qs[~> +%4&[fs69U("h`('^&cRErrS`ZnbW7eeXcO1rs\3L1H%'t@:WbS?t*R-?j'qZIWB#t?j1"r@KK93 +oZRH_r;WJD[Jp5qr(I8gg&LY*h:qs[~> +%0bSfs324/ +%0bSfs324/ +%0bSfs324/ +%05Yms.qe)WQ`Ss!L +%05Yms.qe)WQ`Ss!L +%05\ns.qe+Wm&\t!gWcLrrRO^nbW7eeXcO1rs\!F1Gq1!@:`hT?t*U+?j1"OH$a@:r*T\JLc#Wj +_=u.U\MYng[Jp6Cr(I8gWrM^6V;)$#~> +$j#ers*83,_9C,046>`,!qC,Iq>UNHSb`$[!;-9C#g*/K$NL2-"U!`a"U?;mE?kee!!P*!'.9?e +qof5[IK`Y^d^B)Tg&+MJ9qD=aNfNbes*t~> +$j#ers*83,_9C,046>`,!qC,Jq>UNHSb`$[%,Lsa!XA`,$NL2-"U!`a"U?;mE?kee!!Ooq'.9?e +qof5[IK`\_d^B)Tg&+MJ9qD=aNfNbes*t~> +$j,kss*J?._9C,046>`,!qC,Jq>UNHSb`$[%-99$2*#&QARJqS@Ue>)"_)4iG%tLa?j1V!)_%>o +qof5[IK``>h6m7_g&+MJ9qD=aNfNbes*t~> +$PW(1nQCH\bfmX!Z0;2inR<9^qYpWISb`$[!;-9C#g*/K$NL2-"U!Z_"U?i/A/Y^O!!NF*AHbZ5 +rlbV`Tdpe",65clrrD?^9En4Fs8Sp8o\BIs~> +$PW(1nQCH\bfmX!Z0;2inR<9^qYpWISb`$[%*S\O!=&W+$NL2-"U!Z_"U?i/A/Y^O!!NF*AHbZ5 +rlbV`Tdpe",65clrrD?^9En4Fs8Sp9o\BIs~> +$PW(1nQLN]bfm^$Z0;2inR>\XqYpWISb`$[#LtUd1c\rPAc?*;@c1Vt@VgC:An(^H"_!7'"\H-$ +bQktX.hd_]@+_me!:B\X##0gOs.sc.h#Dm~> +$R>3AnL'U)bfk&]jll^JnJ2*,L&LrL!nEk;p\t6crn%M!!!*H-!<<3(r;ciuj8];h7"/)Kqu@35 +AlA\4\u@ap@TNX3!4K<8!VT:e9En46s8Tr9o\BIs~> +$R>3AnL'U)bfk)^jll^JnJ2*,L&LrL!nEk;p\tZG!!!$)!!*H-!<<3(r;ZfuirB2g7"/)Kqu@35 +AlJb5\u@ap@TNX3!4K<8!VT:e9En46s8Tr9o\BIs~> +$RG9BnL9a+bfk)_jll^JnQJ^fWr;kq!nEk;p\tKK1G^jJ?t!XG@/j^7?ia)1jBr+"EIN"@r*U"D +McBa\]W+$s@YnQ%@*5nW!V]@f9En46s8U)=o\BIs~> +$8M)NnIq2(beZ5\kPkSQ$2so*2rX`8!nEk;p\t6\rn%M!!!*9(!<<3(r;Zfur;ciuk5YVm97BM? +qu?sAG!lK7?=j]G!!&OsrrN'srCdDi@fQJa7.f:7J,~> +$8M)NnIq2(beZ5\kPkSQ$iU,,2rX`8!nEk;p\tZ4!!!$)!!*9(!<<3(g].Hb97BM?qu?sAG!lK7 +?=j]G!!&OsrrN'trCdDi@fQJa7.f:7J,~> +$8V/OnIq2(beZ;^kPkSQ9)_TeH05)*!nEk;p\tZC1G^jJ?t!SR@:3PRrEoV3rF#Y3k?nF(Edi%< +r*TbFLdVCJ?AiOr?i\'OrrN'urCdDi@fQJa7.f:7J,~> +$:OFan-,N%bdmhpkPkSQ$2ji/",[$Ws4*\9p\t6\rn%M!!!*9(!<<3(r;Zfur;Zk2,NSn7'3'EB +#ltD7!!"9fAdeJ9!/\,`!WHF(9En3orr;4=n_F.p~> +$:OFan-,N%bdmhpkPkSQ$iL&1",[$Ws4*\9p\tZ4!!!$)!!*9(!<<3(p](>-,NSn7'3'EB#lt;4 +!!"9fAdeJ9!/\,`!WHF(9En3orr;4=n_F.p~> +$:OFan-,N%be*trkPkSQ9)VNj<3uT(s4*\9p\tK>1G^jJ?t!UF@/j^7?iXO3?itTu,>.-,#%_n* +DIR!Vra5hCLl5jA?i[O@rrN+*rCdDi>5nQe2=]K%J,~> +$;p?nl2\69b_dY,kPkSQ$2X]+7-ag&Sb`$[!:Bd<#d+.."onZ(!sA?!"TbsRY$MM7!!!&d!!``I +A6_f%70WAb!-kmN!-.p1"]>3tnMTRds*t~> +$;p?nl2\69b_dY,kPkSQ$i9o-7-ag&Sb`$[%$LYk!=/Z+"onZ(!sA?!"TbsRY$MM!!!``IA6_f% +6j32`!-kmN!-8!2"]>-rnMTRds*t~> +$;p?nm/XQQ/";@D0mf?5PJ#?sm=- +?jC.QH$2kT9j[O$!2m4(!-8!2"]>3tnMTUes*t~> +$;p?nklA`I_,X_E"]"^ioL.Njs*t~> +$;p?nklA`I_,X_r=.Q7\- +!!%_[rr@cN9Ee2`s7A_8h#Dm~> +$;p?nl2\iJ_,Xe>kPkSQ9);YJW#?i[46rr@cN9Ee2`s7A_8h#Dm~> +#uU6mjT3WM_&Js-rr_d)! +#uU6mjT3WM_&Js-rr_d)! +#uU6mjT<]N_&Js-rr_d):f.!a!fNNCp\tZ#1G^jG?t!SR@:3MQrEoe3@:3JP`r!s__/^eO;!VKn +?;+U/FCo"W?i[46rrAMc9Ee/Xs7B=2h#Dm~> +#uU6mi<@KM\H't +#uU6mi<@KM\H't +#uU6mi<@KM\H't09MA]2IWT/s?i[+3rrB(s9Ee/Hs7C?3h#Dm~> +#ugBofa>sIRM4fFrs%s"g$rYT!W +#upHpfa>sIRM4fFrs%s"g$rYT!W)?9dB!!*'$"oJ?'!<<30aS!aXO[SU; +#o63..KKoMIRFS@!!*/0[Jp6Dr(I8g`rG[bQ/)Ci~> +$!$Nqfa>sIRN(ANrs%s"g%L>#;#O/m>^9;:p\FgoNAE@I:LIUAra5b8@f9[;8mu+:Ab=1KO[LEd +r*T[J!!"!,?Me+:>"hUp?tFA-EFo#T!Fa-YrrC(:9Ee/1s7D#1h#Dm~> +#oiC6h$VTSCIIUQrs/#siW&qV('4C7"Y+$b!#iKGrrD<_fEdoG!!N?9/-6"Q!!E<&!Y3BEbQ5OA +o`+smqu?a*.fB>L'3'EKqZ$WtW4)^+h>BqN9st$$Q%ekds*t~> +#oiC6h$VTSCIIUQrs/#siW&qV('4C7"Y+$b!#iKGrsWlI!!*uL'3'EKq>^Mo[f6?`r(I;h[K$8lL%O4$J,~> +#oiC6h$VTSDFEpTrs/#siW&qs>#>2o"^H=P:M/)PrsXlC1Ghm8?t*MTCLL]N?j/r,?t!clo?79P +3un3,!#5A3!X1)Nr*TP.>lA%4ATWB@qd9G2`O>dHh>BqN9st$$Q%ekds*t~> +#rV8Qh$VTH9POLgrrVThjo58bnQ,_l!%ML]rVut@r;?Qpl2K<@RK*?mQV:'S"oJ?&!<<-6n]UuB +kPt_j*.CNaqu?a(n[JMume]Z]V>pRuD=lZaJ,~> +#rV8Qh$VTH9POLgrrVThjo58bnQ,_l!%ML]rVut@qY^@%E<#t>)?9dBQV:'S"oJ?&!<<-6n]UuB +kPt_j*.CNaqu?a(n[JMume]Z]V>pRuD=lZaJ,~> +#rV8Qh$VTH9PXRhrrVTijo58bp5)UB:L&0Er_EQcr;?R'NAE@I:LIUAVbBcm@f9[;6t'J3D"5^M +@O(hZ!"8W'!Ydb$pg=J=COU;5?sm1Y=CV!5rrDKa9Eh9ms/p52h>`!~> +#W;/Ph$VTH,F.Bj!q$*Nr;Qqf$NV_f"8r3#,g6/d!9sL8#]KbE6qp?K;$["!!s&B&*:_5Q +#W;/Ph$VTH,F.Bj!q$*Nr;Qqf#QZDc"8r3#,gZGh$ul7I!=/Z+6qp?K;$["!!s&B&*:_5Q +#W;/Ph$VTH,aIKk!q$*Nr;Qr3=\r@K<;fSnC>o-k%#m&!1f%LfI8*C/;.BK3"@Q[+@<(h]!ECZK +?i`=mq#CI",>@l?$>Xip?sm1==C>_6\GlU*;>j/m9q)+^b#.fes*t~> +#W;/Ph$VTH$G,@!!pTdMqu6fa81J-Pqu?m&L&M&OjSmd;Du]nW9he;U$2ac*!<<-Nn]Uu$r;[!& +_SL4:!Up'j/7]"^!!+#5\c2^/;uKAo9niWIh)k5as*t~> +#W;/Ph$VTH$G,@!!pTdMqu6fa81J-Pqu@<2L&M&O:]LIr#QOlD9he;U$2ac*!<<-Nn]Uu$r;[!& +_SL7;!Up'j/7]"^!!+#2\c2^/<;fJp9niWIh)k5as*t~> +#W;/Ph$VTH$G>L#!pp!Qqu6fdLKo+(r(do(Wr;ttF#,U/:LIUC9he;U@f9[;6t'J3FRdQU6o4gM +"_#EeE[1\]!!3NY9)E!(CO'As?s!D2?smUA\c2^/ +#W;/Ph$VTE!70d,!p'INqYpZsKk(Sf!!>1=s5a13#]KbE,YUp+=U"^'!s&B&2=\lj2>mLU"igPc +!j5i=q#CBqqZ$[R>R1')!A+2\rrN+*rCdDiEW?((1\'<$J,~> +#W;/Ph$VTE!70d,!p'INqYpZsKk(Jc!"V$Is%i[q!=/Z+,YUp+=U"^'!s&B&2=\lj2>mLU"igPc +!j5i=q#CBqqZ$[R>R1')!A+2\rrN+*rCdDiErZ1)1\'<$J,~> +#W;/Ph$VTE!70d,!p'INqYpZsWd.bD:Cha5s)TtP1f%LfC.q>q>%7G<"?^+#@=dsm!Au\4?ia`Y +rlbGH?4H]1! +#VklLjT3oB!7g32&)d]#bLtk8mIBoGdZm3$!W)iu",Z+d-49k+,%nMTRes*t~> +#VklLjT3oB!7g32&)d]#ce7: +#VtrMjT3oB!7g32&)d]7iT0.eo(MhRdZo5W;#=#i<3pZF1C-ca@<4hc>&n*N?jA`$?t#/Yg!B<7 +"XuQA?s[F@bQ=%t"oA9#!a,D/#B"Wm?sm(:>Q%q1IK$hX!,_[.##/S+s7%u3h>`!~> +#Uf0BmJt\G!SQT7!87)H"Y=:%('=U7!!!&ufEcEr!CSl8@W;VN!"0/8!!-g6s8MZPg!0<9!#tk: +!"SeJ"2T+1'DMP24&cFb!!2or!-GgP!.t,B"]bO$o/kdas*t~> +#Uf0BmJt\G!SQT7!87)H"Y=:%('=U7!"ArY!!!$*!!,JHRUU:Ar;[35!<<.7s8W)jjk7oRbQ&U\ +!!!N(bQG\(.hh[X"ZoZg!!!&r!!%,Prr@ZK9EeGps78>.h>`!~> +#V#$=m%qbIYt<&6.h>`!~> +#UAm>mJt87!SQT7!71B>!\.^_p](9prR_Bp!!,VHSR-:?r;Zs,!!!%Equ6ftoB"NIr6,-Sr;Zg; +oumHR;u$Cp6q[dY!!&CurrAMc9Ee;hs7B70h>`!~> +#UAm>mJt87!SQT7!71B>!\.^_p](a(.KBGL#QOlr1S%il#5nN)$NL/-Gl.LDrU].$c2>cc'E%n2 +*;.MV_Gp=2!^oZdp&G)[]Dhl"r(I8kq>^(d`ngZF~> +#UJs?mJtA:!nl]8!RFO9:BFdH<;95u:fK5,1f%LfLGbW/G%CPZ"A3'0@Aj#&"T@rRe]n$9!>A*) +?iY!8bQ5^`rVupKrEokMEaiEa9FG)%?i[dMrrAMc9Ee;hs7B=5h>`!~> +$6/O8q*Y4nD;"ILkPkP!pAb7EA-;T,!!!%-7rqZR!rU].$c,p@o +rVupCo?72@q>gO`!!i2t!`!~> +$6/O8q*Y4nD;"ILkPkP!pAb7EA-;T,%077F!!*3&!EV(N??$2J!!X2>!!%-7rqZR!rU].$c,p@o +rVupCo?72@q>gO`!!i/s!5#oD!3,li"\nOeoPLbes*t~> +$6/O8q*Y4nD;"ILkPkS&:A@Td>^9 +%NFs@P!H*5ukrpfIW!V!\p!!4W\"8Dis!S[P*#YtF$Ai6DkEUNpklq"c!&sMn!QmA!!!3Bu7.^H["kgTh!5\S,"\n+YoR`Ofs*t~> +%NFs@P!H*5ukrpfIW!V!\p!!4W\"8Dj*!>b_9!<`B'Ai6DkEUNpklq"c!&sMn!QmA!!!3Bu7.^H["PLKg!5\S,"\n+YoR`Ofs*t~> +%NFsd">??TlX?j^(G?t#VMce7UX +rqZQrrTXPgra5_Oo?7I6kil%?iaTk^&J)Kr(I8gjo=t)Rbe!o~> +!?:S-rt4MWc_Z>-0a[q#6uAC=l1"65pAY6V??lSH!!4W\"8Dis!S[P*#YtF$AiG`KEVrrM]pr;Zggo#q(qqu?d'90;_F!>G:CrrCLF9En5;s8S4=o\TUu~> +!?:S-rt4MWc_Z>-0a[q#6uAC=l1"65pAY6V??lSH!!4W\"8Dj*!>b_9!<`B'AiG`LEU +!?:S-rt4PXc_Z>-1("%$6uAC=lL=?6pAY6V?@,ND:BFdH<;95u:e!5s1f7XgM`HetG%CS["^Y\I +?t#u2bQQ8JlM:GWrrVcq>Q/"1L[rXj3rh)9?ijeXDZ4#F4;;#q?iaj7^Ae2]r(I;hci=$-MY,d* +J,~> +!?:S(s8VU#nE%f^F[QlC$7fSG_;4PLnbrIiksR$/q#LEq!\.^_pAk9Grn%<*!!.9B-NRuer;ZsJ +!<<.Sprj#ihjP3FnFPjJ,~> +!?:S(s8VU#nE%f^F[QlC$7fSG_;4PLnbrIiksR$/q#LEq!\.^_pAkL*!!!$&!!.9B-NRuer;ZsJ +!<<.Spriuhh +!?:S(s8VU#nE%f`F[QlC$7fSG_;4PLnbrIil9m-0q+q#e!aL"MpJ;)U1G^jg?t"lj.04 +!?:S!rtFqllJ8jn:*ToG1M2?Oh;Ms%fnKD+q>^t.K8"PlAlhAZ/0l,LfDaD./cYoo.jl]a#5nN) +-NO2JQh8K'cf*+H!!*+4o?76T"oJ?%#@'(T!!$*8rrDQd9En4rs8To>o\TUu~> +!?:S!rtFqllJ8jn:*ToG1M2?Oh;Ms%fnKD+q>_C:K8"PlAlhAZ/0l,L#ljr+"98IE.jl]a#5nN) +-NO2JQh8K'cf*+H!!*+4o?76T"oJ?%#@'(T!!$*8rrDQd9En4rs8To>o\TUu~> +!?:S!rtFqlmG50s:*]uH2.hQQh;Ms'fnKE%qG.uUMlN\GR>H?;CMIHb3\rQKPDM*M80&jnGGra9sO`u_-Q]is*t~> +!>G"hs8VU"nD1'h>:0RS'BS>0!!*H.qZ$[IA>]2&!ri,Lrn%<*!!79A-NS2krW!*&,QRlGVXhq2 +U&=rl!GV/L!QG<@!!3C9/FWW>Gej=[q,.)a##1ros4'O0hZ&*~> +!>G"hs8VU"nD1'h>:0RS'BS>0!!*?+qZ$[IA>]2&$3'c-!!!$&!!79A-NS2krW!*&,QRlGVXhq2 +U&=rl!GV/L!QG<@!!3C9/FWW>Gej=[q,.)a##1ros4'O0hZ&*~> +!>G"hs8VU"nD1*k>q#pW'BS>0:Jb1jqbI8uH+EbN$3'i`1G^jg?t"H^.04U&ra5n+C11LY\amrF +TaUj-!F__obQGig!&OU^!b-Fjra5d`,?skL!2mX4!VoUk9En4fs8UV;o\TUu~> +!>G"bs8VTsnC]0diI1e-!%\-Or;ZsMA-6H;qYpTofDaD)(B=PSr[._d#5nN),QRlGZguqu?d'B-csH! +!>G"bs8VTsnC]0diI1e-!%\-Or;ZsMA-6H;qYpit#ljr+"onaBr[._d#5nN),QRlGZguqu?d'B-cpG!6;qU!W?$s9En4[s8V1>oA9Lt~> +!>G"bs8VTsnC]6fiI4U!:MWd'rD*Q$GuU4+qYpj!3\rQK +!=ePWrsIE[iH,)#!!0MD!WE'&.V&V](;'JD!;ZTG#T!IFBdY8YF9_[D"=+!J!OM@@!.t.L!r'!W2p!#B;$X!!*E"_>aLErCdDiMZ<_E1[s9$J,~> +!=ePWrsIE[iH,)#!!0MD!WE'&.V&V](;'JD!;ZTo#lt51#&,G4.s)!o!!FPJ!!0FsbQ*7n!!*+S +oZRBZ_#aH6!XE]emf3@pp;-b/@f8t)9oAuNmPF@hs*t~> +!=ePWrsIE\iI"Ht:Jf2;;#X5o>^9:E>1 +!=J>Trrhj*`c2%Y!!iUIrVllmrR_Al!$kc)-SoNBr;Zs?!<<2 +!=J>Trrhj*`c2%Y!!iUIt= +!LWN'!m84Xqu?d'F;jQI!A+5err@3?9En43s8V[Jl/)Gj~> +!=J>Trrhj*`cb2X:C'dfM,7#E>^99brq?ib'B_Z'UYrCdDiErZ122 +!=J>TrrhjHY%7Y4!!`O]S-o?IA-;c1!@5kfrrDlnfE`8n!<@+GCB4V;!!F8B"TuX4bQ)AU!!*+t +oZRBZ\cM^/!XEuam/R,f_Z'UrrCdDi@fQK#45JcnJ,~> +!=J>TrrhjHY%7Y4!!`O]S-T-FA-;c1!@6"jrrD6]!!r]2!!*(>?>BQFr;Zs?!c"=2Ot;Nr;WU9k+/&oK1mcs*t~> +!=J>TrrhjIY%pl4:Bs_&_HB]?GuX`?t!Gd?>a1\ra5mlCLL[]`q%=SC*W^c +!F`P2bQQ)$!<>Oe?jC.fARJnM,;\mu!/\Sm!07"O##/S,s7AD/hZ&*~> +!=J>Trr_d)`b##I"q0MW81J-Pqu?j%L&M&IrR_A`!!3-("p"`.rW!*0`[_2n`q%=R?Msj)!OMCA +!OVt+!!3CN'C5]!M8T>nU&@Xh:0%8moM*Tes*t~> +!=J>Trr_d)`b##I"pj;T81J-Pqu?j%L&M&7rW!6+#QOo+"U4u."o\K*$cX\#!QO]S!+,U(! +!=J>Trr_d)`bYHI#$L9ZLKo+(r(dGpWr;t`r\Fj<=^YZG@UrnU@fBa=3lZ8N@EJ)a!F@;U?ia]L +o?7ak?jC.fARJnM*'Eb!!40TC!29?b##81ss7B%1hZ&*~> +!=J>Trr_Zifj=OU#Q\Q;reZ(>!sAH$!]T*1rR_AZ!!*'%"onZ-r;Zr1bef_:bQ(N=!!*/ +qZ$[(ILGKB! +!=J>Trr_Zifj=OU#Q\Q;reZ(>!sAH$!]T)prW!6+"98H&!sS`+"oSE'\]hpWn]Uu1r;Zj"_XktO +Z24M&$%<9K!!*5]`;]h:r(I8kqZ$1s\_d@:~> +!=J>Trr_Zjfj=PO#Z-rhrg&":<)ick!dWqir\FR4?N+=8@UrkT@fBa<1V(`LVt%t3;)A2Z!Fa"> +bQG*M!)3B"#@`-n?sm1Q7.FXc?KT3+!35rj"]>3toO>Afs*t~> +!=J>Trr_'\fi7eJ%fs +!=J>Trr_'\fiIqL%fs +!=J>Trr_'\fin5J%oCaTrLJC\C0XqA<)6:hPl80Kp?ib$A`W#qKr(I8hp]'l.V;D6&~> +!=J>Trr]YZePu>E%QFCeq=B;.A:Af/3u/2VrR_AZ!!3-%"onZ-qu?b0b4*UT1&_.S!=?p?bQF[A +!!3'!!XX;^l2Ufr`W#q\r(I8gnGi-7Q/;Ok~> +!=J>Trr]YZeQ2JG%QFCeq=B;.A:Af/3u/))rW!6+"98K'!X8W*"oJ?$B$0Ve!&=EP!=?j=bQF[A +!!3'!!XX;^l2Ufr`W#q\r(I8gnGi-7Q/;Ok~> +!=J>Trr]YZeQVcE%XJ'Rq=CV+H%(*`DH^1Dr\Fj +!=J>Trr[sXcVFE=!!3'!! +!=J>Trr[sXcV49;!!3'!! +!=J>Trr[sYcVXR9!)WYj!Dpc6rtS[L=^#?XI"$6M;`QmJ?t!GOA7/hTr*T\%9hg>Pb4NmY,XhW> +!GT^JbQFC9!*K5.#A&?n?sm1H:@;Kib/XG]iVZ@R:$)ETQ&>4ks*t~> +! +! +!?F9S:k#gppriaP +9`AE"D">dPPlLedra5tBIUZ\m>6Rjk?iam=a8Z//r(I;hec5ZGFnFSkJ,~> +! +! +!4Kf=M?!W\ra5tBIUZ\m>67Xg?i[4IrrMpmrCdDi`rH(L@eARXJ,~> +! +! +!6%dm?iaa(aSu;? +! +!pSK7.fC:J,~> +!#.182*,&O@UNVY@V':oH%(*^DJ!?ep0\)/ +6on%bZ-)OZ"+C4O?N+=;Ape&q?s!D2lsKgna8Z-KrCdDiV>pSK7.fC:J,~> +!E +! +!=:MHEj!RVbQEk*!abk6#A\Kl?sm(:=R9DqF3":\ErAZ99q)+^iB-Ygs*t~> +!l!!4EY#Nl'f$1Q%9!.t/C##1!Ts62E2huA3~> +!l!!4EY#Nl'f$1Q%9!.t/C##1!Ts62E2huA3~> +!=pqMEiR7WbQZ/5@K6R9ra5tGG@Frf=9)Rl?iaa+aSu6lrCdDi +NW9%D2=]T(J,~> +('3k's8A')Al18r!ELjr!lL=?6q#:Qg,Iuph(BOL8$iuac$NL/VA=3D^0`h7R&-8`of[n`t +1K8IFED%hr#m^8+rs&o<*(4%\H!EEL#mU_/!!EZfD5kPQbkV5?/7]"b!!!&c!!*,caSu7*rCdDi +H2mp41[s<%J,~> +('3k's8A')Al18r!Eh1&"lL=?6q#:Qg,Iuph(BOL8$iuac#QOiSA=3D^/-5_M&-8_L!!rrH +1K8IFED%hr#m^8+rs&o<*(4%\H!EEL#mU_/!!EZgD5kPQbkV5?/7]"b!!!&c!!*,caSu7*rCdDi +H2mp41[s<%J,~> +('3k's8A'*Al1;s!=pqMD5tVRbl.SB1]:\dCO'As?s!J7lX0_[aSu7* +rCdDiHiO-62=TN'J,~> +2?E7Gs(28N_S2kG_8`mFD+#TU!"CetMRhR.nF?&Ks69XD0aSu7: +rCdDiC&e5'1[ +2?E7Gs(28N_S2kG_8`mFD+#TU!"CetMRhR.nF?&Ks69X'`\UO$RAAUIX+mS)@6ZD!"9)='/NU0IV2;)$O6q1!!N`hBr.7iq#CIP>R0Bk!7Jsg!2]Wf +##/h3s7%o1huA3~> +2?E7Gs(28N`kJ:L_8`mFD+#WV!"CetMRhR1nF?&Ks6Tj?jk24^:esk`])S0o:L&0[rVuV,rD+)B +NAE@I7UTeAASQ72IX?0SAn#6E@/j[CAScI9IWogJAR]-D?j^443_X:bRRmJZ,Q(pSCj'8q?r$r1 +lX0_KaSu7:rCdDiCB+>(2=9<$J,~> +2Z`@Hs*eRsb]O@>'*/+Q1L#I9_SN'o=XO@Q%5D(=ZDe2ijk1l2,QRuJSH$b5!%MLeR/d3F"9&9$ +!Rq&#'?U:W#lju6#72;1<-`q*6mN-F#PeB"#7:ha6t^so<'(a"#P\9!!VQKp4&cII!!'XPrrBA' +9En3trr;RKjkp)g~> +2Z`@Hs*eRsb]O@>'*/+Q1L#I9_SN'o=XO@Q%5D(=ZDe2ijk1l2,QRuJSH$n9!%MLbR/d3F"9&9; +!GMN6!>PS:#lju6#72;1<-`q*6mN-F#PeB"#7:ha6t^so<'(a"#ODEl4&cII!!'XPrrBA'9En3t +rr;RKjkp)g~> +2Z`@Hs*eS"b]O@?'*84S2-kg=`keKu=t'UT%5M4@[AjSmjk1o;C/@l+_Z/Rk:L&0J])Vfm<;oZ1 +:l7%b1e(k^@UNVU@U`qeFF/I\EGB&o@ejF3@L?[]EHckYFDbZ!@ea=7?;*-h$U";o#B"Wm?slS7 +>O,Yse&_Oh[J`c'9j[i!o/Ypis*t~> +2Z`@Hs*eFo;ZP&+jk7eQMJZ$3$315W;0f.X_Pr,n.fa_Njk1TPr-/;EVZ6T?!%ML](@(r"7/d/e +!OVjY(Wl^["onZ3!!*-$#6t_i94r]q<&50o#P\9-#72;1>^:d/6mN-F#Oqcq4&cII!!'XPrrC:@ +9EeGps7A_4huA3~> +2Z`@Hs*eFo;uk/,jk7eQMJZ$3$315W;0f.X_Pr,n.fa_Njk1TPqKN)CVZ6T?!%ML](@(r"7/d0+ +!@n-M!>PS:"onZ3!!*-$#6t_i94r]q<&50o#P\9-#72;1>^:d/6ludA#Oqcq4&cII!!'XPrrC:@ +9EeGps7A_4huA3~> +2Z`@Hs*eFs<<18.jk7eQMJZ$4$315Y;1#=_`i=Vs.fa_Njk1TQr23Lj\c;VC:L&0E>4)@iIK!"^ +:fB/+1e(k^A7/hW?t!JO@Ua%eEd)t[FDPMt@ea@2@L?^bG'e[`EG&il@e!h2DKK>q?pkB,lX0_A +aSu7ar(I8orVuLXg#)g[~> +#m'Jos+4^s@T2dmru(7diRPc0D-8S&!!OTBFfpkHfua;ts8U7frr3;'!@hU^!&=3IGl@[D!Lj#? +$*F70$NL28!!*0!!<393#ol?*qoM*Tfs*t~> +#m'Jos+4^s@T;jnru(7diRPc0D-8S&!!OTBFfpkHfua;ts8UCjrr3;'!@hU^!%djDGl@[Q!?(q< +!=/Z,$NL28!!*0!!<393#ol?*qoM*Tfs*t~> +#m'Jos+4_"@TDporu(7diRPc0D-A\(!!OWCFfpkKfua;ts8V%mrr3;D:gA9F:NQ:1VuBI%:erl' +1cA`MARJqX?t!LA@/aU?CN4NEHZjCEraP\2s'c=HCN=TIHua"6@Uf"<#B=cn?slA:>O,Ys`Q8&Z +iVZ@Q;>L7a:!MSqJ,~> +#lsDns+4RoAl8'hru^apiRPc5D-8B[!&4WrflVImM=LWGrA,p6!rr +#lsDns+4RoAl8'hru^apiRPc5D-8B[!&4WrflVImM=LWGrA,p6!rr +#lsDns+4RsAl8'hru^aqiRPc5D-AH\!&=]sfq#%@ZhFG!rG5_a<)6;&h5C6J%T#qW1Gh!t@:`hT +ARJqTpL+#1$>"$qI"$9[CLpsaq-a53$>!jiH%(*`DJ!?eq-a5B"_(kI4<.Sk?i\0errDTe9Ee2` +s7BX3huA3~> +#ls8js+O[oAkqd\rs/&Xh7f#k?=s-9#6RNMs2um&"8Mot".K5A$(:hq$NL28!!*/m!<392$RA,Q +IX+mS)@6ZD!"fGB'0B08IV2%o$O6n:!!c.bjT#:ZaSu;:;>j/l:$M]MD6DdrJ,~> +#ls8js+O[oAkqd\rs/&Xh7f#k?=s-9#6RNMs3E0*"8Mp,!u_.>!?(q>$NL28!!*/m!<392$RA,Q +IX+mS)@6ZD!"fGB'0B08IV2%o$O6n:!!c.bjT#:ZaSu;:;>j/l:$M]MD6DdrJ,~> +#lsAms+OauAkqd\rs/&Yh7f#k?AnbX#?6K>s5@4.<;B<"<)5;+1f%LfARJqX?t!L8@/j[CASQ4/ +IX?0SAn#6E@/j[HASuU;IWodHAR]+V?t+.rra5d`,?sJA!6*%Z!VoUk9Ee/Us7C02huA3~> +#ls8js,'t!Bhe$YrrMTsq#CP!l?6\?q#CEtY5[&[RK*?r!!*H-!!2Kf$jR(W4'[&[A4.[N#7(&) +rs&o>/5'W)FAt%0$X?*]!!&t=rrN'srCdAhh>d+rS_sHt~> +#ls8js,'t!Bhe$YrrMTsq#CP!l?6\?q#Cm,#QOi*)?9dG!!*H-!!2Kf$jR(W4'[&[A4.[N#7(&) +rs&o>/5'W)FAt%0$X?*]!!&t=rrN'trCdAhh>d+rS_sHt~> +#lsAms,(""C/+-ZrrMU+q+h-Mm>-$eq+hK"2D[-G:LIUB?t!VS?t&J2s'c=IDK^AUH#[S1@Uf.@ +s'c@ICN=WJHus19ATi(m?ii,/>O,Ys`Q8&[rDiei"\mhQoR<@gs*t~> +#ls5is,'grBh@aUrrDQ_!!^:dI)W^r!R)o:.r`f=p"\m/>oSSdgs*t~> +#ls5is,'grBh@aUrrDQ_!!^:dI)W^r!R)o:.r`f=p"\m/>oSSdgs*t~> +#ls8js,'grC.[jVrrMUOpeLupQ?HF,:C^2Z1G^j`?t!bW@:`hS@Hq8#@L?[^EcunZEbo;r@ejF2 +@KpF^G'e[eB)Z3<.f`f>?i[dZrrN+)rCdAhb5_*kOl-1h~> +#ls5is,KsrD+X0YrrCL@!!=]m('473! +#ls5is,KsrD+X0YrrCL@!!=]m('473%KR:E!!*u +#ls8js,KsrD+X0YrrLqNpJ1lrHs0AC:C^2j1G^j`?t!bW@:`hT@HLts@L$OcH%(*`DJ&lWq-a53 +!G,mB?ijO_/*^LBWlP,>CAgg19tC<(Oc&ehs*t~> +#ls5is,g0uD+*gTrrD0S!!Fc^$Pid?!!*,Crn%Nr!!*Q0!=Jl.!oX+f#72&"<-3S%9.UGU#M]:Z +Kua2nH2UD@9r\0mRY(1is*t~> +#ls5is,g0uD+*gTrrD0S!!Fc^#SmI +#ls8js,g0uD+*gTrrM4VpJ1osH!+ +#m'/fs-69tECB6XrrCaN!<*#t!!Xo`!rsSI!WE'"!>bXd$#fkF%KHM;!!*/W!<392$RA,QIWSON +'+"p%!!%_nrrA)X9En4^s8Sd +#m'/fs-69tE^]?YrrCaN!<*#t!!Xo`!rsDD!WE'0!>[-b!!*?*!=f)1$NL2/h#RH[$4A+IB7=r% +3tho*huEb2a8Z."rCdDiScA_`H1^%pJ,~> +#m'/fs-69tE^]?YrrM1Ur_NMirD*W&GuRRP:f.-e%o?G/1G^j`?t!bW@:`hT@GP>k@L?[]EHckZ +FDbZ!@esI6>9brh?i[4IrrA)X9En4^s8Sd>o\fb"~> +#m'/fs-cO!ECB6XrrD$V!##BF,QRoG!%ML]!!"Pq!<<-9s4[J)$#fkF%KHM;!!*/R!"0#<)EV2L +IUkhl#m0/f!-lQa!29?b##1!Ts/Bl-i;\<~> +#m'/fs-cO!E^]?YrrD$V!$D;S*ruBB!%ML]!!"Pl!<<-9rtbY8!=/Z+%KHM;!!*/R!"0#<)EV2L +IUkhg#m0/f!-lQa!29?b##1!Ts/Bl-i;\<~> +#m05gs-cO!E^]?YrrM7Wr_FY5R:f>m:JY5@<)6;*B2DB#>5q&J1Ghm8@;0+XARJqTqdBF[!DH_W +@/j[BAo;d=IX,pG@U]7D!a?X#l +#m'/fs-lErFZ\mOrrD0Z!!r\7rhp_9!%ML]rW!-jflX\#rn@A($#fkF'*&%@!!*/N!<39.'.cdr +IRF4u!!$WOrrB%s9En4:s8TW=o\fb"~> +#m'/fs-lErFZ\mOrrD0Z!!r\7rhp_9!%ML]rW!U"flX\!rYGP7!=/Z+'*&%@!!*/N!<39.'.cdr +IRF4u!!$WOrrB%s9En4:s8TW=o\fb"~> +#m05gs.)QtFZ]!RrrM4Tr_Ehsb5T@l:et>A<;oZ,IH6sAr;K/A1Ghm8@;K=[ARJqTr*TLLr;Zs. +,;W"tj'_mr"_DIiG(+H1?ijOP4R-;SRE,=-Wr5Tq9mcp?\RP3hs*t~> +#mK;fs.Mj#Grt +#mK;fs.Mj#Grt +#mK;fs.Mj#HTUWXrrMLLr_EhsWrN+oSPWR:<;fT*H2R^Br^J\"1f%LfCg^[_?t!LB?iVGG!!EZS +1J1m4@/j[@AU\6!?s==-l4gbQJ,~> +#mK;fs.qfsGrt>G6$NL2/c2[nNGn]9>!*@5@ +!71U;##/>$s34:1i;\<~> +#mK;fs.qfsGrt>G6$NL2/c2[nNGn]9>!*@5@ +!71U;##/>$s34:1i;\<~> +#mK;fs.qfsHTUWXrrML,rD*Gtp\t0pfPu19r(do_rr;sY1G^j`?t!kZ@:`hT@K'X71[tGJ$QLrp +>N]B!@XDZo?s==5l +#mK;fs.qfsIPpERrrVEb"8r3#=8r4!"4D?#!WfDaD/:B1D/!!!B,! +#mK;fs.qfsIPpERrrVEb"8r3#=8r4!"4D>u!W +#mK;fs.qfsIPpNUrrVHh<;fSnM>mMS"4E!.;#O0%:n@Xa3\rQK;.*gK?smPR@:B.C#;Z>[8PV8Q +!V69o$QLrp>O5`&@X_lr?s="2l +#n#Mgs/@rsJhu]Trr_KcdT`ILG6;!*@5@!:]n["]>3tiB-Yhs*t~> +#n#Mgs/@rsJhu]Trr_KcdT`ILG6;!*@5@!:]n["]>-riB-Yhs*t~> +#n#Mgs/J*!Ji2rYrr_NdM,=.H#`8BWs4*[Z=]#&m&6.`g3\rQK;.*gK?t!SR@:B.C"#BpNb5TTg +[=qp;$3B_u":H2*6s/te#@`-n?sm1B:[2gIQ47hD1J,~> +#n#Mgs/n6!JhcNQrr_?`]*%s2#V>':eXcNp,Q[iD!D*%bfEk=R!>>G6"onZ*r;ZgVpWNfONaajT +!TO.]$%<3[!<3)b!!$*@rrMpmrCdAiq>]P8oAKY!~> +#n#Mgs/n6!JhcNQrr_?`]*%s2#V>':eXcNp,Q[iD!D*%c!"&`0!!*`5!Jh!XX;^rW)s!l2Ufca8Z29;>j/l:AOqO2tPu-J,~> +#n#Mgs/n6$JhlWSrr_?`do?6@#]&c+eXcNuC/Fk)!JgLM1C>s9?t!kZ@:WbS@K'X8.lm@J"hBY& +2%9WY!!EHF1IP@=?jC.i@UNSJ!`8/i!/\br!VoUk9Ee2es5c94i;\<~> +#n#Acs/n/tKe_iTrrhEamY(]>!!it@eXcO9p-\r\!!*+qrR_EP!!*`5! +#n#Acs/n/tKe_iTrrhEamY(]>!!ik=eXcO9p-\r\!!*+jrW!9+"98H9!!*9(! +#n#Acs/n6$KehrVrrhEam]'+]:C(+GeXcO9pO,m;:B=:mr\Fm<;.*gK?t!SR@:B.C!@tGGbQY_G +AigY-o)Jms*&AgDqd9Y?IUZ\m>67pl?iYu&rrN'urCdAhnGhc2n_jFt~> +#n>Sfs0=B%Ke)ENrrqKbmefHRqZ$hBS,**aq(2LF!aMSS^b6 +!UTjg$[rED!!"surrN+*rCdAhiW&=%nDO=s~> +#n>Sfs0=B%Ke)ENrrqKbmeTF2 +)Zf=+!XjG`jT#9>a8Z2>?N!P$:#Z-?1[s?&J,~> +#n>Sfs0XW)Ke)HOrrqKcmehK0qbR6_"Sr)tq.ot*!Dmh91C>s>?t!bW@:WbS@K'X8/&(Dp"i6aH +6lQ4"!!!3"?jC7l@UNSG!*JMo!-uWb!WHF(9Ee/Ls6_c6i;\<~> +#n>Gbs0XB"MC[rSrs%EcnGi25!W2p!.VHBmrrLOMrVup7rR_E/!!*Q0! +#n>Gbs0XB"MC[rSrs%EcnGi25!W2p!.VHBmrrLOMrVup&rW!9+"98H4!!*9(!d-3:!`k/1[a3$J,~> +#n>Gbs0XB"MC[uTrs%EcnGi5u;#F)j>^+ZrrrLqTr_EMpr\Fm< +#ntbes1'N"N[O)SrrV-_nG`Ff,l@WI.V&X'pAb.OrVup7rR_E/!!*Q0! +#ntbes1'N"N[O)SrrV-_nG`Ff+8c*D.V&X'pAb.OrVup&rW!9+"98H4!!*9(! +#ntbes1'T$N[a8VrrV-_nG`FfBDbO1>^9;>p](8=r_EMpr\Fm<#A&6k?sm(:>O#SrH,fjaK)J@H9u6l!2=BE&J,~> +#ntYbs10T%N[O)Srs7EfnG3(ZnM((D!!aua!rs*np/h4n!&"6&#qc2X%KHM6!!*0"!!($pbQ>V@ +!Vuct)KZ5`!!!&a!!"strrA>_9Ee.qs7%o1i;\<~> +#ntYbs10T%N[O)Srs7EfnG3(ZnLO_?!!aua!rs*np/h4n!!N9$$3:80!"Ju0"onZ*r;Zi;h95r: +NWJtV!ZH.crVup!kl:]B`r?%(rCdAhZ2a>MlJV\m~> +#ntYbs1Bf)N[a8Vrs7EfnG3(Zp2a(0:Bt-M<)6](pPJlF!*9(T$8bdk?tj"WA7/hSra5aH`neiB +_2\Qs!"8a5#A/?m?sm(<>O#SrH,fjaQ2OA[9sO`g2=9?%J,~> +#ntP_s1T`%OX',Rrsm]hdOZ:E2lK+F!!"KZ"9&9#$iL&*0)aE/(B=ID!!*9(! +#ntP_s1T`%OX',Rrsm]hdOZ:B2lK+F!!"KZ"9&9##lO`'"TAB.!^[@EX'k9r\0a2s&utJ,~> +#oh+gs1Tc&OX05Trsm]hh.pV*H,Y2.:JY5@<;oYn=oD+r +#oh%es1or(Pp>PVrrUj_$iBu/$Ub!r.V&YW!!"YMfEi>o!=Jl."TSQ)rVus,b1b&>7/Hrc,\IAD +!!"strrBJ*9Ee.as78>2i;\<~> +#oh%es1or(Pp>PVrrUj_#lFZ,#Xe[o.V&YW!!!0$!"&`2!!*H-!`r?%HrCdAhU&X^GiSa`d~> +#oh%es1ou)PpGYXrrUj_=o;&"=aa+C>^9s>?t!VS@:EVQ@K'X8(s:RV!^m#&rEokF +G@Frf:((:k?iYJlrrBJ*9Ee.as78>2i;\<~> +#ognas2H#&PoJiJrrCaI!!EZ3.V&YW!!#gnfEi>o!=Jl."TSQ)rVus4b1b&>MYdAT/7]"I!!"st +rrC:A9Ee.Us7A_4i;\<~> +#ognas2H#&PoJiJrrCaI!!EQ0.V&YW!!!0$!"&c3!!*H-! +`r?%_rCdAhQ2gJEg#2m\~> +#oh"ds2H#&PoJiJrrLe8q+h,r<*X]Jq+gufr\Fm= +#ognas2H#&RN(AOrrBD!!!5)i$i'c&:]8oP$NL23!!*0%!`r?%t +rCdAhK)bI;cf"hR~> +#ognas2H#&RN(AOrrBD!!!5)i#l+H#"TAB.!XJc,"onZ+!!*0#!!!tkbQ)\\!!4r]#NYpc2objt +iVcFR9nNE;:!_btJ,~> +#oh"ds2H#&RN(AOrrKf.pJ1j$H!0r=!)`_O$8kso@:WbS@UNVQra5^FfusM#AeQm?slA: +>O#SrH,fjaiVcFR9nNE;:!_btJ,~> +#ognas2l;,RN(AOrrBD!!!Fca$NUA,!!#gnfEh]]! +#ognas2l;,RN(AOrrBD!!!Fca#QY&)!!!0$!"&c1!!*9(! +#oh"ds2l;,RN(AOrrBb+:BXpH=\r)p:B48k1C?!G?t!SR@:EVQ@K'X7,h^BCC&f7P?jCRk@UNS+ +'O0j1!-uTa!:]q\"\ik6oMNchs*t~> +#ognas3)/&RiCJPrr@&oNB&hs*t~> +#ognas3)/&RiCJPrr@1! +#oh"ds3)G.SK$\RrrAtp:B45h:Bk'L<,5H/;#X5k:f%'H$8l-t@:WbS@UNVQra5^VfusM,!$(rF +#B=cn?sl):>O#SrFN4=]q,.,b"\i>&oNK8ms*t~> +#ognas3DA)TbHPNrr@cO!!<60! +#ognas3DA)TbHPNrr@cO!!<6-! +#oh"ds3DA)TbHPNrrB(t:BOEr:f.-e#$cFQ:Mbqmr_NW.W;\R_2I9d"@UNVQ?t!JO?sY_DbQ;)N +,Q2!TEH5Mr?o'$3l@tJ,~> +#ognas3_S,TbHPNrr@cO!$h[?a".5k!%ML]!!"tU]9q[Yle'kCf`;'R"TSQ(!!**#!!,17bQ(Z@ +!!3Bu7-"=J*6/!Zr`f=p"B#*h?Fo(pJ,~> +#ognas3_S,TbHPNrr@cO!$DC;a".5k!%ML]!!"tS]9q[YPQ1[d"98E&"TSQ(!!*-"!!#+6bQ(Z@ +!!3Bu7-"=J*6/!Zr`f=p"B#$f?Fo(pJ,~> +#oh"ds3_S,TbHPNrrB(t:ENR1fP=;Z:L&0E:JZ96e%4lEVDC"d2I9d"@UNVQ?t'%B!F@k@bQ:cE +/,ioX@WHJf?ii,/>O#SrCW?ATra#Ir"B#*h?G,4rJ,~> +#ognas3_S,TbHPNrrBY/!!rc$s7o^s!%ML]rVusXq>UC,l.FYAf)YjP!rr?&!!**#!!,[EbQ(?7 +!!3Bu7-"=J*6%pXB)PC+:A4 +#ognas3_S,TbHPNrrBY/!!rc$s7o^s!%ML]rVusXq>UC(E<#tA#ljr+!rr?&!!*-"!!#UDbQ(?7 +!!3Bu7-"=J*6%pXB)PC+:A4 +#oh"ds3_S,TbHPNrrKc-r_Ei"p](&G:et>A<;oYoH27I>%?3/"2EG/P@:EVQ@:3OC?iaS*fusLk +!%\%V!b-1ira>aV!*e_r!,KRR!+u1'"A\^`?G,4rJ,~> +#ognas4%S)V%_tRrrC(;!!r\gnFU%ui;\<~> +#ognas4%S)V%_tRrrC(;!!r\gnFU%ui;\<~> +#oh"ds4%S)V%_tRrrL,3r_Ehse,TIGI8=*n<;fT.M>dJSNAE@J3ac?(@UNVQ?t!JO?s?L]bQ:04 +/,io]@WZKq?s>-3l!OL,`W#pbrCd>gnFU&"i;\<~> +#ognas4Ik0V%)DHrrL+Ir;[*^rVuoY""Ighqu?h2rr;6^fF$42!!*-$!Ahs*t~> +#ognas4Ik0V%)DHrrL+Ir;[*^rVuoY""Igequ@=@rr6sAhs*t~> +#ognas4Ik0V%)DHrrL,#rD*]ErVuo`<*X]Or(e&qrr7s61Gq4"?t!JO@:1q+$3<1l7 +?jC.aCg^XT,;\Rl!,KRR!0-qN"AS"M@_(FsJ,~> +#p[:ds4Ib-W=@hLrrU1V!W;uuGlI^G6n2^L!Wgg%9!`i;\<~> +#p[:ds4Ib-W=@hLrrU1V!W;uuGlI^G6n2^L!Wgg%9!`i;\<~> +#pd@es4Ib-WX[qMrrU1l;#O/iVuH]!I9_%s;#O0):tYf-1G^mL?smDO?t!JO@:9brg?iXu]rrAVg9E\)CoP1Yhs*t~> +#p[1as4n%1W=@hLrrU1b2uEX]FT)5n.V&V^!W +#p[1as4n%1W=@hLrrU1b2uEX]FT)5n.V&V^!W +#pd7bs4n%1WX[qMrrU1cH2LGDSc/Sg>^9:F;#O0(B)%?A1Gq4$?t!JO?t!GO@:3JFB%bB0,QKY" +?jC.bC1(FR*'EIn!,KRR!35uk"AR&2EiS'tJ,~> +#q*=as4n%1W=%VIrr^7cZN9t(#VjAA.V&V^Ac_l2!We#9rn%_'!<<-$!!**#!g\b($@i;\<~> +#q*=as4n%1W=%VIrr^7cZN9t(#V=#<.V&V^Ac_l2'ENna!!!$7!<<-$!!**#!g\b($@i;\<~> +#q^9:FR8ElY%oB9I1G^jW?smDO?t!JO@K'X8:i4n0!ZM,% +ra5t?G%Y2j>80Ki?iXu]rrBe39E\)#oQ@"gs*t~> +#qNRds4mk,XpX.Nrrg=XmR.*P!!Oi_!s'<.r;Zj+jSmd=aoDDB!<<-$!!*-"!!%K%bQ5j"qu?d' +F;j3?!$&uX!7h$A"APlfI[f9qJ,~> +#qNRds4mk,XpX.Nrrg=XmR.*P!!Oi_!s'<.r;[?6:]LIr'`\47!<<-$!!*-"!!%K%bQ5j"qu?d' +F;j3?!$&uX!7h$A"APlfI[f9qJ,~> +#qNRds4mk,XpX.Nrrg=nmX7q.:Bb!K<)@1TrD*o+F#,U/7UTV4@:3MP?t'%B!CVCjbQH!$!'L6g +#@`'m?sm1Q7-S(ZCW6;Rebr/E9rdi7S`'Nu~> +#qNF`s5=.0XpX"Jrrp4=B'giEqZ$gMA-2iJm0imn!!3&N$H`>K! +#qNF`s5=.0XpX"Jrrp4=B'gZ@qZ$gMA-2iJm0N[k%fn-[!!*f7!!**#!gU%F&(i;\<~> +#qNF`s5=.0XpX"Jrrp56RIXueqbIE$GuRUDnlbrf%T$+\1GhR/?t!JO?t!GOra5b&3SM[Zape>= +ra5t?HY$Sm>74'f?iXu]rrD?_9E\(`oS&Rgs*t~> +#r/^bs5=.3Xp*YErs#b0!$n'B!W2p%.WGh()ZGTm!!*,'rn%S#!!!$#!!**#!C +apS%H!XEuaj8]0"`W#u2:B!oi9pP@.Ol67i~> +#r/^bs5=.3Xp*YErs#b0!$@^:!W2p%.WG_")ZGTm!"T)9!!!$7!!!$#!!**#!C +apS%H!XEuaj8]0"`W#u2:B!oi9pP@.Ol67i~> +#r8dcs5=.3Xp*YErs#l-:M7OI;#F)n>]s7QB)].9:C^2Z1G^jW?smDO?t!JO@JsR:,C[k\b21>E +apJ,:ra5t?HY$Sm>743j?iXu]rrMaer_*GhQ1Trri;\<~> +#rAaas5=.3Ym&tHrs,\-!!!+5$N^2+#6TF(:-7_*$iU,+Y5[&\aoDDB!<<-$!!*,u!!@\X_92c$ +!6X?G!QG<@!!3IU$iL&*!U0Ra*6%pYq,.,b"AOL?MNQisJ,~> +#rAaas5=.3Ym&tHrs,\-!!!+5#Qal(#6TF(9fqV)#lXf6#QOi*'`\47!<<-$!!*,u!!@\X_92c$ +!6X?G!QG<@!!3IU$iL&*!U0Ra*6%pYq,.,b"AOL?MNQisJ,~> +#rSmcs5=.3Ym&tHrs,]':JXrX=]#&m#?6/$C2W>(=oM2+2D[-G7UTV4@:3MP?t&t@"=&B'_92c$ +!6X?G"3C]H9)`3'@X_lr?ss5l9nN"pOl67i~> +#rej`s5a:3Ym&tHrrJkqr;ZjQ(An.>!u=:WIYD#g((7;EfF#b$!!**#! +#rej`s5a:3Ym&tHrrJkqr;ZjL(An.L!u=:WIYD#g('k0G!!*f7!!**#! +#s#$cs5a=4Ym&tHrrK,rrD*H8>5V/4<*F:"IYDr_>$3a>1GhR/?t!JO@:67pk?iXg3rrN)\e,KIJ +#s5!`s5a:3Z3B(IrrAPc!!<[+DYi!!**#! +#s5!`s5a:3Z3B(IrrAPc!!<PCi;\<~> +#s5!`s5a=4[0>CLrrJZcr(dDoC/@b+:DQc+jA];nFF8O]AQ(Wg@UNVQ?t!JO@J=.9=@t@h(c>c_ +\]X3]"Nn^c!)NT%#@`-k?sm1==R0>s?:72]pAY21@"Hf,!+Pq$"AN@tMO!-"J,~> +#s5!`s5a:3[/ntDrrAPa!!*uRrW*'.mcscOrrWc>[%N8)M+]W<#mUJ3!!*,h!!N`b?A5f,rQG8] +oZRH\_#XN:rW!!-IL5!6!A)q"rrb7\!"8GKrr@'<9E\'mo88gks*t~> +#s5!`s5a:3[/ntDrrAPa!!*uRrW*'+mcscOrrWc;.o:57ED&)$#mUJ3!!*,h!!N`b?A5f,rQG8] +oZRH\_#XN:rW!!-IL5!6!A)q"rrb7\!"8GKrr@*=9E\'mo88gks*t~> +#s5!`s5a:3[0#%ErrJZcqG.-(>5h>"=mk\V:]FB(=]8mUIWogKAR]+W@:3O7?jU%01E75e?A5f/ +rQG8]oZRH\_#aU5ra5tBIUZ\m=9)Ih?j0aS4CDscq>US.!$c(IeGfMhr_*Gh>4[W:i;\<~> +#t1Kes5a:3[/ntDrrSYi!Vud8$YcJliI6nW.LQ=\!6WpFb+M.5IX,0[)@6]Nl2Utq-Wto$`r4*] +b4s0_`]F/$rW!!-IL4s5!Wcp$r;QcerVus"lI>h?IS?S3:0$o"_XladJ,~> +#t1Kes5a:3[/ntDrrSYi!Vud8#\g/iiI6nW.L6+Y!!`f:#>dg!IX,0[)@6]Nl2Utq-Wto$`r4*] +b4s0_`]F/$rW!!-IL4p4!G:ctrrDTg!!*,ceGfi(9VkEX +#t1Kes5a:3[0#%ErrS`d;#3s+=e`I,k'iG4>Zk$*:H:Hs3G!2UIX?6UAn#6:?jU%01F!_c>(3Wo +rQG8aprii^3ri+V?jC7l@UNSG!*JPp#?qR.?smRE9MSUZ^;fd's*t~> +#t19_s60O6[/ntDrr]5O)?KX6*D!GejiU>2IWSOJb1G7tRK3^$'0B0=IV2%o$O6q#!!FNDFfE7V +bQ,fbbQ5jSqZ$[2GmEC1!!3#u!X3i +#t19_s60O6[/ntDrr]5O)?KX6*D!GejiC//IWSOJ'aY0I)?C-N'0B0=IV2%o$O6q#!!FNDFfE7V +bQ,fbbQ5jSqZ$[2GmEC1!!3#u!X*c;rr2tCr;ZiGeGfi8Tt-Uc; +#t1?as69U7[0#%Err]8[Al/;!*J^nOjihI`IXH6J7QNRe:LIX@ASuU:IWodHAR]-9?jU%21F!SZ +;0AnYrQG8arlbMf6i[3Tra5tBHX^Aj=9)Rk?ijO9;#Oc'?Dm;lrro;V!$bn-eGfi8Tt-Uc;=-aO +;;qP*~> +#t^Tcs60O6\H1CHrroA\l=g8"qZ%chI[L0#!s8oH4'[5`TV,m470N\l#mgtj96#E&9/@4d#Nl'm +)bG%C_9C',1&:kS'6sf_!!*,b!!!&r!!Et&mcb&V!!'X\rsQt"!0p5Qi;h1;/)fOgJ,~> +#t^Tcs60O6\H1CHrroA\l=g8"qZ%chI[L0#!s8fE4'[5`:f&n_6j*Mj#mgtj96#E&9/@4d#Nl'm +)bG(D_9C',1&:kS'6sf_!!*,b!!!&r!!Et&mcb&V!!'X\rsQt"!0p5Qi;h1;/)fOgJ,~> +#t^Tcs69U7\H:IIrroD_m@mERqbJA?I_,RH<)d"(DK^JXAS"hE9jV79@U`naEcunZEbo;r@dIJ6 +>>?t!'H9VaTu"sqYqc:Z1]:\dAU@lo?r-o/lX0cu!a,>-$"^^9l=)OL,@K!MrsQt"!0p5Qi;h1; +/)fOgJ,~> +#u$Was60O3\H1CHrs#G]nc-$5!W2p%.V&W_f`;-Q!#l +#u$Was60O3\H1CHrs#G]nc-$5!W2p%.V&W_f`;-Q!#l1K'e<*39LM8e'+"sF!=8u;+%0XgH!EEL +#m]Sm!\4ofq#CI7F9gP#!<``,!!%l+rseHZ)Zc3t:!X: +#u$Was69U4\H1CHrs#J`nc-a8;#F)n>^9;*jA8\P:C^Mf7T3l69MJ5nAR]+V@K'^BB5r3GHZj:= +@UeY2$=6Lj,8;XA"TSNYr*TbAHt$Jk:Batg?ijF1=SZ>0?=I:m!$bmXec-*J3u\3c9MNhBnGd?3 +n`9_#~> +#uQibs60O3\H1CHrs5S_nc/X_AcVr3!!Xo`!rs*<(B+=G/D&P,f2#'i.U7FJ>WWi1#Q=]3#72&* +<-`q*6mN-F#O;Bi!VcWr,]O(O!<3)i!!$W]rscdRf`7I79u.e=s10HFjSs`~> +#uQibs60O3\H1CHrs5S_nc/X_AcVr3!!Xo`!rs*<(B+=G/-u:V#mWWi1#Q=]3#72&* +<-`q*6mN-F#O29h!VcWr+)qPJ!<3)i!!$W]rscdRf`7I79u.e=s10HFjSs`~> +#uQibs69U4\H1CHrs5Vbnc/X`Mbm7L:Bk'L<)6\S>5h>0CH=7-3`/RU>]tRCG&Co$@fBd8@L?[a +FF/I\EGB&o@d@D)?;NF?7/L?sB6I`l?q^r4lX0cj!aGA+"<7Cd@%#RF%D`M,!1HSU_&MqE]Hm%. +s*t~> +#uQ`_s69U4\H(1CrrT/YnbrImW!`V+!%ML]rW!+6]8:7sg&BVG/ke/Q#mhM3<-`q*6mN-F#64`/ +#7E(UEIN"&1D9uuj8]6,B*Zod!&rI.%>@a>!M)nYYp])Ai +#uQ`_s69U4\H(1CrrT/YnbrImW!ED(!%ML]rW"?Y]8:7p"98E&"ACa(#mhM3<-`q*6mN-F#64`/ +#7E(UEIN"&1D9uuj8]6,B*Zod!&rI.%>@d?!M)nYYp])Ai +#uQ`_s6Tg7\H(1CrrT2\nbrIm`E?#5:L&0Er_Fr1e$GeD2D[-G<_Q1l@U`qeFF/I\EGB&o@UNSQ +@V'=qG(+gZCh7'bjBr4-G@Frf8dekh?iiq.>P;G-$NMDZH.Dp(KiR(5SP2b_.ImGs"n:UQJ,~> +#uul_s69U4\H(1CrrT#YnbiCknQ,_l.V&Y[!!F4Ps7k:HfHV/*9GRX/!W`N4'.cdhIWSOF'+"mD +!!``8,Xc0lH!EEL#m]Yo!\@jee,TIgf)H6M=bZ8ERnQPU1\(M5"l88>J,~> +#uul_s69U4\H(1CrrT#YnbiCknQ,_l.V&Y[!%Su"s7HKp!!*j/9GRX/!W`N4'.cdhIWSOF'+"mD +!!``8+%0XgH!EEL#m]Yo!\@jee,TIgf)H6M=bZ8ERnQPU1\(M5"l88>J,~> +#uul_s6Tg7\H(1CrrT#YnbiCkp5)UB>^9O,Yu4;;#n?j$i;,@G< +$!E/cs69U4\cC:DrrSW\nbW7gQjYBS"8`'!FSYmf-l5QN"T\T)!<<-$!!``8)EV2LIUkhl#mU\8 +!!`fD4&gKSB1+!Q#7'Vr!]+'df`2!Qr;Zj+n^mdNnM@?9!M)nYWA3rCnJfL/s*t~> +$!E/cs69U4\cC:DrrSW\nbW7gQj>0P"8`'NFQW]*!!*9t9EY@r!W`9%!< +$!N5ds6Tg7]E$LFrrSW\nbW7g\li9`<;TH'Sa/-h1Gi-+9O;.8@: +$!W,`s6]p9\cC1Arr\B!R.:%Q"6s'#$i0i'-iM[)E!6UN!<<0%!!*,t!#l.L'/N:'IW8"3'*eaB +!!``:/5'u3FA"D'#7'c!!]s?df`2!Qr;Zj%maqIKnKYm>$DgEjWAF)EnN3T.s*t~> +$!W,`s6]p9\cC1Arr\B!R.:%Q"6s'##l4N3-NX8J!=/f6!W`9&!<<-$qZ%Q?#no*fFFJ4&//&6n +!!!6/$S4qjIWS4='*ed4!!55]#Li_S"n("B%e1d[n-Z!c9rTr=s7&1IjSs`~> +$!i8bs6]p9]E$CCrr\Be](Z"#"7:G\=o(o(@l6%u1f%F\@:O,\s.f`fJ?j9p;!$bl\maqIKnKbs?$DgEjW\s>HnN3T. +s*t~> +$"AMds6]p9\cC1Arr?U/!!>$2iVrfU"4Df0!W)it(Y8T<$?,tF!s&B&!<<-$pAk3u)%.]XA:Af' +3uSD1!!!6/#p_oLIX,0[)@6ZA!!5P]#Li_S!UA;:%e1LXn-u3f9s,`2s7&dJjSs`~> +$"AMds6]p9\cC1Arr?U/!!>$2iVrfU"4Df-!W)j-"p"](!=/Z*!s&B&!<<-$pAk3u)%.]XA:Af' +3uSD1!!!6/#p2QGIX,0[)@6ZA!!5P]#Li_S!UA;:%e1LXn-u3f9s,`2s7&dJjSs`~> +$"AMds6]p9]E$CCrr@?D:BPF5k5P>Z"4E*1;#=#u<\uTg1f%Le@UWYQ@:3O;@/j[EASQ41IX?0S +An#4W@/aUAB5r3GHZj:=@Uf"<#B=cn?skc8>O5`!>9brt?j9^5!%VGbmFV@JnJfL;%Ac`mXsEQ; +nP#5/s*t~> +$"AA`s6]p6^&ZUErr?U,!"'Wd]D;KWS_5q&!W;uu(]Dtn:B1@r!<<-$!!*,k!#l.L)EUoDIV2%o +$O6n:!!`fD4&gKSB1+!Q#7()*!^oZdf`2!Qqu?`UfDc?N,JijVV+aUg'Cl+m;j$/@J,~> +$"AA`s6]p6^&ZUErr?U,!"'Wd]D;KWS_5q&!W;uu#6"T1!<`B&!W`9%!<<-$nc0U6#oYm)H%'Bo +,RXh^!!!61'0B0=IV2%o$O6q5!!5P]#MB(W!W2otiRe)>nKYm>$DgEjYnQ[-nPkY3s*t~> +$"AA`s6]s7^&ZUErr@?A:C:^)e+s$oS`G&m;#O/iO5`!>803n?j9F-!%VGbk1BVCnKbs?$DgEjYoE65 +nPt_4s*t~> +$"eYds6]p6^&ZLBrr?=!!!is6Q^[aKK`_AT!!!i6fEtCS!!30$! +$"eYds6]p6^&ZLBrr?=!!!ij3Q^[aKK`_AT!!!6&!"/f1!!!'$!!**#! +$"eYds6]s7^&ZLBrr@6;:C(*[VjdG[W`2go:B4Gp1C>s9?smDO?t!JO@I7J&@NK6!Ed)t[FDPMt +@UNSQ@VKUuG(+gZCh7'b?smGaEW0AG.f`f??ijO?9_Miu8cSiA?sqgBrsnQeU%&em9MDGqnGi#Y +No^4j~> +$#+\bs6p3<^&cRCrr? +$#+\bs6p3<^&cRCrr?^:U"6lZL< +#65MT#p2QGIX,0[)@g"?!Rh#K]@[&mnSN=:)l65%T`srcnO]21s*t~> +$#4hes6p3<^&cRCrr@69:C:?PCoZRWF&5\/$>BJEI!"[G&Co+G&^nt>:V5i?ijO4=S?,,49,@3?sqI8rsnR9Eq(*F9MD,`nGi#MRcOL!~> +$#=\`s6p3<^&cLArr?J +!!`fD4&gKSIM:-0!3"KK%A>`B-_X4-RK2XQnLLd's*t~> +$#=\`s6p3<^&cLArr? +$#Xncs6p3<^&cLArr@69:C:?P<)6:nR?^`J9bri?ijF1>P;G/1B7D*?spt)rsbY^jXHls9UYtKs7%VBjSs`~> +$#Ohbs6p3:^&cI@rr>^c!!4W\"8i0!$NMgXfEs52!!<6%!s&B&!T=%Y#7q7g6nD"i.Q\OT#64`/ +#7_F/!!!&f!!%l,rse2ndP74b9U,Y?s4m_;jSs`~> +$#Ohbs6p3:^&cI@rr>^c!!4W\"8i0!#QP#,!"/f1!!!*%!!<6%! +$#Ohbs6p3:^&lOArr@*5:BFdH<;]Pl=TDM%1C>s>?smGP?t*PP@GkPn@M!*cEGJ6A>]+._@UNSQ +@VKEQ?ijOP1[AEM:^((s?j8Ce!%VGbZe#-cl2f +$#O\^s6p3:^&cI@rrRX!!W^LJrR_H0!!!0'!!<6%! +$#O__s6p3:^&cI@rrRX!!W^KurW!<,"98E*!<<3&!!*,U!"9W96l&aIIUkhl +$O6p`!!$W^rs\B9SNE*19TB;8n4\,fs*t~> +$#O__s6p3:^&lOArrRXS;#O/j:fREi!aL"MqG.)lr\Fm<',+?H#[S1 +@Uf:D!a?X,lX0cd$X<=4"sX*J.pubQf)H0J)kB'U9MCHMiUBNfj8XW~> +s)A;6s6pB>^&cC>rr[C\Ac_i1"p4l,!%ML]q>^LJrR_H0!!WT-!!30$! +s)JA7s6pB>^&cC>rr[C\Ac_i1"p4l,!%ML]q>^KurW!<,"98W0!<<0%!!*/V!"B]39GRj<'.cdr +IWS4&d/X/;f)H0K4.8a$9h^EOh=3S'j8XW~> +s)JA7s6pB>^&lI?rr[C\R8EiX##nDq:L&0EqG.)lr\Fp=5%.QEJ8WHM=N=+M34/M!;J,~> +s)A;6s6pB>^&c7:rrdI]n5o_i!!NH`""Ig`q>^LkrR_Gn!!NN,!!<6%!Y97@l/!!"b)rs\EtISken9R.;tnPtV0s*t~> +s)JA7s6pB>^&c7:rrdI]n5o_i!!NH`""Ig`q>^KurW!<,"onf1!<<3&!!*/V!!=]E9F1Rsrs&Z5 ++%q&&dJs7uf)H0K +s)JA7s6pB>^&lF>rrdI]n +$$C+Ts6pB<^'2O>s8R'@nbkuZr;[$(W/5-p!J,~> +$$C+Ts6pB<^'2O>s8R*AnbkuZr;[$(W/5-m! +$$C+Ts6pB<^'2O>s8R*Anbn5>rD*Vs`Kk^N:f.'c!)`_O$T(ml@U`bR@UWYQ@K'X79)W-!?;Ou, +?iXO-@/j@'@/jF*?jC.gCLCOS$V]np!a@02oj@t3!!"f_?t\'j%.S(M?@GUBDCN-d?A7G>J,~> +$$C+Ts6pK?^'2C;rs/(+IfKHD2Z`jW"TtNjdW?9(!WN-":]8oQ(B=UB!<<9(!!*2u!!<6%!!1gS +!XEfcf`;$Qqu?^1ec-#"? +$$C+Ts6pK?^'2C;rs/(+IfKHD2Z`jW"TtNjdW?9(!WN-""TAB/!^Tu!!!&S +!!3CI)V>#i!W2ot'@m*jF^A3n:/"tUV=ADJj8XW~> +$$C+Ts6pK?^'2O?rs/(+IfKHDGu4H8"]VLmh47aK;#a;k;>r?Z1fe!n@UWYR@:3MQra5^ora6". +"TST3,;W)!pL"1t!!O&m6s/te#@`'m?sm1B:[DHj>9#d!?jC!>!!"f_?tImg$[#cZF\YV:4/MIa +HfP-V~> +$$g7Ts6pK;_$.[=rrV_&IfB?Kp+-7C!"(39q>^E*Ad\V?:]8oQ(B=UB!<<9(!!*2m!!!&X!!3CN +'E/"3!S7;P$i\`W$]\(uBhh?)9pP6aH/npT~> +$$g7Ts6pK;_$.[=rrV_&IfB?Kp+-7C!"(39q>^E*AdAD<"TAB/!X8W."T\T,!<<-&nc/XjhuEf` +Gn^/WrrL^O!=SnXrsOiaBk^=9=\Y1OCO+t?J,~> +$%$FWs6pK;_$.[=rrV_&IfB?KpM3V(:C:?eq>^EBR9r?Z2-+*o@UWYR@:3MQra5^ora5^V +q>^[#$R7H$>Pqk/9)ASk$QLrr>P;G0@XDZo?s<\/lsKm!$VL,#!*fF&">aFnAcC9\$]\)!C/.H+ +9pP6dHfP-V~> +$%?LVs7$cB_$.[=rrV_&If99Jm3D`3!!4W\[f-4.q5?i'rR_Gn!!D<*&C%:9aJ,~> +$%?LVs7$cB_$.[=rrV_&If99Jm2lB.!!4W\[f-4.q5?girW!<-"on`/!<<9(!!*2h!!!&]!!3CN +'BT;p!Up'j!=/,FrsZ:cJl,NA;-SbSH"lg0s*t~> +$%?LVs7$cB_$.[=rrV_&If99Jnn1eu:BFdHb5M>Bq8J+br\Fp>6%dl?ijO6;"e8s=T/:'1LOU"nCIUJ[4?i+ +$%?@Rs7$c>_$[p?rrV^pL&CrVj;%ar!%MLe]DMU.l2B6A$NL>6!<<9(!!*2t!!3fQ!TO.[!Vuct +$%<92!!30+nCIUJ_Aeb%?;++.H2ib)n`9_#~> +$%?@Rs7$c>_$[p?rrV^pL&CrVj;%ar!%MLb]DMU.EW,qG!XJc0"T\T,!<<-&q#CI0)Zet!!!2or +!XX;`df9FM#Op=E%)NsK4'kTUBmK`9=n1SQJ,~> +$%?@Rs7$cB_$[p?rrV^rL&CrVlWR+\:L&0Je,0.FNW(^A2-FLs,("MjSs`~> +$%cXVs7$c=_$[d;rrV^cQ2CRefa@f\.V&Vha8Gr;l2B6A$NL>6!<<9(!!*3!!!r[mbfmJK?7Q?` +k5YJ_qZ$[(ILG<=!!2KfrrN2gf)H03$Df7e9MoeHnWci=jSs`~> +$%cXVs7$c=_$[d;rrV^cQ2CRefa%TY.V&Vea8GrJE<-%>!XJc0"T\T,!<<-&qZ$p'Qd![]KjH8: +!TsF_!W)iu$%<9F!!!&f!<3*#mahCHfa=Q+BhVBED=Nlcn`9_#~> +$%cXVs7$c=_$[j=rrV^cQ2CRejB5;T>^9:Of_ka[NANFI2-FaFo@ID_H%+tua.r%aTEc(?3 +:%@ +$%cLRs7$c=_$[a:rrV^bQ2:Ldb6n>#A-2f>a8Q# +$%cLRs7$c=_$[a:rrV^bQ2:LdcNjP$A-2f;a8Q#KE<-%>!X&K,"T\T,!<<-&qZ$WtVY\L@[=qp; +$3:1i!!3IU$.AkU"Tmu?rs\,lYoARXZ$p0PPtpl1s*t~> +$%cLRs7%&E_$[a:rrV^bQ2:LdiE8u^GuRRBf_tg\NANFI2-s["@UWYR@:3MQra5k$?smERqTK2P +KjH8:!IUZ\m=9)Ii?ii_1>P;G)4T5<`1LO[#mFM:Gl2\(.MMeZf@e#^Y +n`9_#~> +$&)URs7%&B_%!s=rrV^bQ21Fc])sNn!rru/J,~> +$&)URs7%&B_%!s=rrV^bQ21Fc])sNn!rr<,a8Z)LE<-%>"9\]."T\T,!<<-&qZ$WtVY/.6RK;aT +!!2ut!XX;^dJs:KlIPtDn--N5nGiNR:@Y;Bn`9_#~> +$&)[Ts7%&B_%!s=rrV^bQ21Fcdo9Rt<)6:mf`(m]NANFI2I9d#@UWYR@:3MQra5k&?smERoumK+ +!abk6!&O-F!jSs`~> +$&VmUs7%&B_%!g9rrV^YS,!!cW%)<[rW!'/bQ%V'rn%V3"TS]0!<<9(!!*3!!!*,,oumH9!W=J.jo1N?nZan?jSs`~> +$&VmUs7%&B_%!g9rrV^YS,!!cW%)<[rW!T;ci=#A!<<*&"98T/!<<9(!!*3!!!*,,oumH9!W=J.jo1N?nZan?jSs`~> +$&VpVs7%&B_%!g9rrV^YSbW3e`E[[fr_F21iW&q!1c$pG?=75O@:3PQ?t!OD?j'54?t$bAbQ4^F +rEobJ?7Q?`oDeknrEokAIUZ\m=9)Rm?ijO_/+m9M/,fMK1]Cb^lIPtDnIrV:jlQK,:@YSHn`9_#~> +$&VaQs7%&=_%!^6rrV^LWV?DoQXg3s!!k!:U$]q>^Krqu?p7IKoiQ! +$&VaQs7%&=_%!^6rrV^LWV?DoQXg3s!"oRcs%i^r!!EE)"U+o,"T\T("8`'!!OMIC!29>k!:U$]q>^Krqu?p7IKoiQ! +$&qsTs7%&=_%!g9rrV^NWqZMpVg28?:D-gds)U"Q1H&QI@U`bR@UWYQ@fBa<:LIR=^%KSMT`tF' +!F_DqbQYD.>q66_q>^Nt>Q%q7AU\)r?r-o/m9g!",;]"#!$hIC!&OU^!9Vl4%.PUJ)mrsdIU_iP +2=]c-J,~> +$'A*Ts7%>E_%X*;rrV^F[J0\&eUn8-!"fUljOi,@(W]s04 +$'A*Ts7%>E_%X*;rrV^F[J0\&eUn/*!"fLi:]UP!"9JQ,"T\T,!<<-%rW!'%!!!)3oumE)r;Zj! +C&,sU[=qgs)u]g;!W2p!'6si2!!*,]f)H0K8W$Aj>@(W]s04 +$'A*Ts7%AF_%X*;rrV^G[J0\&eVdT.:D$ajF#5[22IU!&@UWYR@:3MPra5k*?smEUoumH*"o_m1 +@A"^CA%!a?@,oj@b6rVupSra5`lf)H0K8W$Al?!^ias04?L +jSs`~> +$'e9Us7%>A_%X!8rrV^F[J0\'eX_Bpqu@9Dgt:94f)bpU"T\T,!<<-&rW!'%!!!)7oumDur;Zj! +FS3i]`_uj;!>nSN97!0rfL[K"Agn`9_#~> +$'e9Us7%>A_%X!8rrV^F[J0\'eX_Bpqu@9D2? +$'e9Us7%AB_%X!8rrV^G[J0\'eX`^:r(dl-?SjPs3alE*@UWYR@:3MQra5k*?smEWoumH!$iXN7 +@@d)8"iaOB!!6L*?jC:k@UNS9$X<"+!a>h'oj@b-rVup\ra5`lf)H0KD/u'FQ'D?Ws2l;NjSs`~> +$'e3Ss7%JE_%Wg3rrV^F[J0\(eXcMX!W2p.Y1VC[f)bpU"T\T,!<<-&qZ$Wu_Y)+QMZ!MU!I44[ +!)`^rr;Zm;F9g1n!9D]1$]8*WcN".%s8U4\n`9_#~> +$'e3Ss7%JE_%Wg3rrV^F[J0\(eXcMX!W2p.#QXo.#m()1"T\T,!<<-&qZ$Wu_Y)+QMZ!MU!I44[ +!`8t!qu?d:F9g1n!9D]1$]8*WcN".%s8U4\n`9_#~> +$'e3Ss7%PG_%Wj4rrV^G[J0\(eXcN,;#F*"2Dd3J3alE*@UWYR@:3MQra5k2?smE_oumGo$iXN7 +@Ai_@"&T+$?N"7:Ape&q?pkB,m9g!"!*Jo%!!W?%!'L6g!:/28$]8-XcN".%s8U4\n`9_#~> +$(=HUs7%JA_%Wg3rrV^F[J0\)eXcO8Ac_i1!3Z=R%bCa^"Tnc*"T\T(!rr<%rVus$_Y)+QK)GZM +!JU-h"3ND"!W +$(=HUs7%JA_%Wg3rrV^F[J0\)eXcO8Ac_i1%gW.8!XSo."Tnc*"T\T("8`'!"2a`T!.t.L! +$(=HUs7%PC_%Wj4rrV^G[J0\)eXcO8R8EiX(H+'*2*,/R@U`bR@UWYQ@UNSM=C>NG`q@OVJd_Qc +!F`#"bQH!F"^_.8#ASHl?slA:>O>f"=9)Is?iaR8rVup\ra5`gec,f\.IdB!mf*4f8Ls;ks*t~> +$)'cWs7%VB_&K67rrV^F[J0\*eXcO9rDs%!!!'2$fFHL7!!NH*!!NB'! +$)'cWs7%VB_&K67rrV^F[J0\*eXcO9rDs%!!"T>9!!3H.!!NH*!!NB'! +$)'cWs7%VB_&K67rrV^G[J0\*eXcO9rJ=AM:DYoG1Gq4%?t*SR?t*PP@:EVP? +$)'cWs7%hH_&K67rrV^F[J0\.eXcO9s85Cg!!'2$fFuC/!!NH*!!NB'![!-.r; +! +$)'cWs7%hH_&K67rrV^F[J0\=eXcO9s8#7e!!!9*!!*f9!!NH*!!NB'! +$)'cWs7%kI_&K67rrV^G[J0\EeXcO9s87XK:JWl*1GhR0?t*SR?t*PP@:EVP? +$)K`Rs7%nE_&K*3rrV^F[J0\&eXcO8rri-V! +$)K`Rs7%nE_&K*3rrV^F[J0\&eXcO8rtG2e!< +$)K`Rs7%tH_&K*3rrV^G[J0\&eXcO8ru1]Y:eru+1GqX1?t*SR?t*PP@:EVP>?bKE@e@kFD%utW +!F`S1bQ/ssr*TbGG%+ie1F$,k@/h_W>P;G):Ak.m7/gQohp_T:YlO4ls,%ccIU_f/!$jrAea*6c~> +$)olRs7%tC_&Js/rrV^F[J0\&eXcO7rr_sG!NuFS$d&MN!s8Q("T\T("oJ?%!Xm0DbQ)8R!!*+t +o#q(QqZ$[Z +$)olRs7%tC_&Js/rrV^F[J0\&eXcO7rt>#V!=/]+!Ykb:!s8Q("T\T("oJ?%!Xm0DbQ)8R!!*+t +o#q(QqZ$[Z +$*$#Us7%tC_&Js/rrV^G[J0\&eXcO7ru1WI:c:-d2+D"^@U`bR@UWYQ@UNSJ>@:lNb4WsZAfUeX +!F`P0bQ/Xjr*TbIFCJWc.k=il?ijOW1\G,U7/[)c7/gQohp_T:mK/"?s1&-_ +$*H)Ss7&%E_'>E4rrV^@[J0\&eXcO6rrVR+Y5[&]f)bpS!s&B*!<<-)rW!'%!!3YQoumDFr;Zj! +VXhq2'Dhb26q[d4!!-Q.eGg*M,JO0FlC%m.jo +$*H)Ss7&%E_'>E4rrV^@[J0\&eXcO6rt4W:#QOi+#m()/!s&B*!<<-)qu?d"%a+Ig!+Pm,! +$*H/Us7&+G_'GK5rrV^@[J0\&eXcO6ru(B>2D[-H3alE*@UWYR@:3MS?sm)C?t!cloumGG,Q;'O +@CbsQ!>>k=?j:Uk@UNCj/+$^G>9#cu?iW=f!!#Fd?ia`:eGg*M,ej9Gm@"31jo +$*H/Us7&1E_'>E4rrV^8^A%X/eXcO4rrCdPfF-:4!!<<(!!NB'!=&N'!s&B''D0KK?Msj)!OMCA +!Ql)Q!!5P]#LEGS0r]<+me$,Ns8N#es6fpPrTX@Ds5F"6s4J1 +$*H/Us7&1E_'>E4rrV^8^A%X/eXcO4rsonH!!3H.!!<<(!!NB'!=&H%!s5!_.(=gaU`kfY._3%JS9R2?]^-hs`V,TD< +m/MS~> +$*H/Us7&1E_'GK5rrV^9^A%X/eXcO4rt\'\1Gq4%?t*SR?t*PP@:WbR=C,BDD"PpP?6fGW!F`\5 +bQ>p#$iFB:EH5Mr>9brk?ijO?9_Dcn1]7:R9)`3&$Sn`)\aK+]s8W)tnGhqVmJZ>Mjo=<>h>c.D +e^)L[_8[/)O\Ru3H\Lt'6i`@G +$*H/Us7&LJ_'bN3rrV^0`qTK7eXcO4rt!i9f\+jX!! +$*H/Us7&LJ_'bN3rrV^0`qTK7eXcO4rsonH!!ET0!!7J3!'iIP!!"M_K$;6N\Zr-1RZWJZH#d\0@Tui08OPWp.jGuH'+G9P! +$*H/Us7&LJ_'tZ5rrV^0`qTK7eXcO4rt\'\1H%:&?t*SR?t*PP@:WbR=C,BDD"PpP<@e&V!F`\5 +bQ>or'`DDE@WHHr?s=U,m9fut!*Jo%!%\!J!)EN$5YMUe!%S_7bf7K0Z)XXhOc"a;Ec,>q>ua`n +6p!.S,T@C1%137?!<<*#!X/`7F_WuF +$*H/Us7&LG_'bB/rrV^0bkM,=eXcO5rtk[gf\"m/!WW<+!<<3&!!*H-!!**#!?CaU!)EIm! +$*H/Us7&LG_'bB/rrV^0bkM,=eXcO5rtkYN!WW?0!WW<+!<<3&!!*H-!!**#!?CaU!)EIm! +$*H/Us7&LG_'tN1rrV^0bkM,=eXcO5rtkZ(2)@-O@:3PR@:3PQ?t!VS?r16=@<(q`!DY0E?ia]M +o?79Y$5EGH#@_^n?sm1Y4RHMX=9;_"?iV2F!!#dn?n"oX7$TW')fdAV.k>$bZMDJaE: +IY*H>Q(=VFWiib;\\,ShqnWh8'=#9Z]X +$*H/Us7&[L_(1Z3rrV^0bkM,=eXcO5rt,1`f\"m/!WW<+!<<3&!!*K,!!NB'!@,q8p<3M.r;Zj" +_XktP`Wc8?!XD[dci=%se1hP'=XUVkCID%Ms8V&SPt;!2V +$*H/Us7&[L_(1Z3rrV^0bkM,=eXcO5rt,/G!WW?0!WW<+!<<3&!!*K,!!NB'!@,q8p<3M.r;Zj" +_XktP`Wc8?!XD[dci=%se1hP'=XUVkCID%Ms8V&SPt;!2V +$*H/Us7&[L_(1Z3rrV^0bkM,=eXcO5ru(f*2)@-O@:3PR@:3PQ?t!VS?r(0<@FDbJo>803e?ij"0>P2A('`A"39`AE"2q0Sp6s;%I^2?>9ec5[.V3OUR18X=: +J,~> +$*H/Us7&[G_(1E,rrV^0bkM,=eXcO5rrN,Qrn%V3"TS]1!<<0&!!!E+!"/f-!B'oUo]bJjccuC3 +!'C,Z!<^42bl>Z_"oJ?%#?3M/!!!'!!!$Z]OV"2nQ+DDE6igoYs8Abp2kf3qs*t~> +$*H/Us7&[G_(1E,rrV^0bkM,=eXcO5rt,/G!WW3'"98T0!<<0&!!!E+!"/f-!B'oUo]bJjccuC3 +!'C,Z!<^42bl>Z_"oJ?%#?3M/!!!'!!!$Z]OV"2nQ+DDE6igoYs8Abp2kf3qs*t~> +$*H/Us7&[G_(1N/rrV^0bkM,=eXcO5ru_502)@$H?=75Q@:3MP?smPR?qas9@=eIWo]kPkccuC3 +!BW+:?ia`VoZ[?T! +$*H/Us7&gG_(gi2rrV^0bkM,=eXcO5rrN,Qrn%V3"TS]1!<<0)!!*K,!!<6%!B^/X#6"2Zjk7s; +r;Zj%`q7IV`khcS!!3C11YMg/!VcWpVUX9/XoYer!Hjib!/fkWKcA_/s*t~> +$*H/Us7&gG_(gi2rrV^0bkM,=eXcO5rt,/G!WW3'"98T0!<<0)!!*K,!!<6%!B^/X#6"2Zjk7s; +r;Zj%`q7IV`khcS!!3C11XH+%VUX9/XoYer!Hjib!/fkWKcA_/s*t~> +$*H/Us7&gG_(po3rrV^0bkM,=eXcO5rtkZ(2)@$H?=75Q@:3MQ?t!VS?qOg7@>4RX#Q=;^jk7s; +1]Cb_@`e8d"3JOa*;s7M@WlQq?s="2m9orE!*f/)!F>s.!!$.#?i[aefab.dZ'k`:RY:a!jVrmm +g$&Hd~> +$*H/Us7&sK_(gZ-rrV^0bkM,=eXcO5rrW/Ng&BV2"TS]1!!!$(!!*K*!!**kr;QcrqYpOSrW!!# +#0-;Z!m8=[qu?d'A1ZF7!!2ip!2e9!&?Z2BOTC'&OTg3>,CTWdh>Z^>J,~> +$*H/Us7&sK_(gZ-rrV^0bkM,=eXcO5rt,,8"98E'"98T0!!!$(!!*K*!!**kr;QcrqYpOSrW!!# +#0-;Z!m8=[qu?d'A1Z(-!2e9!&?Z2BOTC'&OTg3>,CTWdh>Z^>J,~> +$*H/Us7&sK_(p`.rrV^0bkM,=eXcO5rtkVp2D[-H?=75Q?smDR?t!VS?qOg7@>Fd\!<2ip!BDt8 +?iaf[oZRE[_#bk[?jC.dCLCOS$VKhp!a?X,oj@c+qu?_!ra5`:eCbD9"gsHnJsqf*I^LGM!286J +lMlA~> +$*H/Us7&sH_)$f/rrV^0bkM,=eXH=2rrW,Mg&BV2(B=OA!<<-.!!*K,!!rZ+!CY8ejm)R_=5/OXoYN,=TERh0r_GcPsbWl=g@5Xs*t~> +$*H/Us7&sH_)$f/rrV^0bkM,=eXH=2rt,#5"98E'"on`0!<<-.!!*K,!!rZ+!CY8ejm)R_=5/OXoYN,=TERh0r_GcPsbWl=g@5Xs*t~> +$*H/Us7&sH_)6r1rrV^0bkM,=eXH=2ruM"u2D[-H73jl?iX=,!!$7&?i[+s`q$t8^(RRLWj,_-FX/`B +[0i0e!?54IlKnP$~> +$*c5Ts7'*H_)6i.rrV^0bkM,=mXk00rrW,Mg&BV2(B=UC-PHjt!!*T/!!<6%!D*.4#gL]Kjm)R< +s!RaF!=R'BbQ>qt!W2p!#B:a^!!!&e!<3)a!8[bO"VW7O;80b4%4A!dD&]=BRVabZH1^M(J,~> +$*c5Ts7'*H_)6i.rrV^0bkM,=mXk00rt,#5"98E&"onf2-PHjt!!*T/!!<6%!D*.4#gL]Kjm)R< +s!RaF!=R'BbQ>qt!W2p!#B:a^!!!&e!<3)a!8[bO"VW7O;80b4%4A!dD&]=BRVabZH1^M(J,~> +$*c8Us7'*H_)6i.rrV^0bkM,=mXk31rtkSo2D[-GFd)$-gfLjmDg@ +s!^)0?iai]oZRE[\H+5Z?jC.aCLCOS"]4Vp!a>_&oj@bpqu?_$ra5a@!;-BX!r)p4.7@%I^-iDZ +V7pdcV4F&l1&u[nmJh\~> +$+2;Rs7'6G_)m,0rrV^0bkM,=p4D`0rrW,Mg&BV2(B=Fo9h\;M!!*T-!!**rp<3T_cPuf_!=m9D +bQ,'J!!3CI)ZB^:!Rq)SB8)&)EOh@"mbR9h$b6:3[CN95^5;oJRf9,cPp]f8mJh\~> +$+2;Rs7'6G_)m,0rrV^0bkM,=p4D`0rt,#5"98E&"onW^9h\;M!!*T-!!**pp<3T_cPuf_!=m9D +bQ,'J!!3CI)ZB^:!Rq)SB8)&)Ek.I#mbR9h$b6:3[CN95^5;oJRf9,cPp]f8mJh\~> +$+2;Rs7'9H_)m,0rrV^0bkM,=pO_i1rtkSo2D[-GHtHbo>67pp?ijF1=S6&%9)JYh>Q/"8GD1a9Ek.I#mbR9h$b6=4[CN<6^5;oJ +Rf9,cPpp# +$+VSVs7' +$+VSVs7' +$+VSVs7'BH_)m,0rrV^0bkM,=q3ob/rsATa2D[-GXX#!>@m#?iY$6 +bQ=pI/,`i\@XDZo?s +$+_MSs7'EI_)lr+rrV^0b4ko;q6dd1rrW,Mg&BV+:B1Aor_*E!!!*c2!!*+&oZR:Kr;Zg2o#q*5 +qZ$[&Gn\a/rW2uu#<#7ID'QH*FkQd+oA(Vu!"((RD;C'L;4WsP^?klM~> +$+_MSs7'EI_)lr+rrV^0b4ko;q6dd1rsAN."98E&"98F$r_*E!!!*c2!!*+&oZR:Kr;Zg2o#q*5 +qZ$[&Gn\a/rrN&u#<,=JD'QH*FkQd+oA(Vu!"((RD;C'L;4WsP^?klM~> +$+q_Ws7'EI_)m#-rrV^0b4ko;q6dd1rsATa2D[-G;.*dRr_*ZB?t!kZ?p%h)@?pK/!>A*)?iY$6 +bQ=dE1]:\d@XDZo?s!D2mU-)Y**`)D!$(tb""\EPV[;C'>rt+eX,ROMY.0+5@M?$ME +PlSPbs*t~> +$,.YSs7'QI_*iG0rrV^8_=mm1c^jn0rrW,Mg&BV2:B1B"9MJ2k!!*c2!!*+4oumHZ%K-8,*:h;R +U&+fk$%<9:!!!&u!!!&t!!bD4!(eECD0=P3&;gIQh +$,.YSs7'QI_*iG0rrV^8_=mm1c^jn0rt,#5"98E&"98F,9MJ2k!!*c2!!*+4oumHZ%K-8,*:h;R +U&+fk$%<95!!!&t!!bG5!(eECD0=P3&;gIQh +$,.\Ts7'QI_*iG0rrV^9_=mm1c^jn0rtkSo2D[-G;.*dT9MJ3+?t!kZ?p%h)@@?f4!m1sGra5_G +o#q0/!&OR]#@`-n?sm(:=RKSs.f`fI?iaR;rVus#"oVg69Ig*7,dhK3g&DVC!0uC*nF>TtHi-8n +SV7O'm/MS~> +$,IkVs7'QI_*iG0rrV^<\b?%)l@ns0rrW,Mg&BV2Du]l]7#F' +$,IkVs7'QI_*iG0rrV^<\b?%)l@ns0rt,#5"98E&#QOjJ7#F' +$,InWs7'QI_*iG0rrV^>\b?%)m=k<4rtkSo2D[-G:LIRd7#F'a?t!kZ?p%h)@@?f4!m1jHra5_K +o#q0(!&OR]#@`-n?sm(:=RTW!>9brs?iW=e!!!E*?jA7`)aksZD0=S4!qA[Dqu6qa7-.DK>!"M$ +m/MS~> +$-!qSs7']H_*i;,rrV^FZ1e2!p4Df3rrW,Mg&BV2Du]l]9VF7S!!*T-!!*+7oumHV"oSE$/+Uma +Oo#+[$%<3[!!!&L!!a<;rPBeeD0=S4!qAj6rVm5pjV)M/\Q(?aL&UH=J,~> +$-!qSs7']H_*i>-rrV^FZ1e2!p4Df3rt,#5"98E&#QOjJ9VF7S!!*T-!!*+7oumHV"oSE$/+Uma +Oo#+[$%<3[!!!&L!!a<;rPBeeD0=S4!qAj6rVm5pjV)M-\Q(?aL&UH=J,~> +$-!qSs7']J_*i>-rrV^GZ1e2!pO_o4rtkSo2D[-G:LIRd9VF>%?t!bW?p%h)@AOPr$>80L!?iXF.!!!E*?jA8\rPg+jD0=S4!qAj6rVm5pjV)M/\Q(Bb +L&UH=J,~> +$-!qSs7'fK_+AM-rrV^FZM+;"q3BY2rrW,Mg&BV2RK*A1 +$-!qSs7'fK_+AM-rrV^FZM+;"q3BY2rt,#5"98E&)?9e[ +$-=.Vs7'iN_+AM-rrV^G[J'V%q3BY2rtkSo2D[-G:LIUYOPr$>67Xp?iV2D!!!`3?jG0\s5a]tD0=P3%]'0!`gV$U.6H5_s8M<: +lMlA~> +$-X@Ys7'rK_+AM-rrV^FZM+;"q6IU0rrW,Mg&BV2RK*A.@\GSi!!3Q-!!<6%!I4:]!Q#$=!!#+O +bQ*+h!!3OW$/PX^!V??sa77DL!5Vu]g&DDQas.inCPAU-!5@UqJ,~> +$-X@Ys7'rK_+AM-rrV^FZM+;"q6IU0rt,#5"98E&)?9eY@\GSi!!3Q-!!<6%!I4:]!Q#$=!!#+O +bQ*+h!!3OW$.&YWa77DL!5Vu^g&DDQas.inCPAU-!5@UqJ,~> +$-X@Ys7'rK_+AM-rrV^G[J'V%q6dm5rtkSo2D[-G:LIRN@\GZ;?t!VS?p%k*@AieB!lbCGra5_[ +o#q/a!'L3f#A&?n?slb6>OPr$=9)Iu?iaRYq>^L8rEol_n]af/_-V08rsGIB,TB-hKr&nl^?5HG~> +$-s:Ts7'rK_+eY-rrV^F[IsP$bb=k2rrW,Mg&BV2ZiC8DCS +$-s:Ts7'rK_+eY-rrV^F[IsP$bb=k2rt,#5"98E&.f]`eCS +$-s:Ts7'rK_+e\.rrV^G[IsP$bb=k2rtkSo2D[-G;da'LDP8qE?smGO?o)5!@B0"E!l4qBra5_] +o#q/X!'L3f#A&?n?slS7>OPr$6kil$?i`k-q#CCFrEokr3 +$ITUXs7'rG_+n_Dl2LhT2lZKM!pPF4rVlrsf@g/U$FBd@@SKQQj""Q]Wg!:]1OJ,~> +$ITUXs7'rH_+n_Dl2LhT2lZKM!pPF4rVmH*#m:5.!@n-X@SKQQj""Q]Wg!:]1OJ,~> +$ITUXs7'rH_+nbEl2LhT3NDcP!pYL6rVm]33]8cM1fIdn@SKQSM-s_#?skd!?t$).bQ>K[>Q/"1 +L[rXjEWAN+?jC7i@UNS3$X<(-!])'*qd9G,,PM0<;#Oc+/WSZ$8HOq)rrRX]nbrIjjT)OcnE9h%~> +$ITUXs8R(Y\PZu^9.));qCIV/-MnFZbF'*)2)kPp&~> +$ITUXs8R+[\PZuPSJ9.));ojo`+.h!*SgSs*t~> +$ITUXs8R+[\PZu#%>uS.2.ojo`+1q!*\mT +s*t~> +$IoUTs8R(Y\Plu:l2LhT8Xf>P!r7u7rVlrtf@g/U$H`>g6mj?4QD7J,~> +$IoUTs8R+[\Q!&;l2LhT8Xf>P!r7u7rVmH-#m:5.!>PSS6mj?4QD7J,~> +$IoUTs8R+[\Q*,P!r7u7rVmQ03]8cM1e(kg6n'Q8M-s_"?skei@0!n3bQ5*TrEoVj +o#q/I!)!2t#A\Kl?sl):>OZ#)>80J34=^g2!!"hQ?iq>sSaP&.$@?OXKi*3sq4T\Ak5Tr~> +$J>mXs8R4Y\Plu:l2LhT9pPDO!r9"5rVlotfDX>5f)[B\-RUEG!!!$$!!!uK"n^"=Y5A8"B(F.G +@f$-,,\IAI!!!&`!!/kbe,Kbp@U9%g"]b*WRdoP?J,~> +$J>mXs8R4Y\Q!&;l2LhT9pPDO!r9"5rVmZ4#m(),!XSlX2^]t'TK`tKHl'h/)s*t~> +$J>mXs8R4Y\Q*, +$J>dUs8R4Y\Q*, +$J>dUs8R4Y\Q*,!<;lk$"TSP-b/X(t!3,kr!+tfG +!*T1!!\@jeci=(!e,KgGCM=6O=euJndM)-4s*t~> +$J>dUs8R4Y\Q*,%?iZVc +bQ:rJ:AnQ*CO'As?o'$3n6c5Pmf3@r>Phe.hp_T5nSW(NTj"9"ma;d +$Jc'Ys8R@Y\QN8 +$Jc'Ys8R@Y\QN8R/p^!!2lq!85j$$h8(J"f5q("l\\Gl/r"r~> +$Jc'Ys8RF\\QW>=l2LhT9pPAN!p,=8rr3'!7Q(0$"#aJ6/,gt'LLOY"ARH4_b4EgXTaUj-!F_De +bQ:WA;#Oc,CNa/p?o'$3nR)>Imf3@i9_r,shp_T5nSN"EV.uP)iT^F.k5Tr~> +$K20Xs8R@V\QN8 +$K20Xs8R@V\QN8'9*G:r$NL1Db4EgWRf*3e!HdnV +!_E@mr;ZmT>R/UU!85j$$h8(G!S*IO,JN[]dcUR[~> +$K20Xs8RFX\QW>=l2LhT:6kJO!q^s5rr3'!7Pt*#%lIL31+=Y-EaiEbARGncb4EgXRLB+&!F_Pi +bQ:?9;#Oc,Cj'8q?n3a3nmDGRmf3@r:\eAuhp_T5nSMk>eWmrr^@;lbk5Tr~> +$K20Xs8ROW\QN/9l2LhTt!=Jl-^@KJJOo57\!I41Z!(?\a +!]s?dmf3=gmf3=gp&G*@e,KgGD.Wg<9N>)MnN3T0s*t~> +$K20Xs8ROW\QN/9l2LhT +$K20Xs8ROW\QW;PMS+h:)B3nSMk>SP3$`MX`d)k5Tr~> +$K20Xs8R[[_HU14l2LhT?A8%O!r8h4rVucI%5%V\! +$K20Xs8R[[_HU14l2LhT?A8%O!r8h4rVlmJ!WE'/!<`B&! +$K20Xs8R[[`a)d;l2LhT?A8%O!r8k9rVlmt2#]951fe!lrF#nE?smGO,BEA!!K%Tj?ia]9o#q.q +!*K2-#'"Zm?s>-3o3_S5$h=9!!\7CH?i]9:rsS@6AceMs:3C11Ap`\?J,~> +$KVi +$KVi +$KV?Ws8R[W`a2jWq+@8 +1&tGT?j:Uk@UNCb1\5#G!! +$KV +$KV +$KV?Ws8RdY`a2jWI +1PtYG!\"+Rra5t?EcGJp>9brr?iXF*!!E?;1J2!D?i]NArs\F7C(mF;9VDg_]Hm%1s*t~> +$KV +$KV +$KV9#ct?j'[6!#,V9$NhV08mC[j!:/,6%.S1L)l65%SH.s:!Uf.N +J,~> +$KVVV! +$KV +$KV +$KV +$KV +$KV?jC._Cg^XT'L_S$!*K.!!#4X)!:&&5%.S1L7$UG>@QU:F%>F!FJ,~> +$KV +$KVKhY6 +$KV +$KVOh1^')Ce7[%N8)M+]B5%L2t7!!!$0mJm4frW!*0,?&lj`qdgY_>4-5 +#@oC5!!36(maM1GoMnapGtq%,SLa71XqU6fs*t~> +$KVOh1^')?MP.o:57ED%hr%L2t7!!!$0l2Utq,?/rk`qdgY_>4-5#@oC5 +!!36(maM1GoMnapGtq%,SLa71XqU6fs*t~> +$KVH#$eq>74'q?iX=,!!"h??ijeGmaM1GoMnapHVR7.SLa71XqU6fs*t~> +$KV>b*=4J!!3C< +,gcSn!X8#@rsn,kiH8p19MD,`nGhtsZ0D:=~> +$KV>b*=4J!!3C<,gcSn +!X8#@rsn,kiH8p19MD,`nGhtsZ0D:=~> +$KV1F!S_>(X$!bfZ1r!$(oE +#@_ml?sm1H9_;]m=Sr.!7-\.]@:JZRrsn,kiH9$49MD,`nGhtsZ0D:=~> +$KV^R%E?*@+!W`Pq +e,Ks$'Ch)] +$KVRUN`9"P9U,Y;s8R4Un`p.)~> +$KV +$KV +$KVW&9.U_]#MT4[#BUm_!!!&g!!!&a +!!33,nC.CJZ8(mK2e#HSE[/ +$KV"!nI"$6ZCLpsak$S9q4?QjE?jC.gAmf"N +"]4i!!*K1"! +$L%QUs8Sc\`c4E7kl1^u,Ot4%!:B^:(>/ik!!*'"!X8W0#n&"HA:Af'3tho*hZ*]_Gn^/WrrL[N +!W`Pqe,Kra1%E7&F\GJ/=b?\RcP,g5s*t~> +$L%QUs8Sc\`c=K8kl1^u,Ot4%!P&70!<33%!"o;4!!3?)#71b`6tCal<'(a"#N#L_#C.!^!<3)N +!!30+nC.CJZ8(mh)g+hJ +$L.WYs8Sc\`c=K8kl1^u,k:=&!Q[+r1DVlT?smDN?t!SR@U`n`EI!"[FDbZ!@c(Pu@XDZo?s<\/ +oO%Z$r;Zg$k[4F#nC.CJ[5.9l)g+hJ +$L%QUs8SoW`c4E7kl1_()tE@r!:B[9)A`AR! +$L%QUs8SoW`c=K8kl1_()tE@r!P&70!#ktD!!!$$!!!*$!!*9(!!`fK4'[&[A4.LG#7';i!XEua +rVup!eGoXO$1QFD&(2-]h$T$59MU%>nc.DPnEU%(~> +$L.WYs8SoW`c=K8kl1_+)tE@r!Q[+r1DhuM?smDO?smGO?t!SR?t*SWDK^AUH#[Kr@cUo%@XDZo +?s<\7oO%Z$r;Zg3k[4F#nC.CJdM)0,$AqMN:4?C:s4n%OlMlA~> +$L.WUs8T&W`cX];kl1_1'CkMj!;-0@$SDDZ!W&9.UGU#Nu-h$%<9/ +!!!\\rrqKalK&&3r_*Nm)tEsa$Lm?\J,~> +$L.WUs8T&W`cX];kl1_1'CkMj!R(TC!"8l2!!!$'!!!$"!!*K)!<392'/N:'IW8"3$O6q#!!3IU +$d\kR'@QmajT+T-!L +$LIiYs8T)Z`cX];kl1_1'CkMj!S'%*1CQ*@?smDP?smDN?t!XD@/j[CAScC7IWfaIAR]-4?jC.i +ARJnM!*Jl$!*K1"!$(31!+jUY"m#aOjT1YG9Eq=4nc.DPnEU%(~> +$L.WUs8T5Z`cXB.kl1_4'CkMj!;-0@#>Y="!=Jl-!WE'!#58,t#7:ha6t^so<'(a"#ODEl$%<9/ +!!!\\rrqm$ddRF6r_*Nc!9sO>$Lm?\J,~> +$L.WUs8T5Z`cXB.kl1_4'CkMj!T!kU!!iT.!!!$-!!!'!!!!5t!<392$RA,QIX+mS'+"p1!!3IU +$d\kR'@Qman.!h8"ekoh#+GVWs4n%OlMlA~> +$LIiYs8T5Za`T]4kl1_4'CkMj!Tc0:1BfU4?smDSqd9D7pL+#1$>!slGCFm\DIm9dlsL'-IUunp +=9)Iq?iX=-!!"P5?iXcdrrqm$ddRF6r_*Ne!:'U?$Lm?\J,~> +$LRoYs8T5X`d'Z2kl1_;$LmK`!;-0@#B0YC!>>G5!WE'!!qH="#72;1>^:d/6lZL<#Oqcq$%<3- +!!""errqpmK(1(Zr_*NF)o;QR/+Mp)J,~> +$LRoYs8T5X`d'Z2kl1_;$LmK`!T!kU!!iT2!!!$5!!!'!!!!)k!"9)=)EV2LIUkhd#mU_*!!3IU +$.&YP*7FijnPt22,GG*1#(@N-s/@O=lMlA~> +$LRoZs8T5Zaa6,:kl1_;$LmK`!Tc0:1C,g5?smDZ?smFB?iXX+@/j[@Ao;d=IX,pKraPD*#@`-k +?sm(:=S,u$=T&4"1[&3HCXW4dnPt22,bb32#(@N-s/IU>lMlA~> +$LRrVs8T>Yb'l;7kl1_C"n:s[!;ZNE"E4>@!?D(=!s8N'!U]sf#7;,#96>Vq9.UGU#PA&u$%<3- +!!"OsrsbYVj[>5*9MA;mH13>El2Q8~> +$LRrVs8T>Yb'l;7kl1_C"n:s[!TsO_!!NB/!!!$>rW!$&!!!&f!<392'/N:'IV2;)$O6q0!!3IU +$.&YP/(+A+TeYXsO\JMC;.=h?.urloJ,~> +$LRrVs8T>Zb'lAQ=7$12;9Mo8Gn10O`s*t~> +$LRrVs8TJWb'l55kl1_K!:K:T!;QHD%%7.r!>>G5! +$LRrVs8TJWb'l55kl1_K!:K:T!VHNm!"ArI!!!$5!!!$(!!!$$lN$qi$4A+IB7=r%1D:'"q#CI( +IL4@$!&r=*%H.;I?@GUB9MUI,)as2[s*t~> +$LRrVs8TJWb'l58kl1_L!:K:T!VePN1CZ0:?smDZ?smDR?smDOlX9a%$>!slGCFp]Ch7'bq-XG= +IUZ\m=9)Iq?iX=-!!#XT?iYK"rsdoeNa@0/9MA3@3u^TWl2Q8~> +$LRrVs8TV[b(;G7kl1_L!9rqO!W:XKfF5+e!!3N.!!*9(!!*;d!"0#<)EV2LIU#8Z#m^D/!Y^"f +ci=&Jd/OLD!!$J*9MA0[!,;8ms*t~> +$LRrVs8TV[b(;G7kl1_L!9rqO!Vurt!"ArZ!!!'.!!!$(!!!$(jo>bo#oYm1H%'!d)@6ZI!!3g_ +#LEGN=O@'UnGiPu;+sYXW;pZ.kl6/~> +$LRrVs8TV[b(;M?smDS?smDR?smDRk$\3u$"e'uH[^-XAn#6J?jC7l +@UNSG!*Jl$!*K1"!*JGm!0tq2$h42s@Sofm9r\2.q<7j/~> +$LRrVs8TYXb_7e9kl1_P!TibL!W:RIfDs(n!!!6&!!EK+!!*T!!!=b^#7'u'%L3:R1K8IFB1jKX +#9&$rci=&fci4 +$LRrVs8TYXb_7e9kl1_P!TibL!W!-$!!**8rVup&rW!'*!!!$0n,NPA%L375!"K5?'/NU0IV2;! +$O7T!#LEGNFO0sn_Aeb\9MA/i[IEAZJ,~> +$LRrVs8T_\b_7h;kl1_P!p/kM!W5"W1BB=%ra5_:ra5k>?smDWn6c?6BjtQG@/j[JAScI9IWogI +AR]8#@UNSG!*f)'!*K1"!*eYp!1hI9$-!pLE_K/$@^Y^gs*t~> +$LRrVs8TeXb_7S3kl1_R$Jk.M!WL^KfDs(n!!!*"!!!-#!!!5n!!YN6IX+mS"n_lq#7(\_94r]q +IV/i`!!!&g!<3)`!!%8hrrK+8rCd8m:=\P-J,~> +$LRrVs8TeXb_7S3kl1_R$Jk.M!WEE(!!**8rVup"rVup#rVup&nGibTIXZQA3sG9Wrs&f;,YMd! +FFIj+rVup!mf3=gk5YL,cMmpE_>R%/ +$LRrVs8TeYb_7S4kl1_R$Jk.M!WG.Y1BB=%ra5_7ra5_8ra5_:nR)Q=IXZWcDIW9Hs'cFKC3"NI +I"$9K?sm(<>P);'=T/:$!ab(u!2n-B!NO!79EJ3he`Zs_~> +$LRrVs8Tn[b_dA(kl1_S'@Q=K!WLgNfEBe,!!!'!!!!'!!!!)j!!bnb',irX>QsZurs&W4)G:,0 +!!!&L!!&P7rrB%r9EJ(.V<@l/~> +$LRrVs8Tn[b_dA(kl1_S'@Q=K!WEo6!!NE1!<<*#rVup!rVup"nGie^9+r4*H!COD!<39+#oZG; +r;Zfue,TK=cMmmDr(I/hD5HFqJ,~> +$LRrVs8Tn\b_dA)kl1_S'@Q=K!WGRe1BB?ora5_7ra5_7ra5_7nR)TAEb/j#HZilh@/aU9AodiX +!a#M.oO%Z$rVup%k?n;,cMmmEr(I/hD5HFqJ,~> +$gn&Ws8TqTbcUqPr9=4_nO1Cas81FSf)YjO! +$gn&Ws8TqTbcUqPqW\"]nO1Carr=PH!!!?)!!E<+!!!'!!!!&i!<5Fj#64`[A-_N&!!3#urrM]k +!!2*[!5$PV!5eY-"&4o,o]Z=*~> +$gn&Ws8U(XbcUqPr9=4_nO1Carr?$r1C-$J?smDP?smFB?iXX*@/k3M@UNS[H"-#G!`/r&oO%Yq +rVup+k?n;=cMmmar(I2eOacrds*t~> +%djAZs8B)>ccj*'?I.m8m/I.;>LMp=!8RM)%G:mb!!*9(!!*6'!!*8o!<5Fj#64`T>R0Kn!!1OK +!7K0m!SpKK9ES"o9_@QKJ,~> +%djAZs8B)>ccj*'?I.m8m/I.;>LMp=!&j`Trri?%#lt51!!*6'!!*8o!<5Fj#64`T>R0Kn!!1OK +!7K0m!SpKK9ES"o9_@QKJ,~> +%djD[s8B)>ccj*'?I.p9m/I.;?./-?!+5X[%5qO#?t!SR?t!MP?t!O8@/k3M@UNSZG%0]D!`0&) +oO%Z$rVup4k?n;GcMmq$:&R`f9sICakl6/~> +'CZ1as8V$Y2q#pD6i]/XS'9^QnFHS]`X2^"mJd1Iqq);n!!!$0!!!$0!!!$0nc8\X"U>#-/6iFl +!!*,ZcMmq@;>j/j9s-;Akl6/~> +'CZ1as8V$Y2q#pD6i]/XS'9^QnFHS]`X2^"mJd/_qu@0,"onW(%KHJ0%KHJ0%e9W"6j3eq!%_@[ +])Vj4iQhH(q,.)a"&5pSnEBn&~> +'CZ1as8V$Z3RZ-F6i]5ZS]opTnFHS]`X2^"mJd0-r%ed=[3E +!q6BPrr3Z->;a[L_6S2X)Z^:##-/6iFm!!36(lH]D1rDiei"&54Pg$&Hd~> +!q6BPrr3Z->;a[L_6S2X)Z^:# +!q6BPrr3Z->rBmN_6nD[)Z^:$[3 +E +!q6QQrVn#4AcXW3WQ`W,[Aeaa6k]P00i`Lqc/IscrQ5:8j^qukmf*:Qqq)$I!!!$>rVup+rVup% +nc8\X"U>#-/6iGZ!!A6l('2;Q!W`Vsc2RcmrCd;fIW;@Ns*t~> +!q6QQrVn#4AcXW3WQ`W,[Aeaa6k]P00i`Lqc/IsarQ5:8j^qukmf*9Oqu?m$"98E&*<#p<$iU,+ +"nDZn6j3eq!%_@[rW!%F;AK;N!!30-nBLt5If2qB9n%,^kl6/~> +!q6QQrVn#4AcXZ6Wm&`-[Angb6k]P010&[tc/J'frQ5:8j^qukmf*9ar%eL5;.*d?EW0>GAc?'; +@e*q,E +!q6QQr;Rl;l(qiD"U-,_Q+G;c_6Ktk?98f#%5h@Y-Z.u,KganfrrDH`fE?-n!!*c4!!!-#!!!&j +!"MCi$NL/X>R(6/Yfk87`9mU*"nW&u"TSqp#6=uHbl7['rCd>gAt"2@l2Q8~> +!q6QQr;Rl;l(qiD"U-,_Q+G;c_6Ktk?98f#%5h@Y-Z.u,KganfrrA8\!!NB/!!!$5rVup#rVup! +nc0.f9+(_"/6iD[!0sXfXetLd!!Mp!!!N9)!"8#r! +!q6QQr;Rl;lD7rF"U-/`Q+YGe_6L"l?98f#%5hF[.;e2.KganfrrB"q1BfU2?smDZra5_8ra5_7 +nmDfEEb/WdCNa/p?nVF*!%@>E!_Ni,oO7f,rWN9_k[FO(bl7['rCd>gAt"2@l2Q8~> +!q6QQq>^Kb)Xu^rGtAqU$9N*qb14YK^869qD)L#.jeX3\mf*:Sqq(mfrVup+rW!*&!WW3$"7lL' +/:LPS'/Nku!!'7Hbfn87n,NG`noXkRk]?i)1!KXtY5Crq;p%f+l2Q8~> +!q6QQq>^Kb)Xu^rGtAqU$9N*qb14YK^869qD)L#.jeX3\mf*9tqu?`u#lXf($iU,0! +!q6QQq>^Kb)Xu^rHV#.W$9N*qb14YK^869qD)L#.jeX6]mf*:.r%e@1:]=`%Ac?*;@K0^9@:Jh9 +$>Y*4Ch7F+@UNRrr?_LsnR)Ai;"B#5Fm+2RFE>\+!3Z5n"'*K;o]cC+~> +!q6QQoDej\'^jYNEB=L-'1?i>c-LO?g$.V7%H6aT!;-0@!1Nle!!W?%"T\f-!!*T#!"Ku:>^h-, +"TSS3bKS/QYj_Vm'Cm(@)ZUZC)?MI&*;pcV'1g@I!71R:"&@f2nEKt'~> +!q6QQoDej\'^jYNE]XU.'1?l?c-LO?g$.V7%H6aT!6k?@!6sP1i +>Qk*.R]NWmXHi8T!#+oArYkhQn/;?ZB,pjg!>A#JrrCCC9ES&K1[sZ/J,~> +!q6QQoDej\'^jYNE]XU.'1?l@c-LO?g$7\8%H6aT!7h!'!AmUO?iX[8?j0tL?smDWnmDc>EHZe[ +G%+ie/H$mq0(E5rYki@n7D`;GAI.h!G.&1rrCCC9ES&K2=Tl1J,~> +!q6QQmJdafnEJ8gD(>bi/$<`gm`G^ho`"pbr:p?bqpthTrW`E0rW`T5*!Z]T'Di%.!!``8'+"X= +"gJ!M!mALih>dNko)Jq-!!"Q\#Q+Q%FNjabl243W:"_qfl2Q8~> +!q6QQmJdafnEJ8gD(>bi/$<`gm`G^ho`"pbr:p?Lq[!6QrW`E0rW`T5*!Z]T'Di%.!!``8'+"X= +"I8tg!j&7)h>dNko)Jq-!!"Q\#Q+Q%FNjabl243W:"_qfl2Q8~> +!q6QQmJdafnES>jD(>bi/$<`hm`G^ho`"pcr:p?Sq`4^Uq-j>DraGkDqdT8,s'c.C@UNSM0)[*t +-s?+K!^m`,oO%Z'rVuq%o3_` +!q6QQkl:\Q$1QUm;5F`4h#Q.$rrW"qU&CefU&1J_M>:BVAG9=/7.:0VYl;iIb@KE/!0Qkr"dM"H +4&cI_!!&D1rrMaerCd;f^2^.:s*t~> +!q6QQkl:\Q$1QUm;5F`4h#Q.$rrW"qU&CefU&.XdEVWi>AG9=/7.:0VQ2[ldXA[jS!0Qkr"dM"H +4&cI_!!&D1rrMaerCd;f^2g4;s*t~> +!q6QQkl:\Q$1QUn;5F`4h#Q.$rrW"rU&CefU&/C$GPQC^H1uI^EU[?90)[*s;=S#q6kikt?iXF1 +!!&/QL]s&h?uC'qr*TN9bl7_9:Amig9tkYJl2Q8~> +!q6ZPjSoJT%Ahk\\I-@Mrr_5/Q-]ER!6Y/FrA+F8r\FOBpG2l"A-qi-!sq9E\(hQ%JYns*t~> +!q6ZPjSoJT%Ahk\\I-@Mrr_5/Q-]ER!6Y-grA+F8r\FOBpG2l"A-qi-! +!q6ZPjSoJT%Ahk\\I-@Mrr_5/Q-]ER!6Y.:rG2IOrbMR_pM9n[H"-AQ!F@2R-3,[f?iiG1>P);, +>6"X(!!)Wu"TY!gWg/2.lMlA~> +!q?rPj8T=4?KGX=-a*4D!qqo!qu6]qfDO8%f)bjN!#,>3!"8c+!gOht&hlMlA~> +!q?rPj8T=4?KGX=-a*4D!qqo!qu6]q$2ji)!X\f*!#,>3!"8c+!gOht)ilMlA~> +!q?rPj8T=4?KGX=.B`FF!r%u"qu6]q3rLi92*,(C?iY$B?iXd;?ia\Ir*TS;G&d+]!FdVZ-35N$ +nR)DS**`&C!*fF&!1!/l"KDI%FE.1c!8l$#!WHF(9E\(P``;Zrs*t~> +!q?rJj8T=_46^?o8WNQF!r7`8qu6]rgAKS,f)bpP!?D(="Tnf+!!+):!!5P]#P.oqYl;iH[bLi_ +V=Vn6[/j?61].4R!T_H(!.Ol?"ANn#2=]u3J,~> +!q?rJj8T=_46^?o8WNQF!r7`8qu6]r(]47:#m(),!?D(="Tnf+!!+):!!5P]#P.oqQ2[lcRbRlC +V=Vn6[/j?61].4R!T_H(!.Ol?"ANq$2=]u3J,~> +!q@5Rj8T=`46gEp8WNQF!r7`8qu6]r7f5%G3alE(@<)9S"_(nJ?t"'P?ik=g@e3t-0)d0t/F[$K +1F$,r?iXF1!!&kebQP +!q@5Lj8T=8?>T\QGG4! +!q@5Lj8T=8?>T\Q +!q@5Oj8T=8?>T\Q +!q@5PjSoMUD/BsXj_82nq#:EkZF]o4!8RJ(";_%^^obQ,*/ +!!30$Y4Kj?Pp7f$)Z0R8$d/JL[JW]#;=8&$lMlA~> +!q@5PjSoMUD/BsXj_82nq#:EkZF]o4!&j`T"T\f-!!3Q-!!**6rVus#!W2p!*,u5U!!*j[rN-'g +hZ*]Y!3Yq;"I12^F;k&W!"6sL!4D_u"&\JuZ0M@>~> +!q@5PjSoMUD/BsXj_A8oq#:Ek[ClA9!+5X["Z07f?t!XG?ia\Pra>b7r*TSAG%1)O!EqJ]-3,Ue +?ii,/>P);+>6"^)Y4Kj?PpCI!B)H$:A]k#Q[JW]#;=8&$lMlA~> +!q@5PjSoMU>Cthqjap(np\t<2Y5.tp!9F%0!)NRo!!`E&!d2]R8[qu?^Ib5VIcr(I5fjctPlli2J~> +!q@5PjSoMU>Cthqjap(np\t<2Y5.tp!)WRn! +!q@5PjSoMU?%V%sjap(np\t<2Y5.tp!-A&o!Am[Q?iXa:?ia\_ra5b8@f0U8AU\+]?ih`'./bIm +/Fd-J.f`fG?j'[6!W]LsbQNATCOTjm?iY;krrC:@9E\)OQ%ekrs*t~> +!q@5PjSo;O/$]*8!hh.0p\t +!q@5PjSo;O/$]*8!hh.0p\trVus"*;fd<$%<9U!!31uXSf1# +Rbn)H! +!q@5PjSo;O/$]*8!hh.3p\tP);+=9&@%[I_TFAkcic@f0U6ONRS'iVZ@P9ub=Mo]uO-~> +!q@5PjSo;N%F+n6!kK'0p\tf)n! +!q@5PjSo;N%F+n6!kK'0p\t +!q@5PjSo;N%F+n6!k]33p\t +@/h_W>P);+>6"[(\b+)L_,XZMIU`4_!1h:4!V9(b9E\(im5==ts*t~> +!q@5PjSo;G!8[Y9!lbE*p\tgNq>`ili2J~> +!q@5PjSo;G!8[Y9!lbE*p\tgNq>`ili2J~> +!q@5PjSo;H!8[Y9!m(W-p\t_F +>4Q&&>:V5q?j'[8!!'S%bQYgNCM%p&r*TN9b5VM?;>j/k9oej6ea*6c~> +!q@5LjSoM.'8"p!jj*q[p\t!!**6rVus"$iL&,#?3eY!!`nTbKS/R +`"q82rrN-"!4qgH"i2p8,\IA[!!'XRrrN+*rCd>gD=htAli2J~> +!q@5LjSoM.'8"p!jj*q[p\tgD=htAli2J~> +!q@5OjSoM.'8"p!jj*q[p\t4Gu%>:V5q?j'd;!!'\(bQYg +!q@YKjSoLG;+rppjk0g]p\tid +$fD$a!==oP+;o^)U.~> +!q@YKjSoLG;+rppjk0g]p\tR10,!9)'"!."K9"Bk_tFnG&#J,~> +!q@_MjSoLG;+s!rjk0g]p\tiDK]Le?i]?2rr@ED9E\PuTlp"os*t~> +!qA4Krr3#un`g)RD$J +!qA4Krr3#un`g)RD$J:"hZ*`Z!%.d="U+m'=?B.\rW!!'!U@f,!1NgZ"B"m@7.fjGJ,~> +!qA:Nrr3#un`g)RD$JE!a?m*o3_]-!WXYLoE>Bu;3c$>@fBa:@USTFrrAMc9E\5edR<`os*t~> +%.RPRs8W&V=dme(naZ)J$1UEGrqVfu%03s5rrW#$^AIp2r7Cl!"kNbT!!3Z/!!!]2!!*0'r;Zm= +E +%.RPRs8W&V=dme(naZ)J$1UEGrqVfu%03s5rrW#$^AIp2q?d*#!f)o!< +%.RVTs8W&V>+3n,naZ)J$1UEGrqVfu%03s5rrW#$^AIp2r&Xd4"uSGJ?smDWrEoVArEoY8@JsR8 +CNa1^?iWms-3.6>?ijOP1\4uW?31*YSFh^BWfU\1EVs2F@dqM>!3uGq"AS"G2=Bi2J,~> +&c\O)iUGr+!(77s,@68Il1+<9rsA0%^An64je\F-pAY3.Z2+:s!8@A'!SIPR!!!6%!!*6)rVus"% +fHA/'7L8`!! +&c\O)iUGr+!(77s,@68Il1+<9rsA0%^An64je\F-pAY3.Z2+:s!#PP5!<`K'!!!6%!!*6)rVus"% +fHA/'7L8`!!<@mXK;B&!La&H!!<6%!+tm;"XHV=#?3e_!!!\RrrCCC9E\)4oL.-os*t~> +&c\O)iUGr+!(77s,[QAMlLFE:rsA0%^An64je\F-pAY3.Z2+:s!(QlB!B+Bc?iXa9?ia_Fra5b8 +C&ME@AU\+a?iaRbq^):on6c<%*'Eh#"C;-0,E)5+"_rg#@WZMc?iXcZrrCCC9E\)4oL.-os*t~> +(B=;i!&5u(iUQF!^4K3$!#&4Y\`N>Nq>UNX!Ufpd!q6lOpAY3BSb`0_!8RJ(!!W?%!!<*!! +(B=5g!&5u(iUQF!^4K3$!#&4Y\`N>Nq>UNX!Ufpd!q6lOpAY3BSb`0_!&j`T! +(B=;i!&?&)iUQF!^4K3$!#&4Y\`N>Nq>UNX!q-$e!q6lOpAY3BSb`0_!+5X[!B"3_?iXX6?ia\I +ra5b8Fo>\L@X_n`?iWpt-3.<@?ijOP4S)q`?31+#1A!X29jhFUC]%Q?H-$!clMO +s8N6"_6L9,qu?]d''[Q!@Ntm_7!5ZgnF?&Ks1orMrVlrh0sUHP!p,=8qu6Z\qq(lbrVus""o\K& +!?D%B!VoUk9Ee.Qs.+H-mJh\~> +s8N5u_6L9,qu?]d''[Q!@Ntm_7!5ZgnF?&Ks1orMrVlrh0sUHP!p,=8qu6Y9qu?`u#6"T'!B!VoUk9Ee.Qs.+H-mJh\~> +s8N6"_6L9,qu?]d''dW"@O(s`7!5ZgnF?&Ks1ouNrVlrh19pQQ!p,=8qu6YUr%e@1_aA-r'5>!a?@$o3_]-!WW9`oQp]Ej/l9p,IH +Hh?_*J,~> +n,NFX%IVc9CG>tr0l*9/EEVi1rrV^jMY@&On:LB2rrD<\fDmQ'!!**1rVus"/,]GK!sSZ(!XE?` +p&G0&bKKn/!QutO!<3*"!!'b*bQNqR7!TID!!%8brrN'urCdAhD?&$Po^2[/~> +n,NFX%IVc9CG>tr0l*9/E`qr2rrV^jMY@&On:LB2rr@':!!**'rVus"%fQG/!A"*K!R]NUiXT>LQhuEi[!!'b*bQNqR7!TID!!%8brrN'urCdAhD?&$Po^2[/~> +n,NFX%IVc;DDDA!12`Z5EarrV^jMY@&On:LE3rrA&V1BB=5ra5b8C&VK@@=.r\s'kt8!b-@g +p0[kOq^);JnmDN''L_P#"C;-0!5A*L"HFpZHY*+_!2mp +lMpnS#OpQPF[Q61WVc\sEGb7?rrVnGoDAOfmJGN9:]:=p!>GD3!#,;2!7 +bfn6[i;ilY!WW88oZRGX6lLL^qu?_ea8Z-Kr(I5nrpDT1mJh\~> +lMpnS#OpQPF[Q61WVc\sEc(@@rrVnGoDAOfPPbC]! +lMpnS#OpQPF[Q61Wr)etEc(@@rrVqHoDAOfW;JFP1f=6[!F]gC?iY$A?ia\Yra5e:FDge[!&"-q +!*o)&!a?@,o3_]-!WW88oZRGY6tUmZr*TNAa8Z-Kr(I5nrpDZ3mJh\~> +jSo;OnEKfL!g-4Ip\t +jSo;OnEKfL!g-4Ip\t +jSo;OnETlM!g-4Ip\t +gA_5k)tE\&!r8;8qu6Zgqq(n;rVus"*;oj +gA_5k)tE\&!r8;8qu6Z?qu?`u)ZB^;!?D%R1$(#6C^'XfSY,#i>Ua!<<;> +oumTU;-jo]#Q+Q',@^/arrA2Z9E\)XoR<7rs*t~> +gA_5o)tE\&!r8;8qu6ZHr%e@1:]=`&@<)6R!F]O;?iahIra5eDG%12R!%@al!*Si"!a?%#o3_]- +!WWD?oumTU;-mg\@f0U8,\$8brrA2Z9E\)XoR<7rs*t~> +gA_69!Uf^^!r9"8qu6Zlqq(nUr;Zg-r;Zj!'E%n3!=o)/!ZZ1bpAb33rQG;c.c:=,! +gA_69!Uf^^!r9"8qu6][!rW*"!A"*K!"Sr-!Ekms*t~> +gA_69!q,g_!r9"8qu6]_2>o<31fO?\!,;C>!F]gC?ia\Mra5eCG%12R!%@al!*o&%!a?%)o3_]- +!WWD?oumTU4)SYX@fBd8@Kh*^4"7?3bl7[Cr(I8gec2I_o^;a0~> +gA_6D"l]1T!kPf8r;QfqfDO8$b5D;?"8r3#!@.OC! +gA_6D"l]1T!kPf8r;Qfo$2ji)!>YP5!!E0"! +gA_6D"l]1T!kbr:r;Qfq3rLi81e.FO!+Pn7!F^-L?ia\era5e=IU`([!DG-D-3.BB?ijO?9_2Wp +?31*6_=c"U_'sbIH"-b\$"7Yr[?5T'.D5Z*rrC4>9Ee/$s4KL*mf.e~> +gA_6E,JNmO!mdS9r;QfsgAKS(f)bjN! +gA_6E,JNmO!mdS9r;Qfs(]476#m(#*!L+hZ*`Z!#*3A +bQYfrFurY.rW!9+2;R*A_4#L.,Pf[c!9O,P"\kinnMBFts*t~> +gA_6E,ej!P!mdS9r;Qfs7f5%B3rNFe@:K4D!F]gB?j:a^?smGmAbf^69_p(9?L_D)>6Rgo?j'd; +!#*3AbQYfrLi. +gA_6E;3(AM!o]18qu6ZOr7D&'"o\K&!=o&.! +gA_6E;3(AM!o]18qu6XSquHa"rVus"%fHA."p+Z&"pG22!!dc_q>^TuR]NUhXT>M$mf3=gnc/am +!#*3AbQYfdAjf8srVus"=T.%Ze\Rec,O3YU!VT:e9Ee.Qs7B=-mf.e~> +gA_6E;3(AM!o]18qu6Y'r%e@3?N+=5@;5[J!G#X;?j:(N?smGjAbf^6/G^[n;=S#q>6Rjp?j'd; +!#*3AbQYfdMfEcHra5b8Q2TMBe\Rec,jitY!V]@f9Ee.Qs7B=-mf.e~> +g&D+rC[q0!!q:g8qu6ZWqq(lbrVus"'E%n3!=Si+"p$4S!!d-^q#CFibPo]fbKS.?n,NFhmf3A- +_=c"T^&Vb<7/[)d!He4p"50Yh/(":srDWYg"\j:BoSS[ss*t~> +g&D+rC[q0!!q:g8qu6Xmqu?a!#6"T'!>GD3!h#l?0CFdd3!W?!r9Ee.9s7D2/mf.e~> +g&D+rDXmK$!q:g9qu6Y;r%e@267pt?ipQ4 +)o;3k"MOkoEcM%c!F_Prh#l?1DCa*6!W?$s9Ee.;s7D2/mf.e~> +g&D,I7.L$O!q^s5qu6Z\qq(m$rVus"/,]GK!@.OC"p$4T!!cIbp](>*bPfWcb6?Z$!.OTu"B>G' +>Vl +g&D,I7.L$O!q^s5qu6Y9qu?`u"TAB%!A"*K!YWHB`Qdf0;ir(I8mrVu+>naHL.~> +g&D,t'Ckhs!qq?4qu6Y[qu?`u#lXf)!?D% +g&D,t'Ckhs!r%E6qu6Ypr%e@1:]=`&@<)6R!F^-K?j:1O?smtp@ejC4@OV.$!+PJ+!a#G)nmDP' +!+%,I.g.,t@WuSc?ia]LptZ%PFXuS%rr@3>9EeGps6;K3n,In~> +g&D-R1$(!6"i[!R#$0!!*BOoc+*9!XEfc +r;Zj"b4scqfsPfImaM19Oo.lV:A4_Z45'*&J,~> +g&D-M$h#IH`,kW,[ +g&D-=!:BO\!r8,7qu6ZHr%e@1:]4Z$Ac,p9C&D?C@=_foCj':_?iVVQ-3-p5?ijF1=Roi%"TV/0 +okO\e@:FUrrEoY7bkTusfsPiLmaM19Oo.lV:A=e[45'*&J,~> +g&D-C'@6FQ!r8h4qu6Zlqq(nUr;Zj#!W +g&D-C'@6FQ!r8h4qu6ZZqu?`u/,]GK!s/?#!r)Z">N8rrAbj9Ee/Ts7C0-n,In~> +g&D-C'@6FQ!r8k9qu6Z^r%e@1;uL))@U]4C!FfL9?j:%n?smbn@ea=20)R$r=n,l$=9)Io?igK3 +C@mDeM-seAAc?*;A,t +g&D-D7%3iL!kG`7r;Qfmg&0J&b5D;@!=&K&! +g&D-D7%3iL!kG`7r;Qfj"T8<$!>YP5! +g&D-D7%3iL!kG`7r;Qfm2Z5E41e.FO!F]O;?ia\Mr*T\B@:3Yq@ejC3>l,iJ?L_D)=9)Io?ipQ4 +2$!=N"TU!B@X_ec?ia\Pp"]`#RRt?FrrB_09En5As8SO:o^Mm2~> +f`)"mD=RB#!mIM:r;QfqfDO8%f)bjN! +f`)"nD=RB#!mIM:r;Qfo$2ac'$2ji)!>GD3! +f`)"nD=RB#!mIM:r;Qfq3rCc73aVen!F]gC?ia\_r*T\:EF<7)Abf^9>UCdGr[%VBnR)E#!*f#% +!sJZ.[J%<<\Jn8"IU`:a!F^*Bh#kuM.K7lt!879D##2c1s3+1/nGe"~> +f`)#L2t?YB!o]:;r;QfsgABM&(]FC8!@.OC! +f`)#L2t?YB!o]:;r;Qfs(]476!XAW(! +f`)#L3UukD!o]:;r;Qfs7f5%C2-0]a!F^-L?ia\Ur*T\:Kj\A:Abf^6>l,iJ0(E:&R`i9re6nm5=>$s*t~> +f`)$+$Lmfi!q([6qu6ZOqq(m$rVus",Q%NB"p=c'";:hAB-d9Q!#GIU!4M@s!!2Ng!CXctbQYgA +E?oN/rW!*&=0]Kag%X;)dY0FTf)GdK;>j/m9qD=aoL.-ss*t~> +f`)$+$Lmfi!q([6qu6XSqu?`u"TAB%!@.LB! +f`)$+$Lmfi!q([7qu6Y'r%e@1Ol/("TUs, +p<3]V3Hf.\@fBa=@>V8'c.VjI"4DlYrmq)Mr)*Dd##1Zgs7A_-nGe"~> +f`)$D48AjY(R16."p%nuWO9UnpY>n]?A6u1!WH=%9En4Ks8V_:S+-H.~> +f`)$GA2"9BJI<'0mU!uA#@XT#=%Q14kS!Ug!h7)AT@ +"i2F,/6iGZ!!WI-SZ0$6eb@l$\R(!@rrN+'rCdDiMZ<_KH(4='J,~> +f`)$?!Tj(U!q^s6qu6YUr%e@1:]4Z$D#@ZA@;PjL"CZ:ZFDgn^!*]7H!&!eL!`/r&nmDP'!(=Zs +bQYg.Lhh0Cra5q=H_%1E`msh>!kDWkf)GdM?2[G$9oAuNoR!.us*t~> +f`)$C)ohXP!qq?5qu6Z`qq(n;r;Zj%!rW*"!A"'J"T^[b6q[d]!!a:_bJ_TJbcpU;!!2Kf!D1-$ +bQYfrFurY.r;[%,KpA@:_:A>:!niGYec,VdrCd5dFoMCBV/c.ts*t~> +f`)$C)ohXP!qq?5qu6Y[qu?`u)Z9X:"TnW&!^a9XK8;#Xf[lY!!!&f!!,[- +p<3]V'6ZH:#Q4W,>_SH:Z,+uch#c8e-e84sD>d-/9m-I8!i9r0nc++~> +f`)$C)ohXP!r%E9qu6Ypr%e@1:]4Z%@U]4C!F^?Q?j0tm?u^3rqHsD/-71/?-3,[g?ij..>Ol/( +"TV-1p<3]V'8UOJ@f9[=G(l3TZ,+uch#c8e.FnFuD>d-/9m-I8!i9r0nc++~> +f`)$C;2Y,J!r8,;qu6Z`qq(nkr;Zj!$iL&+!A"$I"<7J!>R1')##1*]8]8iWnGiOimJm5\oumQT +"_L.jqu?t+D17A5Y.iH]h#aiYo@EpAL&F[G9k+,%!ng!5nc++~> +f`)$C;2Y,J!r8,;qu6Z,qu?`u(&\+5!=Si+!A\hHSZ]]WptZ"V;=iB=!/:AF!DR&&rrUkAoC;j2~> +f`)$C;2t>M!r8,;qu6Z;r%e@17f?]q@:fCF!F^?P?j(IXCj':`?j9:a?:cOl0(E%JSZ]]WptZ"V;=iB=!/:AF!DR&&rrUkAoC;j2~> +fDbo(>OhLg!r8h8qu6Zgqq(r$!WE'"!?D";!=Ju,!!E?C*,u5U!!!ei!!#^cbQPW[AlLkj!!r[! +=_;f6R]aKWq:u)%K%9l$S,>qa +fDbo(>OhLg!r8h8qu6ZQqZ$X'!WE'"!?D";!=Ju,!!E?C*,u5U!!!ei!!#^cbQPW[AlLkj!!r[! +=_;f6R]aKWq:u)%K%9l$S,>qa +fDbo(?1I^i!r8k9qu6ZXq_J45rEoY7EVs2FARYLE"CZ:cG%1)O!*\l"!`&u(nmDM,!)3(0"MOko +FDh"a#YeK7Fc)Wj_:AA;!S)ePrrAVf9EnMqs8VUHlLFn)~> +fDbog)tE\&s1&.*r;Qfmg&0J'f`h?T! +fDbog)tE\&s1&.*r;Qfj"T/9""TAB%!B'cT!L7loMr`ts*t~> +fDbog)tE\&s1&.*r;Qfm2Z,?32I?Aj!F^QW?ia\Pr*TY9Kk5^Bia;g_$X<10!Xf!*oumQL!Ju); +rEot=2+1;JFbQ9e`nC4E!++1T!35rj##Y3rs7B=-nc++~> +fDbp6!:'=Y!lh)4r;QfqfDF2#0)bhO!?D";! +fDbp6!:'=Y!lh)4r;Qfo$2ac(! +fDbp6!:BO\!lh)4r;Qfq3rCc71fjT`!F^!G?ia\eqd9MGAU\4M?iiq.>Ol/'$NOB'bQP'ULN[>/ +?j]jP.m$F2Fc)m#chuT"fmD3J!64q1##4Ues7D#-nc++~> +fDbpA%FY"N!o9.;qu?NF!)NOn!"8])![EUZ"EY!s*t~> +fDbpA%FY"N!o9.;qu6XGqu?`u"T8<#$iBu*!@.IA!s0]m'@6^\"TTM7YlnABApG'g!"0&A'.5_4 +@Wd^-^=iMA!S*XerrD<]9E@lDrr3&)B(YZoJ,~> +fDbpA%FY"N!o9.;qu6Xqr%e@1;>jl&Ac,p:@!A`@)!8deko?igK3)tgH=?4Dg>Ac6!E +=Uc#n3D +fDbpB4/)EK!pYL5qu6ZWqq(n;r;Zj"#5eH%"p=c'!s(r*,gQGk!@ROD"9>b9ILH)S%p/I-'-fG1 +Aq$2Rce[F'h9l6'q+gl^!DUT5rrV" +fDbpB4/)EK!pYL5qu6Xmqu?`u)Z9X:!XAQ&! +fDbpB4/)EK!pt^9qu6Y;r%e@1:]4Z%@:]:D!G#[;?ishmGA?,F!^m`,nmDM,!@d[F"9?,HIV&Ic% +uL$a'-oS4Aq$2Rce[F'h9l6'q+gl^!DUT5rrV" +fDbpBD/o=M!q^s6qu6Z\qq(nUr;Zj!*;fd;!?Ct:!ZY0$c2[kr=7o)d!"")\r;[=Ps8RNW,`r49a!WH*t9E@kqrr3&i2 +fDbpBD0#CN!q^s6qu6Y9qu?`u/,]GK!?D";!43dg,/6DL8!rrXV$2ji6GlRem%3mr7 +D2P1#h8]E?rrN+!rCd5d[Jp1-nMTS%s*t~> +fDbpBD0#CN!q^s6qu6YUr%e@1;uL))@<)3Q!F^!F?ik=iDW5%*6kikr?ipc:CPh_>"(5Se@f9[E +VuQdG%4"#8D2P1#h8]E?rrN+!rCd5d[Jp1-nMTV&s*t~> +f)GfJ2t?\C!qq66qu6Z`qq(nkr;Zj!2>dFT!B^/Y!s)Ru#L +f)GfJ2t?\C!qq66qu6Y[qu?`u(&\+5!B'cT! +f)GfJ3UunE!r%<7qu6Ypr%e@17f?]q@=e>a!F^]Z?ishaEan':!^%0$n6c6Sp2^C_Cg^h$@f9[7 +`W#lCD%eEf?@.^;V9T#?CAgg,9r7jh!q]L/o)F4~> +f)Gg)$Lmij!r7u7qu6Zgqq(r$!WE'"!A"'J!WaePqu?g"='Q!V!;%35M?"Q:#Q4W&g&:pT2]F\Q +@YJgGrr@cO9E@kVrr3&lMNRK0J,~> +f)Gg)$Lmij!r7u7qu6Z?qZ$U&r;Zj!/,TAK!@n3K!!<7'>R/RToG[pj!#fqar;ZiNrVm'\)`LW' +KlYE;!/:AF!DT$^rrVhMOn/O&~> +f)Gg)$Lmij!r7u7qu6ZHq_J76?N+=5@=.o[!b$Far*TV8M0<@g?iiG1>OZ%m)[)..Ape(d?i]*_ +rrtJ&3Dj7>Em4O`L&F[G9q)(]!q_A4o)F4~> +f)Gg>"l]7V!r8\8qu6ZlqUbcar;Zg2qZ$X%#5\B%.s)$D!!6aO48,3KOT9h]B*\D9!@`bPqR5rCd5dL&M#QWGV;!s*t~> +f)Gg>"l]7V!r8\8qu6][!rN$!!XAT'!#,50!=&i+!!4Zm#LNMQAfEi*SHY,UIOo+:rVus"l2CVc +n-pa(?@pB#!1j'^!DS:HrrT0:o^i*5~> +f)Gg>"l]7V!r8\8qu6]_2>f622-0Z`!,VO?!FfU:?ikFt@cLht1E9Wi?il6*48,3KOT9iGG@LMY +!:'O_"n2sM3F7<\rrAVg9E@kArVlr!D=mH"J,~> +f)GgA0s:Hl$!!!$'nGN:g +AeQuRb5VIHrCd5dEW,n=dRj*&s*t~> +f)GgA0s:s9lg44!n'[4oDa=~> +f)GgA19UEP!r977qu6]p3rCc71f=3Zs'kn6!F^-J?ijng@cLht1F$,p?ik`cWqOX?_'FDEFCP5W +!FG9nrrZjH2;-.P!3uJr!DRV5rrUV?o^i*5~> +f)GgAD/o=M!lCr4r;QfsgABM&E;]b;!>GA2! +f)GgAD0#CN!lCr4r;Qfs(]476!=8W(! +f)GgAD0#CN!lh89r;Qfs7f5%C1f+'X!F]gB?ia\eqd9J7IV%PI!])'*nmDNI%BB-G"i1k.EH5Of +?iaj/qu6[9rQ5'>b5G!89k+,$rrVICnald2~> +ec,]E2t?\C!nik7qu6ZWqq(nUr;Zj!/,K;I*!,s;!XEuhd/X59%B9'F"MkFg918^Y!%bqc!8[QH +!E8srrrVdNjn&M&~> +ec,]E2t?\C!nik7qu6Xmqu?`u/,]GK!A"$I!?;. +ec,]E3UunE!nik7qu6Y;r%e@1;uL))@=.lZ!HDQG?ijeaB&d;!.f`fE?ik`cWqOX>_$Z!=EW'8F +CV]rMh>BqI +ec,^0"n)0c!pPF4qu6Z\qq(nkr;Zj!/,K;I!Y5,.!XE@+d/X59%B9'F"MOnK>VlW +9EA#drr3&l;o\G/J,~> +ec,^0"n)0c!pPF4qu6Y9qu?`u(&\+5!A"$I!UBqoMij%s*t~> +ec,^0"n)0c!pYL6qu6YUr%e@17f?]q@=.lZ!F]^??ije]IH+`8.f`fE?ik`cWqOX>^&j49D#I`A +M89,ll:q4N!E&[lrrVgm`q04\~> +ec,^?%FY%O!qUm5qu6Z`qq(r$!W;uu'Dhb1!B'cT!s_e/!R^rL6k--hbQPHVAnNCf!!%8ZrrN'n +rCd5dmf*4foQd#!s*t~> +ec,^?%FY%O!qUm5qu6Y[qZ$U&qu?^1qZ$Wt2>dFV#?4k-dJs>:%B9'F"M"MEB-dEU!-ldl +9E@lUrr3&lH(FR,J,~> +ec,^?%FY%O!qUm5qu6Ypq_J76?N"73D#7T@@=e>a"(HA!@HCku>:V5o?ik`cWqOX>\H%P3CAhN? +Vni<5rD*;b!DW"]rrVh>Sb)l3~> +ec,^@8X9)N!qq68qu6ZgqUbcar;cj$qu?`u2>[@T6q\$ +ec,^@8X9)N!qq68qu6Z?qZ$Wu#5nQ%"oJ?$!B'`S!^oZkdJs>:%B9'F"LSD7F;k)X!3![4!*T7o +!DVDKrrSX@o^r06~> +ec,^@8X9)N!r%<9qu6ZHq_J71R?TRY(2(s*t~> +eGfSq@e'9o!r7l8qu6ZkqUbdDr;Zj!*;]^:$O-G.!]+(CdJs>:%B9'F"K;huIM;Y[!6`.W!,_[. +!DU`8rrTo=o^r06~> +eGfSq@e'9o!r7l8qu6]i!rN$!!W^@6!^mKsp<3Z=%7GXYr;ZiD^]+:N +rCd5db5M>A^0C7%s*t~> +eGfSs@e'9o!r7l8qu6]l2>f621f=3Z!F^!F?iahJr*TSBG(o$c!a@0*nR)EH%BB-G"KDoZIV&Ic +!9(]m!,_[.!DU`8rrTo?o^r06~> +eGfT\,OtU0!r8P7qu6]qfDF2#Rf*3e!B'`S! +eGfT\,OtU0!r8P7qu6]q$2ac(!?1n:! +eGfT\,k:^1!r8P7qu6]q3rCc71f+'X!F^QV?ia\_r*TVBG(F)a?ijO_/+I!KI1<4MbQO@RF+.^! +?i]N-rr@rT9E@kurVlrT47i+EJ,~> +eGfU3!UBL\!r978qZ$EE!4;\)! +eGfU3!UBL\!r978qYpOFqu?`u/,]GK!B'`S! +eGfU3!U]^_!r97:qYpOpr%e@1;uL))@=e;`!F^][?isthBk?F7!a?m*nR)ET%BB-G$&'mNIUZ\m +@:&B:rrAbk9E@kfrVlre2=U8 +eGfU?'?9hI!l;&8qu6Z\qq(ql!W +eGfU?'?9hI!l;&8qu6Y9qZ$X3!W +eGfU?'?U%L!l;&8qu6YUq_J4Ar*TPA@JaF5F^b5V"(H^jL#ubE>9bro?il0B)tn^`!*X2c@fBa8 +A\S0E]_tM)9qD7_!qSM4o`'F~> +eGfU?=b?GK!nEb8qu6Z`qq(r&"oSE%!t4u+! +eGfU?=b?GK!nEb8qu6Y[qZ-X!r;Zj#$i9o)"V^h7":'2c.fn&u!'Bm5"BtjJE +eGfU?>(ZPL!nEb8qu6Ypq_J72?N"74@V,FE!FfmD?j'qcAU@kK?ijOW1[e]O48(Z;?!q;g@fBa8 +FM@bTebr/B9oAoL!q]L4o`'F~> +e,KK0:%A&Z!pPU +e,KK0:%A&Z!pPU,R"k0!!$*p'*Tm3!%_@[rVuq"^Ae2p +rCd5dH2[aEoQd/&s*t~> +e,KK0:%A&Z!pY[=qu6ZHq_J70(QbFD>3!G%1GY +!/\Gi!9O/Q!DRq>rrVh>U%JA8~> +e,KKo'Cbht!qV$;qu6]lg&'D%E;T\948T!Y!B^5[":%mf!B\a1!??sjAd+MU!'=-brVuqC^Ae6' +:&[fe9kO>'!gSK3p&BO~> +e,KKo'Cbht!qV$;qu6]i"T/6#!=8T'!'C&X!o_&67~> +e,KKo'Cbht!qV$eB)MZ1Q%el's*t~> +e,KL7!9O%V!qq68qu6]qfDF2#[/Bt*!A"!H!=f;3!!G\_#:fi*!!+(5o`,,H4%)IArVuqg^Ae6* +;>s5j9j@VqrrTT?o_&67~> +e,KL7!9O%V!qq68qu6]q$2ac(!A"*K! +e,KL:!9O%V!r%<9qu6]q3rCc71fO?\!F^?O?iatNrEobJEajB(k[4Hr'Kknn!HFh+!!In-EH,Ie +?i\'XrrM^gr_*Af?2jg&!juY4p&BO~> +e,KL>,J!XM!r7`8qYpQNqq(nkqu?a-"8`'!!@.OC">a9f!u'5c!s+5YV>%\,XoO;X48f-Za1hQS +oND,d!E8sqrrU_=o_&67~> +e,KL>,J!XM!r7`8qYpORqu?`u(&S%4%KlS.! +e,KL>,e5_+q +e,KL>Bm'7O!r8D8qYpQ[qq(r$!W +e,KL>Bm'7O!r8D8qYpP8qZ$U&qu?a!'Dhb1!D*.h"<;Cd!B\g3!`oB5pWNcS"_M9rrVus"jLtQn +B)PC(;>L1j!pMT4p&BO~> +e,KL>C3B@P!r8D8qYpPTq_J76?N"74@;PgK!F^c^?j(7g@UXuS?ijO?7.FXdM#b3_bQPW`Mg9+: +?i]N+rr?[09EA#drVlra2=^A>J,~> +df0BF1\(>A!r9+8qYpQ_qUbcUr;Zj!/,K;J!@n3M!!O$b#llIVec5bQ!4qpK$+^+KE?kMa!X8#* +rr@NH9E@lWrVlrh2 +df0BF1\(>A!r9+8qYpPZqZ$Wu#lO`(!A"$I!WaePrW!*8IL-!)!S.5P +df0BF2=^PC!r9+8qYpPoq_J71=oD_/@=.lZ!b$Fara5n@IUZ]3@Hh/$>74'n?il/b]_BVV]E!k5 +B4,+U?LGN,!.Ol?!DW(^rrV^JlLk1-~> +df0C-!Ufd`!ktr8qu6ZgqUbd#r;Zj!48JpX"r$t9"UTVc!!4>F +Q2OAW:$)?R!q\n2p&BO~> +df0C-!Ufd`!ktr8qu6]R!W2ou!_9E@lLrVlrk7+Lu1J,~> +df0C-!q,ma!ktr8qu6]Y2#K-11fjQ_!F^]Y?iaeSra5n=IUunrD!>=/>74'n?il/b]_BVQ[/u23 +Ac?';A\A$CQ2OAW:$)?R!q\n2p&BO~> +df0C<%F=kM!n*Y8qu6]pfDF2#B)M]1!@.F@! +df0C<%F=kM!n*Y8qu6]n$2ac(!AaTR! +df0C<%F=kM!n*Y8qu6]p3rCc71fXE]!F^-I?ia\kra5n=HY$SnL$;tH>74'n?il/b]_BVQWX=0' +Ac?';FM.VR[J`c":"'"?!q^*4p&BO~> +df0C=;2Y2L!p,=8qZ$EE!4;Y(!XB8oS&S's*t~> +df0C=;2Y2L!p,=8qYpOFqu?`u/,TAJ"p=`&! +df0C=;2Y2L!p,=8qYpOpr%e@1;uC#(A7GFD!F^c_?j:(aC1(Fh@Hq5%>74-p?il/b]_BVQRN$'l +@fBa8M7iigdeui?9u6f.!q_23p&BO~> +dJj9% +dJj9%G;0$53RC!!cIb!!!'?f)PkR!4qpK"G/?ZIL#iP!-l0V +!9O/Q!DT`prrSX@o_/<8~> +dJj9%a0Z?t+4q?smD_lJ +ra5`(]`.unrCd5dY5J;$RY(2*s*t~> +dJj9f'Ckr!!qq6;qYpQ]qq(r$"oSE%!A"!H! +dJj9f'Ckr!!qq6;qYpP[qZ$X'"T8<$!A"!H! +dJj9f)tEe)!r%< +dJj:4!9s@[!r7`8qYpQ_qUbcer;Zj!/,B5H!D*1i"uBKh!!!u?kl:\anGiV])^G,\"]GDH/8#4e +!!(H[rrD]i9E@kVr;QiO7.g3QJ,~> +dJj:4!9s@[!r7`8qYpQ+qZ$Wu'E%n3!A"!H! +dJj:5!:'F\!r7`8qYpQ:q_J71B`2<>@=.iY!F^c_?j:Fj@UNS`@I%;&>6Rjn?il*&,ktOH<<.A] +G@LPZ!8Y +dJj:<,J![N!r8;8qYpQkqUbd[qu?a-!W)j)!AslX!$#t`!!!$El2Uebmf3B5;>43!F9"+%#64`) +l+I#soMPT]!DSILrrVF@nb3!5~> +dJj:<,J![N!r8;8qYpTZ!rN$!!AaQQ!=f/-!"/fb!<<*>EsrrMahr_*>eMZ!JUkqhl's*t~> +dJj:<,ef621fXB\!GQ!>?jgCo@:3JYG%+ie@_.n6c9p;>45sHsgc6 +@fBa8lFd,toMPT]!DSROrrVICnb3!5~> +dJj: +dJj: +dJj:eIf03InMTV*s*t~> +d/O0H1%G,?!kP]5qYpQNqUk]G! +d/O0H1%G,?!kP]5qYpORqu?`u.f98I!A"!H"p%Eu!"")^rVus4"mZ-g%H8o?1L+2a/-$?qrrMb+ +r_*>eD>aD8oL.C+s*t~> +d/O0I1@b5@!kbr:qYpP&r%e@1<;^,)@=.iY#% +d/O1/!UBO]!n)euqYpQ[qq(r'!rW*"!B^,X"p%L#!"")^rVus"2 +d/O1/!UBO]!n)euqYpP8qZ$X5!rW*"!B^,X"p%F!!"")^rVus"2 +d/O1/!U]a`!n)euqYpPTq_J7B@JsR7@>4Pc#% +d/O1;'?^1O!qUlXqXadRqUY]dr +d/O1;'?^1O!qUlXqXacPq?[-8r +d/O1;'?^1O!qUl\qXacbqDnUirF,e=Hhh+SF_,99FCP5W!b$dkm9fut!a4>g!/\;e!07%P!_ubp +rVlrkEiSj5J,~> +d/O1;>Cu\N!UuB4IK3@E!!*H6`W-!\])Mc5rCd5hr;HWsoSSe)s*t~> +d/O1;>Cu\N!UuB4IK3@E!!*H6`W-!\])Mc5rCd5hqYgEqoSSe)s*t~> +d/O1;?%VnP!UuB4IK4Ke?iahJm9fut!*J&b!1g_$!3Z8o!E&dnrrVhMOnSg*~> +ci4'37.L*Q!;ZK`!:]j:!205r!=KnD#m1Q;#m^>-! +ci4'37.L*Q!;ZK`!:]gk!)WS"!=KnD#m1Q;#m^>-! +ci4'37.L*Q!;ZK`!:]hG!+l(;!G-9I@KU2,@Uf4B!F^QH?ijF1=P[?b_RfaIbl(39:A"Ja!h+`5 +p]#a~> +ci4("$LmQbqUbeTqu?`u2>R:S!BUDZ!!+SNg&M-U'DVq8'*\44!6;\N!9*lM!DVkWrrTK +ci4("$LmQb!%RmH!^Qt3s59Y!@n3)!!*08q$@'8"o83!a1D9NiVcFN:$VZV!jZG1 +p]#a~> +ci4("$LmQb!*&kP!AmaQ?ia\eqHsA5Kjsjc!IJ8C?ijF1>OZ#$@V,@E!G,a:?i\ijrrD$V9E@lT +r;Qi+B(YitJ,~> +ci4(9$JFqK!9sC5!SRSQ!!**Nq#CF",P_^NV])Mfr8cDBa:#5aI!mOI3 +p]#a~> +ci4(9$JFqK!-.l9!>be8!!**Nq#CF",P_^NV])Mfr8cDBa:#5aI!mOI3 +p]#a~> +ci4(9$JFqK!0-k3!(Qlo!F^?N?iae\q-X54AaWq-=9)Rp?ic6Yq+Ul]D>IW?lam)sm7I:N!DVDJ +rrUG>o_8B9~> +ci4(:9TJWB!:B[9!SIeW!!*`6q>^Ns=SVpt!B'6E!!2Qh!eUJWq.Tq?!,2W9!!36(m^iE!nO`^R +!DUo +ci4(:9TJWB!0d9[!<``,!!*`6q>^Ns=SVpt!B'6E!!2Qh!eUJWq.Tq?!,2W9!!36(m^iE!nO`^R +!DUo +ci4(:9TJWB!3#cN!B+Eb?ib(PqHs>4Q2+eg@=diS!a#M.nR)EV!+#D8"(D7F@fBa:@U\]9rrMX] +r_*>eci!eEiB-Z*s*t~> +cMms';=X2V!;--?!&"0L!)4U=]$+9!!*c'])Mg&8cDBa +9u6c-!pVT2p]#a~> +cMms';=X2V!6k^Qt9`b%i!?;./!!!&h!! +cMms';=X2V!7gs&!AmjT?ia_IqHsA5OC@rm!HDQ:?ij..>Ol2%@KAR,prieC;.fc7!G1f4rrM^_ +r_*>e_>O<7m5=D-s*t~> +cMmso$LmTc!Vk@FfDqB2:W_,4M@r;ZgK\c2[%rCd5dZ2FV' +nMTS*s*t~> +cMmso$LmTc!VHTn!!**=qu?`u,P_ +cMmso$LmTc!VeSN1BB=.r*TP6FnoDGEFelQ!F]g5?ij+->Ol/(@:E!Jq9/rW;-m`1?iXuQrrD]i +9E@kmr;Qig2 +cMmt8"kiGG!WLgMfDr;V!!**^q#CEs48AjW!B]*;!s2e+_>2:W_*i&>r;Zh!\c2^& +cMmt8"kiGG!WEo5!!**Nqu?`u48AjW!^$2X!3oMtla!DTEg +rrVg\h=pr"~> +cMmt8"kiGG!WGRd1BB=2r*TP6L&#*W@>4Mb!F^]N?ij"0>Ol/(@9ugIq9/rW6uHH3?iZ%orrMal +r_*>eV>U>poL.O0s*t~> +cMmt98X8fF!9F%0!8@>N! +cMmt98X8fF!)WOm!#PP5! +cMmt98X8fF!-A#n!(Qlo!F^?N?ia]$pg=,=@IRY+8deko?iskE +c2Rio?LdRc!:0O7!SIeW!!*Q3q>^Qt3sGE[! +c2Rio?LdRc!0m?\!<``,!!*Q3q>^Qt3sGE[! +c2Rio?LdRc!2fWL!B+Eb?iatNqHsA5Kjsjc!F^!;?ii_(>Ol/(@U3!Mq9/oV'8ZQo!6)MK!VCa< +9E@kJr;QijD6EX5J,~> +c2Rj^)tEIu!;--?!$qIB!"^,!Eq9/oV$?l=I!7JCW!07%P!DS%@rrVhE +ReQi4~> +c2Rj^)tEIu!6k2:V_$YA`!!(HWrrA)Y9E@k:r;Qij +JsuH6J,~> +c2Rjb)tEIu!7gs&!AnHe?ia\Uq-X57Hhh%M@>42Y!^m`,nmDQ/>$AcTfM#:W\h73IbNrD]Q +9n*$?!q_)5p]#a~> +c2Rk0!9NbN!;ZKD!205i! +c2Rk0!9NbN!TsO^!!**squ?`u2>I4Q!G;*,!=f4h!!j~> +c2Rk1!9NbN!UDW@1BB=Dr*TP6Jb`[S@@?mu!GQ$5?ii_1>Ol/(A6N0Qq9/oS!K6k`!:%)o!36#l +!DRG.rrS=?o_AH:~> +c2Rk8/$AFB!WLgMfDr;V!!**^q#CHsAc_]-!PQDD\H,e2!!30)n@8K%_G*]t9k+#" +!i^23q#>j~> +c2Rk8/$AFB!WEo5!!**Nqu?`u48AjX!G2B.!!**FhZ*]\5rW!!#"Rrr$"i +c2Rk8/$AFB!WGRd1BB=2r*TP6L&#*X@@:R"?ia\YnR)D\'O1-9!a\l4prifM!K$b_!FG9*rrpD: +9MA/iqu6_tEqK/,J,~> +bl7`aC[prp!8RJ(!8@;M!@%[A!!+&Lq#CEr2;\B8#?>+*bQ>$Q8GrMh'CiU4!87?F!_lhsr;Qi7 +=nMLhJ,~> +bl7`bC[prp!&j`T!G"5rrCaO9EIpkrquct +_--F*s*t~> +bl7`bDXm8s!+5X[!Am:C?ibCYq-X5CC&)-;@=drV!^%H,nmDN. +bl7aY)tEIu!9sC5!S7YU!!*96q#CEs=SMjs$O,Gg!XV_5prif5'0#ji!%bVZ!TcoP9EA)jr;QiO +7.g9SJ,~> +bl7aY)tEIu!-.l9rsAT'! +bl7aY)tEIu!0-k3!BO]f?iaePq-X53Q2"_fARb4j~> +bl7b0!TESK!:BX8!&=BO! +bl7b0!TESK!4ht,!iq>C6o +jYuf+s*t~> +bl7b3!TESK!6G$n!Anlq?ia\eq-X84U1*k*!F^?G?iiG1>Ol/'@SpV0bQ +bl7b72kfdA!;ZKD!205i! +bl7b72kfdA!TsO^!!**squ?`u8GN5e!D!Fi!!+SNi;`oc:1j:F!d-Rj~> +bl7b73MH!C!UDW@1BB=Dr*TP6L\YACg?ibU_o3_VU,?s_H!b+o:prie^4(\@u!1C=r!V8_Y +9E@o[r;Qid2=C8>J,~> +bPqWdC%:co!WCXIfDs@t!!30Y!Vl]r$Tn+`!el2:P_ +o/5Y)s*t~> +bPqWdC%:co!Wj~> +bPqWdC@Ulp!W>(W1BB=Nr*TS7JRS@^!G-u[?ia_Io3_VU,?s_H!b+l=prieK;.BK3!4007!VAeZ +9E@lQr;Qii2 +bPqXS,Ot=(!8RG'!!2ut!=K,-!!*+7p]( +bPqXS,Ot=(!&j`T!WabOqu?a*#5J6"!GVj~> +bPqXS,k:F)!+5X[!]3kbr*TP:AGKU6@AOl/'I60Ib^&tbg;02\D!6VeN!VB.d +9E@lDr;Qij7,@Y +bPqY*!9s%R!9sC5!S7_W!!**Nq#CHsB`e&0!?;.!!!/Dep](=6Gl.OAfsgt^oND/e!DUo +bPqY*!9s%R!-.l9!=9/3!!**Nq#CHsB`e&0!?;.!!!/Dep](=6Gl.OAfsgt^oND/e!DUo +bPqY*!:'+S!0-k3!BOfi?ia\_q-X84U1*h)!HDQ??ii,/>Oc)%VZQVn!?7s7?i]8srrMaqr_*>e +ci!eEoMNd+s*t~> +bPqY6,J!@E!:BX8!&=BO!e^AS!4oObN+ +s*t~> +bPqY6,J!@E!0d9[!j~> +bPqY6,e +bPqY6BlW\C!;--?!205i! +bPqY6Bl`bD!6k +bPqY6C3&kE!7gs&!AnBc?ia\kpg=,3RJ:.j@=e&Ys!n(Ri*ZP#[f6C#If<"A9s4Eo!q^r4q#>j~> +b5VOB/+N31!Vk@FfDs@t!!30@"o/-"!I+Y?!!*`6d/X0:[Jp5er_*>eV>U>poT"t,s*t~> +b5VOB/+N31!VHTn!!*+"qu?d!*!Q-j~> +b5VOC/+N31!VeSN1BB=Nr*TS7EFS`O!b&!8pg=,=@J4(1>:V5]?i\'OrrA)Y9E@kar;QijNfNo7 +J,~> +b5VP)!UB7U!WLgMfE'b/qu?a$,P_<@!E]R$!!**?df9FM"mWMq!2]Zg!DT$[rrSX@o_JN;~> +b5VP)!UB7U!WEo5!!30Z!rN$!"XEgC!WcC-p]( +b5VP)!U]IX!WGRd1BKC?@JjL6@WhKS!b%@)pg=,2EV:V5^?iaU$[Jp6'r_*>eRf!*dRY(2- +s*t~> +b5VP5)o;(E!9F%0!S8"_!!**rp](=)488dV!B\^0!*?Q-!5\Y.!DSUOrrTH>o_JN;~> +b5VP5)o;(E!)WOm!=9G;!!**pp](=)488dV!B\^0!*?Q-!5\Y.!DSUOrrTH>o_JN;~> +b5VP5)o;(E!-A#n!BP&p?ia\tpg=,:L%o$V@>4D_!a?m*i*ZPA[/U-Br_*>eNr/hXZ"iq,s*t~> +b5VP5Ap*YD!:BX8!)NLm!Ys~> +b5VP5Ap*YD!0d9[! +b5VP5Ap*YD!3#cN!B#u:?ia]$pg=,2VtXR"Bk$gE!a?m*i*ZQ@[/U-Vr_*>eK)>QL``;[,s*t~> +ao;FA1%Fi7!;--?!1Wld!Wb.\q#CHsGQRX?! +ao;FA1%Fi7!R(TB!!*+:qu?d!2$Ys~> +ao;FB1@ar8!S'%)1BB=sr*TS7JR\F_!b&!8pg=,2JbNOR>9br_?iXrJrrD0[9E@k.qu6`N7.g +ao;G(!9s(S!W:RHfDsCt!!*H@p](=P,PV6?!Aso.!!&n&rrq[Z9MA/pqu6`Z2tQkFJ,~> +ao;G(!9s(S!W!-#!!*+7qZ$X)'DMP.2'_kr!Wb.ZeGoTHZi:3o8PDfPC&@o3jYuf,s*t~> +ao;G(!:'.T!W5"V1BB=iqd9G9D"qB=JT^`q!b$Xgpg=/-*'E1f!4fH9"mnlT9MK:!rrV:BoD/E:~> +ao;G4)nPS>qUbi("oJ?$!DiIj! +ao;G4)nPS>!%RmH!Wb1_qu?`u:&"\h"aKbA!Ys~> +ao;G4)nb_@!*&kP!]47nr*TP6OSE2a@]/s.!G#d:?ijOP4Q9`L@d^TY8Y9MJjmr;Qid2=UGA +J,~> +ao;G4D/JhC!9sC5!S8Ro!!*+&p](?rM#mAO! +ao;G4D/JhC!-.l9!=:"K!!*+&p](?rM#mAO! +ao;G4D/JhC!0-k3!BPB$?ia]$pg=/3ZXNW:!F^QS?ijOH4Q9`KRBlhso1;VL9j7PorrV^JlM:I1~> +aSu=P,Ot@)!:BX8!+u-/!Wc'tq#CHs=:Y'*!@n3(!!30&jKedco_hGa;uQXo!qSM4q>Ys~> +aSu=P,Ot@)!0d9[! +aSu=P,k:I*!3#cN!B#f5?ijbu@JO:4@?kR$?ibU_q-X8.'L^th!Fb<"rrD]i9EA/lr;Qii45p#8 +J,~> +aSu>+!9s(S!;--?!1Wic!?;LB!!*a8pAb3t'A*9b=0_c+oMtla!E&[jrrVgadeWon~> +aSu>+!9s(S!T!kT!!*+:qZ$X:$hs]&'3Ou/!iq>C6ooL[L,s*t~> +aSu>,!:'.T!Tc091BB=sqd9GEAb]X6CmFa&!Ffm@?ijO?9&j:ZM6[']oMtla!E&[jrrVgadeWon~> +aSu>2,IR+B!W:RHfDsCt!!*0Zp]($uN!B]!8!WiD]Z2Xjs@fB%%:A"Ja!q]g5q>Ys~> +aSu>2,IR+B!W!-#!!*+7qZ$X!2>@.P!K$ON! +aSu>2,dm4C!W5"V1BB=iqd9G6JbWUR@C,]9!F^]X?ijO?9''F^@:&*$rrMb$r_*>fo_e^joNo9- +s*t~> +a8Z4$2t?J=q:GZOqu?`u=SMjt!I+eB!!+;Gg&M+DYl=arD>m30:%%rZ!q^K3q>Ys~> +a8Z4$2t?J=!%RmH!WabTqu?`u=SMjt!I+eB!!+;Gg&M+DYl=arD>m30:%%rZ!q^N4q>Ys~> +a8Z4$3Uu\?!*&kP!]3ker*TP6Q2"_g@AdT/?ibCYqHsA/$VKJf!/IfY!VC7.9E@lUr;QijEiSs8 +J,~> +a8Z5&%AE@m!9F%0!S9((!!*+&pAk4DpAb3q,MW8#!s.)Yrr@?D9E@lLr;QijKpDK6J,~> +a8Z5&%AE@m!)WOm!=:=T!!*+&pAk4DpAb3q,MW8#!s.)Yrr@?D9E@lLr;QijKpDK6J,~> +a8Z5&%AE@m!-A#n!BP<"?ia]$pL+#JpL"#1Fo#JI>74-e?ijeFhlm%[Hi?\>:$)Ys~> +`r?+[!/:%E!:0L6!-J) +`r?+[!/:%E!0m?\!!!+;Kp]( +`r?+^!/:%E!2fWL!ApAE?ibC\pg=,3VtXR"@>4Pc!a>h(j^8(:Y5\K]r_*>eg&(dNOc&f-s*t~> +`W$#)!4DJ!!;--?!7UfF!o_ST<~> +`W$#)!4DJ!!6k>Xl!!(HMrrAnp9E@l3qu6_kH1^t5J,~> +`W$#,!4DJ!!7gs&!Ao]2?ia_`pg=/3WaYX0!Gl6B?ijO9:?>j`h6-bXV>a-h:!EM7!hju5qYu'~> +`;]n +`;]n[+/9tL6%!juM0qYu'~> +`;]n=!P.n'!VePM1BKCj@f0U7@?pUq!b%@.pL"#1Hi%1P>74'c?iY#FrrBn79E@l#qu6`*@eBNs +J,~> +_uBe7!2]Dh!WLgLfDlT^!!$-q!!*R3pAb6q3s"1 +_uBe7!2]Dh!WEo4!!+P_qZ$UupAb4(=SDds!BU>=!!('ArrCaO9E@kjqu6`A;=s_bJ,~> +_uBe7!2]Dh!WGRc1BCHkqd9DhpL"#9Q1nYf@>/.f?ijOH7-7kWfWG/Rg&=YG9s4Bn!mFO6qYu'~> +_Z'\F!KQmR!9F%0!SL9H!!30Y"o&&u!JU4Irs%?\!%b5O!9O/Q!2]Sm!o69:qYu'~> +_Z'\F!KQmR!)WOm! +_Z'\F!fm!S!-A#n!B-&;?ijbf@ea=3@B0$/s()%8!a?@$k?n:*XT&:^rCd3fqu6`R7.g?UJ,~> +_>aV]$@21:rrDB]fDqE +_>aV]$@21:rrA;\!!*+:qZ$X)*;BL8!I+eB!!**XhZ*YgXT&In8PDfPRf!*djYuf-s*t~> +_>aV]$@D= +_#FMi,>mb%rrDH_fDsCt!!*+&pAb4E2>."N.fnT/!$nWF"nP;Z9MLEArrVUEnG<08~> +_#FMi,>mb%rrBV,!!*+7qZ$Wt=SDdr.lI##!@n30!!":Frrr!c9MA0 +_#FMi,Z3t)rrC.;1BB=iqd9G5Q1nYeH\(lu!IJ8R?ijOW1[&3HC9.@ +^]+E$=W>ofrrDlkfE(%:qu?`u=SDdr"*jM>! +^]+E$=W>ofrrM9aqu?d!:^-as!!qA)3qYu'~> +^]+E'=rZ#grrMFCr%eC2F(5&T!F_8f?ia`7p0[o1C&ME@>9brf?i\?MrrD]j9E@k:qu6`f2=:8? +J,~> +^&J._!N#\n!WLgMfE'\Nqu?d!3s,0W!We,ZpAb3p45p5?,c^kJoMJ:U9l'Y+!qSA4qYu'~> +^&J._!N#\n!WEo4!!*l\qu?d!3s,0W!We,ZpAb3p45p5?,c^kJoMJ:U9l'Y+!qSA4qYu'~> +^&J._!i>eo!WGRc1BBsfr*TS7Kjjaa!b&EDpL"#1L&GB\>:V5g?iXrArrr$l9MA/uqu6`h3T^,; +J,~> +]`/)A$?>S5rrD-WfE'Z-qZ$X1%ep#*!E^?8!!+&?irB(fWrE7p=\ML`@f-0,oL.C/s*t~> +]`/)A$?GY6rr>mm!!*4)qZ$X1%ep#*!E^?8!!+&?irB(fWrE7p=\ML`@f-0,oL.C/s*t~> +]`/)A$?GY6rr@-;1BBD!qd9G@C%u';@?kj+?ib7UrF#XU!*e_r!6V>A"nYtl9MK!nrrVg\g%t`!~> +]Dhul0gt.%rrDB]fDqE +]Dhul0gt.%rrA;\!!*+:qZ$Wu48/^U%VbV:! +]Dhul1.:7&rrAqn1BB=sqd9G5L%esUBqkO,YsC8q4;oO:Kf9jRbrrrVgib52-g~> +])Mm#AeW2`rrD]ffE'G%qu?`u=SDds!LNo^!!**^j8]1gW;d$<9MA2]rquctoO>6)s*t~> +])Mm#AeW2`rrC:?!!318!W2ou!Ef'r!WeYhpAb3p46-AA[]'30D+mVu +])Mm#AeW2`rrCUH1BKCj@JjL6@?pRp!b&ZKpL"#1L&GB\1E9Wb?i\?Jrrm759MSUer;Qij@^Z(4 +J,~> +\Glbq!07*Zpt>Ps!TXI_!!31'!VcWr!I+hB!!*Q5jo>B$VuHaBr_*>krVZZsoQ@#,s*t~> +\Glbq!07*Zo`Y0m!Wc+%qu?d!=980s!WdNMp&G+'"m,db*2if:H2^J<<;lap!q^W3qYu'~> +\Glbq!07*Zpbr%+!]4t/r*TS7Q!sGq!b&!;p0[o8@fBa:4<.Sl?iXu?rr@EF9EA/lr;QijFf"s7 +J,~> +\,QWO'4UD0gABM'g+3%#!@%gC!!+T@p&G*o2L.i!q_23qYu'~> +\,QWO'4UD0(]+15(G#@_!@%gC!!+T@p&G*o2L.i!q_23qYu'~> +\,QWR'4UD07f+tB7XP#?!HhrI?ibV0p0[o0Jc9$Y6kikl?i\0DrrA2\9EA#dr;QijKpDN7J,~> +[f6Kp8L)[EqUbdiqZ$X#/,'#E"c;pQ!Wb.ZkPtW'rhobrWW#Ql:A"G`!g/B4qu;0~> +[f6Kp8L)Y[qZ$WuFSc%="Y9R!!30Y!U'La*<)l9!3,rk!D`:arrS=?o_\Z=~> +[f6Kq8L2`*q_J71Sbldq@XIiW!FiD/?jC+k@:3J2$X<"+!Gh\4rrB(u9E@o\qu6_[MY-fGJ,~> +[Jp?uIK?, +[Jp?uIK<:B!!*+7qZ$Wt=SDds!LNu_!!*96kPtU]VZ-Y5r_*>enGE4eTm?;-s*t~> +[Jp?uIK=$W1BB=iqd9G5Q1nYf@CfqA?j:.U?slY9>O>eu`MWY8`r8X4:%8&[!hju5qu;0~> +Zi:'B@J\UWkl^h`! +Zi:'B&GlG/!HA5>!!*+&pAb6q=!ejno&ZZ"`k-s*t~> +Zi:'B&c4?c1lYuB?ia]$pL"&2Q$)e.#%<3n?r$r1mU-'2rhf\qg&=YG:$)9P!jQM4qu;0~> +ZMssib59flg_9Sc!Wb@dpAb4(GkD%>.ffVN!UTjeW29Lojo.pS:"fFD!lA+4qu;0~> +ZMssi#Q+Q'!B(Vh!!30_"nqut%X@XH"=jKQ! +ZMssj3W(Z71gb(s?ijbj@eX72BrCW3"aaZc:]akh?i\0BrrD0[9E@l@qu6`;>4h^lJ,~> +Z2Xjs[/APWf3%nM!=g@K!!32"!VQKo![I"2!?1p5rrD?`9E@l3qu6`G8bDo[J,~> +Z2Xj]/,TAJ$!@')!=g@K!!32"!VQKo![I"2!?1p5rrD?`9E@l3qu6`G8bDo[J,~> +Z2Xjd;uAEP3gKSM!GQ]N?ijcU@J4(4@ +Yl=e(danBL!1Wic! +Yl=e(;uusu!e`r#c;h)k6*s*t~> +Yl=e(D`%GL!Ap& +Y5\Ogf)F;%e,'+G!G;$*!@qdT!!*`;m/R,3U]1>cr_*>e^AIp3jYuf.s*t~> +Y5\Zi!<<*#C&7l2!G;$*!@qdT!!*`;m/R,3U]1>cr_*>e^AIp3jYuf.s*t~> +Y5\[&1c$pEMYgc^@@?gs!IL7-?j(:V=9)Im?iXr:rrDZi9E@l%qu6`Z3V3.JJ,~> +XoARsb1PA-"oJ?%!D!=e!!3=o!VQKo!B]ZK!5#$+"nYP`9MM\errVIAnb`?:~> +XoAR]'`\82"oJ?%!D!=e!!3=o!VQKo!B]ZK!5#$+"nYP`9MM\errVIAnb`?:~> +XoARd7PclB@f0U8@>A=d?ijfS@J4(3@>.nc=R]\ue"cpHoM/(R9s4Bn!pql8qu;0~> +XT&G$db)\^qZ$X,*;9F7!LsAf!!<6m!!2Qh!&:5J"nYeg9MM5XrrV[Gmed$7~> +XT&G";udXQqZ$X,*;9F7!LsAf!!<6m!!2Qh!%alE"nYeg9MM5XrrV[Gmed$7~> +XT&G$D_jk&qd9G=EVEiB@DZRK?j'nn>67ps?iY8Brrr$p9MA0Squ6`e2=CAAJ,~> +WrE.d0c'Wd!$qO"r[IBnGiR0UAkDh?;+$eRf!*do/5Y,s*t~> +WrE-b0c'Wd!$qO"r[IBnGiR0UAkDh?;+$eRf!*do/5Y,s*t~> +WrE-t10XQ_!F_8f?ijc%Jb +WW*"e2u +WW*"e2u +WW*"eAG]a8@?pOo!GSn5?ishm$V^,!!-t7;"DUV(9o]&M!qSM4qu;0~> +VuH`1qu?d!:BL7j!Wf_2o`+t:nc/^n!7IP?"EdC39of,N!q](4qu;0~> +VuH`1qu?d!9`k%h!Wf_2o`+t:nc/^n!7IP?"EdC39of,N!q](4qu;0~> +VuHa.r*TS7OC@lk!b'5[oj@iD$VL&!!b,QnT`5.;9MA0@qu6`i8^dM9J,~> +VuHef,l@ZB'DDJ.!I,UW!!**.nc/YXTDo%J9MA0'qu6`i +VuHef,l@ZB'DDJ.!I,UV!!!Dt!!#EZrre$L9MK[,rrVgm`r#dd~> +VuHekCA_K>D"h<=@Ae, +VZ-\m48f-["&JUj!@qmV!!!])!!33&d\$OBRS6CLD>X>7oObN.s*t~> +VZ-\m48f-["&8Ih!@qmV!!!])!!33&d\$OBRS6CLD>X>7oObN.s*t~> +VZ-\mL&GB[@Z^:k!ILR6?ijOO4S<(`@:7o`rreca9MKC$rrVh)[JTuS~> +V>gSp=T/:$!G;$*!X#A%jo>BPT)Sqr9MA/iqu6`iFf#!8J,~> +V>gSp=T/:$!G;$*!X#A%jo>BPT)Sqr9MA/iqu6`iFf#!8J,~> +V>gSpQ2Y.l@@?gs!b0,Wp0[r+, +V#LYuF8u:A=98-r!WeYroDekBp&P*n!83tD"i3l+9j@VprrVhHQ2CT3~> +V#LYuF8u:A=98-r!WeYroDekBp&P*n!83tD"i3l+9j@VprrVhHQ2CT3~> +V#LYuSR>i6Q!sDp!b&ZOp0[r+,<,7&!9BaO"i3l+9jRbrrrVhHQ2CT3~> +UAk@@!!"5OpAb6q=@i&a!>be1!!$W%rrpqH9MSUdqu?\V!;-3hJ,~> +UAk@@!!"5OpAb6q=@i&a!>be1!!$W%rrpqH9MSUdqu?\V!;-3hJ,~> +UAk@o?sn+gpL"&2Q&#'@"'[9-@J4(/R@X?]eP&Y3 +U&P4^!!"nM!!*Rso)Jb1p](?r"lu6S!9*oN!E&dlrrSX@o_e`>~> +U&P4^!!"nM!!*Rso)Jb1p](?r"QZ-R!9*oN!E&^jrrSX@o_e`>~> +U&P5+?snQZ?iauQojIeM!-.a@!FG)_rrD$W9EA#gqu6_dK(T!@J,~> +T`5(`!B9]P!Wfn8oDekZpAb1qSGrTRr_*>fpA=jkV02G.s*t~> +T`5(`!B9]P!Wfn8oDekZpAb1qSGrTRr_*>fpA=jkV02G.s*t~> +T`5)1?tAt=!b'Pep0dnN!.FTL!0s)S!:'PW!D`CdrrT$>o_e`>~> +TDnu$(BO71!WdNroDen3"o&&t=.K9jnGZ)^:%S8^!juM0r;V9~> +TDnu$(BO71!WdNroDen3"o&&t=.K9jnGZ)^:%S8^!juM0r;V9~> +TDnu8/ReB]!b&!Rp0[tY,AUc`?iZ%RrrDQf9E@lZqu6`*@eBTuJ,~> +T)Shs!VQKo,C&e[!'BrU!(`X["nPG^9MOdKrrU2?o_e`>~> +T)Sero`,";Gk1n8488dU8=]\`o1_nP:$MQT!le74r;V9~> +T)Si!?M7b-Ff4q@"$@Q-L%o$ULReAJo1_nP:$VWU!le74r;V9~> +T)Si_'D;D-"1nU+!!,Ukq#CC_SGrca;+sYXiVWWVeOfE2s*t~> +T)Si_'D;D-"1nU+!!,Ukq#CC_SGrca;+sYXiVWWVeOfE2s*t~> +T)Si_AbKL5@aec[?j&S+>DHY_?iYVFrrr!k9MA1>qu6`J8bDr\J,~> +Sc8[kp&G-pQk&`g!!!"sJrrr$p9MA12qu6`V47iCMJ,~> +Sc8[kp&G-pQk&`g!!!"sJrrr$p9MA12qu6`V47iCMJ,~> +Sc8\Hp0[r1\nUnH"@Nr.A9%EQ!-t+7"nYeg9MO(7rrV.@oDJW=~> +Sc8\Wp&G-p:K[5h!oDJW=~> +Sc8\Wp&G-p9j%#f!oDJW=~> +Sc8]$p0[r1OHoQJ"A0&+@>FYd!-t(6"C4\p9ud)1!p)<2r;V9~> +Sc8]Co`,"#W:Kui,6RcB!&9uC"D1>$9tC0$!q%l6r;V9~> +Sc8]Co`,"#W:Kui,6RcB!%aW>"D1>$9tC0$!q%l6r;V9~> +Sc8]Ioj@f3`V3aD9FG'4F^k2T!-=Y0"D1>$9tC0$!q%r8r;V9~> +Sc8]Xo`,$o[KZF+!!3'!! +Sc8]Xo`,$o[KZF+!!3'!! +Sc8`Y=S?,(@EN'S?j0@1>@:ljqHs;FS,WV<9MA0`qu6`f2=CDBJ,~> +Sc8`\$2+?#!GOFc!!NB'!!,UkqZ$UIS,WJGr_* +Sc8`\$haQ%!GOFc!!NB'!!,UkqZ$UIS,WJGr_* +Sc8`\9(lWo@A8>J?j9^7>@:lp@JaF4CRb>(MZ-9LV>L8oo/Yq1s*t~> +Sc8`\$hXK#*/3ta!=KD7!!":6rreT\9MM#RrrVdRiV`_+~> +Sc8`\$hXK#*/3ta!=KD7!!":6rreT\9MM#RrrVdRiV`_+~> +Sc8`\3qZk]EN8eA#$:k0?smP[qd9D=S,WVV9MA0Oqu6`h45p,;J,~> +Sc8c]2Z`UP!Wot7oDemm:\t+l,b+f:V+aQWNr/hXoL[L/s*t~> +Sc8c]2Z`UP!Wot7oDemm:&=nj+.N95V+aQWNr/hXoL[L/s*t~> +Sc8`\3V?b]@FJZ\?j9^5=C>NFOS`DcB:Jo(V+aQWNr/hXoL[L/s*t~> +Sc8c];[N-t!We,ko)JeA"8i-!)Opa0\P,[kK)>QLoM`d-s*t~> +Sc8c]QLoMij.s*t~> +Sc8c] +Sc8c]D'\cS!B"Td!!!&u!!*-Yqu?^8S,WW69MA0'qu6`i@_)F:J,~> +Sc8c]D'/EN!B"Td!!!&u!!*-Yqu?^8S,WW69MA0'qu6`i@_)F:J,~> +Sc8c]D.iNL!J.!@?ijO6=T2\/@=e>a!+q`#"NjD39m-@5!q]s4r;V9~> +SGrVA2t[.P"fMIt!<3*!!!30s!W;uu':]")fh>(6C&@o3oPLc/s*t~> +SGrVA2t[.P"fMIt!<3*!!!30q!W;uu':]")fh>(6C&@o3oPLc/s*t~> +SGrVAAG'=3@`;dP?ijO6;#Xi(@?=pr?iXc-rrh"K9MK:!rrVh0Y5J +SGrYe2?ELO!Wf5(o)Se#r;Zg2S,WWQ9MA/iqu6`iI\$E:J,~> +SGrYe2Z`UP!Wf5(o)Se#r;Zg2S,WWQ9MA/iqu6`iI\$E:J,~> +SGrYe9O[X&!b'&YqHsA/"],))s(VF>!+hZ""Q` +SGrZ,,6miA!WcCoo)Jdl:]17n':]"*l:alG=oS@!!q_A8r;V9~> +SGrZ,,6miA!WcCoo)Jdl:&P%l':]"*l:alG=oS@!!q_A8r;V9~> +SGrZ,,\6UV!b%@LqHsA/$VLA*!F_)g?iXc-rrqd`9MJ^ir;QijMO",>J,~> +SGrZD$7kcL!>C=\!!+q\rVus4nXTU_n4cSM;uQUn!g/B4rVqB~> +SGrZD$7kcL!>C=\!!+q\rVus4nXTU_n4cSM<;l^o!g/B4rVqB~> +SGrZD$@DGR!Go+=?ijO?7/UEnJR\Ud!G1ekrrqmd9MAIbqu6_[MY-lIJ,~> +SGrZP!Hdu7!Wfn7o)Jdm48o3\$h9be"nPSb9MtW_rrSX@o_nf?~> +SGrZP!Hdu7!Wfn7o)Jdm48o3\$h9be"nPSb9MtW_rrSX@o_nf?~> +SGrZP!hK!l!b'Pdqd9J0'L_k,!F^]]?iaj/SGrca;+sY\q>:0nRY(21s*t~> +SGrY)!)N7f!We!"nc/hq!<<*+nXTU_r_Z?_:A"G`!i:&3rVqB~> +SGrY)!)<+d!We!"nc/hq!<<*+nXTU_r_Z?_:A"G`!i:&3rVqB~> +SGrYb@$(%h!b&*Oqd9J0*'F++"dNM(?t/YrrrrC!9MA4Rqu6_oFnGY4J,~> +SGr\Y!%S6G!!+Tpnc/h$)up!Gn=0F\=\ML`nGE4e[:](0s*t~> +SGr\Y!%S6G!!+Tpnc/h$)up!Gn=0F\=\ML`nGE4e[:](0s*t~> +SGr]&@!cAU?ibVPqd9J0,;]4)"_D[]?t/VprrcM!9MP$RrrTT?o_nf?~> +SGr]"!"1%E!!3>9!V69p!D!1k$1OGa"D1>$:$)9P!l8%3rVqB~> +SGr]"!"1%E!!3>9!V69p!D!1k$1OGa"D1>$:$)9P!l8%3rVqB~> +SGr]6?tFKR?ijfd@JjL7>9bs$?j0to?smI5S,WV'9MA1Bqu6`6>4hdnJ,~> +SGr]3!!-3p!!31k%e9T&*!QEIn=0F\F\GJ'h>@3RcV='1s*t~> +SGr]3!!-3p!!31k%e9T&*!QEHn=0F\F\GJ'h>@3RcV='1s*t~> +SGr]D?t#>n?ijcRC&D??>:V6#?j(I[?s`>lrrdI<9MO@?rrUM@o_nf?~> +SGr]E! +SGr]E! +SGr]P?t#>n?ijc%Q2=th.f`fN?j'nl@:&Gmrre3Q9MNk1rrUkAo_nf?~> +SGr`V! +SGr`V! +SGr`W?t"h!oj@f7_Y[^B1F$-#?itsg?L"$["I2YS9u6`,!oZ64rVqB~> +SGr`["TT2Lo`,$o`s)#6!s=cHnXKO]V+aQWZMXY'kr&)2s*t~> +SGr`["99)Ko`,$o`s)#6!s=cHnXKO]V+aQWZMXY'kr&)2s*t~> +SGr`[?=7Scoj@i0fOFbd!])'*qHsD7S2p,/rrf/l9MMqlrrVICoDS]>~> +SGr`j#lk$&o`,$oGUr=b!s(qInXKO][7j7gWVc\sl8.u/s*t~> +SGr`j#lk$$o`,$oGUr=b!s(qInXKO][7j7gWVc\sl8.u/s*t~> +SGr`j@UNW+oj@i0VgJ>L!^%H,qHsD6LGJChrrf`'9MMParrVRFnbrK<~> +S,WR(!!-3o!!+U(nGiUs-h3]+"NF,/9qhIa!q8#6rVqB~> +S,WR(!!-3o!!+U(nGiUs-h3]+"NF,/9qhIa!q8#6rVqB~> +S,WS%?t#>m?ibVSr*TRo'O1B@!b*VKS,WW29MA0Squ6`e2=CGCJ,~> +S,WU:!!-1&o`,$s])hI&!W`VtS,WWE9MA0Gqu6`f2J,~> +S,WU:!!-1&o`,$s])hI&!W`]!S,WWE9MA0Gqu6`f2J,~> +S,WV+?t#=/oj@i1dp`2_!^mE#q-X849(ADN"PHIB9pPVU!qA/5rVqB~> +S,WUM!!!uKo`,$oS.>&h! +S,WUM!!!uKo`,$oS.>#g!9p!Q"Q<$J9oAiJ!qSA4rVqB~> +S,WV:?smtgoj@i0_J/sV!_Ni)pg=,/lC7eViClp>MYmDTo/Yq2s*t~> +S,WUm!!!*_o`,$o:K[)d!-k"5"R/TR9n*!>!qSM4rVqB~> +S,WUm!!!*_o`,$o9j$lb!-k"5"R/TR9n*!>!qSM4rVqB~> +S,WVJ?smGtoj@i0OHocP!`&u(pL"!!S,WWV9MA00qu6`h45p/ +S,WV*!!!%%oDen"SG`Hf!VQKnd[U7>mS-ALD>X>7oL.C2s*t~> +S,WV*!!!%%oDen"SG`Hf!VQKnd[U7>mS-ALD>X>7oL.C2s*t~> +S,WVc?smE.oO%]2_YmjD:]akq?i]#Prrhaa9MKC$rrVg\g&:r$~> +S,WYG!!!%%!VHEo!P8O6!!!&n!!('/rrhpg9MK-rrrVgec2IZm~> +S,WYG!!!%%!VHEo!P8O6!!!&n!!('/rrhpg9MK-rrrVgec2IZm~> +S,WYl?smE.@J+"0@FJ]b?ijF3>PDM*fUMmDo1htRB)DT0oM*U/s*t~> +S,WY^!!!$M#5%rt!I-Kl!!('/rrrC!9MJajr;Qij=i1.;J,~> +S,WY^!!!$M#5%rt!I-Kl!!('/rrrC!9MJajr;Qij=i1.;J,~> +S,WZ/?smDiAG'=3@Ae\U?ijF1=SH2'fUMmEr_Z?`?2jd%!q][9rVqB~> +S,WJsrVus'2=pkL*/X1c!5"^""BeDn +S,WJsrVus'2=pkL*/X1c!5"^""BeDn +S,WK2ra5b;Jb3=NEO5XP!a#G)pL"!MRf +S,WK/rVus"B(Q')!lkB5!!'Hrrrce)9Mt`crrVh4WVujI~> +S,WK/rVus"B(Q')!lkB5!!'Hrrrce)9MtZarrVh5WVujI~> +S,WK@ra5b8RIjkl@G#!r?s +S,WKArVus"B(Q')!Jr'#!!!&n!!&sdrrdI<9MYE]rrVh +S,WKArVus"B(Q')!Jr'#!!!&n!!&sdrrdI<9MYE]rrVh +S,WKLra5b8RIjkl@C()a?s<\7pL"!?Rf +S,W]W!WW3$3sG9W!WbB-r;ZfupAb2lRf +S,W]W!WW3$3sG9W!WbB-r;ZfupAb2lRf +S,W]X@:3JOKjs^_#@W=a?sm1B;"n>t`L?f0KhP07oDJUioS&S/s*t~> +S,WNf"o\K&$R>9D!X?7;o)Jc\Rf +S,WNf"o\K&$R>9D!X?7;o)Jc\Rf +S,WNf@fBa9ATdWQ#%Z1k?s="6pL"! +S,WNg$iU,,!G:s(!Wf5-o)JcXRfqu6__L%PBEJ,~> +S,WNg$iU,,!G:s(!Wf5-o)JcXRfqu6__L%PBEJ,~> +S,WNgAc?'<@@?aq#%>J^?s="2pL"!4Rfqu6__L%PBEJ,~> +Rf<@-rVus"B(Q')!G5.!!!%kErrfJu9MO(7rrSa?o`"l@~> +Rf<@-rVus"B(Q')!G5't!!%kErrfJu9MO(7rrSa?o`"l@~> +Rf80L"?i[O%rrfJu9MO(7rrSa?o`"l@~> +Rf<@HrW!!#:BU4h!>Cjl!!%kErrg&09MNP(rrT0>o`"l@~> +Rf<@HrW!!#9`t"f!>Cjl!!%kErrg&09MNP(rrT0?o`"l@~> +Rf803o?i[O%rrg&09MNP(rrT3@o`"l@~> +Rf<@hr;Zj3*:s44!P8I+!!%_ArrgS?9MN(prrTT?o`"l@~> +Rf<@hr;Zj3*:s44!P8I+!!%_ArrgS?9MN(prrTT?o`"l@~> +Rf +Rfo`"l@~> +Rfo`"l@~> +Rf +Rf +Rf +RfL8obYIg0s*t~> +Rf +Rf +Rf +Rf +Rf +Rfq^"Sked9p,>Q!o5s0rr7K~> +Rfc!!$W"rri9t9ML-9rrV:@oD\c?~> +Rfc!!$W"rri9t9ML-9rrV:@oD\c?~> +RfC+(,?sqN!1B;U"T;1k9nN9B!p)H6rr7K~> +Rf +Rf +RfPMS+R@=-Yr`)WdFo21?l8A,2s*t~> +Rf +Rf +Rf +Rf +Rf +RfSLE;?iZ%Orr["09k+#"!q8)8rr7K~> +RfB)=!!#QXrrdU@9j.JnrrVdLl2L^5~> +RfB)=!!#QXrrdU@9j.JnrrVdLl2L^5~> +Rf[")Nl'>PMS+LRJ/FHV@.;rqucto/5h4s*t~> +RK!7,qu?`uB(H!'!LNK[!(<7T"H#lH;uQXo!qSA4rr7K~> +RK!7,qu?`uB(H!'!LNK[!(<7T"H#lH<;lap!qSA4rr7K~> +RK!8&r*TP6RIaeg@AaK;pg=)MRK!DI9MAIbr;Qii3T^8?J,~> +RK!7Aqu?`uB(H!'!G;$*!&p>G"I`"X;>L.i!q\n:rr7K~> +RK!7G"I`"X;>L.i!q\n:rr7K~> +RK!8.r*TP6RIaeg@@7:'pg=)IRK!DY9MA=Zr;Qij7,@kBJ,~> +RK!7Xqu?d!3sG3U!@.jC!!"aArrf#h9MY +RK!7Xqu?d!3sG3U!@.jC!!"R +RK!8Br*TS7KjsX]!bqmCpg=)CRK!D`9MA4Ur;Qij8^dV +RK!8!qZ$X,,P(m9!s/,r!%XK;"KkEl:%8)\!q]@4rr7K~> +RK!8!qZ$X,,P(m9!s/,r!%XK;"KkEl:%8)\!q]@4rr7K~> +RK!8Tqd9G=Fn8uB +RK!83qZ$Wt=Rc@k$2=K#,anZ8\kGdljo#,[oNo92s*t~> +RK!83qZ$Wt=Rc@k$2=K#,anZ8\kGdljo#,[oNo92s*t~> +RK!8bqd9G5Q1JAb=9)h*?iXr0rrfu.9MOXHrrVh!^Ae._~> +RK!8SqZ$WtB(5j$7/-`^*1?g0bY1])h>I9SoP(T0s*t~> +RK!8SqZ$WtB(5j$7/-`^*1?g0bY1])h>I9SoP(T0s*t~> +RK!8uqd9G5RIaef>6'*H?iXu1rrgP>9MO@@rrVh-Z2XcR~> +RK!8cqZ$Zu:BL(e!-n8=!#h:*"PHIB:!`b;!q^W3rr7K~> +RK!8cqZ$Zu9`jkc!-n8=!#h:*"PHIB:!`b;!q^W3rr7K~> +RK!9+qd9J6OC@ch!a>Z&pg=)6RK!EC9MA1,r;QijFf#*;J,~> +RK!9-q>gO/o)JgmK`h,N!#(e#"Q` +RK!9-q>gO/o)JgmK`h,N!#(e#"Q` +RK!9>qI'>>oO%c*!if`*?iXc+rrhFW9MNA$rrVhERf<>;~> +RK!9?q>^Nu:\"Jd="F(H!#(e#"R8]T9ssp!!q_A4rr7K~> +RK!9?q>^Nu:%A8b="F(H!#(e#"R8]T9ssp!!q_A4rr7K~> +RK!9JqHs>5ORuo_>6Tk1q-X26RK!EW9h\9hr;QijMNRo +RK!9Jq>^NsB(>p&$[DII!#(e#"T2"g9r\$i"HeT6s8RT~> +RK!9Jq>^NsB(>p&#^H.F!#(e#"Stke9r\$i"HeT6s8RT~> +RK!9QqHs>4RIjkh>74T3q-X26RK!Ef:/"B^qu6e]MY-rKJ,~> +RK! +RK! +RK! +RK! +RK! +RK! +RK!5=!!30-n +RK!5=!!30-n +RK! +R/[.+q>^NsB(>p&!grib!W`JoRK!A/9ML!5rrflAo`+rA~> +R/[.+q>^NsB(>p&!grib!W`JoRK!A09ML!5rrflAo`+rA~> +R/[/%qHs>4RIsqj>9#G-])#e8@dofc"*.(0If'-J\RP42s*t~> +R/[.Fq>^QtAc_K'!WdNLqu?d""n%fY",0ECEVob=_HHO2s*t~> +R/[.Fq>^QtAc_K'!WdNLqu?d""n%fY",0ECEr5k>_HHO2s*t~> +R/[/3qHsA5R:5es"^<3-@AdT4?ijbGm[=(WKhP3]qu6f=>4hjpJ,~> +R/[.^q>^Qt2$WUOs#']S!WiPnRK!AS9MK-rrrgSAo`+rA~> +R/[.\q>^Qt2$WUOs#']S!WiMmRK!AS9MK-rrrgSAo`+rA~> +R/[/JqHsA5JRnI^"^ +R/[/#q#CF'/+NZ@"aKnE! +R/[/#q#CF'/+NZ@"aKnE! +R/[/\q-X57HhCeH.frpaVu'j&@IBQ`"JJL`?2jd%"P#p4s8RT~> +R/[/2q#CErB(>p'!JLRP!!*,cRK!Dm9MSUer;QoU7.gNZJ,~> +R/[/2q#CErB(>p'!JLRP!!*,cRK!Dm9MSUer;QoU7.gNZJ,~> +R/[/aq-X53RIsqk1F$+4WaYd4!:?3S"KkEn +R/[/Rq#CErB(>p'!D!n%!!*/cRK!E(9MA=]r;QoY47iLPJ,~> +R/[/Rq#CErB(>p'!D!n%!!*/cRK!E(9MA=[r;QoY47iLPJ,~> +R/[/tq-X53RIsqk1F$+4LMZlr!Fb8]rrg&09Mt`crrh:BoDei@~> +R/[/pq#CHs8-SPa!=NN;!!*,bRK!E69MA=Zr;Qoa2=pkJJ,~> +R/[/pq#CHs8-SPa!=NN;!!*,bRK!E69MA=Zr;Qoa2=pkJJ,~> +R/[0/q-X84LLTsb"[!c/?tGc'?i]J[rrgP>9MtW`rrhUEoDei@~> +R/[0,p](=)*:a(2!JLRQ!!*,]RK!EC9MA4Qr;Qob1\(MFJ,~> +R/[0,p](=)*:a(2!JLRQ!!*,]RK!EC9MA4Qr;Qob1\(MFJ,~> +R/[0=pg=,:EV~> +R/[0>p]( +R/[0>p]( +R/[0Ipg=,2Q1eSi6kij5@A7<1?i]>WrrhFW9MOpPrrhaInGiN=~> +R/[3O!r2fs!G:j%!>@Qm!!(uGrrhR[9MOLDrrhjJlMpm7~> +R/[3O!r2fs!G:j%!>@Qm!!(uGrrhR[9MOLDrrhjJlMpm7~> +R/[3P@JO:3@@?gs#"f8-?smf)r*TNeRK!ET9MA1>r;Qoi2=:GDJ,~> +R/[3T"o/-"!E]Eo!!*+Fqu?`MRK!Ec:/"C4r;Qok2 +R/[3T"Si$!!E]Eo!!*+Fqu?`MRK!Ec:/"C4r;Qok2 +R/[3T?MRt1@?k9q?j9@0>@:iIVu0p&jI-#Nq+aUXeboFMo/5h5s*t~> +R/[3d$2=K$*#&&H!!3#u!WdNIr;ZiNRK!Eg;+s^,r;Qok2s()>J,~> +R/[3d$2=K$*#&&H!!3#u!WdNIr;ZiNRK!Eg;+s^,r;Qok2s()>J,~> +R/[3d@ea=3EGYAW#>bS.?smE@@JsR6hjOKIrD?6_b5D8Bo/Yq4s*t~> +Qi@%!p](dM*~> +Qi@%!p](dM*~> +Qi@%spg=,3OS<,f=9;]7?t"D%rEoW]RK!Eh +Qi@%9p]( +Qi@%9p]( +Qi@&-pg=,2RJ1(j=9)J&?ia`)rEoWaR/[7o9MMeirrhs^g&M)&~> +Qi@%Rp](?rAc_H&!Wd!9rVur=R/[8&9MMA]rrhscdf9>t~> +Qi@%Rp](?rAc_H&!Wd!9rVur=R/[8&9MMA]rrhscdf9>t~> +Qi@&6pg=/3R:5ku!a#G)ra5e9U1+%/!8*\="):M(V>U>roL[L2s*t~> +Qi@%tpAb4E%e9T$!BU\g!!'Wurr[C;9qD4^"S>R8s8RT~> +Qi@%tpAb4E%e9T$!BU\g!!'Wurr[C;9qD4^"S>R8s8RT~> +Qi@&RpL"#KC%u';=9)J&?ijbjAc?';e!U.;F\GN#r;Qol;9](?J,~> +Qi@&1pAb3u8G<)a!W2ou"],*t!5"Wu",0ECOo54^oNB$1s*t~> +Qi@&1pAb3u8G<)a!W2ou"\nsr!5"Wu",0ECOo54^oNB$1s*t~> +Qi@&`pL"#4L\P6Y>67q*?ia_ura5`TR/[8B9MLZIrrhst_>jOc~> +Qi@&BpAb3pC%_N,!WB2s*t~> +Qi@&BpAb3pC%_N,!WB2s*t~> +Qi@&lpL"#1UA/*t>6Rk%?ia](ra5`KR/[8R9ML6=rrht'\c;\[~> +Qi@&apAb6qB`[c)"T^[g!!&sbrr\rg9mQ[:"S?E5s8RT~> +Qi@&apAb6qB`[c)"T^[g!!&sbrr\rg9mQ[:"S?E5s8RT~> +Qi@')pL"&2U1*k*!a>h'rEoe;KjnFt`L-Z-ThJ1-r;QolC9dg=J,~> +Qi@'+pAb6q2$WRN"9p^`!2u:b"0"sgC]+28oPpl1s*t~> +Qi@'+pAb6q2$WRN"9p^`!2u:b"0"sgC]+28oQ$r2s*t~> +Qi@' +Qi@'=p&G+$2=UYL!E]=%S=' +Qi@'=p&G+$2=UYL!E]=%S=' +Qi@'Cp0[o4Jb`[T>80L'?j'o'?spj=rr]f*9k+&#"S@&7s8RT~> +Qi@*I!VZQp!GV'("9CRb!19/R"NF,/=oSC""S@;7s8RT~> +Qi@*I!VZQp!GV'("9CRb!19/R"NF,/=oSC""S@;7s8RT~> +Qi@'Op0[o0UA80u>803t?j'nl@:6[6rrg>89NqGorrhtGRfED<~> +Qi@*S"nqut!GV$'!t,S=M4";GeP&Y8rVca!oSSe2s*t~> +Qi@*S"nqut!GV$'!t,S=M4";GeP&Y9rVca!oSSe2s*t~> +Qi@*S@eX72@A +Qi@*c$2FQ(!rr?t"n;Qp!D!3)R/[ +Qi@*c$2FQ(!rr?r"n;Qp!D!3)R/[ +Qi@*c@ejC7<(^S\@esI6>9bs$?ishm@%s%g"Q<$J;>L.is,I-Ps*t~> +QN$q'q>^[#!!!09,Oka9!E]BaR/[<\9MA4Tr;QkaMY-q!~> +QN$q'q>^[*!!!-8,Oka9!E]BaR/[<\9MA4Tr;QkaMY-q!~> +QN$qsqHsJ>!!$>AFo#JI>9bs$?isi&!Tf^K"S5;\:A=\d"-nc9s*t~> +QN$q8p&G*p=RZ:l%L(s]rri-m9MP$Srr\^Ao`'F~> +QN$q8p&G*p=RZ:l%L(s]rri-m9MP$Srr\^Ao`'F~> +QN$r,qHsI_.m+MSQ24ki>:V6#?ik$Gjd?&Nq+aUXnGN:gRY(23J,~> +QN$qUp](Bt!!6m(!!30$iL'WJrD$$\l2:P`Tm?;1J,~> +QN$qUp](C&!!6m(!!30$iL'WJrD$$\l2:P`Tm?;1J,~> +QN$r?qHsIp,A.!bUA83s.f`fN?ijaViL'WJrD$$\lMUYaTmQG3J,~> +QN$qsq>^a&!!3-#=9FEN!!30$h3e3Fr_lKbh>I9TWH%S1J,~> +QN$qsq>^a&!!rW*=9FEN!!30$h3e3Fr_uQch>I9TWH.Y2J,~> +QN$rQqHsP-$YLGIQ"%)s?ii,/>Phe0@78q=rri=$9MO@@rr]9Ao`'F~> +QN$r0q>^a%!!3-#':8^g!!*,KQi@.l9MNt5rr]Q=o`'F~> +QN$r0q>^a%!!rW*':8^f!!(H6rrZJ!:"&t>"0uP2s*t~> +QN$r_qHsVQ%q21E9Wq?iaT^Qi@.n9MNt5rr]Z@o`'F~> +QN$rAq>^d'!!33%SH&RWq>^Krq#CDlQi@/"9MND%rr]i=o`'F~> +QN$rAq>^d'!!rr3SH&RVnGiQdQi@/"9MND%rr]i=o`'F~> +QN$rkqHskD"_VHJ_Z0U0$Su!p?q`[hq-X35Qi@/"9MNP)rr]o?o`'F~> +QN$r`q>^d%!!*/+rr;tOnGiPkQi@/19MMqmrr^8@o`'F~> +QN$r`q>^d%!!*D2rr;tOnGiPkQi@/19MMqmrr^8@o`'F~> +QN$s(q-XUF:hR'4s8K#d'Ep9pp0[lcQi@/19MMqmrr^8@o`'F~> +QN$rsp&G5 +QN$rsp&G5 +QN$s6qHsh<.l0;1rr;uV?s?#5"Z'9U?iZ:Trr[sK9re-k"3jU5s*t~> +QN$s5p&G7Hrr<#l#5eH$!VcWp8=0>YPtXoKr;QlL8bE%5~> +QN$s5p&G7Hrr<#l#5eH$!VcWp8=0>YPtXoKr;QlL8bE%5~> +QN$s@q-Xb+!!%-?s8Vh(?sm22*!.WmqHs;YQi@/Q9MMA]rr^eCo`'F~> +QN$sDp](O"!s\K!s8FnP!!!&r!!#ERrr\fc9q)"["5QB;s*t~> +QN$sDp](O"!s\K!s8FnP!!!&r!!#ERrr\fc9q)"["5QB;s*t~> +QN$sIq-XJ#!b,^7s8W(LrEoe59H4*a=SuP,I@'s9SP2bHr;QlT7.gM0~> +QN%!M!r2g$!WW5@s8W(Cnc/YKQi@/e9MLEBrr_4AoDa=~> +QN%!M!r2g$#ljtGs8W(Cnc/YKQi@/e9MLEBrr_4AoDa=~> +QN%!N@JO:9B4,-"s8W(rqd9S3:*T`h=T2\.H'eO5W_?-Hr;QlX47iK&~> +QN%!a"nhp!L&_2P]CGq%0phnB[7j;Dr;Ql\2tR'"~> +QN%!a"nhp!L&_2P]CGq%/=6A=[7j;Dr;Ql\2tR'"~> +QN%!a@eO14WrN+ue+mAV>>HID.p-"sQi@/q9ML!6rr_@CoDa=~> +QN%!b%e]l&49#6\nH8Lc!!3'!!=R>Crr^,39l^+2"6h]5s*t~> +QN%!b%e]l&49#6\nH8Lc!!3'!!=7,@rr^,39lg13"6h]5s*t~> +QN%!bC%bp7L&V)Qp1!f)#$XnK!$bY&R/[9.9MKR*rr_ODnc++~> +Q2^h(p&G7(r;Zfr,Oka7Ku]Y^"4Bk;B)MZ2mPFD5J,~> +Q2^h(p&G7(qZ$Tp,Oka7Ku]Y^"4Bk;B)MZ2mPFD5J,~> +Q2^i"p0\&8r;ZfrFnT2I>?EBU,HBCbrr^\C9kO>'"7A&:s*t~> +Q2^hCo`,-Js8W(4nc/g!rn3"GSGr`J9MAdlrVluh1[b9n~> +Q2^hCo`,-Js8W(4nc/g!rn3"GSGr`J9MAdlrVluh1[b9n~> +Q2^i0oj@p`s8W(mo3_`(^&HohfUVsEh+ULKrr)j!n29Y6J,~> +Q2^h[o`,,^s8W(snc/l9rr;u'41h*a"S#/[ +Q2^hYo`,,^s8W(snc/l9rr;u'41h*a"S#/[ +Q2^iGoj@p6s8W);nmDZmrr;u*DUY3W"S#/[ +Q2^huo`+torr3#a!V69t,Q@`Cn-&eC[f3!#"Sked;>gCm"7\85s*t~> +Q2^huo`+torr3#a!V69t,Q@`Cn-&eC[f3!#"Sked;>U7k"7\85s*t~> +Q2^iYoj@cbrr3#d@Imk5FoMF@n-'eIb5S+7"Sked;>gCm"7\86s*t~> +Q2^i +Q2^i +Q2^iaoj@r>rVuorD"D$B@eTj%rcL!u'P#,]U]1Jp:/"O\rVluk3T^9k~> +Q2^iSp]16r"R?$er`J^k"Le@1rcn>@!Z%a5V>g\t;bTsYrVluk45p3i~> +Q2^iSp]17#"R?$er`J^k"Le@1rcn>@!Z%a5V>g\t<(p'ZrVluk45p3i~> +Q2^j$pgF&<"RZ6hrg!%^%*JVMrhj.+1BeIr`VlY5"TDCp:A"Mb"7nV5s*t~> +Q2^imq#CEt!<*-)VZ6\qR.:4[GlRgC[e]t*(7>&trrZJ!:%%u["8#"7s*t~> +Q2^imq#CEt!<*?/VZ6\qR.:4[GlRgC[e]t*(7>&trrZJ!:%%u["8#"7s*t~> +Q2^j,q-X5&1]D7p\c;^/](053VuQerb5PcQ>;HEs>.X[0rrZP#:%%u["8#"7s*t~> +Q2^j4pAk0r!,MT6!86oC"XF$Hs7$9g!!3IorM]_uAkYq\rVlul8^dWh~> +Q2^j4pAk1#!,MT6!86oC"XF$Hs7$9g!!3OqrM]_uAkYq\rVlul8^dWh~> +Q2^j?q-X4k*;sdSrrD-N?j1]Ps8Ve%rEoh64:;Nh])AT-"(k5$jo,2]oL[L2J,~> +Q2^jCq#Ca(!!NN-,Q@`Cr!r;u"U";ps8FPC!!3I`r2Tc!F\GN_rVlul;9]&j~> +Q2^jCq#Ca(!"0/@,Q@`Cq@<)s"U";ps8FPC!!3ObqPsPtF\GN_rVlul;9]&j~> +Q2^jHq-XP/$Z9ip,l[iDr+Yb1"_.3*s8IBB?j9gt$O]S5r2Tc!F\GN_rVlul;9]&j~> +Q2^mL!r;m(!WW9*!X8,os8GR[!!Kb1s8I99!!3O^q5jSuKhP4`rVlul=i(,g~> +Q2^mL!r;m(!WWN7#mKl!s8GR[!!Kb1s8I99!!3O^q5jSuKhP4`rVlul=i(,g~> +Q2^mM@JX@=@/sqXB*J#/s8IfE?j+XPs8Jql?j9gt$O]"qq5jSuKhP4`rVlul>/C5h~> +Q2^mQ"o83+!W`?+! +Q2^mQ"o83+#lt>?! +Q2^mQ@esI>B*)^`:__CYs8K@q?j*D-s8LLA?j9h''EpOqpTFMuPtXodrVlul@_)Mh~> +Q2^ma$i0i1!rr<)!!%9Ds8L44!!OVHs8Vcrnc/_!GkSBA"//C_Z2O\)oPLc2J,~> +Q2^ma$i0i1!rr +Q2^maAbodA@N7LJ*&FMms8M!J?j1]Ps8Vh&p0\)/6kfecVt[Fq"//C_Z2O\)oPLc2J,~> +PlC_%q>^Krr;[$(2?*XUp]g^DroQ@#1J,~> +PlC_%q>^Krr;[$(2?*XUo`k!f"U4Grs8FP=!!<6%FRc[:"0"sgV>^DroQ@#1J,~> +PlC_qqHs\>9E6jK@Y+OYs7g-r?j1$5s8W(FoO%l-8fRmgSbBAh"0,$hV>^DroQ@#1J,~> +PlC_ +PlC_7q#Ca&#lk,/$i0i&r\a6H"Le@1rcml3!s&C6mBllq\P,_krVlulH(k7g~> +PlC`)q-XP!]-88[/U6=9MM5Zrr_n?U&TW~> +PlC_SpAb0prW!)Es8W(Cnc/f;s8W)=lN" +PlC_SpAb1"rW!)Is8W(Cnc/f;s8W)=lN" +PlC`=pL!u6ra5lfs8W(rnmDTus8W)Nn6cB':)j6i[/U6J9MLfNrr_nFRf@m~> +PlC_qo)JoMs8W)1nc/hDrr<#l#4)L&M#RoSSq6J,~> +PlC_qo)JoMs8W)1nc/hDrr<#l#4)L&M#RoSSq6J,~> +PlC`Oo3_^-s8W)InmDWJrr<#mAFEn/>=nlfrO2_.eP&\krVlulMO"3l~> +PlC`.o)Jbdrr3#h"nM]t"nDWmr\a$B!=Sk7rr_4R9mQ^;"8%V6s*t~> +PlC`.o)Jbbrr3#h"nM]t"nDWmr\a$B!=Sk7rr_4R9mQ^;"8%V6s*t~> +PlC`]o3_Q[rr3#m@e3t2@eTj%rdjKF"'Za+rO2_.iClsmrVlulNfO-i~> +PlC`No)Jq(r;Zfr,Otg;[f?C,L$Sd?$iRO6"6iKRD>aD8Oc&d]~> +PlC`No)Jq(qZ$Tp,Otg;[f?C,L$Sd?$iRO6"6iKRD>aD8Oc&d]~> +PlC`po3_`9r;ZfrFn/oCb5_M@WpX6s>9c3-[f6Hp9MKC%rrS=?oRH~> +PlC`lo)JppjT#8ZC%;6,GlRgCa6Wd,$iRO6"8P\d@f66-Q%ej\~> +PlC`lo)JppjT#8ZC%;6,GlRgCa6Wd,$iRO6"8P\d@f66-Q%ej\~> +PlCa+o3_`1li7"aU@M[pVuQerf^<,L>9c3-[f6I*:/,3qrrSI>oRH~> +PlCa(nc/f_s8W(snc/hDrr<#n#42Bk$iRO6"T;1k=oSC"!h+`5J,~> +PlCa(nc/f_s8W(snc/hDrr<#k#42Bk$iRO6"T;1k=oSC"!h+`5J,~> +PlCa9nmDU;s8W);nmDWJrr<#nAFEn.>9c3-[f6L/;+t0mrVlqfK(OQ~> +PlCa:nc/Z%rr3#d!qQBq"nDWmr]BKI!=Sk7rri=$9N1ogrrSm>oRH~> +PlCa:nc/Z%rr3#d!qQBq"nDWmr]BKI!=Sk7rri=$9N:uhrrSm>oRH~> +PlCaEnmDHcrr3#i@Imk1@eTj%re9fK"'[!2rO2_/r`)WlrVc`tTmQE^~> +PlCdK!V69p*<#p;r>bA."Le@1re9_>!=Sk6rrZS$;>L1j!i^23J,~> +PlCdK!V69p*<#p;r>bA."Le@1re9_>!=Sk6rrZS$;>L1j!i^54J,~> +PlCaKnmDW@rVuorEUmK?b5_M@Wpa9c3-[Jp>89MtWarrT3@oRH~> +PlCdP"nM]t!q$$fr`J^k"F0tHrla[/!=Sk6rr[%1:A4Yd!jQJ3J,~> +PlCdP"S2Ts!q$$fr`J^k"F0tHrm0s3!=Sk6rr[%1:A4Yd!jQJ3J,~> +PlCdP?LqP.@IjHurg!%^"K2;"ro* +PlCdR$1\'![f?C,SFQX`/,oSKq$ZTj!=Sk6rr[O?:%A2^!kDe4J,~> +PlCdR$1\'![f?C,SFQX`/,oSKq$ZTj!=Sk6rr[O?:%A2^!kDe4J,~> +PlCdR@e*n0b5_M@_X_(0~> +PQ(Urnc/Z7rr3#[!V69p"nDWmr]BNJ!=Sk6rr\9T:$MWV!l8+5J,~> +PQ(Urnc/Z7rr3#[!V69p"nDWmr]BNJ!=Sk6rr\9T:$MWV!l8+5J,~> +PQ(VonmDHqrr3#b@Imk1@eTj%re9iL"'[!2rO)Y-N_E14rVlr8?1`X~> +PQ(V.nc/hDrr2rq'Cl,']Dhg1M=(?E$iRL5".DnXh>R?T``;Y]~> +PQ(V.nc/hDrr2ro'Cl,']Dhg1M=(?E$iRL5".DnXh>R?T``;Y]~> +PQ(VtnmDWJrr2rqAb'4/e,K@IZg_?)>9c3-[Jp>t9MO@ArrU2?oRH~> +PQ(VNnGi]KjSf'Qnc/Z7rr2uAmJm7qrO)Y-V+aV3rVlrC;=oA~> +PQ(VNnGi]KjSf'Pnc/Z7rr2uEmJm7qrO)Y-V+aV3rVlrC;=oA~> +PQ(W2nR)U.li$ft8m>Nm?i[,(rrD$I?isUX3rQJd"/S[cdf'1IbYe"_~> +PQ(Van,NUn:Nuj>!V??q/,oSKq$ZWk!=Sk6rr]Q#9u?l/!n'd7J,~> +PQ(Van,NUn9m?X +PQ(W>n6cQ2OJaT:![Bg0>PMS0HiF'Fq.9)("'[!2rO)Y-[7j<7rVlrI9_ +PQ(W)mf3K)!<<*#qu?]tq>^[&nc/Xg8FHNZ$iRL5"2[`+\c)O0eO9%[~> +PQ(W)mf3K)!<<*#qu?]tq>^[&nc/Xg8FHNZ$iRL5"2[`+\c)O0eO9%[~> +PQ(WRmpHNt@:3;91DBg'1Jh +PQ(W:n,NLj2%03[!!2lq"M=^6re^(D!=Sk6rr^\C9r\*k!ng!6J,~> +PQ(W:n,NLj2%03[!!2lq"M=^6re^(D!=Sk6rr^\C9r\*k!ng!6J,~> +PQ(W_n6c<+JS"df$!ULo*!-Ku8m>O!?j+sYs8K@p?isUX3rQJd"4Bk;Wr;r!fgPI_~> +PQ(WQmf3@r2>$qL!W;uuGlI^Cg$\nA$iRL5"5upJV>^Dqh)k4Y~> +PQ(WQmf3@r2>$qL!W;uuGlI^Cg$\nA$iRL5"5upJV>^Dqh)k4Y~> +PQ(X"mpH0-Jbia]>?F9D"Tfo:=Bh^&rrD-M?isUX3rQJd"5upJV>^Dqh)k4Y~> +PQ(Wkmf3@hB(l9,KpY:,!!"MJrrN$-n,NIsrO)Y-ktFg?rVlrX47dt~> +PQ(Wkmf3@hB(l9,KpY:,!!"MJrrMs+n,NIsrO)Y-ktFg?rVlrX47dt~> +PQ(X*mpH0)RJ1(oWk*U7$NM/Orr3#sC%>X6>9c3-[Jp?o9MLuSrrV.@o7-~> +PQ(X+mf3@hB(l92M?!VO[UomIq>U?n8FQT[$iRL5"8P\dMZ*PVjYud]~> +PQ(X/mf3@hB(l92M?!VO[UomIq>U?n8FQT[$iRL5"8P\dMZ*PVjYud]~> +PQ(XAmpH0)RJ1(pZiC($b)8;#q>U?oLKj@X"'[!2rO)Y-q+aYArVlr\3V.b~> +PQ(X9mf3Ci8-Sbg!/:@N#5uSrGfp#Gn,NIsrO)Y-rD?: +PQ(X9mf3Ci8-Sbg!/:@N#5uSrGf]lEn,NIsrO)Y-rD?: +PQ(XDmpH3*LLU$d!35ts$N8VWVp,.#.n!KDp0[u,, +PQ([E!Ug!h%O:`K!-n;=!o]M.n,NIsrO)Y-r_lL1rVlr`2=Z1~> +PQ([E!Ug!h%O:`K!-n;=!o]M.n,NIsrO)Y-r_uR3rVlr`2=Z1~> +PQ(XKmU-'0Fnf>EVtg8uk.5F\$NM//=BkT/"'[!2rO)Y-r`)X4rVlra2=Z1~> +PQ([O"n)El!bV3-!-n2:"88Zp$iL&*!Vl]r$iRI4!aA?1rVlra1\#t~> +PQ([O"n)El!bV3-!-n2:"88Zp$iL&*!Vl]r$iRI4!aA?1rVlra1\#t~> +PQ([O@dd\*@@?mu!2oMi$2;Dq3YVQ.1Jh +PQ([_$1@ip!G;*,!-If3"oZJ`('"C2!!*K+[/U5?9O@_trrVUEn:1~> +PQ([_$1@ip!G;*,!-If3"oZJ`('"C2!!*K+[/U5?9O@_trrVUEn:1~> +PQ([_@dd\*@@?mu!1i]\&,k.O=sF(V.nX#M?s=j:rNuS,AkZP1rr3&f2=Q+~> +P5bLqmf3Ci=9J@!!,:p%%0"q6/-#YN!!!$"$iRI4"*I:;rr2p!n2'K_~> +P5bLqmf3Ci=9J@!!,:p%%0"q6/-#YN!!!$"$iRI4"*I:;rr2p!n2'K_~> +P5bMnmpH3*Q"'Ps!2Ar^%0#.aCF]bo, +P5bM4mJm8-'DVV.B']I!jIAaKrVus,rNuS,KhPABrr3&h1[]b~> +P5bM4mJm8-'DVV.B']I!jIAaKrVus,rNuS,KhPABrr3&h1[]b~> +P5bN(mU-'8D#%H=RHskYlb\E<'EA+orNuS,KhPABrr3&h2=>t~> +P5bMQmJm7i:\atjB'B6sr4?PIZMt#l9MtWbrrV^Hl@8~> +P5bMQmJm7i:&+bhB'B6sqR^>IZMt#l9MtWbrrV^Hl@8~> +P5bN;mU-')OSN8aRHXYQr6q'+ZMt#l9MtWbrrV^Jm=5~> +P5bMomJm7gB))E,=QTP_rj)P+ThJ5Rrr3&k2 +P5bMomJm7gB))E,=QTP_rj)P+ThJ5Rrr3&k2 +P5bNMmU-'(RJC4jQ0&#Grj)P+ThJ5Rrr3&k2 +P5bN,mJm:hAc_`.!*>Hc"0P +P5bN,mJm:hAc_`.!*>Hc"0P +P5bN[mU-*)R:5r"!/[!@"0P +P5bN=m/R/;$i0i'8 +P5bN=m/R/;$i0i'8 +P5bNgm9fsAAbod7LR%lA]M)&]rr3&k45k\~> +P5bN\m/R.j48JpW7$[cSbY1aarr3&k45k\~> +P5bN\m/R.j48JpW7$[cSbY1aarr3&k45k\~> +P5bO$m9fs(L&,0WI?jg7bY1aarr3&k45k\~> +P5bO&m/R.fB)2K-2jOCFfh>,arr3&l7,<@~> +P5bO&m/R.fB)2K-2jOCFfh>,arr3&l7,<@~> +P5bO7m9fs'RJL:kH'SC3fh>,arr3&l7,<@~> +P5bO8m/R1gAc_c/!&p2C"6E3N^Ae-6oL.5[~> +P5bO8m/R1gAc_c/!&p2C"6E3N^Ae-6oL.5[~> +P5bO>n6l8H"']3%@JaF4H'SC3j\/C_rr3&l7+He~> +P5bRD!U]ph!At)Y!!"O7rr_LZ9sO]t!q](4J,~> +P5bRD!U]ph!At)Y!!"O7rr_LZ9sO]t!q](4J,~> +P5bOJn6l8H"']2bAG]a7FHuk.l:apWrr3&l8^`+~> +P5bRJ!posg$T7e]!$mj0"7AlXWW)o!oMNh_~> +P5bRJ!posg$T7e]!$mj0"7AlXWW)o!oMNh_~> +P5bRM@I[_/1F$+3AV'_d!,@f!"7AlXWrE#"oMNh_~> +P5bR]$1.]n!GVE2!$mj0"8tthRf< +P5bR]$1.]n!GVE2!$mj0"8tthRf< +P5bR]@e!h01F$+3@A +OoGCpm/R.fC&7l1*0pO+r_Z@Orr3&l?G:p~> +OoGCpm/R.fC&7l1*0pO+r_Z@Orr3&l?G:p~> +OoGDmnR)M_**ZfZUAJ +OoGD,m/R1g:Bp^s!#h+%!a/3Nrr3&l@_%!~> +OoGD,m/R1g9a:Lq!#h+%!a/3Nrr3&l@_%!~> +OoGDrnR)P`**ZfZOC\8s!+qJq!a89Orr3&l@_%!~> +OoGDCli7&"/,TAI'9rLu@SCqDrrVh,Z%)~> +OoGDCli7&"/,TAI'9rLu@SCqDrrVh,Z%)~> +OoGE8nR)Ph'O+sQCjZ(f!+hDp!b+iGrr3&lC9`9~> +OoGD`li7%fC&@r2'9rLuD+ngGrrVh4WIO~> +OoGD`li7%fC&@r2'9rLuD+ngGrrVh5WIO~> +OoGEHnR)Ph'O+sQ@A<[-!+hDp!c:VJrr3&lEiOW~> +OoGE'li7%eFSl+=$^CYmIS=5MrrVh8V18~> +OoGE'li7%eFSl+=$^CYmIS=5MrrVh8V18~> +OoGEPnR)Pn$X7"H@@d=(!+hDp!e*gPrr3&lFesT~> +OoGE8li7(f=9\[(!W`W,Q2_,M9NhAps7Cc2J,~> +OoGE8li7(f=9\[(!W`W,Q2_,M9NhAps7Cc2J,~> +OoGE]nR)Sq$X7"H@?k=#?iaa9Q2_,M9NqGqs7Cc2J,~> +OoGEOlMpr*,Q7ZE!=A7\rs5&e;uQaroR`N^~> +OoGEOlMpr*,Q7ZE!=A7\rs5&e<;ljsoR`N^~> +OoGEunR)Do"^Ct6!HE8\?iaa+Q2_,Y9ND&ks7Co3J,~> +OoGEnnGiOiqu?a"B)Vc3!=/+Zrs5Gp;>gIooSSc]~> +OoGEnnGiOiqu?a"B)Vc3!=/+Zrs5Gp;>U=moSSc]~> +OoGF1nR)Dp"^Ct6!FhJq?iaa+Q2_,d9Mt`fs7D22J,~> +OoGF0n,NFhr;Zj!Gl@[E! +OoGF0n,NFhr;Zj!Gl@[E! +OoGF;nR)E#!aGY3!F_o)?iaa+Q2_,t9MY?^s7D>3J,~> +OoGI@!UKdk!GMT8!!3>lQ2^s&9MP'VrrJ7>J,~> +OoGI@!UKdk!GMT8!!3;kQ2^s&9MP'VrrJ7>J,~> +OoGFDnR)E#!*fG1#@X?8?smDLmZmeS_+[Snrr3"]MLY~> +OoGII!UKdk!@nf`!!<;jQ2^s49MOdNrrJC=J,~> +OoGII!UKdk!@nf`!!<;jQ2^s49MOdNrrJC=J,~> +OoGFKnR)E#!*K5.#@Vsq?smGPmZmeScV.'urr3"aKn'~> +OoGIO"mZ-h##G3u! +OoGIO"mZ-h##5's! +OoGIO@e*n.=9)J%?iaf"rEoWmQ2^sB9MOLFrrJR?J,~> +OT,:olMpqdC&S)5!pZ'N"6E3Ndf07ITm;.~> +OT,:olMpqdC&S)5!pZ'N"6E3Ndf07ITm;.~> +OT,;lnmDN$!*K2-!F_`%?ia^'Q2^sJ9MNt7rrJg?J,~> +OT,;#lMpqdC&S)5!U5mL"6rTT`r>u=WH!F~> +OT,;#lMpqdC&S)5!U5mL"6rTT`r>u=WH*L~> +OT,;rnmDN'!*K2-!F_`$?i]JWrr_X_9ud24!NL0j~> +OT,BLre^4H!!2ut"p$dn!!!&aQ2^sU://:urrKB=J,~> +OT,BLre^4H!!2ut"p$dn!!!&aQ2^sU://:urrKB=J,~> +OT,Bnrj26)!a>_.rEo\8Kk:6k!:#jL"7T&[\c2U0Z"ed~> +OT,BLrl=U1rrN#t"Ud0f!!2/Grr`6t9r7jh!OZBe~> +OT,BLrl=U1rrN#t"Ud0f!!2/Grr`6t9r7jh!OZBe~> +OT,Bnrn-jN!a>_&r*TP:Jc9$Wl]qJPr_ZCdrr3#,@Xn~> +OT,EMrp9dY!!!&t!!*+7rVurWPlCeb9VMIc!PVlj~> +OT,EMrp9dY!!!&t!!*+7rVurWPlCeb9VMIc!PVlj~> +OT,EorpjLj?ijO9;#F]%@A +OT,EMrr!Mt!!*+7rVurWPlCeo9U5VW!Q%ui~> +OT,EMrr!Mt!!*+7rVurWPlCeo9U5VW!Q%ui~> +OT,Eorr$[+?ijO?:AeK#@A(?~> +OT,E]rVf@T!!NC!!rr>SPlCf)9T&iL!QJ&g~> +OT,E]rVf@T!!NBt!rr>SPlCf*9T&iL!QJ)h~> +OT,F%rVhTF?ijO?9)N'#@?=r+@-!RP!cgtlrr3#@ +OT,Epr;Ls-!!ErT!!(]:rrRdGIfB?Jbt`c~> +OT,EpqYka+!!ErT!!(]:rrRdGIfB?Jbt`c~> +OT,F3r;NVe?ijO?9)E!!CiNijhj"-BJkUXmrrLA>J,~> +OT,F2pAVMe!!E@8!!(H3rrS +OT,F2pAVMe!!E@8!!(H3rrSdRer~> +OT,F=p\r>.?ijOH7/L?p@@:M2h3@p@O\BfprrLP>J,~> +OT,IBmJl5Jm/R7iB`J.RPlCfU9P4;(!S'Sg~> +OT,IBmJl5Jm/R7iB`J.RPlCfU9P4;(!S'Sg~> +OT,IGo)J#ap0[r+'L_h+"C\$4@+^_D!hE"srr3#L7">~> +OT,IKg&LsXm/R7iAci%RPlCuf9O@_us4Kej~> +OT,IKg&LmVm/R7iAci%RPlCuf9O@_us4Kej~> +OT,INjT#-hp0[r+*'F++"C[^-@+^_D#HCI(rr<#O7">~> +OT,IOa8c,rli7,4'*,Y/rs-). +OT,IOa8c,rli7,4'*,Y/rs-). +OT,IOf`1r%p0[r+*'F(*"*JEfe!0k;\P-$&s8Un:J,~> +OT,I_[f?>Kli7+kf`CT,rs-P;;>pOpiB)P~> +OT,I_[f?>Kli7+kf`CT,rs-P;;>pOpiB)P~> +OT,I_b5_I3p0[r+,;]1("(L-hnJ,~> +O8f^KV2h1~> +O8f^KV2h1~> +O8f=!s8Kn/?ijOW1\tJ]@CZF,PlD!=9MYE`s5c7k~> +O8f +O8f +O8f +O8f?Ms8Vium/R4h.fek!rs.XZ9^_r\kr!t~> +O8f?Ms8V`rm/R4h.fek!rs.XZ9^_r\kr!t~> +O8f?os8Vk)pL"&,.kCI("(?NVm?IVUj\/A9s8V@AJ,~> +O8f?Ms8W'Cli7(k!U5jK#O4uWjo>AG1Oo~> +O8f?Ms8W'Cli7(k!U5jK#O4uWjo>AG1Oo~> +O8f?os8W(@p0dnN!*f;-!b;AtPlD!U9MOXKs6V[o~> +O8f?Ms8W(1li7(f!9KIF#OkJ_g&M*?1Oo~> +O8f?Ms8W(1li7(f!9KIF#OkJ_g&M*?1Oo~> +O8f?os8W(dp0[qX,?t"P!auf)PlD!X:/0FAs6_ap~> +O8f?Qs8W(Tli7(f!9KIF#P1eebl@_21Oo~> +O8f?Qs8W(Tli7(f!9KIF#P1eebl@_21Oo~> +O8f@"s8W))p0[qX,?t"P!b!nHPlD![;,,:7s6_ap~> +O8f?ks8W)Ali7(f!9'.A#$"C.s8VREJ,~> +O8f?ks8W)Eli7(f!9'.A#$"C.s8VREJ,~> +O8f@*s8W)Wp0[qX**`8I!b"^[PQ(he9tC<(n25^~> +O8fC(rVuof"mZ-gh37jC?;.O%s7%mq~> +O8fC(rVuof"mZ-gh37jC?;.O%s7%mq~> +O8fC9rVuok@eX734<.T$?iaKfPQ(hn9WnEqnMPg~> +O8fC:mJm4b*:!S)]9E7!CJ:T)s7%mq~> +O8fC:mJm4b*:!S)]9E7!CJ:T)s7%mq~> +O8fCEo)JagEVEiB4;;#p?i\Z>rs!@7V>pSc21P~> +O8fCJ]Dqp1:[7u\FHc_/IS?41s7%ss~> +O8fCJ]Dqp1:$VcZFHc_/IS?41s7%ss~> +O8fCKe,TIIOS<,a6kil#?iZa]rs!pGRfEEX21P~> +O8f7KM>mMTL$J^=As<6!MG004s78*u~> +O8f7KM>mMTL$J^=As<6!MG004s78*u~> +O8f7KZi9t)WqTm&6jm5o?iZUYrs"HVOoPIQ21P~> +O8fC_=TAF#]B]FsAs<6!RS8G8s781"~> +O8fC_=TAF#]B]FsAs<6!RS8G8s781"~> +O8fC_Q2gm`e+[5O8deku?iZUYrs"ocL&_2E3Ih~> +NrK8;rVuob!pfme=HiahWD%U;s781"~> +NrK86rVuob!pfme=HiahWD%U;s781"~> +NrK9(rVuog@JF439FG)"?iZIUrs#JsHiO-;3Ih~> +NrK8;pAb0k%dX/q=-NXg\P-f=s781"~> +NrK86pAb0k%dX/q=-NXg\P-f=s781"~> +NrK9(p](9lC%u';:Batt?iZ%Irs$#-DZBb.3Ih~> +NrK8RbQ%VA488dU!VQKn:Qte_b"Q:Es78=&~> +NrK8Rci=%E488dU!VQKn9p>S]b"Q:Es78=&~> +NrK9@fQK"4+I~> +NrK8pR/d3cGkV1QJs78=&~> +NrK8pR/d3cGkV1QJs78=&~> +NrK9N])Vg0VtaX$=9;_%?iYtGrs%.M>5nQn4+I~> +NrK9-C&e54W9aKa7$IWTiCm2Ks7AC'~> +NrK9-C&e54W9aKa7$IWTiCm5Ls7AC'~> +NrK9\UAt8m`V +NrK-I/,oPLj8nWJ!&p,A#3efYr;ZCWJ,~> +NrK-I/,oPLj8nWJ!&p,A#3efYqZ$1UJ,~> +NrK-kHiF$GlXBTs!a#G)pg=)IPQ(jP9Mt`foL+3~> +NrK2\pAabQJ,~> +NrK2\pAabQJ,~> +NrK=+AblB+r+5\3!a#G)pg=)IPQ(jT9htH_oL+3~> +NrK=(!Ta:\r[[@9!%X95#4P>\oDeGSJ,~> +NrK=(!Ta:\r[[@9!%X95#4P>\oDeGSJ,~> +NrK=9@I*snrd4HK!a#G)pg=)DPQ(jV9hb0YoLXQ~> +NrK=:!3#qtrb:a"!$md.#4kSal2UBLJ,~> +NrK=:!3#qtrb:a"!$md.#4kSal2UBLJ,~> +NrK=E@)`0GrhB3r!a>Y,pg=):PQ(jY:/1$RoLsc~> +NrK=E!I4YErg```!!2fo!$%4thgiW&OFJ,~> +NrK=E!I4YErg```!!2fo!$%4tkhiW&OFJ,~> +NrK=L@&O&)rkeJ=!a>_.pg=);PQ(jZ +NrK=O!^$G^rn7&HrrMlp!#h%#"^=^Fs7B6?~> +NrK=O!^$G^rn7&HrrMlp!#h%#"^=^Fs7B9@~> +NrK=O@>4a]roEl_!a>_&pg=)6P5b\k:!EY0 +NrK@R#o!:;s7QZb!!![qrrlk+^Amh.J,~> +NrK@R#o!:;s7QZb!!![qrrlk+^Amh.J,~> +NrK@R@Vl#Cs7^(#?ijO9:\\;tAWm&s@SOT:oNHb~> +NW01r!q$$frZgh2!#(Oq"_gZ9s7BWJ~> +NW01r!q$$frZgh2!#(Oq"_gZ9s7BWJ~> +NW02o@IjHurcS'F!a?%+pg=)5P5b]#9XXom?@W~> +NW02.!5&:2r`JRg!"4ti"`[58s7BcN~> +NW02.!5&:2r`JRg!"4ti"`d;9s7BcN~> +NW02t@+5/Urg!=f!a?%)pg=)5P5b]+9WJ-b@Xn~> +NW02N!/^aUre^%C!=SF]rrqpK[K#l5J,~> +NW02N!/^aUre^%C!=SF]rrqpK[K#l5J,~> +NW032@'fn5rj2H/!a?%#pg=,6nWWtVnMR`SoP/m~> +NW02b!*K:$rl=F,!=SF\rrgY*V=\bX~> +NW02b!*K:$rl=F,!=SF\rrgY*V=\eY~> +NW03J@$Uclrn.'T!a?@,pg=,6nWNnTcS_QkEe"~> +NW06*!$(t;s7$3[!!*JtOoGO64,S$.~> +NW06*!$(t;s7$3[!!*JtOoGO64,S'/~> +NW06S?uc/Fs7Tq!?ijOH4SW:bAato_"4]JmEe"~> +NW06?!!W)rs8 +NW06?!!W)rs8 +NW06i?t/m1s8?d2?ijOP4SW:b@doKZ!oZ3uJ,~> +NW06^!!(4Bs8GRY!!30-n;mSMjYMD~> +NW06^!!(@Fs8GRY!!30-n;mSMjYMD~> +NW07&?sqsns8IfN?ijOP1\b>Y@doHY!Tc1h~> +NW07(!!&Dds8I`A!!30)n;dMKnUL~> +NW07(!!&Dds8I`A!!30)n;dMKnUL~> +NW079?spSGs8K%q?ijOW1\b>Y@doEX!:bR~> +NW07:!!$a5s8KIr!!33*n;[Hu~> +NW07:!!$a5s8KIr!!33*n;[Hu~> +NW07@?so`/s8L1 +NW0+A!<=YLrrMBcnGrRj!:GjHJ,~> +NW0+A!<=YLrrMBcnGrRj!:GjHJ,~> +NW0+H?sn?\rrMLqr*TS1.kCF's'YoqNW4M~> +NW0:P!WWW(s8W!,nGiUo!UbsIJ,~> +NW0:P!WWW(s8Vp*nGiUo!UbsIJ,~> +NW0:P@:3[Bs8W"2qdBFS!*f;-!b,R*NW4M~> +NW0:R#lk"es8W'Un,NIilAbgo~> +NW0:R#lk"es8W'Un,NIilAbgo~> +NW0:R@UNX1s8W(LqdBFS!*f5+!:>dGJ,~> +N;j+r!!&tts8I94!!*,bNW4M~> +N;j+r!!&tts8I94!!*,bNW4M~> +N;j,o?sptRs8Jqn?ii,/>PMS+lAbgo~> +N;j,.!!%9Ds8Jtd!!*,]NW4M~> +N;j,.!!%9Ds8Jtd!!*,]NW4M~> +N;j,t?soo4s8L"7?ii,/>PMS+l](pp~> +N;j,N!!#+\s8M!H!!*,]NW4M~> +N;j,N!!#+\s8M!H!!*,]NW4M~> +N;j-2?sn]gs8M0X?ii,(>PMS+l](pp~> +N;j/c!!!]2s8Vm!n,NILNW4M~> +N;j/c!!!]2s8Vm!n,NILNW4M~> +N;j0K?smgLs8Vn*r*TRg**`2G!:,XEJ,~> +N;j0*!!!)fs8W'Kn,NILNW4M~> +N;j0*!!!)fs8W'Kn,NILNW4M~> +N;j0S?smF6s8W(Fr*TRg'O1??!:,XEJ,~> +N;im7rW!)5s8W(4n,NILNW4M~> +N;im7rW!)5s8W(4n,NILNW4M~> +N;imara5lXs8W(mr*TRo'O1??!:,XEJ,~> +N;imVrW!(Xs8W(cn,NIINW4M~> +N;imVrW!(Xs8W(cn,NIINW4M~> +N;imsra5l8s8W)0r*TRu$X +N;imirW!('s8W)An,NIANW4M~> +N;imirW!('s8W)En,NIANW4M~> +N;in,ra5kos8W)Wr*TRu$XJ,~> +N;in2rW!*ArVuok"n;QmdZ+9W~> +N;in2rW!*ArVuok"n;QmdZ+9W~> +N;in8ra5nLrVuol@f9[9:((;$?i]#Bs*t~> +N;j4F!<<*'pAb0k*:X"/bDlOP~> +N;j4F!<<*'pAb0k*:X"/c].sT~> +N;inDra5n=p](9lEW'8H:Batt?i]/Fs*t~> +N;iqD!r`0&df9@H=T&7"!VZQoa,U+L~> +N;iqD!r`0&df9@H=T&7"!VZQoa,U+L~> +N;iqG@K'X;h>dNSQ2P(l:]akr?i\i=s*t~> +OoGFOrVlof#Q=]+R/d3cM>R>R!VZQo]8ci@~> +OoGFOrVlof#Q=]+R/d3cM>R>R!VZQo]8ci@~> +OoGFOrVlof@fBa<])Vg0Zi+85=9;_%?i\Z8s*t~> +PQ(aMY$'`^rr<`3!!I$9s8KY#!!'Wjs*t~> +PQ(aMY$'`^rr<`3!!I$9s8KY#!!'Wjs*t~> +PQ(aPY$0f_rr?X0?j*5(s8LLG?ijF1>PMS+duFBX~> +Q2_'RIL7<3!87AO!$(t +Q2_'RIL7<3!87AO!$(t +Q2_'UIL7?4!87AO!,MRA!.4_F!V0[u?ijF1=SQ8(duFBX~> +QN%?/)_i"ks*6Qns8P%W!!Nc+s8W$2nc/ZuNW4M~> +QN%?/)_i"ks*6Qns8P%W!!Nc+s8W$2nc/ZuNW4M~> +QN%?/)_r(ls*Hcrs8RBD?j1-;s8W%6ra5e0!*K#(!6U<$J,~> +R/[WbFTIctXps[a)k-g,=8i1'!Ta:\r^cS[!2tnWJ,~> +R/[WbFTIctXps[a)k-g,=8i1'!Ta:\r^cS[!2tnWJ,~> +R/[WbFTRiuXpsdd)k-g,M>gld@I*snreLJ\!a#G)pg=*@NW4M~> +RK!cI2`9Fks7&d&s0W3us(VE3"K;A#rcmu6!1]&KJ,~> +RK!cI2`9Fks7&d's0W3us(VE3"K;A#rcmu6!1]&KJ,~> +RK!cI3AoXms7&d's0W4!s.]I""NCE@rhoa'!a>Y,pg=*=NW4M~> +Rf +Rf +Rf_.pg=*=NW4M~> +S,WQK!3,hp#'E?(h#Q-,r;ZgZrr3#[!W;uu!VcWpS;mQ!~> +S,WQK!3,hp#'E?(h#Q-,r;ZgZrr3#[!W;uu!VcWpS;mQ!~> +S,WQK!35nq#'E?(h#Q-IrEoVZrr32g@:3JI"]4u%!5a`qJ,~> +SGrZ:!06mT#4<.2s)C`Qr;[!7rVuoq$hF>uR#V,r~> +SGrZ:!06mT#4<.2s)LfRr;[!7rVuoo$hF>uR#V,r~> +SGrZ:!06mT#4<.2s)LfcrEotKrVuoqARJnM"]+o$!4n0iJ,~> +Sc8cQ"ekbl#k;a3!/g"JZ3("*"Tn)ks8FnI!!%k8s*t~> +Sc8cQ"ekbl#k;a3!/g"JZ3("*"Tn)ks8FnI!!%k8s*t~> +Sc8cQ"ekbl#k;a3!/g%K[:0&B$=WN*s8IRW?s="4pg=*.NW4M~> +Sc8bf/+NN:!rf/4rW!')o9CP4r;Zu4s8W(4o)Jc8NW4M~> +Sc8bf/+NN:!rf/4rW!')o9CP4r;Zu4s8W(4o)Jc8NW4M~> +Sc8bf/+NN:!rf25rW!')o9CShrEor\s8W(m?sm1H9))coViC_,~> +Sc8cM!9*kU!Td>Y!!HNq.tS0.!!J/Ys8JP[!!%8's*t~> +Sc8cM!9*kU!Td>Y!!HNq.tS0.!!J/Ys8JP[!!%8's*t~> +Sc8cM!9*kU!Td>Y!!HTs.tV@3?jX1>s8KlC?s=",pg=*"NW4M~> +SGrY->_?G2`!!HF(s8L^C!!%8's*t~> +SGrY->_?G2`!!HF(s8L^C!!%8's*t~> +SGrY-B`W`:>?jW+us8M(e?s==5pg=*"NW4M~> +SGrfX$FTp6bR4+F$jH-,@NtjQ*<#p;p]g?j!-F5#J,~> +SGrfX$FTp6bR4+F$jH-,@NtjQ*<#p;o`k$g!-F5#J,~> +SGrfY$FTp6bR4+F&-_Q0@Wc'dEW,q;pgdc:'Kl.u!1f,LJ,~> +S,WV[)t)Adp](a(!06.AQN.!hpAb0l,P1s9ArZh@~> +S,WV[)t)Adp](a(!06.AQN.!hpAb0l,P1s9ArZh@~> +S,WV[)t)Adp](m,!06.BVdNnAp](9mF^SDn4SW:aR>q5s~> +S,WT\6tm>0!"K#K0mWeN2,=2Pdf9@HB(Q''ArZh@~> +S,WT\6tm>0!"K#K0mWeN2,+&Ndf9@HB(Q''ArZh@~> +S,WT\6u!\9!"o;O140%Q23;3Rh>dNSR:'5D1\b>XR>q5s~> +Rf +Rf +Rf +Rf +Rf +RfXM2hOc~> +RK!7+qZ%*,2s();OU;'g,Oe9E'.a(^!V$?d!!#QLs*t~> +RK!7+qZ%*,2s()9OU;'g,Oe9F'.a(^!V$?d!!#QLs*t~> +RK!7+qZ%*,3T^;=OU;'g,k+BGCjZ0]"SQ;/.kCC&!/HR6J,~> +RK!mLY!G;<1eMI+'$'*[=Ka[hYs8 +RK!mLY!G;<1eMI+'$'*[=Ka[bWs8 +RK!mLY!G;<1eM[7)%?B*AWb),.s8?qF.k=j"?iYtAs*t~> +R/[KS"TSN'IfKG:$Msf0$M8=52<=f;r_N1e!(`+LJ,~> +R/[KS"TSN'IfKG:$Msf0$M8@62<=f;r_<%c!(`+LJ,~> +R/[KS"TSN'IfKG:$Msf4$M8@6Ja<@9rfCM<.pMgW!/HR6J,~> +Qi@;E!!.]Os*4Y@!!G7G$C%Lgrr@cG!!#EHs*t~> +Qi@;E!!.]Os*4Y@!!G7G$C%Lgrr@cG!!#EHs*t~> +Qi@;E!!.]Os*FhC!!G=L$Co*7rrf?01F$-"?iYV7s*t~> +QN%'g"m,c0p&G?BPp<7-s8KY'!!"s;s*t~> +QN%'g"m,c0p&G?BPp<7-s8KY'!!"s;s*t~> +QN%'g"m,c2p&GKFPpF?Ks8LJT1F$-"?iYJ3s*t~> +QN%&9@TdF>!<3'%\aV>*rr3#d!qlTo.ujRZ~> +QN%&9@TdF>!<3'%\aV>*rr3#d!qlTo.ujRZ~> +QN%&9@TmO@!<3'%\aVA+rr3,l@6>N6q-X2ENW4M~> +Q2^pM"TeE!rrEI5Jg9d%"m,dar=8N$!&9K5J,~> +Q2^pM"TeE!rrEI5Jg9d%"m,dar=8N$!%a-0J,~> +Q2^pN"TeE!rrER8JgBj*"m,darFnA6>PVY,F,g3M~> +Q2^lf!Vl^)!?8A!p8r]BfR!%a-0J,~> +Q2^lf!Vl^)!?8A!p8r]BfR!%a-0J,~> +Q2^lf!Vl^,!?8PVY,CQ8@E~> +PlCd$!W2rt!=`3(s8So/!+Omfci +PlCd$!W2rt!=`3(s8So/!+Omfci +PlCd(!W2rt!>&H,s8So/!+Omfci=!B6kil$?iXu%s*t~> +PQ(W"r;ciu"H*6Zh,F:Q"p)kq47W +PQ(W"r;ciu"H*6Zh,O@R"p)kq47W +PQ(W"r;[$&!fI$Xh,XFS#m&1t47W +PQ)!c'*&"5%D)T>Pm[Eh"Y9!SV>oWM!!*c2NrOV~> +PQ)!c'*&"5%D)T>Pm[Eh"Y9!SV>oWM!!*c0NrOV~> +PQ)!c'*&"5%D;`@Pm[Eh#V5ojT$X +P5bcl!<=(ps6aLp!!Sgf'CPZ(pAb13NW4M~> +P5bcl!<=(ps6aLp!!Sgf'CPZ%pAb13NW4M~> +P5bcl!<=(ps6aLp!!esh'CP[!"^Ce1!+q5jJ,~> +OoGUH!N#hB)u'C:%I#s'rZq4 +OoGUH!N#hB)u'C:%I#s'rZq4 +OoGUH!i>qC)u'C<%I-$(rb;U@q-X27NW4M~> +OT,EV'>=qL!!R5`!TdA`p](=.nW*X"~> +OT,EV'>=qL!!R5`!TdA`p](=.nW*X"~> +OT,EV'>=qL!![;a!p,7?>PVY-Aatf\J,~> +OT,CP<<`-trrE +OT,CP<<`-trrE +OT,CP<<`-t#lt)X@e!o:VZL*!?ijbGmZ. +O8f3&p](R#'?9,;_;t^3pAb3pmZ. +O8f3&p](R#'?9,;_;t^3pAb3pmZ. +O8f3&p](X%'?T>>_;ta4!*K#(!:GmIJ,~> +O8f7Z)uBX8!= +O8f7Z)uBX8!= +O8f7Z)uBX8!=EH#s8Rs,n:EMp=SQ8(fT,u^~> +NrK-r!W +NrK-r!W +NrK-r!W +NW/umrW!!#)peE]"nppRYmkgM!!*8fO8j_~> +NW/umrW!!#)peE]"nppRYmkgM!!*5eO8j_~> +NW/unrW!!#)peE]"o%!SYmm9!?iaU!O8j_~> +NW01X'*&&$nb<%cnP!pBp](=_rfI/1~> +NW01X'*&&$nb<%cnP!sCp](=_rfI/1~> +NW01X'*&&$nb<%cnP!tCpg=,NrfI/1~> +N;j!_!!2'OrrUjRL%bQJ7/`8JJ,~> +N;j!_!!2'OrrUjRL%bQJ7/`8JJ,~> +N;j!_!!;-PrrUjRWqTm%IJo<.J,~> +N;j!l/-WTVrrR162tm:Q,iOpdJ,~> +N;j!l/-WTVrrR472tm:Q+5rC_J,~> +N;j"/2[-barrR47H1t\IBBGBWJ,~> +NrK=]=9&_d'C,8j"6g/W!quZq"bi0?J,~> +NrK=[=9&_d'C,8j"6g/W!quZq"GN'>J,~> +NrK=]Q!e0_'CGJm"6p5`@J=.1?E04hJ,~> +O8f6m'E.t56r@RgrrSH1B(Z-),fc2MJ,~> +O8f6m'E.t56r@RgrrSH1B(Z-)+30ZHJ,~> +O8f70Ac?'=I8OVKrrSH2RIsqgB@rLLJ,~> +OoGI[B);Q0KaP*]rs85Bl2UeQ0nKf*!!,LHQiDR~> +OoGIYB);Q0KaP*]rs85Bl2UeQ0nKf*!!,LHQiDR~> +OoGI[RJU@nWX?$-rs85BlMpnR14j*0?ib] +P5bQk'D_\2#)O#Yqu6q2!#+f#s2"qao)JgmB'PfaJ,~> +P5bQk'D_\2#)O#Yqu6q2!#+f#s2"qao)JgmB'PfaJ,~> +P5bR*Abod:A +PQ(X!pAb7V;/-"/$gAl9l>[9ds7'6+*:a(2"a'1%s*t~> +PQ(X!pAb7V;/-"/$gAl9l>d?es7'6+*:a(2"Ea($s*t~> +PQ(X!pL"&V;/6(0$gJu;m;`Zhs7'9-EUmK=?CgMRs*t~> +Q2^pQB`[o-!egfgrr3Af!9sNt\HUO`i;e`(!!3I\rLNt=~> +Q2^lqC%VH-Ka#$drsRogl2SK."kEY3!/^1F!XXSZSc=3~> +Q2^p,C0pUA!icF7rr3Af!:'Tu\HUO`i;g4R?ijf;rLNt=~> +Qi@3\gt63Pp&G^5MA,7Ss6p3B`W-"h-gq"S90;SB!Y^FhTDsE~> +Qi@3F2?5KGp&G^5MA,7Ss6p3B`W-"h-gq"T90;SB!Y^FhTDsE~> +Qi@3M?SbYtp0\MEN>(UWs6p3B`W-"h.IR4V9ni%D!bJ_:TDsE~> +R/[?Ub1PA2/+ilT4'Q1is7'g.!0I8(Q!=:R%?pq^!!3Oqrh9@B~> +R/[>S#64dE/+ilT4'Q1is7'g.!0I8(Q!=:R%?pq^!!3Oqrh9@B~> +R/[>e3AWLOHhCbZKjA0`s7'j/!0I8(Q!OFW%@gkp?ijoNrh9@B~> +Rf +RfpSG%HRR?q=#VOs-am=li7'b[\EeP~> +RfpSG%HRR?q=#YPs-amplsKk5b+eod~> +S,WNBf)4/$jD"5d&du#GZ17?aL!oV_K' +S,WNB!W +S,WNB2#T331ioD`?kR%a!3u(a +Sc8c\H"$R%!/9tD&>9G+fuaZimK!;jcN(u/%>F3M"s!UAs6;>NVZ2/~> +Sc8c\GnBlR!Wad)nc05p$;T9s$L[<_!*RVJ`lnmGmJmG2rVuo_/A%eZJ,~> +Sc8c\HP-03!]3lVnmE$&$;T9s$L[<`!*[\K`lnmlmU-6=rVuobF47#dJ,~> +T)So/,<+rcfE']nnc04/M/<9=/"rX:RK2$$'@daemJmLnjT#8Y)uqP +T)Sr0,<(hfr;Zm#(RXan&.=>3!I62hT`CM]fo?`r'1hNk#Qa#ds8 +T)Sr0,WV_YrA+L47_8.u&7r1b!dcGkT`CM]fo?`r'8Q!`#\!'!s8?qFCYbrhJ,~> +T`52\D#o[do_[8Af=(/K&0.'[PnWbc!9O7G[?ZcOW$D9A!$(S1$(1bmrceDC!CYV@s*t~> +T`55]D#o[dh?!NS!=?4(!"^-;Fd3X3V#]WWlEun;WMh'@!!"#1!!J\hs8I9B!!,L@WrIS~> +T`55`D$#aejYZlk!BSBm?k@=hFd3X3V#]WWmBr4>Wl9,[?iY3 +UAkJgYnL!ns8VljfDsUm!##j>/!]qpp44pAq^CjY&s:9"Af'trk&+/!WbjNXT*e~> +UAkMhYnL!ns8V`nqu?a!b3f6C%]1bAq<@U)$4Spc,6;D1"^%pLoDf"gs8W)1qu?agiN3'0~> +UAkMhYnL!ns8VjOr%e@2h!SP`Bt5aZq +U]1JY=UM"qrr3#sfDF2#g$JbF!M^=rs+2uJnG_q_h-LQ-0`W_\o`,.*r;Zfj#5eH&!DhCOs*t~> +U]1JY=UM"qrr3#q$2ac(!Qsd0#Q^\6mf.knb4,E##Mi\q_D)$@M=giP%f65*p'1Ep!Wc$KY5a"~> +U]1JY=ph+rrr3#s3rCc71u.J+#[s_Hmf.kob4,E##Mi\q`\INEZh7]0C&J#2pLO//!KcBFs*t~> +V>g\fM?.GUr;QfsgABM'm0;qX"aDQ';ZZCbrs/.l)]QWoIKoHF"PNhTr]BrV!WlH^YlB4~> +V>g\fM?.GUr;Qfs(]477!P&F%!!RTtZ;^koqu6omV&LAj!.G.F!!M!Ts8G+V!!34'iNW?4~> +V>g\fM?7PXr;Qfs7f5%D1rs4p?j3GY[8d:tqu6omV&LAn!.JJO?j,Qjs8I`K?ijbnk-4l9~> +VZ-bC0djj6rrCjOfE(@Lm/R8&_3H87rr3>pmf2BX"b)=/!LWKZ!/^^T!/^IN!WcotZN#F~> +VZ-bC0djj6rr=tT!!31b%da6!'>]qYnG`FpnF$><@Kh4>~> +VZ-bC1+C6=rr?F(1BKD3C$f:2Cr)A^nG`FpnF$><@Kh4 +W;d"gE<1[\q#:?Tqq(r8,OGI5!oYB'rr3>B'*2;E>I?=5Y&s78"?ZV_s4R)G!X3<&[/YX~> +W;d"gEWLd]q#:=jqu?d!PU#Pq!s7F+WW)o)_@lrS$ +W;d"gEWLd]q#:>8r%eC2VKM96"(C=;WrE#*`Y/AY$=1%s,d*^0?j)2_s8V0R?ijZ/lEpSA~> +WW*(2)arNUrrD<\fE(4uli7U6%IjDt\H&)B!/c@.I[tTho)Jpuq#CBm'D2>,"a'% +WW*(2)arNUrr@':!!31@46uqY_@?#7s1&,ubQ*NP!.LJ]$hF?%#5/#rr=ei(!X*W1[f:j~> +WW*(2)arNUrrA&V1BKCmL$W1Y`XVG;s1&,ubQ*NP!.LJ]Ab0:5AGH3)rG;.7!a_Gb[f:j~> +X8`=eAd+Xnp&>$Xqq(r1=R?)#!MqUBs6qass8UmT[GCk?;\S^%"NUQBrata%!XEuJ\Gq'~> +X8`=eAd+Xnp&>#Vqu?d!:g!)b&HS^anc/)5L&_2/!4CY_MGt8[!!L@Bs8HX%!!3CMqRHQU~> +X8`=fAd+Xnp&>#hr%eC2F-Z-#&RhLnnc/)6L&_2/!4CY_NE'Q\?j,-^s8JGX?ijf8r4)cW~> +XT&C-'34/crrDH`fE'cPli7Td2t?FL)m95@mJtT5s-c=qnc/f;s8W(snGiUsM>b$cJ,~> +XT&C-'34/crrA8\!!30ZGjGDARlBm-\f7gPs6]m5s8SNU*:a(4GlRgCW:9ih$&SVls*t~> +XT&C-'34/crrB"q1BKC?VsIe&SN661]Gn$Rs6]m5s8SNUC[tj9VuQer`UR=;@^H$Es*t~> +Y5\Xh@LAh!o)A^^qq(r'MO +Y5\Xh@LAh!o)A^6qu?d"(Q%JY&=b-$;%nBYea>4,jo>@'AfC4?"Y9TPs7$3\!!3h(rk/8]~> +Y5\Xi@LAh!o)A^?r%eC37^MGh&?@85;%nBYea>:.jo>@'AnLUA"ag7Ks7Tpk?ijoVrk/8]~> +YQ"^4'3XGdrrD]gfE'U&m/RJTW-JD\W?[N*!$hLC"7[V=%e9T'"7cEkr[[C:!ZJ$:^Ai]~> +YQ"^4'3XGdrrCpQ!!*D)m/RJTW-JD\W?[N*!$hLC"7[V=%e9T'"7cEkr[[C:!ZJ$:^Ai]~> +YQ"^4'3aMerrD0X1BBPUm9g9T`HqW&W[*],!$qRD"7[Y>C%>X8@eTj%rd4'@!bTFN^Ai]~> +Z2XspD$?L#n,EC_qq(r&a6`j6eGoTW@Khnajk]G*rr])2SK./""K;A#rcmc0!?.oOs*t~> +Z2XspD$?L#n,EF]!rN$!"NTm0$Io+V[:0<%n`ATrrr3(s':g-5!!K8#s8I90!!+":^]/f~> +Z2XspD$?L#n,EF`2>f622V@D)$Io+V[:0<%n`ATrrr3(s)kCd7?j+IKs8Jq_?ialY^]/f~> +ZMt$@)bK#UrrN&Lqq(o%mJmHY!4Cbh?KM%`"JH!m'8>rV!,;H4!6aX-!?/Sds*t~> +ZMt$@)bK#UrrMs&qu?`ub3f66QiOPQ"^^f#~> +ZMt$@)bK#UrrN$Yr%e@1h!SPS\cB.s"^^f#~> +[/U9uD$?3pm/I+cgABM'm02qY#Zj(f!(9h0md^;V#OnDemf-m.*:a(5*<#p;q$ZEe!A):/s*t~> +[/U9uD$?3pm/I+c(]477!P&C&!!lXf!!#DeFmef!rs/%e!:Kl!@N=q="W[L@s7m&e!!+Xk_uG5~> +[/U9uD$?3pm/I+c7f5%D1rs.p?jMTN!!#DeFmef!rs/%e!:Kl!@VbOB"`aM@s7p6j?ib&q_uG5~> +[Jp?j4$2Ecs8(@Km0i=^':a'Ss5cWUBo7pn)]Q'^s5 +[Jp?j4$2Ecrr=PH!!31b$gn!.S8u7Aj[9GiMN2fu)mTGCi;f2Fo)JppjT#8Z:$2KW1WRK7J,~> +[Jp?j4$2Ecrr?$r1BKD3AaWq>_K+-*j[9GjMN2fu)mTGCi;fcao3_`1li7"aOQU!PCtQ`,J,~> +[f6Hk'5R+$rrD-WfE(:Xm/Rh1$iL%o`c5!UB"@@0c]8$;As@NDoDf#]s8W(cjo>JDM9![:J,~> +[f6Hk'5R+$rr>mn!!31c*:3_?%L`.5nA]KK;.dB,s3H`*AnI9P"nVctR/d3cR-"AMjGCpts*t~> +[f6Hk'5m='rr@-<1BKD1EU@-JBk@5BnA]KK;.dB,s3H`*AnIR2@e=%2])Vg0]&mB%la,6as*t~> +\,QO')hR5P!9sC5!U2K.!##Cos8W(@Ibcf&s4mYTV;2-3)lE6-!*K7#!TX:F!!S5Ys7&%rao?k~> +\,QO')hR5P!-.o:!Wd9uli7\"jT#8ZFai.&FoU7t!2\KONZ4kf!!$.#rrM0]kPtdCrr;LId`MN>~> +\,QO()hR5P!0-n4!]5mflsLK8li7"aFai.(FoU7t!2\KONZ5P$?iZJkrrMFok[4S#rr;\;h9#\I~> +\,QNk!:K"L!:0O7!T[AK!#2C3s6s$Gs4n$mD#eDQj^r;%!4)n'!!Nl1s8W$;kPti +\,QNk!:K"L!0mB]!Wc,"lMqWts8VRgMZ;K>\SV=`!9Ig.T`DD'p&G7+qZ$To*9[A-/,oSKj8qm2 +bQ!(~> +\,QNk!:K"L!2fZM!]4t`lX1FGs8VRgMZ;K>\SV=`!9Ig1T`Dc:p0\&S2 +bQ!(~> +\,QNk!Uf+M!:B[9!Shqc!#0\Xs8?D2nc--#j]_`\p +\,QNk!Uf+M!0d<\!Wb3(lMqWDs8W%,>Oha(!TdMcq=`, +\,QNk!q,4N!3#fO!]48^lX1F)s8W%,?1Is*!TdSeq=i2=m@a]`oj@p`s8W(mk[4^*li7"aJRDlB +k0 +\,QNk!Uf+M!:B[9!SWCr!!#Rhrt4?"\c;\`)s-Ab +\,QNk!Uf+M!4i"-!Wa*olMpoUrr3Sl$G$3:KcB.=s&Hm'IfF+W8G3#dM?!VT[c[VnL&_2PR/R'e +!EeF/s*t~> +\,QNk!q,4N!6G'o!]3BQlX0^Jrr3Sl$G$3:KcB.@s&Hm'IfF.XL\>*YZiC()b3*.8WrN+u])?"; +Q0ZcrJ,~> +\,QNk!Uf+M!;-0@!S>aX%!!'_BmckIB#58*$49#9[p'0^\"XF!Gs7$9k +!!3=GlI#W^~> +\,QNk!Uf+M!8dSQ!=>:^!#?7Hs8W(U,Oka5>>aX%!!'_BmckIB#58*$49#9[p'0^\"XF!Gs7$9k +!!3:FlI#W^~> +\,QNk!q,4N!9O)6!BS*`?l!SWs8W(X,k1j6>uBm(!!'_Bmd1[RAG9I8L&V,PpLNJq"a0eDs7Tq# +?ijZ*mEtra~> +\,QNk!Uf+M!;QHD!SP*W!!!9"!#>Y+s8W(T1P5Z,mO+h?6i_KeWW041L%bQN#5J5ur\`m>"Td +\,QNk!Uf+M!VHNl!!*57oDejrq#D03nc/XgM)0b`s6_82%7C2A0rb2X$AJ3S"U=Z"s8Fn>!!NDV +s8W'hqZ$[#FR%?TJ,~> +\,QNk!q,4N!VePM1BBD_oO%Z.q-XtHpAb0lZSd@7s6_>4%7C2C191AZ$EEi."_@E.s8IT5?j1!" +s8W(Rqd9J3SaFo+J,~> +\,QNk!Uf+M!W:RHfDsV#!!WH(!$mrb!Vl^2a8c2=M3e8%s8Um^kmEINEFSG;Bhh4n!!L@Bs8Il< +!!IQHs8Jtm!!3I\n^[Yi~> +\,QNk!Uf+M!W!-#!!*/Dq#CU"!!"+.f`CmK( +\,QNk!q,4N!W5"V1BBAgp0[r7]&39j(>/Zerj/L(iW&r6$L.tYs)MT +\,QNk!Uf+M!WLgMfE(@Aq>^^$8B_&5rY,)-(Q&1lrlZNu>Ohan_$.+;s%+s1s6:PU$hs]%GlI^C +g#i>=*<#p;p'19l! +\,QNk!Uf+M!WEo5!!323"8W!%!_CZ;s8E]-!#LLls8L=hAm=g*s1nlDpA[]=lMp,gK+%GS!-nMC +!86N8"W[L@s7QZl!!*7Wf)L7~> +\,QNk!q,4N!WGRd1BKDS@esI:@>EhAs8HU*?l-0Ls8Lu"AmOs,s1nlDp]!f?mJlPmMe2Zk!2ohr +!9E +\,QNk!Uf(LqUbi9$iBu+'6rd>rr>Uc!!$.#rrhioGQkq_rrqZfEA8-krr3&6!JU:K"Y9TPs83Pn +!!M!Ts8H-o!!#gHs*t~> +\,QNk!Uf(L!%RmH!Wfh>qu?d3Gj5/+!(cnc!*K7#"RuS="i:3<"mQ).0b`gNrrTn8L%kWO/,oSK +q@i#l"PNhTr`Jjo!);)FJ,~> +\,QNk!q,1M!*&kP!]7u0r*TS;Vs=3[!/LAX!1!Q`"SQ<&"i:3<"ml;11)&sPrrTn9Wq]s*HiF'F +r+tP("Q]U_rg!1b!0Gh4J,~> +\,QNk!Uf(L!9F%0#O<$'!!+g_rqcWpM>7,X,Q@`Cr>Z2s/+EQ<"5QOToDJUiEC +\,QNk!Uf(L!)WRn#Q^/'!!!$N[f6.'!/^LO#p]HLs8 +\,QNk!q,1M!-A&o!]6cjra5eKb5V8;!42K/$$H7Is8?qKJh-?irr_(K?M"*p!cg\jq-XA8pAb0l +Q02NXVuQerb4T-B_V"m=~> +\,QNk!Uf(L!9sC5"I];oB%cqY!7LZC#mU,'s8GdoF +\,QNk!Uf(L!-.o:"T]MA"_QH^rrCLC!!rl's8W'm!-BHNrVlofnb`=gmN[;hq#CQ+s8W(sk5YZ* +rVuon%e]l&R+VFh~> +\,QNk!q,1M!0-n4"Z0!T@Z0=ArrCmN?jUB +\,QNk!Uf(L!9sC5!jq(Wp&>'\#Pe?+g&M*OK`G_q$L.6`#0$ZN)uos>r;Zh3rr3#d"6TXebQ%VA +C%_N,7+hNi~> +\,QNk!Uf(L!-.u<"T\T'/*63lrrMNmq#C`Ss8W(P!+rbKl1P&\`W6Dd!!!&u!!$a4rrMKhk5YY2 +s8W(4p&G(\f`-I~> +\,QNk!q,1M!0-t6"Z/"k;s!H?rrMOsq-XNis8W(u@%"P4lLk/Z`W6E^qHs;trr3#i@cq,%iW&rW +U@qspIG"RM~> +\,QNk!Uf(L!:0X:!nPflnc&SJq#C_ks8W)1!3#EbEVBD;o6pZ>d`4l[r;[!@rVuos/*?m4GlI^C +a7]K8'CG2Qg])d~> +\,QNk!Uf(L!0mH_!Wc9Enc&SJq#C_ks8W)1!3#EbEq]Md`4l[r;[!@rVuos/*?m4GlI^C +a7]K8'=kZ +\,QNk!q,1M!2f`O!]4iGnc&T7q-XNGs8W)I@)_Y5Eq]Mdb'=`rEoeKrVuosHfnc:VuH\r +f_/\TA]Vrig])d~> +\,QNk!Uf.N#4Sd-fZM\.n,EB4q#CD/rr32i!oa18!872J!r\AnrW!BHrVti5)?9a=jT#8ZGio&1 +'E%n1r=er+"T\TD*F\$as*t~> +\,QNk!Uf.N#4ScN!!d6'n,EB4q#CD/rr32i!oa18!872J!r\AnrW!BHrVti5)?9a=jT#8ZGio&1 +'Dhb/r=ef'!>&)_s*t~> +\,QNk!q,7O#4Scp1HC?[n,EBcq-X2srr32n@HRUG!872J!r\AnrW!BHrVu#dAmf"Tli7"aVrqFk +D#F>5rG;7:"^Y:2!"j;-s*t~> +\,QNk!Uf7Q#P$o)',uhrnEp5Ua8#]82?*UVr?M=A"Ed<#K"Cs]!rf/DqZ$V5rVlu?,nrW("$ +!!L@Bs8I9 +\,QNk!Uf7Q#P$o)',uh>nEp5Ua8#]82?*UVr?M=A"Ed<#K"Cs]!rf/DqZ$V5rVlu? +\,QNk!q,@R#P$o)',uhMnEp5Uf_JnTJc>ZMrH8,>"Ed<$K"V*_!rf2FqZ$V5rVluPM-e'urW(U5 +?j,-^s8Jqk?j9qA2@0?`NSXVb~> +\,QNk!:K4R#4]i?!)0unlMgna$i0i,$iL&)rl>$<#jMl(_$/s#\hj-^! +\,QNk!:K4R#4]i?!)0unlMgna$i0i,$i9o'rl>$<#jMl(_$/s#\hj-^! +\,QNk!:K4R#4]iA!)1&plMgnaAbod +\,QNk!6Xa0#4@p1$?>%pkPkNrq>^["jT#8Za8Q#ATc`!~> +\,QNk!6Xa0#4@p1$?G+qkPkNrq>^["jT#8Za8Q#ATc +\,QNk!6Xa0#4@p1$?G+qkPkOVqHsJ8li7"af_tgRTc`!~> +\,QR"!!'Ftrs&#LE=+4emc=BJa8#]<[f??olM^_bnN2#Jo`,$o!+u$+"8nZ>!U'Ld]Dqp1L%kWJ +"9.Wf!8---J,~> +\,QR"!!'Ftrs&#LEXF=fmc=BJa8#]<[f??olM^_bnN2#Jo`,$o!+u$+"8\N +\,QR"!!'Ftrs&#LEXF=fmc=BJf_JnXb5_J3mJ[%enN2)Lo`,$o!+u$+!rToWk?nGAs8W(upg=)$ +rWrT*<8IS)~> +\,QTq!':4ap&>6c\Ocg.bjj]m!WF)8!!@KGrjM_("4@2*%JKi*!>B<#nFlk`fk(QU!!R!6s8V-] +q#CR!@:9.EmG7em~> +\,QTq!':4ap&>6c\Ocg.bjj]m!WF)8!!@KGrjM_("4@2*%JKi*!>B<#nFlk`fk(QU!!R!6s8V-] +q#CR!&.egQPMQ7h~> +\,QTr!':4ap&>6c\Ocg.bjj]m!WHm2?j!>,rlY-<"4@2*%JKi*!?5l+nFlk`jI'KB?j2tts8VCn +q-XA&&J5!TW87K(~> +\,QWS'AWWh\bZ71n`boM'8#?9hu<\5q>^Ugrr'J*rrR%9ZM=M#!^Ko2>I4T/n&1kq:u"#~> +\,QWS'AWWh\bZ71n`boM'8#?9hu<\5q>^Ugrr'J*rrR%:ZM=M#!^Ko2>I4T":u+Mq:u"#~> +\,QWS)r1Jq\bZ71n`kuN'8#?9hu<\_qHsD\rr(=BrrR%;[J9e,! +\,QYp9YqI3!2]Vn#4^,R!CX3^h#@EK#Q"K'2?*.EqYpZ^$Fs%3!<3'#)nu=O!lb5do)Ad>=9\*m +"Le@1re^FN!a>6ggAc[~> +\,QYp9YqI3!2]Vn#4^,R!CX3^h#@EK#Q"K'2?*.EqYpZ^$Fs%3!<3'#)nu=O!lb5do)Ad>=9\*m +"Le@1re^FN!a=I;gAc[~> +\,QYp9Z@a7!2]Vn#4^,R!^s<_h#@EL@f'O8Jc>BAqYpZ_$Fs%3!<3'#)nu=O!m(Ggo)AdIQ"'/h +"NpcErj2E.!dj%jgAc[~> +\Gm02ApL47n[S[_s8VM`2$IjMn_*pBL%t]K=SVn'OX&fg!!!$#':&CmrrfS?!!&kcrrVnN*:Nq3 +=T8@#m0!1b!4LP[J,~> +\Gm02ApL47n[S[_s8VM`2$IjMn_*pBL%t]K=SVn'OX&fg!!!$#':&CmrrfS?!!&kcrrVnN*:Nq3 +=T8@#m0!1b!4LP[J,~> +\Gm02Ap^@9n[S^`s8VM`2$IjMn_*pBWqg$&Q2(@dOX/lh!!!$#':&CmrrfS?!!&kcrrVr$C[b^8 +Q2^g`nm_H'!6WsoJ,~> +\Gm'//$X52nc-`=Tm7(lQ0Qs#!Vd'"!!*>pq#:Wh.uJoY!=F;Jrr3#hB)M]1$LmNa!n(Zco)Jq% +pAb0l48T!Y!T_o5J,~> +\Gm'//$X52nc-`=Tm7(lQ0Qs#!VHit!!*>pq#:Wh.uJoY!=F;Jrr3#hB)M]1$LmNa!n(Zco)Jq% +pAb0l48T!Y!T_o5J,~> +\Gm'//$X53nc-`=TmI4oQ0m0&!Vg7'?iaa1q#:Wh.uJoY!=F;Jrr3#hB)M]1$LmNa!o98Ro3_`5 +p](9mL&,0Wle)5f~> +\Gl^$"j]r+rr3,S%9::8e,KZ?!$_jV+omJnrrp4BjT,hLrr3&kJdVAT!(?5S"8nZ>!VHEqW;lns +SGN9d*7t4@~> +\Gl^$"j]r+rr3,S%9::8e,KZ?!$_jV2?8U-rrp4BjT,hLrr3&kJdVAT!(?5S"8\N +\Gl^$"j]r+rr3,S%9:FfDg@~> +\Gl]j"lUE:rVloWn^.:>B.OiM!*&Xk$1V>2>:YF-rgOSr!!%oBrrq(t$NL/-q>^[prr<#g#5eH$ +C"NB8~> +\Gl]j"lUE:rVloWn^.:>HRosa!+>L"$1V>2>:YF-rgOSr!!%oBrrq(t$NL/-q>^[nrr<#g#5eH$ +C"NB8~> +\Gl]j"lUE:rVloWn^.:>X>_^i!0QsS$1V>2>q:X/rga_t!!&#ErrV8PAbTR9OT,:[p14)/!2A*F +J,~> +\Gl]B-fG*fb5V[&!&c_855b*R#3>m&`W^['pAb0l:](1mbLccE~> +\Gl]B-fG*fb5V[&!&lh:@f#ct#3>m&`W^['pAb0l:&Ftkce&2I~> +\Gl]B.H(?ib5V[P!)-&dL&CWD#3>p+`WEOsp&G*siTgFFrQ9OsqHsJ;p](9mOSiJdiRe*[~> +\Gl\\@aYGLb5VY(/cZ%kX7Q>nKe)Y)p&P'm!6XL)"6l0t!W2p#SH&Wg[f$1,$iS]WJ,~> +\Gl\\@aYGLb5VY(>Q=pD_Xmd0Ke)Y)p&P'm!6XL)"6l0t!W2p#SH&Wg[f$1,$iS]WJ,~> +\Gl\\@aYGLb5VY-B`J;gg@P=HKe)Y)p&P'm!6XL)!p[@>qd9QDs8W)@rEoY;rR_("~> +\c2j';i8.2n]Ce5b +\c2j' +\c2j' +\c2j')o7D3n]:_2q +\c2j')o7D3n]:_2q +\c2j')o7D3n]:_2q==%T"1\d#'D__/! +\c2ft!SLq2[/U6u:3!H6!!<6/MZ!JR!mLb^i;Wr=M3u?WrVupKec1.~> +\c2ft!SLq2[/U6u:3*N7!!<6/MYd>P!mLb^i;Wr=M3u?WrVupKec1.~> +\c2g"!SLq2[/U6u:3*N7!!<6/MZ!JR!mLb^i;WrBZb"f`ra5_Qec1.~> +\c2f_%H0+BZi:-\!8U'B!<3'#; +\c2f_%H0+BZi:-\!8U'B!<3'#; +\c2f_%H01EZi:-\!8U'B!<3'#; +\c2f/45gP"ZMt/L;:tsM!@P&KrrLY +\c2f/45gP"ZMt/M;:tsM!@P&KrrLY +\c2f/45gP"ZMt/M;:u!N!@b2MrrLY +\c;\L!ndS=ZMt-n%C54!H2[aB!V(1+!!+%DY5a"~> +\c;\M!ndS=ZMt-n%C54!H2[aB!V(4,!!+%DY5a"~> +\c;\M!ndS@ZMt-o%CPI%Hi +])Ms(1SN,.nZi*#RN([[,Oka*JdV8Q!!TP*J,~> +])Ms(1SN,.nZi*#RN([[,Oka*JdV8Q!!TP*J,~> +])Ms(25/>0nZi*#RN([[,k1j+JdV8Q!!TP*J,~> +])MqV!8X>:nZi*!nMbpd1ObT&o`,!&YQ'+~> +])MqV!8X>:nZi*!nMbpd1ObT&o`,!&YQ'+~> +])MqV!8X>:nZi*!nMu'f21Cf(o`,!&YQ'+~> +]Di) +]Di) +]Di) +^&J?:Bfk;RnO]"KrrQn;eb0"C!<[>H$K\MlJ,~> +^&J?:Bfk;RnO]"KrrQn;eb0"C!<[AI$K\MlJ,~> +^&J?:C-1DSnO]"KrrQq=eb/tH! +^&J>r!9*tXf`9$prr_Kh^305OrrE +^&J>r!9*tXf`9$prr_Kh^305OrrE +^&J>r!9*tXf`9$prr_Ni^305OrrE +^&J=k:%A8Z'/THdrr\9+knEpo!s&RWr;Q]tkmaVss*t~> +^&J=k:%A8Z'/THdrr\9+knEpo!s&RWqYpKrkmaVss*t~> +^&J=k:%A8Z'/fTfrr\9,l4a$p!s&RWr;Q]tl4'bus*t~> +^AeH.4.ZED;+^D]rr_a@MP^7OrrE.4iVWWVW=A*ts*t~> +^AeH.4.ZED;+^D]rr_a@MP^7OrrE.4iVWWVW=A*ts*t~> +^AeH.4.ZED;+^D]rr_a@MP^7O!s&I8iVWWVWX\7!s*t~> +^AeE,$JGHe%IgCt#f-]+3rf9^7*k]/!o4$jZN#F~> +^AeE,$JGHe%IgCt#f-]+3rf9^7*k]/!o4$jZN#F~> +^AeE,$JGHe%IgCt#f-]+3rf9^7*k]/!o4$jZN#F~> +^AeE,"jc_.2=RXG#4Z#3i;`nLq#:Dh!/7]XJ,~> +^AeE,"jc_.2=RXG#4Z#3i;`nLq#:Dh!/7]XJ,~> +^AeE,"jc_02=RXG#4Z#3i;`nLq#:Dh!/7]XJ,~> +^AeE&)ZX_l!5>H4"m#d--OR9WrrSVhl*12<~> +^AeE&)ZX_l!5>H4"m#d--OR9WrrSVhl*12<~> +^AeE))ZX_l!5>H4"m#g..13KYrrSVhlEL;=~> +]`/.aECg-1n>ZEkJi2YY)t*Y("6sJ-_6 +]`/.aE_-62n>ZEkJi2YY)t*Y("6sJ-_6 +]`/.aE_-62n>ZEkJi2YY)t*Y("79\0_6 +])Vg#!84=N"n3J"nMbpqrr^+W;<=t\J,~> +])Vg#!84=N"n3J"nMbpqrr^+W;<=t\J,~> +])Vg#!84=N"n3J"nMu'srr^7[;<=t\J,~> +JcFR+$aC0*dK&,'n8SJhnZDhA~> +JcFR+$aC0*dK&,'n8\PinZDhA~> +JcFR+$aC0+dK&,'n8\SjnZDhA~> +JcFR+$1V#0s(tWD, +JcFR+$1V#0s(tWD, +JcFR+$1V#1s(tWD,Wjh_s*t~> +JcFO*#N5^"fdd)\n>cM=~> +JcFO*#N5^"fdd)\n>cM=~> +JcFO*#N5a#fdd,]n>cM=~> +JcFL)"I/re>N)O\J,~> +JcFL)"I/re>N)O\J,~> +JcFL)"I/re?/_a^J,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/vendor/github.com/llgcode/ps/samples/colorcir.ps b/vendor/github.com/llgcode/ps/samples/colorcir.ps new file mode 100644 index 0000000..5138a09 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/colorcir.ps @@ -0,0 +1,125 @@ +%! +%/colorcirsave save def % prevent left over effects + +gsave +/Times-Roman findfont 24 scalefont setfont +72 72 translate 0 0 moveto 1 0 0 setrgbcolor (Red) show +72 0 translate 0 0 moveto 0 1 0 setrgbcolor (Green) show +72 0 translate 0 0 moveto 0 0 1 setrgbcolor (Blue) show +72 0 translate 0 0 moveto 1 1 0 setrgbcolor (Yellow) show +72 0 translate 0 0 moveto 1 0 1 setrgbcolor (Pink) show +72 0 translate 0 0 moveto 0 1 1 setrgbcolor (Cyan) show +72 0 translate 0 0 moveto 0.9 0.9 0.9 setrgbcolor ('White') show +grestore + +0.0 setlinewidth + +/length 0.1 def +/width 0.02 def +/hsvcircle { +gsave + /h 0.0 def + 0 4 360 { + pop + gsave + 0.5 0.0 translate + + newpath + 0.0 0.0 moveto + length 0.0 lineto + length width lineto + 0.0 width lineto + closepath + h 1.0 1.0 sethsbcolor + fill + + %newpath + %0.0 0.0 moveto + %length 0.0 lineto + %length width lineto + %0.0 width lineto + %closepath + %0.0 setgray + %stroke + + grestore + /h h 4 360 div add def + 4 rotate + } for +grestore +} def + +/graycircle { +gsave + /h -1.0 def + 0 4 360 { + pop + gsave + 0.5 0.0 translate + + newpath + 0.0 0.0 moveto + length 0.0 lineto + length width lineto + 0.0 width lineto + closepath + + h abs setgray + fill + + %newpath + %0.0 0.0 moveto + %length 0.0 lineto + %length width lineto + %0.0 width lineto + %closepath + %0.0 setgray + %stroke + grestore + + /h h 8 360 div add def + 4 rotate + } for +grestore +} def + +0.0 setlinewidth +0.0 setgray +300 400 translate +500 500 scale + +30 rotate +1.0 0.7 scale +-30 rotate + +hsvcircle +0.8 0.8 scale +graycircle +0.8 0.8 scale +hsvcircle +0.8 0.8 scale +graycircle +0.8 0.8 scale +hsvcircle +0.8 0.8 scale +graycircle +0.8 0.8 scale +hsvcircle +0.8 0.8 scale +graycircle +0.8 0.8 scale +hsvcircle +0.8 0.8 scale +graycircle +0.8 0.8 scale +hsvcircle +0.8 0.8 scale +graycircle +0.8 0.8 scale +hsvcircle +0.8 0.8 scale +graycircle + +showpage +%clear cleardictstack +%colorcirsave restore diff --git a/vendor/github.com/llgcode/ps/samples/doretree.ps b/vendor/github.com/llgcode/ps/samples/doretree.ps new file mode 100644 index 0000000..9451161 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/doretree.ps @@ -0,0 +1,2485 @@ +%!PS-Adobe-1.0 +%%Title: dore.ps +%%Creator: Dore' Postscript Device Driver +%%For: Jesse Don Hickson III +%%CreationDate: Sat Apr 11 18:26:44 1998 +%%Pages: (atend) +%%DocumentFonts: +%%BoundingBox: 0 0 612 612 +%%EndComments +%/doretreesave save def % prevent left over effects +% The author, Jesse Don Hickson III, hereby places this file into +% the public domain on this day 23 Feb 2000. +/Dore 20 dict def +Dore begin +/Prgb { moveto -1 -1 rmoveto 2 0 rlineto + 0 2 rlineto -2 0 rlineto + closepath setrgbcolor fill } def +/Lrgb { moveto lineto setrgbcolor stroke } def +/Trgb { moveto lineto lineto closepath + setrgbcolor fill } def +/BGrgb { dup 3 -1 roll dup 5 -1 roll dup + 7 -1 roll dup 3 -1 roll moveto + 6 -1 roll lineto exch 4 -1 roll + lineto lineto closepath + setrgbcolor + fill } def +/Pgray { moveto -1 -1 rmoveto 2 0 rlineto + 0 2 rlineto -2 0 rlineto + closepath setgray fill } def +/Lgray { moveto lineto setgray stroke } def +/Tgray { moveto lineto lineto closepath + setgray fill } def +/BGgray { dup 3 -1 roll dup 5 -1 roll dup + 7 -1 roll dup 3 -1 roll moveto + 6 -1 roll lineto exch 4 -1 roll + lineto lineto closepath setgray + fill } def +/BDR { dup 3 -1 roll dup 5 -1 roll dup + 7 -1 roll dup 3 -1 roll moveto + 6 -1 roll lineto exch 4 -1 roll + lineto lineto closepath + setgray 40 setlinewidth + stroke } def +%%EndProlog +%%Page: 1 1 + +gsave +0.400000 0.400000 0.400000 0 0 612 612 BGrgb + +0.25028 0.20022 0.15028 66 73 545 73 478 350 Trgb +0.25028 0.20022 0.15028 66 73 478 350 133 350 Trgb +0.312849 0.250279 0.312849 69 61 542 61 545 73 Trgb +0.312849 0.250279 0.312849 69 61 545 73 66 73 Trgb + +0.000000 0.699172 0.209751 308 254 305 260 302 254 Trgb +0.000000 0.699172 0.209751 305 260 299 260 302 254 Trgb +0.000000 0.699172 0.209751 299 260 296 255 302 254 Trgb +0.000000 0.699172 0.209751 296 255 299 249 302 254 Trgb +0.000000 0.699172 0.209751 299 249 305 249 302 254 Trgb +0.000000 0.699172 0.209751 305 249 308 254 302 254 Trgb +0.000000 0.000000 0.000000 303 225 299 249 296 255 Trgb +0.000000 0.000000 0.000000 303 225 296 255 300 230 Trgb +0.000000 0.006800 0.002040 308 225 305 249 299 249 Trgb +0.000000 0.003400 0.001020 308 225 299 249 303 225 Trgb +0.000000 0.025554 0.007666 311 230 308 254 305 249 Trgb +0.000000 0.017877 0.005363 311 230 305 249 308 225 Trgb +0.000000 0.698504 0.209551 318 220 315 223 313 218 Trgb +0.000000 0.698504 0.209551 315 223 310 222 313 218 Trgb +0.000000 0.698504 0.209551 310 222 309 217 313 218 Trgb +0.000000 0.698504 0.209551 309 217 312 214 313 218 Trgb +0.000000 0.698504 0.209551 312 214 317 215 313 218 Trgb +0.000000 0.698504 0.209551 317 215 318 220 313 218 Trgb +0.000000 0.039441 0.011832 303 258 315 223 318 220 Trgb +0.000000 0.039755 0.011926 303 258 318 220 306 256 Trgb +0.000000 0.013042 0.003913 299 257 310 222 315 223 Trgb +0.000000 0.026084 0.007825 299 257 315 223 303 258 Trgb +0.000000 0.000000 0.000000 298 253 309 217 310 222 Trgb +0.000000 0.000000 0.000000 298 253 310 222 299 257 Trgb +0.000000 0.696509 0.208953 351 168 348 168 348 166 Trgb +0.000000 0.696509 0.208953 348 168 346 166 348 166 Trgb +0.000000 0.696509 0.208953 346 166 345 164 348 166 Trgb +0.000000 0.696509 0.208953 345 164 348 164 348 166 Trgb +0.000000 0.696509 0.208953 348 164 351 166 348 166 Trgb +0.000000 0.696509 0.208953 351 166 351 168 348 166 Trgb +0.000000 0.059893 0.017968 314 220 348 168 351 168 Trgb +0.000000 0.060927 0.018278 314 220 351 168 316 221 Trgb +0.000000 0.019620 0.005886 311 218 346 166 348 168 Trgb +0.000000 0.039239 0.011772 311 218 348 168 314 220 Trgb +0.000000 0.000000 0.000000 311 216 345 164 346 166 Trgb +0.000000 0.000000 0.000000 311 216 346 166 311 218 Trgb +0.000000 0.000000 0.000000 350 168 349 168 348 166 Trgb +0.000000 0.000000 0.000000 349 168 347 166 348 166 Trgb +0.000000 0.000000 0.000000 347 166 346 164 348 166 Trgb +0.000000 0.000000 0.000000 346 164 347 164 348 166 Trgb +0.000000 0.000000 0.000000 347 164 349 166 348 166 Trgb +0.000000 0.000000 0.000000 349 166 350 168 348 166 Trgb +0.000000 0.238723 0.071617 349 166 385 141 386 143 Trgb +0.000000 0.241460 0.072438 349 166 386 143 350 168 Trgb +0.000000 0.078662 0.023599 347 164 384 140 385 141 Trgb +0.000000 0.157324 0.047197 347 164 385 141 349 166 Trgb +0.000000 0.000000 0.000000 346 164 383 140 384 140 Trgb +0.000000 0.000000 0.000000 346 164 384 140 347 164 Trgb +0.340732 0.248642 0.117875 397 153 395 142 402 143 Trgb +0.278657 0.203344 0.096400 395 127 402 143 395 142 Trgb +0.247789 0.180819 0.085722 395 142 386 130 395 127 Trgb +0.119439 0.087158 0.041319 386 130 377 126 395 127 Trgb +0.106393 0.077638 0.036806 376 140 383 156 371 151 Trgb +0.318775 0.232620 0.110279 395 142 397 153 383 156 Trgb +0.234743 0.171299 0.081209 383 156 376 140 395 142 Trgb +0.225832 0.164797 0.078126 386 130 395 142 376 140 Trgb +0.033948 0.024773 0.011744 366 140 376 140 371 151 Trgb +0.000000 0.000000 0.000000 372 130 377 126 366 140 Trgb +0.033948 0.024773 0.011744 376 140 366 140 377 126 Trgb +0.097482 0.071136 0.033724 377 126 386 130 376 140 Trgb +0.072446 0.052866 0.025062 383 156 373 156 371 151 Trgb +0.228924 0.167052 0.079195 397 153 391 158 383 156 Trgb +0.110944 0.080959 0.038381 373 156 383 156 391 158 Trgb +0.000000 0.699929 0.209979 390 172 391 170 391 172 Trgb +0.000000 0.699929 0.209979 391 170 392 170 391 172 Trgb +0.000000 0.699929 0.209979 392 170 393 172 391 172 Trgb +0.000000 0.699929 0.209979 393 172 392 174 391 172 Trgb +0.000000 0.699929 0.209979 392 174 391 174 391 172 Trgb +0.000000 0.699929 0.209979 391 174 390 172 391 172 Trgb +0.000000 0.004526 0.001358 348 164 391 170 390 172 Trgb +0.000000 0.006998 0.002099 348 164 390 172 347 166 Trgb +0.000000 0.000685 0.000205 349 164 392 170 391 170 Trgb +0.000000 0.001370 0.000411 349 164 391 170 348 164 Trgb +0.000000 0.008785 0.002635 347 166 390 172 391 174 Trgb +0.000000 0.008100 0.002430 347 166 391 174 347 168 Trgb +0.315444 0.255254 0.114140 397 175 404 160 408 174 Trgb +0.160986 0.130268 0.058251 383 174 386 160 397 175 Trgb +0.207378 0.167808 0.075037 404 160 397 175 386 160 Trgb +0.095933 0.077628 0.034712 386 160 393 153 404 160 Trgb +0.267978 0.216844 0.096964 404 160 409 172 408 174 Trgb +0.330957 0.267806 0.119752 402 187 397 175 408 174 Trgb +0.176499 0.142820 0.063864 384 186 383 174 397 175 Trgb +0.238403 0.192912 0.086263 397 175 402 187 384 186 Trgb +0.137926 0.111608 0.049907 390 190 384 186 402 187 Trgb +0.049541 0.040088 0.017926 386 160 383 174 374 172 Trgb +0.015977 0.012928 0.005781 374 172 381 157 386 160 Trgb +0.015977 0.012928 0.005781 393 153 386 160 381 157 Trgb +0.283490 0.229397 0.102577 409 172 402 187 408 174 Trgb +0.065053 0.052640 0.023539 383 174 384 186 374 172 Trgb +0.031489 0.025481 0.011394 379 183 374 172 384 186 Trgb +0.042458 0.034357 0.015363 384 186 390 190 379 183 Trgb +0.000000 0.697723 0.209317 341 150 344 149 343 152 Trgb +0.000000 0.697723 0.209317 344 149 346 151 343 152 Trgb +0.000000 0.697723 0.209317 346 151 345 153 343 152 Trgb +0.000000 0.697723 0.209317 345 153 343 154 343 152 Trgb +0.000000 0.697723 0.209317 343 154 341 152 343 152 Trgb +0.000000 0.697723 0.209317 341 152 341 150 343 152 Trgb +0.000000 0.049494 0.014848 350 168 345 153 346 151 Trgb +0.000000 0.044068 0.013220 350 168 346 151 350 165 Trgb +0.000000 0.029160 0.008748 348 168 343 154 345 153 Trgb +0.000000 0.042040 0.012612 348 168 345 153 350 168 Trgb +0.000000 0.005426 0.001628 346 167 341 152 343 154 Trgb +0.000000 0.010853 0.003256 346 167 343 154 348 168 Trgb +0.041998 0.199607 0.048321 336 144 348 143 342 148 Trgb +0.000000 0.000000 0.000000 334 144 343 140 336 144 Trgb +0.020666 0.098222 0.023778 348 143 336 144 343 140 Trgb +0.028561 0.135744 0.032861 343 140 351 143 348 143 Trgb +0.080827 0.384157 0.092997 348 143 349 154 342 148 Trgb +0.101740 0.483551 0.117058 356 151 352 159 349 154 Trgb +0.088824 0.422164 0.102198 349 154 348 143 356 151 Trgb +0.057889 0.275137 0.066605 351 143 356 151 348 143 Trgb +0.030833 0.146542 0.035475 337 155 336 144 342 148 Trgb +0.000000 0.000000 0.000000 331 153 334 144 336 144 Trgb +0.009501 0.045158 0.010932 336 144 337 155 331 153 Trgb +0.009501 0.045158 0.010932 335 161 331 153 337 155 Trgb +0.069662 0.331092 0.080151 349 154 337 155 342 148 Trgb +0.090575 0.430486 0.104212 352 159 344 163 349 154 Trgb +0.066494 0.316036 0.076506 337 155 349 154 344 163 Trgb +0.027665 0.131486 0.031830 344 163 335 161 337 155 Trgb +0.000000 0.699775 0.209933 370 210 368 207 370 207 Trgb +0.000000 0.699775 0.209933 368 207 369 204 370 207 Trgb +0.000000 0.699775 0.209933 369 204 370 203 370 207 Trgb +0.000000 0.699775 0.209933 370 203 372 206 370 207 Trgb +0.000000 0.699775 0.209933 372 206 372 209 370 207 Trgb +0.000000 0.699775 0.209933 372 209 370 210 370 207 Trgb +0.000000 0.011674 0.003502 312 219 368 207 370 210 Trgb +0.000000 0.014707 0.004412 312 219 370 210 313 222 Trgb +0.000000 0.002881 0.000864 312 216 369 204 368 207 Trgb +0.000000 0.005761 0.001728 312 216 368 207 312 219 Trgb +0.000000 0.014859 0.004458 313 222 370 210 372 209 Trgb +0.000000 0.011978 0.003594 313 222 372 209 315 221 Trgb +0.000000 0.000000 0.000000 369 208 369 209 370 207 Trgb +0.000000 0.000000 0.000000 369 209 369 207 370 207 Trgb +0.000000 0.000000 0.000000 369 207 371 205 370 207 Trgb +0.000000 0.000000 0.000000 371 205 372 205 370 207 Trgb +0.000000 0.000000 0.000000 372 205 371 206 370 207 Trgb +0.000000 0.000000 0.000000 371 206 369 208 370 207 Trgb +0.000000 0.033825 0.010148 371 206 410 235 409 237 Trgb +0.000000 0.027366 0.008210 371 206 409 237 369 208 Trgb +0.000000 0.026347 0.007904 372 205 411 234 410 235 Trgb +0.000000 0.033316 0.009995 372 205 410 235 371 206 Trgb +0.000000 0.013938 0.004181 369 208 409 237 408 237 Trgb +0.000000 0.006969 0.002091 369 208 408 237 369 209 Trgb +0.402052 0.138238 0.108058 417 254 429 236 426 248 Trgb +0.324052 0.111419 0.087094 402 249 413 237 417 254 Trgb +0.415721 0.142938 0.111732 429 236 417 254 413 237 Trgb +0.399297 0.137291 0.107317 413 237 421 224 429 236 Trgb +0.303041 0.104195 0.081447 421 224 422 218 429 236 Trgb +0.196628 0.067607 0.052847 397 253 402 249 417 254 Trgb +0.000000 0.000000 0.000000 405 218 392 236 392 223 Trgb +0.195487 0.067215 0.052540 413 237 402 249 392 236 Trgb +0.127423 0.043812 0.034247 392 236 405 218 413 237 Trgb +0.239564 0.082370 0.064387 421 224 413 237 405 218 Trgb +0.000000 0.000000 0.000000 402 218 405 218 392 223 Trgb +0.031167 0.010716 0.008377 405 218 402 218 422 218 Trgb +0.143308 0.049274 0.038516 422 218 421 224 405 218 Trgb +0.000000 0.000000 0.000000 392 236 390 235 392 223 Trgb +0.068063 0.023402 0.018293 402 249 397 253 392 236 Trgb +0.000000 0.000000 0.000000 390 235 392 236 397 253 Trgb +0.000000 0.699725 0.209917 388 238 390 237 389 239 Trgb +0.000000 0.699725 0.209917 390 237 392 238 389 239 Trgb +0.000000 0.699725 0.209917 392 238 391 240 389 239 Trgb +0.000000 0.699725 0.209917 391 240 388 241 389 239 Trgb +0.000000 0.699725 0.209917 388 241 387 240 389 239 Trgb +0.000000 0.699725 0.209917 387 240 388 238 389 239 Trgb +0.000000 0.011031 0.003309 371 205 390 237 388 238 Trgb +0.000000 0.005515 0.001655 371 205 388 238 369 206 Trgb +0.000000 0.017121 0.005136 372 206 392 238 390 237 Trgb +0.000000 0.016834 0.005050 372 206 390 237 371 205 Trgb +0.000000 0.000000 0.000000 369 206 388 238 387 240 Trgb +0.000000 0.000000 0.000000 369 206 387 240 368 207 Trgb +0.349698 0.218700 0.113680 387 242 406 239 397 252 Trgb +0.133776 0.083663 0.043488 379 231 393 224 387 242 Trgb +0.271918 0.170056 0.088395 406 239 387 242 393 224 Trgb +0.255724 0.159929 0.083131 393 224 405 226 406 239 Trgb +0.354064 0.221431 0.115099 406 239 402 254 397 252 Trgb +0.280651 0.175518 0.091234 402 254 406 239 407 236 Trgb +0.260091 0.162660 0.084550 405 226 407 236 406 239 Trgb +0.250481 0.156650 0.081426 384 257 387 242 397 252 Trgb +0.086350 0.054003 0.028071 371 242 379 231 387 242 Trgb +0.125275 0.078347 0.040724 387 242 384 257 371 242 Trgb +0.038925 0.024344 0.012654 374 251 371 242 384 257 Trgb +0.047425 0.029660 0.015417 393 224 379 231 376 224 Trgb +0.047425 0.029660 0.015417 376 224 394 221 393 224 Trgb +0.117582 0.073536 0.038224 405 226 393 224 394 221 Trgb +0.254847 0.159381 0.082846 402 254 384 257 397 252 Trgb +0.000000 0.000000 0.000000 379 231 371 242 376 224 Trgb +0.000000 0.682373 0.204712 391 162 392 163 390 162 Trgb +0.000000 0.682373 0.204712 392 163 391 163 390 162 Trgb +0.000000 0.682373 0.204712 391 163 389 162 390 162 Trgb +0.000000 0.682373 0.204712 389 162 388 161 390 162 Trgb +0.000000 0.682373 0.204712 388 161 389 161 390 162 Trgb +0.000000 0.682373 0.204712 389 161 391 162 390 162 Trgb +0.000000 0.137665 0.041299 371 208 391 163 392 163 Trgb +0.000000 0.128141 0.038442 371 208 392 163 372 208 Trgb +0.000000 0.068110 0.020433 369 207 389 162 391 163 Trgb +0.000000 0.107649 0.032295 369 207 391 163 371 208 Trgb +0.000000 0.009524 0.002857 368 206 388 161 389 162 Trgb +0.000000 0.019047 0.005714 368 206 389 162 369 207 Trgb +0.163081 0.086165 0.049849 403 150 407 155 399 143 Trgb +0.357741 0.189016 0.109351 408 169 406 171 407 155 Trgb +0.201687 0.106563 0.061650 407 155 389 148 399 143 Trgb +0.192638 0.101782 0.058884 394 168 380 161 389 148 Trgb +0.292072 0.154319 0.089278 389 148 407 155 394 168 Trgb +0.396347 0.209413 0.121152 406 171 394 168 407 155 Trgb +0.311639 0.164657 0.095259 406 171 408 169 395 181 Trgb +0.074953 0.039602 0.022911 389 148 385 143 399 143 Trgb +0.069652 0.036801 0.021291 380 161 372 155 389 148 Trgb +0.042354 0.022378 0.012946 385 143 389 148 372 155 Trgb +0.080631 0.042602 0.024647 377 174 395 181 382 180 Trgb +0.150284 0.079404 0.045937 380 161 394 168 377 174 Trgb +0.203616 0.107582 0.062240 395 181 377 174 394 168 Trgb +0.350245 0.185055 0.107060 394 168 406 171 395 181 Trgb +0.027298 0.014423 0.008344 372 155 380 161 377 174 Trgb +0.000000 0.000000 0.000000 377 174 374 169 372 155 Trgb +0.000000 0.697969 0.209391 293 250 295 248 296 251 Trgb +0.000000 0.697969 0.209391 295 248 299 249 296 251 Trgb +0.000000 0.697969 0.209391 299 249 299 253 296 251 Trgb +0.000000 0.697969 0.209391 299 253 297 254 296 251 Trgb +0.000000 0.697969 0.209391 297 254 293 253 296 251 Trgb +0.000000 0.697969 0.209391 293 253 293 250 296 251 Trgb +0.000000 0.000000 0.000000 313 215 295 248 293 250 Trgb +0.000000 0.000000 0.000000 313 215 293 250 310 217 Trgb +0.000000 0.029354 0.008806 316 217 299 249 295 248 Trgb +0.000000 0.014677 0.004403 316 217 295 248 313 215 Trgb +0.000000 0.046680 0.014004 317 220 299 253 299 249 Trgb +0.000000 0.045355 0.013607 317 220 299 249 316 217 Trgb +0.156998 0.121144 0.055628 280 252 297 247 291 260 Trgb +0.000000 0.000000 0.000000 279 244 288 235 280 252 Trgb +0.084838 0.065463 0.030060 297 247 280 252 288 235 Trgb +0.132657 0.102362 0.047004 288 235 302 236 297 247 Trgb +0.278211 0.214675 0.098577 297 247 305 263 291 260 Trgb +0.324474 0.250373 0.114969 312 246 313 259 305 263 Trgb +0.310052 0.239244 0.109859 305 263 297 247 312 246 Trgb +0.236658 0.182612 0.083854 302 236 312 246 297 247 Trgb +0.089372 0.068962 0.031667 289 268 280 252 291 260 Trgb +0.000000 0.000000 0.000000 280 256 279 244 280 252 Trgb +0.017212 0.013281 0.006099 280 252 289 268 280 256 Trgb +0.047819 0.036898 0.016943 302 236 288 235 303 235 Trgb +0.210585 0.162493 0.074615 305 263 289 268 291 260 Trgb +0.256848 0.198191 0.091008 313 259 304 267 305 263 Trgb +0.174799 0.134880 0.061936 289 268 305 263 304 267 Trgb +0.151820 0.117148 0.053794 312 246 302 236 303 235 Trgb +0.000000 0.699942 0.209983 348 304 347 302 351 301 Trgb +0.000000 0.699942 0.209983 347 302 349 298 351 301 Trgb +0.000000 0.699942 0.209983 349 298 353 297 351 301 Trgb +0.000000 0.699942 0.209983 353 297 355 300 351 301 Trgb +0.000000 0.699942 0.209983 355 300 352 303 351 301 Trgb +0.000000 0.699942 0.209983 352 303 348 304 351 301 Trgb +0.000000 0.000000 0.000000 298 255 347 302 348 304 Trgb +0.000000 0.000000 0.000000 298 255 348 304 300 258 Trgb +0.000000 0.001821 0.000546 301 252 349 298 347 302 Trgb +0.000000 0.000911 0.000273 301 252 347 302 298 255 Trgb +0.000000 0.006793 0.002038 304 251 353 297 349 298 Trgb +0.000000 0.004762 0.001429 304 251 349 298 301 252 Trgb +0.000000 0.018322 0.005497 350 301 386 356 384 357 Trgb +0.000000 0.009161 0.002748 350 301 384 357 348 302 Trgb +0.000000 0.035636 0.010691 353 299 389 354 386 356 Trgb +0.000000 0.031560 0.009468 353 299 386 356 350 301 Trgb +0.000000 0.021390 0.006417 353 299 390 354 389 354 Trgb +0.000000 0.030551 0.009165 353 299 389 354 353 299 Trgb +0.000000 0.677885 0.203366 386 356 385 355 387 356 Trgb +0.000000 0.677885 0.203366 385 355 386 354 387 356 Trgb +0.000000 0.677885 0.203366 386 354 388 355 387 356 Trgb +0.000000 0.677885 0.203366 388 355 389 356 387 356 Trgb +0.000000 0.677885 0.203366 389 356 388 357 387 356 Trgb +0.000000 0.677885 0.203366 388 357 386 356 387 356 Trgb +0.000000 0.144797 0.043439 388 357 369 396 367 395 Trgb +0.000000 0.115047 0.034514 388 357 367 395 386 356 Trgb +0.000000 0.117682 0.035305 389 356 369 395 369 396 Trgb +0.000000 0.146114 0.043834 389 356 369 396 388 357 Trgb +0.000000 0.056865 0.017059 386 356 367 395 365 394 Trgb +0.000000 0.028432 0.008530 386 356 365 394 385 355 Trgb +0.009232 0.148327 0.031512 363 401 370 403 364 402 Trgb +0.022270 0.357806 0.076015 365 397 371 399 363 401 Trgb +0.022149 0.355867 0.075603 370 403 363 401 371 399 Trgb +0.031065 0.499105 0.106034 371 399 375 399 370 403 Trgb +0.009353 0.150267 0.031924 360 393 365 397 363 401 Trgb +0.002795 0.044900 0.009539 363 401 359 396 360 393 Trgb +0.000000 0.000000 0.000000 360 390 360 393 359 396 Trgb +0.019209 0.308621 0.065566 376 392 369 391 371 387 Trgb +0.025955 0.417018 0.088595 371 399 365 397 369 391 Trgb +0.029520 0.474291 0.100762 369 391 376 392 371 399 Trgb +0.034750 0.558317 0.118613 375 399 371 399 376 392 Trgb +0.009086 0.145981 0.031013 369 391 365 386 371 387 Trgb +0.013038 0.209479 0.044503 365 397 360 393 369 391 Trgb +0.006480 0.104112 0.022118 365 386 369 391 360 393 Trgb +0.000000 0.000000 0.000000 360 393 360 390 365 386 Trgb +0.000000 0.698602 0.209581 389 395 390 396 387 396 Trgb +0.000000 0.698602 0.209581 390 396 388 397 387 396 Trgb +0.000000 0.698602 0.209581 388 397 386 397 387 396 Trgb +0.000000 0.698602 0.209581 386 397 385 396 387 396 Trgb +0.000000 0.698602 0.209581 385 396 387 395 387 396 Trgb +0.000000 0.698602 0.209581 387 395 389 395 387 396 Trgb +0.000000 0.037233 0.011170 389 356 390 396 389 395 Trgb +0.000000 0.038872 0.011662 389 356 389 395 389 355 Trgb +0.000000 0.003278 0.000983 386 354 387 395 385 396 Trgb +0.000000 0.001639 0.000492 386 354 385 396 385 355 Trgb +0.000000 0.028646 0.008594 389 355 389 395 387 395 Trgb +0.000000 0.016781 0.005034 389 355 387 395 386 354 Trgb +0.404995 0.114698 0.103939 398 404 399 414 388 415 Trgb +0.435739 0.123405 0.111829 402 388 409 395 398 404 Trgb +0.425131 0.120400 0.109106 399 414 398 404 409 395 Trgb +0.324162 0.091805 0.083193 376 404 398 404 388 415 Trgb +0.354905 0.100512 0.091083 386 385 402 388 398 404 Trgb +0.263463 0.074615 0.067616 398 404 376 404 386 385 Trgb +0.091315 0.025861 0.023435 371 389 386 385 376 404 Trgb +0.276324 0.078257 0.070916 409 395 402 388 397 377 Trgb +0.152013 0.043051 0.039013 377 414 376 404 388 415 Trgb +0.039290 0.011127 0.010084 376 404 377 414 366 396 Trgb +0.039290 0.011127 0.010084 366 396 371 389 376 404 Trgb +0.195491 0.055364 0.050171 402 388 386 385 397 377 Trgb +0.064759 0.018340 0.016620 376 378 397 377 386 385 Trgb +0.052024 0.014734 0.013352 386 385 371 389 376 378 Trgb +0.000000 0.000000 0.000000 371 389 366 396 376 378 Trgb +0.000000 0.699996 0.209999 421 374 420 376 419 375 Trgb +0.000000 0.699996 0.209999 420 376 419 377 419 375 Trgb +0.000000 0.699996 0.209999 419 377 418 376 419 375 Trgb +0.000000 0.699996 0.209999 418 376 418 374 419 375 Trgb +0.000000 0.699996 0.209999 418 374 420 373 419 375 Trgb +0.000000 0.699996 0.209999 420 373 421 374 419 375 Trgb +0.000000 0.000000 0.000000 385 357 418 376 419 377 Trgb +0.000000 0.000000 0.000000 385 357 419 377 386 358 Trgb +0.000000 0.000000 0.000000 386 355 418 374 418 376 Trgb +0.000000 0.000000 0.000000 386 355 418 376 385 357 Trgb +0.000000 0.001176 0.000353 388 354 420 373 418 374 Trgb +0.000000 0.000588 0.000176 388 354 418 374 386 355 Trgb +0.289362 0.280459 0.113964 436 374 429 389 431 382 Trgb +0.278122 0.269564 0.109537 429 389 419 386 431 382 Trgb +0.077960 0.075561 0.030704 412 390 407 384 419 386 Trgb +0.159921 0.155000 0.062984 419 386 429 389 412 390 Trgb +0.292601 0.283598 0.115240 426 371 436 374 431 382 Trgb +0.104389 0.101177 0.041113 426 360 431 366 436 374 Trgb +0.181640 0.176051 0.071538 436 374 426 371 426 360 Trgb +0.094729 0.091814 0.037309 417 362 426 360 426 371 Trgb +0.281360 0.272703 0.110813 419 386 426 371 431 382 Trgb +0.077960 0.075561 0.030704 407 384 409 372 419 386 Trgb +0.163159 0.158139 0.064260 426 371 419 386 409 372 Trgb +0.087489 0.084798 0.034457 409 372 417 362 426 371 Trgb +0.009530 0.009236 0.003753 426 360 417 362 410 361 Trgb +0.000000 0.000000 0.000000 409 372 407 384 403 376 Trgb +0.000000 0.000000 0.000000 403 376 410 361 409 372 Trgb +0.002290 0.002219 0.000902 417 362 409 372 410 361 Trgb +0.000000 0.697280 0.209184 347 363 350 363 349 364 Trgb +0.000000 0.697280 0.209184 350 363 352 364 349 364 Trgb +0.000000 0.697280 0.209184 352 364 351 365 349 364 Trgb +0.000000 0.697280 0.209184 351 365 348 365 349 364 Trgb +0.000000 0.697280 0.209184 348 365 346 364 349 364 Trgb +0.000000 0.697280 0.209184 346 364 347 363 349 364 Trgb +0.000000 0.034648 0.010394 352 300 350 363 347 363 Trgb +0.000000 0.017324 0.005197 352 300 347 363 349 300 Trgb +0.000000 0.053795 0.016138 354 301 352 364 350 363 Trgb +0.000000 0.052883 0.015865 354 301 350 363 352 300 Trgb +0.000000 0.000000 0.000000 349 300 347 363 346 364 Trgb +0.000000 0.000000 0.000000 349 300 346 364 348 301 Trgb +0.308371 0.106028 0.082880 340 375 360 376 349 384 Trgb +0.157725 0.054231 0.042391 336 359 352 359 340 375 Trgb +0.324928 0.111721 0.087330 360 376 340 375 352 359 Trgb +0.420222 0.144486 0.112941 352 359 366 361 360 376 Trgb +0.317849 0.109287 0.085427 360 376 358 381 349 384 Trgb +0.343885 0.118239 0.092425 358 381 360 376 369 365 Trgb +0.429700 0.147745 0.115489 366 361 369 365 360 376 Trgb +0.141167 0.048538 0.037941 337 380 340 375 349 384 Trgb +0.055697 0.019150 0.014970 329 363 336 359 340 375 Trgb +0.055697 0.019150 0.014970 340 375 337 380 329 363 Trgb +0.046330 0.015930 0.012452 361 348 341 347 350 344 Trgb +0.102027 0.035080 0.027422 352 359 336 359 341 347 Trgb +0.148358 0.051010 0.039874 341 347 361 348 352 359 Trgb +0.299349 0.102926 0.080455 366 361 352 359 361 348 Trgb +0.308827 0.106185 0.083002 369 365 366 361 361 348 Trgb +0.000000 0.000000 0.000000 336 359 329 363 341 347 Trgb +0.000000 0.698661 0.209598 356 291 357 294 353 293 Trgb +0.000000 0.698661 0.209598 357 294 354 296 353 293 Trgb +0.000000 0.698661 0.209598 354 296 351 295 353 293 Trgb +0.000000 0.698661 0.209598 351 295 350 292 353 293 Trgb +0.000000 0.698661 0.209598 350 292 353 290 353 293 Trgb +0.000000 0.698661 0.209598 353 290 356 291 353 293 Trgb +0.000000 0.033302 0.009991 352 304 354 296 357 294 Trgb +0.000000 0.037838 0.011351 352 304 357 294 354 302 Trgb +0.000000 0.009589 0.002877 348 303 351 295 354 296 Trgb +0.000000 0.019177 0.005753 348 303 354 296 352 304 Trgb +0.000000 0.000000 0.000000 348 300 350 292 351 295 Trgb +0.000000 0.000000 0.000000 348 300 351 295 348 303 Trgb +0.000000 0.000000 0.000000 328 260 328 261 326 261 Trgb +0.000000 0.000000 0.000000 328 261 326 263 326 261 Trgb +0.000000 0.000000 0.000000 326 263 324 263 326 261 Trgb +0.000000 0.000000 0.000000 324 263 324 262 326 261 Trgb +0.000000 0.000000 0.000000 324 262 326 260 326 261 Trgb +0.000000 0.000000 0.000000 326 260 328 260 326 261 Trgb +0.000000 0.115033 0.034510 355 293 328 261 328 260 Trgb +0.000000 0.073975 0.022192 355 293 328 260 355 291 Trgb +0.000000 0.134147 0.040244 354 295 326 263 328 261 Trgb +0.000000 0.145119 0.043536 354 295 328 261 355 293 Trgb +0.000000 0.041058 0.012317 352 295 324 263 326 263 Trgb +0.000000 0.082116 0.024635 352 295 326 263 354 295 Trgb +0.012930 0.111978 0.024982 327 251 325 259 320 255 Trgb +0.024464 0.211872 0.047267 334 254 335 258 327 251 Trgb +0.032663 0.282874 0.063107 325 259 327 251 335 258 Trgb +0.055838 0.483582 0.107884 335 258 331 265 325 259 Trgb +0.012930 0.111978 0.024982 325 259 317 262 320 255 Trgb +0.013042 0.112948 0.025198 324 269 319 269 317 262 Trgb +0.025972 0.224926 0.050180 317 262 325 259 324 269 Trgb +0.049147 0.425634 0.094956 331 265 324 269 325 259 Trgb +0.000000 0.000000 0.000000 319 254 327 251 320 255 Trgb +0.046381 0.401681 0.089613 336 261 334 269 335 258 Trgb +0.062754 0.543471 0.121245 331 265 335 258 334 269 Trgb +0.000000 0.000000 0.000000 317 262 319 254 320 255 Trgb +0.013154 0.113918 0.025414 319 269 324 269 325 272 Trgb +0.032999 0.285785 0.063757 334 269 325 272 324 269 Trgb +0.056063 0.485523 0.108317 324 269 331 265 334 269 Trgb +0.000000 0.677401 0.203220 372 250 370 250 370 249 Trgb +0.000000 0.677401 0.203220 370 250 368 249 370 249 Trgb +0.000000 0.677401 0.203220 368 249 367 248 370 249 Trgb +0.000000 0.677401 0.203220 367 248 369 248 370 249 Trgb +0.000000 0.677401 0.203220 369 248 371 249 370 249 Trgb +0.000000 0.677401 0.203220 371 249 372 250 370 249 Trgb +0.000000 0.155473 0.046642 354 294 370 250 372 250 Trgb +0.000000 0.146657 0.043997 354 294 372 250 356 294 Trgb +0.000000 0.072397 0.021719 352 293 368 249 370 250 Trgb +0.000000 0.118344 0.035503 352 293 370 250 354 294 Trgb +0.000000 0.008817 0.002645 351 292 367 248 368 249 Trgb +0.000000 0.017634 0.005290 351 292 368 249 352 293 Trgb +0.253712 0.080223 0.066787 390 240 373 240 377 229 Trgb +0.428856 0.135602 0.112892 390 257 383 259 390 240 Trgb +0.393311 0.124363 0.103535 373 240 390 240 383 259 Trgb +0.382168 0.120840 0.100601 383 259 367 256 373 240 Trgb +0.133898 0.042338 0.035247 373 240 360 230 377 229 Trgb +0.000000 0.000000 0.000000 353 248 349 241 360 230 Trgb +0.100475 0.031770 0.026449 360 230 373 240 353 248 Trgb +0.209145 0.066131 0.055055 367 256 353 248 373 240 Trgb +0.125755 0.039763 0.033104 363 268 379 268 362 269 Trgb +0.381589 0.120657 0.100449 383 259 390 257 379 268 Trgb +0.298777 0.094472 0.078650 379 268 363 268 383 259 Trgb +0.334900 0.105894 0.088159 367 256 383 259 363 268 Trgb +0.053208 0.016824 0.014006 350 258 363 268 362 269 Trgb +0.000000 0.000000 0.000000 349 241 353 248 350 258 Trgb +0.053208 0.016824 0.014006 363 268 350 258 353 248 Trgb +0.161878 0.051185 0.042613 353 248 367 256 363 268 Trgb +0.000000 0.699775 0.209932 374 329 375 328 376 328 Trgb +0.000000 0.699775 0.209932 375 328 377 327 376 328 Trgb +0.000000 0.699775 0.209932 377 327 378 327 376 328 Trgb +0.000000 0.699775 0.209932 378 327 378 329 376 328 Trgb +0.000000 0.699775 0.209932 378 329 375 330 376 328 Trgb +0.000000 0.699775 0.209932 375 330 374 329 376 328 Trgb +0.000000 0.000000 0.000000 352 292 375 328 374 329 Trgb +0.000000 0.000000 0.000000 352 292 374 329 351 294 Trgb +0.000000 0.010089 0.003027 354 291 377 327 375 328 Trgb +0.000000 0.005044 0.001513 354 291 375 328 352 292 Trgb +0.000000 0.015452 0.004635 356 292 378 327 377 327 Trgb +0.000000 0.015292 0.004588 356 292 377 327 354 291 Trgb +0.251815 0.220453 0.094454 371 344 380 331 385 342 Trgb +0.043448 0.038037 0.016297 360 337 362 328 371 344 Trgb +0.140870 0.123326 0.052839 380 331 371 344 362 328 Trgb +0.124253 0.108778 0.046606 362 328 373 319 380 331 Trgb +0.321818 0.281738 0.120711 380 331 393 331 385 342 Trgb +0.216925 0.189909 0.081367 385 315 392 319 393 331 Trgb +0.264847 0.231862 0.099342 393 331 380 331 385 315 Trgb +0.178226 0.156030 0.066851 373 319 385 315 380 331 Trgb +0.213871 0.187235 0.080221 384 344 371 344 385 342 Trgb +0.000000 0.000000 0.000000 362 328 360 337 359 325 Trgb +0.000000 0.000000 0.000000 359 325 368 312 362 328 Trgb +0.026831 0.023489 0.010064 373 319 362 328 368 312 Trgb +0.283874 0.248520 0.106479 393 331 384 344 385 342 Trgb +0.103473 0.090587 0.038812 392 319 385 315 381 313 Trgb +0.053974 0.047252 0.020245 368 312 381 313 385 315 Trgb +0.080804 0.070741 0.030309 385 315 373 319 368 312 Trgb +0.000000 0.665402 0.199621 241 278 244 280 242 282 Trgb +0.000000 0.665402 0.199621 244 280 245 284 242 282 Trgb +0.000000 0.665402 0.199621 245 284 243 286 242 282 Trgb +0.000000 0.665402 0.199621 243 286 240 284 242 282 Trgb +0.000000 0.665402 0.199621 240 284 239 280 242 282 Trgb +0.000000 0.665402 0.199621 239 280 241 278 242 282 Trgb +0.000000 0.101649 0.030495 305 252 244 280 241 278 Trgb +0.000000 0.050824 0.015247 305 252 241 278 301 250 Trgb +0.000000 0.191076 0.057323 305 257 245 284 244 280 Trgb +0.000000 0.171775 0.051532 305 257 244 280 305 252 Trgb +0.000000 0.108729 0.032619 303 259 243 286 245 284 Trgb +0.000000 0.159553 0.047866 303 259 245 284 305 257 Trgb +0.000000 0.000000 0.000000 183 257 182 260 181 259 Trgb +0.000000 0.000000 0.000000 182 260 180 262 181 259 Trgb +0.000000 0.000000 0.000000 180 262 180 261 181 259 Trgb +0.000000 0.000000 0.000000 180 261 181 258 181 259 Trgb +0.000000 0.000000 0.000000 181 258 182 256 181 259 Trgb +0.000000 0.000000 0.000000 182 256 183 257 181 259 Trgb +0.000000 0.058545 0.017564 243 283 182 260 183 257 Trgb +0.000000 0.052058 0.015618 243 283 183 257 243 280 Trgb +0.000000 0.034650 0.010395 241 285 180 262 182 260 Trgb +0.000000 0.049841 0.014952 241 285 182 260 243 283 Trgb +0.000000 0.030381 0.009114 243 280 183 257 182 256 Trgb +0.000000 0.015191 0.004557 243 280 182 256 243 279 Trgb +0.000000 0.699531 0.209859 182 258 183 258 181 259 Trgb +0.000000 0.699531 0.209859 183 258 182 259 181 259 Trgb +0.000000 0.699531 0.209859 182 259 180 260 181 259 Trgb +0.000000 0.699531 0.209859 180 260 179 260 181 259 Trgb +0.000000 0.699531 0.209859 179 260 180 259 181 259 Trgb +0.000000 0.699531 0.209859 180 259 182 258 181 259 Trgb +0.000000 0.018127 0.005438 180 259 158 222 160 221 Trgb +0.000000 0.021833 0.006550 180 259 160 221 182 258 Trgb +0.000000 0.004807 0.001442 179 260 157 224 158 222 Trgb +0.000000 0.009615 0.002884 179 260 158 222 180 259 Trgb +0.000000 0.020731 0.006219 182 258 160 221 161 221 Trgb +0.000000 0.015923 0.004777 182 258 161 221 183 258 Trgb +0.000000 0.000000 0.000000 158 206 144 215 151 210 Trgb +0.125687 0.116237 0.048385 165 212 154 217 158 206 Trgb +0.054272 0.050191 0.020893 144 215 158 206 154 217 Trgb +0.059609 0.055128 0.022947 154 217 145 225 144 215 Trgb +0.005337 0.004936 0.002055 145 225 145 232 144 215 Trgb +0.118139 0.109256 0.045479 173 213 165 212 158 206 Trgb +0.290405 0.268570 0.111795 155 233 169 224 167 235 Trgb +0.245347 0.226900 0.094449 154 217 165 212 169 224 Trgb +0.246867 0.228306 0.095035 169 224 155 233 154 217 Trgb +0.132545 0.122579 0.051025 145 225 154 217 155 233 Trgb +0.189409 0.175168 0.072915 160 239 155 233 167 235 Trgb +0.091599 0.084712 0.035262 155 233 160 239 145 232 Trgb +0.078273 0.072388 0.030132 145 232 145 225 155 233 Trgb +0.282857 0.261589 0.108889 169 224 174 230 167 235 Trgb +0.237798 0.219919 0.091543 165 212 173 213 169 224 Trgb +0.231771 0.214345 0.089223 174 230 169 224 173 213 Trgb +0.000000 0.687742 0.206322 155 248 154 246 156 245 Trgb +0.000000 0.687742 0.206322 154 246 155 244 156 245 Trgb +0.000000 0.687742 0.206322 155 244 157 243 156 245 Trgb +0.000000 0.687742 0.206322 157 243 158 244 156 245 Trgb +0.000000 0.687742 0.206322 158 244 157 247 156 245 Trgb +0.000000 0.687742 0.206322 157 247 155 248 156 245 Trgb +0.000000 0.066457 0.019937 183 258 158 244 157 243 Trgb +0.000000 0.033228 0.009969 183 258 157 243 182 257 Trgb +0.000000 0.115018 0.034505 183 261 157 247 158 244 Trgb +0.000000 0.107351 0.032205 183 261 158 244 183 258 Trgb +0.000000 0.056227 0.016868 181 261 155 248 157 247 Trgb +0.000000 0.089455 0.026837 181 261 157 247 183 261 Trgb +0.095233 0.034446 0.025936 143 255 136 238 145 239 Trgb +0.080765 0.029213 0.021996 149 265 139 256 143 255 Trgb +0.051549 0.018645 0.014039 136 238 143 255 139 256 Trgb +0.053915 0.019501 0.014683 136 238 153 226 145 239 Trgb +0.010230 0.003700 0.002786 153 226 136 238 149 228 Trgb +0.241449 0.087332 0.065756 160 244 143 255 145 239 Trgb +0.216750 0.078399 0.059030 163 263 149 265 143 255 Trgb +0.333750 0.120718 0.090894 143 255 160 244 163 263 Trgb +0.445297 0.161065 0.121272 173 250 163 263 160 244 Trgb +0.200131 0.072388 0.054504 153 226 160 244 145 239 Trgb +0.104898 0.037942 0.028568 163 225 173 234 153 226 Trgb +0.251114 0.090828 0.068388 160 244 153 226 173 234 Trgb +0.403979 0.146120 0.110020 173 234 173 250 160 244 Trgb +0.165202 0.059754 0.044991 149 265 163 263 159 264 Trgb +0.383518 0.138719 0.104448 163 263 173 250 176 253 Trgb +0.342200 0.123775 0.093195 173 250 173 234 176 253 Trgb +0.000000 0.000000 0.000000 138 279 137 277 139 279 Trgb +0.000000 0.000000 0.000000 137 277 138 277 139 279 Trgb +0.000000 0.000000 0.000000 138 277 139 279 139 279 Trgb +0.000000 0.000000 0.000000 139 279 140 281 139 279 Trgb +0.000000 0.000000 0.000000 140 281 139 281 139 279 Trgb +0.000000 0.000000 0.000000 139 281 138 279 139 279 Trgb +0.000000 0.007901 0.002370 181 257 138 277 137 277 Trgb +0.000000 0.003951 0.001185 181 257 137 277 180 257 Trgb +0.000000 0.086361 0.025908 182 259 139 279 138 277 Trgb +0.000000 0.049106 0.014732 182 259 138 277 181 257 Trgb +0.000000 0.115714 0.034714 182 261 140 281 139 279 Trgb +0.000000 0.119664 0.035899 182 261 139 279 182 259 Trgb +0.103705 0.001023 0.020945 115 270 125 287 116 290 Trgb +0.383332 0.003780 0.077422 134 263 143 280 125 287 Trgb +0.180283 0.001778 0.036412 125 287 115 270 134 263 Trgb +0.076578 0.000755 0.015467 128 256 134 263 115 270 Trgb +0.130831 0.001290 0.026424 125 287 130 303 116 290 Trgb +0.517330 0.005102 0.104486 143 280 149 296 125 287 Trgb +0.341407 0.003367 0.068955 130 303 125 287 149 296 Trgb +0.332454 0.003279 0.067146 149 296 149 301 130 303 Trgb +0.239839 0.002365 0.048441 158 272 147 256 161 269 Trgb +0.463077 0.004567 0.093529 143 280 134 263 158 272 Trgb +0.260028 0.002564 0.052519 147 256 158 272 134 263 Trgb +0.076578 0.000755 0.015467 134 263 128 256 147 256 Trgb +0.346710 0.003419 0.070026 162 287 158 272 161 269 Trgb +0.597075 0.005888 0.120593 149 296 143 280 158 272 Trgb +0.500898 0.004940 0.101168 158 272 162 287 149 296 Trgb +0.412199 0.004065 0.083253 149 301 149 296 162 287 Trgb +0.000000 0.698970 0.209691 239 286 235 285 237 282 Trgb +0.000000 0.698970 0.209691 235 285 233 282 237 282 Trgb +0.000000 0.698970 0.209691 233 282 235 279 237 282 Trgb +0.000000 0.698970 0.209691 235 279 239 279 237 282 Trgb +0.000000 0.698970 0.209691 239 279 241 283 237 282 Trgb +0.000000 0.698970 0.209691 241 283 239 286 237 282 Trgb +0.000000 0.004282 0.001285 244 279 239 279 235 279 Trgb +0.000000 0.002141 0.000642 244 279 235 279 241 279 Trgb +0.000000 0.025877 0.007763 245 282 241 283 239 279 Trgb +0.000000 0.016150 0.004845 245 282 239 279 244 279 Trgb +0.000000 0.031322 0.009397 244 285 239 286 241 283 Trgb +0.000000 0.033463 0.010039 244 285 241 283 245 282 Trgb +0.000000 0.699983 0.209995 269 294 268 292 270 291 Trgb +0.000000 0.699983 0.209995 268 292 269 290 270 291 Trgb +0.000000 0.699983 0.209995 269 290 270 289 270 291 Trgb +0.000000 0.699983 0.209995 270 289 272 290 270 291 Trgb +0.000000 0.699983 0.209995 272 290 271 293 270 291 Trgb +0.000000 0.699983 0.209995 271 293 269 294 270 291 Trgb +0.000000 0.002735 0.000821 235 283 268 292 269 294 Trgb +0.000000 0.003769 0.001131 235 283 269 294 236 285 Trgb +0.000000 0.000567 0.000170 236 281 269 290 268 292 Trgb +0.000000 0.001134 0.000340 236 281 268 292 235 283 Trgb +0.000000 0.000000 0.000000 238 280 270 289 269 290 Trgb +0.000000 0.000000 0.000000 238 280 269 290 236 281 Trgb +0.376135 0.200455 0.115318 276 308 269 291 284 295 Trgb +0.154087 0.082118 0.047241 265 311 256 303 276 308 Trgb +0.237541 0.126594 0.072827 269 291 276 308 256 303 Trgb +0.116308 0.061985 0.035659 256 303 255 288 269 291 Trgb +0.346879 0.184863 0.106348 269 291 283 279 284 295 Trgb +0.091976 0.049017 0.028199 263 274 275 271 283 279 Trgb +0.196118 0.104518 0.060127 283 279 269 291 263 274 Trgb +0.104142 0.055501 0.031929 255 288 263 274 269 291 Trgb +0.381060 0.203080 0.116828 290 296 276 308 284 295 Trgb +0.012166 0.006484 0.003730 255 288 256 303 250 286 Trgb +0.351803 0.187488 0.107858 283 279 290 296 284 295 Trgb +0.091976 0.049017 0.028199 275 271 284 279 283 279 Trgb +0.201042 0.107142 0.061637 290 296 283 279 284 279 Trgb +0.000000 0.000000 0.000000 263 274 255 288 250 286 Trgb +0.000000 0.696680 0.209004 220 322 221 321 222 322 Trgb +0.000000 0.696680 0.209004 221 321 224 322 222 322 Trgb +0.000000 0.696680 0.209004 224 322 225 323 222 322 Trgb +0.000000 0.696680 0.209004 225 323 223 324 222 322 Trgb +0.000000 0.696680 0.209004 223 324 221 323 222 322 Trgb +0.000000 0.696680 0.209004 221 323 220 322 222 322 Trgb +0.000000 0.003836 0.001151 236 281 221 321 220 322 Trgb +0.000000 0.001918 0.000575 236 281 220 322 235 282 Trgb +0.000000 0.043010 0.012903 238 282 224 322 221 321 Trgb +0.000000 0.024382 0.007315 238 282 221 321 236 281 Trgb +0.000000 0.057802 0.017341 239 283 225 323 224 322 Trgb +0.000000 0.059720 0.017916 239 283 224 322 238 282 Trgb +0.032130 0.233204 0.053067 212 326 221 325 219 331 Trgb +0.000000 0.000000 0.000000 212 319 216 316 212 326 Trgb +0.019262 0.139807 0.031814 221 325 212 326 216 316 Trgb +0.033635 0.244129 0.055553 216 316 223 317 221 325 Trgb +0.055827 0.405196 0.092205 221 325 227 331 219 331 Trgb +0.069102 0.501547 0.114130 231 321 233 326 227 331 Trgb +0.067720 0.491517 0.111847 227 331 221 325 231 321 Trgb +0.058397 0.423846 0.096448 223 317 231 321 221 325 Trgb +0.012868 0.093396 0.021253 219 333 212 326 219 331 Trgb +0.000000 0.000000 0.000000 216 316 212 319 217 314 Trgb +0.001064 0.007725 0.001758 217 314 225 312 216 316 Trgb +0.015437 0.112046 0.025497 223 317 216 316 225 312 Trgb +0.036565 0.265389 0.060391 227 331 219 333 219 331 Trgb +0.050904 0.369464 0.084074 233 326 231 321 232 318 Trgb +0.031324 0.227352 0.051735 225 312 232 318 231 321 Trgb +0.040198 0.291763 0.066392 231 321 223 317 225 312 Trgb +0.000000 0.000000 0.000000 194 295 195 296 195 297 Trgb +0.000000 0.000000 0.000000 195 296 196 298 195 297 Trgb +0.000000 0.000000 0.000000 196 298 196 299 195 297 Trgb +0.000000 0.000000 0.000000 196 299 194 299 195 297 Trgb +0.000000 0.000000 0.000000 194 299 193 296 195 297 Trgb +0.000000 0.000000 0.000000 193 296 194 295 195 297 Trgb +0.000000 0.120080 0.036024 238 281 195 296 194 295 Trgb +0.000000 0.060040 0.018012 238 281 194 295 236 280 Trgb +0.000000 0.307224 0.092167 238 283 196 298 195 296 Trgb +0.000000 0.243672 0.073102 238 283 195 296 238 281 Trgb +0.000000 0.250695 0.075208 238 285 196 299 196 298 Trgb +0.000000 0.310735 0.093220 238 285 196 298 238 283 Trgb +0.017736 0.110162 0.025580 185 292 191 298 185 301 Trgb +0.007836 0.048670 0.011301 191 286 195 288 185 292 Trgb +0.025572 0.158832 0.036881 191 298 185 292 195 288 Trgb +0.053236 0.330662 0.076779 195 288 199 295 191 298 Trgb +0.027636 0.171654 0.039858 191 298 191 307 185 301 Trgb +0.057770 0.358825 0.083319 201 303 199 308 191 307 Trgb +0.058923 0.365987 0.084982 191 307 191 298 201 303 Trgb +0.076687 0.476325 0.110603 199 295 201 303 191 298 Trgb +0.000000 0.000000 0.000000 185 301 185 292 185 301 Trgb +0.007836 0.048670 0.011301 195 288 191 286 199 287 Trgb +0.029223 0.181512 0.042147 199 287 205 293 195 288 Trgb +0.056887 0.353342 0.082046 199 295 195 288 205 293 Trgb +0.009900 0.061492 0.014278 191 307 185 301 185 301 Trgb +0.061421 0.381505 0.088585 199 308 201 303 204 302 Trgb +0.066226 0.411348 0.095515 205 293 204 302 201 303 Trgb +0.080339 0.499005 0.115869 201 303 199 295 205 293 Trgb +0.000000 0.000000 0.000000 204 336 203 336 206 337 Trgb +0.000000 0.000000 0.000000 203 336 206 337 206 337 Trgb +0.000000 0.000000 0.000000 206 337 208 339 206 337 Trgb +0.000000 0.000000 0.000000 208 339 208 339 206 337 Trgb +0.000000 0.000000 0.000000 208 339 206 337 206 337 Trgb +0.000000 0.000000 0.000000 206 337 204 336 206 337 Trgb +0.000000 0.287100 0.086130 242 282 206 337 203 336 Trgb +0.000000 0.143550 0.043065 242 282 203 336 240 280 Trgb +0.000000 0.549999 0.165000 244 283 208 339 206 337 Trgb +0.000000 0.490325 0.147098 244 283 206 337 242 282 Trgb +0.000000 0.322574 0.096772 244 284 208 339 208 339 Trgb +0.000000 0.466124 0.139837 244 284 208 339 244 283 Trgb +0.000000 0.698197 0.209459 204 336 205 335 206 337 Trgb +0.000000 0.698197 0.209459 205 335 207 337 206 337 Trgb +0.000000 0.698197 0.209459 207 337 208 339 206 337 Trgb +0.000000 0.698197 0.209459 208 339 206 339 206 337 Trgb +0.000000 0.698197 0.209459 206 339 204 338 206 337 Trgb +0.000000 0.698197 0.209459 204 338 204 336 206 337 Trgb +0.000000 0.008040 0.002412 204 338 183 364 182 362 Trgb +0.000000 0.004020 0.001206 204 338 182 362 204 336 Trgb +0.000000 0.036178 0.010854 206 339 185 365 183 364 Trgb +0.000000 0.024119 0.007236 206 339 183 364 204 338 Trgb +0.000000 0.040198 0.012059 208 339 186 364 185 365 Trgb +0.000000 0.044218 0.013265 208 339 185 365 206 339 Trgb +0.000000 0.000000 0.000000 166 351 166 365 164 363 Trgb +0.000000 0.000000 0.000000 172 382 164 363 166 365 Trgb +0.121419 0.011415 0.026567 166 365 177 378 172 382 Trgb +0.296498 0.027876 0.064875 177 378 193 382 172 382 Trgb +0.293709 0.027614 0.064265 187 364 178 346 195 351 Trgb +0.000000 0.000000 0.000000 166 365 166 351 178 346 Trgb +0.171952 0.016166 0.037624 178 346 187 364 166 365 Trgb +0.293371 0.027582 0.064191 177 378 166 365 187 364 Trgb +0.469028 0.044097 0.102625 205 363 187 364 195 351 Trgb +0.476578 0.044806 0.104277 203 375 193 382 205 363 Trgb +0.522349 0.049110 0.114292 187 364 205 363 193 382 Trgb +0.468450 0.044042 0.102498 193 382 177 378 187 364 Trgb +0.121997 0.011470 0.026693 178 346 197 344 195 351 Trgb +0.000000 0.000000 0.000000 166 351 176 345 178 346 Trgb +0.000239 0.000023 0.000052 197 344 178 346 176 345 Trgb +0.297315 0.027953 0.065054 197 344 205 363 195 351 Trgb +0.000000 0.699742 0.209923 205 337 206 335 206 337 Trgb +0.000000 0.699742 0.209923 206 335 207 336 206 337 Trgb +0.000000 0.699742 0.209923 207 336 207 338 206 337 Trgb +0.000000 0.699742 0.209923 207 338 206 340 206 337 Trgb +0.000000 0.699742 0.209923 206 340 205 339 206 337 Trgb +0.000000 0.699742 0.209923 205 339 205 337 206 337 Trgb +0.000000 0.015210 0.004563 205 339 165 339 165 337 Trgb +0.000000 0.011503 0.003451 205 339 165 337 205 337 Trgb +0.000000 0.013720 0.004116 206 340 167 340 165 339 Trgb +0.000000 0.016319 0.004896 206 340 165 339 205 339 Trgb +0.000000 0.005197 0.001559 205 337 165 337 166 335 Trgb +0.000000 0.002599 0.000780 205 337 166 335 206 335 Trgb +0.058239 0.091602 0.029968 159 333 159 344 153 334 Trgb +0.040484 0.063676 0.020832 156 347 153 334 159 344 Trgb +0.079983 0.125802 0.041157 159 344 164 351 156 347 Trgb +0.017755 0.027926 0.009136 163 325 159 333 153 334 Trgb +0.232855 0.366250 0.119821 173 347 170 334 178 337 Trgb +0.127138 0.199970 0.065422 159 344 159 333 170 334 Trgb +0.193657 0.304596 0.099650 170 334 173 347 159 344 Trgb +0.164256 0.258353 0.084522 164 351 159 344 173 347 Trgb +0.207746 0.326757 0.106901 180 341 173 347 178 337 Trgb +0.139147 0.218860 0.071601 170 350 164 351 173 347 Trgb +0.176996 0.278391 0.091077 170 334 177 328 178 337 Trgb +0.086654 0.136294 0.044590 159 333 163 325 170 334 Trgb +0.097313 0.153061 0.050075 177 328 170 334 163 325 Trgb +0.028415 0.044692 0.014621 163 325 169 324 177 328 Trgb +0.151887 0.238897 0.078157 177 328 180 341 178 337 Trgb +0.000000 0.698962 0.209689 220 381 218 381 220 381 Trgb +0.000000 0.698962 0.209689 218 381 217 381 220 381 Trgb +0.000000 0.698962 0.209689 217 381 219 380 220 381 Trgb +0.000000 0.698962 0.209689 219 380 221 380 220 381 Trgb +0.000000 0.698962 0.209689 221 380 222 380 220 381 Trgb +0.000000 0.698962 0.209689 222 380 220 381 220 381 Trgb +0.000000 0.016514 0.004954 205 337 219 380 217 381 Trgb +0.000000 0.008257 0.002477 205 337 217 381 204 338 Trgb +0.000000 0.033230 0.009969 207 336 221 380 219 380 Trgb +0.000000 0.029001 0.008700 207 336 219 380 205 337 Trgb +0.000000 0.020944 0.006283 208 337 222 380 221 380 Trgb +0.000000 0.029201 0.008760 208 337 221 380 207 336 Trgb +0.307148 0.060281 0.073486 210 400 221 393 226 401 Trgb +0.252761 0.049607 0.060474 201 384 214 377 221 393 Trgb +0.175305 0.034406 0.041942 221 393 210 400 201 384 Trgb +0.015997 0.003140 0.003827 199 388 201 384 210 400 Trgb +0.461610 0.090596 0.110441 221 393 239 390 226 401 Trgb +0.396072 0.077734 0.094761 214 377 231 373 221 393 Trgb +0.473078 0.092847 0.113185 239 390 221 393 231 373 Trgb +0.422991 0.083017 0.101202 231 373 240 373 239 390 Trgb +0.000000 0.000000 0.000000 211 364 201 371 213 360 Trgb +0.093452 0.018341 0.022359 214 377 201 384 211 364 Trgb +0.000000 0.000000 0.000000 201 371 211 364 201 384 Trgb +0.000000 0.000000 0.000000 201 384 199 388 201 371 Trgb +0.000000 0.000000 0.000000 229 361 211 364 213 360 Trgb +0.236764 0.046468 0.056646 231 373 214 377 211 364 Trgb +0.143312 0.028127 0.034288 211 364 229 361 231 373 Trgb +0.252533 0.049563 0.060419 240 373 231 373 229 361 Trgb +0.000000 0.699663 0.209899 381 310 379 311 383 307 Trgb +0.000000 0.699663 0.209899 379 311 381 307 383 307 Trgb +0.000000 0.699663 0.209899 381 307 385 304 383 307 Trgb +0.000000 0.699663 0.209899 385 304 387 303 383 307 Trgb +0.000000 0.699663 0.209899 387 303 385 307 383 307 Trgb +0.000000 0.699663 0.209899 385 307 381 310 383 307 Trgb +0.000000 0.009326 0.002798 303 230 381 307 379 311 Trgb +0.000000 0.004663 0.001399 303 230 379 311 301 233 Trgb +0.000000 0.018911 0.005673 307 226 385 304 381 307 Trgb +0.000000 0.016450 0.004935 307 226 381 307 303 230 Trgb +0.000000 0.012047 0.003614 310 226 387 303 385 304 Trgb +0.000000 0.016710 0.005013 310 226 385 304 307 226 Trgb +0.000000 0.000000 0.000000 381 310 381 307 383 307 Trgb +0.000000 0.000000 0.000000 381 307 384 304 383 307 Trgb +0.000000 0.000000 0.000000 384 304 386 304 383 307 Trgb +0.000000 0.000000 0.000000 386 304 385 307 383 307 Trgb +0.000000 0.000000 0.000000 385 307 383 310 383 307 Trgb +0.000000 0.000000 0.000000 383 310 381 310 383 307 Trgb +0.000000 0.025647 0.007694 383 310 439 357 437 357 Trgb +0.000000 0.012824 0.003847 383 310 437 357 381 310 Trgb +0.000000 0.054647 0.016394 385 307 442 354 439 357 Trgb +0.000000 0.046559 0.013968 385 307 439 357 383 310 Trgb +0.000000 0.037089 0.011127 386 304 442 352 442 354 Trgb +0.000000 0.049912 0.014974 386 304 442 354 385 307 Trgb +0.000000 0.687787 0.206336 438 356 437 353 440 355 Trgb +0.000000 0.687787 0.206336 437 353 439 352 440 355 Trgb +0.000000 0.687787 0.206336 439 352 442 353 440 355 Trgb +0.000000 0.687787 0.206336 442 353 442 356 440 355 Trgb +0.000000 0.687787 0.206336 442 356 440 357 440 355 Trgb +0.000000 0.687787 0.206336 440 357 438 356 440 355 Trgb +0.000000 0.101740 0.030522 442 356 464 346 462 348 Trgb +0.000000 0.074722 0.022417 442 356 462 348 440 357 Trgb +0.000000 0.096953 0.029086 442 353 463 344 464 346 Trgb +0.000000 0.112855 0.033857 442 353 464 346 442 356 Trgb +0.000000 0.027017 0.008105 439 352 461 343 463 344 Trgb +0.000000 0.054034 0.016210 439 352 463 344 442 353 Trgb +0.000000 0.691825 0.207548 460 345 460 344 461 345 Trgb +0.000000 0.691825 0.207548 460 344 462 345 461 345 Trgb +0.000000 0.691825 0.207548 462 345 463 345 461 345 Trgb +0.000000 0.691825 0.207548 463 345 463 346 461 345 Trgb +0.000000 0.691825 0.207548 463 346 461 346 461 345 Trgb +0.000000 0.691825 0.207548 461 346 460 345 461 345 Trgb +0.000000 0.075590 0.022677 462 345 472 314 474 314 Trgb +0.000000 0.090975 0.027293 462 345 474 314 463 345 Trgb +0.000000 0.020068 0.006020 460 344 471 313 472 314 Trgb +0.000000 0.040137 0.012041 460 344 472 314 462 345 Trgb +0.000000 0.000000 0.000000 460 345 470 314 471 313 Trgb +0.000000 0.000000 0.000000 460 345 471 313 460 344 Trgb +0.009659 0.007219 0.003376 468 307 460 308 472 301 Trgb +0.060429 0.045167 0.021119 484 307 472 301 476 303 Trgb +0.283462 0.211871 0.099067 485 316 478 310 484 307 Trgb +0.156813 0.117208 0.054804 472 301 484 307 478 310 Trgb +0.106043 0.079261 0.037061 478 310 468 307 472 301 Trgb +0.182166 0.136158 0.063665 478 324 472 327 468 326 Trgb +0.328054 0.245201 0.114651 485 316 483 320 478 324 Trgb +0.077145 0.057661 0.026961 460 321 467 317 468 326 Trgb +0.000000 0.000000 0.000000 459 313 460 308 460 321 Trgb +0.035955 0.026874 0.012566 467 317 460 321 460 308 Trgb +0.045614 0.034094 0.015942 460 308 468 307 467 317 Trgb +0.195825 0.146368 0.068439 467 317 478 324 468 326 Trgb +0.341713 0.255410 0.119425 478 310 485 316 478 324 Trgb +0.251020 0.187622 0.087728 478 324 467 317 478 310 Trgb +0.141998 0.106135 0.049627 468 307 478 310 467 317 Trgb +0.000000 0.000000 0.000000 463 344 462 346 461 345 Trgb +0.000000 0.000000 0.000000 462 346 461 347 461 345 Trgb +0.000000 0.000000 0.000000 461 347 460 346 461 345 Trgb +0.000000 0.000000 0.000000 460 346 460 345 461 345 Trgb +0.000000 0.000000 0.000000 460 345 462 344 461 345 Trgb +0.000000 0.000000 0.000000 462 344 463 344 461 345 Trgb +0.000000 0.014411 0.004323 461 347 485 367 485 366 Trgb +0.000000 0.007206 0.002162 461 347 485 366 460 346 Trgb +0.000000 0.054003 0.016201 462 346 487 366 485 367 Trgb +0.000000 0.037810 0.011343 462 346 485 367 461 347 Trgb +0.000000 0.055784 0.016735 463 344 487 364 487 366 Trgb +0.000000 0.062990 0.018897 463 344 487 366 462 346 Trgb +0.117681 0.406254 0.104787 491 366 493 361 495 366 Trgb +0.126551 0.436877 0.112686 495 366 491 373 491 366 Trgb +0.122641 0.423379 0.109204 487 372 491 366 491 373 Trgb +0.006385 0.022042 0.005685 481 358 487 358 480 360 Trgb +0.038254 0.132061 0.034063 491 358 493 361 487 358 Trgb +0.006385 0.022042 0.005685 487 358 481 358 491 358 Trgb +0.077571 0.267788 0.069072 481 373 487 372 491 373 Trgb +0.000000 0.000000 0.000000 477 365 481 358 480 360 Trgb +0.014824 0.051177 0.013200 487 358 482 366 480 360 Trgb +0.085380 0.294746 0.076025 493 361 491 366 487 358 Trgb +0.061950 0.213861 0.055162 482 366 487 358 491 366 Trgb +0.090341 0.311871 0.080442 491 366 487 372 482 366 Trgb +0.008440 0.029135 0.007515 482 366 477 365 480 360 Trgb +0.002055 0.007094 0.001830 481 373 479 370 477 365 Trgb +0.010495 0.036229 0.009345 477 365 482 366 481 373 Trgb +0.045270 0.156280 0.040310 487 372 481 373 482 366 Trgb +0.000000 0.000000 0.000000 461 344 461 344 461 345 Trgb +0.000000 0.000000 0.000000 461 344 462 346 461 345 Trgb +0.000000 0.000000 0.000000 462 346 462 347 461 345 Trgb +0.000000 0.000000 0.000000 462 347 461 346 461 345 Trgb +0.000000 0.000000 0.000000 461 346 460 344 461 345 Trgb +0.000000 0.000000 0.000000 460 344 461 344 461 345 Trgb +0.000000 0.074013 0.022204 462 346 495 335 494 336 Trgb +0.000000 0.062494 0.018748 462 346 494 336 462 347 Trgb +0.000000 0.051548 0.015464 461 344 494 333 495 335 Trgb +0.000000 0.068539 0.020562 461 344 495 335 462 346 Trgb +0.000000 0.011519 0.003456 461 344 493 332 494 333 Trgb +0.000000 0.023037 0.006911 461 344 494 333 461 344 Trgb +0.094155 0.178202 0.054471 504 331 498 324 503 331 Trgb +0.011283 0.021354 0.006527 494 326 490 324 498 324 Trgb +0.075245 0.142413 0.043532 498 324 504 331 494 326 Trgb +0.135510 0.256474 0.078397 498 333 494 326 504 331 Trgb +0.000000 0.000000 0.000000 484 337 485 329 484 337 Trgb +0.170934 0.323519 0.098891 497 344 499 341 503 339 Trgb +0.190588 0.360716 0.110261 504 331 503 339 499 341 Trgb +0.198172 0.375072 0.114649 499 341 498 333 504 331 Trgb +0.021265 0.040247 0.012302 485 329 490 336 484 337 Trgb +0.011283 0.021354 0.006527 490 324 494 326 485 329 Trgb +0.032547 0.061601 0.018830 490 336 485 329 494 326 Trgb +0.092812 0.175662 0.053695 494 326 498 333 490 336 Trgb +0.031247 0.059140 0.018077 490 336 490 344 484 337 Trgb +0.128236 0.242707 0.074189 499 341 497 344 490 344 Trgb +0.105192 0.199092 0.060857 490 344 490 336 499 341 Trgb +0.155475 0.294260 0.089947 498 333 499 341 490 336 Trgb +0.000000 0.698488 0.209546 453 408 454 408 451 408 Trgb +0.000000 0.698488 0.209546 454 408 452 409 451 408 Trgb +0.000000 0.698488 0.209546 452 409 449 409 451 408 Trgb +0.000000 0.698488 0.209546 449 409 448 409 451 408 Trgb +0.000000 0.698488 0.209546 448 409 450 408 451 408 Trgb +0.000000 0.698488 0.209546 450 408 453 408 451 408 Trgb +0.000000 0.035029 0.010509 442 354 454 408 453 408 Trgb +0.000000 0.040113 0.012034 442 354 453 408 441 354 Trgb +0.000000 0.010168 0.003050 439 354 450 408 448 409 Trgb +0.000000 0.005084 0.001525 439 354 448 409 437 355 Trgb +0.000000 0.035216 0.010565 441 354 453 408 450 408 Trgb +0.000000 0.025234 0.007570 441 354 450 408 439 354 Trgb +0.000000 0.696558 0.208967 443 433 443 434 441 433 Trgb +0.000000 0.696558 0.208967 443 434 441 435 441 433 Trgb +0.000000 0.696558 0.208967 441 435 439 434 441 433 Trgb +0.000000 0.696558 0.208967 439 434 439 432 441 433 Trgb +0.000000 0.696558 0.208967 439 432 441 432 441 433 Trgb +0.000000 0.696558 0.208967 441 432 443 433 441 433 Trgb +0.000000 0.059446 0.017834 453 409 443 434 443 433 Trgb +0.000000 0.060519 0.018156 453 409 443 433 453 408 Trgb +0.000000 0.002147 0.000644 451 407 441 432 439 432 Trgb +0.000000 0.001074 0.000322 451 407 439 432 449 407 Trgb +0.000000 0.042136 0.012641 453 408 443 433 441 432 Trgb +0.000000 0.022679 0.006804 453 408 441 432 451 407 Trgb +0.329826 0.121701 0.090305 449 438 444 450 437 444 Trgb +0.430194 0.158735 0.117786 456 429 458 440 449 438 Trgb +0.398450 0.147022 0.109094 444 450 449 438 458 440 Trgb +0.318627 0.117568 0.087239 458 440 450 446 444 450 Trgb +0.180059 0.066439 0.049300 444 450 428 444 437 444 Trgb +0.230910 0.085202 0.063223 432 432 449 438 437 444 Trgb +0.331278 0.122236 0.090703 445 421 456 429 449 438 Trgb +0.200618 0.074025 0.054929 449 438 432 432 445 421 Trgb +0.050851 0.018763 0.013923 432 420 445 421 432 432 Trgb +0.081143 0.029941 0.022217 428 444 432 432 437 444 Trgb +0.004639 0.001712 0.001270 432 432 428 444 425 427 Trgb +0.004639 0.001712 0.001270 425 427 432 420 432 432 Trgb +0.223084 0.082315 0.061080 456 429 445 421 455 423 Trgb +0.087786 0.032392 0.024036 438 416 455 423 445 421 Trgb +0.046212 0.017052 0.012653 445 421 432 420 438 416 Trgb +0.000000 0.699959 0.209988 485 427 484 429 484 427 Trgb +0.000000 0.699959 0.209988 484 429 483 429 484 427 Trgb +0.000000 0.699959 0.209988 483 429 484 427 484 427 Trgb +0.000000 0.699959 0.209988 484 427 485 425 484 427 Trgb +0.000000 0.699959 0.209988 485 425 485 426 484 427 Trgb +0.000000 0.699959 0.209988 485 426 485 427 484 427 Trgb +0.000000 0.005578 0.001673 450 408 484 427 483 429 Trgb +0.000000 0.003816 0.001145 450 408 483 429 450 410 Trgb +0.000000 0.005972 0.001792 451 407 485 425 484 427 Trgb +0.000000 0.006656 0.001997 451 407 484 427 450 408 Trgb +0.000000 0.001762 0.000529 452 407 485 426 485 425 Trgb +0.000000 0.003525 0.001057 452 407 485 425 451 407 Trgb +0.371114 0.204675 0.115158 489 443 491 432 498 435 Trgb +0.172821 0.095313 0.053627 475 436 479 426 491 432 Trgb +0.240382 0.132574 0.074591 491 432 489 443 475 436 Trgb +0.114646 0.063229 0.035575 477 441 475 436 489 443 Trgb +0.382205 0.210792 0.118599 491 432 499 422 498 435 Trgb +0.183911 0.101430 0.057068 479 426 486 416 491 432 Trgb +0.262562 0.144807 0.081474 499 422 491 432 486 416 Trgb +0.144668 0.079787 0.044891 486 416 492 413 499 422 Trgb +0.000000 0.000000 0.000000 471 421 470 432 471 419 Trgb +0.047085 0.025968 0.014611 479 426 475 436 471 421 Trgb +0.016255 0.008965 0.005044 470 432 471 421 475 436 Trgb +0.016255 0.008965 0.005044 475 436 477 441 470 432 Trgb +0.000000 0.000000 0.000000 480 412 471 421 471 419 Trgb +0.058175 0.032084 0.018052 486 416 479 426 471 421 Trgb +0.027345 0.015081 0.008485 471 421 480 412 486 416 Trgb +0.035187 0.019406 0.010919 492 413 486 416 480 412 Trgb +0.000000 0.668910 0.200673 449 408 449 407 451 408 Trgb +0.000000 0.668910 0.200673 449 407 451 407 451 408 Trgb +0.000000 0.668910 0.200673 451 407 452 408 451 408 Trgb +0.000000 0.668910 0.200673 452 408 453 409 451 408 Trgb +0.000000 0.668910 0.200673 453 409 451 409 451 408 Trgb +0.000000 0.668910 0.200673 451 409 449 408 451 408 Trgb +0.000000 0.099272 0.029782 451 409 439 442 437 441 Trgb +0.000000 0.049636 0.014891 451 409 437 441 449 408 Trgb +0.000000 0.181706 0.054512 453 409 441 441 439 442 Trgb +0.000000 0.165307 0.049592 453 409 439 442 451 409 Trgb +0.000000 0.000000 0.000000 449 408 437 441 437 440 Trgb +0.000000 0.000000 0.000000 449 408 437 440 449 407 Trgb +0.004375 0.127388 0.026353 433 445 440 448 437 446 Trgb +0.003962 0.115366 0.023866 433 441 438 444 433 445 Trgb +0.008337 0.242754 0.050218 440 448 433 445 438 444 Trgb +0.015764 0.459008 0.094954 438 444 443 445 440 448 Trgb +0.018343 0.534106 0.110490 443 445 446 443 440 448 Trgb +0.000000 0.000000 0.000000 432 438 433 441 433 445 Trgb +0.007368 0.214543 0.044382 443 439 436 437 441 435 Trgb +0.003962 0.115366 0.023866 438 444 433 441 436 437 Trgb +0.010090 0.293808 0.060780 436 437 443 439 438 444 Trgb +0.017517 0.510062 0.105516 443 445 438 444 443 439 Trgb +0.009534 0.277619 0.057431 445 436 443 439 441 435 Trgb +0.014836 0.431982 0.089364 443 439 445 436 446 443 Trgb +0.020096 0.585160 0.121051 446 443 443 445 443 439 Trgb +0.001240 0.036101 0.007468 436 437 438 433 441 435 Trgb +0.000000 0.000000 0.000000 433 441 432 438 436 437 Trgb +0.000000 0.000000 0.000000 438 433 436 437 432 438 Trgb +0.000000 0.699421 0.209826 496 351 496 354 496 353 Trgb +0.000000 0.699421 0.209826 496 354 496 355 496 353 Trgb +0.000000 0.699421 0.209826 496 355 496 354 496 353 Trgb +0.000000 0.699421 0.209826 496 354 496 351 496 353 Trgb +0.000000 0.699421 0.209826 496 351 496 350 496 353 Trgb +0.000000 0.699421 0.209826 496 350 496 351 496 353 Trgb +0.000000 0.023624 0.007087 439 356 496 354 496 355 Trgb +0.000000 0.018777 0.005633 439 356 496 355 440 357 Trgb +0.000000 0.019183 0.005755 439 354 496 351 496 354 Trgb +0.000000 0.023827 0.007148 439 354 496 354 439 356 Trgb +0.000000 0.004847 0.001454 439 352 496 350 496 351 Trgb +0.000000 0.009693 0.002908 439 352 496 351 439 354 Trgb +0.000000 0.172605 0.051782 496 353 494 352 496 353 Trgb +0.000000 0.172605 0.051782 494 352 494 351 496 353 Trgb +0.000000 0.172605 0.051782 494 351 496 352 496 353 Trgb +0.000000 0.172605 0.051782 496 352 497 353 496 353 Trgb +0.000000 0.172605 0.051782 497 353 497 354 496 353 Trgb +0.000000 0.172605 0.051782 497 354 496 353 496 353 Trgb +0.000000 0.589120 0.176736 497 353 517 321 517 322 Trgb +0.000000 0.508333 0.152500 497 353 517 322 497 354 Trgb +0.000000 0.384877 0.115463 496 352 516 320 517 321 Trgb +0.000000 0.527393 0.158218 496 352 517 321 497 353 Trgb +0.000000 0.080787 0.024236 494 351 515 320 516 320 Trgb +0.000000 0.161575 0.048472 494 351 516 320 496 352 Trgb +0.147652 0.061182 0.041767 532 317 522 307 524 308 Trgb +0.249743 0.103485 0.070645 526 322 516 315 522 307 Trgb +0.298271 0.123593 0.084373 522 307 532 317 526 322 Trgb +0.412156 0.170783 0.116588 531 329 526 322 532 317 Trgb +0.040189 0.016653 0.011368 522 307 512 306 524 308 Trgb +0.099123 0.041073 0.028039 516 315 506 311 522 307 Trgb +0.040189 0.016653 0.011368 512 306 522 307 506 311 Trgb +0.000000 0.000000 0.000000 506 311 502 313 512 306 Trgb +0.155686 0.064511 0.044039 510 326 520 336 507 334 Trgb +0.252711 0.104714 0.071485 516 315 526 322 510 326 Trgb +0.304207 0.126053 0.086052 520 336 510 326 526 322 Trgb +0.415124 0.172013 0.117427 526 322 531 329 520 336 Trgb +0.045255 0.018752 0.012802 500 325 510 326 507 334 Trgb +0.102091 0.042303 0.028879 506 311 516 315 510 326 Trgb +0.043157 0.017883 0.012208 510 326 500 325 506 311 Trgb +0.000000 0.000000 0.000000 502 313 506 311 500 325 Trgb +0.000000 0.000000 0.000000 496 354 495 352 496 353 Trgb +0.000000 0.000000 0.000000 495 352 494 351 496 353 Trgb +0.000000 0.000000 0.000000 494 351 496 351 496 353 Trgb +0.000000 0.000000 0.000000 496 351 497 353 496 353 Trgb +0.000000 0.000000 0.000000 497 353 497 354 496 353 Trgb +0.000000 0.000000 0.000000 497 354 496 354 496 353 Trgb +0.000000 0.192098 0.057629 497 353 525 330 525 331 Trgb +0.000000 0.177366 0.053210 497 353 525 331 497 354 Trgb +0.000000 0.098407 0.029522 496 351 523 328 525 330 Trgb +0.000000 0.152618 0.045785 496 351 525 330 497 353 Trgb +0.000000 0.014732 0.004420 494 351 522 328 523 328 Trgb +0.000000 0.029463 0.008839 494 351 523 328 496 351 Trgb +0.180153 0.097673 0.055565 540 329 531 317 535 320 Trgb +0.192968 0.104621 0.059518 532 329 523 320 531 317 Trgb +0.282334 0.153073 0.087081 531 317 540 329 532 329 Trgb +0.391187 0.212089 0.120655 535 338 532 329 540 329 Trgb +0.087413 0.047393 0.026961 524 342 516 342 512 339 Trgb +0.315976 0.171312 0.097458 535 338 532 342 524 342 Trgb +0.067950 0.036840 0.020958 523 320 515 317 531 317 Trgb +0.092721 0.050270 0.028598 515 330 524 342 512 339 Trgb +0.160670 0.087110 0.049556 523 320 532 329 515 330 Trgb +0.217739 0.118051 0.067158 524 342 515 330 532 329 Trgb +0.358889 0.194578 0.110694 532 329 535 338 524 342 Trgb +0.005308 0.002878 0.001637 508 330 515 330 512 339 Trgb +0.035652 0.019330 0.010996 515 317 523 320 515 330 Trgb +0.005308 0.002878 0.001637 515 330 508 330 515 317 Trgb +0.000000 0.000000 0.000000 512 321 515 317 508 330 Trgb +0.000000 0.000000 0.000000 496 353 495 354 496 353 Trgb +0.000000 0.000000 0.000000 495 354 495 354 496 353 Trgb +0.000000 0.000000 0.000000 495 354 496 352 496 353 Trgb +0.000000 0.000000 0.000000 496 352 497 351 496 353 Trgb +0.000000 0.000000 0.000000 497 351 497 352 496 353 Trgb +0.000000 0.000000 0.000000 497 352 496 353 496 353 Trgb +0.000000 0.028228 0.008468 497 352 526 379 524 380 Trgb +0.000000 0.027588 0.008276 497 352 524 380 496 353 Trgb +0.000000 0.010903 0.003271 497 351 526 378 526 379 Trgb +0.000000 0.019885 0.005966 497 351 526 379 497 352 Trgb +0.000000 0.017965 0.005390 496 353 524 380 523 381 Trgb +0.000000 0.008983 0.002695 496 353 523 381 495 354 Trgb +0.553377 0.015557 0.113787 535 393 545 380 539 394 Trgb +0.488126 0.013722 0.100370 525 384 535 373 535 393 Trgb +0.537456 0.015109 0.110513 545 380 535 393 535 373 Trgb +0.413448 0.011623 0.085014 535 373 539 366 545 380 Trgb +0.433488 0.012186 0.089135 525 399 535 393 539 394 Trgb +0.368237 0.010352 0.075718 514 393 525 384 535 393 Trgb +0.297677 0.008368 0.061209 535 393 525 399 514 393 Trgb +0.088894 0.002499 0.018279 510 393 514 393 525 399 Trgb +0.000000 0.000000 0.000000 524 360 514 373 510 366 Trgb +0.279343 0.007853 0.057439 535 373 525 384 514 373 Trgb +0.150823 0.004240 0.031012 514 373 524 360 535 373 Trgb +0.235597 0.006623 0.048444 539 366 535 373 524 360 Trgb +0.000000 0.000000 0.000000 514 373 504 380 510 366 Trgb +0.159453 0.004483 0.032787 525 384 514 393 514 373 Trgb +0.030933 0.000870 0.006360 504 380 514 373 514 393 Trgb +0.030933 0.000870 0.006360 514 393 510 393 504 380 Trgb +0.000000 0.698638 0.209592 397 383 401 383 397 384 Trgb +0.000000 0.698638 0.209592 401 383 400 384 397 384 Trgb +0.000000 0.698638 0.209592 400 384 396 385 397 384 Trgb +0.000000 0.698638 0.209592 396 385 393 385 397 384 Trgb +0.000000 0.698638 0.209592 393 385 393 384 397 384 Trgb +0.000000 0.698638 0.209592 393 384 397 383 397 384 Trgb +0.000000 0.038092 0.011428 387 306 401 383 397 383 Trgb +0.000000 0.033330 0.009999 387 306 397 383 384 306 Trgb +0.000000 0.000000 0.000000 380 307 393 384 393 385 Trgb +0.000000 0.000000 0.000000 380 307 393 385 380 308 Trgb +0.000000 0.019045 0.005714 384 306 397 383 393 384 Trgb +0.000000 0.009523 0.002857 384 306 393 384 380 307 Trgb +0.000000 0.617376 0.185213 369 434 371 436 369 435 Trgb +0.000000 0.617376 0.185213 371 436 371 437 369 435 Trgb +0.000000 0.617376 0.185213 371 437 369 436 369 435 Trgb +0.000000 0.617376 0.185213 369 436 367 434 369 435 Trgb +0.000000 0.617376 0.185213 367 434 367 434 369 435 Trgb +0.000000 0.617376 0.185213 367 434 369 434 369 435 Trgb +0.000000 0.264623 0.079387 399 385 371 436 369 434 Trgb +0.000000 0.200825 0.060247 399 385 369 434 397 383 Trgb +0.000000 0.237071 0.071121 399 386 371 437 371 436 Trgb +0.000000 0.282747 0.084824 399 386 371 436 399 385 Trgb +0.000000 0.091351 0.027405 397 383 369 434 367 434 Trgb +0.000000 0.045675 0.013703 397 383 367 434 394 383 Trgb +0.000000 0.698748 0.209624 369 435 369 433 369 435 Trgb +0.000000 0.698748 0.209624 369 433 369 434 369 435 Trgb +0.000000 0.698748 0.209624 369 434 369 435 369 435 Trgb +0.000000 0.698748 0.209624 369 435 370 437 369 435 Trgb +0.000000 0.698748 0.209624 370 437 369 437 369 435 Trgb +0.000000 0.698748 0.209624 369 437 369 435 369 435 Trgb +0.000000 0.035263 0.010579 369 437 329 445 329 443 Trgb +0.000000 0.028701 0.008610 369 437 329 443 369 435 Trgb +0.000000 0.027065 0.008120 370 437 329 445 329 445 Trgb +0.000000 0.034445 0.010334 370 437 329 445 369 437 Trgb +0.000000 0.014759 0.004428 369 435 329 443 328 442 Trgb +0.000000 0.007380 0.002214 369 435 328 442 369 433 Trgb +0.000793 0.000950 0.000349 318 443 321 455 315 446 Trgb +0.122526 0.146716 0.053848 327 441 329 451 318 443 Trgb +0.080197 0.096030 0.035245 321 455 318 443 329 451 Trgb +0.149369 0.178859 0.065646 329 451 331 457 321 455 Trgb +0.000000 0.000000 0.000000 318 436 318 443 315 446 Trgb +0.043122 0.051635 0.018951 326 432 327 441 318 443 Trgb +0.000000 0.000000 0.000000 318 443 318 436 326 432 Trgb +0.000000 0.000000 0.000000 326 430 326 432 318 436 Trgb +0.243693 0.291804 0.107100 340 451 337 439 342 441 Trgb +0.201137 0.240847 0.088397 329 451 327 441 337 439 Trgb +0.255047 0.305399 0.112089 337 439 340 451 329 451 Trgb +0.245608 0.294097 0.107941 331 457 329 451 340 451 Trgb +0.146662 0.175617 0.064456 337 439 337 432 342 441 Trgb +0.121733 0.145766 0.053500 327 441 326 432 337 439 Trgb +0.078611 0.094131 0.034548 337 432 337 439 326 432 Trgb +0.000000 0.000000 0.000000 326 432 326 430 337 432 Trgb +0.000000 0.696899 0.209070 360 448 358 449 358 447 Trgb +0.000000 0.696899 0.209070 358 449 356 448 358 447 Trgb +0.000000 0.696899 0.209070 356 448 356 446 358 447 Trgb +0.000000 0.696899 0.209070 356 446 358 445 358 447 Trgb +0.000000 0.696899 0.209070 358 445 360 446 358 447 Trgb +0.000000 0.696899 0.209070 360 446 360 448 358 447 Trgb +0.000000 0.000000 0.000000 369 433 358 445 356 446 Trgb +0.000000 0.000000 0.000000 369 433 356 446 367 434 Trgb +0.000000 0.028512 0.008554 371 434 360 446 358 445 Trgb +0.000000 0.014256 0.004277 371 434 358 445 369 433 Trgb +0.000000 0.057393 0.017218 371 436 360 448 360 446 Trgb +0.000000 0.050081 0.015024 371 436 360 446 371 434 Trgb +0.031196 0.349100 0.076059 362 452 354 455 356 450 Trgb +0.044298 0.495717 0.108003 366 452 361 456 362 452 Trgb +0.031814 0.356014 0.077566 354 455 362 452 361 456 Trgb +0.013721 0.153545 0.033453 361 456 355 455 354 455 Trgb +0.013103 0.146631 0.031947 354 455 351 446 356 450 Trgb +0.000000 0.000000 0.000000 350 450 350 443 351 446 Trgb +0.004147 0.046407 0.010111 351 446 354 455 350 450 Trgb +0.035568 0.398023 0.086718 359 444 362 452 356 450 Trgb +0.048670 0.544640 0.118662 366 445 366 452 362 452 Trgb +0.040558 0.453861 0.098884 362 452 359 444 366 445 Trgb +0.025556 0.285986 0.062308 362 440 366 445 359 444 Trgb +0.017475 0.195555 0.042606 351 446 359 444 356 450 Trgb +0.000000 0.000000 0.000000 350 443 355 439 351 446 Trgb +0.008519 0.095331 0.020770 359 444 351 446 355 439 Trgb +0.011610 0.129925 0.028307 355 439 362 440 359 444 Trgb +0.017037 0.190656 0.041539 366 445 362 440 362 440 Trgb +0.000000 0.000000 0.000000 367 434 369 434 369 435 Trgb +0.000000 0.000000 0.000000 369 434 371 435 369 435 Trgb +0.000000 0.000000 0.000000 371 435 371 436 369 435 Trgb +0.000000 0.000000 0.000000 371 436 369 436 369 435 Trgb +0.000000 0.000000 0.000000 369 436 367 436 369 435 Trgb +0.000000 0.000000 0.000000 367 436 367 434 369 435 Trgb +0.000000 0.242861 0.072858 369 436 372 469 370 468 Trgb +0.000000 0.121430 0.036429 369 436 370 468 367 436 Trgb +0.000000 0.537282 0.161185 371 436 374 468 372 469 Trgb +0.000000 0.450787 0.135236 371 436 372 469 369 436 Trgb +0.000000 0.380917 0.114275 371 435 374 467 374 468 Trgb +0.000000 0.502347 0.150704 371 435 374 468 371 436 Trgb +0.023187 0.019364 0.008510 357 469 363 475 366 481 Trgb +0.316349 0.264191 0.116108 374 477 384 473 381 480 Trgb +0.200748 0.167650 0.073679 381 480 366 481 374 477 Trgb +0.121324 0.101321 0.044529 363 475 374 477 366 481 Trgb +0.006442 0.005380 0.002364 365 465 363 456 371 456 Trgb +0.006442 0.005380 0.002364 363 456 365 465 357 469 Trgb +0.018714 0.015629 0.006869 363 475 357 469 365 465 Trgb +0.298993 0.249697 0.109738 384 473 387 466 381 480 Trgb +0.093666 0.078222 0.034378 379 463 365 465 371 456 Trgb +0.311877 0.260456 0.114467 384 473 374 477 379 463 Trgb +0.191803 0.160180 0.070397 365 465 379 463 374 477 Trgb +0.116852 0.097586 0.042888 374 477 363 475 365 465 Trgb +0.000000 0.000000 0.000000 363 456 378 454 371 456 Trgb +0.087224 0.072843 0.032013 378 454 379 463 371 456 Trgb +0.294521 0.245962 0.108097 387 466 384 473 379 463 Trgb +0.168006 0.140306 0.061662 379 463 378 454 387 466 Trgb +0.000000 0.699893 0.209968 443 419 441 421 443 419 Trgb +0.000000 0.699893 0.209968 441 421 441 420 443 419 Trgb +0.000000 0.699893 0.209968 441 420 442 418 443 419 Trgb +0.000000 0.699893 0.209968 442 418 444 416 443 419 Trgb +0.000000 0.699893 0.209968 444 416 444 417 443 419 Trgb +0.000000 0.699893 0.209968 444 417 443 419 443 419 Trgb +0.000000 0.001169 0.000351 395 386 441 420 441 421 Trgb +0.000000 0.000585 0.000175 395 386 441 421 396 386 Trgb +0.000000 0.008146 0.002444 396 383 442 418 441 420 Trgb +0.000000 0.004950 0.001485 396 383 441 420 395 386 Trgb +0.000000 0.010173 0.003052 398 382 444 416 442 418 Trgb +0.000000 0.010758 0.003227 398 382 442 418 396 383 Trgb +0.000000 0.699690 0.209907 475 413 475 415 474 414 Trgb +0.000000 0.699690 0.209907 475 415 474 416 474 414 Trgb +0.000000 0.699690 0.209907 474 416 473 415 474 414 Trgb +0.000000 0.699690 0.209907 473 415 473 412 474 414 Trgb +0.000000 0.699690 0.209907 473 412 474 412 474 414 Trgb +0.000000 0.699690 0.209907 474 412 475 413 474 414 Trgb +0.000000 0.009727 0.002918 441 419 473 415 474 416 Trgb +0.000000 0.014819 0.004446 441 419 474 416 443 421 Trgb +0.000000 0.001545 0.000463 441 417 473 412 473 415 Trgb +0.000000 0.003090 0.000927 441 417 473 415 441 419 Trgb +0.000000 0.000000 0.000000 442 416 474 412 473 412 Trgb +0.000000 0.000000 0.000000 442 416 473 412 441 417 Trgb +0.444852 0.102658 0.109502 492 406 490 425 489 411 Trgb +0.475371 0.109701 0.117014 490 425 477 419 489 411 Trgb +0.234152 0.054035 0.057637 472 433 463 423 477 419 Trgb +0.394626 0.091068 0.097139 477 419 490 425 472 433 Trgb +0.358772 0.082794 0.088313 482 431 472 433 490 425 Trgb +0.311095 0.071791 0.076577 479 399 492 406 489 411 Trgb +0.148213 0.034203 0.036483 492 406 479 399 476 395 Trgb +0.048297 0.011145 0.011888 466 396 476 395 479 399 Trgb +0.341613 0.078834 0.084089 477 419 479 399 489 411 Trgb +0.152014 0.035080 0.037419 463 423 461 407 477 419 Trgb +0.178731 0.041246 0.043995 479 399 477 419 461 407 Trgb +0.048297 0.011145 0.011888 461 407 466 396 479 399 Trgb +0.103718 0.023935 0.025530 463 423 472 433 456 422 Trgb +0.021580 0.004980 0.005312 461 407 463 423 456 422 Trgb +0.000000 0.000000 0.000000 456 422 458 403 461 407 Trgb +0.000000 0.000000 0.000000 466 396 461 407 458 403 Trgb +0.000000 0.000000 0.000000 442 419 441 419 443 419 Trgb +0.000000 0.000000 0.000000 441 419 441 419 443 419 Trgb +0.000000 0.000000 0.000000 441 419 443 418 443 419 Trgb +0.000000 0.000000 0.000000 443 418 445 418 443 419 Trgb +0.000000 0.000000 0.000000 445 418 444 418 443 419 Trgb +0.000000 0.000000 0.000000 444 418 442 419 443 419 Trgb +0.000000 0.045400 0.013620 444 418 452 460 450 460 Trgb +0.000000 0.030855 0.009257 444 418 450 460 442 419 Trgb +0.000000 0.049070 0.014721 445 418 453 460 452 460 Trgb +0.000000 0.054507 0.016352 445 418 452 460 444 418 Trgb +0.000000 0.010874 0.003262 442 419 450 460 449 460 Trgb +0.000000 0.005437 0.001631 442 419 449 460 441 419 Trgb +0.353693 0.099034 0.090545 448 476 466 472 455 479 Trgb +0.272514 0.076304 0.069763 443 463 458 461 448 476 Trgb +0.402283 0.112639 0.102985 466 472 448 476 458 461 Trgb +0.462817 0.129589 0.118481 458 461 468 458 466 472 Trgb +0.182115 0.050992 0.046621 442 475 448 476 455 479 Trgb +0.134561 0.037677 0.034448 434 464 443 463 448 476 Trgb +0.092752 0.025971 0.023745 448 476 442 475 434 464 Trgb +0.045201 0.012656 0.011571 461 445 443 449 447 441 Trgb +0.179761 0.050333 0.046019 458 461 443 463 443 449 Trgb +0.183153 0.051283 0.046887 443 449 461 445 458 461 Trgb +0.336439 0.094203 0.086129 468 458 458 461 461 445 Trgb +0.277313 0.077648 0.070992 469 456 468 458 461 445 Trgb +0.000000 0.000000 0.000000 443 449 437 448 447 441 Trgb +0.041809 0.011706 0.010703 443 463 434 464 443 449 Trgb +0.000000 0.000000 0.000000 437 448 443 449 434 464 Trgb +0.000000 0.698795 0.209638 443 439 445 440 442 440 Trgb +0.000000 0.698795 0.209638 445 440 444 442 442 440 Trgb +0.000000 0.698795 0.209638 444 442 441 442 442 440 Trgb +0.000000 0.698795 0.209638 441 442 440 440 442 440 Trgb +0.000000 0.698795 0.209638 440 440 441 439 442 440 Trgb +0.000000 0.698795 0.209638 441 439 443 439 442 440 Trgb +0.000000 0.031657 0.009497 445 418 445 440 443 439 Trgb +0.000000 0.022869 0.006861 445 418 443 439 444 417 Trgb +0.000000 0.000000 0.000000 441 417 441 439 440 440 Trgb +0.000000 0.000000 0.000000 441 417 440 440 440 419 Trgb +0.000000 0.009388 0.002816 444 417 443 439 441 439 Trgb +0.000000 0.004694 0.001408 444 417 441 439 441 417 Trgb +0.464524 0.061662 0.105237 449 436 456 454 442 452 Trgb +0.328483 0.043604 0.074417 452 424 463 435 449 436 Trgb +0.473280 0.062825 0.107221 456 454 449 436 463 435 Trgb +0.488213 0.064807 0.110604 463 435 462 449 456 454 Trgb +0.388439 0.051563 0.088000 456 454 436 460 442 452 Trgb +0.321110 0.042625 0.072747 436 460 456 454 449 458 Trgb +0.265926 0.035300 0.060245 428 442 449 436 442 452 Trgb +0.186236 0.024722 0.042191 435 423 452 424 449 436 Trgb +0.132435 0.017580 0.030003 449 436 428 442 435 423 Trgb +0.000000 0.000000 0.000000 423 432 435 423 428 442 Trgb +0.196048 0.026024 0.044414 463 435 452 424 449 421 Trgb +0.189841 0.025200 0.043008 436 460 428 442 442 452 Trgb +0.056350 0.007480 0.012766 428 442 436 460 422 446 Trgb +0.000000 0.000000 0.000000 422 446 423 432 428 442 Trgb +0.053800 0.007142 0.012188 452 424 435 423 449 421 Trgb +0.000000 0.000000 0.000000 435 423 423 432 429 427 Trgb +0.000000 0.000000 0.000000 394 385 396 383 397 384 Trgb +0.000000 0.000000 0.000000 396 383 398 382 397 384 Trgb +0.000000 0.000000 0.000000 398 382 399 383 397 384 Trgb +0.000000 0.000000 0.000000 399 383 398 385 397 384 Trgb +0.000000 0.000000 0.000000 398 385 395 386 397 384 Trgb +0.000000 0.000000 0.000000 395 386 394 385 397 384 Trgb +0.000000 0.009095 0.002729 395 386 418 431 417 430 Trgb +0.000000 0.004548 0.001364 395 386 417 430 394 385 Trgb +0.000000 0.072128 0.021639 398 385 420 430 418 431 Trgb +0.000000 0.042886 0.012866 398 385 418 431 395 386 Trgb +0.000000 0.092276 0.027683 399 383 422 429 420 430 Trgb +0.000000 0.096823 0.029047 399 383 420 430 398 385 Trgb +0.000000 0.697133 0.209140 418 430 418 428 419 429 Trgb +0.000000 0.697133 0.209140 418 428 419 427 419 429 Trgb +0.000000 0.697133 0.209140 419 427 421 428 419 429 Trgb +0.000000 0.697133 0.209140 421 428 421 430 419 429 Trgb +0.000000 0.697133 0.209140 421 430 419 431 419 429 Trgb +0.000000 0.697133 0.209140 419 431 418 430 419 429 Trgb +0.000000 0.020589 0.006177 419 431 420 435 418 434 Trgb +0.000000 0.010295 0.003088 419 431 418 434 418 430 Trgb +0.000000 0.052480 0.015744 421 430 422 435 420 435 Trgb +0.000000 0.041682 0.012505 421 430 420 435 419 431 Trgb +0.000000 0.042689 0.012807 421 428 422 433 422 435 Trgb +0.000000 0.052984 0.015895 421 428 422 435 421 430 Trgb +0.291762 0.030182 0.064389 426 444 408 438 420 431 Trgb +0.050562 0.005231 0.011159 415 452 403 442 408 438 Trgb +0.235211 0.024332 0.051909 408 438 426 444 415 452 Trgb +0.389230 0.040265 0.085899 429 450 415 452 426 444 Trgb +0.425848 0.044053 0.093980 432 426 426 444 420 431 Trgb +0.413548 0.042781 0.091266 437 425 438 439 432 426 Trgb +0.503383 0.052074 0.111092 426 444 432 426 438 439 Trgb +0.523316 0.054136 0.115491 438 439 429 450 426 444 Trgb +0.107113 0.011081 0.023639 408 438 413 420 420 431 Trgb +0.005095 0.000527 0.001124 403 442 402 428 408 438 Trgb +0.005095 0.000527 0.001124 413 420 408 438 402 428 Trgb +0.000000 0.000000 0.000000 402 428 411 417 413 420 Trgb +0.241200 0.024952 0.053230 413 420 432 426 420 431 Trgb +0.233994 0.024206 0.051640 426 416 437 425 432 426 Trgb +0.139181 0.014398 0.030716 432 426 413 420 426 416 Trgb +0.000000 0.000000 0.000000 411 417 426 416 413 420 Trgb +0.000000 0.697171 0.209151 417 467 417 468 415 467 Trgb +0.000000 0.697171 0.209151 417 468 415 468 415 467 Trgb +0.000000 0.697171 0.209151 415 468 414 467 415 467 Trgb +0.000000 0.697171 0.209151 414 467 414 467 415 467 Trgb +0.000000 0.697171 0.209151 414 467 415 467 415 467 Trgb +0.000000 0.697171 0.209151 415 467 417 467 415 467 Trgb +0.000000 0.044776 0.013433 421 430 417 468 417 467 Trgb +0.000000 0.053715 0.016115 421 430 417 467 421 429 Trgb +0.000000 0.017878 0.005364 419 428 415 467 414 467 Trgb +0.000000 0.008939 0.002682 419 428 414 467 418 429 Trgb +0.000000 0.050709 0.015213 421 429 417 467 415 467 Trgb +0.000000 0.038763 0.011629 421 429 415 467 419 428 Trgb +0.398748 0.030157 0.085781 427 480 421 486 413 487 Trgb +0.541936 0.040987 0.116584 433 466 435 471 427 480 Trgb +0.376526 0.028477 0.081001 407 476 427 480 413 487 Trgb +0.519713 0.039306 0.111804 421 461 433 466 427 480 Trgb +0.393916 0.029792 0.084742 427 480 407 476 421 461 Trgb +0.185847 0.014056 0.039980 405 460 421 461 407 476 Trgb +0.393176 0.029736 0.084582 435 471 433 466 429 453 Trgb +0.168457 0.012740 0.036239 401 482 407 476 413 487 Trgb +0.063268 0.004785 0.013611 407 476 401 482 396 463 Trgb +0.063268 0.004785 0.013611 396 463 405 460 407 476 Trgb +0.059310 0.004486 0.012759 429 453 410 449 417 448 Trgb +0.370954 0.028055 0.079802 433 466 421 461 429 453 Trgb +0.181888 0.013756 0.039129 410 449 429 453 421 461 Trgb +0.122578 0.009271 0.026370 421 461 405 460 410 449 Trgb +0.000000 0.000000 0.000000 405 460 396 463 410 449 Trgb +0.000000 0.013103 0.003931 419 430 457 446 456 446 Trgb +0.000000 0.006551 0.001965 419 430 456 446 419 431 Trgb +0.000000 0.020230 0.006069 420 429 457 444 457 446 Trgb +0.000000 0.019942 0.005983 420 429 457 446 419 430 Trgb +0.000000 0.007416 0.002225 420 427 458 443 457 444 Trgb +0.000000 0.013967 0.004190 420 427 457 444 420 429 Trgb +0.105394 0.247297 0.070538 453 455 455 452 463 453 Trgb +0.099335 0.233080 0.066483 463 453 462 453 453 455 Trgb +0.076087 0.178532 0.050924 460 437 461 434 467 442 Trgb +0.177850 0.417308 0.119032 463 453 467 442 468 449 Trgb +0.134392 0.315339 0.089946 455 452 458 444 463 453 Trgb +0.157331 0.369162 0.105299 467 442 463 453 458 444 Trgb +0.113669 0.266714 0.076077 458 444 460 437 467 442 Trgb +0.000000 0.000000 0.000000 448 446 447 447 447 440 Trgb +0.041228 0.096737 0.027593 455 452 453 455 448 446 Trgb +0.008584 0.020141 0.005745 447 447 448 446 453 455 Trgb +0.000000 0.000000 0.000000 451 436 452 436 447 440 Trgb +0.020505 0.048112 0.013723 461 434 460 437 452 436 Trgb +0.000000 0.000000 0.000000 452 436 448 446 447 440 Trgb +0.070226 0.164778 0.047001 458 444 455 452 448 446 Trgb +0.037582 0.088182 0.025153 448 446 452 436 458 444 Trgb +0.058087 0.136295 0.038876 460 437 458 444 452 436 Trgb +0.000000 0.699414 0.209824 398 361 400 364 396 364 Trgb +0.000000 0.699414 0.209824 400 364 398 366 396 364 Trgb +0.000000 0.699414 0.209824 398 366 394 367 396 364 Trgb +0.000000 0.699414 0.209824 394 367 392 364 396 364 Trgb +0.000000 0.699414 0.209824 392 364 394 361 396 364 Trgb +0.000000 0.699414 0.209824 394 361 398 361 396 364 Trgb +0.000000 0.025252 0.007576 387 307 400 364 398 361 Trgb +0.000000 0.023246 0.006974 387 307 398 361 385 304 Trgb +0.000000 0.000000 0.000000 381 305 394 361 392 364 Trgb +0.000000 0.000000 0.000000 381 305 392 364 379 307 Trgb +0.000000 0.014159 0.004248 385 304 398 361 394 361 Trgb +0.000000 0.007080 0.002124 385 304 394 361 381 305 Trgb +0.000000 0.670057 0.201017 363 403 365 405 363 405 Trgb +0.000000 0.670057 0.201017 365 405 366 407 363 405 Trgb +0.000000 0.670057 0.201017 366 407 364 407 363 405 Trgb +0.000000 0.670057 0.201017 364 407 361 406 363 405 Trgb +0.000000 0.670057 0.201017 361 406 361 404 363 405 Trgb +0.000000 0.670057 0.201017 361 404 363 403 363 405 Trgb +0.000000 0.126608 0.037982 398 364 365 405 363 403 Trgb +0.000000 0.070797 0.021239 398 364 363 403 396 362 Trgb +0.000000 0.172428 0.051728 399 366 366 407 365 405 Trgb +0.000000 0.177423 0.053227 399 366 365 405 398 364 Trgb +0.000000 0.009991 0.002997 396 362 363 403 361 404 Trgb +0.000000 0.004996 0.001499 396 362 361 404 394 362 Trgb +0.000000 0.000000 0.000000 321 398 321 400 321 399 Trgb +0.000000 0.000000 0.000000 321 400 320 401 321 399 Trgb +0.000000 0.000000 0.000000 320 401 320 400 321 399 Trgb +0.000000 0.000000 0.000000 320 400 320 397 321 399 Trgb +0.000000 0.000000 0.000000 320 397 321 396 321 399 Trgb +0.000000 0.000000 0.000000 321 396 321 398 321 399 Trgb +0.000000 0.039172 0.011752 363 407 321 400 321 398 Trgb +0.000000 0.034938 0.010481 363 407 321 398 364 405 Trgb +0.000000 0.022937 0.006881 363 408 320 401 321 400 Trgb +0.000000 0.033171 0.009951 363 408 321 400 363 407 Trgb +0.000000 0.020469 0.006141 364 405 321 398 321 396 Trgb +0.000000 0.010235 0.003070 364 405 321 396 363 403 Trgb +0.000000 0.000000 0.000000 316 395 314 403 312 397 Trgb +0.027860 0.282235 0.062019 323 395 322 402 316 395 Trgb +0.016503 0.167185 0.036738 314 403 316 395 322 402 Trgb +0.028485 0.288569 0.063411 322 402 320 407 314 403 Trgb +0.012424 0.125863 0.027657 320 407 319 407 314 403 Trgb +0.000000 0.000000 0.000000 315 392 316 395 312 397 Trgb +0.011357 0.115051 0.025282 322 390 323 395 316 395 Trgb +0.000000 0.000000 0.000000 316 395 315 392 322 390 Trgb +0.047694 0.483162 0.106171 326 405 328 397 329 400 Trgb +0.045026 0.456136 0.100232 322 402 323 395 328 397 Trgb +0.051278 0.519465 0.114148 328 397 326 405 322 402 Trgb +0.046094 0.466948 0.102608 320 407 322 402 326 405 Trgb +0.030749 0.311499 0.068450 328 397 327 394 329 400 Trgb +0.028523 0.288951 0.063495 323 395 322 390 328 397 Trgb +0.017829 0.180617 0.039689 327 394 328 397 322 390 Trgb +0.000000 0.699487 0.209846 371 439 368 439 370 437 Trgb +0.000000 0.699487 0.209846 368 439 368 437 370 437 Trgb +0.000000 0.699487 0.209846 368 437 370 436 370 437 Trgb +0.000000 0.699487 0.209846 370 436 372 436 370 437 Trgb +0.000000 0.699487 0.209846 372 436 372 438 370 437 Trgb +0.000000 0.699487 0.209846 372 438 371 439 370 437 Trgb +0.000000 0.000605 0.000182 363 404 370 436 368 437 Trgb +0.000000 0.000303 0.000091 363 404 368 437 361 405 Trgb +0.000000 0.016071 0.004821 365 404 372 436 370 436 Trgb +0.000000 0.008489 0.002547 365 404 370 436 363 404 Trgb +0.000000 0.023048 0.006914 365 406 372 438 372 436 Trgb +0.000000 0.023350 0.007005 365 406 372 436 365 404 Trgb +0.065732 0.277683 0.068683 373 448 364 445 372 445 Trgb +0.067033 0.283180 0.070043 364 445 370 438 372 445 Trgb +0.026637 0.112527 0.027833 361 434 368 430 370 438 Trgb +0.031584 0.133427 0.033002 370 438 364 445 361 434 Trgb +0.005867 0.024787 0.006131 360 440 361 434 364 445 Trgb +0.104129 0.439892 0.108804 379 441 373 448 372 445 Trgb +0.089964 0.380052 0.094003 381 435 379 440 379 441 Trgb +0.105430 0.445389 0.110164 370 438 379 441 372 445 Trgb +0.046486 0.196380 0.048573 368 430 376 430 370 438 Trgb +0.089831 0.379489 0.093864 379 441 370 438 376 430 Trgb +0.091265 0.385549 0.095363 376 430 381 435 379 441 Trgb +0.000920 0.003887 0.000961 368 430 361 434 367 427 Trgb +0.000000 0.000000 0.000000 361 434 367 427 361 434 Trgb +0.020769 0.087740 0.021702 376 430 368 430 367 427 Trgb +0.019849 0.083853 0.020740 367 427 376 430 376 430 Trgb +0.047000 0.198553 0.049111 381 435 376 430 376 430 Trgb +0.000000 0.699497 0.209849 381 445 379 445 381 444 Trgb +0.000000 0.699497 0.209849 379 445 380 444 381 444 Trgb +0.000000 0.699497 0.209849 380 444 382 443 381 444 Trgb +0.000000 0.699497 0.209849 382 443 383 443 381 444 Trgb +0.000000 0.699497 0.209849 383 443 383 444 381 444 Trgb +0.000000 0.699497 0.209849 383 444 381 445 381 444 Trgb +0.000000 0.000696 0.000209 362 406 380 444 379 445 Trgb +0.000000 0.000348 0.000104 362 406 379 445 361 406 Trgb +0.000000 0.016007 0.004802 364 405 382 443 380 444 Trgb +0.000000 0.008525 0.002558 364 405 380 444 362 406 Trgb +0.000000 0.022792 0.006838 365 404 383 443 382 443 Trgb +0.000000 0.023140 0.006942 365 404 382 443 364 405 Trgb +0.310982 0.003067 0.062810 384 465 374 464 391 465 Trgb +0.084174 0.000830 0.017001 363 455 361 451 374 464 Trgb +0.485793 0.004791 0.098117 374 464 393 453 391 465 Trgb +0.382596 0.003773 0.077274 371 443 388 435 393 453 Trgb +0.343159 0.003384 0.069309 393 453 374 464 371 443 Trgb +0.125602 0.001239 0.025368 361 451 371 443 374 464 Trgb +0.577749 0.005698 0.116689 393 453 403 454 391 465 Trgb +0.474551 0.004680 0.095846 388 435 400 433 393 453 Trgb +0.527070 0.005198 0.106454 403 454 393 453 400 433 Trgb +0.374535 0.003694 0.075646 400 433 401 437 403 454 Trgb +0.000000 0.000000 0.000000 379 423 360 435 372 424 Trgb +0.165038 0.001628 0.033333 388 435 371 443 379 423 Trgb +0.041428 0.000409 0.008367 360 435 379 423 371 443 Trgb +0.041428 0.000409 0.008367 371 443 361 451 360 435 Trgb +0.256994 0.002534 0.051906 400 433 388 435 379 423 Trgb +0.133383 0.001315 0.026940 379 423 389 425 400 433 Trgb +0.000000 0.699868 0.209960 440 368 438 370 438 367 Trgb +0.000000 0.699868 0.209960 438 370 436 368 438 367 Trgb +0.000000 0.699868 0.209960 436 368 436 365 438 367 Trgb +0.000000 0.699868 0.209960 436 365 438 363 438 367 Trgb +0.000000 0.699868 0.209960 438 363 440 365 438 367 Trgb +0.000000 0.699868 0.209960 440 365 440 368 438 367 Trgb +0.000000 0.005175 0.001553 394 366 436 368 438 370 Trgb +0.000000 0.008820 0.002646 394 366 438 370 396 367 Trgb +0.000000 0.000510 0.000153 394 363 436 365 436 368 Trgb +0.000000 0.001020 0.000306 394 363 436 368 394 366 Trgb +0.000000 0.000000 0.000000 396 361 438 363 436 365 Trgb +0.000000 0.000000 0.000000 396 361 436 365 394 363 Trgb +0.130763 0.477881 0.121729 448 370 441 374 446 367 Trgb +0.101991 0.372731 0.094944 441 374 448 370 440 377 Trgb +0.069415 0.253681 0.064619 440 377 434 377 441 374 Trgb +0.110114 0.402415 0.102506 441 374 438 363 446 367 Trgb +0.022716 0.083017 0.021147 430 370 431 362 438 363 Trgb +0.063387 0.231649 0.059007 438 363 441 374 430 370 Trgb +0.051461 0.188065 0.047905 434 377 430 370 441 374 Trgb +0.115504 0.422115 0.107524 446 360 448 370 446 367 Trgb +0.094854 0.346649 0.088301 438 363 446 360 446 367 Trgb +0.022716 0.083017 0.021147 431 362 435 356 438 363 Trgb +0.048127 0.175883 0.044802 446 360 438 363 435 356 Trgb +0.025411 0.092867 0.023656 435 356 442 357 446 360 Trgb +0.000000 0.000000 0.000000 431 362 430 370 427 363 Trgb +0.000000 0.000000 0.000000 430 373 427 363 430 370 Trgb +0.010790 0.039432 0.010044 430 370 434 377 430 373 Trgb +0.000000 0.000000 0.000000 435 356 431 362 427 363 Trgb +0.000000 0.697531 0.209259 400 424 402 424 403 424 Trgb +0.000000 0.697531 0.209259 402 424 405 424 403 424 Trgb +0.000000 0.697531 0.209259 405 424 406 424 403 424 Trgb +0.000000 0.697531 0.209259 406 424 404 424 403 424 Trgb +0.000000 0.697531 0.209259 404 424 401 425 403 424 Trgb +0.000000 0.697531 0.209259 401 425 400 424 403 424 Trgb +0.000000 0.010115 0.003035 395 364 402 424 400 424 Trgb +0.000000 0.005058 0.001517 395 364 400 424 393 364 Trgb +0.000000 0.042881 0.012864 398 363 405 424 402 424 Trgb +0.000000 0.029027 0.008708 398 363 402 424 395 364 Trgb +0.000000 0.046621 0.013986 399 364 406 424 405 424 Trgb +0.000000 0.051678 0.015503 399 364 405 424 398 363 Trgb +0.000000 0.692681 0.207804 401 424 402 423 403 424 Trgb +0.000000 0.692681 0.207804 402 423 404 423 403 424 Trgb +0.000000 0.692681 0.207804 404 423 405 424 403 424 Trgb +0.000000 0.692681 0.207804 405 424 405 426 403 424 Trgb +0.000000 0.692681 0.207804 405 426 403 426 403 424 Trgb +0.000000 0.692681 0.207804 403 426 401 424 403 424 Trgb +0.000000 0.033284 0.009985 403 426 395 452 393 450 Trgb +0.000000 0.016642 0.004993 403 426 393 450 401 424 Trgb +0.000000 0.083949 0.025185 405 426 397 451 395 452 Trgb +0.000000 0.066938 0.020081 405 426 395 452 403 426 Trgb +0.000000 0.067677 0.020303 405 424 397 450 397 451 Trgb +0.000000 0.084319 0.025296 405 424 397 451 405 426 Trgb +0.009477 0.046295 0.011154 386 451 390 456 387 455 Trgb +0.023261 0.113633 0.027379 396 460 387 455 390 456 Trgb +0.055621 0.271710 0.065466 390 456 398 458 396 460 Trgb +0.082430 0.402675 0.097021 398 458 403 455 396 460 Trgb +0.044843 0.219063 0.052781 398 451 390 446 397 444 Trgb +0.009477 0.046295 0.011154 390 456 386 451 390 446 Trgb +0.041455 0.202511 0.048793 390 446 398 451 390 456 Trgb +0.073815 0.360588 0.086881 398 458 390 456 398 451 Trgb +0.067345 0.328984 0.079266 403 445 398 451 397 444 Trgb +0.077745 0.379787 0.091506 404 449 403 455 403 445 Trgb +0.090766 0.443397 0.106833 398 451 403 445 403 455 Trgb +0.100624 0.491553 0.118435 403 455 398 458 398 451 Trgb +0.012865 0.062846 0.015142 390 446 395 440 397 444 Trgb +0.000000 0.000000 0.000000 386 451 387 445 390 446 Trgb +0.000000 0.000000 0.000000 395 440 390 446 387 445 Trgb +0.035367 0.172767 0.041627 395 440 403 445 397 444 Trgb +0.000000 0.637740 0.191322 379 451 379 452 377 451 Trgb +0.000000 0.637740 0.191322 379 452 378 452 377 451 Trgb +0.000000 0.637740 0.191322 378 452 376 451 377 451 Trgb +0.000000 0.637740 0.191322 376 451 376 449 377 451 Trgb +0.000000 0.637740 0.191322 376 449 377 449 377 451 Trgb +0.000000 0.637740 0.191322 377 449 379 451 377 451 Trgb +0.000000 0.252303 0.075691 405 426 379 452 379 451 Trgb +0.000000 0.246714 0.074014 405 426 379 451 404 424 Trgb +0.000000 0.000000 0.000000 403 423 377 449 376 449 Trgb +0.000000 0.000000 0.000000 403 423 376 449 402 423 Trgb +0.000000 0.160749 0.048225 404 424 379 451 377 449 Trgb +0.000000 0.080375 0.024112 404 424 377 449 403 423 Trgb +0.017498 0.271496 0.057799 377 454 377 459 372 456 Trgb +0.034877 0.541162 0.115208 382 450 384 455 377 454 Trgb +0.029698 0.460799 0.098099 377 459 377 454 384 455 Trgb +0.028021 0.434774 0.092559 384 455 382 458 377 459 Trgb +0.008105 0.125751 0.026771 377 459 370 455 372 456 Trgb +0.010945 0.169818 0.036153 370 450 377 454 372 456 Trgb +0.023966 0.371853 0.079164 378 445 382 450 377 454 Trgb +0.012233 0.189812 0.040409 377 454 370 450 378 445 Trgb +0.002840 0.044067 0.009382 373 444 378 445 370 450 Trgb +0.032683 0.507117 0.107960 384 455 382 450 385 447 Trgb +0.025310 0.392708 0.083604 385 447 384 452 384 455 Trgb +0.001552 0.024074 0.005125 370 455 370 450 372 456 Trgb +0.000000 0.000000 0.000000 371 447 373 444 370 450 Trgb +0.021771 0.337807 0.071916 382 450 378 445 385 447 Trgb +0.010039 0.155767 0.033161 378 442 385 447 378 445 Trgb +0.002840 0.044067 0.009382 378 445 373 444 378 442 Trgb +0.000000 0.699962 0.209989 436 449 434 451 435 449 Trgb +0.000000 0.699962 0.209989 434 451 433 451 435 449 Trgb +0.000000 0.699962 0.209989 433 451 434 449 435 449 Trgb +0.000000 0.699962 0.209989 434 449 435 447 435 449 Trgb +0.000000 0.699962 0.209989 435 447 436 447 435 449 Trgb +0.000000 0.699962 0.209989 436 447 436 449 435 449 Trgb +0.000000 0.002331 0.000699 402 424 434 449 433 451 Trgb +0.000000 0.001165 0.000350 402 424 433 451 402 426 Trgb +0.000000 0.006038 0.001812 404 423 435 447 434 449 Trgb +0.000000 0.004767 0.001430 404 423 434 449 402 424 Trgb +0.000000 0.004978 0.001494 405 423 436 447 435 447 Trgb +0.000000 0.006144 0.001843 405 423 435 447 404 423 Trgb +0.240590 0.297323 0.107583 437 464 437 455 445 458 Trgb +0.089658 0.110800 0.040092 424 458 427 449 437 455 Trgb +0.138434 0.171078 0.061902 437 455 437 464 424 458 Trgb +0.058982 0.072890 0.026374 428 461 424 458 437 464 Trgb +0.252665 0.312245 0.112982 447 446 447 455 445 458 Trgb +0.110270 0.136273 0.049309 442 437 445 440 447 446 Trgb +0.267098 0.330082 0.119436 437 455 447 446 445 458 Trgb +0.110128 0.136097 0.049245 427 449 434 441 437 455 Trgb +0.185412 0.229133 0.082909 447 446 437 455 434 441 Trgb +0.124703 0.154109 0.055763 434 441 442 437 447 446 Trgb +0.010206 0.012612 0.004564 427 449 424 458 422 443 Trgb +0.000000 0.000000 0.000000 422 452 422 443 424 458 Trgb +0.000000 0.000000 0.000000 432 435 422 443 424 441 Trgb +0.030676 0.037910 0.013717 434 441 427 449 422 443 Trgb +0.020470 0.025297 0.009154 422 443 432 435 434 441 Trgb +0.039214 0.048461 0.017535 442 437 434 441 432 435 Trgb +0.000000 0.675208 0.202562 239 301 244 305 240 305 Trgb +0.000000 0.675208 0.202562 244 305 244 309 240 305 Trgb +0.000000 0.675208 0.202562 244 309 241 309 240 305 Trgb +0.000000 0.675208 0.202562 241 309 236 305 240 305 Trgb +0.000000 0.675208 0.202562 236 305 236 301 240 305 Trgb +0.000000 0.675208 0.202562 236 301 239 301 240 305 Trgb +0.000000 0.139589 0.041877 309 230 244 305 239 301 Trgb +0.000000 0.098494 0.029548 309 230 239 301 305 226 Trgb +0.000000 0.142419 0.042726 310 234 244 309 244 305 Trgb +0.000000 0.161552 0.048465 310 234 244 305 309 230 Trgb +0.000000 0.038266 0.011480 305 226 239 301 236 301 Trgb +0.000000 0.019133 0.005740 305 226 236 301 301 226 Trgb +0.000000 0.697893 0.209368 237 302 239 302 240 305 Trgb +0.000000 0.697893 0.209368 239 302 242 305 240 305 Trgb +0.000000 0.697893 0.209368 242 305 243 308 240 305 Trgb +0.000000 0.697893 0.209368 243 308 241 308 240 305 Trgb +0.000000 0.697893 0.209368 241 308 238 305 240 305 Trgb +0.000000 0.697893 0.209368 238 305 237 302 240 305 Trgb +0.000000 0.017023 0.005107 238 305 176 350 175 346 Trgb +0.000000 0.008512 0.002553 238 305 175 346 237 302 Trgb +0.000000 0.044670 0.013401 241 308 179 352 176 350 Trgb +0.000000 0.035103 0.010531 241 308 176 350 238 305 Trgb +0.000000 0.037215 0.011165 243 308 181 352 179 352 Trgb +0.000000 0.045727 0.013718 243 308 179 352 241 308 Trgb +0.000000 0.699920 0.209976 176 348 178 347 178 349 Trgb +0.000000 0.699920 0.209976 178 347 180 348 178 349 Trgb +0.000000 0.699920 0.209976 180 348 180 351 178 349 Trgb +0.000000 0.699920 0.209976 180 351 178 352 178 349 Trgb +0.000000 0.699920 0.209976 178 352 176 351 178 349 Trgb +0.000000 0.699920 0.209976 176 351 176 348 178 349 Trgb +0.000000 0.001914 0.000574 176 351 145 347 145 344 Trgb +0.000000 0.000957 0.000287 176 351 145 344 176 348 Trgb +0.000000 0.007792 0.002337 178 352 147 348 145 347 Trgb +0.000000 0.005332 0.001599 178 352 145 347 176 351 Trgb +0.000000 0.000000 0.000000 176 348 145 344 147 343 Trgb +0.000000 0.000000 0.000000 176 348 147 343 178 347 Trgb +0.000000 0.699197 0.209759 146 344 148 344 147 345 Trgb +0.000000 0.699197 0.209759 148 344 149 345 147 345 Trgb +0.000000 0.699197 0.209759 149 345 148 347 147 345 Trgb +0.000000 0.699197 0.209759 148 347 146 347 147 345 Trgb +0.000000 0.699197 0.209759 146 347 145 345 147 345 Trgb +0.000000 0.699197 0.209759 145 345 146 344 147 345 Trgb +0.000000 0.000000 0.000000 145 345 151 323 151 321 Trgb +0.000000 0.000000 0.000000 145 345 151 321 146 344 Trgb +0.000000 0.025417 0.007625 148 344 153 321 154 322 Trgb +0.000000 0.029199 0.008760 148 344 154 322 149 345 Trgb +0.000000 0.007212 0.002163 146 344 151 321 153 321 Trgb +0.000000 0.014423 0.004327 146 344 153 321 148 344 Trgb +0.041504 0.027267 0.013754 155 311 144 313 148 310 Trgb +0.041504 0.027267 0.013754 148 310 162 312 155 311 Trgb +0.133196 0.087504 0.044140 164 317 155 311 162 312 Trgb +0.157254 0.103310 0.052113 143 333 145 322 150 331 Trgb +0.048551 0.031896 0.016089 138 320 144 313 145 322 Trgb +0.055597 0.036525 0.018424 145 322 143 333 138 320 Trgb +0.007046 0.004629 0.002335 141 328 138 320 143 333 Trgb +0.203918 0.133965 0.067577 157 336 143 333 150 331 Trgb +0.286927 0.188499 0.095085 145 322 159 325 150 331 Trgb +0.090055 0.059162 0.029843 144 313 155 311 145 322 Trgb +0.226774 0.148981 0.075151 159 325 145 322 155 311 Trgb +0.269915 0.177323 0.089448 155 311 164 317 159 325 Trgb +0.333590 0.219155 0.110549 159 325 157 336 150 331 Trgb +0.216378 0.142151 0.071706 167 325 161 332 157 336 Trgb +0.320101 0.210293 0.106079 157 336 159 325 167 325 Trgb +0.316578 0.207979 0.104911 164 317 167 325 159 325 Trgb +0.000000 0.698678 0.209603 147 347 147 346 147 345 Trgb +0.000000 0.698678 0.209603 147 346 147 344 147 345 Trgb +0.000000 0.698678 0.209603 147 344 147 344 147 345 Trgb +0.000000 0.698678 0.209603 147 344 147 345 147 345 Trgb +0.000000 0.698678 0.209603 147 345 147 346 147 345 Trgb +0.000000 0.698678 0.209603 147 346 147 347 147 345 Trgb +0.000000 0.018415 0.005524 147 344 109 337 110 336 Trgb +0.000000 0.009207 0.002762 147 344 110 336 147 344 Trgb +0.000000 0.037448 0.011234 147 346 109 338 109 337 Trgb +0.000000 0.032535 0.009761 147 346 109 337 147 344 Trgb +0.000000 0.023946 0.007184 147 347 109 339 109 338 Trgb +0.000000 0.033154 0.009946 147 347 109 338 147 346 Trgb +0.013745 0.002545 0.003258 96 334 94 347 91 334 Trgb +0.190914 0.035354 0.045254 106 349 105 355 94 347 Trgb +0.152290 0.028202 0.036098 94 347 96 334 106 349 Trgb +0.295853 0.054788 0.070128 108 336 106 349 96 334 Trgb +0.013745 0.002545 0.003258 99 323 96 334 91 334 Trgb +0.064484 0.011941 0.015285 113 320 111 324 99 323 Trgb +0.078229 0.014487 0.018543 96 334 99 323 111 324 Trgb +0.221792 0.041073 0.052573 111 324 108 336 96 334 Trgb +0.438208 0.081150 0.103872 119 353 121 339 127 341 Trgb +0.315714 0.058466 0.074836 105 355 106 349 119 353 Trgb +0.452629 0.083820 0.107290 121 339 119 353 106 349 Trgb +0.471392 0.087295 0.111737 106 349 108 336 121 339 Trgb +0.364147 0.067435 0.086316 121 339 125 328 127 341 Trgb +0.115222 0.021337 0.027312 111 324 113 320 125 328 Trgb +0.304506 0.056390 0.072179 125 328 121 339 111 324 Trgb +0.397330 0.073580 0.094182 108 336 111 324 121 339 Trgb +0.000000 0.691781 0.207534 149 346 148 347 147 345 Trgb +0.000000 0.691781 0.207534 148 347 147 346 147 345 Trgb +0.000000 0.691781 0.207534 147 346 145 345 147 345 Trgb +0.000000 0.691781 0.207534 145 345 146 344 147 345 Trgb +0.000000 0.691781 0.207534 146 344 147 345 147 345 Trgb +0.000000 0.691781 0.207534 147 345 149 346 147 345 Trgb +0.000000 0.000000 0.000000 145 345 131 375 131 374 Trgb +0.000000 0.000000 0.000000 145 345 131 374 146 344 Trgb +0.000000 0.058813 0.017644 147 346 132 376 131 375 Trgb +0.000000 0.029406 0.008822 147 346 131 375 145 345 Trgb +0.000000 0.093726 0.028118 148 347 134 376 132 376 Trgb +0.000000 0.090973 0.027292 148 347 132 376 147 346 Trgb +0.000000 0.000000 0.000000 124 370 125 375 124 380 Trgb +0.107475 0.388264 0.099148 136 381 141 379 133 384 Trgb +0.029201 0.105490 0.026938 133 366 141 370 136 368 Trgb +0.031304 0.113090 0.028879 125 375 130 379 124 380 Trgb +0.054230 0.195912 0.050028 133 384 124 380 130 379 Trgb +0.102218 0.369274 0.094298 130 379 136 381 133 384 Trgb +0.023944 0.086500 0.022089 129 369 133 366 136 368 Trgb +0.008378 0.030267 0.007729 125 375 124 370 129 369 Trgb +0.008378 0.030267 0.007729 133 366 129 369 124 370 Trgb +0.074140 0.267838 0.068396 141 370 138 374 136 368 Trgb +0.095135 0.343686 0.087764 138 374 141 370 141 379 Trgb +0.129488 0.467789 0.119455 141 379 136 381 138 374 Trgb +0.068883 0.248847 0.063546 138 374 129 369 136 368 Trgb +0.039682 0.143357 0.036608 130 379 125 375 129 369 Trgb +0.084621 0.305704 0.078065 129 369 138 374 130 379 Trgb +0.124231 0.448798 0.114606 136 381 130 379 138 374 Trgb +0.000000 0.000000 0.000000 133 384 131 383 131 381 Trgb +0.000000 0.000000 0.000000 131 383 130 380 131 381 Trgb +0.000000 0.000000 0.000000 130 380 129 379 131 381 Trgb +0.000000 0.000000 0.000000 129 379 131 380 131 381 Trgb +0.000000 0.000000 0.000000 131 380 132 382 131 381 Trgb +0.000000 0.000000 0.000000 132 382 133 384 131 381 Trgb +0.000000 0.087931 0.026379 178 348 131 380 129 379 Trgb +0.000000 0.043965 0.013190 178 348 129 379 176 347 Trgb +0.000000 0.299857 0.089957 179 350 132 382 131 380 Trgb +0.000000 0.215876 0.064763 179 350 131 380 178 348 Trgb +0.000000 0.295907 0.088772 179 352 133 384 132 382 Trgb +0.000000 0.339872 0.101962 179 352 132 382 179 350 Trgb +0.000000 0.691585 0.207476 106 387 105 387 105 385 Trgb +0.000000 0.691585 0.207476 105 387 103 386 105 385 Trgb +0.000000 0.691585 0.207476 103 386 104 384 105 385 Trgb +0.000000 0.691585 0.207476 104 384 105 383 105 385 Trgb +0.000000 0.691585 0.207476 105 383 107 385 105 385 Trgb +0.000000 0.691585 0.207476 107 385 106 387 105 385 Trgb +0.000000 0.038905 0.011671 131 383 105 387 106 387 Trgb +0.000000 0.068470 0.020541 131 383 106 387 132 383 Trgb +0.000000 0.059130 0.017739 133 381 107 385 105 383 Trgb +0.000000 0.029565 0.008870 133 381 105 383 131 379 Trgb +0.000000 0.094922 0.028477 132 383 106 387 107 385 Trgb +0.000000 0.091809 0.027543 132 383 107 385 133 381 Trgb +0.036557 0.227068 0.052725 105 391 97 391 99 386 Trgb +0.065148 0.404652 0.093960 111 392 105 395 105 391 Trgb +0.037225 0.231217 0.053688 97 391 105 391 105 395 Trgb +0.009849 0.061174 0.014205 97 391 97 381 99 386 Trgb +0.052749 0.327638 0.076077 104 381 105 391 99 386 Trgb +0.083603 0.519279 0.120576 113 385 111 392 105 391 Trgb +0.071872 0.446414 0.103657 105 391 104 381 113 385 Trgb +0.058213 0.361574 0.083957 110 379 113 385 104 381 Trgb +0.026041 0.161745 0.037557 97 381 104 381 99 386 Trgb +0.000000 0.000000 0.000000 100 378 105 376 97 381 Trgb +0.016192 0.100570 0.023352 104 381 97 381 105 376 Trgb +0.029241 0.181624 0.042173 105 376 110 379 104 381 Trgb +0.069674 0.432765 0.100488 111 392 113 385 113 389 Trgb +0.044015 0.273387 0.063480 113 380 113 389 113 385 Trgb +0.044284 0.275061 0.063869 113 385 110 379 113 380 Trgb +0.015313 0.095110 0.022085 110 379 105 376 113 380 Trgb +0.000000 0.698498 0.209550 130 380 132 380 131 381 Trgb +0.000000 0.698498 0.209550 132 380 133 381 131 381 Trgb +0.000000 0.698498 0.209550 133 381 132 383 131 381 Trgb +0.000000 0.698498 0.209550 132 383 130 383 131 381 Trgb +0.000000 0.698498 0.209550 130 383 129 381 131 381 Trgb +0.000000 0.698498 0.209550 129 381 130 380 131 381 Trgb +0.000000 0.000000 0.000000 129 381 111 401 111 400 Trgb +0.000000 0.000000 0.000000 129 381 111 400 130 380 Trgb +0.000000 0.023294 0.006988 130 383 112 403 111 401 Trgb +0.000000 0.011647 0.003494 130 383 111 401 129 381 Trgb +0.000000 0.040413 0.012124 132 383 113 403 112 403 Trgb +0.000000 0.037677 0.011303 132 383 112 403 130 383 Trgb +0.019290 0.043219 0.012502 102 398 104 406 103 408 Trgb +0.112959 0.253086 0.073209 111 411 119 410 113 412 Trgb +0.059036 0.132271 0.038261 113 412 103 408 111 411 Trgb +0.071059 0.159208 0.046053 104 406 111 411 103 408 Trgb +0.088148 0.197496 0.057129 110 400 111 391 118 396 Trgb +0.000000 0.000000 0.000000 102 398 106 393 111 391 Trgb +0.044502 0.099707 0.028842 111 391 110 400 102 398 Trgb +0.063792 0.142926 0.041344 104 406 102 398 110 400 Trgb +0.157140 0.352073 0.101843 121 404 110 400 118 396 Trgb +0.174684 0.391380 0.113213 119 410 111 411 121 404 Trgb +0.165263 0.370273 0.107107 110 400 121 404 111 411 Trgb +0.115561 0.258915 0.074895 111 411 104 406 110 400 Trgb +0.060868 0.136376 0.039449 111 391 121 395 118 396 Trgb +0.129860 0.290952 0.084162 121 395 121 404 118 396 Trgb +0.147404 0.330260 0.095533 122 405 119 410 121 404 Trgb +0.110704 0.248032 0.071747 121 404 121 395 122 405 Trgb +0.000000 0.699554 0.209866 131 380 131 379 131 381 Trgb +0.000000 0.699554 0.209866 131 379 132 380 131 381 Trgb +0.000000 0.699554 0.209866 132 380 132 382 131 381 Trgb +0.000000 0.699554 0.209866 132 382 131 383 131 381 Trgb +0.000000 0.699554 0.209866 131 383 130 382 131 381 Trgb +0.000000 0.699554 0.209866 130 382 131 380 131 381 Trgb +0.000000 0.019279 0.005784 130 382 92 378 93 376 Trgb +0.000000 0.013935 0.004181 130 382 93 376 131 380 Trgb +0.000000 0.018894 0.005668 131 383 93 380 92 378 Trgb +0.000000 0.021758 0.006527 131 383 92 378 130 382 Trgb +0.000000 0.005728 0.001718 131 380 93 376 94 376 Trgb +0.000000 0.002864 0.000859 131 380 94 376 131 379 Trgb +0.000000 0.000000 0.000000 83 371 82 384 82 377 Trgb +0.062639 0.107049 0.033938 90 370 88 379 83 371 Trgb +0.045424 0.077629 0.024611 82 384 83 371 88 379 Trgb +0.092448 0.157993 0.050088 88 379 89 387 82 384 Trgb +0.068102 0.116386 0.036898 89 387 93 390 82 384 Trgb +0.017215 0.029420 0.009327 94 365 90 370 83 371 Trgb +0.214613 0.366772 0.116277 98 385 99 373 105 379 Trgb +0.124366 0.212540 0.067381 88 379 90 370 99 373 Trgb +0.189956 0.324634 0.102918 99 373 98 385 88 379 Trgb +0.175253 0.299506 0.094952 89 387 88 379 98 385 Trgb +0.190267 0.325166 0.103087 104 384 98 385 105 379 Trgb +0.141265 0.241421 0.076537 98 385 104 384 93 390 Trgb +0.150908 0.257900 0.081762 93 390 89 387 98 385 Trgb +0.148111 0.253120 0.080246 99 373 104 372 105 379 Trgb +0.078942 0.134911 0.042771 90 370 94 365 99 373 Trgb +0.078030 0.133353 0.042277 104 372 99 373 94 365 Trgb +0.000000 0.651830 0.195549 178 348 180 348 178 349 Trgb +0.000000 0.651830 0.195549 180 348 180 350 178 349 Trgb +0.000000 0.651830 0.195549 180 350 178 351 178 349 Trgb +0.000000 0.651830 0.195549 178 351 175 350 178 349 Trgb +0.000000 0.651830 0.195549 175 350 175 349 178 349 Trgb +0.000000 0.651830 0.195549 175 349 178 348 178 349 Trgb +0.000000 0.136743 0.041023 178 351 181 395 179 394 Trgb +0.000000 0.068371 0.020511 178 351 179 394 175 350 Trgb +0.000000 0.224390 0.067317 180 350 184 394 181 395 Trgb +0.000000 0.214752 0.064426 180 350 181 395 178 351 Trgb +0.000000 0.097284 0.029185 180 348 184 392 184 394 Trgb +0.000000 0.165656 0.049697 180 348 184 394 180 350 Trgb +0.000000 0.000000 0.000000 181 392 182 391 181 393 Trgb +0.000000 0.000000 0.000000 182 391 183 393 181 393 Trgb +0.000000 0.000000 0.000000 183 393 182 394 181 393 Trgb +0.000000 0.000000 0.000000 182 394 181 395 181 393 Trgb +0.000000 0.000000 0.000000 181 395 180 394 181 393 Trgb +0.000000 0.000000 0.000000 180 394 181 392 181 393 Trgb +0.000000 0.098567 0.029570 182 394 210 409 209 410 Trgb +0.000000 0.058014 0.017404 182 394 209 410 181 395 Trgb +0.000000 0.127481 0.038244 183 393 211 408 210 409 Trgb +0.000000 0.133301 0.039990 183 393 210 409 182 394 Trgb +0.000000 0.040554 0.012166 182 391 211 407 211 408 Trgb +0.000000 0.081108 0.024332 182 391 211 408 183 393 Trgb +0.449781 0.027005 0.095357 204 426 214 420 223 422 Trgb +0.000000 0.000000 0.000000 191 412 197 394 196 401 Trgb +0.570312 0.034242 0.120911 214 420 222 408 223 422 Trgb +0.467717 0.028082 0.099160 228 405 223 422 222 408 Trgb +0.379352 0.022777 0.080426 222 408 222 395 228 405 Trgb +0.105134 0.006312 0.022289 203 412 191 412 196 401 Trgb +0.381323 0.022895 0.080844 214 420 204 426 203 412 Trgb +0.184233 0.011062 0.039059 191 412 203 412 204 426 Trgb +0.079098 0.004749 0.016769 204 426 198 421 191 412 Trgb +0.026036 0.001563 0.005520 197 394 209 394 196 401 Trgb +0.026036 0.001563 0.005520 209 394 197 394 216 391 Trgb +0.111265 0.006680 0.023589 216 391 222 395 209 394 Trgb +0.131171 0.007876 0.027809 209 394 203 412 196 401 Trgb +0.501854 0.030132 0.106397 222 408 214 420 203 412 Trgb +0.330800 0.019862 0.070132 203 412 209 394 222 408 Trgb +0.310894 0.018666 0.065912 222 395 222 408 209 394 Trgb +0.000000 0.699809 0.209943 180 394 180 392 181 393 Trgb +0.000000 0.699809 0.209943 180 392 182 391 181 393 Trgb +0.000000 0.699809 0.209943 182 391 183 392 181 393 Trgb +0.000000 0.699809 0.209943 183 392 183 394 181 393 Trgb +0.000000 0.699809 0.209943 183 394 181 395 181 393 Trgb +0.000000 0.699809 0.209943 181 395 180 394 181 393 Trgb +0.000000 0.006766 0.002030 181 395 168 392 166 391 Trgb +0.000000 0.003383 0.001015 181 395 166 391 180 394 Trgb +0.000000 0.000000 0.000000 180 392 167 389 168 388 Trgb +0.000000 0.000000 0.000000 180 392 168 388 182 391 Trgb +0.000000 0.000000 0.000000 180 394 166 391 167 389 Trgb +0.000000 0.000000 0.000000 180 394 167 389 180 392 Trgb +0.168457 0.380906 0.109873 173 398 164 393 172 391 Trgb +0.049902 0.112835 0.032547 164 400 159 394 164 393 Trgb +0.115650 0.261502 0.075430 164 393 173 398 164 400 Trgb +0.105923 0.239508 0.069086 171 400 164 400 173 398 Trgb +0.184304 0.416738 0.120208 177 388 173 398 172 391 Trgb +0.147343 0.333164 0.096101 173 398 177 388 177 395 Trgb +0.121770 0.275339 0.079422 177 395 171 400 173 398 Trgb +0.128611 0.290809 0.083884 164 393 169 384 172 391 Trgb +0.037902 0.085702 0.024721 159 394 159 386 164 393 Trgb +0.063804 0.144271 0.041615 169 384 164 393 159 386 Trgb +0.025902 0.058569 0.016894 159 386 165 380 169 384 Trgb +0.144458 0.326640 0.094220 169 384 177 388 172 391 Trgb +0.064954 0.146870 0.042365 173 381 177 387 177 388 Trgb +0.079651 0.180103 0.051951 177 388 169 384 173 381 Trgb +0.025902 0.058569 0.016894 165 380 173 381 169 384 Trgb +0.000000 0.694743 0.208423 182 394 181 393 181 393 Trgb +0.000000 0.694743 0.208423 181 393 180 392 181 393 Trgb +0.000000 0.694743 0.208423 180 392 181 392 181 393 Trgb +0.000000 0.694743 0.208423 181 392 182 393 181 393 Trgb +0.000000 0.694743 0.208423 182 393 183 394 181 393 Trgb +0.000000 0.694743 0.208423 183 394 182 394 181 393 Trgb +0.000000 0.065286 0.019586 183 394 157 420 156 420 Trgb +0.000000 0.074712 0.022413 183 394 156 420 182 394 Trgb +0.000000 0.018852 0.005655 181 393 154 418 154 417 Trgb +0.000000 0.009426 0.002828 181 393 154 417 180 392 Trgb +0.000000 0.065517 0.019655 182 394 156 420 154 418 Trgb +0.000000 0.046897 0.014069 182 394 154 418 181 393 Trgb +0.365097 0.114210 0.095861 159 429 167 431 150 434 Trgb +0.067185 0.021017 0.017640 139 421 150 434 144 430 Trgb +0.321781 0.100660 0.084488 149 421 159 429 150 434 Trgb +0.159955 0.050037 0.041999 150 434 139 421 149 421 Trgb +0.092770 0.029020 0.024358 143 411 149 421 139 421 Trgb +0.297384 0.093028 0.078082 172 416 166 418 167 407 Trgb +0.459583 0.143767 0.120670 167 431 159 429 166 418 Trgb +0.366658 0.114698 0.096271 166 418 172 416 167 431 Trgb +0.000000 0.000000 0.000000 144 406 143 411 139 421 Trgb +0.254068 0.079478 0.066709 166 418 155 406 167 407 Trgb +0.416267 0.130217 0.109297 159 429 149 421 166 418 Trgb +0.280026 0.087598 0.073525 155 406 166 418 149 421 Trgb +0.118355 0.037024 0.031076 149 421 143 411 155 406 Trgb +0.092397 0.028904 0.024260 155 406 161 403 167 407 Trgb +0.025585 0.008004 0.006718 161 403 155 406 144 406 Trgb +0.025585 0.008004 0.006718 143 411 144 406 155 406 Trgb +0.000000 0.699458 0.209837 243 351 238 351 240 348 Trgb +0.000000 0.699458 0.209837 238 351 236 348 240 348 Trgb +0.000000 0.699458 0.209837 236 348 238 345 240 348 Trgb +0.000000 0.699458 0.209837 238 345 243 345 240 348 Trgb +0.000000 0.699458 0.209837 243 345 245 348 240 348 Trgb +0.000000 0.699458 0.209837 245 348 243 351 240 348 Trgb +0.000000 0.000000 0.000000 238 302 238 345 236 348 Trgb +0.000000 0.000000 0.000000 238 302 236 348 236 305 Trgb +0.000000 0.010118 0.003035 242 302 243 345 238 345 Trgb +0.000000 0.005059 0.001518 242 302 238 345 238 302 Trgb +0.000000 0.023392 0.007018 244 305 245 348 243 345 Trgb +0.000000 0.019284 0.005785 244 305 243 345 242 302 Trgb +0.000000 0.699769 0.209931 279 344 276 345 277 342 Trgb +0.000000 0.699769 0.209931 276 345 274 343 277 342 Trgb +0.000000 0.699769 0.209931 274 343 274 340 277 342 Trgb +0.000000 0.699769 0.209931 274 340 277 338 277 342 Trgb +0.000000 0.699769 0.209931 277 338 279 340 277 342 Trgb +0.000000 0.699769 0.209931 279 340 279 344 277 342 Trgb +0.000000 0.006306 0.001892 238 349 274 343 276 345 Trgb +0.000000 0.011255 0.003376 238 349 276 345 240 351 Trgb +0.000000 0.000452 0.000136 238 346 274 340 274 343 Trgb +0.000000 0.000904 0.000271 238 346 274 343 238 349 Trgb +0.000000 0.000000 0.000000 241 345 277 338 274 340 Trgb +0.000000 0.000000 0.000000 241 345 274 340 238 346 Trgb +0.000000 0.582895 0.174869 282 300 282 301 280 301 Trgb +0.000000 0.582895 0.174869 282 301 280 302 280 301 Trgb +0.000000 0.582895 0.174869 280 302 278 301 280 301 Trgb +0.000000 0.582895 0.174869 278 301 278 300 280 301 Trgb +0.000000 0.582895 0.174869 278 300 279 299 280 301 Trgb +0.000000 0.582895 0.174869 279 299 282 300 280 301 Trgb +0.000000 0.335109 0.100533 277 343 280 302 282 301 Trgb +0.000000 0.336208 0.100862 277 343 282 301 279 342 Trgb +0.000000 0.111337 0.033401 275 342 278 301 280 302 Trgb +0.000000 0.222674 0.066802 275 342 280 302 277 343 Trgb +0.000000 0.000000 0.000000 275 341 278 300 278 301 Trgb +0.000000 0.000000 0.000000 275 341 278 301 275 342 Trgb +0.156119 0.052040 0.041632 292 284 290 293 281 282 Trgb +0.267437 0.089146 0.071317 290 293 292 284 300 303 Trgb +0.431611 0.143870 0.115096 300 303 293 309 290 293 Trgb +0.154020 0.051340 0.041072 290 293 269 291 281 282 Trgb +0.130571 0.043524 0.034819 278 310 264 306 269 291 Trgb +0.263240 0.087747 0.070197 269 291 290 293 278 310 Trgb +0.429512 0.143171 0.114537 293 309 278 310 290 293 Trgb +0.413054 0.137685 0.110148 293 309 300 303 288 319 Trgb +0.021351 0.007117 0.005694 269 291 271 282 281 282 Trgb +0.008229 0.002743 0.002194 264 306 259 298 269 291 Trgb +0.008229 0.002743 0.002194 271 282 269 291 259 298 Trgb +0.114112 0.038037 0.030430 267 317 288 319 278 319 Trgb +0.122342 0.040781 0.032624 264 306 278 310 267 317 Trgb +0.236454 0.078818 0.063054 288 319 267 317 278 310 Trgb +0.410955 0.136985 0.109588 278 310 293 309 288 319 Trgb +0.000000 0.000000 0.000000 259 298 264 306 267 317 Trgb +0.000000 0.699650 0.209895 320 357 320 355 320 355 Trgb +0.000000 0.699650 0.209895 320 355 321 353 320 355 Trgb +0.000000 0.699650 0.209895 321 353 321 353 320 355 Trgb +0.000000 0.699650 0.209895 321 353 321 355 320 355 Trgb +0.000000 0.699650 0.209895 321 355 320 357 320 355 Trgb +0.000000 0.699650 0.209895 320 357 320 357 320 355 Trgb +0.000000 0.019057 0.005717 276 342 320 355 320 357 Trgb +0.000000 0.016121 0.004836 276 342 320 357 276 344 Trgb +0.000000 0.013204 0.003961 277 340 321 353 320 355 Trgb +0.000000 0.017599 0.005280 277 340 320 355 276 342 Trgb +0.000000 0.002937 0.000881 277 340 321 353 321 353 Trgb +0.000000 0.005873 0.001762 277 340 321 353 277 340 Trgb +0.051513 0.547915 0.119886 325 363 327 354 330 358 Trgb +0.033489 0.356204 0.077939 317 363 318 358 325 363 Trgb +0.045176 0.480506 0.105136 327 354 325 363 318 358 Trgb +0.037293 0.396663 0.086791 318 358 320 351 327 354 Trgb +0.042482 0.451858 0.098868 327 354 329 351 330 358 Trgb +0.009041 0.096168 0.021042 322 346 324 347 329 351 Trgb +0.027114 0.288393 0.063101 329 351 327 354 322 346 Trgb +0.028262 0.300606 0.065774 320 351 322 346 327 354 Trgb +0.022883 0.243388 0.053254 319 364 317 363 325 363 Trgb +0.000000 0.000000 0.000000 314 350 312 359 311 352 Trgb +0.016992 0.180738 0.039546 318 358 317 363 312 359 Trgb +0.010607 0.112815 0.024684 312 359 314 350 318 358 Trgb +0.019221 0.204438 0.044732 320 351 318 358 314 350 Trgb +0.000000 0.000000 0.000000 316 347 314 350 311 352 Trgb +0.001576 0.016759 0.003667 314 350 316 347 322 346 Trgb +0.010190 0.108381 0.023714 322 346 320 351 314 350 Trgb +0.000000 0.698163 0.209449 265 347 268 347 266 349 Trgb +0.000000 0.698163 0.209449 268 347 268 350 266 349 Trgb +0.000000 0.698163 0.209449 268 350 267 351 266 349 Trgb +0.000000 0.698163 0.209449 267 351 265 351 266 349 Trgb +0.000000 0.698163 0.209449 265 351 264 348 266 349 Trgb +0.000000 0.698163 0.209449 264 348 265 347 266 349 Trgb +0.000000 0.014969 0.004491 278 340 268 347 265 347 Trgb +0.000000 0.007485 0.002245 278 340 265 347 276 339 Trgb +0.000000 0.041203 0.012361 279 342 268 350 268 347 Trgb +0.000000 0.031829 0.009549 279 342 268 347 278 340 Trgb +0.000000 0.035609 0.010683 277 344 267 351 268 350 Trgb +0.000000 0.043093 0.012928 277 344 268 350 279 342 Trgb +0.005581 0.351590 0.071434 263 344 271 348 264 350 Trgb +0.000872 0.054960 0.011166 264 340 270 341 263 344 Trgb +0.004101 0.258361 0.052492 271 348 263 344 270 341 Trgb +0.006315 0.397826 0.080828 270 341 274 347 271 348 Trgb +0.007937 0.500031 0.101594 271 348 267 356 264 350 Trgb +0.007251 0.456807 0.092812 274 353 269 357 267 356 Trgb +0.008813 0.555244 0.112812 267 356 271 348 274 353 Trgb +0.008671 0.546267 0.110988 274 347 274 353 271 348 Trgb +0.002352 0.148188 0.030108 259 351 263 344 264 350 Trgb +0.000284 0.017904 0.003638 259 345 264 340 263 344 Trgb +0.000284 0.017904 0.003638 263 344 259 351 259 345 Trgb +0.000000 0.000000 0.000000 258 351 259 345 259 351 Trgb +0.004708 0.296630 0.060268 267 356 259 351 264 350 Trgb +0.004307 0.271310 0.055123 269 357 262 356 267 356 Trgb +0.002640 0.166346 0.033797 259 351 267 356 262 356 Trgb +0.000000 0.000000 0.000000 262 356 258 351 259 351 Trgb +0.000000 0.699555 0.209867 274 400 274 399 276 398 Trgb +0.000000 0.699555 0.209867 274 399 276 397 276 398 Trgb +0.000000 0.699555 0.209867 276 397 279 396 276 398 Trgb +0.000000 0.699555 0.209867 279 396 279 397 276 398 Trgb +0.000000 0.699555 0.209867 279 397 276 399 276 398 Trgb +0.000000 0.699555 0.209867 276 399 274 400 276 398 Trgb +0.000000 0.001828 0.000548 238 349 274 399 274 400 Trgb +0.000000 0.000914 0.000274 238 349 274 400 238 350 Trgb +0.000000 0.016145 0.004843 240 347 276 397 274 399 Trgb +0.000000 0.009443 0.002833 240 347 274 399 238 349 Trgb +0.000000 0.021019 0.006306 243 346 279 396 276 397 Trgb +0.000000 0.021933 0.006580 243 346 276 397 240 347 Trgb +0.000000 0.000000 0.000000 275 399 275 398 276 398 Trgb +0.000000 0.000000 0.000000 275 398 277 396 276 398 Trgb +0.000000 0.000000 0.000000 277 396 278 397 276 398 Trgb +0.000000 0.000000 0.000000 278 397 278 398 276 398 Trgb +0.000000 0.000000 0.000000 278 398 276 400 276 398 Trgb +0.000000 0.000000 0.000000 276 400 275 399 276 398 Trgb +0.000000 0.040083 0.012025 276 400 304 426 303 425 Trgb +0.000000 0.020042 0.006012 276 400 303 425 275 399 Trgb +0.000000 0.090960 0.027288 278 398 305 424 304 426 Trgb +0.000000 0.075542 0.022663 278 398 304 426 276 400 Trgb +0.000000 0.066294 0.019888 278 397 306 422 305 424 Trgb +0.000000 0.086336 0.025901 278 397 305 424 278 398 Trgb +0.082512 0.183187 0.053140 311 434 303 434 299 434 Trgb +0.144624 0.321084 0.093142 299 434 307 431 311 434 Trgb +0.131873 0.292775 0.084930 313 423 314 416 316 424 Trgb +0.161712 0.359021 0.104147 316 424 311 434 313 423 Trgb +0.186888 0.414915 0.120361 307 431 313 423 311 434 Trgb +0.028116 0.062421 0.018107 300 424 292 424 296 417 Trgb +0.022788 0.050592 0.014676 299 434 295 431 292 424 Trgb +0.050904 0.113013 0.032783 292 424 300 424 299 434 Trgb +0.113016 0.250910 0.072785 307 431 299 434 300 424 Trgb +0.033444 0.074249 0.021539 305 413 300 424 296 417 Trgb +0.100265 0.222601 0.064573 314 416 313 423 305 413 Trgb +0.098496 0.218673 0.063434 300 424 305 413 313 423 Trgb +0.155280 0.344741 0.100004 313 423 307 431 300 424 Trgb +0.000000 0.000000 0.000000 292 424 297 414 296 417 Trgb +0.005328 0.011829 0.003431 297 414 305 413 296 417 Trgb +0.035213 0.078177 0.022678 309 414 314 416 305 413 Trgb +0.000000 0.000000 0.000000 276 398 274 397 276 398 Trgb +0.000000 0.000000 0.000000 274 397 275 397 276 398 Trgb +0.000000 0.000000 0.000000 275 397 277 398 276 398 Trgb +0.000000 0.000000 0.000000 277 398 278 399 276 398 Trgb +0.000000 0.000000 0.000000 278 399 278 399 276 398 Trgb +0.000000 0.000000 0.000000 278 399 276 398 276 398 Trgb +0.000000 0.456347 0.136904 278 399 262 440 260 440 Trgb +0.000000 0.340193 0.102058 278 399 260 440 276 398 Trgb +0.000000 0.423140 0.126942 278 399 263 440 262 440 Trgb +0.000000 0.497820 0.149346 278 399 262 440 278 399 Trgb +0.000000 0.149360 0.044808 276 398 260 440 259 439 Trgb +0.000000 0.074680 0.022404 276 398 259 439 274 397 Trgb +0.212339 0.022980 0.047064 249 455 269 460 253 460 Trgb +0.339481 0.036740 0.075244 252 441 268 447 249 455 Trgb +0.400003 0.043290 0.088659 269 460 249 455 268 447 Trgb +0.531030 0.057471 0.117700 268 447 280 448 269 460 Trgb +0.070112 0.007588 0.015540 242 448 249 455 253 460 Trgb +0.144590 0.015648 0.032048 241 434 252 441 249 455 Trgb +0.062885 0.006806 0.013938 249 455 242 448 241 434 Trgb +0.184671 0.019986 0.040931 280 431 260 426 268 419 Trgb +0.329260 0.035634 0.072979 268 447 252 441 260 426 Trgb +0.379562 0.041078 0.084128 260 426 280 431 268 447 Trgb +0.520810 0.056365 0.115435 280 448 268 447 280 431 Trgb +0.052664 0.005700 0.011673 260 426 253 419 268 419 Trgb +0.134369 0.014542 0.029782 252 441 241 434 260 426 Trgb +0.052664 0.005700 0.011673 253 419 260 426 241 434 Trgb +0.000000 0.000000 0.000000 241 434 242 431 253 419 Trgb +0.000000 0.699838 0.209951 305 398 304 400 303 399 Trgb +0.000000 0.699838 0.209951 304 400 303 401 303 399 Trgb +0.000000 0.699838 0.209951 303 401 301 400 303 399 Trgb +0.000000 0.699838 0.209951 301 400 301 398 303 399 Trgb +0.000000 0.699838 0.209951 301 398 303 397 303 399 Trgb +0.000000 0.699838 0.209951 303 397 305 398 303 399 Trgb +0.000000 0.004567 0.001370 275 399 301 400 303 401 Trgb +0.000000 0.008870 0.002661 275 399 303 401 276 400 Trgb +0.000000 0.000088 0.000026 275 397 301 398 301 400 Trgb +0.000000 0.000176 0.000053 275 397 301 400 275 399 Trgb +0.000000 0.000000 0.000000 277 396 303 397 301 398 Trgb +0.000000 0.000000 0.000000 277 396 301 398 275 397 Trgb +0.222606 0.358895 0.116300 316 395 312 409 312 399 Trgb +0.223481 0.360306 0.116757 312 409 301 403 312 399 Trgb +0.084475 0.136195 0.044134 299 413 292 405 301 403 Trgb +0.166838 0.268984 0.087164 301 403 312 409 299 413 Trgb +0.143692 0.231666 0.075072 307 412 299 413 312 409 Trgb +0.172674 0.278393 0.090214 306 390 316 395 312 399 Trgb +0.090628 0.146114 0.047348 316 395 306 390 307 386 Trgb +0.033050 0.053284 0.017267 298 386 307 386 306 390 Trgb +0.173550 0.279804 0.090671 301 403 306 390 312 399 Trgb +0.059072 0.095239 0.030862 292 405 292 394 301 403 Trgb +0.091503 0.147525 0.047806 306 390 301 403 292 394 Trgb +0.033050 0.053284 0.017267 292 394 298 386 306 390 Trgb +0.026022 0.041954 0.013595 292 405 299 413 289 403 Trgb +0.000619 0.000998 0.000323 292 394 292 405 289 403 Trgb +0.000000 0.000000 0.000000 298 386 292 394 294 389 Trgb +0.000000 0.683893 0.205168 199 372 201 375 199 375 Trgb +0.000000 0.683893 0.205168 201 375 201 378 199 375 Trgb +0.000000 0.683893 0.205168 201 378 199 378 199 375 Trgb +0.000000 0.683893 0.205168 199 378 197 376 199 375 Trgb +0.000000 0.683893 0.205168 197 376 197 373 199 375 Trgb +0.000000 0.683893 0.205168 197 373 199 372 199 375 Trgb +0.000000 0.091401 0.027420 243 347 201 375 199 372 Trgb +0.000000 0.049695 0.014909 243 347 199 372 240 345 Trgb +0.000000 0.127779 0.038334 243 350 201 378 201 375 Trgb +0.000000 0.130442 0.039133 243 350 201 375 243 347 Trgb +0.000000 0.005327 0.001598 240 345 199 372 197 373 Trgb +0.000000 0.002663 0.000799 240 345 197 373 238 346 Trgb +0.144027 0.150940 0.058993 191 371 200 384 189 382 Trgb +0.110751 0.116067 0.045364 199 362 207 369 191 371 Trgb +0.201210 0.210868 0.082416 200 384 191 371 207 369 Trgb +0.289919 0.303835 0.118751 207 369 211 381 200 384 Trgb +0.135622 0.142131 0.055551 200 384 192 390 189 382 Trgb +0.184399 0.193250 0.075530 192 390 200 384 208 388 Trgb +0.281513 0.295026 0.115308 211 381 208 388 200 384 Trgb +0.047625 0.049911 0.019507 183 377 191 371 189 382 Trgb +0.028132 0.029483 0.011523 190 362 199 362 191 371 Trgb +0.022189 0.023254 0.009088 191 371 183 377 190 362 Trgb +0.088563 0.092814 0.036275 207 369 199 362 206 361 Trgb +0.143049 0.149916 0.058593 206 361 215 374 207 369 Trgb +0.253947 0.266136 0.104017 211 381 207 369 215 374 Trgb +0.039219 0.041102 0.016064 192 390 183 377 189 382 Trgb +0.245542 0.257328 0.100574 208 388 211 381 215 374 Trgb +0.005944 0.006229 0.002434 199 362 190 362 206 361 Trgb +0.000000 0.663069 0.198921 237 303 239 304 240 305 Trgb +0.000000 0.663069 0.198921 239 304 243 306 240 305 Trgb +0.000000 0.663069 0.198921 243 306 243 307 240 305 Trgb +0.000000 0.663069 0.198921 243 307 241 306 240 305 Trgb +0.000000 0.663069 0.198921 241 306 237 304 240 305 Trgb +0.000000 0.663069 0.198921 237 304 237 303 240 305 Trgb +0.000000 0.004603 0.001381 237 304 193 373 193 372 Trgb +0.000000 0.002302 0.000690 237 304 193 372 237 303 Trgb +0.000000 0.134078 0.040224 241 306 197 375 193 373 Trgb +0.000000 0.070492 0.021148 241 306 193 373 237 304 Trgb +0.000000 0.193062 0.057919 243 307 199 376 197 375 Trgb +0.000000 0.195363 0.058609 243 307 197 375 241 306 Trgb +0.000000 0.000000 0.000000 195 373 198 373 196 374 Trgb +0.000000 0.000000 0.000000 198 373 199 374 196 374 Trgb +0.000000 0.000000 0.000000 199 374 197 375 196 374 Trgb +0.000000 0.000000 0.000000 197 375 194 376 196 374 Trgb +0.000000 0.000000 0.000000 194 376 193 374 196 374 Trgb +0.000000 0.000000 0.000000 193 374 195 373 196 374 Trgb +0.000000 0.116215 0.034865 194 376 202 423 201 422 Trgb +0.000000 0.058108 0.017432 194 376 201 422 193 374 Trgb +0.000000 0.468066 0.140420 197 375 204 423 202 423 Trgb +0.000000 0.321194 0.096358 197 375 202 423 194 376 Trgb +0.000000 0.498723 0.149617 199 374 206 422 204 423 Trgb +0.000000 0.556831 0.167049 199 374 204 423 197 375 Trgb +0.000000 0.011484 0.003445 202 423 231 450 230 451 Trgb +0.000000 0.005742 0.001723 202 423 230 451 202 423 Trgb +0.000000 0.027990 0.008397 204 422 232 449 231 450 Trgb +0.000000 0.022608 0.006782 204 422 231 450 202 423 Trgb +0.000000 0.021887 0.006566 205 420 233 448 232 449 Trgb +0.000000 0.027629 0.008289 205 420 232 449 204 422 Trgb +0.140855 0.120441 0.052259 222 460 224 457 234 462 Trgb +0.240544 0.205683 0.089245 244 451 244 451 242 459 Trgb +0.170476 0.145769 0.063249 244 451 244 451 242 439 Trgb +0.212239 0.181480 0.078744 238 442 242 439 244 451 Trgb +0.303940 0.259891 0.112766 234 462 244 451 242 459 Trgb +0.225159 0.192527 0.083537 224 457 231 450 234 462 Trgb +0.297267 0.254185 0.110290 244 451 234 462 231 450 Trgb +0.275635 0.235688 0.102265 231 450 238 442 244 451 Trgb +0.044827 0.038331 0.016632 224 457 222 460 219 448 Trgb +0.000000 0.000000 0.000000 230 437 229 437 221 439 Trgb +0.020908 0.017878 0.007757 229 437 230 437 242 439 Trgb +0.095304 0.081492 0.035359 242 439 238 442 229 437 Trgb +0.000000 0.000000 0.000000 229 437 219 448 221 439 Trgb +0.129131 0.110416 0.047909 231 450 224 457 219 448 Trgb +0.084303 0.072086 0.031278 219 448 229 437 231 450 Trgb +0.158699 0.135699 0.058880 238 442 231 450 229 437 Trgb +0.000000 0.697205 0.209161 203 423 202 421 203 422 Trgb +0.000000 0.697205 0.209161 202 421 202 420 203 422 Trgb +0.000000 0.697205 0.209161 202 420 203 421 203 422 Trgb +0.000000 0.697205 0.209161 203 421 205 422 203 422 Trgb +0.000000 0.697205 0.209161 205 422 205 423 203 422 Trgb +0.000000 0.697205 0.209161 205 423 203 423 203 422 Trgb +0.000000 0.053582 0.016075 205 423 177 446 175 445 Trgb +0.000000 0.054544 0.016363 205 423 175 445 203 423 Trgb +0.000000 0.001924 0.000577 202 421 174 444 174 443 Trgb +0.000000 0.000962 0.000289 202 421 174 443 202 420 Trgb +0.000000 0.037965 0.011390 203 423 175 445 174 444 Trgb +0.000000 0.020425 0.006128 203 423 174 444 202 421 Trgb +0.316256 0.106519 0.084555 174 454 183 458 166 458 Trgb +0.035608 0.011993 0.009520 158 444 166 458 164 454 Trgb +0.217204 0.073158 0.058072 166 444 174 454 166 458 Trgb +0.081816 0.027557 0.021875 166 458 158 444 166 444 Trgb +0.046208 0.015564 0.012354 163 434 166 444 158 444 Trgb +0.350542 0.118068 0.093722 193 445 183 444 188 434 Trgb +0.436507 0.147022 0.116706 183 458 174 454 183 444 Trgb +0.410770 0.138353 0.109825 183 444 193 445 183 458 Trgb +0.324951 0.109448 0.086880 188 454 183 458 193 445 Trgb +0.251490 0.084706 0.067239 183 444 175 430 188 434 Trgb +0.337456 0.113660 0.090223 174 454 166 444 183 444 Trgb +0.212668 0.071630 0.056859 175 430 183 444 166 444 Trgb +0.056808 0.019134 0.015188 166 444 163 434 175 430 Trgb +0.095631 0.032210 0.025568 175 430 185 430 188 434 Trgb +0.010600 0.003570 0.002834 163 434 168 430 175 430 Trgb +0.000000 0.699705 0.209912 228 451 227 452 227 452 Trgb +0.000000 0.699705 0.209912 227 452 226 453 227 452 Trgb +0.000000 0.699705 0.209912 226 453 225 453 227 452 Trgb +0.000000 0.699705 0.209912 225 453 226 451 227 452 Trgb +0.000000 0.699705 0.209912 226 451 228 450 227 452 Trgb +0.000000 0.699705 0.209912 228 450 228 451 227 452 Trgb +0.000000 0.012277 0.003683 203 421 226 451 225 453 Trgb +0.000000 0.006561 0.001968 203 421 225 453 202 423 Trgb +0.000000 0.017430 0.005229 204 421 228 450 226 451 Trgb +0.000000 0.017712 0.005313 204 421 226 451 203 421 Trgb +0.000000 0.005716 0.001715 205 421 228 451 228 450 Trgb +0.000000 0.011432 0.003430 205 421 228 450 204 421 Trgb +0.039036 0.368851 0.081578 229 459 226 459 232 458 Trgb +0.014453 0.136564 0.030203 221 457 220 456 226 459 Trgb +0.054216 0.512286 0.113300 232 453 235 454 232 458 Trgb +0.042493 0.401514 0.088801 235 454 232 453 233 446 Trgb +0.040366 0.381422 0.084358 229 448 233 446 232 453 Trgb +0.054876 0.518519 0.114679 226 459 232 453 232 458 Trgb +0.022702 0.214515 0.047443 220 456 223 452 226 459 Trgb +0.043812 0.413980 0.091559 232 453 226 459 223 452 Trgb +0.041026 0.387655 0.085736 223 452 229 448 232 453 Trgb +0.007590 0.071717 0.015861 225 444 228 445 233 446 Trgb +0.018790 0.177548 0.039268 233 446 229 448 225 444 Trgb +0.000000 0.000000 0.000000 225 444 219 450 222 445 Trgb +0.008716 0.082358 0.018215 223 452 220 456 219 450 Trgb +0.008250 0.077951 0.017240 219 450 225 444 223 452 Trgb +0.019450 0.183782 0.040646 229 448 223 452 225 444 Trgb +0.000000 0.675852 0.202756 157 401 155 402 154 399 Trgb +0.000000 0.675852 0.202756 155 402 153 400 154 399 Trgb +0.000000 0.675852 0.202756 153 400 152 397 154 399 Trgb +0.000000 0.675852 0.202756 152 397 154 396 154 399 Trgb +0.000000 0.675852 0.202756 154 396 156 398 154 399 Trgb +0.000000 0.675852 0.202756 156 398 157 401 154 399 Trgb +0.000000 0.082884 0.024865 197 377 155 402 157 401 Trgb +0.000000 0.128084 0.038425 197 377 157 401 198 376 Trgb +0.000000 0.090401 0.027120 198 373 156 398 154 396 Trgb +0.000000 0.045200 0.013560 198 373 154 396 195 371 Trgb +0.000000 0.160724 0.048217 198 376 157 401 156 398 Trgb +0.000000 0.148162 0.044449 198 376 156 398 198 373 Trgb +0.000000 0.624566 0.187370 133 381 132 382 132 381 Trgb +0.000000 0.624566 0.187370 132 382 130 382 132 381 Trgb +0.000000 0.624566 0.187370 130 382 130 380 132 381 Trgb +0.000000 0.624566 0.187370 130 380 132 379 132 381 Trgb +0.000000 0.624566 0.187370 132 379 134 379 132 381 Trgb +0.000000 0.624566 0.187370 134 379 133 381 132 381 Trgb +0.000000 0.236481 0.070944 154 401 132 382 133 381 Trgb +0.000000 0.274378 0.082313 154 401 133 381 156 400 Trgb +0.000000 0.066195 0.019858 153 400 130 382 132 382 Trgb +0.000000 0.132389 0.039717 153 400 132 382 154 401 Trgb +0.000000 0.246080 0.073824 156 400 133 381 134 379 Trgb +0.000000 0.179885 0.053966 156 400 134 379 156 398 Trgb +0.190356 0.052692 0.048610 134 378 117 386 121 372 Trgb +0.466388 0.129100 0.119098 146 386 134 397 134 378 Trgb +0.319369 0.088404 0.081555 117 386 134 378 134 397 Trgb +0.207824 0.057527 0.053070 134 397 122 397 117 386 Trgb +0.050611 0.014010 0.012924 117 386 115 370 121 372 Trgb +0.032644 0.009036 0.008336 115 370 117 386 115 388 Trgb +0.060843 0.016842 0.015537 122 397 115 388 117 386 Trgb +0.157712 0.043656 0.040274 132 362 134 378 121 372 Trgb +0.426508 0.118061 0.108914 149 373 146 386 134 378 Trgb +0.246846 0.068329 0.063035 134 378 132 362 149 373 Trgb +0.107101 0.029646 0.027349 142 364 149 373 132 362 Trgb +0.440979 0.122066 0.112609 134 397 146 386 149 391 Trgb +0.268552 0.074337 0.068578 149 391 132 398 134 397 Trgb +0.182415 0.050494 0.046582 122 397 134 397 132 398 Trgb +0.017967 0.004973 0.004588 115 370 132 362 121 372 Trgb +0.401099 0.111028 0.102425 146 386 149 373 149 391 Trgb +0.000000 0.696208 0.208862 150 441 149 441 152 441 Trgb +0.000000 0.696208 0.208862 149 441 151 441 152 441 Trgb +0.000000 0.696208 0.208862 151 441 153 441 152 441 Trgb +0.000000 0.696208 0.208862 153 441 154 441 152 441 Trgb +0.000000 0.696208 0.208862 154 441 152 441 152 441 Trgb +0.000000 0.696208 0.208862 152 441 150 441 152 441 Trgb +0.000000 0.021860 0.006558 154 399 151 441 149 441 Trgb +0.000000 0.010930 0.003279 154 399 149 441 152 399 Trgb +0.000000 0.059363 0.017809 156 399 153 441 151 441 Trgb +0.000000 0.046076 0.013823 156 399 151 441 154 399 Trgb +0.000000 0.050790 0.015237 157 399 154 441 153 441 Trgb +0.000000 0.061719 0.018516 157 399 153 441 156 399 Trgb +0.039530 0.023325 0.012571 135 441 138 440 141 452 Trgb +0.241096 0.142261 0.076671 141 452 158 453 150 458 Trgb +0.358611 0.211603 0.114043 149 440 162 441 158 453 Trgb +0.265973 0.156940 0.084583 158 453 141 452 149 440 Trgb +0.127736 0.075372 0.040622 138 440 149 440 141 452 Trgb +0.000000 0.000000 0.000000 138 440 135 441 143 428 Trgb +0.251597 0.148458 0.080011 158 453 160 454 150 458 Trgb +0.369112 0.217799 0.117382 162 441 168 442 158 453 Trgb +0.286976 0.169334 0.091262 160 454 158 453 168 442 Trgb +0.048676 0.028722 0.015480 160 429 143 428 153 424 Trgb +0.269050 0.158756 0.085561 162 441 149 440 160 429 Trgb +0.136882 0.080769 0.043530 143 428 160 429 149 440 Trgb +0.088206 0.052047 0.028051 149 440 138 440 143 428 Trgb +0.279552 0.164953 0.088901 168 442 162 441 160 429 Trgb +0.147384 0.086966 0.046870 160 429 162 430 168 442 Trgb +0.000000 0.698453 0.209536 154 397 154 397 154 399 Trgb +0.000000 0.698453 0.209536 154 397 155 399 154 399 Trgb +0.000000 0.698453 0.209536 155 399 155 401 154 399 Trgb +0.000000 0.698453 0.209536 155 401 155 401 154 399 Trgb +0.000000 0.698453 0.209536 155 401 154 399 154 399 Trgb +0.000000 0.698453 0.209536 154 399 154 397 154 399 Trgb +0.000000 0.024988 0.007496 154 399 112 404 112 402 Trgb +0.000000 0.012494 0.003748 154 399 112 402 154 397 Trgb +0.000000 0.040894 0.012268 155 401 112 406 112 404 Trgb +0.000000 0.039188 0.011756 155 401 112 404 154 399 Trgb +0.000000 0.017612 0.005284 155 401 113 406 112 406 Trgb +0.000000 0.030106 0.009032 155 401 112 406 155 401 Trgb +0.013474 0.018613 0.006417 101 396 102 410 99 405 Trgb +0.048974 0.067653 0.023325 110 392 110 400 101 396 Trgb +0.062448 0.086266 0.029743 102 410 101 396 110 400 Trgb +0.140330 0.193851 0.066836 110 400 111 410 102 410 Trgb +0.074641 0.103109 0.035550 104 413 102 410 113 417 Trgb +0.152523 0.210694 0.072643 111 410 113 417 102 410 Trgb +0.000000 0.000000 0.000000 112 391 110 392 101 396 Trgb +0.190994 0.263838 0.090966 121 407 120 394 126 402 Trgb +0.084474 0.116692 0.040233 110 400 110 392 120 394 Trgb +0.181141 0.250228 0.086274 120 394 121 407 110 400 Trgb +0.223523 0.308773 0.106459 111 410 110 400 121 407 Trgb +0.203187 0.280681 0.096774 123 411 121 407 126 402 Trgb +0.205527 0.283915 0.097888 121 407 123 411 113 417 Trgb +0.235716 0.325617 0.112267 113 417 111 410 121 407 Trgb +0.035500 0.049040 0.016908 110 392 112 391 120 394 Trgb +0.000000 0.000000 0.000000 196 373 198 373 196 374 Trgb +0.000000 0.000000 0.000000 198 373 199 374 196 374 Trgb +0.000000 0.000000 0.000000 199 374 196 375 196 374 Trgb +0.000000 0.000000 0.000000 196 375 194 375 196 374 Trgb +0.000000 0.000000 0.000000 194 375 194 374 196 374 Trgb +0.000000 0.000000 0.000000 194 374 196 373 196 374 Trgb +0.000000 0.058250 0.017475 196 375 211 428 209 428 Trgb +0.000000 0.029125 0.008737 196 375 209 428 194 375 Trgb +0.000000 0.089543 0.026863 199 374 214 427 211 428 Trgb +0.000000 0.088459 0.026538 199 374 211 428 196 375 Trgb +0.000000 0.032377 0.009713 198 373 213 426 214 427 Trgb +0.000000 0.061502 0.018451 198 373 214 427 199 374 Trgb +0.000000 0.030777 0.009233 211 428 250 437 250 438 Trgb +0.000000 0.024674 0.007402 211 428 250 438 211 429 Trgb +0.000000 0.024499 0.007350 211 426 250 435 250 437 Trgb +0.000000 0.030690 0.009207 211 426 250 437 211 428 Trgb +0.000000 0.006103 0.001831 212 425 250 434 250 435 Trgb +0.000000 0.012206 0.003662 212 425 250 435 211 426 Trgb +0.191392 0.316343 0.101547 257 446 258 441 262 439 Trgb +0.197092 0.325763 0.104571 248 447 249 440 258 441 Trgb +0.176218 0.291262 0.093496 258 441 257 446 248 447 Trgb +0.088556 0.146370 0.046985 247 447 248 447 257 446 Trgb +0.191022 0.315731 0.101350 258 441 260 430 262 439 Trgb +0.196721 0.325151 0.104374 249 440 251 431 258 441 Trgb +0.175477 0.290037 0.093103 260 430 258 441 251 431 Trgb +0.087553 0.144712 0.046453 251 431 253 425 260 430 Trgb +0.002361 0.003902 0.001253 241 437 240 442 238 433 Trgb +0.111529 0.184341 0.059174 249 440 248 447 241 437 Trgb +0.047688 0.078822 0.025302 240 442 241 437 248 447 Trgb +0.045589 0.075353 0.024188 248 447 247 447 240 442 Trgb +0.002361 0.003902 0.001253 243 426 241 437 238 433 Trgb +0.111158 0.183728 0.058977 251 431 249 440 241 437 Trgb +0.047318 0.078209 0.025105 241 437 243 426 251 431 Trgb +0.044957 0.074307 0.023853 253 425 251 431 243 426 Trgb +0.000000 0.696159 0.208848 210 428 209 426 211 427 Trgb +0.000000 0.696159 0.208848 209 426 211 426 211 427 Trgb +0.000000 0.696159 0.208848 211 426 212 426 211 427 Trgb +0.000000 0.696159 0.208848 212 426 213 428 211 427 Trgb +0.000000 0.696159 0.208848 213 428 212 429 211 427 Trgb +0.000000 0.696159 0.208848 212 429 210 428 211 427 Trgb +0.000000 0.053681 0.016104 212 429 198 454 197 453 Trgb +0.000000 0.036521 0.010956 212 429 197 453 210 428 Trgb +0.000000 0.057934 0.017380 213 428 200 453 198 454 Trgb +0.000000 0.064388 0.019316 213 428 198 454 212 429 Trgb +0.000000 0.012907 0.003872 210 428 197 453 196 451 Trgb +0.000000 0.006454 0.001936 210 428 196 451 209 426 Trgb +0.154398 0.084429 0.047765 188 459 198 464 187 464 Trgb +0.165493 0.090496 0.051198 202 466 187 464 198 464 Trgb +0.296883 0.162344 0.091845 198 464 209 463 202 466 Trgb +0.036020 0.019697 0.011143 183 449 188 459 187 464 Trgb +0.274719 0.150224 0.084989 209 453 194 450 203 442 Trgb +0.225659 0.123397 0.069811 198 464 188 459 194 450 Trgb +0.328338 0.179544 0.101576 194 450 209 453 198 464 Trgb +0.388466 0.212424 0.120178 209 463 198 464 209 453 Trgb +0.223779 0.122368 0.069229 209 440 209 453 203 442 Trgb +0.226457 0.123833 0.070058 209 453 209 440 213 455 Trgb +0.337526 0.184568 0.104419 213 455 209 463 209 453 Trgb +0.136021 0.074380 0.042080 194 450 194 438 203 442 Trgb +0.107282 0.058665 0.033189 188 459 183 449 194 450 Trgb +0.071262 0.038968 0.022046 194 438 194 450 183 449 Trgb +0.000000 0.000000 0.000000 183 449 187 441 194 438 Trgb +0.085080 0.046524 0.026321 194 438 209 440 203 442 Trgb +0.000000 0.695760 0.208728 202 465 202 466 200 465 Trgb +0.000000 0.695760 0.208728 202 466 201 466 200 465 Trgb +0.000000 0.695760 0.208728 201 466 199 465 200 465 Trgb +0.000000 0.695760 0.208728 199 465 198 464 200 465 Trgb +0.000000 0.695760 0.208728 198 464 200 465 200 465 Trgb +0.000000 0.695760 0.208728 200 465 202 465 200 465 Trgb +0.000000 0.053534 0.016060 213 428 202 466 202 465 Trgb +0.000000 0.065180 0.019554 213 428 202 465 213 427 Trgb +0.000000 0.023293 0.006988 211 427 200 465 198 464 Trgb +0.000000 0.011646 0.003494 211 427 198 464 209 427 Trgb +0.000000 0.062864 0.018859 213 427 202 465 200 465 Trgb +0.000000 0.048901 0.014670 213 427 200 465 211 427 Trgb +0.375597 0.014475 0.078015 207 480 205 484 195 485 Trgb +0.566565 0.021835 0.117680 216 466 220 471 207 480 Trgb +0.435134 0.016770 0.090381 205 484 207 480 220 471 Trgb +0.360499 0.013893 0.074879 187 474 207 480 195 485 Trgb +0.551467 0.021253 0.114544 202 460 216 466 207 480 Trgb +0.404938 0.015606 0.084109 207 480 187 474 202 460 Trgb +0.194920 0.007512 0.040486 187 458 202 460 187 474 Trgb +0.435649 0.016790 0.090488 220 471 216 466 215 452 Trgb +0.150481 0.005799 0.031256 185 479 187 474 195 485 Trgb +0.057909 0.002232 0.012028 187 474 185 479 180 460 Trgb +0.057909 0.002232 0.012028 180 460 187 458 187 474 Trgb +0.079101 0.003049 0.016430 215 452 195 446 206 446 Trgb +0.420551 0.016208 0.087352 216 466 202 460 215 452 Trgb +0.216112 0.008329 0.044888 195 446 215 452 202 460 Trgb +0.137011 0.005280 0.028458 202 460 187 458 195 446 Trgb +0.000000 0.000000 0.000000 187 458 180 460 195 446 Trgb + +0.2 20 20 592 592 BDR + +grestore +showpage +%%Trailer +%%Pages: 1 +end +%clear cleardictstack +%doretreesave restore +%%EOF diff --git a/vendor/github.com/llgcode/ps/samples/escher.ps b/vendor/github.com/llgcode/ps/samples/escher.ps new file mode 100644 index 0000000..32fbc83 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/escher.ps @@ -0,0 +1,380 @@ +%! +% If you're concerned that the cpu in your PostScript printer will atrophy +% from disuse, here is another Escher-like contribution to to keep it busy +% for a while. It uses PostScript color commands, but will still work on +% a monochrome printer (but isn't very pretty in black & white). +% +% The butterflies are arranged in a hexagonal grid (wallpaper group p6), +% and the moveto, lineto, curveto commands used to render the tesselation +% are redefined so as to impose a nonlinear transform that shrinks the +% infinite plane to an ellipse. This is a sleazy way to mimic Escher's +% "circle limit" sorts of things. +% +% The butterfly permimeter was made by imposing all the symmetry constraints +% on a path, and then that path was filled in using Adobe Illustrator +% +% The routines Xform and next_color are easy to change if you want to hack +% with them. The code was written to sacrifice efficiency for readability. +% +% Bob Wallis +% +% UUCP {sun,pyramid,cae780,apple}!weitek!wallis + +%statusdict begin waittimeout 6000 lt % if you have a slow printer, you +% {0 60 6000 setdefaulttimeouts} % might need to uncomment this +%if end + +/nlayers 1 def % 1 takes about 10 minutes on a LW+; 2 takes 4x longer +/warp 1 def % 1 -> ellipsoidal distortion; 0 -> flat Euclidean +/inch {72 mul} def + +/x4 152 def /y4 205.6 def % 6 fold rotation center of bfly +/x12 387.20 def /y12 403.84 def % 3 fold center of bfly + +/dx x4 x12 sub def % [dx,dy] = distance between the +/dy y4 y12 sub def % two fixed points above + +/Dm dx dup mul dy dup mul % magnitude of basis vectors of + add sqrt 3 sqrt mul % parallelogram lattice +def % = |dx,dy| * sqrt(3) + +/Da dy dx atan 30 add def +/D1x Dm Da cos mul def % [D1x, D1y] = basis vector vector #1 +/D1y Dm Da sin mul def % = [Dm,0] exp(j30) + +/Da dy dx atan 30 sub def +/D2x Dm Da cos mul def % [D2x, D2y] = basis vector vector #2 +/D2y Dm Da sin mul def % = [Dm,0] exp(-j30) + +/m { moveto} def +/L {lineto} def +/S {stroke} def +/c {curveto} def +/f {closepath fill} def +/F {closepath fill} def +/g { setgray} def + +/FillStroke { % fill interior & stroke black border + closepath gsave fill grestore 0 setgray stroke +} def + +% +% Description of 1 butterfly +% +/body { + 314.96 280.19 m + 383.4 261.71 445.11 243.23 513.52 224.68 c + 463.68 256.59 490.26 328.83 446.99 360.76 c + 423.71 347.32 397.08 339.7 367.07 337.9 c + 388.93 358.28 414.14 372.84 442.73 381.58 c + 426.68 398.18 394.07 389.7 387.2 403.84 c + 371.52 404.96 362.56 372.48 340.16 366.88 c + 346.88 396.01 346.88 425.12 340.16 454.24 c + 326.72 427.35 320 400.48 320 373.6 c + 270.71 352.1 221.44 411.23 168.88 384.02 c + 189.04 388.03 202.48 380.4 212.57 366.95 c + 216.72 350.85 209.23 341.46 190.1 338.79 c + 177.34 343.57 167.94 354.17 161.9 370.59 c + 176.06 305.52 132.02 274.05 152 205.6 c + 201.29 257.12 250.56 234.72 299.84 279.52 c + 288.64 266.08 284.16 252.64 286.4 239.2 c + 298.27 223.97 310.15 222.18 322.02 233.82 c + 328.62 249.28 328.51 264.74 314.96 280.19 c + FillStroke +} def + +/eyes { + 294.8125 238.3246 m + 296.9115 238.3246 298.6132 242.7964 298.6132 248.3125 c + 298.6132 253.8286 296.9115 258.3004 294.8125 258.3004 c + 292.7135 258.3004 291.0118 253.8286 291.0118 248.3125 c + 291.0118 242.7964 292.7135 238.3246 294.8125 238.3246 c + closepath gsave 1 g fill grestore 0 g S + + 319.5 241.1782 m + 321.7455 241.1782 323.5659 245.4917 323.5659 250.8125 c + 323.5659 256.1333 321.7455 260.4468 319.5 260.4468 c + 317.2545 260.4468 315.4341 256.1333 315.4341 250.8125 c + 315.4341 245.4917 317.2545 241.1782 319.5 241.1782 c + closepath gsave 1 g fill grestore 0 g S + 0 g + 296.875 242.0939 m + 297.4608 242.0939 297.9356 243.479 297.9356 245.1875 c + 297.9356 246.896 297.4608 248.2811 296.875 248.2811 c + 296.2892 248.2811 295.8143 246.896 295.8143 245.1875 c + 295.8143 243.479 296.2892 242.0939 296.875 242.0939 c + f + 0 g + 318.5 243.7707 m + 319.281 243.7707 319.9142 245.0766 319.9142 246.6875 c + 319.9142 248.2984 319.281 249.6043 318.5 249.6043 c + 317.719 249.6043 317.0858 248.2984 317.0858 246.6875 c + 317.0858 245.0766 317.719 243.7707 318.5 243.7707 c + f +} def + +/stripes { + 292 289 m + 252 294 241 295 213 279 c + 185 263 175 252 159 222 c + S + 285 313 m + 239 326 226 325 206 315 c + 186 305 164 278 161 267 c + S + 298 353 m + 262 342 251 339 237 355 c + 223 371 213 380 201 383 c + S + 330 288 m + 384 293 385 292 418 280 c + 451 268 452 264 473 247 c + S + 342 306 m + 381 311 386 317 410 311 c + 434 305 460 287 474 262 c + S + 345 321 m + 352 357 359 367 379 377 c + 399 387 409 385 426 382 c + S + 327.75 367.75 m + 336.5 392.25 333.682 403.348 335.25 415.5 c + S + 320 364.75 m + 322 361.75 323.5 360.5 326.25 360 c + 329 359.5 332 360.5 334 362.75 c + S + 316.25 356.5 m + 318.75 353.25 320 353 323.25 352.25 c + 326.5 351.5 329 352 331.5 353.25 c + S + 312.5 349 m + 316.75 345.5 318.25 344.5 321.25 343.75 c + 324.25 343 327 344 329.75 346 c + S + 310.75 340.75 m + 314.25 336.5 316.25 335.25 320 335.25 c + 323.75 335.25 327 336.5 329.25 338 c + S + 308.5 332 m + 311.75 328.5 312.5 327.25 317 327 c + 321.5 326.75 325.75 328.25 327.75 329.75 c + S + 305 322 m + 309.5 317.75 310.75 317 315 316.5 c + 319.25 316 322.25 318 324.75 320 c + S + 302.25 311 m + 307 307.5 307.75 306.25 312.75 306 c + 317.75 305.75 320 307.25 323.75 309.5 c + S + 301.25 298.25 m + 304.5 292.75 305.25 292 308.25 292 c + 311.25 292 313.75 293.75 315.75 295.75 c + S +} def +/nostrils { + 0 g + 304.062 227.775 m + 304.599 227.775 305.034 228.883 305.034 230.25 c + 305.034 231.616 304.599 232.724 304.062 232.724 c + 303.525 232.724 303.09 231.616 303.09 230.25 c + 303.09 228.883 303.525 227.775 304.062 227.775 c + f + 304.062 230.25 m + F + 309.562 228.275 m + 310.099 228.275 310.534 229.383 310.534 230.75 c + 310.534 232.116 310.099 233.224 309.562 233.224 c + 309.025 233.224 308.59 232.116 308.59 230.75 c + 308.59 229.383 309.025 228.275 309.562 228.275 c + f +} def +/thorax +{ + 327.5 300 m + 316.5 283 315.5 275.5 308 277.5 c + 294 311.5 299 313.5 304 334 c + 309 354.5 315.5 362 322.5 372 c + 329.5 382 327.5 376.5 331 376 c + 334.5 375.5 339.1367 379.1109 339 369 c + 338.5 332 333.4999 324.5 330.5 311.5 c + 0 g S +} def +/spots { + next_color + 192 242.201 m + 202.1535 242.201 210.3848 251.0655 210.3848 262 c + 210.3848 272.9345 202.1535 281.799 192 281.799 c + 181.8465 281.799 173.6152 272.9345 173.6152 262 c + 173.6152 251.0655 181.8465 242.201 192 242.201 c + FillStroke + next_color + 447.5 250.2365 m + 459.6061 250.2365 469.4203 257.5181 469.4203 266.5 c + 469.4203 275.4819 459.6061 282.7635 447.5 282.7635 c + 435.3939 282.7635 425.5797 275.4819 425.5797 266.5 c + 425.5797 257.5181 435.3939 250.2365 447.5 250.2365 c + FillStroke + next_color + 401 369.1005 m + 409.5914 369.1005 416.5563 373.5327 416.5563 379 c + 416.5563 384.4673 409.5914 388.8995 401 388.8995 c + 392.4086 388.8995 385.4436 384.4673 385.4436 379 c + 385.4436 373.5327 392.4086 369.1005 401 369.1005 c + FillStroke + next_color + 249 348.2721 m + 261.4966 348.2721 271.6274 353.9707 271.6274 361 c + 271.6274 368.0293 261.4966 373.7279 249 373.7279 c + 236.5034 373.7279 226.3726 368.0293 226.3726 361 c + 226.3726 353.9707 236.5034 348.2721 249 348.2721 c + FillStroke +} def + +/ncolor 6 def +/cidx 0 def + +/next_color { + cidx ncolor div % hue + .75 % saturation (change these if you like) + .8 % lightness + sethsbcolor + /cidx cidx 1 add ncolor mod def +} def + +/cidx 0 def + +/max_r2 % radius^2 for center of outermost ring of butterflies + Dm nlayers mul 1.05 mul dup mul +def + +/max_radius max_r2 sqrt def +/max_radius_inv 1 max_radius div def +/Dm_inv 1 Dm div def + +% +% Ellipsoidal distortion, maps "nlayers" concentric rings of cells into +% an ellipse centered on page + +% D length of 1 basis vector separating hexagonal cells +% z0 center of 6-fold rotation = origin of shrink xform +% z' = (z - z0)/D new coord system +% |z'| = sqrt(x^2 + [(8.5/11)*y]^2) aspect ratio of paper +% z" = z' * a/M(|z'|) shrink by "a/M(|z|)" as fcn of radius + +% At the max radius, we want the shrunk ellipse to be "W" units wide so it +% just fits our output format - solve for scale factor "a" + +% zmax = n+0.5 for n layers of cells +% zmax * [a/M(zmax)] = W 1/2 width of output on paper +% a = M(zmax)*W/zmax solve for "a" + +%/M{dup mul 1 add sqrt}bind def % M(u) = sqrt(1+|u|^2) = one possible shrink +/M { 1.5 add } bind def % M(u) = (1.5+|u|) = another possible one +/W 3.8 inch def % 1/2 width of ellipse +/zmax 0.5 nlayers add def % radius at last layer of hexagons +/a zmax M W mul zmax div def % a = M(zmax)*W/zmax + +/Xform { % [x0,y0] = ctr ellipse + Matrix transform + /y exch def + /x exch def + /z x dup mul y .773 mul dup mul add sqrt def % ellipse radius + /Scale a z M div def % z=a/M(|z|) + x Scale mul x0 add % magnify back up + y Scale mul y0 add % [x0+x*s, y0+y*s] +} bind def + + +/Helvetica findfont 8 scalefont setfont +4.25 inch 0.5 inch moveto +(RHW) stringwidth pop -0.5 mul 0 rmoveto +(RHW) show % autograph + +warp 1 eq { % redefine commands to use Xform + /moveto { Xform moveto} bind def + /lineto { Xform lineto} bind def + /curveto { + Xform 6 -2 roll + Xform 6 -2 roll + Xform 6 -2 roll + curveto + } bind def +}if + + +/bfly { % paint 1 butterfly + next_color body + 1 setgray eyes + stripes + 0 setgray nostrils + 0.5 setgray thorax next_color + spots +} def + +/x0 x4 def % center +/y0 y4 def + +/T1matrix % xlate to center of image + x0 neg y0 neg matrix translate +def + +/Smatrix % scale so that 1 basis vector = 1.0 + Dm_inv dup matrix scale +def + +/HexCell { % 6 butterflys rotated about center of + /cidx 0 def % 6 fold symmetry + /color 0 def + /T2matrix dx dy matrix translate def + 0 60 300 { + /angle exch def + /Rmatrix angle matrix rotate def + /Matrix % translate, rotate, scale - used by Xform + T1matrix Rmatrix matrix concatmatrix + T2matrix matrix concatmatrix + Smatrix matrix concatmatrix + def + gsave + warp 0 eq % then may use usual PostScript machinery + { % else using Xform + x0 y0 translate angle rotate + .5 dup scale + dx x0 sub dy y0 sub translate + } if + bfly + next_color + grestore + } for +} def + + +%320 x4 sub 240 y4 sub translate +4.25 inch x4 sub 5.5 inch y4 sub translate + + +0 setlinewidth +/N 2 def +N neg 1 N { + /i exch def % translate to + N neg 1 N { % i*D1 + j*D2 + /j exch def % and draw HexCell + gsave + /dx i D1x mul j D2x mul add def % translate HexCell by + /dy i D1y mul j D2y mul add def % [dx,dy] + /r2 dx dup mul dy dup mul add def % r^2 = |dx,dy|^2 + r2 max_r2 lt % inside radius? + { % yes + 1 r2 max_r2 div sub sqrt 2 div + setlinewidth % make skinnier lines + HexCell % 6 butterflies + } + if + grestore + } for +} for + +showpage + diff --git a/vendor/github.com/llgcode/ps/samples/golfer.ps b/vendor/github.com/llgcode/ps/samples/golfer.ps new file mode 100644 index 0000000..930f777 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/golfer.ps @@ -0,0 +1,1398 @@ +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator:Adobe Illustrator(TM) 1.0b2- +%%Title:golfer art+ +%%CreationDate:1/6/87 9:32 AM +%%DocumentFonts:Helvetica-Bold +%%BoundingBox:7 31 577 726 +%%TemplateBox:0 -48 576 672 +%%EndComments +100 dict begin +/q{bind def}bind def +/Q{load def}q +/x{exch def}q +/X/def Q +/g{/_g x/p{_g setgray}X}q +/G{/_G x/P{_G setgray}X}q +/k{/_b x/_g x/_r x/p{_r _g _b setrgbcolor}X}q +/K{/_B x/_G x/_R x/P{_R _G _B setrgbcolor}X}q +/d/setdash Q +/i/setflat Q +/j/setlinejoin Q +/J/setlinecap Q +/M/setmiterlimit Q +/w/setlinewidth Q +/_C{.25 sub round .25 add}q +/_c{transform _C exch _C exch itransform}q +/c{_c curveto}q +/C/c Q +/v{currentpoint 6 2 roll _c curveto}q +/V/v Q +/y{_c 2 copy curveto}q +/Y/y Q +/l{_c lineto}q +/L/l Q +/m{_c moveto}q +/_e[]X +/_E{_e length 0 ne{gsave 1 g 0 G 1 i 0 J 0 j .5 w 10 M[]0 d +/Helvetica-Bold 24 0 0 1 z +[0.966 0.259 -0.259 0.966 +_e 0 get _e 2 get add 2 div _e 1 get _e 3 get add 2 div]a +(ERROR: can't fill a path)t T grestore}if}q +/n/newpath Q +/N/newpath Q +/F{p{fill}stopped{/_e[pathbbox]X n _E}if}q +/f{closepath F}q +/S{P stroke}q +/s{closepath S}q +/B{gsave F grestore S}q +/b{closepath B}q +/u{}q +/U{}q +/_s/ashow Q +/_S{(?)exch{2 copy 0 exch put pop dup true charpath currentpoint _m setmatrix +stroke _M setmatrix moveto 3 copy pop rmoveto}forall pop pop pop n}q +/_A{_a moveto _t exch 0 exch}q +/_L{0 _l neg translate _M currentmatrix pop}q +/_w{dup stringwidth exch 3 -1 roll length 1 sub _t mul add exch}q +/_z[{0 0}bind{dup _w exch neg 2 div exch neg 2 div}bind +{dup _w exch neg exch neg}bind]X +/z{_z exch get/_a x/_t x/_l x exch findfont exch scalefont setfont}q +/_d{matrix currentmatrix X}q +/_D{/_m _d gsave concat/_M _d}q +/e{_D p/t{_A _s _L}X}q +/r{_D P/t{_A _S _L}X}q +/a{_D/t{dup p _A _s P _A _S _L}X}q +/o{_D/t{pop _L}X}q +/T{grestore}q +/Z{findfont begin currentdict dup length dict begin +{1 index/FID ne{X}{pop pop}ifelse}forall/FontName exch X dup length 0 ne +{/Encoding Encoding 256 array copy X 0 exch{dup type/nametype eq +{Encoding 2 index 2 index put pop 1 add}{exch pop}ifelse}forall}if pop +currentdict dup end end/FontName get exch definefont pop}q +n +%%EndProlog +u +0.9 g +0 G +1 i +0 J +0 j +1 w +10 M +[]0 d +%%Note: +15.815 40.248 m +567.815 40.002 L +567.748 716.565 L +15.998 716.81 L +15.815 40.248 L +b +U +1 g +285.313 40 m +567.688 40.125 L +567.812 78.375 L +285.312 78.25 L +285.313 40 L +b +0 g +175.5 163 m +180.007 163 173.738 169.081 171.75 168.75 c +174.75 169.25 176.25 169.5 174.5 171.25 C +178 171.25 176.349 173.783 175 176.75 c +173.75 179.5 170.75 182.25 168.25 182 C +165.5 181.25 167.622 182.838 165.25 186 c +164.5 187 164.75 187.5 161.75 186.75 c +158.75 186 163.25 190 156.75 190 c +150.25 190 148.5 189 145.5 186 c +142.5 183 139.75 183.75 139.5 182.5 c +139.25 181.25 139.5 176.75 138.75 175.5 c +138 174.25 136.75 174.25 136.25 178 c +135.75 181.75 140.25 182.25 134 187 C +135.75 190.75 134.5 191.75 131 193.5 C +131 200 129.202 203.364 119.5 208.5 c +115.25 210.75 107 212.75 104.75 208.75 c +102.5 204.75 103 206.5 96.5 205.75 c +90 205 87.25 202.5 86.5 197.75 c +85.75 193 82.75 195 79 194.75 c +75.25 194.5 77 192.75 77.25 191.75 c +77.5 190.75 75.25 192.5 71.5 192 c +67.75 191.5 64.25 185.5 69.5 180.75 c +74.75 176 66.5 180.75 64.25 182.25 c +62 183.75 60.5 181.75 61 180.25 c +61.5 178.75 58.75 180.75 57.5 180.75 c +56.25 180.75 51.008 180.188 52 172.25 c +52.25 170.25 51.5 170.5 49.75 169.25 c +48 168 45.75 164.25 48.5 158.75 c +51.25 153.25 49 150 48 145.5 c +47 141 48 138.25 51.25 137.25 c +54.5 136.25 54 133.791 54 130.75 C +57 130.5 59 129.25 58.75 124.5 C +62.25 124.5 61.75 126.75 62.5 130 c +63.25 133.25 65.75 129 66.25 127 c +66.75 125 67.5 125 72 125 C +74.75 116.25 74.75 120.5 75.25 117.25 C +80 117.5 79.5 116.75 83.25 113.75 c +87 110.75 88.25 115.5 92 118.5 c +95.75 121.5 94.25 122.75 96.25 118.75 c +98.25 114.75 98.5 119 101.5 119.25 c +104.5 119.5 101 115.75 105.25 114.5 c +109.5 113.25 105 113.75 103.5 111.25 c +102 108.75 95 103.5 101.75 101.5 c +108.5 99.5 103.5 99.75 94.75 99.5 c +86 99.25 73.75 87.5 97.25 73.25 C +117.25 53.25 117.25 53.5 v +117.25 53.75 175.25 163 175.5 163 c +f +1 J +0.2 w +389.709 210.076 m +511.826 210.076 l +S +394.709 212.461 m +516.826 212.461 l +S +415.459 215.112 m +537.576 215.112 l +S +399.709 217.762 m +521.826 217.762 l +S +402.459 222.799 m +524.576 222.799 l +S +402.709 225.45 m +524.826 225.45 l +S +392.959 227.851 m +515.076 227.851 l +S +400.691 232.856 m +522.809 232.856 l +S +388.191 235.241 m +510.309 235.241 l +S +393.941 237.892 m +516.059 237.892 l +S +393.441 240.292 m +515.559 240.292 l +S +396.191 242.928 m +518.309 242.928 l +S +386.441 245.579 m +508.559 245.579 l +S +393.191 248.23 m +515.309 248.23 l +S +414.191 250.631 m +536.309 250.631 l +S +397.95 252.973 m +520.067 252.973 l +S +398.7 255.358 m +520.817 255.358 l +S +400.7 258.009 m +522.817 258.009 l +S +384.45 260.659 m +506.567 260.659 l +S +380.7 265.696 m +502.817 265.696 l +S +379.95 268.347 m +502.067 268.347 l +S +386.7 270.748 m +508.817 270.748 l +S +394.433 275.752 m +516.55 275.752 l +S +381.933 278.138 m +504.05 278.138 l +S +379.433 280.789 m +501.55 280.789 l +S +383.183 283.189 m +505.3 283.189 l +S +370.433 285.825 m +492.55 285.825 l +S +382.433 288.476 m +504.55 288.476 l +S +356.183 291.127 m +478.3 291.127 l +S +372.433 293.277 m +494.55 293.277 l +S +361.866 296.006 m +483.984 296.006 l +S +365.616 298.406 m +487.734 298.406 l +S +366.866 301.042 m +488.984 301.042 l +S +346.866 303.693 m +468.984 303.693 l +S +338.616 306.344 m +460.734 306.344 l +S +330.866 308.494 m +452.984 308.494 l +S +301.575 344.342 m +423.692 344.342 l +S +314.075 346.728 m +436.192 346.728 l +S +318.325 349.378 m +440.442 349.378 l +S +312.075 352.029 m +434.192 352.029 l +S +327.325 357.065 m +449.442 357.065 l +S +327.575 359.716 m +449.692 359.716 l +S +317.825 362.117 m +439.942 362.117 l +S +335.558 367.122 m +457.675 367.122 l +S +313.058 369.507 m +435.175 369.507 l +S +318.808 372.158 m +440.925 372.158 l +S +317.579 404.674 m +439.696 404.674 l +S +322.312 409.179 m +444.429 409.179 l +S +323.812 412.065 m +445.929 412.065 l +S +329.562 414.715 m +451.679 414.715 l +S +329.062 417.116 m +451.179 417.116 l +S +331.812 419.752 m +453.929 419.752 l +S +322.062 422.402 m +444.179 422.402 l +S +328.812 425.053 m +450.929 425.053 l +S +349.812 427.454 m +471.929 427.454 l +S +333.571 429.796 m +455.688 429.796 l +S +334.321 432.182 m +456.438 432.182 l +S +336.321 434.832 m +458.438 434.832 l +S +320.071 437.483 m +442.188 437.483 l +S +316.321 442.519 m +438.438 442.519 l +S +315.571 445.17 m +437.688 445.17 l +S +322.321 447.571 m +444.438 447.571 l +S +330.054 452.576 m +452.171 452.576 l +S +317.554 454.961 m +439.671 454.961 l +S +315.054 457.612 m +437.171 457.612 l +S +318.804 460.012 m +440.921 460.012 l +S +306.054 462.648 m +428.171 462.648 l +S +300.054 465.299 m +422.171 465.299 l +S +291.804 467.95 m +413.921 467.95 l +S +308.054 470.101 m +430.171 470.101 l +S +260.834 543.511 m +382.951 543.511 l +S +246.066 548.016 m +368.184 548.016 l +S +256.066 550.901 m +378.184 550.901 l +S +253.566 553.552 m +375.684 553.552 l +S +230.316 555.952 m +352.434 555.952 l +S +244.566 558.588 m +366.684 558.588 l +S +238.566 561.239 m +360.684 561.239 l +S +230.316 563.89 m +352.434 563.89 l +S +216.566 565.541 m +338.684 565.541 l +S +104.443 572.01 m +226.575 572.209 l +S +98.682 567.48 m +220.814 567.68 l +S +91.688 565.11 m +213.82 565.31 l +S +97.192 561.955 m +219.324 562.155 l +S +73.943 559.517 m +196.075 559.717 l +S +88.199 556.904 m +210.331 557.103 l +S +82.203 554.243 m +204.335 554.443 l +S +73.956 551.578 m +196.088 551.778 l +S +73.707 549.405 m +195.839 549.605 l +S +85.302 539.953 m +207.434 540.152 l +S +79.541 535.423 m +201.673 535.623 l +S +72.547 533.053 m +194.679 533.253 l +S +78.051 529.898 m +200.183 530.098 l +S +54.802 527.46 m +176.934 527.66 l +S +69.058 524.847 m +191.19 525.046 l +S +63.061 522.186 m +185.194 522.385 l +S +54.815 519.521 m +176.947 519.721 l +S +54.566 517.348 m +176.698 517.547 l +S +u +189.475 196.879 m +311.592 196.879 l +S +176.975 199.265 m +299.092 199.265 l +S +174.475 201.916 m +296.592 201.916 l +S +178.225 204.316 m +300.342 204.316 l +S +165.475 206.952 m +287.592 206.952 l +S +177.475 209.603 m +299.592 209.603 l +S +155.725 212.254 m +277.842 212.254 l +S +167.475 214.404 m +289.592 214.404 l +S +156.908 217.133 m +279.026 217.133 l +S +144.658 219.533 m +266.776 219.533 l +S +161.908 222.169 m +284.026 222.169 l +S +153.908 224.82 m +276.026 224.82 l +S +163.658 226.971 m +285.776 226.971 l +S +152.408 229.121 m +274.526 229.121 l +S +145.925 233.316 m +268.042 233.316 l +S +157.675 235.466 m +279.792 235.466 l +S +147.108 238.195 m +269.226 238.195 l +S +134.858 240.595 m +256.976 240.595 l +S +137.608 243.231 m +259.726 243.231 l +S +144.108 245.882 m +266.226 245.882 l +S +153.858 248.033 m +275.976 248.033 l +S +155.108 231.183 m +277.226 231.183 l +S +103.425 247.816 m +225.542 247.816 l +S +100.175 249.966 m +222.292 249.966 l +S +89.608 252.695 m +211.726 252.695 l +S +77.358 255.095 m +199.476 255.095 l +S +U +u +1 g +0 J +1 w +120.001 389.999 m +170.811 344.713 248.714 349.191 294.001 400.001 c +339.287 450.811 334.809 528.714 283.999 574.001 c +233.189 619.287 155.286 614.809 109.999 563.999 c +64.713 513.189 69.191 435.286 120.001 389.999 c +f +202 482 m +F +U +u +258 302 m +306.6 267.759 373.759 279.4 408 328 c +442.241 376.6 430.6 443.759 382 478 c +333.4 512.241 266.241 500.6 232 452 c +197.759 403.4 209.4 336.241 258 302 c +f +320 390 m +F +U +u +196 376 m +252.332 345.072 323.072 365.668 354 422 c +384.928 478.332 364.332 549.072 308 580 c +251.668 610.928 180.928 590.332 150 534 c +119.072 477.668 139.668 406.928 196 376 c +f +252 478 m +F +U +u +106 257 m +170.064 231.595 242.595 262.936 268 327 c +293.405 391.064 262.064 463.595 198 489 c +133.936 514.405 61.405 483.064 36 419 c +10.595 354.936 41.936 282.405 106 257 c +f +152 373 m +F +U +u +366.001 122 m +415.706 97.7 475.7 118.296 500 168.001 c +524.3 217.706 503.704 277.7 453.999 302 c +404.294 326.3 344.3 305.704 320 255.999 c +295.7 206.294 316.296 146.3 366.001 122 c +f +410 212 m +F +U +u +227.999 198 m +267.763 185.85 309.849 208.236 322 247.999 c +334.15 287.763 311.764 329.849 272.001 342 c +232.237 354.15 190.151 331.764 178 292.001 c +165.85 252.237 188.236 210.151 227.999 198 c +f +250 270 m +F +U +0 g +15.75 71.25 m +24.25 82.75 24.75 84.75 27.75 82.25 c +30.75 79.75 31.75 81.25 32.75 82.75 c +33.75 84.25 30.75 86.75 35.75 88.75 c +40.75 90.75 41.25 91.75 43.25 89.75 c +45.25 87.75 39.25 89.25 50.25 88.75 c +61.25 88.25 70.25 81.75 74.25 75.25 c +78.25 68.75 77.75 67.25 75.25 63.25 c +72.75 59.25 68.25 56.75 72.25 57.25 c +76.25 57.75 75.75 60.75 77.75 56.75 c +79.75 52.75 80.25 51.25 79.25 49.25 c +78.25 47.25 74.25 46.75 81.25 46.25 c +88.25 45.75 91.75 37.557 91.75 40.25 c +15.752 40.248 l +15.75 71.25 l +f +340.75 55.5 m +F +u +u +3 w +280.774 44.223 m +567.893 44.223 l +S +280.774 48.728 m +567.893 48.728 l +S +280.774 53.734 m +567.893 53.734 l +S +U +u +280.774 58.739 m +567.893 58.739 l +S +280.774 63.245 m +567.893 63.245 l +S +280.774 68.251 m +567.893 68.251 l +S +U +u +280.774 73.257 m +567.893 73.257 l +S +280.774 78.263 m +567.893 78.263 l +S +U +U +0.8 g +0.2 w +243 252 m +323 235 l +346 273 l +368 248 l +376 247 376 248 V +377 174 380.5 121 330.5 40 C +90.5 40 91.5 40 V +138.5 129 163 162 214 200 C +236 229 234.527 240.11 238 254 c +240 262 243 252 y +b +0.5 g +359.5 485 m +389.267 485 402.5 486.25 415.75 489 c +429 491.75 435 493.25 439 493.5 c +443 493.75 490.398 537.797 502.5 562 c +507 571 514.5 577 517.5 579.5 c +520.5 582 501.5 591 y +428 512 428 512.5 v +428 513 356.5 510 356 509.5 c +355.5 509 351 488 y +359 485 359.5 485 v +b +0.7 g +370 496.5 m +368 480.5 365.5 472.5 364.5 471.5 C +329.5 476.5 l +323.5 489.5 l +370 496.5 l +b +0.5 g +352.75 494 m +380 493.25 399.626 496.75 407.5 499 c +418 502 424.586 497.135 432.75 505.5 c +453 526.25 473.5 544.5 496.5 586.5 C +473.5 590 473.5 590.5 V +456 571.5 443 563.5 434 558 c +425 552.5 416 544 408.5 534.5 C +399 533 379.5 537.5 364 537.5 c +348.5 537.5 352.75 494 y +b +1 g +500 583 m +500.5 577.098 517 573.5 520.5 572 c +524 570.5 526.353 568.989 526.5 579 c +526.675 590.992 541 586 539 624 C +538.5 624 506 628 y +499.958 583.498 500 583 v +b +0 g +1 J +3 w +562 629 m +343 645 217 644 77 601 C +52 576 L +59.5 562 80.132 560.877 87 589 c +89.513 599.292 87 597 101 601 c +108.323 603.092 265 654 561 617 C +562 629 l +f +1 G +0 J +0.7 w +305 634 m +391.5 636.5 415 635 473 632 c +S +0.5 w +213 626.5 m +153.5 619 125.925 611.699 90.75 602.5 c +78.654 599.337 82.567 597.884 82.5 592 c +82.395 582.717 73.75 571 59 572.5 c +S +1 g +0 G +1 w +73 595.25 m +79.25 592.5 76.25 574.75 57.25 580 C +73 595.25 l +f +0.5 g +0.2 w +312 574.25 m +311.25 570.5 310.687 571.687 306.187 569.187 C +307.687 564.187 311.106 565.66 304.5 561.5 c +302.594 560.299 305.598 556.561 305.75 555.5 c +306.038 553.485 304.629 548.098 297 548.5 c +292.25 548.75 255.5 536 y +229.5 608.5 l +224 650 224.5 650 v +248.101 650 273.345 678.918 298 655.5 c +324.857 629.99 316.981 613.501 316.75 612.875 c +313.346 603.644 313.238 604.937 314.75 597.375 c +316.88 586.725 317.016 588.834 318.625 584.75 C +320.25 581.875 318.625 580.375 y +316.689 578.236 313.081 579.809 310.375 579 c +307.013 577.994 312 574.25 y +B +0 g +0.5 w +288.5 456 m +S +0.2 w +211 511 m +194.5 518.5 187 520.5 170.5 500 C +154.5 498.5 149.5 501 131.5 479.5 C +151 477.5 140 475 161 460 c +182 445 190.5 436.5 212 461 C +224.5 458 229 454.5 238.5 447 C +238 446.5 237 500.5 y +211 511 l +f +1 g +207.5 526.5 m +206 514.5 204 506 236 490.5 C +242.5 509.5 l +207.5 526.5 l +b +0 g +1 w +294.464 627.589 m +288.571 618.522 284.821 617.313 280 615.5 c +275.179 613.686 271.429 605.224 277.857 587.089 C +274.107 586.485 275.179 585.88 275.714 582.858 C +271.429 599.179 270.357 606.433 259.643 609.455 c +248.929 612.477 245.714 589.507 247.321 566.537 C +228.572 554.448 L +224.639 578.851 235.956 576.38 212.5 600.992 c +194.17 620.226 195.893 654.791 225.357 658.418 C +223.214 667.485 233.929 678.97 259.107 677.761 c +284.286 676.552 281.071 667.485 Y +302.5 667.485 334.964 665.942 301.429 614.895 C +306.25 639.679 303.571 643.306 296.607 646.933 C +299.286 634.239 294.464 627.589 y +f +0.7 g +0.2 w +207.5 524.5 m +214.75 519.25 241.5 509 y +239 504.5 l +232 503 214.5 508.75 206.75 519 C +207 522.5 207.5 524.5 y +b +1 g +298 546.5 m +272.625 574.625 248.5 596 195.5 568.5 C +196.26 524.417 214.492 504.333 239.5 510.5 C +298 546.5 l +b +0.8 g +351.5 542 m +367 540 L +358.5 509.5 357 489.5 357 482 C +323.5 482.5 295.5 485.5 284.5 477.5 c +298.5 468.5 l +299 457 l +270.5 451 l +238.5 483.5 l +241 513.5 l +250.5 538 252.5 547.5 282.5 550 C +306.251 550 334.454 541.702 343.687 542.187 C +342.576 538.175 346.737 538.055 351.5 542 c +b +0 g +1 w +333.25 484.75 m +343.25 458.25 371.5 466 349 418.5 C +359 348.5 378 357 363 336 C +358.5 333 359 333 v +359.5 333 353 328 359 327.5 c +365 327 371 316.5 373.5 253.5 C +381 245.5 l +371 221 371 220.5 V +360.5 247 358 253 351 261.5 C +340 238 331.5 220.5 328.5 211.5 C +301 229.5 265 250 232.5 244.5 C +247.5 287 246 299.5 275 320.5 C +270 331.5 268.689 334.634 265.75 336.25 c +255.75 341.75 261.891 340.771 251 375 c +247.5 386 249.5 384 255.5 399 C +252.5 397 253.5 401 253.5 402.5 c +253.5 404 252.057 400.023 251 402.5 c +235 440 219.5 489.5 249.5 534 C +238.5 503.5 242.102 477.13 260 463 c +269.5 455.5 278.75 453.25 291 457.25 C +297.5 461 299.549 465.787 282 476.75 C +292.5 487.5 333.25 484.75 y +f +457.25 576.25 m +454.936 574.233 453.51 595.217 479.25 583 C +495.651 573.321 495.931 560.263 482.5 560.5 C +486.25 566 491.682 565.465 478.5 575 c +463.444 585.891 460.318 578.924 457.25 576.25 c +f +1 g +460.75 581.5 m +463.387 583.699 467.528 583.937 470.5 583.375 c +473.752 582.76 473.75 581.75 Y +461.735 583.841 458.891 579.95 460.75 581.5 c +f +0 g +310.393 647.785 m +329.089 651.66 328.75 623.692 320.178 607.976 C +319.107 621.274 316.428 636.386 310.536 635.782 c +304.643 635.177 310.393 647.785 y +f +284.286 663.858 m +286.964 677.157 280.536 689.246 281.071 689.246 C +289.107 677.761 288.036 665.672 y +284.286 663.858 l +f +0.2 w +274.643 683.201 m +278.929 678.97 280 668.694 279.464 665.672 c +S +276.25 686.224 m +284.393 677.036 283.75 662.045 y +S +1 w +297.679 661.44 m +312.602 661.44 312.143 677.157 310.536 680.784 C +308.929 672.321 305.179 666.276 292.857 664.463 C +297.679 661.44 l +f +0.2 w +295 661.44 m +298.75 666.276 302.5 675.343 294.464 683.201 c +S +300.357 681.992 m +304.265 669.255 303.814 670.807 292.321 656.604 c +S +311.821 649.078 m +321.464 649.078 330.571 646.66 329.5 627.921 c +S +307.536 650.892 m +316.268 651.33 319.057 653.025 326.821 646.056 c +330.446 642.802 331.1 637.618 331.107 637.593 c +S +304.643 665.067 m +305.629 663.874 321.031 667.072 321.304 651.569 c +S +0.5 w +311.071 639.679 m +317.893 638.968 312.696 617.332 v +S +1 w +313.375 612.875 m +315.455 614.262 313.5 617.375 297.125 615.375 C +310.375 616.625 311.875 611.875 313.375 612.875 c +f +1 g +308.5 604.875 m +309.833 600.875 309.125 601.25 307.375 599 C +302.25 600.625 303.25 599.875 299 602.5 C +304.25 604.75 308.375 605.25 308.5 604.875 c +f +0 g +307.5 604.437 m +305.463 602.811 305.481 601.49 307.375 598.937 C +309.261 601.307 309.489 602.172 308.562 605.062 C +308.562 604.937 308.191 604.989 307.5 604.437 c +f +0.2 w +305.625 583.75 m +304.687 582.562 306.5 579.375 308.875 579.75 c +S +1 w +311.125 574.5 m +310.25 573.898 310 573.437 304.937 569.312 C +306.229 564.611 308.063 564.014 308.312 564.562 C +309.775 566.476 307.663 569.565 306.687 569.75 C +311.812 571.75 311.625 572.5 312 574.25 C +311.687 574.75 311.176 574.535 311.125 574.5 c +f +298.625 603 m +302 600.437 304.294 599.524 307.812 598.937 c +308.187 598.875 308.562 598.5 308.687 597.875 c +S +297.5 602.25 m +299.939 602.851 307.687 603.062 311.75 607.812 C +307.812 606 297.011 602.129 297.5 602.25 c +f +213.5 576.125 m +218.674 549.92 230.862 532.355 245.5 526.5 C +243.75 514.5 209.75 494.25 195.5 568.5 C +203.75 572.25 213.347 576.901 213.5 576.125 c +f +0.2 w +343.375 541.75 m +333.375 534.75 318.25 525.5 312 521.25 c +S +351.562 541.937 m +337.936 530.579 327.2 525.581 313.25 517.75 c +S +0.3 w +312.75 495 m +291.75 483.5 276.25 476 274.25 466 c +S +0.5 w +229 580.75 m +235.5 571 241.25 554.75 245.75 528 c +S +1 w +235 581 m +246 555.75 246.75 537.75 245.75 526 C +252.125 560.5 243.75 567.75 239.75 581.5 C +240 581.5 237 581.75 235 581 C +f +0.7 g +0.2 w +248.625 580.5 m +253.169 564.605 256.75 553.75 250.25 535.75 C +257.5 552.75 259.125 558.937 252.875 579.687 C +251.029 580.149 248.517 580.879 248.625 580.5 c +b +0 g +1 w +258.25 577.75 m +262.047 567.879 262.5 552.5 259.25 544.25 C +267.75 548.25 275 549.75 278.25 549.75 C +281.75 555.25 282.75 556.75 279.5 565.25 C +270.06 573.13 257.909 578.635 258.25 577.75 c +f +207.5 524.5 m +F +207.25 514.75 m +207.185 514.86 228.75 497.5 238 500.75 C +236 494.5 l +225 498 213.924 503.454 207.25 514.75 c +f +1 g +0.2 w +191 516 m +175.472 497.418 168.5 492 171.5 453 C +185 443.5 189 443.5 200 450.5 C +186.5 469.5 182 491 198.5 515.5 C +194.5 516 191.339 516.406 191 516 c +b +201 515 m +194 499 187 484 203.5 453 C +206.5 455 211.5 460.5 212 461 C +203.5 480.5 193.5 501.5 206 510.5 C +205 499.5 210.5 490.5 232.5 473.5 C +232.5 483 231.5 482.5 233 492 C +221 498 210 505 208 512.5 C +201 515 l +b +0 g +1 G +0.5 w +268 442.5 m +253.5 402.5 l +S +269.5 435.5 m +258.5 407 258.5 407.5 v +S +0.5 G +0.4 w +293.5 480.5 m +297.5 463.5 298.5 460.5 289 445.5 c +S +1 G +1 J +0.3 w +349.125 418.125 m +338.393 403.978 348.387 416.158 341.625 408.875 c +S +u +1 g +0 G +0 J +0.2 w +336.038 340.015 m +338.267 329.694 L +342.937 338.843 L +340.707 349.164 L +336.038 340.015 L +b +339.487 339.429 m +B +U +u +328.791 340.569 m +331.562 330.38 L +335.743 339.762 L +332.972 349.952 L +328.791 340.569 L +b +332.267 340.166 m +B +U +u +321.758 340.67 m +325.133 330.664 L +328.746 340.28 L +325.37 350.286 L +321.758 340.67 L +b +325.252 340.475 m +B +U +u +314.504 340.97 m +317.88 330.964 L +321.492 340.58 L +318.117 350.586 L +314.504 340.97 L +b +317.998 340.775 m +B +U +u +u +307.24 340.468 m +311.982 331.033 L +314.214 341.059 L +309.473 350.494 L +307.24 340.468 L +b +310.727 340.764 m +B +U +u +300.016 339.751 m +304.757 330.316 L +306.99 340.342 L +302.249 349.777 L +300.016 339.751 L +b +303.503 340.047 m +B +U +U +u +u +292.985 339.2 m +298.349 330.104 L +299.903 340.258 L +294.54 349.353 L +292.985 339.2 L +b +296.444 339.729 m +B +U +u +285.826 338 m +291.189 328.904 L +292.744 339.057 L +287.38 348.153 L +285.826 338 L +b +289.285 338.529 m +B +U +U +u +278.742 336.229 m +285.413 328.042 L +285.423 338.314 L +278.753 346.501 L +278.742 336.229 L +b +282.083 337.272 m +B +U +u +272.228 332.392 m +279.743 324.974 L +278.644 335.186 L +271.13 342.604 L +272.228 332.392 L +b +275.437 333.789 m +B +U +0 g +1 G +1 w +266.25 335.5 m +276.25 351.5 284.659 350 343 350 c +364 350 363 336 y +S +271 321 m +294 332 309 335 362 324 c +S +u +1 g +0 G +0.2 w +350.823 325.912 m +364.33 322.302 L +361.658 347.078 L +348.151 350.689 L +350.823 325.912 L +b +356.24 336.495 m +B +U +0 g +1 w +274 347.5 m +281.5 351.5 280.229 357.581 311 338 c +316.5 334.5 322.5 338 351 357.5 C +282 360 l +274 347.5 l +f +1 G +0.5 w +269.25 355.75 m +277.75 353.25 284.25 352.5 288.75 349.75 c +S +353.25 358.25 m +347.25 354 345.5 353.5 339.75 349.5 c +S +0.3 w +355.25 272.75 m +359.75 281.5 361.25 285 363.25 290.75 c +S +0.5 G +0.5 w +354 219 m +339 195 327 176 317 166 c +S +323 197 m +310 150 308 135 235 48 c +S +1 w +241 241.5 m +232 227.5 215.231 198.443 215 198 c +192.581 155 178 110 164 71 c +S +0 G +0.2 w +265.394 600.822 m +263.576 606.114 262.122 612.994 253.035 607.173 C +250.126 603.468 249.763 601.704 249.763 596.589 c +249.763 591.473 254.307 592.179 257.76 587.24 c +261.213 582.301 266.484 579.302 267.029 588.475 c +S +0.3 g +260.668 605.409 m +262.486 601.352 261.94 599.941 257.578 597.824 c +253.216 595.707 257.76 591.473 260.305 592.355 c +262.849 593.237 263.394 592.532 264.303 591.65 c +265.212 590.768 266.666 591.826 264.667 594.119 c +262.667 596.413 259.759 593.943 261.032 597.471 c +262.304 600.999 260.668 605.409 y +b +0 g +257.578 606.644 m +254.125 605.056 251.58 604.174 251.58 598.177 c +251.58 592.179 258.487 590.415 259.214 588.651 c +S +u +1 g +257.397 584.594 m +258.601 581.671 262.019 580.25 265.03 581.419 c +268.041 582.588 269.506 585.905 268.302 588.827 c +267.097 591.75 263.679 593.172 260.668 592.003 c +257.657 590.833 256.192 587.516 257.397 584.594 c +b +262.849 586.711 m +B +U +u +0.2 g +1 w +258.487 586.358 m +263.213 582.477 L +267.211 587.063 L +262.486 590.944 L +258.487 586.358 L +f +262.849 586.711 m +F +U +0 g +309.25 579.875 m +310.75 580.5 313.25 583.125 314.625 581 c +F +1 g +307.964 565.926 m +307.88 566.015 306.794 566.513 307.22 566.682 c +307.647 566.851 307.68 566.599 307.935 566.639 C +307.924 566.13 307.971 566.31 307.964 565.926 c +f +510 104 m +509.564 104.895 511.5 89 495.5 74.5 C +495.5 68 l +506 79 518.582 86.358 510 104 c +f +0 g +0.2 w +403.75 534.25 m +413.25 533.75 415.75 534.25 417.75 534.75 c +S +1 G +0.3 w +538.5 629 m +542 625 547.5 620 y +S +548.75 629.25 m +552.25 625.25 557.75 620.25 y +S +0 G +0.2 w +518.5 587.5 m +522.5 586 526 587.5 527 587.5 c +S +514 617.5 m +518 614 518.5 611.5 520 607.5 c +S +528.25 613.75 m +533.25 615.25 532.5 615.5 538.25 614.25 c +S +1 g +538 637.5 m +537.25 618 533 617.5 531.25 617.5 c +529.5 617.5 528.235 615.255 528.5 622.5 c +529.25 643 528.775 643.326 534.25 642.75 c +539 642.25 539 642.25 540.5 630.75 C +538 631 l +538 629 538 631.25 v +538 633.5 538 637.5 Y +b +0.7 g +507.5 650.75 m +510 648.5 510.25 645.75 511.75 643.25 c +513.25 640.75 508.5 638.25 508.5 638 c +508.5 637.75 507.5 650.75 y +b +1 g +529.25 639.25 m +528.5 643 527 642.75 524 642.75 c +521 642.75 519.75 644 519.5 632.25 C +519.75 638 519.75 641 v +519.75 644 518.75 644.25 515.25 644.25 c +511.75 644.25 511.75 646 509.25 641.25 c +506.75 636.5 505.75 633.25 506 633.25 c +506.25 633.25 509.75 628.25 Y +511.5 620.25 512.75 619.75 515.5 619.5 c +518.25 619.25 520.25 618.25 519.5 623.5 C +521 618.25 521 617.75 524.75 617 c +528.5 616.25 528.5 618.25 528.5 622.5 c +528.5 626.75 529.25 639.25 y +b +507.75 636.75 m +512.687 638.231 515.604 641 515.25 641 C +517.839 637.469 517.494 629.281 508.75 625.5 C +508.75 625.25 502 635 502.25 634.75 c +502.5 634.5 507.75 636.75 y +b +493.5 571.5 m +495.171 563.425 503.634 565.498 503.5 576.25 c +503.25 596.25 515.75 586.25 509 636.75 c +508.301 641.977 510 650.75 506.5 651.5 c +501.514 652.568 500.436 652.26 499.25 644.75 c +498.5 640 496.5 646.25 496 648.5 c +495.5 650.75 493.75 651 490.75 650.25 c +487.75 649.5 488.253 648.665 487.5 645.5 c +486.194 640.013 486.75 641.75 484.5 645.5 c +482.39 649.016 481.306 648.011 477.5 647.25 c +475 646.75 474.784 644.479 475.25 640.75 c +475.5 638.75 474 642.25 472.5 644.5 c +471 646.75 469.25 645.5 466.5 645.5 c +463.75 645.5 463.25 641.003 463.5 635.5 c +463.511 635.25 463 626.25 y +449.75 627.25 l +459.25 618.5 465.606 612.863 468.25 597 c +468.75 594 468 592.25 470 592.75 C +459.719 593.497 459.195 585.398 461 586 c +466.25 587.75 471.75 589.25 476.75 587 c +481.75 584.75 486.25 584.25 489.5 586.25 C +490.25 582.75 492 578.75 493.5 571.5 c +b +0 g +486.25 592.5 m +489 595.25 492.117 593.078 492.25 592.75 c +494.972 586.028 477 591.75 467.25 593 c +S +0.4 w +470 592.75 m +474.25 595.75 475 596 481.5 595.75 c +S +1 J +2.5 w +477.75 630 m +478.5 620.75 l +S +479.25 617.5 m +480 610.5 l +S +480.25 607.75 m +481 600.25 481 600.5 v +S +487.5 631.75 m +487.75 623.5 l +S +487.75 620.75 m +487.75 612.5 l +S +488 609.25 m +488.25 609.25 487.75 602.5 y +S +498 630.75 m +497.25 623.75 l +S +496.75 620.75 m +495.5 612.5 l +S +495.25 609.5 m +493.75 602 l +S +0 J +0.2 w +465.5 637.25 m +464.5 629.75 461.25 628.75 464.75 617 c +S +0.5 w +502 589.25 m +503.25 585 503.5 583.25 503.5 577 c +S +1 g +1 w +521.949 86.694 m +521.637 87.353 523.021 75.657 511.583 64.988 C +511.583 60.205 l +519.089 68.299 528.083 73.713 521.949 86.694 c +f +553.457 99.673 m +553.091 100.449 554.713 86.67 541.309 74.1 C +541.309 68.465 l +550.105 78.001 560.646 84.379 553.457 99.673 c +f +482.74 95.04 m +482.429 95.699 483.812 84.003 472.375 73.334 C +472.375 68.551 l +479.881 76.645 488.875 82.059 482.74 95.04 c +f +450.924 87.63 m +450.69 88.028 451.731 80.968 443.129 74.528 C +443.129 71.641 l +448.774 76.527 455.538 79.795 450.924 87.63 c +f +0 g +308 61.5 m +N +3 w +16.002 40.373 m +568.002 40.127 L +567.748 716.565 L +S +u +15.815 40.248 m +567.815 40.002 L +567.748 716.565 L +15.998 716.81 L +15.815 40.248 L +s +U +%%Trailer +_E end +showpage diff --git a/vendor/github.com/llgcode/ps/samples/grade.ps b/vendor/github.com/llgcode/ps/samples/grade.ps new file mode 100644 index 0000000..83b1d5a --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/grade.ps @@ -0,0 +1,917 @@ +%!PS-Adobe-3.0 Resource-Form +%%Title: GRADE +%%DocumentFonts: (atend) +%%Creator: Proform III by Lytrod Software, Inc. +%%CreationDate: Mon Jun 29 14:17:21 1998 +%%For: Version 4.00A Serial #012345 +%%Pages: (atend) +%%BoundingBox (atend) +%%KDKAccentColor: +%%EndComments +%-----convenience definitions +/pxlk 1. def +/rd{.25 sub round .25 add}bind def +/tf{transform rd exch rd exch itransform}bind def +/m{pxlk .9 lt{moveto}{tf moveto}ifelse}bind def +/l{pxlk .9 lt{lineto}{tf lineto}ifelse}bind def +/gs{gsave}bind def +/gr{grestore}bind def +/sg{setgray}bind def +/sl{setlinewidth}bind def +/sj{setlinejoin}bind def +/sd{setdash}bind def +/np{newpath}bind def +/sk{stroke}bind def +/ep{closepath}bind def +/tr{pxlk .9 lt{translate}{tf translate}ifelse}bind def +/sc{scale}bind def +/sw{stringwidth}bind def +/rot{rotate}bind def +/tl{gs m show gr}bind def +/lrot{gs m exch rot show gr}bind def +/ssf{findfont exch makefont setfont}bind def +%-----end of standard definitions +%%EndProlog +% initialization +[12 0 0 12 0 0] /Courier ssf +%%Page: 1 1 +612 0 tr +90 rot +0 612 tr +1 -1 sc +[12 0 0 -12 0 0] /Courier ssf +np +19.92 sl +0 setlinecap +0.078 0 0.125 0 setcmykcolor +58.56 118.08 m +281.28 118.08 l +sk +13.2 sl +294.72 121.44 m +317.28 121.44 l +sk +357.84 121.44 m +382.56 121.44 l +sk +389.28 121.44 m +411.84 121.44 l +sk +452.16 121.44 m +476.88 121.44 l +sk +483.84 121.44 m +506.4 121.44 l +sk +546.72 121.44 m +571.44 121.44 l +sk +598.56 121.44 m +623.28 121.44 l +sk +708.72 121.44 m +733.44 121.44 l +sk +8.88 sl +58.56 141.84 m +281.28 141.84 l +sk +389.28 141.84 m +477.12 141.84 l +sk +483.84 141.84 m +571.68 141.84 l +sk +578.16 141.84 m +733.44 141.84 l +sk +294.72 142.08 m +382.32 142.08 l +sk +294.72 159.36 m +382.32 159.36 l +sk +58.56 159.84 m +281.28 159.84 l +sk +389.28 159.84 m +477.12 159.84 l +sk +483.84 159.84 m +571.68 159.84 l +sk +578.16 159.84 m +733.44 159.84 l +sk +58.56 177.84 m +281.28 177.84 l +sk +294.72 177.84 m +382.32 177.84 l +sk +389.28 177.84 m +477.12 177.84 l +sk +483.84 177.84 m +571.68 177.84 l +sk +578.16 177.84 m +733.44 177.84 l +sk +58.56 195.84 m +281.28 195.84 l +sk +294.72 195.84 m +382.32 195.84 l +sk +389.28 195.84 m +477.12 195.84 l +sk +483.84 195.84 m +571.68 195.84 l +sk +578.16 195.84 m +733.44 195.84 l +sk +58.56 213.84 m +281.28 213.84 l +sk +294.72 213.84 m +382.32 213.84 l +sk +389.28 213.84 m +477.12 213.84 l +sk +483.84 213.84 m +571.68 213.84 l +sk +578.16 213.84 m +733.44 213.84 l +sk +58.56 231.84 m +281.28 231.84 l +sk +294.72 231.84 m +382.32 231.84 l +sk +389.28 231.84 m +477.12 231.84 l +sk +483.84 231.84 m +571.68 231.84 l +sk +578.16 231.84 m +733.44 231.84 l +sk +58.56 249.84 m +281.28 249.84 l +sk +294.72 249.84 m +382.32 249.84 l +sk +389.28 249.84 m +477.12 249.84 l +sk +483.84 249.84 m +571.68 249.84 l +sk +578.16 249.84 m +733.44 249.84 l +sk +58.56 267.84 m +281.28 267.84 l +sk +294.72 267.84 m +382.32 267.84 l +sk +389.28 267.84 m +477.12 267.84 l +sk +483.84 267.84 m +571.68 267.84 l +sk +578.16 267.84 m +733.44 267.84 l +sk +58.56 285.84 m +281.28 285.84 l +sk +294.72 285.84 m +382.32 285.84 l +sk +389.28 285.84 m +477.12 285.84 l +sk +483.84 285.84 m +571.68 285.84 l +sk +578.16 285.84 m +733.44 285.84 l +sk +19.92 sl +58.56 421.92 m +281.28 421.92 l +sk +13.2 sl +294.72 425.28 m +317.28 425.28 l +sk +357.84 425.28 m +382.56 425.28 l +sk +389.28 425.28 m +411.84 425.28 l +sk +452.16 425.28 m +476.88 425.28 l +sk +483.84 425.28 m +506.4 425.28 l +sk +546.72 425.28 m +571.44 425.28 l +sk +598.56 425.28 m +623.28 425.28 l +sk +708.72 425.28 m +733.44 425.28 l +sk +8.88 sl +58.56 445.68 m +281.28 445.68 l +sk +389.28 445.68 m +477.12 445.68 l +sk +483.84 445.68 m +571.68 445.68 l +sk +578.16 445.68 m +733.44 445.68 l +sk +294.72 445.92 m +382.32 445.92 l +sk +294.72 463.2 m +382.32 463.2 l +sk +58.56 463.68 m +281.28 463.68 l +sk +389.28 463.68 m +477.12 463.68 l +sk +483.84 463.68 m +571.68 463.68 l +sk +578.16 463.68 m +733.44 463.68 l +sk +58.56 481.68 m +281.28 481.68 l +sk +294.72 481.68 m +382.32 481.68 l +sk +389.28 481.68 m +477.12 481.68 l +sk +483.84 481.68 m +571.68 481.68 l +sk +578.16 481.68 m +733.44 481.68 l +sk +58.56 499.68 m +281.28 499.68 l +sk +294.72 499.68 m +382.32 499.68 l +sk +389.28 499.68 m +477.12 499.68 l +sk +483.84 499.68 m +571.68 499.68 l +sk +578.16 499.68 m +733.44 499.68 l +sk +58.56 517.68 m +281.28 517.68 l +sk +294.72 517.68 m +382.32 517.68 l +sk +389.28 517.68 m +477.12 517.68 l +sk +483.84 517.68 m +571.68 517.68 l +sk +578.16 517.68 m +733.44 517.68 l +sk +58.56 535.68 m +281.28 535.68 l +sk +294.72 535.68 m +382.32 535.68 l +sk +389.28 535.68 m +477.12 535.68 l +sk +483.84 535.68 m +571.68 535.68 l +sk +578.16 535.68 m +733.44 535.68 l +sk +58.56 553.68 m +281.28 553.68 l +sk +294.72 553.68 m +382.32 553.68 l +sk +389.28 553.68 m +477.12 553.68 l +sk +483.84 553.68 m +571.68 553.68 l +sk +578.16 553.68 m +733.44 553.68 l +sk +58.56 571.68 m +281.28 571.68 l +sk +294.72 571.68 m +382.32 571.68 l +sk +389.28 571.68 m +477.12 571.68 l +sk +483.84 571.68 m +571.68 571.68 l +sk +578.16 571.68 m +733.44 571.68 l +sk +58.56 589.68 m +281.28 589.68 l +sk +294.72 589.68 m +382.32 589.68 l +sk +389.28 589.68 m +477.12 589.68 l +sk +483.84 589.68 m +571.68 589.68 l +sk +578.16 589.68 m +733.44 589.68 l +sk +1 1 0 0 setcmykcolor +278.16 29.28 m +594.72 35.28 6 270 0 arc +600.72 38.16 l +272.16 38.16 l +278.16 35.28 6 180 270 arc +ep +0.078 0 0.125 0 setcmykcolor +fill +1 1 0 0 setcmykcolor +611.04 29.28 m +747.6 35.28 6 270 0 arc +753.6 38.16 l +605.04 38.16 l +611.04 35.28 6 180 270 arc +ep +0.078 0 0.125 0 setcmykcolor +fill +1 1 0 0 setcmykcolor +278.16 333.12 m +594.72 339.12 6 270 0 arc +600.72 342 l +272.16 342 l +278.16 339.12 6 180 270 arc +ep +0.078 0 0.125 0 setcmykcolor +fill +1 1 0 0 setcmykcolor +611.04 333.12 m +747.6 339.12 6 270 0 arc +753.6 342 l +605.04 342 l +611.04 339.12 6 180 270 arc +ep +0.078 0 0.125 0 setcmykcolor +fill +0.72 sl +2 setlinecap +1 1 0 0 setcmykcolor +499.44 29.04 m +499.44 55.92 l +519.6 29.04 m +519.6 55.92 l +272.16 38.16 m +600.48 38.16 l +605.04 38.16 m +753.6 38.16 l +58.32 83.04 m +58.32 289.92 l +733.44 83.04 m +733.44 289.92 l +294.72 98.88 m +382.32 98.88 l +317.04 98.88 m +317.04 289.92 l +357.6 98.88 m +357.6 289.92 l +389.04 98.88 m +476.64 98.88 l +411.6 98.88 m +411.6 289.92 l +452.16 98.88 m +452.16 289.92 l +483.6 98.88 m +571.2 98.88 l +506.16 98.88 m +506.16 289.92 l +546.72 98.88 m +546.72 289.92 l +578.16 98.88 m +733.2 98.88 l +598.32 98.88 m +598.32 289.92 l +623.04 98.88 m +623.04 289.92 l +663.6 98.88 m +663.6 289.92 l +708.72 98.88 m +708.72 289.92 l +294.72 114.72 m +294.72 128.16 l +294.72 114.72 m +317.04 114.72 l +357.6 114.72 m +382.32 114.72 l +389.04 114.72 m +411.36 114.72 l +452.16 114.72 m +476.88 114.72 l +483.6 114.72 m +505.92 114.72 l +546.72 114.72 m +571.44 114.72 l +598.32 114.72 m +623.04 114.72 l +708.72 114.72 m +733.44 114.72 l +40.32 128.16 m +281.04 128.16 l +294.72 128.16 m +382.32 128.16 l +389.04 128.16 m +476.64 128.16 l +483.6 128.16 m +571.2 128.16 l +578.16 128.16 m +751.2 128.16 l +40.32 146.16 m +281.04 146.16 l +294.72 146.16 m +382.32 146.16 l +389.04 146.16 m +476.64 146.16 l +483.6 146.16 m +571.2 146.16 l +578.16 146.16 m +751.2 146.16 l +40.32 164.16 m +281.04 164.16 l +294.72 164.16 m +382.32 164.16 l +389.04 164.16 m +476.64 164.16 l +483.6 164.16 m +571.2 164.16 l +578.16 164.16 m +751.2 164.16 l +40.32 182.16 m +281.04 182.16 l +294.72 182.16 m +382.32 182.16 l +389.04 182.16 m +476.64 182.16 l +483.6 182.16 m +571.2 182.16 l +578.16 182.16 m +751.2 182.16 l +40.32 200.16 m +281.04 200.16 l +294.72 200.16 m +382.32 200.16 l +389.04 200.16 m +476.64 200.16 l +483.6 200.16 m +571.2 200.16 l +578.16 200.16 m +751.2 200.16 l +40.32 218.16 m +281.04 218.16 l +294.72 218.16 m +382.32 218.16 l +389.04 218.16 m +476.64 218.16 l +483.6 218.16 m +571.2 218.16 l +578.16 218.16 m +751.2 218.16 l +40.32 236.16 m +281.04 236.16 l +294.72 236.16 m +382.32 236.16 l +389.04 236.16 m +476.64 236.16 l +483.6 236.16 m +571.2 236.16 l +578.16 236.16 m +751.2 236.16 l +40.32 254.16 m +281.04 254.16 l +294.72 254.16 m +382.32 254.16 l +389.04 254.16 m +476.64 254.16 l +483.6 254.16 m +571.2 254.16 l +578.16 254.16 m +751.2 254.16 l +40.32 272.16 m +281.04 272.16 l +294.72 272.16 m +382.32 272.16 l +389.04 272.16 m +476.64 272.16 l +483.6 272.16 m +571.2 272.16 l +578.16 272.16 m +751.2 272.16 l +40.32 290.16 m +281.04 290.16 l +294.72 290.16 m +382.32 290.16 l +389.04 290.16 m +476.64 290.16 l +483.6 290.16 m +571.2 290.16 l +578.16 290.16 m +751.2 290.16 l +499.44 332.88 m +499.44 359.76 l +519.6 332.88 m +519.6 359.76 l +272.16 342 m +600.48 342 l +605.04 342 m +753.6 342 l +58.32 386.88 m +58.32 593.76 l +733.44 386.88 m +733.44 593.76 l +294.72 402.72 m +382.32 402.72 l +317.04 402.72 m +317.04 593.76 l +357.6 402.72 m +357.6 593.76 l +389.04 402.72 m +476.64 402.72 l +411.6 402.72 m +411.6 593.76 l +452.16 402.72 m +452.16 593.76 l +483.6 402.72 m +571.2 402.72 l +506.16 402.72 m +506.16 593.76 l +546.72 402.72 m +546.72 593.76 l +578.16 402.72 m +733.2 402.72 l +598.32 402.72 m +598.32 593.76 l +623.04 402.72 m +623.04 593.76 l +663.6 402.72 m +663.6 593.76 l +708.72 402.72 m +708.72 593.76 l +294.72 418.32 m +317.04 418.32 l +294.72 418.32 m +294.72 431.76 l +sk +357.6 418.32 m +382.32 418.32 l +389.04 418.32 m +411.36 418.32 l +452.16 418.32 m +476.88 418.32 l +483.6 418.32 m +505.92 418.32 l +546.72 418.32 m +571.44 418.32 l +598.32 418.32 m +623.04 418.32 l +708.72 418.32 m +733.44 418.32 l +40.32 432 m +281.04 432 l +294.72 432 m +382.32 432 l +389.04 432 m +476.64 432 l +483.6 432 m +571.2 432 l +578.16 432 m +751.2 432 l +40.32 450 m +281.04 450 l +294.72 450 m +382.32 450 l +389.04 450 m +476.64 450 l +483.6 450 m +571.2 450 l +578.16 450 m +751.2 450 l +40.32 468 m +281.04 468 l +294.72 468 m +382.32 468 l +389.04 468 m +476.64 468 l +483.6 468 m +571.2 468 l +578.16 468 m +751.2 468 l +40.32 486 m +281.04 486 l +294.72 486 m +382.32 486 l +389.04 486 m +476.64 486 l +483.6 486 m +571.2 486 l +578.16 486 m +751.2 486 l +40.32 504 m +281.04 504 l +294.72 504 m +382.32 504 l +389.04 504 m +476.64 504 l +483.6 504 m +571.2 504 l +578.16 504 m +751.2 504 l +40.32 522 m +281.04 522 l +294.72 522 m +382.32 522 l +389.04 522 m +476.64 522 l +483.6 522 m +571.2 522 l +578.16 522 m +751.2 522 l +40.32 540 m +281.04 540 l +294.72 540 m +382.32 540 l +389.04 540 m +476.64 540 l +483.6 540 m +571.2 540 l +578.16 540 m +751.2 540 l +40.32 558 m +281.04 558 l +294.72 558 m +382.32 558 l +389.04 558 m +476.64 558 l +483.6 558 m +571.2 558 l +578.16 558 m +751.2 558 l +40.32 576 m +281.04 576 l +294.72 576 m +382.32 576 l +389.04 576 m +476.64 576 l +483.6 576 m +571.2 576 l +578.16 576 m +751.2 576 l +40.32 594 m +281.04 594 l +294.72 594 m +382.32 594 l +389.04 594 m +476.64 594 l +483.6 594 m +571.2 594 l +578.16 594 m +751.2 594 l +sk +0 setlinecap +47.04 29.28 m +260.16 35.28 6 270 0 arc +260.16 68.4 6 0 90 arc +47.04 68.4 6 90 180 arc +47.04 35.28 6 180 270 arc +sk +278.16 29.28 m +594.72 35.28 6 270 0 arc +600.72 56.4 l +272.16 56.4 l +278.16 35.28 6 180 270 arc +sk +611.28 29.28 m +747.84 35.28 6 270 0 arc +753.84 56.4 l +605.28 56.4 l +611.28 35.28 6 180 270 arc +sk +46.56 83.28 m +275.28 89.28 6 270 0 arc +281.28 290.4 l +40.56 290.4 l +46.56 89.28 6 180 270 arc +sk +300.72 83.28 m +376.56 89.28 6 270 0 arc +382.56 290.4 l +294.72 290.4 l +300.72 89.28 6 180 270 arc +sk +395.28 83.28 m +471.12 89.28 6 270 0 arc +477.12 290.4 l +389.28 290.4 l +395.28 89.28 6 180 270 arc +sk +489.84 83.28 m +565.68 89.28 6 270 0 arc +571.68 290.4 l +483.84 290.4 l +489.84 89.28 6 180 270 arc +sk +584.16 83.28 m +745.44 89.28 6 270 0 arc +751.44 290.4 l +578.16 290.4 l +584.16 89.28 6 180 270 arc +sk +47.04 333.12 m +260.16 339.12 6 270 0 arc +260.16 372.24 6 0 90 arc +47.04 372.24 6 90 180 arc +47.04 339.12 6 180 270 arc +sk +278.16 333.12 m +594.72 339.12 6 270 0 arc +600.72 360.24 l +272.16 360.24 l +278.16 339.12 6 180 270 arc +sk +611.28 333.12 m +747.84 339.12 6 270 0 arc +753.84 360.24 l +605.28 360.24 l +611.28 339.12 6 180 270 arc +sk +46.56 387.12 m +275.28 393.12 6 270 0 arc +281.28 594.24 l +40.56 594.24 l +46.56 393.12 6 180 270 arc +sk +300.72 387.12 m +376.56 393.12 6 270 0 arc +382.56 594.24 l +294.72 594.24 l +300.72 393.12 6 180 270 arc +sk +395.28 387.12 m +471.12 393.12 6 270 0 arc +477.12 594.24 l +389.28 594.24 l +395.28 393.12 6 180 270 arc +sk +489.84 387.12 m +565.68 393.12 6 270 0 arc +571.68 594.24 l +483.84 594.24 l +489.84 393.12 6 180 270 arc +sk +584.16 387.12 m +745.44 393.12 6 270 0 arc +751.44 594.24 l +578.16 594.24 l +584.16 393.12 6 180 270 arc +sk +[8 0 0 -8 0 0] /Helvetica-Narrow ssf +(STUDENT NAME) 274.8 36.72 tl +(NUMBER) 522.48 36.72 tl +(COUNSELOR) 607.68 36.96 tl +(COURSE TITLE) 61.68 96.24 tl +(TEACHER) 179.76 123.12 tl +(STUDENT NAME) 274.8 340.56 tl +(NUMBER) 522.48 340.56 tl +(COUNSELOR) 607.92 340.56 tl +(COURSE TITLE) 61.68 399.84 tl +(TEACHER) 179.76 426.72 tl +(Designed using Lytrod Software products. 800 /4 LYTROD.) 562.56 599.04 tl +[4 0 0 -4 0 0] /Helvetica-Narrow-Bold ssf +(GRADE) 503.76 33.6 tl +(LEVEL) 504.96 37.2 tl +(GRADE) 503.76 337.44 tl +(LEVEL) 504.96 341.04 tl +[18 0 0 -18 0 0] /Helvetica-Bold ssf +(STUDENT GRADE REPORT) 515.04 75.84 tl +(STUDENT GRADE REPORT) 515.04 379.44 tl +[7 0 0 -7 0 0] /Helvetica-Narrow ssf +(GRADE) 296.16 109.44 tl +(ABS.) 363.84 109.44 tl +(GRADE) 390.48 109.44 tl +(ABS.) 458.16 109.44 tl +(GRADE) 485.04 109.44 tl +(ABS.) 552.72 109.44 tl +(GRADE) 600.96 109.44 tl +(ABS.) 714.72 109.44 tl +(COMMENTS) 669.36 111.6 tl +(FINAL) 580.56 112.08 tl +(CREDITS) 631.2 112.08 tl +(COMMENTS) 320.64 115.68 tl +(COMMENTS) 415.2 115.68 tl +(COMMENTS) 509.76 115.68 tl +(EXAM) 580.56 120.24 tl +(EARNED) 631.92 120.24 tl +(\(SEE BACK\)) 321.12 123.84 tl +(\(SEE BACK\)) 415.68 123.84 tl +(\(SEE BACK\)) 510.24 123.84 tl +(CIT.) 300.72 124.08 tl +(TARDY) 360.72 124.08 tl +(CIT.) 394.8 124.08 tl +(TARDY) 455.04 124.08 tl +(CIT.) 489.36 124.08 tl +(TARDY) 549.6 124.08 tl +(CIT.) 605.52 124.08 tl +(TARDY) 711.6 124.08 tl +(GRADE) 296.16 413.28 tl +(ABS.) 363.84 413.28 tl +(GRADE) 390.48 413.28 tl +(ABS.) 458.16 413.28 tl +(GRADE) 485.04 413.28 tl +(ABS.) 552.72 413.28 tl +(GRADE) 600.96 413.28 tl +(ABS.) 714.72 413.28 tl +(COMMENTS) 669.36 415.2 tl +(FINAL) 580.56 415.92 tl +(CREDITS) 631.2 415.92 tl +(COMMENTS) 320.64 419.52 tl +(COMMENTS) 415.2 419.52 tl +(COMMENTS) 509.76 419.52 tl +(EXAM) 580.56 424.08 tl +(EARNED) 631.92 424.08 tl +(\(SEE BACK\)) 321.12 427.68 tl +(\(SEE BACK\)) 415.68 427.68 tl +(\(SEE BACK\)) 510.24 427.68 tl +(CIT.) 300.72 427.92 tl +(TARDY) 360.72 427.92 tl +(CIT.) 395.28 427.92 tl +(TARDY) 455.04 427.92 tl +(CIT.) 489.84 427.92 tl +(TARDY) 549.6 427.92 tl +(CIT.) 605.52 427.92 tl +(TARDY) 711.6 427.92 tl +[8 0 0 -8 0 0] /Helvetica-Narrow ssf +270 (PERIOD) 52.56 118.56 lrot +270 (PERIOD) 745.44 118.56 lrot +270 (PERIOD) 52.56 422.4 lrot +270 (PERIOD) 745.44 422.4 lrot +/#copies 1 def +%%PageFonts: Courier Helvetica-Narrow Helvetica-Narrow-Bold Helvetica-Bold +showpage +%%Trailer +%%Pages: 1 +%%DocumentFonts: Courier Helvetica-Narrow Helvetica-Narrow-Bold Helvetica-Bold +%%BoundingBox: 0 0 792 612 + \ No newline at end of file diff --git a/vendor/github.com/llgcode/ps/samples/grayalph.ps b/vendor/github.com/llgcode/ps/samples/grayalph.ps new file mode 100644 index 0000000..2a83474 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/grayalph.ps @@ -0,0 +1,65 @@ +%! +% grayscaled text test, including a trivial user bitmap font + +/grayalphsave save def % prevent left over effects + +/inch {72 mul} def + +/BuildCharDict 10 dict def +/$ExampleFont 7 dict def +$ExampleFont begin + /FontType 3 def % user defined font. + /FontMatrix [1 0 0 1 0 0] def + /FontBBox [0 0 1 1] def + /Encoding 256 array def + 0 1 255 {Encoding exch /.notdef put} for + Encoding (a) 0 get /plus put + /CharStrings 2 dict def + CharStrings /.notdef {} put + CharStrings /plus + { gsave + 0 0 moveto + 32 32 true [32 0 0 -32 0 32] + {<0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 + 0007E000 0007E000 0007E000 0007E000 0007E000 FFFFFFFF FFFFFFFF FFFFFFFF + FFFFFFFF FFFFFFFF FFFFFFFF 0007E000 0007E000 0007E000 0007E000 0007E000 + 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000> + } imagemask + grestore + } put + /BuildChar + { BuildCharDict begin + /char exch def + /fontdict exch def + /charproc + fontdict /Encoding get char get + fontdict /CharStrings get + exch get def + 1 0 0 0 1 1 setcachedevice + charproc + end + } def +end + +/MyFont $ExampleFont definefont pop + + newpath + .5 inch 7.5 inch moveto + 7.5 inch 0 rlineto + 0 1.5 inch rlineto + -7.5 inch 0 rlineto + closepath + 0 setgray + fill + + /MyFont findfont 72 scalefont setfont + .75 inch 7.75 inch moveto + 0 1 6 + { /n exch def + 1 n 6 div sub setgray + (a) show + } for + +showpage +clear cleardictstack +grayalphsave restore diff --git a/vendor/github.com/llgcode/ps/samples/manylines.ps b/vendor/github.com/llgcode/ps/samples/manylines.ps new file mode 100644 index 0000000..5395a1c --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/manylines.ps @@ -0,0 +1,939 @@ +%!PS-Adobe-2.0 +%%Title: Just A Little PostScript +%%Creator: Randolph J. Herber +%%CreationDate: Mon Aug 19 18:39:39 CDT 1996 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: (atend) +%%BoundingBox: 0 0 792 612 +%%Orientation: Portrait +%%PageOrder: Ascend +%%EndComments +%%BeginProlog +/DoColor true def +/Handout true def +%! +% behandler.ps, v1.3, Mar 23 1990, a modified version of Adobe's ehandler.ps +% Original program copyright (c) 1986 Adobe Systems Incorporated +% Modified by Fredric Ihren, for support contact fred@nada.kth.se or write to +% Fredric Ihren; Moerbydalen 17; S-182 32 D-RYD; Sweden +% Adobe will not keep maintenance of this program. +% Distributed with permission from Adobe Systems Incorporated + +% 0000 % serverloop password +% /$brkpage where not { +% dup serverdict begin statusdict begin checkpassword +% { (NEW Error Handler downloaded.\n) print flush exitserver } +% { pop (Bad Password on loading error handler.\n) print flush stop } +% ifelse +% } { +% pop pop (NEW Error Handler in place - not loaded again\n) print flush stop +% } ifelse +/$brkpage 64 dict def +$brkpage begin + /== { /cp 0 def typeprint nl } def + /printpage { + /prnt { + dup type /stringtype ne { =string cvs } if dup length 6 mul /tx exch def + /ty 10 def currentpoint /toy exch def /tox exch def 1 setgray newpath + tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto + closepath fill tox toy moveto 0 setgray show + } bind def + /nl { currentpoint exch pop lmargin exch moveto 0 -10 rmoveto } def + /doshowpage systemdict /showpage get def + } def + /printonly { + /nl { (\n) print } def + /prnt { dup type /stringtype ne { =string cvs } if print } def + /doshowpage null cvx def + } def + printpage + /typeprint { dup type dup currentdict exch known + { exec } { unknowntype } ifelse + } def + /lmargin 72 def /rmargin 72 def + /tprint { dup length cp add rmargin gt { nl /cp 0 def } if + dup length cp add /cp exch def prnt + } def + /cvsprint { =string cvs tprint( ) tprint } def + /unknowntype { exch pop cvlit (??) tprint cvsprint } def + /integertype { cvsprint } def + /realtype { cvsprint } def + /booleantype { cvsprint } def + /operatortype { (//) tprint cvsprint } def + /marktype { pop (-mark- ) tprint } def + /dicttype { pop (-dictionary- ) tprint } def + /nulltype { pop (-null- ) tprint } def + /filetype { pop (-filestream- ) tprint } def + /savetype { pop (-savelevel- ) tprint } def + /fonttype { pop (-fontid- ) tprint } def + /nametype { dup xcheck not { (/) tprint } if cvsprint } def + /stringtype { + dup rcheck + { (\() tprint tprint (\)) tprint } + { pop (-string- ) tprint } + ifelse + } def + /arraytype { + dup rcheck { dup xcheck + { ({) tprint { typeprint } forall (}) tprint } + { ([) tprint { typeprint } forall (]) tprint } + ifelse } { pop (-array- ) tprint } ifelse + } def + /packedarraytype { + dup rcheck { dup xcheck + { ({) tprint { typeprint } forall (}) tprint } + { ([) tprint { typeprint } forall (]) tprint } + ifelse } { pop (-packedarray- ) tprint } ifelse + } def + /stackmax 50 def + /execmax 25 def + /filemax 10 def + /courier /Courier findfont 10 scalefont def + /OLDhandleerror errordict /handleerror get def +end %$brkpage +errordict /handleerror { + systemdict begin $error begin $brkpage begin newerror { + { + /newerror false store + vmstatus pop pop 0 ne { grestoreall } if initgraphics courier setfont + lmargin 750 moveto + statusdict /jobname get dup null ne + { (Jobname: ) prnt prnt nl } { pop } ifelse + (Error: ) prnt errorname prnt nl + (Command: ) prnt /command load == + $error /ostack known { + $error /ostack get dup length 0 ne { + (Stack \() prnt + aload length dup prnt (\):) prnt nl + /i 0 def + { /i i 1 add def i stackmax le { == } { pop } ifelse } + repeat + } { pop } ifelse + } if + $error /estack known { + $error /estack get dup dup length 1 sub get type /filetype ne { + (Execstack \() prnt + aload length dup prnt (\):) prnt nl + /i 0 def + { /i i 1 add def dup type /filetype eq { /i 99 def } if + i execmax le { == } { pop } ifelse + } repeat + } { pop } ifelse + } if + (%stdin) (r) file + dup =string readline { + (File:) prnt nl prnt nl + filemax 1 sub { dup =string readline { prnt nl } { exit } ifelse } + repeat + } if pop + userdict /debug known { + (Debug:) prnt nl + userdict /debug get stopped pop nl + } if + } stopped pop + doshowpage + /newerror true store + /OLDhandleerror load end end end exec + } { end end end } + ifelse +} dup 0 systemdict put dup 4 $brkpage put bind put + +/PageFrame 600 dict dup begin +%%Copyright: Copyright 1991 University Research Associates. +%%+ *************************************************************************** +%%+ ** Copyright (c) 1991 Randolph J. Herber ** +%%+ ** All Rights Reserved. ** +%%+ ** Applies only to the included type 3 font ** +%%+ ** describing the Fermilab logo. ** +%%+ ** The type 3 font was developed using personal ** +%%+ ** equipment and own time and materials. ** +%%+ ** The following license granted to the ** +%%+ ** Government. ** +%%+ ** Copyright (c) 1991 Universities Research Association, Inc. ** +%%+ ** All Rights Reserved. ** +%%+ ** ** +%%+ ** This material resulted from work developed under a Government ** +%%+ ** Contract and is subject to the following license: ** +%%+ ** ** +%%+ ** LICENSE ** +%%+ ** The Government retains a paid-up, nonexclusive, irrevocable worldwide ** +%%+ ** license to reproduce, prepare derivative works, perform publicly and ** +%%+ ** display publicly by or for the Government, including the right to ** +%%+ ** distribute to other Government contractors. Neither the ** +%%+ ** United States nor the United States Department of Energy nor any of ** +%%+ ** their employees, nor the author of the type 3 font included makes ** +%%+ ** any warranty, express or implied, or assumes any legal liability or ** +%%+ ** responsibility for the accuracy, completeness, or usefulness of any ** +%%+ ** information, apparatus, product, or process disclosed, or represents ** +%%+ ** that its use would not infringe privately owned rights. ** +%%+ ** ** +%%+ ** ** +%%+ ** Fermilab Computing Division/Distributed Computing Department ** +%%+ ** ** +%%+ *************************************************************************** +%% +%% Begining of Logo font definition +%% +9 dict dup begin +/FontType 3 def +/FontName (Logo) cvn def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox [0 0 0 0] def % Some interperters need this +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } bind for +Encoding +dup 70 /Fermi put +pop +/CharProcs 7 dict dup begin +/Fermi { +0 setlinecap +0 setlinejoin +1 setlinewidth +1000 0 0 0 1000 1000 setcachedevice + 475 887.5 moveto + 0 80.88 rlineto +-150 0 rlineto + 0 -93.38 rlineto +-155.72 0 rlineto + 0 -150 rlineto + 154.46 0 rlineto + 262.5 737.5 62.5 348.46 270 arcn +-230.88 0 rlineto + 0 -150 rlineto + 230.88 0 rlineto + 262.5 737.5 212.5 270 360 arc + 50 0 rlineto + 737.5 737.5 212.5 180 270 arc + 230.88 0 rlineto + 0 150 rlineto +-230.88 0 rlineto + 737.5 737.5 62.5 270 191.54 arcn + 154.46 0 rlineto + 0 150 rlineto +-155.72 0 rlineto + 0 93.38 rlineto +-150 0 rlineto + 0 -80.88 rlineto fill + 525 112.5 moveto + 0 -80.88 rlineto + 150 0 rlineto + 0 93.38 rlineto + 155.72 0 rlineto + 0 150 rlineto +-154.46 0 rlineto + 737.5 262.5 62.5 168.46 90 arcn + 230.88 0 rlineto + 0 150 rlineto +-230.88 0 rlineto + 737.5 262.5 212.5 90 180 arc + -50 0 rlineto + 262.5 262.5 212.5 0 90 arc +-230.88 0 rlineto + 0 -150 rlineto + 230.88 0 rlineto + 262.5 262.5 62.5 90 11.54 arcn +-154.46 0 rlineto + 0 -150 rlineto + 155.72 0 rlineto + 0 -93.38 rlineto + 150 0 rlineto + 0 80.88 rlineto fill +} bind def +end def +/BuildChar { +0 +begin +exch begin +Encoding exch get +CharProcs exch get +end +exec +end +} bind def +/BuildChar load 0 +6 dict dup begin +end put +end +/Logo exch definefont pop + +% +% Copyright 1990 by Adobe Systems Incorporated. All rights reserved. +% +% This file may be freely copied and redistributed as long as: +% 1) This entire notice continues to be included in the file, +% 2) If the file has been modified in any way, a notice of such +% modification is conspicuously indicated. +% +% PostScript, Display PostScript, and Adobe are registered trademarks of +% Adobe Systems Incorporated. +% +% ************************************************************************ +% THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT +% NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS +% INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR +% LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY +% KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, +% AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +% ************************************************************************ +% + +% This file defines a PostScript procedure called "R" which will +% reencode a font. It expects to find three things on the operand stack: +% +% [ array ] /NewName /OldName +% +% The array should contain pairs of , like "32 /space", +% each of which will define a slot in the encoding and the name to put +% in that slot. Only those names which are needed to over-ride the +% existing ones need be specified. An encoding value (number) may +% be specified followed by more than one name, like "128 /name1 /name2". +% In this case, the names will be sequentially stored in the encoding +% starting at the initial number given (128). + +/R { + findfont begin currentdict dup length dict begin + { %forall + 1 index /FID ne {def} {pop pop} ifelse + } forall + /FontName exch def dup length 0 ne { %if + /Encoding Encoding 256 array copy def + 0 exch { %forall + dup type /nametype eq { %ifelse + Encoding 2 index 2 index put + pop 1 add + }{ %else + exch pop + } ifelse + } forall + } if pop + currentdict dup end end + /FontName get exch definefont pop +} bind def + +% sample use: +% [ 8#360 /apple ] /_Symbol /Symbol R + +% declare page sizes +/D {def} bind def +/B {bind D} bind D +/E {exch D} B +/M {moveto} B +/S {marking {show} + {stringwidth rmoveto + currentpoint pop dup MaxX gt{/MaxX E}{pop}ifelse} + ifelse} B +/H {marking {currentlinewidth exch true charpath 0.5 setlinewidth + gsave 1 setgray fill grestore stroke setlinewidth} + {stringwidth rmoveto + currentpoint pop dup MaxX gt{/MaxX E}{pop}ifelse} + ifelse} B +/Stroke {currentpoint pop dup MaxX gt{/MaxX E}{pop}ifelse marking {stroke}if} B +/W {stringwidth pop} B +/Short 612 D +/Long 792 D +% at this point in the program, the default coordinate system is still in place +/Shrink where {pop +Short 1.0 Shrink sub 0.5 mul mul Long 1.0 Shrink sub 0.5 mul mul translate +Shrink Shrink scale} if +/margin 36 D +/logosize 48 D % memo head size is 56.25 +/radius 18 D +/gap 12 D +/offset 8 D +/High 480 D +/Wide 720 D +/CenterX 396 D +/CenterY 336 D +/Top CenterY High 0.5 mul add D +/Tsize 36 D +/Tlead 9 D +/Tspace Tsize Tlead add D +/esize 18 D +/elead 6 D +/espace esize elead add D +/tsize 18 D +/tlead 6 D +/tspace tsize tlead add D +/Ssize 6 D +/Slead 2 D +/Sspace Ssize Slead add D +/setline {1 sub /lineno E} B +/LT {/lineno exch def lineno Lmax gt {/Lmax lineno def}if} B +/eT {/lineno exch def lineno emax gt {/emax lineno def}if} B +/lT {/lineno exch def lineno lmax gt {/lmax lineno def}if} B +/Line {LT lineno 1 sub Tspace mul Base exch sub /Y E} B +/L+ {lineno 1 add LT lineno 1 sub Tspace mul Base exch sub /Y E} B +/L+2 {lineno 2 add LT lineno 1 sub Tspace mul Base exch sub /Y E} B +/eline {eT lineno 1 sub espace mul ebase exch sub /Y E} B +/e+ {lineno 1 add eT lineno 1 sub espace mul ebase exch sub /Y E} B +/e+2 {lineno 2 add eT lineno 1 sub espace mul ebase exch sub /Y E} B +/line {lT lineno 1 sub tspace mul base exch sub /Y E} B +/l+ {lineno 1 add lT lineno 1 sub tspace mul base exch sub /Y E} B +/l+2 {lineno 2 add lT lineno 1 sub tspace mul base exch sub /Y E} B +/C1 {col1 Y moveto} B +/C2 {col2 Y moveto} B +/C3 {col3 Y moveto} B +/C4 {col4 Y moveto} B +/C5 {col5 Y moveto} B +/C6 {col6 Y moveto} B +/C7 {col7 Y moveto} B +/C8 {col8 Y moveto} B +/C9 {col9 Y moveto} B +/RC [ 8#375 /copyright /registered /trademark ] def +RC /_Times-Roman /Times-Roman R +/foliofont /_Times-Roman findfont logosize offset 3 mul sub scalefont D +/FO {foliofont setfont} B +/textsize /_Times-Roman findfont tsize scalefont D +/TX {textsize setfont} B +/TXS {currentfont exch TX S setfont} B +RC /_Times-Italic /Times-Italic R +/italics /_Times-Italic findfont tsize scalefont D +/TI {italics setfont} B +/TIS {currentfont exch TI S setfont} B +RC /_Times-BoldItalic /Times-BoldItalic R +/bold_italics /_Times-BoldItalic findfont tsize scalefont D +/TJ {bold_italics setfont} B +/TJS {currentfont exch TJ S setfont} B +RC /_Times-Bold /Times-Bold R +/boldfont /_Times-Bold findfont tsize scalefont D +/TB {boldfont setfont} B +/TBS {currentfont exch TB S setfont} B +/monospace /Courier-Bold findfont tsize scalefont D +/CM {monospace setfont} B +/CMS {currentfont exch CM S setfont} B +/monolite /Courier findfont tsize scalefont D +/CR {monolite setfont} B +/CRS {currentfont exch CR S setfont} B +/monoitalic /Courier-Oblique findfont tsize scalefont D +/CI {monoitalic setfont} B +/CIS {currentfont exch CI S setfont} B +/monoBI /Courier-BoldOblique findfont tsize scalefont D +/CJ {monoBI setfont} B +/CJS {currentfont exch CJ S setfont} B +/narrowmono /Courier-Bold findfont [.8 tsize mul 0 0 tsize 0 0] makefont D +/SC {narrowmono setfont} B +/SCS {currentfont exch SC S setfont} B +/largesize /_Times-Roman findfont Tsize scalefont D +/LG {largesize setfont} B +/LGS {currentfont exch LG S setfont} B +/smallfont /_Times-Roman findfont Ssize scalefont D +/SM {smallfont setfont} B +/SMS {currentfont exch SM S setfont} B +/symbolfont /Symbol findfont tsize scalefont D +/SY {symbolfont setfont} B +/microsymbol /Symbol findfont tsize 0.4 mul scalefont D +/MY {microsymbol setfont} B +/pointerfont /ZapfDingbats findfont tsize scalefont D +/PT {pointerfont setfont} B +/FNALfont /Logo findfont tsize scalefont D +/FN {FNALfont setfont} B +/Item {currentfont SY(\267)S setfont} B +/Note {currentfont PT(-)S setfont} B +/Here {currentfont PT(+)S setfont} B +/Gives {currentfont SY(\336)S setfont} B +/Moon {currentfont PT(m)S setfont} B +/FNAL {currentfont FN(F)S setfont} B +/Block1 {currentfont PT(y)S setfont} B +/Block2 {currentfont PT(z)S setfont} B +/Start {currentpoint gsave currentpoint translate MY (\355) stringwidth + pop -.5 mul tsize -.5 mul moveto (\255) S grestore moveto } B +/Mark {currentpoint gsave currentpoint translate MY (\355) stringwidth + pop -.5 mul tsize -.5 mul moveto (\335) S grestore moveto } B +/More {660 108 M currentfont TX ((more)) show setfont} B +/center {/Text E Long Text stringwidth pop sub 0.5 mul exch moveto + Text marking{show}{pop}ifelse} B +/Center {Long exch sub 0.5 mul exch moveto} B +/Fickle {Index lineno eq {Here} {Item} ifelse} B +/RVS {marking {dup save exch currentpoint newpath moveto + 1 0 rmoveto true charpath pathbbox + 1 add /Uy E 1 add /Ux E 1 sub /Ly E 1 sub /Lx E newpath + Lx Ux add 0.5 mul Ly moveto + Lx Ly Lx Uy 1 arcto pop pop pop pop + Lx Uy Ux Uy 1 arcto pop pop pop pop + Ux Uy Ux Ly 1 arcto pop pop pop pop + Ux Ly Lx Ly 1 arcto pop pop pop pop + closepath + 0 setgray fill restore + currentgray exch 1 setgray 1 0 rmoveto show 1 0 rmoveto setgray} + {stringwidth rmoveto 2 0 rmoveto + currentpoint pop dup MaxX gt{/MaxX E}{pop}ifelse} + ifelse} B +/Frame { +/ll E /el E /Ll E +/Lmax 0 D /emax 0 D /lmax 0 D +/Gaps 1 Ll 1 lt{0 /THght 0 D}{1 /THght Ll Tspace mul Tlead sub D}ifelse add + el 1 lt{0 /eHght 0 D}{1 /eHght el espace mul elead sub D}ifelse add + ll 1 lt{0 /tHght 0 D}{1 /tHght ll tspace mul tlead sub D}ifelse add D +/GapSize High THght sub eHght sub tHght sub Gaps div D +/Base Top Ll 1 ge{GapSize sub Tsize sub}if D +/ebase Top Ll 1 ge{GapSize sub THght sub}if + el 1 ge{GapSize sub esize sub}if D +/base Top Ll 1 ge{GapSize sub THght sub}if + el 1 ge{GapSize sub eHght sub}if + ll 1 ge{GapSize sub tsize sub}if D + +/Rnd {rand 2147483647.0 div mul add} bind def + +% size of rounded box allowing for logo at top +/boxx Long margin dup add sub D +/boxy Short margin dup add sub logosize sub gap sub D +% left edge of logo area +/logox Long margin sub logosize 1.2 mul sub +/Helvetica-Bold findfont logosize 0.5 mul scalefont setfont (Fermilab) + stringwidth pop sub D + +% left edge of titling area +/titlesize logosize 6 div D +/titlefont /Helvetica-Bold findfont titlesize 1.6 mul scalefont D +/giverfont /Times-Roman findfont titlesize 0.8 mul scalefont D +/titlex logox gap sub + titlefont setfont talktitle stringwidth pop + giverfont setfont talkgiver stringwidth pop 2 copy lt {exch} if pop + talkdept stringwidth pop 2 copy lt {exch} if pop + talkaddr stringwidth pop 2 copy lt {exch} if pop + talkcopyr stringwidth pop 2 copy lt {exch} if pop + sub D + +% determine folio box size +/folioboxx foliofont setfont folio stringwidth pop offset dup add add D +/folioboxy logosize offset sub D + +% determine folio box x origin +/folioorgx titlex margin add gap sub offset sub folioboxx sub 2 div D + +% rotate to landscape orientation +90 rotate + +% move origin to lower left hand corner of sheet +0 Short neg translate + +% draw logo in lower right hand corner +save +/DoColor where {pop DoColor {.4 .6 Rnd .2 .8 Rnd .2 .8 Rnd setrgbcolor}if}if +logox margin translate +/Logo findfont logosize scalefont setfont 0 0 moveto (F) show +/DoColor where {pop DoColor {0 setgray}if}if +/Helvetica-Bold findfont + logosize 0.5 mul scalefont setfont + logosize 1.2 mul logosize 0.375 mul moveto +(Fermilab) show +restore + +% add talk data +save +titlex margin translate +0 titlesize 4 mul moveto titlefont setfont talktitle show +0 titlesize 3 mul moveto giverfont setfont talkgiver show +0 titlesize 2 mul moveto talkdept show +0 titlesize moveto talkaddr show +0 0 moveto talkcopyr show +restore + +% add folio +save +0 setlinecap % square butt ends +1 setlinejoin % rounded corners +0.5 setlinewidth % width of line to draw +/box {1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath} B +folioorgx margin translate +gsave + offset 0 translate 0 0 moveto 0 setgray folioboxx folioboxy box fill +grestore +gsave + 0 offset translate + 0 0 moveto 0.95 setgray folioboxx folioboxy box fill + 0 0 moveto 0 setgray folioboxx folioboxy box stroke +grestore +gsave + offset dup dup add translate 0 0 moveto foliofont setfont + folio true charpath + gsave 1 setgray fill grestore stroke + +grestore +restore + +% +% draw rounded box +% +save +/DoColor where {pop DoColor {0 0 1 setrgbcolor}if}if +% start a new path +% line characters +0 setlinecap % square butt ends +1 setlinejoin % rounded corners +3 setlinewidth % width of line to draw +newpath +% make lower left corner of the rounded box the origin +margin margin logosize add gap add translate +% center of bottom edge +boxx 0.5 mul 0 moveto +% draw lower left corner to center of left edge +0 0 0 boxy mul 0.5 radius arcto pop pop pop pop +% draw upper left corner to center of top edge +0 boxy boxx 0.5 mul boxy radius arcto pop pop pop pop +% draw upper right corner to center of right edge +boxx boxy boxx boxy 0.5 mul radius arcto pop pop pop pop +% draw lower left corner to near center of bottom edge +boxx 0 boxx mul 0.5 6 add 0 radius arcto pop pop pop pop +% close the path +closepath +% draw the box +stroke +restore + +save +filenames {756 SM filename stringwidth pop sub 588 moveto filename show}if +restore} B + +/Check { +filenames { + Lmax dup add emax add lmax add 18 lt + {Lmax Ll ne emax el ne or lmax ll ne or} + {Lmax Ll ne emax el ne or lmax 1 add ll ne or} ifelse + { 36 588 moveto SM + Lmax =string cvs show (/)show Ll =string cvs show ( )show + emax =string cvs show (/)show el =string cvs show ( )show + lmax =string cvs show (/)show ll =string cvs show + } if +} if } B + +% +% draw rounded box +% +/drbradius tsize 3 div D +/drb { /drbtext E /drbxy E /drbxx E + marking + { save + currentpoint translate + 0 setlinecap % square butt ends + 1 setlinejoin % rounded corners + 0.5 setlinewidth % width of line to draw + newpath + % the origin is the lower left corner of the rounded box + % start drawing the box at the center of the bottom edge + drbxx 0.5 mul 0 moveto + % draw lower left corner to center of left edge + 0 0 0 drbxy mul 0.5 drbradius arcto pop pop pop pop + % draw upper left corner to center of top edge + 0 drbxy drbxx 0.5 mul drbxy drbradius arcto pop pop pop pop + % draw upper right corner to center of right edge + drbxx drbxy drbxx drbxy 0.5 mul drbradius arcto pop pop pop pop + % draw lower left corner to near center of bottom edge + drbxx 0 drbxx mul 0.5 6 add 0 drbradius arcto pop pop pop pop + % close the path + closepath + % draw the box + stroke + % place the text + drbxx drbtext stringwidth pop sub 0.5 mul + drbxy tspace sub 0.5 mul tlead add + moveto drbtext show + restore + }{ + /drbright currentpoint pop drbxx add 0.25 add D + drbright MaxX gt {/MaxX drbright D} if + } ifelse +} B + +/PlaceText { + /Markings E + save /marking false D /MaxX 0 D Markings + CenterX MaxX 0.5 mul sub 0 translate + /marking true D Markings lmax exch restore /lmax exch def} B + +/MeasureText {/Markings E /marking false D /MaxX 0 D /Base Top D /base Top D + Markings /OffsetX CenterX MaxX 0.5 mul sub D} B + +/MarkText {save OffsetX 0 translate /marking true D Markings restore} B + +/marking true D +/filenames false D +/OffsetX 90 D +/col1 0 D +/col2 30 D +/col3 60 D +/col4 90 D +/col5 120 D +/col6 150 D +/col7 180 D +/col8 210 D +/col9 240 D + +%% +%% Used to divide the page into two sections divided horizonally +%% + +/Scale 0.625 D +/SubPageX Short Scale mul D +/SubPageY Long Scale mul D +/AdjustX -6 D +/AdjustUX Long -0.5 mul AdjustX sub SubPageX sub D +/AdjustLX Long -0.5 mul AdjustX add D +/AdjustY Short SubPageY sub 0.5 mul D + +/Upper{Handout + {-90 rotate AdjustUX AdjustY translate Scale Scale scale }if}B +/Lower{Handout + {-90 rotate AdjustLX AdjustY translate Scale Scale scale }if}B + +%% +%% Used to print handout format text +%% +/LineBuffer 128 string D +/in{72 mul}B /mm{2.8346 mul}B /pt{}B /by{}B +/PageSize{/long E /short E}B +/land{90 rotate 0 short neg translate /High short D /Wide long D}B +/port{/High long D /Wide short D}B +/Offset{/Yoff E /Xoff E Xoff Yoff translate + /High High Yoff sub Yoff sub D /Wide Wide Xoff sub Xoff sub D}B +/LineSize{/Lhigh E /Lwide E + /Lvert High Lhigh div cvi D /Lhori Wide Lwide div cvi D}B +/SetFont{findfont exch /FS E [ .8 FS mul 0 0 FS 0 0 ] makefont setfont}B +/R3{3 1 roll}B +/DC{2 index Lhori 1 sub ge + {NewPage pop pop 0 Lvert false} + {R3 pop Lvert R3 1 add R3}ifelse}B +/DR{1 index 0 le{DC}if exch 1 sub exch}B +/T{exch pop true exch 3 index Lwide mul 3 index Lhigh mul M show}B +/ReadLine {currentfile LineBuffer readline exch /Text E not Text EOF eq or}B +% +% Sheet description +% +/NoteText{/EOF E Handout + {8.5 in by 11 in PageSize land 36 36 Offset + 360 pt by 12 pt LineSize 11 /Courier-Bold SetFont + save 0 Lvert false + {ReadLine {exit}{DR Text length 0 ne {Text T}if}ifelse}loop + pop pop pop restore} + {{ReadLine {exit}if}loop} + ifelse restore}B + +/Viewgraph {save Upper} B +/EndViewgraph {Check restore} B +/Notes {save Lower (EndNotes) NoteText} B + +end def + +/PageTop {PageFrame begin save 100 dict begin} bind def +/PageBottom {end restore end} bind def +/DoColor where {pop}{/DoColor false def}ifelse +/Handout where {pop}{/Handout false def}ifelse +% titling data +/talktitle (Just a little PostScript) def +/talkgiver (Randolph J. Herber, herber@fnal.fnal.gov, 1 630 840 2966 CDF PK149O) + def +/talkdept (Computing Division/Operating System Support/CDF Task Force) def +/talkaddr (P.O. Box 500, Mail Stop 234 (WH6W), Batavia, IL 60510) def +/talkcopyr () def + +/filenames true def +%%EndProlog +%%Page: Examples12 1 +PageTop +Viewgraph +/folio (Examples) def +/filename (examples.12) def + + +/@ {transform .5 add floor exch .5 add floor exch itransform} bind def +/! {dtransform .5 add floor exch .5 add floor exch idtransform} bind def +1 0 19 Frame + +LG 1 Line Y (Many different ways to draw two parallel lines) center + +8 line save /showpage {} def 146 Y @ translate .2 dup scale +gsave newpath 0 0 moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +2 setlinewidth +0 0 @ moveto 500 0 ! rlineto stroke +0 500 @ moveto 500 0 ! rlineto stroke +showpage +restore + +8 line save /showpage {} def 271 Y @ @ translate .2 dup scale +gsave newpath 0 0 moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +2 setlinewidth +0 0 @ moveto +gsave +0 500 @ moveto 500 0 ! rlineto stroke +grestore +500 0 ! rlineto stroke +showpage +restore + +8 line save /showpage {} def 396 Y @ translate .2 dup scale +gsave newpath 0 0 moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +2 setlinewidth +[500] 0 setdash +0 0 @ moveto 500 0 ! rlineto 0 500 ! rlineto -500 0 ! rlineto closepath stroke +showpage +restore + +8 line save /showpage {} def 521 Y @ translate .2 dup scale +gsave newpath 0 0 moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +2 setlinewidth +[50] 0 setdash +0 0 @ moveto 500 0 ! rlineto stroke +500 500 @ moveto -500 0 ! rlineto stroke +500 0 @ moveto -500 0 ! rlineto stroke +0 500 @ moveto 500 0 ! rlineto stroke +showpage +restore + +16 line save /showpage {} def 146 Y @ translate .2 dup scale +gsave newpath 0 0 moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +2 setlinewidth +[50] 0 setdash +.2 setgray 0 0 @ moveto 500 0 ! rlineto stroke +.4 setgray 500 500 @ moveto -500 0 ! rlineto stroke +.6 setgray 500 0 @ moveto -500 0 ! rlineto stroke +.8 setgray 0 500 @ moveto 500 0 ! rlineto stroke +showpage +restore + +16 line save /showpage {} def 271 Y @ translate .2 dup scale +gsave newpath 0 0 @ moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +/B {bind def} dup exec +/E {exch def} B +/Box {/W E /H E + @ moveto W 0 ! rlineto 0 H ! rlineto W neg 0 ! rlineto closepath} B +0 -1 2 500 Box 0 499 2 500 Box fill +showpage +restore + +16 line save /showpage {} def 390 Y @ translate .2 dup scale +gsave newpath 0 0 @ moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +/B {bind def} dup exec +/E {exch def} B +/Box {/W E /H E + @ moveto W 0 ! rlineto 0 H ! rlineto W neg 0 ! rlineto closepath} B +0 -2 504 500 Box fill 1 setgray 0 1 498 500 Box fill +showpage +restore + +16 line save /showpage {} def 521 Y @ translate .2 dup scale +gsave newpath 0 0 @ moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath +DoColor{0 0 1 setrgbcolor}if stroke grestore +66 146 @ translate +2 setlinewidth +[5] 0 setdash +newpath +500 0 0 0 -500 0 500 500 -500 0 500 0 500 0 0 500 +4 {@ moveto ! rlineto} bind repeat +stroke +showpage +restore + +{ +18 setline TX +l+ C1(These look alike and have vastly different PostScript language codes.)S +} PlaceText +EndViewgraph +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Notes lines should not be longer than 65 characters. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Notes +==> Q1.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate 2 setlinewidth + 0 0 moveto 500 0 rlineto stroke + 0 500 moveto 500 0 rlineto stroke + showpage + +==> Q2.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate 2 setlinewidth + 0 0 moveto gsave 0 500 moveto 500 0 rlineto stroke + grestore 500 0 rlineto stroke + showpage + +==> Q3.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate 2 setlinewidth [500] 0 setdash + 0 0 moveto 500 0 rlineto 0 500 rlineto -500 0 rlineto + closepath stroke + showpage + +==> Q4.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate 2 setlinewidth [50] 0 setdash + 0 0 moveto 500 0 rlineto stroke + 500 500 moveto -500 0 rlineto stroke + 500 0 moveto -500 0 rlineto stroke + 0 500 moveto 500 0 rlineto stroke + showpage + +==> Q5.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate 2 setlinewidth [50] 0 setdash + .2 setgray 0 0 moveto 500 0 rlineto stroke + .4 setgray 500 500 moveto -500 0 rlineto stroke + .6 setgray 500 0 moveto -500 0 rlineto stroke + .8 setgray 0 500 moveto 500 0 rlineto stroke + showpage + +==> Q6.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate /B {bind def} dup exec /E {exch def} B + /Box {/W E /H E moveto + W 0 rlineto 0 H rlineto W neg 0 rlineto closepath} B + 0 -1 2 500 Box 0 499 2 500 Box fill + showpage + +==> Q7.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate /B {bind def} dup exec /E {exch def} B + /Box {/W E /H E moveto + W 0 rlineto 0 H rlineto W neg 0 rlineto closepath} B + 0 -1 502 500 Box fill 1 setgray 0 1 498 500 Box fill + showpage + +==> Q8.ps <== + %!PS-Adobe-3.0 EPSF-3.0 + %%BoundingBox: 55 145 557 647 + %%Pages: 1 + %%EndComments + 66 146 translate 2 setlinewidth [5] 0 setdash newpath + 500 0 0 0 -500 0 500 500 -500 0 500 0 500 0 0 500 + 4 {moveto rlineto} bind repeat stroke + showpage +EndNotes +showpage +PageBottom +%%EOF diff --git a/vendor/github.com/llgcode/ps/samples/maze.ps b/vendor/github.com/llgcode/ps/samples/maze.ps new file mode 100644 index 0000000..c0d7939 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/maze.ps @@ -0,0 +1,275 @@ +%!PS +%%Pages: 1 +%%EndComments + +% Yet Another Maze Maker +% Version 2 +% Written by Peter Sorotokin, 1996-1998 +% This program is in the public domain. + +% Note: do not send this job to the printer until you know +% how to cancel it (it may take a LOT of time on slow printer; +% it takes couple minutes on my LaserJet 4). + +%%BeginSetup + +% put your sizes here: + +/width 25 def +/height 25 def + +% seed number here: + +0 srand % put your seed number instead of 0 (normally not required) +systemdict /realtime known { realtime srand } if + +% initialization + +/size width height mul def +/zone size array def +/zsize size array def +/vert width 1 add array def +/hor height 1 add array def + +/w1 width 1 sub def +/h1 height 1 sub def + +0 1 size 1 sub { dup zsize exch 1 put zone exch dup put } bind for +0 1 width { vert exch height string 0 1 h1 + { 1 index exch 255 put } for put } bind for +0 1 height { hor exch width string 0 1 w1 + { 1 index exch 255 put } for put } bind for + +% define subroutines + +/db { dup 20 string cvs = } bind def + +/find_set { { zone 1 index get dup 3 1 roll eq {exit} if } loop} bind def + +/merge_sets { + 2 copy zsize exch get + exch zsize exch get 2 copy gt + 3 1 roll add exch + { zsize 2 index 3 -1 roll put + zone 3 1 roll put } + { zsize 3 index 3 -1 roll put + zone 3 1 roll exch put } + ifelse } bind def + +%%EndSetup + +%%Page: maze 1 + +% building + +size 1 sub +{ + { + rand 2 mod 0 eq + { + rand height mod + rand w1 mod 2 copy + height mul add + dup height add + find_set exch find_set + 2 copy eq + { + pop pop pop pop + } + { + merge_sets vert exch 1 add get exch 0 put exit + } + ifelse + } + { + rand h1 mod + rand width mod 2 copy + height mul add + dup 1 add + find_set exch find_set + 2 copy eq + { + pop pop pop pop + } + { + merge_sets exch hor exch 1 add get exch 0 put exit + } + ifelse + } + ifelse + } + loop +} bind repeat + +% make entrance and exit + +vert 0 get rand height mod 0 put +vert width get rand height mod 0 put + +% setup output + +clippath pathbbox +2 index sub exch +3 index sub exch +4 2 roll translate +2 copy height 4 add div exch width 4 add div +2 copy gt {exch} if pop /myscale exch def + +myscale height mul sub 2 div exch +myscale width mul sub 2 div exch +translate + +myscale myscale scale +0.05 setlinewidth + +newpath + +% render the maze + +0 1 width { dup 0 moveto vert exch get 0 1 height 1 sub + { 1 index exch get 0 eq 0 1 3 -1 roll { rmoveto } { rlineto } ifelse } + for pop } bind for + +0 1 height { dup 0 exch moveto hor exch get 0 1 width 1 sub + { 1 index exch get 0 eq 1 0 3 -1 roll { rmoveto } { rlineto } ifelse } + for pop } bind for + +stroke + +stroke + +% Quick hack to solve the maze. +% This part written by Christian Lehner. + +clear + +/NORTH 1 def +/WEST 2 def +/SOUTH 4 def +/EAST 8 def +/CRUMB 16 def + +/find_door {% column => index + dup 0 1 3 -1 roll length 1 sub { + 2 copy get 0 eq { + exch pop + exit + } { + pop + } ifelse + } for +} bind def + +/mentrance vert 0 get find_door def +/mexit vert width get find_door def + +/maze [height {[width {0} repeat]} repeat] def + +/mget {% row col => int + maze 3 -1 roll get exch get +} bind def + +/mset {% row col int => - + maze 4 -1 roll get 3 -2 roll put +} bind def + +/initmaze { + 0 1 height 1 sub {/row exch def + /mrow maze row get def + 0 1 width 1 sub {/col exch def + % north + hor row 1 add get col get 0 eq { + mrow col 2 copy get //NORTH or put + } if + % west + vert col get row get 0 eq { + mrow col 2 copy get //WEST or put + } if + % south + hor row get col get 0 eq { + mrow col 2 copy get //SOUTH or put + } if + % east + vert col 1 add get row get 0 eq { + mrow col 2 copy get //EAST or put + } if + } for + } for +} bind def + +/step {% row col side => row' col' + /side exch def + /col exch def + /row exch def + side //NORTH eq { + row 1 add col + } { + side //WEST eq { + row col 1 sub + } { + side //SOUTH eq { + row 1 sub col + } { + side //EAST eq { + row col 1 add + } { + (step: bad side ) print side == + } ifelse + } ifelse + } ifelse + } ifelse +} bind def + +/done false def + +/escape {% row col => - + /col exch def + /row exch def + row mexit eq col width 1 sub eq and { + (done)== + row col + /done true store + } { + row col 2 copy mget //CRUMB or mset + row col + [//NORTH //WEST //SOUTH //EAST] {/side exch def + done {exit} if + 2 copy mget /val exch def + val side and 0 ne { + 2 copy side step 2 copy + mget /val exch def + val //CRUMB and 0 eq { + escape + } { + pop pop + } ifelse + } if + } forall + done not { + pop pop + } if + } ifelse +} bind def + +/solve { + % close the entrance + vert 0 get mentrance 1 put + initmaze + % start the escape + /path [mentrance -1 mentrance 0 escape 2 copy 1 add] def + % draw the path + .5 setgray + .5 .5 translate + path 1 get path 0 get moveto + 2 2 path length 1 sub {/i exch def + path i 1 add get path i get lineto + } for + stroke + showpage +} bind def + +% eject the page + +copypage solve + +%%EOF diff --git a/vendor/github.com/llgcode/ps/samples/snowflak.ps b/vendor/github.com/llgcode/ps/samples/snowflak.ps new file mode 100644 index 0000000..3cfdbdf --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/snowflak.ps @@ -0,0 +1,91 @@ +%! +%% Elizabeth D. Zwicky +%% zwicky@erg.sri.com +%% multiflake + +/newflake +{/seed usertime def +seed srand +/strokecolor [rand 99 mod 100 div + rand 99 mod 100 div + 100 rand 22 mod sub 100 div] def +/fillcolor [rand 99 mod 100 div + 100 rand 22 mod sub 100 div + rand 99 mod 100 div] def +/eofillcolor [rand 99 mod 100 div + rand 22 mod 100 div + 100 rand 22 mod sub 100 div] def + +/colorfill {fillcolor aload pop setrgbcolor fill } def +/colorstroke {strokecolor aload pop setrgbcolor stroke } def +/eocolorfill {eofillcolor aload pop setrgbcolor eofill } def +/arm {0 0 moveto + 5 {3 {x y x y x y curveto} repeat} repeat + seed srand + 0 0 moveto + 5 {3 {x neg y x neg y x neg y curveto} repeat} repeat + seed srand +} def + + newpath + +0 0 moveto boxsize 0 rlineto 0 boxsize rlineto boxsize neg 0 rlineto +0 0 lineto + +rand 99 mod 100 div +100 rand 22 mod sub 100 div +100 rand 22 mod sub 100 div + sethsbcolor fill +seed srand +boxsize 2 div boxsize 2 div translate + +%% If the device you are using can handle complex fills, replace the +%% next three lines with: +%% +6 {arm 60 rotate} repeat +gsave colorfill grestore gsave eocolorfill grestore colorstroke +%% +%% This will be not only faster, but prettier. On a LaserWriter or a +%% Tektronix Phaser II PS it gives a limitcheck. + +%% 6 {arm 60 rotate colorfill} repeat +%% 6 {arm 60 rotate eocolorfill} repeat +%% 6 {arm 60 rotate} repeat colorstroke +} def + +1 setlinewidth +clippath [pathbbox]== pathbbox /ury exch def /urx exch def /lly exch def /llx exch def +/minsize 250 def +/pagewidth urx llx sub def +/pageheight ury lly sub def +/inwidth pagewidth minsize div def +/inheight pageheight minsize div def + +/boxsize + inwidth inheight gt + {pagewidth inwidth truncate div} + {pageheight inheight truncate div} + ifelse +def + +/inwidth pagewidth boxsize div cvi def +/inheight pageheight boxsize div cvi def + +/x {rand 70 mod abs} def +/y {rand 120 mod abs} def + +llx lly translate + +inheight dup == { + inwidth { + gsave + (NEWFLAKE)== + newflake + grestore + boxsize 0 translate + } repeat + boxsize inwidth mul neg boxsize translate +} repeat + + +showpage diff --git a/vendor/github.com/llgcode/ps/samples/test1.ps b/vendor/github.com/llgcode/ps/samples/test1.ps new file mode 100644 index 0000000..cd53b37 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/test1.ps @@ -0,0 +1,50 @@ +%! +% Example of rotation... draws 36 lines in a circular pattern + +/box { + newpath + moveto + 72 0 rlineto + 0 72 rlineto + -72 0 rlineto + closepath +} def + +% Specify font for text labels +/Helvetica findfont 40 scalefont setfont + +gsave + 40 40 translate % Set origin to (40, 40) + 0 0 box stroke % Draw box at new origin... + 77 0 moveto + (Translated) show % and label +grestore + +gsave + 100 150 translate % Translate origin to (100, 150) + 30 rotate % Rotate counter-clockwise by 30 degrees + 0 0 box stroke % Draw box... + 75 0 moveto + (Translated & Rotated) show % and label +grestore + +gsave + 40 300 translate % Translate to (40, 300) + 0.5 1 scale % Reduce x coord by 1/2, y coord left alone + 0 0 box stroke % Draw box... + 75 0 moveto + (Translated & Squished) show % and label +grestore + +gsave + 300 300 translate % Set origin to (300, 300) + 45 rotate % Rotate coordinates by 45 degrees + 0.5 1 scale % Scale coordinates + 0 0 box stroke % Draw box + 75 0 moveto + (Everything) show +grestore + +showpage + + diff --git a/vendor/github.com/llgcode/ps/samples/tiger.ps b/vendor/github.com/llgcode/ps/samples/tiger.ps new file mode 100644 index 0000000..24a9dce --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/tiger.ps @@ -0,0 +1,2733 @@ +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator: Adobe Illustrator(TM) 1.2d4 +%%For: OpenWindows Version 2 +%%Title: tiger.eps +%%CreationDate: 4/12/90 3:20 AM +%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0 +%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0 +%%BoundingBox: 22 171 567 738 +%%EndComments + +%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0 + +/Adobe_Illustrator_1.2d1 dup 100 dict def load begin +% definition operators +/bdef {bind def} bind def +/ldef {load def} bdef +/xdef {exch def} bdef +% graphic state operators +/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef +/_k /setcmybcolor where { + /setcmybcolor get +} { + { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind +} ifelse def +/g {/_b xdef /p {_b setgray} def} bdef +/G {/_B xdef /P {_B setgray} def} bdef +/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef +/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef +/d /setdash ldef +/_i currentflat def +/i {dup 0 eq {pop _i} if setflat} bdef +/j /setlinejoin ldef +/J /setlinecap ldef +/M /setmiterlimit ldef +/w /setlinewidth ldef +% path construction operators +/_R {.25 sub round .25 add} bdef +/_r {transform _R exch _R exch itransform} bdef +/c {_r curveto} bdef +/C /c ldef +/v {currentpoint 6 2 roll _r curveto} bdef +/V /v ldef +/y {_r 2 copy curveto} bdef +/Y /y ldef +/l {_r lineto} bdef +/L /l ldef +/m {_r moveto} bdef +% path painting operators +/n /newpath ldef +/N /n ldef +/F {p fill} bdef +/f {closepath F} bdef +/S {P stroke} bdef +/s {closepath S} bdef +/B {gsave F grestore S} bdef +/b {closepath B} bdef +end +%%EndProcSet +%%EndProlog + +%%Page: 1 1 + +Adobe_Illustrator_1.2d1 begin + +.8 setgray +clippath fill +-110 -300 translate +1.1 dup scale + +0 g +0 G +0 i +0 J +0 j +0.172 w +10 M +[]0 d +0 0 0 0 k + +177.696 715.715 m +177.797 713.821 176.973 713.84 v +176.149 713.859 159.695 761.934 139.167 759.691 C +156.95 767.044 177.696 715.715 V +b +181.226 718.738 m +180.677 716.922 179.908 717.221 v +179.14 717.519 180.023 768.325 159.957 773.199 C +179.18 774.063 181.226 718.738 V +b +208.716 676.41 m +210.352 675.45 209.882 674.773 v +209.411 674.096 160.237 686.898 150.782 668.541 C +154.461 687.428 208.716 676.41 V +b +205.907 666.199 m +207.763 665.803 207.529 665.012 v +207.296 664.221 156.593 660.879 153.403 640.478 C +150.945 659.563 205.907 666.199 V +b +201.696 671.724 m +203.474 671.061 203.128 670.313 v +202.782 669.565 152.134 673.654 146.002 653.936 C +146.354 673.175 201.696 671.724 V +b +190.991 689.928 m +192.299 688.554 191.66 688.033 v +191.021 687.512 147.278 713.366 133.131 698.324 C +141.872 715.467 190.991 689.928 V +b +183.446 685.737 m +184.902 684.52 184.326 683.929 v +183.75 683.339 137.362 704.078 125.008 687.531 C +131.753 705.553 183.446 685.737 V +b +180.846 681.665 m +182.454 680.657 181.964 679.994 v +181.474 679.331 132.692 693.554 122.709 675.478 C +126.934 694.251 180.846 681.665 V +b +191.58 681.051 m +192.702 679.52 192.001 679.085 v +191.3 678.65 151.231 709.898 135.273 696.793 C +146.138 712.674 191.58 681.051 V +b +171.8 710 m +172.4 708.2 171.6 708 v +170.8 707.8 142.2 749.8 122.999 742.2 C +138.2 754 171.8 710 V +b +172.495 703.021 m +173.47 701.392 172.731 701.025 v +171.993 700.657 135.008 735.501 117.899 723.939 C +130.196 738.739 172.495 703.021 V +b +172.38 698.651 m +173.502 697.12 172.801 696.685 v +172.1 696.251 132.031 727.498 116.073 714.393 C +126.938 730.274 172.38 698.651 V +b +0 J 1 w +170.17 696.935 m +170.673 690.887 171.661 684.318 173.4 681.199 C +169.8 668.799 178.6 655.599 V +178.2 648.399 179.8 645.199 V +183.8 636.799 188.6 635.999 v +192.484 635.352 201.207 632.283 211.068 630.879 c +228.2 616.799 225 603.999 V +224.6 587.599 221 585.999 V +232.6 597.199 223 580.399 V +218.6 561.599 l +244.2 583.199 228.6 564.799 V +218.6 538.799 l +238.2 557.199 231 548.799 V +227.8 539.999 l +271 567.199 240.2 537.599 V +248.2 541.199 252.6 538.399 V +259.4 539.599 258.6 537.999 V +237.8 527.599 234.2 509.199 V +242.6 519.199 239.4 508.399 V +239.8 496.799 l +243.8 518.399 243.4 480.799 V +262.6 498.799 251 477.999 V +251 461.199 l +266.2 477.599 259.8 464.799 V +269.8 473.599 265.8 458.399 V +265 447.999 269.4 459.199 V +285.4 489.799 279.4 463.599 V +278.6 444.399 283.4 459.199 V +283.8 448.799 293 441.599 V +291.8 492.399 304.6 456.399 V +308.6 439.999 l +311.4 449.199 311 454.399 V +325.8 470.799 319 446.399 V +334.2 469.199 331 455.999 V +323.4 439.999 325 435.199 V +341.8 469.999 343 471.599 V +341 429.198 351.8 465.199 V +357.4 453.199 354.6 448.799 V +362.6 456.799 361.8 459.999 V +366.4 468.199 369.2 454.599 V +371 445.199 372.6 448.399 V +376.6 424.398 377.8 447.199 V +379.4 460.799 372.2 472.399 V +373 475.599 370.2 479.599 v +383.8 457.999 376.6 486.799 V +387.801 478.799 389.001 478.799 V +375.4 501.999 384.2 497.199 V +379 507.599 397.001 495.599 V +381 511.599 398.601 501.999 V +406.601 495.599 399.001 505.599 V +384.6 521.599 406.601 503.599 V +418.201 487.199 419.001 484.399 V +409.001 513.599 404.601 516.399 V +413.001 552.799 454.201 537.199 V +461.001 519.999 465.401 538.399 V +478.201 544.799 489.401 517.199 V +493.401 530.799 492.601 533.599 V +499.401 532.399 498.601 533.599 V +511.801 529.199 513.001 529.999 V +519.801 523.199 520.201 526.799 V +529.401 523.999 527.401 527.599 V +536.201 511.999 536.601 508.399 V +539.001 522.399 l +541.001 519.599 l +542.601 527.199 541.801 528.399 v +541.001 529.599 561.801 521.599 566.601 500.799 C +568.601 492.399 l +574.601 507.199 573.001 511.199 V +578.201 510.399 578.601 505.999 V +582.601 529.199 577.801 535.199 V +582.201 535.999 583.401 532.399 V +583.401 539.599 l +590.601 538.799 590.601 541.199 V +595.001 545.199 597.001 540.399 V +584.601 575.599 603.001 556.399 V +610.201 545.599 606.601 564.399 v +603.001 583.199 599.001 584.799 603.801 585.199 C +604.601 588.799 602.601 590.399 v +600.601 591.999 603.801 590.399 y +608.601 586.399 603.401 608.399 V +609.801 606.799 597.801 635.999 V +600.601 638.399 596.601 646.799 V +604.601 642.399 607.401 643.999 V +607.001 645.599 603.801 649.599 V +582.201 704.4 602.601 682.399 V +614.451 668.849 608.051 691.649 V +598.94 715.659 599.717 719.955 V +170.17 696.935 l +b +0.2 0.55 0.85 0 k +599.717 719.755 m +600.345 719.574 602.551 718.45 603.801 716.8 C +610.601 706 605.401 724.4 V +596.201 753.2 605.001 742 V +611.001 734.8 607.801 748.4 v +603.936 764.827 601.401 771.2 y +613.001 766.4 586.201 806 V +595.001 802.4 l +575.401 842 553.801 847.2 V +545.801 853.2 l +584.201 891.2 571.401 928 V +564.601 933.2 555.001 924 V +548.601 919.2 542.601 920.8 V +511.801 919.6 509.801 919.6 v +507.801 919.6 473.001 956.8 407.401 939.2 C +402.201 937.2 397.801 938.4 V +379.4 954.4 330.6 931.6 v +320.6 929.6 319 929.6 v +317.4 929.6 314.6 929.6 306.6 923.2 c +298.6 916.8 298.2 916 296.2 914.4 C +279.8 903.2 275 902.4 V +263.4 896 259 886 V +255.4 884.8 l +253.8 877.6 253.4 876.4 V +248.6 872.8 247.8 867.2 V +239 861.2 239.4 856.8 V +237.8 851.6 237 846.8 V +229.8 842 230.6 839.2 V +223 825.2 224.2 818.4 V +217.8 818.8 215 816.4 V +214.2 811.6 212.6 811.2 V +209.8 810 212.2 806 V +210.6 803.2 210.2 801.6 V +211 798.8 206.6 793.2 V +200.2 774.4 202.2 769.2 V +202.6 764.4 199.8 762.8 V +196.2 763.2 204.6 751.2 V +205.4 750 202.2 747.6 V +185 744 182.6 727.6 V +169 712.8 169 707.6 v +169 705.295 169.271 702.148 169.97 697.535 C +169.4 689.199 197 688.399 v +224.6 687.599 599.717 719.755 Y +b +184.4 697.4 m +159.4 736.8 173.8 680.399 Y +182.6 645.999 312.2 683.599 y +481.001 714 492.201 718 v +503.401 722 598.601 715.6 y +593.001 732.4 L +528.201 778.8 509.001 755.6 495.401 759.6 c +481.801 763.6 484.201 754 481.001 753.2 c +477.801 752.4 438.601 777.2 432.201 776.4 c +425.801 775.6 400.459 799.351 415.401 767.6 c +431.401 733.6 357 728.4 340.2 739.6 c +323.4 750.8 347.4 721.2 Y +365.8 701.2 331.4 718 y +297 730.8 273 705.2 269.8 704.4 c +266.6 703.6 261.8 700.4 261 706.8 c +260.2 713.2 252.69 729.901 221 703.6 c +201 686.999 187.2 709 Y +184.4 697.4 L +f +0.09 0.5 0.772 0 k +433.51 774.654 m +427.11 773.854 401.743 797.593 416.71 765.854 c +433.31 730.654 358.31 726.654 341.51 737.854 c +324.709 749.054 348.71 719.454 Y +367.11 699.454 332.709 716.254 y +298.309 729.054 274.309 703.454 271.109 702.654 c +267.909 701.854 263.109 698.654 262.309 705.054 c +261.509 711.454 254.13 727.988 222.309 701.854 c +201.073 684.508 187.582 705.963 Y +184.382 695.854 L +159.382 735.654 174.454 677.345 Y +183.255 642.944 313.509 681.854 y +482.31 712.254 493.51 716.254 v +504.71 720.254 599.038 713.927 y +593.51 731.236 L +528.71 777.636 510.31 753.854 496.71 757.854 c +483.11 761.854 485.51 752.254 482.31 751.454 c +479.11 750.654 439.91 775.454 433.51 774.654 c +f +0.081 0.45 0.695 0 k +434.819 772.909 m +428.419 772.109 403.685 796.138 418.019 764.109 c +434.219 727.908 359.619 724.908 342.819 736.108 c +326.019 747.308 350.019 717.708 Y +368.419 697.708 334.019 714.508 y +299.619 727.308 275.618 701.708 272.418 700.908 c +269.218 700.108 264.418 696.908 263.618 703.308 c +262.818 709.708 255.57 726.075 223.618 700.108 c +201.145 682.017 187.964 702.926 Y +184.364 694.308 L +160.564 733.308 175.109 674.29 Y +183.909 639.89 314.819 680.108 y +483.619 710.508 494.819 714.508 v +506.019 718.508 599.474 712.254 y +594.02 730.072 L +529.219 776.472 511.619 752.109 498.019 756.109 c +484.419 760.109 486.819 750.509 483.619 749.708 c +480.419 748.908 441.219 773.709 434.819 772.909 c +f +0.072 0.4 0.618 0 k +436.128 771.163 m +429.728 770.363 404.999 794.395 419.328 762.363 c +436.128 724.807 360.394 723.518 344.128 734.363 c +327.328 745.563 351.328 715.963 Y +369.728 695.963 335.328 712.763 y +300.928 725.563 276.928 699.963 273.728 699.163 c +270.528 698.363 265.728 695.163 264.928 701.563 c +264.128 707.963 257.011 724.161 224.927 698.363 c +201.218 679.526 188.345 699.89 Y +184.345 692.763 L +162.545 729.563 175.764 671.235 Y +184.564 636.835 316.128 678.363 y +484.928 708.763 496.129 712.763 v +507.329 716.763 599.911 710.581 y +594.529 728.908 L +529.729 775.309 512.929 750.363 499.329 754.363 c +485.728 758.363 488.128 748.763 484.928 747.963 c +481.728 747.163 442.528 771.963 436.128 771.163 c +f +0.063 0.35 0.54 0 k +437.438 769.417 m +431.037 768.617 406.814 792.871 420.637 760.617 c +437.438 721.417 362.237 721.417 345.437 732.617 c +328.637 743.817 352.637 714.217 Y +371.037 694.217 336.637 711.017 y +302.237 723.817 278.237 698.217 275.037 697.417 c +271.837 696.617 267.037 693.417 266.237 699.817 c +265.437 706.217 258.452 722.248 226.237 696.617 c +201.291 677.035 188.727 696.854 Y +184.327 691.217 L +164.527 726.018 176.418 668.181 Y +185.218 633.78 317.437 676.617 y +486.238 707.017 497.438 711.017 v +508.638 715.017 600.347 708.908 y +595.038 727.745 L +530.238 774.145 514.238 748.617 500.638 752.617 c +487.038 756.617 489.438 747.017 486.238 746.217 c +483.038 745.417 443.838 770.217 437.438 769.417 c +f +0.054 0.3 0.463 0 k +438.747 767.672 m +432.347 766.872 406.383 790.323 421.947 758.872 c +441.147 720.072 363.546 719.672 346.746 730.872 c +329.946 742.072 353.946 712.472 Y +372.346 692.472 337.946 709.272 y +303.546 722.072 279.546 696.472 276.346 695.672 c +273.146 694.872 268.346 691.672 267.546 698.072 c +266.746 704.472 259.892 720.335 227.546 694.872 c +201.364 674.544 189.109 693.817 Y +184.309 689.672 L +166.309 722.872 177.073 665.126 Y +185.873 630.726 318.746 674.872 y +487.547 705.272 498.747 709.272 v +509.947 713.272 600.783 707.236 y +595.547 726.581 L +530.747 772.981 515.547 746.872 501.947 750.872 c +488.347 754.872 490.747 745.272 487.547 744.472 c +484.347 743.672 445.147 768.472 438.747 767.672 c +f +0.045 0.25 0.386 0 k +440.056 765.927 m +433.655 765.127 407.313 788.387 423.255 757.127 c +443.656 717.126 364.855 717.926 348.055 729.126 c +331.255 740.326 355.255 710.726 Y +373.655 690.726 339.255 707.526 y +304.855 720.326 280.855 694.726 277.655 693.926 c +274.455 693.126 269.655 689.926 268.855 696.326 c +268.055 702.726 261.332 718.422 228.855 693.126 c +201.436 672.053 189.491 690.781 Y +184.291 688.126 L +168.291 718.326 177.727 662.071 Y +186.527 627.671 320.055 673.126 y +488.856 703.526 500.056 707.526 v +511.256 711.526 601.22 705.563 y +596.056 725.417 L +531.256 771.817 516.856 745.126 503.256 749.126 c +489.656 753.127 492.056 743.526 488.856 742.726 c +485.656 741.926 446.456 766.727 440.056 765.927 c +f +0.036 0.2 0.309 0 k +441.365 764.181 m +434.965 763.381 407.523 786.056 424.565 755.381 c +446.565 715.781 366.164 716.181 349.364 727.381 c +332.564 738.581 356.564 708.981 Y +374.964 688.981 340.564 705.781 y +306.164 718.581 282.164 692.981 278.964 692.181 c +275.764 691.381 270.964 688.181 270.164 694.581 c +269.364 700.981 262.773 716.508 230.164 691.381 c +201.509 669.562 189.873 687.744 Y +184.273 686.581 L +169.872 714.981 178.382 659.017 Y +187.182 624.616 321.364 671.381 y +490.165 701.781 501.365 705.781 v +512.565 709.781 601.656 703.89 y +596.565 724.254 L +531.765 770.654 518.165 743.381 504.565 747.381 c +490.965 751.381 493.365 741.781 490.165 740.981 c +486.965 740.181 447.765 764.981 441.365 764.181 c +f +0.027 0.15 0.231 0 k +442.674 762.435 m +436.274 761.635 408.832 784.311 425.874 753.635 c +447.874 714.035 367.474 714.435 350.674 725.635 c +333.874 736.835 357.874 707.235 Y +376.274 687.235 341.874 704.035 y +307.473 716.835 283.473 691.235 280.273 690.435 c +277.073 689.635 272.273 686.435 271.473 692.835 c +270.673 699.235 264.214 714.595 231.473 689.635 c +201.582 667.071 190.255 684.707 Y +184.255 685.035 L +170.654 711.436 179.037 655.962 Y +187.837 621.562 322.673 669.635 y +491.474 700.035 502.674 704.035 v +513.874 708.035 602.093 702.217 y +597.075 723.09 L +532.274 769.49 519.474 741.635 505.874 745.635 c +492.274 749.635 494.674 740.035 491.474 739.235 c +488.274 738.435 449.074 763.235 442.674 762.435 c +f +0.018 0.1 0.154 0 k +443.983 760.69 m +437.583 759.89 410.529 782.777 427.183 751.89 c +449.183 711.09 368.783 712.69 351.983 723.89 c +335.183 735.09 359.183 705.49 Y +377.583 685.49 343.183 702.29 y +308.783 715.09 284.783 689.49 281.583 688.69 c +278.382 687.89 273.582 684.69 272.782 691.09 c +271.982 697.49 265.654 712.682 232.782 687.89 c +201.655 664.58 190.637 681.671 Y +184.236 683.49 L +171.236 707.49 179.691 652.907 Y +188.491 618.507 323.983 667.89 y +492.783 698.29 503.983 702.29 v +515.183 706.29 602.529 700.544 y +597.583 721.926 L +532.783 768.327 520.783 739.89 507.183 743.89 c +493.583 747.89 495.983 738.29 492.783 737.49 c +489.583 736.69 450.383 761.49 443.983 760.69 c +f +0.009 0.05 0.077 0 k +445.292 758.945 m +438.892 758.145 412.917 781.589 428.492 750.145 c +449.692 707.344 370.092 710.944 353.292 722.144 c +336.492 733.344 360.492 703.744 Y +378.892 683.744 344.492 700.544 y +310.092 713.344 286.092 687.744 282.892 686.944 c +279.692 686.144 274.892 682.944 274.092 689.344 c +273.292 695.744 267.095 710.768 234.092 686.144 c +201.727 662.089 191.018 678.635 Y +184.218 681.944 L +171.418 705.144 180.346 649.853 Y +189.146 615.453 325.292 666.144 y +494.093 696.544 505.293 700.544 v +516.493 704.544 602.965 698.872 y +598.093 720.763 L +533.292 767.163 522.093 738.144 508.493 742.144 c +494.893 746.145 497.293 736.544 494.093 735.744 c +490.892 734.944 451.692 759.745 445.292 758.945 c +f +1 g +184.2 680.399 m +171.4 702.4 181 646.799 Y +189.8 612.399 326.6 664.399 y +495.401 694.8 506.601 698.8 v +517.801 702.8 603.401 697.2 y +598.601 719.6 L +533.801 766 523.401 736.4 509.801 740.4 c +496.201 744.4 498.601 734.8 495.401 734 c +492.201 733.2 453.001 758 446.601 757.2 c +440.201 756.4 414.981 780.207 429.801 748.4 c +452.028 700.693 369.041 710.773 354.6 720.4 c +337.8 731.6 361.8 702 Y +380.2 681.999 345.8 698.8 y +311.4 711.6 287.4 685.999 284.2 685.199 c +281 684.399 276.2 681.199 275.4 687.599 c +274.6 694 268.535 708.856 235.4 684.399 c +201.8 659.599 191.4 675.599 Y +184.2 680.399 L +f +0 g +225.8 650.399 m +218.6 638.799 239.4 625.599 V +240.8 624.199 222.8 628.399 V +216.6 630.399 215 640.799 V +210.2 645.199 205.4 650.799 v +200.6 656.399 225.8 650.399 y +f +0.8 g +365.8 698 m +383.498 671.179 382.9 666.399 v +381.6 655.999 381.4 646.399 384.6 642.399 c +387.801 638.399 396.601 605.199 y +396.201 603.999 408.601 641.999 V +420.201 657.999 400.201 676.399 V +365 705.2 365.8 698 v +f +0 g +1 J 0.1 w +245.8 623.599 m +257 616.399 242.6 585.199 V +249 587.599 l +248.2 576.399 245 573.999 V +252.2 577.199 l +257 569.199 253 564.399 V +269.8 556.399 269 549.999 V +275.4 557.999 271.4 564.399 v +267.4 570.799 260.2 566.799 261 585.199 C +252.2 581.999 l +257.8 590.799 257.8 597.199 V +249.8 594.799 l +265.269 621.377 254.6 622.799 v +248.6 623.599 245.8 623.599 Y +f +0.8 g +278.2 606.799 m +281 611.199 278.2 610.399 v +275.4 609.599 244.2 594.799 238.2 585.199 C +272.6 609.599 278.2 606.799 V +f +288.6 598.799 m +291.4 603.199 288.6 602.399 v +285.8 601.599 254.6 586.799 248.6 577.199 C +283 601.599 288.6 598.799 V +f +301.8 613.999 m +304.6 618.399 301.8 617.599 v +299 616.799 267.8 601.999 261.8 592.399 C +296.2 616.799 301.8 613.999 V +f +278.6 570.399 m +278.6 576.399 275.8 575.599 v +273 574.799 237 557.199 231 547.599 C +273 573.199 278.6 570.399 V +f +279.8 581.199 m +281 585.999 278.2 585.199 V +276.2 585.199 249.8 573.599 243.8 563.999 C +273.4 585.599 279.8 581.199 V +f +265.4 533.599 m +255.4 525.999 l +265.8 533.599 269.4 532.399 V +262.6 521.199 261.8 515.999 V +272.2 528.799 277.8 528.399 V +285.4 527.999 285.4 517.199 V +291 527.599 294.2 527.199 V +295.4 520.799 294.2 513.999 V +298.2 521.599 302.2 519.999 V +308.6 521.999 307.8 510.399 V +307.8 499.999 307 497.199 V +312.6 523.599 315 523.999 V +323 525.199 327.8 516.399 V +323.8 523.999 328.6 521.999 V +339.4 520.399 342.6 513.599 V +335.8 525.599 341.4 522.399 V +348.2 522.399 349.4 515.999 V +357.8 494.799 359.8 493.199 V +352.2 514.799 353.8 514.799 V +351.8 526.799 357 511.999 V +353.8 525.999 359.4 525.199 v +365 524.399 369.4 514.399 377.8 516.799 C +387.401 511.199 389.401 580.399 V +265.4 533.599 L +f +0 g +0 J 1 w +270.2 626.399 m +285 632.399 325 626.399 V +332.2 625.999 339 634.799 v +345.8 643.599 372.6 650.799 379 648.799 C +388.601 642.399 l +389.401 641.199 l +401.801 630.799 402.201 623.199 v +402.601 615.599 387.801 567.599 378.2 551.599 c +368.6 535.599 359 523.199 339.8 525.599 C +319 529.599 293.4 525.599 v +264.2 527.199 261.4 535.199 v +258.6 543.199 272.6 558.399 y +277 566.799 275.8 581.199 v +274.6 595.599 275 623.599 270.2 626.399 c +f +0.1 0.6 0.45 0 k +292.2 624.399 m +300.6 605.999 271 540.799 y +269 539.199 283.66 533.154 293.8 535.599 c +304.746 538.237 345 533.999 Y +368.6 549.599 381.4 593.999 y +391.801 617.999 374.2 621.199 v +356.6 624.399 292.2 624.399 y +f +0.1 0.6 0.45 0.2 k +290.169 593.503 m +293.495 606.293 295.079 618.094 292.2 624.399 c +354.6 617.999 365.8 638.799 v +370.041 646.674 384.801 615.999 384.4 606.399 c +321.4 591.999 306.6 603.199 V +290.169 593.503 L +f +0.1 0.6 0.45 0.25 k +294.6 577.199 m +296.6 569.999 294.2 565.999 V +292.6 565.199 291.4 564.799 V +292.6 561.199 298.6 559.599 V +300.6 555.199 303 554.799 v +305.4 554.399 310.2 548.799 314.2 549.999 c +318.2 551.199 329.4 555.199 y +335 558.399 343.8 554.799 V +346.175 555.601 346.6 559.599 v +347.1 564.299 350.2 567.999 352.2 569.999 c +354.2 571.999 363.8 584.799 362.6 585.199 c +361.4 585.599 294.6 577.199 Y +f +0 0.55 0.5 0 k +290.2 625.599 m +287.4 603.199 290.6 594.799 v +293.8 586.399 293 584.399 292.2 580.399 c +291.4 576.399 295.8 566.399 301.4 560.399 C +313.4 558.799 l +328.6 562.399 337.8 559.599 V +346.794 558.256 350.2 573.199 V +355 579.599 362.2 582.399 v +369.4 585.199 376.6 626.799 372.6 634.799 c +368.6 642.799 354.2 647.199 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +b +0 0 0.2 0 k +0.5 w +291.8 550.799 m +291 552.799 286.6 553.199 V +264.2 556.799 255.8 569.199 V +249 574.799 253.4 563.199 V +263.8 542.799 270.6 539.999 V +287 535.999 291.8 550.799 V +b +0 0.55 0.5 0.2 k +1 w +371.742 614.771 m +372.401 622.677 374.354 631.291 372.6 634.799 c +366.154 647.693 349.181 642.305 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +288.455 611.636 289.295 601.624 v +326.6 613.199 327.4 607.599 V +329 610.799 338.2 610.799 v +347.4 610.799 370.142 611.971 371.742 614.771 C +f +0 g +0 0.55 0.5 0.35 K +2 w +328.6 624.799 m +333.4 619.999 329.8 610.399 V +315.4 594.399 317.4 580.399 v +S +0 0 0.2 0 k +0 G +0.5 w +280.6 539.999 m +276.2 552.799 285 545.999 V +289.8 543.999 288.6 542.399 v +287.4 540.799 281.8 536.799 280.6 539.999 C +b +285.64 538.799 m +282.12 549.039 289.16 543.599 V +293.581 541.151 292.04 540.719 v +287.48 539.439 292.04 536.879 285.64 538.799 C +b +290.44 538.799 m +286.92 549.039 293.96 543.599 V +298.335 541.289 296.84 540.719 v +293.48 539.439 296.84 536.879 290.44 538.799 C +b +297.04 538.599 m +293.52 548.839 300.56 543.399 V +304.943 541.067 303.441 540.519 v +300.48 539.439 303.441 536.679 297.04 538.599 C +b +303.52 538.679 m +300 548.919 307.041 543.479 V +310.881 541.879 309.921 540.599 v +308.961 539.319 309.921 536.759 303.52 538.679 C +b +310.2 537.999 m +305.4 550.399 314.6 543.999 V +319.4 541.999 318.2 540.399 v +317 538.799 318.2 535.599 310.2 537.999 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +281.8 555.199 m +295 557.999 301 554.799 V +307 553.599 308.2 553.999 v +309.4 554.399 312.6 554.799 y +S +315.8 546.399 m +327.8 559.999 339.8 555.599 v +346.816 553.026 345.8 556.399 346.6 559.199 c +347.4 561.999 347.6 566.199 352.6 569.199 c +S +0 0 0.2 0 k +0 G +0.5 w +333 562.399 m +329 573.199 326.2 560.399 v +323.4 547.599 320.2 543.999 318.6 541.199 C +318.6 535.999 327 536.399 V +337.8 536.799 338.2 539.599 v +338.6 542.399 337 553.999 333 562.399 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +347 555.199 m +350.6 557.599 353 556.399 v +S +353.5 571.599 m +356.4 576.499 361.2 577.299 v +S +0.7 g +0 G +1 w +274.2 534.799 m +292.2 531.599 296.6 533.199 V +305.4 533.199 297 531.199 V +284.2 531.199 276.2 532.399 V +264.6 537.999 274.2 534.799 V +f +0 0 0.2 0 k +0.5 w +288.2 627.999 m +305.8 627.999 307.8 627.199 V +315 596.399 311.4 588.799 V +310.2 585.999 307.4 591.599 V +289 624.399 285.8 626.399 v +282.6 628.399 287 627.999 288.2 627.999 C +b +211.1 630.699 m +220 628.999 232.6 626.399 V +237.4 603.999 240.6 599.199 v +243.8 594.399 240.2 594.399 236.6 597.199 c +233 599.999 218.2 613.999 216.2 618.399 c +214.2 622.799 211.1 630.699 y +b +232.961 626.182 m +238.761 624.634 239.77 622.419 v +240.778 620.205 238.568 616.908 y +237.568 613.603 236.366 615.765 v +235.164 617.928 232.292 625.588 232.961 626.182 c +b +0 g +233 626.399 m +236.6 621.199 240.2 621.199 v +243.8 621.199 244.182 621.612 247 620.999 c +251.6 619.999 251.2 621.999 257.8 620.799 c +260.44 620.319 263 621.199 265.8 619.999 c +268.6 618.799 271.8 619.599 273 621.599 c +274.2 623.599 279 627.799 Y +266.2 625.999 263.4 625.199 V +241 623.999 233 626.399 V +f +0 0 0.2 0 k +277.6 626.199 m +271.15 622.699 270.75 620.299 v +270.35 617.899 276 614.199 y +278.75 609.599 279.35 611.999 v +279.95 614.399 278.4 625.799 277.6 626.199 c +b +240.115 620.735 m +247.122 609.547 247.339 620.758 V +247.896 622.016 246.136 622.038 v +240.061 622.114 241.582 626.216 240.115 620.735 C +b +247.293 620.486 m +255.214 609.299 254.578 620.579 V +254.585 620.911 252.832 621.064 v +248.085 621.478 248.43 625.996 247.293 620.486 C +b +254.506 620.478 m +262.466 609.85 261.797 619.516 V +261.916 620.749 260.262 621.05 v +256.37 621.756 256.159 625.005 254.506 620.478 C +b +261.382 620.398 m +269.282 608.837 269.63 618.618 V +271.274 619.996 269.528 620.218 v +263.71 620.958 264.508 625.412 261.382 620.398 C +b +0 0 0.2 0.1 k +225.208 616.868 m +217.55 618.399 l +214.95 623.399 212.85 629.549 y +219.2 628.549 231.7 625.749 V +232.576 622.431 234.048 616.636 v +225.208 616.868 l +f +290.276 621.53 m +288.61 624.036 287.293 625.794 286.643 626.2 c +283.63 628.083 287.773 627.706 288.902 627.706 C +305.473 627.706 307.356 626.953 V +307.88 624.711 308.564 621.32 V +298.476 623.33 290.276 621.53 V +f +0.2 0.55 0.85 0 k +1 w +343.88 759.679 m +371.601 755.719 397.121 791.359 398.881 801.04 c +400.641 810.72 390.521 822.6 Y +391.841 825.68 387.001 839.76 381.721 849 c +376.441 858.24 360.54 857.266 343 858.24 c +327.16 859.12 308.68 835.8 307.36 834.04 c +306.04 832.28 312.2 793.999 313.52 788.279 c +314.84 782.559 312.2 756.159 y +346.44 765.259 316.16 763.639 343.88 759.679 c +f +0.08 0.44 0.68 0 k +308.088 833.392 m +306.792 831.664 312.84 794.079 314.136 788.463 c +315.432 782.847 312.84 756.927 y +345.512 765.807 316.728 764.271 343.944 760.383 c +371.161 756.495 396.217 791.487 397.945 800.992 c +399.673 810.496 389.737 822.16 Y +391.033 825.184 386.281 839.008 381.097 848.08 c +375.913 857.152 360.302 856.195 343.08 857.152 c +327.528 858.016 309.384 835.12 308.088 833.392 c +f +0.06 0.33 0.51 0 k +308.816 832.744 m +307.544 831.048 313.48 794.159 314.752 788.647 c +316.024 783.135 313.48 757.695 y +344.884 766.855 317.296 764.903 344.008 761.087 c +370.721 757.271 395.313 791.615 397.009 800.944 c +398.705 810.272 388.953 821.72 Y +390.225 824.688 385.561 838.256 380.473 847.16 c +375.385 856.064 360.063 855.125 343.16 856.064 c +327.896 856.912 310.088 834.44 308.816 832.744 c +f +0.04 0.22 0.34 0 k +309.544 832.096 m +308.296 830.432 314.12 794.239 315.368 788.831 c +316.616 783.423 314.12 758.463 y +343.556 767.503 317.864 765.535 344.072 761.791 c +370.281 758.047 394.409 791.743 396.073 800.895 c +397.737 810.048 388.169 821.28 Y +389.417 824.192 384.841 837.504 379.849 846.24 c +374.857 854.976 359.824 854.055 343.24 854.976 c +328.264 855.808 310.792 833.76 309.544 832.096 c +f +0.02 0.11 0.17 0 k +310.272 831.448 m +309.048 829.816 314.76 794.319 315.984 789.015 c +317.208 783.711 314.76 759.231 y +342.628 768.151 318.432 766.167 344.136 762.495 c +369.841 758.823 393.505 791.871 395.137 800.848 c +396.769 809.824 387.385 820.84 Y +388.609 823.696 384.121 836.752 379.225 845.32 c +374.329 853.888 359.585 852.985 343.32 853.888 c +328.632 854.704 311.496 833.08 310.272 831.448 c +f +1 g +344.2 763.2 m +369.4 759.6 392.601 792 394.201 800.8 c +395.801 809.6 386.601 820.4 Y +387.801 823.2 383.4 836 378.6 844.4 c +373.8 852.8 359.346 851.914 343.4 852.8 c +329 853.6 312.2 832.4 311 830.8 c +309.8 829.2 315.4 794.4 316.6 789.2 c +317.8 784 315.4 760 y +340.9 768.6 319 766.8 344.2 763.2 c +f +0.8 g +390.601 797.2 m +362.8 789.6 351.2 791.2 V +335.4 797.8 326.6 776 V +323 768.8 321 766.8 v +319 764.8 390.601 797.2 Y +f +0 g +394.401 799.4 m +365.4 787.2 355.4 787.6 v +339 792.2 330.6 777.6 V +322.2 768.4 319 766.8 V +318.6 765.2 325 769.2 V +335.4 764 l +350.2 754.4 359.8 770.4 V +363.8 781.6 363.8 783.6 v +363.8 785.6 385 791.2 386.601 791.6 c +388.201 792 394.801 796.2 394.401 799.4 C +f +0.4 0.2 0.8 0 k +347 763.486 m +340.128 763.486 331.755 767.351 331.755 773.6 c +331.755 779.848 340.128 786.113 347 786.113 c +353.874 786.113 359.446 781.048 359.446 774.8 c +359.446 768.551 353.874 763.486 347 763.486 c +f +0.4 0.2 0.8 0.2 k +343.377 780.17 m +338.531 779.448 333.442 777.945 333.514 778.161 c +335.054 782.78 341.415 786.113 347 786.113 c +351.296 786.113 355.084 784.135 357.32 781.125 c +352.004 781.455 343.377 780.17 v +f +1 g +355.4 780.4 m +351 783.6 351 781.4 V +354.6 777 355.4 780.4 V +f +0 g +345.4 772.274 m +342.901 772.274 340.875 774.3 340.875 776.8 c +340.875 779.299 342.901 781.325 345.4 781.325 c +347.9 781.325 349.926 779.299 349.926 776.8 c +349.926 774.3 347.9 772.274 345.4 772.274 c +f +0.2 0.55 0.85 0 k +241.4 785.6 m +238.2 806.8 240.6 811.2 V +251.4 821.2 251 824.8 V +250.6 842.8 249.4 843.6 v +248.2 844.4 240.6 850.4 234.6 844 C +224.2 826 225 819.6 V +225 817.6 l +217.4 818 215.8 816 V +214.6 810.8 213.4 810.4 V +210.6 808 212.6 805.2 V +210.6 802.8 211 798.8 V +218.6 794.8 L +220.6 780.4 231.4 775.2 v +236.236 772.871 239.4 779.6 241.4 785.6 c +f +1 g +240.4 787.44 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 v +246.52 840.36 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.04 240.4 787.44 c +f +0.075 0.412 0.637 0 k +248.95 842.61 m +247.86 843.47 240.37 849.24 234.52 843 C +224.38 825.45 225.16 819.21 V +225.16 817.26 l +217.75 817.65 216.19 815.7 V +215.02 810.63 213.85 810.24 V +211.12 807.9 213.07 805.17 V +211.12 802.83 211.51 798.93 V +218.92 795.03 L +220.87 780.99 231.4 775.92 v +236.114 773.65 239.2 780.21 241.15 786.06 c +238.03 806.73 240.37 811.02 V +250.9 820.77 250.51 824.28 V +250.12 841.83 248.95 842.61 V +f +0.05 0.275 0.425 0 k +248.5 841.62 m +247.52 842.54 240.14 848.08 234.44 842 C +224.56 824.9 225.32 818.82 V +225.32 816.92 l +218.1 817.3 216.58 815.4 V +215.44 810.46 214.3 810.08 V +211.64 807.8 213.54 805.14 V +211.64 802.86 212.02 799.06 V +219.24 795.26 L +221.14 781.58 231.4 776.64 v +235.994 774.428 239 780.82 240.9 786.52 c +237.86 806.66 240.14 810.84 V +250.4 820.34 250.02 823.76 V +249.64 840.86 248.5 841.62 V +f +0.025 0.137 0.212 0 k +248.05 840.63 m +247.18 841.61 239.91 846.92 234.36 841 C +224.74 824.35 225.48 818.43 V +225.48 816.58 l +218.45 816.95 216.97 815.1 V +215.86 810.29 214.75 809.92 V +212.16 807.7 214.01 805.11 V +212.16 802.89 212.53 799.19 V +219.56 795.49 L +221.41 782.17 231.4 777.36 v +235.873 775.206 238.8 781.43 240.65 786.98 c +237.69 806.59 239.91 810.66 V +249.9 819.91 249.53 823.24 V +249.16 839.89 248.05 840.63 V +f +1 g +240.4 787.54 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 V +246.84 840.68 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.14 240.4 787.54 c +f +0.8 g +237.3 793.8 m +215.7 804 214.8 804.8 V +223.9 796.6 224.7 796.6 v +225.5 796.6 237.3 793.8 Y +f +0 g +220.2 800 m +238.6 796.4 238.6 792 v +238.6 789.088 238.357 775.669 233 777.2 c +224.6 779.6 228.2 794 220.2 800 c +f +0.4 0.2 0.8 0 k +228.6 796.2 m +237.578 794.726 238.6 792 v +239.2 790.4 239.863 782.092 234.4 781 c +229.848 780.089 227.618 790.31 228.6 796.2 c +f +0 g +314.595 753.651 m +314.098 755.393 315.409 755.262 317.2 755.8 c +319.2 756.4 331.4 760.2 332.2 762.8 c +333 765.4 346.2 761 Y +348 760.2 352.4 757.6 Y +357.2 756.4 363.8 756 Y +366.2 755 369.6 752.2 Y +384.2 742 396.601 749.2 Y +416.601 755.8 410.601 773 Y +407.601 782 410.801 785.4 Y +411.001 789.2 418.201 782.8 Y +420.801 778.6 421.601 773.6 Y +429.601 762.4 426.201 780.2 Y +426.401 781.2 423.601 784.8 423.601 786 c +423.601 787.2 421.801 790.6 Y +418.801 794 421.201 801 Y +423.001 814.8 420.801 813 Y +419.601 814.8 410.401 804.8 Y +408.201 801.4 402.201 799.8 Y +399.401 798 396.001 799.4 Y +393.401 799.8 387.801 792.8 Y +390.601 793 393.001 788.6 395.401 788.4 c +397.801 788.2 399.601 790.8 401.201 791.4 c +402.801 792 405.601 786.2 Y +406.001 783.6 400.401 778.8 Y +400.001 774.2 398.401 775.8 Y +395.401 776.4 394.201 772.6 393.201 768 c +392.201 763.4 388.001 763 y +386.401 755.6 385.2 758.6 Y +385 764.2 379 758.4 Y +377.8 756.4 373.2 758.6 Y +366.4 760.6 368.8 762.6 Y +370.6 764.8 381.8 762.6 Y +384 764.2 376 768.2 Y +375.4 770 376.4 774.4 Y +377.6 777.6 384.4 783.2 Y +393.801 784.4 391.001 786 Y +384.801 791.2 379 783.6 Y +376.8 777.4 359.4 762.4 Y +354.6 759 357.2 765.8 353.2 762.4 c +349.2 759 328.6 768 y +317.038 769.193 314.306 753.451 310.777 756.571 c +316.195 748.051 314.595 753.651 v +f +509.401 920 m +483.801 912 481.001 893.2 V +478.601 870.4 499.001 852.8 V +499.401 846.4 501.401 843.2 v +499.801 838.4 518.601 846 V +545.801 854.4 l +552.201 856.8 557.401 865.6 v +562.601 874.4 577.801 893.2 574.201 918.4 C +575.401 929.6 569.401 930 V +561.001 931.6 553.801 924 V +547.001 920.8 544.601 921.2 V +509.401 920 L +f +564.022 920.99 m +566.122 929.92 561.282 925.08 V +554.242 919.36 546.761 919.36 V +532.241 917.16 527.841 903.96 V +523.881 877.12 531.801 871.4 V +536.641 863.92 543.681 870.52 v +550.722 877.12 566.222 907.35 564.022 920.99 C +f +0.2 g +563.648 920.632 m +565.738 929.376 560.986 924.624 V +554.074 919.008 546.729 919.008 V +532.473 916.848 528.153 903.888 V +524.265 877.536 532.041 871.92 V +536.793 864.576 543.705 871.056 v +550.618 877.536 565.808 907.24 563.648 920.632 C +f +0.4 g +563.274 920.274 m +565.354 928.832 560.69 924.168 V +553.906 918.656 546.697 918.656 V +532.705 916.536 528.465 903.816 V +524.649 877.952 532.281 872.44 V +536.945 865.232 543.729 871.592 v +550.514 877.952 565.394 907.13 563.274 920.274 C +f +0.6 g +562.9 919.916 m +564.97 928.288 560.394 923.712 V +553.738 918.304 546.665 918.304 V +532.937 916.224 528.777 903.744 V +525.033 878.368 532.521 872.96 V +537.097 865.888 543.753 872.128 v +550.41 878.368 564.98 907.02 562.9 919.916 C +f +0.8 g +562.526 919.558 m +564.586 927.744 560.098 923.256 V +553.569 917.952 546.633 917.952 V +533.169 915.912 529.089 903.672 V +525.417 878.784 532.761 873.48 V +537.249 866.544 543.777 872.664 v +550.305 878.784 564.566 906.91 562.526 919.558 C +f +1 g +562.151 919.2 m +564.201 927.2 559.801 922.8 V +553.401 917.6 546.601 917.6 V +533.401 915.6 529.401 903.6 V +525.801 879.2 533.001 874 V +537.401 867.2 543.801 873.2 v +550.201 879.2 564.151 906.8 562.151 919.2 C +f +0.1 0.55 0.85 0.3 k +350.6 716 m +330.2 735.2 322.2 736 V +287.8 740 273 722 V +290.6 742.4 318.2 736.8 V +296.6 741.2 284.2 738 V +267.4 738 257.8 724 V +255 719.2 l +259 734 277.4 740 V +300.2 744.8 311 740 V +289.4 746.8 279.4 744.8 V +249 747.2 236.2 720.8 V +240.2 735.2 255 742.4 V +268.6 751.2 289 748.4 V +303.4 745.2 308.6 742.8 v +313.8 740.4 312.6 743.2 304.2 748 C +298.6 758 284.6 757.6 V +241.8 754 231.4 742 V +245 753.2 255.4 756 V +277.8 764 286.2 763.2 V +311 762.2 318.6 766.2 V +307.4 761.2 310.6 758 v +313.8 754.8 320.6 747.2 320.6 746 c +320.6 744.8 344.8 722.7 348.4 718.3 C +350.6 716 l +f +0.8 g +1 J 0.1 w +489 522 m +473.5 558.5 461 568 V +487 552 490.5 534 V +490.5 524 489 522 V +f +536 514.5 m +509.5 569.5 491 593.5 V +534.5 556 539.5 529.5 V +540 524 l +537 526.5 l +536.5 517.5 536 514.5 V +f +592.5 563 m +530 622.5 528.5 625 V +589 559 592 551.5 V +590 560.5 592.5 563 V +f +404 519.5 m +423.5 571.5 442.5 549 V +457.5 539 457 536 V +453 542.5 435 542 V +416 545 404 519.5 V +f +594.5 647 m +549.5 675.5 542 677 v +530.193 679.361 591.5 648 596.5 637.5 C +598.5 640 594.5 647 V +f +0 g +0 J 1 w +443.801 540.399 m +464.201 542.399 471.001 549.199 V +475.401 545.599 l +493.001 583.999 l +496.601 578.799 l +511.001 593.599 510.201 601.599 v +509.401 609.599 523.001 595.599 y +522.201 607.199 529.401 600.399 V +527.001 615.999 535.401 607.999 V +524.864 638.156 547.401 612.399 v +553.001 605.999 548.601 612.799 y +522.601 660.799 544.201 646.399 v +546.201 669.199 545.001 673.599 v +543.801 677.999 541.801 700.4 537.001 705.6 c +532.201 710.8 537.401 712.4 543.001 707.2 C +531.801 731.2 545.001 719.2 V +541.401 734.4 537.001 737.2 V +531.401 754.4 546.601 743.6 V +542.201 756 539.001 759.2 V +527.401 786.8 534.601 782 V +539.001 778.4 l +532.201 792.4 538.601 788 v +545.001 783.6 545.001 784 y +523.801 817.2 544.201 799.6 V +536.042 813.518 532.601 820.4 V +513.801 840.8 528.201 834.4 V +533.001 832.8 l +524.201 842.8 516.201 844.4 v +508.201 846 518.601 852.4 525.001 850.4 c +531.401 848.4 547.001 840.8 y +559.801 822 563.801 821.6 V +543.801 829.2 549.801 821.2 V +564.201 807.2 557.001 807.6 V +551.001 800.4 555.801 791.6 V +537.342 809.991 552.201 784.4 v +559.001 768 l +534.601 792.8 545.801 770.8 V +563.001 747.2 565.001 746.8 v +567.001 746.4 571.401 737.6 y +567.001 739.6 l +572.201 730.8 l +561.001 742.8 567.001 729.6 V +572.601 715.2 l +552.201 737.2 565.801 707.6 V +549.401 712.8 558.201 695.6 V +556.601 679.599 557.001 674.399 v +557.401 669.199 558.601 640.799 554.201 632.799 c +549.801 624.799 560.201 605.599 562.201 601.599 c +564.201 597.599 567.801 586.799 559.001 595.999 c +550.201 605.199 554.601 599.599 556.601 590.799 c +558.601 581.999 564.601 566.399 563.801 560.799 C +562.601 559.599 559.401 563.199 V +544.601 585.999 546.201 571.599 V +545.001 563.599 541.801 554.799 V +538.601 543.999 538.601 552.799 V +535.401 569.599 532.601 561.999 v +529.801 554.399 526.201 548.399 523.401 545.999 c +520.601 543.599 515.401 566.399 514.201 555.999 C +502.201 568.399 497.401 551.999 V +485.801 535.599 l +485.401 547.999 484.201 541.999 V +454.201 535.999 443.801 540.399 V +f +409.401 897.2 m +397.801 905.2 393.801 904.8 v +389.801 904.4 421.401 913.6 462.601 886 C +467.401 883.2 471.001 883.6 V +474.201 881.2 471.401 877.6 V +462.601 868 473.801 856.8 V +492.201 850 486.601 858.8 V +497.401 854.8 499.801 850.8 v +502.201 846.8 501.001 850.8 y +494.601 858 488.601 863.2 V +483.401 865.2 480.601 873.6 v +477.801 882 475.401 892 479.801 895.2 C +475.801 890.8 476.601 894.8 v +477.401 898.8 481.001 902.4 482.601 902.8 c +484.201 903.2 500.601 919 507.401 919.4 C +498.201 918 495.201 919 v +492.201 920 465.601 931.4 459.601 932.6 C +442.801 939.2 454.801 937.2 V +490.601 933.4 508.801 920.2 V +501.601 928.6 483.201 935.6 V +461.001 948.2 425.801 943.2 V +408.001 940 400.201 938.2 V +397.601 938.8 397.001 939.2 v +396.401 939.6 384.6 948.6 357 941.6 C +340 937 331.4 932.2 V +316.2 931 312.6 927.8 V +294 913.2 292 912.4 v +290 911.6 278.6 904 277.8 903.6 C +302.4 910.2 304.8 912.6 v +307.2 915 324.6 917.6 327 916.2 c +329.4 914.8 337.8 915.4 328.2 914.8 C +403.801 900 404.601 898 v +405.401 896 409.401 897.2 y +f +0.2 0.55 0.85 0 k +480.801 906.4 m +470.601 913.8 468.601 913.8 v +466.601 913.8 454.201 924 450.001 923.6 c +445.801 923.2 433.601 933.2 406.201 925 C +405.601 927 409.201 927.8 V +415.601 930 416.001 930.6 V +436.201 934.8 443.401 931.2 V +452.601 928.6 458.801 922.4 V +470.001 919.2 473.201 920.2 V +482.001 918 482.401 916.2 V +488.201 913.2 486.401 910.6 V +486.801 909 480.801 906.4 V +f +468.33 908.509 m +469.137 907.877 470.156 907.779 470.761 906.97 c +470.995 906.656 470.706 906.33 470.391 906.233 c +469.348 905.916 468.292 906.486 467.15 905.898 c +466.748 905.691 466.106 905.873 465.553 906.022 c +463.921 906.463 462.092 906.488 460.401 905.8 C +458.416 906.929 456.056 906.345 453.975 907.346 c +453.917 907.373 453.695 907.027 453.621 907.054 c +450.575 908.199 446.832 907.916 444.401 910.2 C +441.973 910.612 439.616 911.074 437.188 911.754 c +435.37 912.263 433.961 913.252 432.341 914.084 c +430.964 914.792 429.507 915.314 427.973 915.686 c +426.11 916.138 424.279 916.026 422.386 916.546 c +422.293 916.571 422.101 916.227 422.019 916.254 c +421.695 916.362 421.405 916.945 421.234 916.892 c +419.553 916.37 418.065 917.342 416.401 917 C +415.223 918.224 413.495 917.979 411.949 918.421 c +408.985 919.269 405.831 917.999 402.801 919 C +406.914 920.842 411.601 919.61 415.663 921.679 c +417.991 922.865 420.653 921.763 423.223 922.523 c +423.71 922.667 424.401 922.869 424.801 922.2 C +424.935 922.335 425.117 922.574 425.175 922.546 c +427.625 921.389 429.94 920.115 432.422 919.049 c +432.763 918.903 433.295 919.135 433.547 918.933 c +435.067 917.717 437.01 917.82 438.401 916.6 C +440.099 917.102 441.892 916.722 443.621 917.346 c +443.698 917.373 443.932 917.032 443.965 917.054 c +445.095 917.802 446.25 917.531 447.142 917.227 c +447.48 917.112 448.143 916.865 448.448 916.791 c +449.574 916.515 450.43 916.035 451.609 915.852 c +451.723 915.834 451.908 916.174 451.98 916.146 c +453.103 915.708 454.145 915.764 454.801 914.6 C +454.936 914.735 455.101 914.973 455.183 914.946 c +456.21 914.608 456.859 913.853 457.96 913.612 c +458.445 913.506 459.057 912.88 459.633 912.704 c +462.025 911.973 463.868 910.444 466.062 909.549 c +466.821 909.239 467.697 909.005 468.33 908.509 c +f +391.696 922.739 m +389.178 924.464 386.81 925.57 384.368 927.356 c +384.187 927.489 383.827 927.319 383.625 927.441 c +382.618 928.05 381.73 928.631 380.748 929.327 c +380.209 929.709 379.388 929.698 378.88 929.956 c +376.336 931.248 373.707 931.806 371.2 933 C +371.882 933.638 373.004 933.394 373.6 934.2 C +373.795 933.92 374.033 933.636 374.386 933.827 c +376.064 934.731 377.914 934.884 379.59 934.794 c +381.294 934.702 383.014 934.397 384.789 934.125 c +385.096 934.078 385.295 933.555 385.618 933.458 c +387.846 932.795 390.235 933.32 392.354 932.482 c +393.945 931.853 395.515 931.03 396.754 929.755 c +397.006 929.495 396.681 929.194 396.401 929 C +396.789 929.109 397.062 928.903 397.173 928.59 c +397.257 928.351 397.257 928.049 397.173 927.81 c +397.061 927.498 396.782 927.397 396.408 927.346 c +395.001 927.156 396.773 928.536 396.073 928.088 c +394.8 927.274 395.546 925.868 394.801 924.6 C +394.521 924.794 394.291 925.012 394.401 925.4 C +394.635 924.878 394.033 924.588 393.865 924.272 c +393.48 923.547 392.581 922.132 391.696 922.739 c +f +359.198 915.391 m +356.044 916.185 352.994 916.07 349.978 917.346 c +349.911 917.374 349.688 917.027 349.624 917.054 c +348.258 917.648 347.34 918.614 346.264 919.66 c +345.351 920.548 343.693 920.161 342.419 920.648 c +342.095 920.772 341.892 921.284 341.591 921.323 c +340.372 921.48 339.445 922.429 338.4 923 C +340.736 923.795 343.147 923.764 345.609 924.148 c +345.722 924.166 345.867 923.845 346 923.845 c +346.136 923.845 346.266 924.066 346.4 924.2 C +346.595 923.92 346.897 923.594 347.154 923.848 c +347.702 924.388 348.258 924.198 348.798 924.158 c +348.942 924.148 349.067 923.845 349.2 923.845 c +349.336 923.845 349.467 924.156 349.6 924.156 c +349.736 924.155 349.867 923.845 350 923.845 c +350.136 923.845 350.266 924.066 350.4 924.2 C +351.092 923.418 351.977 923.972 352.799 923.793 c +353.837 923.566 354.104 922.418 355.178 922.12 c +359.893 920.816 364.03 918.671 368.393 916.584 c +368.7 916.437 368.91 916.189 368.8 915.8 C +369.067 915.8 369.38 915.888 369.57 915.756 c +370.628 915.024 371.669 914.476 372.366 913.378 c +372.582 913.039 372.253 912.632 372.02 912.684 c +367.591 913.679 363.585 914.287 359.198 915.391 c +f +345.338 871.179 m +343.746 872.398 343.162 874.429 342.034 876.221 c +341.82 876.561 342.094 876.875 342.411 876.964 c +342.971 877.123 343.514 876.645 343.923 876.443 c +345.668 875.581 347.203 874.339 349.2 874.2 C +351.19 871.966 355.45 871.581 355.457 868.2 c +355.458 867.341 354.03 868.259 353.6 867.4 C +351.149 868.403 348.76 868.3 346.38 869.767 c +345.763 870.148 346.093 870.601 345.338 871.179 c +f +317.8 923.756 m +317.935 923.755 324.966 923.522 324.949 923.408 c +324.904 923.099 317.174 922.05 316.81 922.22 c +316.646 922.296 309.134 919.866 309 920 C +309.268 920.135 317.534 923.756 317.8 923.756 c +f +0 g +333.2 914 m +318.4 912.2 314 911 v +309.6 909.8 291 902.2 288 900.2 C +274.6 894.8 257.6 874.8 V +265.2 878.2 267.4 881 V +281 893.6 280.8 891 V +293 899.6 292.4 897.4 V +316.8 908.6 314.8 905.4 V +336.4 910 335.4 908 V +354.2 903.6 351.4 903.4 V +345.6 902.2 352 898.6 V +348.6 894.2 343.2 898.2 v +337.8 902.2 340.8 900 335.8 899 C +333.2 898.2 328.6 902.2 V +323 906.8 314.2 903.2 V +283.6 890.6 281.6 890 V +278 887.2 275.6 883.6 V +269.8 879.2 266.8 877.8 V +254 866.2 252.8 864.8 V +249.4 859.6 248.6 859.2 V +255 863 257 865 V +271 875 276.4 875.8 V +280.8 878.8 281.6 880.2 V +296 889.4 300.2 889.4 V +309.4 884.2 311.8 891.2 V +317.6 893 323.2 891.8 V +326.4 894.4 325.6 896.6 V +327.2 898.4 328.2 894.6 V +331.6 891 336.4 893 V +340.4 893.2 338.4 890.8 V +334 887 322.2 886.8 V +309.8 886.2 293.4 878.6 V +263.6 868.2 254.4 857.8 V +248 849 242.6 847.8 V +236.8 847 230.8 839.6 V +240.6 845.4 249.6 845.4 V +253.6 847.8 249.8 844.2 V +246.2 836.6 247.8 831.2 V +247.2 826 246.4 824.4 V +238.6 811.6 238.6 809.2 v +238.6 806.8 239.8 797 240.2 796.4 c +240.6 795.8 239.2 798 243 795.6 c +246.8 793.2 249.6 791.6 250.4 788.8 c +251.2 786 248.4 794.2 248.2 796 c +248 797.8 243.8 805 244.6 807.4 C +245.6 806.4 246.4 805 V +245.8 805.6 246.4 809.2 V +247.2 814.4 248.6 817.6 v +250 820.8 252 824.6 252.4 825.4 c +252.8 826.2 252.8 832 254.2 829.4 C +257.6 826.8 l +254.8 829.4 257 831.6 V +256 837.2 257.8 839.8 V +264.8 848.2 266.4 849.2 v +268 850.2 266.6 849.8 y +272.6 854 266.8 852.4 V +262.8 850.8 259.8 850.8 V +252.2 848.8 256.2 853 v +260.2 857.2 270.2 862.6 274 862.4 C +274.8 860.8 l +286 863.2 l +284.8 862.4 l +284.6 862.6 288.8 863 v +293 863.4 298.8 862 300.2 863.8 c +301.6 865.6 305 866.6 304.6 865.2 c +304.2 863.8 304 861.8 y +309 867.6 308.4 865.4 v +307.8 863.2 299.6 858 298.2 851.8 C +308.6 860 l +312.2 863 l +315.8 860.8 316 862.4 v +316.2 864 320.8 869.8 322 869.6 c +323.2 869.4 325.2 872.2 325 869.6 c +324.8 867 332.4 861.6 y +335.6 863.4 337 862 v +338.4 860.6 342.6 881.8 y +367.6 892.4 l +411.201 895.8 l +394.201 902.6 l +333.2 914 l +f +0.2 0.55 0.85 0.5 K +1 J 2 w +351.4 715 m +336.4 731.8 328 734.4 V +314.6 741.2 290 733.4 v +S +324.8 735.8 m +299.6 743.8 284.2 739.6 V +265.8 737.6 257.4 723.8 v +S +321.2 737 m +304.2 744.2 289.4 746.4 V +272.8 749 256.2 741.8 V +244 735.8 238.6 725.6 v +S +322.2 736.6 m +306.8 747.6 305.8 749 V +298.8 760 285.8 760.4 V +264.4 759.6 247.2 751.6 v +S +0 G +0 J 1 w +320.895 745.593 m +322.437 744.13 349.4 715.2 Y +384.6 678.599 356.6 712.8 Y +349 717.6 339.8 736.4 Y +338.6 739.2 353.8 729.2 Y +357.8 728.4 371.4 709.2 Y +364.6 711.6 369.4 704.4 Y +372.2 702.4 392.601 686.799 Y +396.201 682.799 400.201 681.199 Y +414.201 686.399 407.801 673.199 Y +410.201 666.399 415.801 677.999 Y +427.001 694.8 410.601 692.399 Y +380.6 689.599 373.8 705.6 Y +371.4 708 380.2 705.6 Y +388.601 703.6 373 718 Y +375.4 718 384.6 711.2 Y +395.001 702 397.001 704 Y +415.001 712.8 425.401 705.2 Y +427.401 703.6 421.801 696.8 423.401 691.599 c +425.001 686.399 429.801 673.999 Y +427.401 672.399 427.801 661.599 Y +444.601 638.399 435.001 640.399 Y +419.401 640.799 434.201 633.199 Y +437.401 631.199 446.201 623.999 Y +443.401 625.199 441.801 619.999 Y +446.601 615.999 443.801 611.199 Y +437.801 609.999 436.601 605.999 Y +443.401 597.999 433.401 597.599 Y +437.001 593.199 432.201 581.199 Y +427.401 581.199 421.001 575.599 Y +423.401 570.799 413.001 565.199 Y +404.601 563.599 407.401 556.799 Y +399.401 550.799 397.001 534.799 Y +396.201 524.399 393.801 521.199 399.001 523.199 c +404.201 525.199 403.401 537.599 Y +398.601 553.199 441.401 569.199 Y +445.401 570.799 446.201 575.999 Y +448.201 575.599 457.001 567.999 Y +464.601 556.799 465.001 565.999 Y +466.201 569.599 464.601 575.599 Y +470.601 597.199 456.601 603.599 Y +446.601 637.199 460.601 628.799 Y +463.401 623.199 474.201 617.999 y +477.801 620.399 L +476.201 625.199 484.601 631.199 Y +487.401 624.799 493.401 632.799 Y +497.001 657.199 509.401 642.799 Y +513.401 641.599 514.601 648.399 Y +518.201 658.799 514.601 672.399 Y +518.201 672.799 527.801 666.799 Y +530.601 670.399 521.401 687.199 525.401 684.799 c +529.401 682.399 533.801 680.799 Y +534.601 682.799 524.601 695.199 Y +520.201 698 515.001 718.4 Y +522.201 714.8 512.201 730 Y +512.201 733.2 518.201 744.4 Y +517.401 751.2 518.201 750.8 Y +521.001 749.6 529.001 748 522.201 754.4 c +515.401 760.8 523.001 765.6 Y +527.401 768.4 513.801 768 Y +508.601 772.4 509.001 776.4 Y +517.001 774.4 502.601 788.8 500.201 792.4 c +497.801 796 507.401 801.2 Y +520.601 804.8 509.001 808 Y +489.401 807.6 500.201 818.4 Y +506.201 818 504.601 820.4 Y +499.401 821.6 489.801 828 Y +485.801 831.6 489.401 830.8 Y +506.201 829.6 477.401 840.8 Y +485.401 840.8 467.401 851.2 Y +465.401 852.8 462.201 860.4 Y +456.201 865.6 451.401 872.4 Y +451.001 876.8 446.201 881.6 Y +434.601 895.2 429.001 894.8 Y +414.201 898.4 409.001 897.6 Y +356.2 893.2 l +329.8 880.4 337.6 859.4 Y +344 851 353.2 854.8 Y +357.8 861 369.4 858.8 Y +389.801 855.6 387.201 859.2 Y +384.801 863.8 368.6 870 368.4 870.6 c +368.2 871.2 359.4 874.6 Y +356.4 875.8 352 885 Y +348.8 888.4 364.6 882.6 Y +363.4 881.6 370.8 877.6 Y +388.201 878.6 398.801 867.8 Y +409.601 851.2 409.801 859.4 Y +412.601 868.8 400.801 890 Y +401.201 892 409.401 885.4 Y +410.801 887.4 411.601 881.6 Y +411.801 879.2 415.601 871.2 Y +418.401 858.2 422.001 865.6 Y +426.601 856.2 L +428.001 853.6 422.001 846 Y +421.801 843.2 422.601 843.4 417.001 835.8 c +411.401 828.2 414.801 823.8 Y +413.401 817.2 422.201 817.6 Y +424.801 815.4 428.201 815.4 Y +430.001 813.4 432.401 814 Y +434.001 817.8 440.201 815.8 Y +441.601 818.2 449.801 818.6 Y +450.801 821.2 451.201 822.8 454.601 823.4 c +458.001 824 433.401 867 Y +439.801 867.8 431.601 880.2 Y +429.401 886.8 440.801 872.2 443.001 870.8 c +445.201 869.4 446.201 867.2 444.601 867.4 c +443.001 867.6 441.201 865.4 442.601 865.2 c +444.001 865 457.001 850 460.401 839.8 c +463.801 829.6 469.801 825.6 476.001 819.6 c +482.201 813.6 481.401 789.4 Y +481.001 780.6 487.001 770 Y +489.001 766.2 484.801 748 Y +482.801 745.8 484.201 745 Y +485.201 743.8 492.001 730.6 Y +490.201 730.8 493.801 727.2 Y +499.001 721.2 492.601 724.2 Y +486.601 725.8 493.601 716 Y +494.801 714.2 485.801 718.8 Y +476.601 719.4 488.201 712.2 Y +496.801 705 485.401 709.4 Y +480.801 711.2 484.001 704.4 Y +487.201 702.8 504.401 695.8 Y +504.801 691.999 501.801 686.999 Y +502.201 682.999 500.001 679.599 Y +498.801 671.399 498.201 670.599 Y +494.001 670.399 486.601 656.599 Y +484.801 653.999 474.601 641.999 Y +472.601 634.999 454.601 642.199 Y +448.001 638.799 450.001 642.199 Y +449.601 644.399 454.401 650.399 Y +461.401 652.999 458.801 663.799 Y +462.801 665.199 451.601 667.999 451.801 669.199 c +452.001 670.399 457.801 671.799 Y +465.801 673.799 461.401 676.199 Y +460.801 680.199 463.801 685.799 Y +475.401 686.599 463.801 702.8 Y +453.001 710.4 452.001 716.2 Y +464.601 724.4 456.401 736.8 456.601 740.4 c +456.801 744 458.001 765.6 Y +456.001 771.8 453.001 785.4 Y +455.201 790.6 462.601 803.2 Y +465.401 807.4 474.201 812.2 472.001 815.2 c +469.801 818.2 462.001 816.4 Y +454.201 817.8 454.801 812.6 Y +453.201 811.6 452.401 806.6 Y +451.68 798.667 442.801 792.4 Y +431.601 786.2 440.801 782.2 Y +446.801 775.6 437.001 775.4 Y +426.001 777.2 434.201 767 Y +445.001 754.2 442.001 751.4 Y +431.801 750.4 444.401 741.2 y +443.601 743.2 443.801 741.4 v +444.001 739.6 447.001 735.4 447.801 733.4 c +448.601 731.4 444.601 731.2 Y +445.201 721.6 429.801 725.8 y +429.801 725.8 428.201 725.6 v +426.601 725.4 415.401 726.2 409.601 728.4 c +403.801 730.6 397.001 730.6 y +393.001 728.8 385.4 729 v +377.8 729.2 369.8 726.4 Y +365.4 726.8 374 731.2 374.2 731 c +374.4 730.8 380 736.4 372 735.8 c +350.203 734.165 339.4 744.4 Y +337.4 745.8 334.8 748.6 Y +324.8 750.6 336.2 736.2 Y +337.4 734.8 336 733.8 Y +335.2 735.4 327.4 740.8 Y +324.589 741.773 323.226 743.107 320.895 745.593 C +f +0.2 0.55 0.85 0.5 k +1 J 2 w +297 757.2 m +308.6 751.6 311.2 748.8 v +313.8 746 327.8 734.6 y +322.4 736.6 319.8 738.4 v +317.2 740.2 306.4 748.4 y +302.6 754.4 297 757.2 v +f +0.4 0.2 0.8 0 k +0 J 1 w +238.991 788.397 m +239.328 788.545 238.804 791.257 238.6 791.8 c +237.578 794.526 228.6 796 y +228.373 794.635 228.318 793.039 228.424 791.401 c +233.292 785.882 238.991 788.397 v +f +0.4 0.2 0.8 0.2 k +238.991 788.597 m +238.542 788.439 238.976 791.331 238.8 791.8 c +237.778 794.526 228.6 796.1 y +228.373 794.735 228.318 793.139 228.424 791.501 c +232.692 786.382 238.991 788.597 v +f +0 g +234.6 788.454 m +233.975 788.454 233.469 789.594 233.469 791 c +233.469 792.405 233.975 793.545 234.6 793.545 c +235.225 793.545 235.732 792.405 235.732 791 c +235.732 789.594 235.225 788.454 234.6 788.454 c +f +234.6 791 m +F +189 690.399 m +183.4 680.399 208.2 686.399 V +222.2 687.599 224.6 689.999 V +225.8 689.199 234.166 686.266 237 685.599 c +243.8 683.999 252.2 694 y +256.8 704.5 259.6 704.5 v +262.4 704.5 259.2 702.9 y +252.6 692.799 253 691.199 V +247.8 671.199 231.8 670.399 V +215.65 669.449 217 663.599 V +225.8 665.999 228.2 663.599 V +239 663.999 231 657.599 V +224.2 645.999 l +224.34 642.081 214.2 645.599 v +204.4 648.999 194.1 661.899 y +178.15 676.449 189 690.399 V +f +0.1 0.4 0.4 0 k +187.8 686.399 m +185.8 676.799 222.6 687.199 V +227 687.199 229.4 686.399 v +231.8 685.599 243.8 682.799 245.8 683.999 C +238.6 670.399 227 671.999 V +213.8 670.399 214.2 665.599 V +218.2 658.399 223 655.999 V +225.8 653.599 225.4 650.399 v +225 647.199 222.2 645.599 220.2 644.799 c +218.2 643.999 215 647.199 213.4 647.199 c +211.8 647.199 203.4 653.599 199 658.399 c +194.6 663.199 186.2 675.199 186.6 677.999 c +187 680.799 187.8 686.399 Y +f +0.1 0.4 0.4 0.2 k +191 668.949 m +193.6 664.999 196.8 660.799 199 658.399 c +203.4 653.599 211.8 647.199 213.4 647.199 c +215 647.199 218.2 643.999 220.2 644.799 c +222.2 645.599 225 647.199 225.4 650.399 c +225.8 653.599 223 655.999 Y +219.934 657.532 217.194 661.024 215.615 663.347 C +215.8 660.799 210.6 661.599 v +205.4 662.399 200.2 665.199 198.6 668.399 c +197 671.599 194.6 673.999 196.2 670.399 c +197.8 666.799 200.2 663.199 201.8 662.799 c +203.4 662.399 203 661.199 200.6 661.599 c +198.2 661.999 195.4 662.399 191 667.599 c +F +0.1 0.55 0.85 0.3 k +188.4 689.999 m +190.2 703.6 191.4 707.6 V +190.6 714.4 193 718.6 v +195.4 722.8 197.4 729 200.4 734.4 c +203.4 739.8 203.6 743.8 207.6 745.4 c +211.6 747 217.6 755.6 220.4 756.6 c +223.2 757.6 223 756.8 y +229.8 771.6 243.4 767.6 V +227.2 770.4 243 779.8 V +238.2 778.7 241.5 785.7 v +243.701 790.368 243.2 783.6 232.2 771.8 C +227.2 763.2 222 760.2 v +216.8 757.2 204.8 750.2 203.6 746.4 c +202.4 742.6 199.2 736.8 197.2 735.2 c +195.2 733.6 192.4 729.4 192 726 C +190.8 722 189.4 720.8 v +188 719.6 187.8 716.4 187.8 714.4 c +187.8 712.4 185.8 709.6 186 707.2 C +186.8 688.199 186.4 686.199 V +188.4 689.999 L +f +1 g +179.8 685.399 m +177.8 686.799 173.4 680.799 V +180.7 647.799 180.7 646.399 V +181.8 648.499 180.5 655.699 v +179.2 662.899 178.3 675.599 y +179.8 685.399 l +f +0.1 0.55 0.85 0.3 k +201.4 746 m +183.8 742.8 184.2 713.6 V +183.4 688.799 l +182.2 714.4 181 716 v +179.8 717.6 183.8 728.8 180.6 722.8 C +166.6 708.8 174.6 687.599 V +176.1 684.299 173.1 688.899 V +168.5 701.5 169.6 707.9 V +169.8 710.1 171.7 712.9 V +180.3 724.6 183 726.9 V +184.8 741.3 200.2 746.5 V +205.9 748.8 201.4 746 V +f +0 g +340.8 812.2 m +341.46 812.554 341.451 813.524 342.031 813.697 c +343.18 814.041 343.344 815.108 343.862 815.892 c +344.735 817.211 344.928 818.744 345.51 820.235 c +345.782 820.935 345.809 821.89 345.496 822.55 c +344.322 825.031 343.62 827.48 342.178 829.906 c +341.91 830.356 341.648 831.15 341.447 831.748 c +340.984 833.132 339.727 834.123 338.867 835.443 c +338.579 835.884 339.104 836.809 338.388 836.893 c +337.491 836.998 336.042 837.578 335.809 836.552 c +335.221 833.965 336.232 831.442 337.2 829 C +336.418 828.308 336.752 827.387 336.904 826.62 c +337.614 823.014 336.416 819.662 335.655 816.188 c +335.632 816.084 335.974 815.886 335.946 815.824 c +334.724 813.138 333.272 810.693 331.453 808.312 c +330.695 807.32 329.823 806.404 329.326 805.341 c +328.958 804.554 328.55 803.588 328.8 802.6 C +325.365 799.82 323.115 795.975 320.504 792.129 c +320.042 791.449 320.333 790.24 320.884 789.971 c +321.697 789.573 322.653 790.597 323.123 791.443 c +323.512 792.141 323.865 792.791 324.356 793.434 c +324.489 793.609 324.31 794.028 324.445 794.149 c +327.078 796.496 328.747 799.432 331.2 801.8 C +333.15 802.129 334.687 803.127 336.435 804.14 c +336.743 804.319 337.267 804.07 337.557 804.265 c +339.31 805.442 339.308 807.478 339.414 809.388 c +339.464 810.272 339.66 811.589 340.8 812.2 c +f +331.959 816.666 m +332.083 816.743 331.928 817.166 332.037 817.382 c +332.199 817.706 332.602 817.894 332.764 818.218 c +332.873 818.434 332.71 818.814 332.846 818.956 c +335.179 821.403 335.436 824.427 334.4 827.4 C +335.424 828.02 335.485 829.282 335.06 830.129 c +334.207 831.829 334.014 833.755 333.039 835.298 c +332.237 836.567 330.659 837.811 329.288 836.508 c +328.867 836.108 328.546 835.321 328.824 834.609 c +328.888 834.446 329.173 834.3 329.146 834.218 c +329.039 833.894 328.493 833.67 328.487 833.398 c +328.457 831.902 327.503 830.391 328.133 829.062 c +328.905 827.433 329.724 825.576 330.4 823.8 C +329.166 821.684 330.199 819.235 328.446 817.358 c +328.31 817.212 328.319 816.826 328.441 816.624 c +328.733 816.138 329.139 815.732 329.625 815.44 c +329.827 815.319 330.175 815.317 330.375 815.441 c +330.953 815.803 331.351 816.29 331.959 816.666 c +f +394.771 826.977 m +396.16 825.185 396.45 822.39 394.401 821 C +394.951 817.691 398.302 819.67 400.401 820.2 C +400.292 820.588 400.519 820.932 400.802 820.937 c +401.859 820.952 402.539 821.984 403.601 821.8 C +404.035 823.357 405.673 824.059 406.317 825.439 c +408.043 829.134 407.452 833.407 404.868 836.653 c +404.666 836.907 404.883 837.424 404.759 837.786 c +404.003 839.997 401.935 840.312 400.001 841 C +398.824 844.875 398.163 848.906 396.401 852.6 C +394.787 852.85 394.089 854.589 392.752 855.309 c +391.419 856.028 390.851 854.449 390.892 853.403 c +390.899 853.198 391.351 852.974 391.181 852.609 c +391.105 852.445 390.845 852.334 390.845 852.2 c +390.846 852.065 391.067 851.934 391.201 851.8 C +390.283 850.98 388.86 850.503 388.565 849.358 c +387.611 845.648 390.184 842.523 391.852 839.322 c +392.443 838.187 391.707 836.916 390.947 835.708 c +390.509 835.013 390.617 833.886 390.893 833.03 c +391.645 830.699 393.236 828.96 394.771 826.977 c +f +357.611 808.591 m +356.124 806.74 352.712 804.171 355.629 802.243 c +355.823 802.114 356.193 802.11 356.366 802.244 c +358.387 803.809 360.39 804.712 362.826 805.294 c +362.95 805.323 363.224 804.856 363.593 805.017 c +365.206 805.72 367.216 805.662 368.4 807 C +372.167 806.776 375.732 807.892 379.123 809.2 c +380.284 809.648 381.554 810.207 382.755 810.709 c +384.131 811.285 385.335 812.213 386.447 813.354 c +386.58 813.49 386.934 813.4 387.201 813.4 C +387.161 814.263 388.123 814.39 388.37 815.012 c +388.462 815.244 388.312 815.64 388.445 815.742 c +390.583 817.372 391.503 819.39 390.334 821.767 c +390.049 822.345 389.8 822.963 389.234 823.439 c +388.149 824.35 387.047 823.496 386 823.8 C +385.841 823.172 385.112 823.344 384.726 823.146 c +383.867 822.707 382.534 823.292 381.675 822.854 c +380.313 822.159 379.072 821.99 377.65 821.613 c +377.338 821.531 376.56 821.627 376.4 821 C +376.266 821.134 376.118 821.368 376.012 821.346 c +374.104 820.95 372.844 820.736 371.543 819.044 c +371.44 818.911 370.998 819.09 370.839 818.955 c +369.882 818.147 369.477 816.913 368.376 816.241 c +368.175 816.118 367.823 816.286 367.629 816.157 c +366.983 815.726 366.616 815.085 365.974 814.638 c +365.645 814.409 365.245 814.734 365.277 814.99 c +365.522 816.937 366.175 818.724 365.6 820.6 C +367.677 823.12 370.194 825.069 372 827.8 C +372.015 829.966 372.707 832.112 372.594 834.189 c +372.584 834.382 372.296 835.115 372.17 835.462 c +371.858 836.316 372.764 837.382 371.92 838.106 c +370.516 839.309 369.224 838.433 368.4 837 C +366.562 836.61 364.496 835.917 362.918 837.151 c +361.911 837.938 361.333 838.844 360.534 839.9 c +359.549 841.202 359.884 842.638 359.954 844.202 c +359.96 844.33 359.645 844.466 359.645 844.6 c +359.646 844.735 359.866 844.866 360 845 C +359.294 845.626 359.019 846.684 358 847 C +358.305 848.092 357.629 848.976 356.758 849.278 c +354.763 849.969 353.086 848.057 351.194 847.984 c +350.68 847.965 350.213 849.003 349.564 849.328 c +349.132 849.544 348.428 849.577 348.066 849.311 c +347.378 848.807 346.789 848.693 346.031 848.488 c +344.414 848.052 343.136 846.958 341.656 846.103 c +340.171 845.246 339.216 843.809 338.136 842.489 c +337.195 841.337 337.059 838.923 338.479 838.423 c +340.322 837.773 341.626 840.476 343.592 840.15 c +343.904 840.099 344.11 839.788 344 839.4 C +344.389 839.291 344.607 839.52 344.8 839.8 C +345.658 838.781 346.822 838.444 347.76 837.571 c +348.73 836.667 350.476 837.085 351.491 836.088 c +353.02 834.586 352.461 831.905 354.4 830.6 C +353.814 829.287 353.207 828.01 352.872 826.583 c +352.59 825.377 353.584 824.18 354.795 824.271 c +356.053 824.365 356.315 825.124 356.8 826.2 C +357.067 825.933 357.536 825.636 357.495 825.42 c +357.038 823.033 356.011 821.04 355.553 818.609 c +355.494 818.292 355.189 818.09 354.8 818.2 C +354.332 814.051 350.28 811.657 347.735 808.492 c +347.332 807.99 347.328 806.741 347.737 806.338 c +349.14 804.951 351.1 806.497 352.8 807 C +353.013 808.206 353.872 809.148 355.204 809.092 c +355.46 809.082 355.695 809.624 356.019 809.754 c +356.367 809.892 356.869 809.668 357.155 809.866 c +358.884 811.061 360.292 812.167 362.03 813.356 c +362.222 813.487 362.566 813.328 362.782 813.436 c +363.107 813.598 363.294 813.985 363.617 814.17 c +363.965 814.37 364.207 814.08 364.4 813.8 C +363.754 813.451 363.75 812.494 363.168 812.292 c +362.393 812.024 361.832 811.511 361.158 811.064 c +360.866 810.871 360.207 811.119 360.103 810.94 c +359.505 809.912 358.321 809.474 357.611 808.591 c +f +302.2 858 m +292.962 860.872 281.8 835.2 V +279.4 830 277 828 v +274.6 826 263.4 822.4 261.4 818.4 C +251 802.4 L +265.8 818.4 269 820.8 V +277 829.2 273.8 822.4 V +259.8 811.6 261 802.4 V +255.4 788 254.6 786 V +270.6 818 273 819.2 v +275.4 820.4 276.6 820.4 275.4 816.8 c +274.2 813.2 273.8 796.8 271 794.8 C +279 815.2 278.2 818.4 V +281.4 822 283.8 816.8 V +282.6 800.8 l +287 788.8 l +284.6 800 286.2 815.6 V +284.2 826 288.2 820.4 v +292.2 814.8 301.8 808.8 301.8 804 C +296.6 821.6 287.4 826.4 V +283.4 820.4 l +282.2 822.4 l +278.6 823.2 283 830 v +287.4 836.8 287 837.6 y +293.4 830.4 295 830.4 V +308.2 838 309.4 813.6 V +316.2 828 307 834.8 V +292.2 836.8 293.4 842 V +300.6 854.4 L +304.2 859.6 302.6 856.8 y +F +282.2 841.6 m +269.4 841.6 266.2 836.4 V +259 826.8 l +276.2 836.8 280.2 838 v +284.2 839.2 282.2 841.6 Y +f +242.2 835.2 m +240.2 834 239.8 831.2 v +239.4 828.4 237 828 237.8 825.2 c +238.6 822.4 240.6 820 240.6 824 c +240.6 828 242.2 830 243 831.2 c +243.8 832.4 245.4 836.8 242.2 835.2 c +f +233.4 774 m +225 778 221.8 781.6 v +218.6 785.2 219.052 780.034 214.2 780.4 c +208.353 780.841 209.4 796.8 y +205.4 789.2 l +204.2 774.8 212.2 777.2 v +216.107 778.372 217.4 776.8 215.8 776 c +214.2 775.2 221.4 774.8 218.6 773.2 c +215.8 771.6 230.2 776.8 227.8 766.4 C +233.4 774 L +f +220.8 759.6 m +205.4 755.2 201.8 764.8 V +197 762.4 199.2 759.4 v +201.4 756.4 202.6 756 y +208 754.8 207.4 754 v +206.8 753.2 204.4 749.8 y +214.6 755.8 220.8 759.6 v +f +1 g +449.201 681.399 m +448.774 679.265 447.103 678.464 445.201 677.799 C +443.284 678.757 440.686 681.863 438.801 679.799 C +438.327 680.279 437.548 680.339 437.204 681.001 c +436.739 681.899 437.011 682.945 436.669 683.743 c +436.124 685.015 435.415 686.381 435.601 687.799 C +437.407 688.511 438.002 690.417 437.528 692.18 c +437.459 692.437 437.03 692.634 437.23 692.983 c +437.416 693.306 437.734 693.533 438.001 693.8 C +437.866 693.665 437.721 693.432 437.61 693.452 c +437 693.558 437.124 694.195 437.254 694.582 c +437.839 696.328 439.853 696.592 441.201 695.4 C +441.457 695.965 441.966 695.771 442.401 695.8 C +442.351 696.379 442.759 696.906 442.957 697.326 c +443.475 698.424 445.104 697.318 445.901 697.93 c +446.977 698.755 448.04 699.454 449.118 698.851 c +450.927 697.838 452.636 696.626 453.835 694.885 c +454.41 694.051 454.65 692.77 454.592 691.812 c +454.554 691.165 453.173 691.517 452.83 690.588 c +452.185 688.84 454.016 688.321 454.772 686.983 c +454.97 686.634 454.706 686.33 454.391 686.232 c +453.98 686.104 453.196 686.293 453.334 685.84 c +454.306 682.647 451.55 681.969 449.201 681.399 C +f +439.6 661.799 m +439.593 663.537 437.992 665.293 439.201 666.999 C +439.336 666.865 439.467 666.644 439.601 666.644 c +439.736 666.644 439.867 666.865 440.001 666.999 C +441.496 664.783 445.148 663.855 445.006 661.009 c +444.984 660.562 443.897 659.644 444.801 658.999 C +442.988 657.651 442.933 655.281 442.001 653.399 C +440.763 653.685 439.551 654.048 438.401 654.599 C +438.753 656.085 438.636 657.769 439.456 659.089 c +439.89 659.787 439.603 660.866 439.6 661.799 c +f +0.8 g +273.4 670.799 m +256.542 660.663 270.6 675.999 v +279.4 685.599 289.4 691.199 y +299.8 695.6 303.4 696.8 v +307 698 322.2 703.2 325.4 703.6 c +328.6 704 338.2 708 345 704 c +351.8 700 359.8 695.6 y +343.4 704 339.8 701.6 v +336.2 699.2 329 699.6 323 696.4 C +308.2 691.999 305 689.999 v +301.8 687.999 291.4 676.399 289.8 677.199 c +288.2 677.999 290.2 678.399 291.4 681.199 c +292.6 683.999 290.6 685.599 282.6 679.199 c +274.6 672.799 273.4 670.799 Y +f +0 g +280.805 676.766 m +282.215 689.806 290.693 688.141 V +298.919 692.311 301.641 694.279 V +309.78 695.981 311.09 696.598 v +329.569 705.298 344.288 700.779 344.835 701.899 c +345.381 703.018 365.006 695.901 368.615 691.815 c +369.006 691.372 358.384 697.412 348.686 699.303 c +340.413 700.917 318.811 699.056 307.905 693.52 c +304.932 692.011 295.987 686.227 293.456 686.338 c +290.925 686.45 280.805 676.766 Y +f +0.8 g +277 651.199 m +261.8 653.599 278.6 655.199 V +296.6 657.199 300.6 662.399 V +314.2 671.599 317 671.999 v +319.8 672.399 349.8 679.599 350.2 681.999 c +350.6 684.399 356.2 684.399 357.8 683.599 c +359.4 682.799 358.6 681.599 355.8 680.799 c +353 679.999 321.8 663.599 315.4 662.399 c +309 661.199 297.4 653.599 292.6 652.399 c +287.8 651.199 277 651.199 Y +f +0 g +296.52 658.597 m +287.938 659.426 296.539 660.245 V +305.355 663.669 307.403 666.332 V +314.367 671.043 315.8 671.247 v +317.234 671.452 331.194 675.139 331.399 676.367 c +331.604 677.596 365.67 690.177 370.09 686.987 c +373.001 684.886 363.1 686.563 353.466 682.153 c +352.111 681.533 318.258 666.946 314.981 666.332 c +311.704 665.717 305.765 661.826 303.307 661.212 c +300.85 660.597 296.52 658.597 Y +f +288.6 656.399 m +293.8 656.799 292.6 655.199 v +291.4 653.599 289 654.399 y +288.6 656.399 l +f +281.4 654.799 m +286.6 655.199 285.4 653.599 v +284.2 651.999 281.8 652.799 y +281.4 654.799 l +f +271 653.199 m +276.2 653.599 275 651.999 v +273.8 650.399 271.4 651.199 y +271 653.199 l +f +263.4 652.399 m +268.6 652.799 267.4 651.199 v +266.2 649.599 263.8 650.399 y +263.4 652.399 l +f +301.8 691.999 m +306.2 691.999 305 690.399 v +303.8 688.799 300.6 689.199 y +301.8 691.999 l +f +291.8 686.399 m +298.306 688.54 295.8 685.199 v +294.6 683.599 292.2 684.399 y +291.8 686.399 l +f +280.6 681.599 m +285.8 681.999 284.6 680.399 v +283.4 678.799 281 679.599 y +280.6 681.599 l +f +273 675.599 m +278.2 675.999 277 674.399 v +275.8 672.799 273.4 673.599 y +273 675.599 l +f +266.2 670.799 m +271.4 671.199 270.2 669.599 v +269 667.999 266.6 668.799 y +266.2 670.799 l +f +305.282 664.402 m +312.203 664.934 310.606 662.805 v +309.009 660.675 305.814 661.74 y +305.282 664.402 l +f +315.682 669.202 m +322.603 669.734 321.006 667.605 v +319.409 665.475 316.214 666.54 y +315.682 669.202 l +f +326.482 673.602 m +333.403 674.134 331.806 672.005 v +330.209 669.875 327.014 670.94 y +326.482 673.602 l +f +336.882 678.402 m +343.803 678.934 342.206 676.805 v +340.609 674.675 337.414 675.74 y +336.882 678.402 l +f +309.282 696.402 m +316.203 696.934 314.606 694.805 v +313.009 692.675 309.014 692.94 y +309.282 696.402 l +f +319.282 699.602 m +326.203 700.134 324.606 698.005 v +323.009 695.875 318.614 696.14 y +319.282 699.602 l +f +296.6 659.599 m +301.8 659.999 300.6 658.399 v +299.4 656.799 297 657.599 y +296.6 659.599 l +f +0.1 0.55 0.85 0.3 k +223.4 758.8 m +219 750 218.6 746.8 V +219.4 755.6 220.6 757.6 v +221.8 759.6 223.4 758.8 y +f +205 744.8 m +201.8 730.4 202.2 727.6 V +201 739.2 201.4 740.4 v +201.8 741.6 205 744.8 y +f +0.8 g +225.8 819.4 m +225.6 816.2 l +223.4 816 l +237.6 803.4 238.2 795.8 V +239 804 225.8 819.4 V +f +0 g +229.784 818.135 m +229.353 818.551 229.572 819.296 229.164 819.556 c +228.355 820.072 230.462 820.129 230.234 820.845 c +229.851 822.051 230.038 822.072 229.916 823.348 c +229.859 823.946 230.447 825.486 230.832 825.926 c +232.278 827.578 230.954 830.51 232.594 832.061 c +232.898 832.35 233.274 832.902 233.559 833.32 c +234.218 834.283 235.402 834.771 236.352 835.599 c +236.67 835.875 236.469 836.702 237.038 836.61 c +237.752 836.495 238.993 836.625 238.948 835.784 c +238.835 833.664 237.506 831.944 236.226 830.276 C +236.677 829.572 236.219 828.937 235.935 828.38 c +234.6 825.76 234.789 822.919 234.615 820.079 c +234.61 819.994 234.303 819.916 234.311 819.863 c +234.664 817.528 235.248 815.329 236.127 813.1 c +236.493 812.17 236.964 811.275 237.114 810.348 c +237.225 809.662 237.328 808.829 236.92 808.124 C +238.955 805.234 237.646 802.583 238.815 799.052 c +239.022 798.427 240.714 796.513 240.251 796.674 c +237.738 797.545 237.626 797.943 237.449 798.696 c +237.303 799.319 236.973 800.696 236.736 801.298 c +236.672 801.462 236.501 803.346 236.423 803.468 c +234.91 805.85 236.268 805.674 234.898 808.032 C +233.47 808.712 232.504 809.816 231.381 810.978 c +231.183 811.182 232.326 811.906 232.145 812.119 c +231.053 813.408 229.9 814.175 230.236 815.668 c +230.391 816.358 230.528 817.415 229.784 818.135 c +f +226.2 816.4 m +226.6 809.6 229 808 v +231.4 806.4 230.2 807.2 227 808.4 c +223.8 809.6 225 810.4 y +222.2 810 224.6 808 v +227 806 230.6 803.6 229 803.6 c +227.4 803.6 219.8 807.6 219.8 810.4 c +219.8 813.2 218.8 817.3 y +219.9 818.1 224.7 818 V +226.1 817.3 226.2 816.4 V +f +1 g +1 J 0.1 w +225.4 797.8 m +216.88 800.591 198.4 797.2 V +207.431 799.278 226.2 797 v +236.5 795.75 225.4 797.8 Y +b +227.498 797.871 m +219.252 801.389 200.547 799.608 V +209.725 800.897 228.226 797.005 v +238.38 794.869 227.498 797.871 Y +b +229.286 797.778 m +221.324 801.899 202.539 801.514 V +211.787 802.118 229.948 796.86 v +239.914 793.975 229.286 797.778 Y +b +230.556 797.555 m +223.732 801.862 206.858 802.96 V +215.197 802.79 231.078 796.681 v +239.794 793.328 230.556 797.555 Y +b +345.84 787.039 m +344.91 786.395 345.124 787.576 v +345.339 788.757 373.547 801.927 377.161 801.677 C +346.913 788.471 345.84 787.039 V +b +342.446 786.4 m +341.57 785.685 341.691 786.879 v +341.812 788.073 368.899 803.418 372.521 803.452 C +343.404 787.911 342.446 786.4 V +b +339.16 785.025 m +338.332 784.253 338.374 785.453 v +338.416 786.652 358.233 802.149 368.045 804.023 C +350.015 795.896 339.16 785.025 V +b +336.284 783.162 m +335.539 782.468 335.577 783.547 v +335.615 784.627 353.449 798.574 362.28 800.26 C +346.054 792.946 336.284 783.162 V +b +0.8 g +0 J 1 w +304.6 635.199 m +289.4 637.599 306.2 639.199 V +324.2 641.199 328.2 646.399 V +341.8 655.599 344.6 655.999 v +347.4 656.399 363.8 659.999 364.2 662.399 c +364.6 664.799 370.6 667.199 372.2 666.399 c +373.8 665.599 373.8 656.399 371 655.599 c +368.2 654.799 349.4 647.599 343 646.399 c +336.6 645.199 325 637.599 320.2 636.399 c +315.4 635.199 304.6 635.199 Y +f +0 g +377.6 672.599 m +374.6 670.999 373.4 668.399 V +367 657.799 352.8 654.599 V +329.8 645.599 322 643.599 V +308.6 638.599 301.2 639.399 V +294.2 639.199 300.4 637.599 V +320.6 639.599 324 641.399 V +339.6 646.599 342.6 649.199 v +345.6 651.799 363.8 656.799 366 658.799 c +368.2 660.799 378 669.199 377.6 672.599 C +f +318.882 641.089 m +324.111 641.315 322.958 639.766 v +321.805 638.216 319.357 639.09 y +318.882 641.089 l +f +311.68 639.737 m +316.908 639.963 315.756 638.414 v +314.603 636.864 312.155 637.737 y +311.68 639.737 l +f +301.251 638.489 m +306.48 638.716 305.327 637.166 v +304.174 635.617 301.726 636.49 y +301.251 638.489 l +f +293.617 637.945 m +298.846 638.171 297.693 636.622 v +296.54 635.072 294.092 635.946 y +293.617 637.945 l +f +335.415 648.487 m +342.375 648.788 340.84 646.726 v +339.306 644.664 336.047 645.826 y +335.415 648.487 l +f +345.73 652.912 m +351.689 656.213 351.155 651.151 v +350.885 648.595 346.362 650.251 y +345.73 652.912 l +f +354.862 655.726 m +362.021 659.427 360.287 653.965 v +359.509 651.515 355.493 653.065 y +354.862 655.726 l +f +364.376 660.551 m +368.735 665.452 369.801 658.79 v +370.207 656.252 365.008 657.89 y +364.376 660.551 l +f +326.834 644.003 m +332.062 644.23 330.91 642.68 v +329.757 641.131 327.308 642.004 y +326.834 644.003 l +f +1 g +1 J 0.1 w +362.434 765.397 m +361.708 764.732 361.707 765.803 v +361.707 766.873 379.191 780.137 388.034 781.521 C +371.935 774.792 362.434 765.397 V +b +0 g +0 J 1 w +365.4 701.6 m +387.401 679.199 396.601 675.599 V +405.801 664.399 401.801 638.399 V +398.601 630.799 395.401 651.599 V +398.601 676.799 387.401 660.799 V +379 670.699 385.4 670.399 V +388.601 668.399 389.001 669.999 v +389.401 671.599 381.4 685.199 364.2 699.6 c +347 714 365.4 701.6 Y +f +1 g +1 J 0.1 w +307 662.799 m +306.8 664.599 308.6 663.799 v +310.4 662.999 404.601 656.799 436.201 632.799 C +391.001 655.999 307 662.799 V +b +317.4 667.199 m +317.2 668.999 319 668.199 v +320.8 667.399 457.401 668.399 481.001 635.999 C +459.001 661.199 317.4 667.199 V +b +329 671.199 m +328.8 672.999 330.6 672.199 v +332.4 671.399 505.801 684.399 529.401 651.999 C +519.801 677.599 329 671.199 V +b +339 675.999 m +338.8 677.799 340.6 676.999 v +342.4 676.199 464.601 714.8 488.201 682.399 C +474.801 707 339 675.999 V +b +281 653.199 m +280.8 654.999 282.6 654.199 v +284.4 653.399 302.2 651.199 304.2 612.399 C +297 654.399 281 653.199 V +b +272.2 651.599 m +272 653.399 273.8 652.599 v +275.6 651.799 289.8 656.399 287 617.599 C +288.2 652.799 272.2 651.599 V +b +264.2 651.199 m +264 652.999 265.8 652.199 v +267.6 651.399 283 650.799 270.6 628.399 C +280.2 652.399 264.2 651.199 V +b +311.526 695.535 m +311.082 693.536 312.631 694.753 v +328.699 707.378 361.141 766.28 416.826 771.914 C +378.518 784.024 311.526 695.535 V +b +322.726 697.335 m +321.363 698.528 323.231 699.153 v +325.099 699.778 437.541 772.28 476.826 764.314 C +449.719 771.824 322.726 697.335 V +b +301.885 691.233 m +301.376 689.634 303.087 690.61 v +312.062 695.73 315.677 752.941 359.254 754.196 C +326.843 768.91 301.885 691.233 V +b +281.962 680.207 m +280.885 678.921 282.838 679.175 v +293.084 680.507 314.489 721.778 358.928 716.699 C +326.962 731.045 281.962 680.207 V +b +293.2 686.333 m +292.389 684.864 294.258 685.489 v +304.057 688.763 317.141 733.375 361.729 736.922 C +327.603 744.865 293.2 686.333 V +b +274.922 675.088 m +274.049 674.046 275.631 674.252 v +283.93 675.331 301.268 708.76 337.264 704.646 C +311.371 716.266 274.922 675.088 V +b +267.323 669.179 m +266.318 668.134 267.909 668.252 v +272.077 668.561 302.715 701.64 321.183 686.138 C +309.168 704.861 267.323 669.179 V +b +336.855 701.102 m +335.654 702.457 337.586 702.842 v +339.518 703.226 460.221 760.939 498.184 748.073 C +472.243 758.947 336.855 701.102 V +b +303.4 636.799 m +303.2 638.599 305 637.799 v +306.8 636.999 322.2 636.399 309.8 613.999 C +319.4 637.999 303.4 636.799 V +b +313.8 638.399 m +313.6 640.199 315.4 639.399 v +317.2 638.599 335 636.399 337 597.599 C +329.8 639.599 313.8 638.399 V +b +320.6 639.999 m +320.4 641.799 322.2 640.999 v +324 640.199 348.6 636.799 372.2 604.399 C +336.6 641.199 320.6 639.999 V +b +328.225 642.028 m +327.788 643.786 329.678 643.232 v +331.568 642.678 352.002 644.577 390.099 610.401 C +343.924 645.344 328.225 642.028 V +b +338.625 646.428 m +338.188 648.186 340.078 647.632 v +341.968 647.078 376.802 642.577 428.499 607.601 C +354.324 649.744 338.625 646.428 V +b +298.2 657.999 m +298 659.799 299.8 658.999 v +301.6 658.199 355 655.599 385.4 628.799 C +350.499 653.574 298.2 657.999 V +b +288.2 653.999 m +288 655.799 289.8 654.999 v +291.6 654.199 316.2 650.799 339.8 618.399 C +304.2 655.199 288.2 653.999 V +b +349.503 651.038 m +348.938 652.759 350.864 652.345 v +352.79 651.932 387.86 649.996 441.981 618.902 C +364.317 653.296 349.503 651.038 V +b +357.903 653.438 m +357.338 655.159 359.264 654.745 v +361.19 654.332 396.26 652.396 450.381 621.302 C +373.317 656.096 357.903 653.438 V +b +367.503 658.438 m +366.938 660.159 368.864 659.745 v +370.79 659.332 413.86 654.996 503.582 620.702 C +382.917 661.096 367.503 658.438 V +b +0 g +0 J 1 w +256.2 651.599 m +261.4 651.999 260.2 650.399 v +259 648.799 256.6 649.599 y +256.2 651.599 l +f +287 637.599 m +292.2 637.999 291 636.399 v +289.8 634.799 287.4 635.599 y +287 637.599 l +f +278.2 637.999 m +283.4 638.399 282.2 636.799 v +281 635.199 278.6 635.999 y +278.2 637.999 l +f +182.831 649.818 m +187.876 648.495 186.218 647.376 v +184.561 646.256 182.554 647.798 y +182.831 649.818 l +f +184.831 659.418 m +189.876 658.095 188.218 656.976 v +186.561 655.856 184.554 657.398 y +184.831 659.418 l +f +177.631 663.818 m +182.676 662.495 181.018 661.376 v +179.361 660.256 177.354 661.798 y +177.631 663.818 l +f +0.8 g +1 J 0.1 w +257.4 588.799 m +255.8 588.799 251.8 586.799 V +249.8 586.799 238.6 583.199 233 573.199 C +245.4 582.799 257.4 588.799 V +f +345.116 496.153 m +345.257 495.895 345.312 495.475 345.604 495.458 c +346.262 495.418 347.495 495.117 347.37 495.753 c +346.522 500.059 345.648 504.996 341.515 506.803 c +340.876 507.082 339.434 506.669 339.36 505.785 c +339.233 504.261 339.116 502.912 339.425 501.446 c +339.725 500.025 341.883 500.015 342.8 501.399 C +343.736 499.727 344.168 497.884 345.116 496.153 c +f +334.038 491.419 m +334.786 490.006 334.659 488.147 336.074 487.584 c +336.814 487.29 338.664 488.265 338.246 489.339 c +337.444 491.4 337.056 493.639 335.667 495.45 c +335.467 495.712 335.707 496.245 335.547 496.573 c +334.953 497.793 333.808 498.528 332.4 498.199 C +331.285 495.996 332.433 493.867 333.955 492.158 c +334.091 492.006 333.925 491.63 334.038 491.419 c +f +294.436 496.609 m +294.328 496.986 294.29 497.449 294.455 497.77 c +294.986 498.803 295.779 499.925 295.442 500.947 c +295.094 502.003 293.978 501.821 293.328 501.252 c +292.193 500.258 292.144 498.432 291.453 497.073 c +291.257 496.687 291.308 496.114 290.867 495.723 c +290.393 495.302 289.953 493.778 290.049 493.207 c +290.102 492.894 289.919 482.986 290.141 483.249 c +290.76 483.982 293.81 493.716 293.879 494.608 c +293.936 495.339 294.668 495.804 294.436 496.609 c +f +268.798 503.401 m +271.432 505.9 274.222 508.861 273.78 512.573 c +273.664 513.549 271.889 513.022 271.702 512.176 c +270.9 508.551 268.861 505.89 266.293 503.498 c +264.097 501.451 262.235 495.107 262 494.599 C +265.697 499.855 267.954 502.601 268.798 503.401 c +f +255.224 509.365 m +255.747 509.735 255.445 510.226 255.662 510.558 c +256.615 512.016 257.916 513.262 257.934 515 c +257.937 515.277 257.559 515.586 257.224 515.362 c +256.947 515.178 256.605 515.048 256.497 514.918 c +254.467 512.469 253.067 509.798 251.624 506.986 c +251.441 506.629 250.297 502.138 250.61 502.027 c +250.849 501.942 252.569 506.123 252.779 506.237 c +254.042 506.923 254.054 508.538 255.224 509.365 c +f +271.957 489.821 m +272.401 490.69 273.977 491.892 273.864 492.781 c +273.746 493.709 274.214 495.152 273.302 494.464 c +272.045 493.516 268.596 492.167 268.326 486.359 c +268.3 485.788 271.274 488.481 271.957 489.821 c +f +286.4 506.999 m +286.8 507.667 287.508 507.194 287.967 507.457 c +288.615 507.829 289.226 508.387 289.518 509.036 c +290.488 511.185 292.257 513.005 292.4 515.399 C +290.909 516.804 290.23 514.764 289.6 513.799 C +288.277 515.446 287.278 513.572 285.978 513.053 c +285.908 513.025 285.695 513.372 285.62 513.345 c +284.443 512.905 283.763 511.824 282.765 511.043 c +282.594 510.909 282.189 511.089 282.042 510.953 c +281.39 510.35 280.417 510.025 280.137 509.343 c +279.027 506.636 275.887 504.541 274 496.999 C +274.381 496.09 278.512 503.641 278.999 504.339 c +279.835 505.535 279.953 502.678 281.229 503.344 c +281.28 503.371 281.466 503.133 281.6 502.999 C +281.794 503.279 282.012 503.508 282.4 503.399 C +282.4 503.799 282.266 504.355 282.467 504.514 c +283.704 505.491 283.62 506.559 284.4 507.799 C +284.858 507.01 285.919 507.729 286.4 506.999 C +f +346.2 452.599 m +353.6 472.999 349.2 484.199 V +360.6 462.599 356 451.399 V +355.6 461.799 351.6 466.799 V +347.6 453.999 346.2 452.599 V +f +331.4 455.199 m +336.8 463.999 328.8 482.399 V +328 461.999 321.2 450.999 V +335.4 471.199 331.4 455.199 V +f +321.4 457.199 m +321.2 477.199 321.6 480.199 V +317.8 463.599 307.6 453.999 V +322 465.999 321.4 457.199 V +f +311.8 489.199 m +317.8 475.599 307.8 457.199 V +314.2 469.399 309.4 476.399 V +312 479.799 311.8 489.199 V +f +292.6 457.599 m +291.6 473.199 293.4 475.399 V +293.6 481.799 293.2 482.799 V +297.2 488.999 297.4 481.599 V +298.8 473.799 301.6 469.199 V +305.2 463.799 305 457.399 V +295 487.599 292.6 457.599 V +f +289 485.199 m +282.4 474.399 280.6 455.399 V +279.2 461.599 283 475.999 V +287.2 491.399 289 485.199 V +f +267.2 465.399 m +272.2 470.799 273.6 475.799 V +277.2 491.599 270.8 482.999 V +271 474.999 262.8 467.599 V +267.6 469.999 267.2 465.399 V +f +261.4 470.399 m +264.8 487.799 265.6 488.599 V +267.4 491.999 264.6 488.799 V +255.8 469.599 251.8 462.999 V +259.8 472.199 261.4 470.399 V +f +255.6 486.999 m +267.2 509.399 245.4 483.599 V +256.4 493.399 255.6 486.999 V +f +240.2 501.599 m +245 520.399 247.6 520.199 V +255.8 529.199 249.2 518.599 V +243.2 508.999 243.8 499.199 V +243.2 508.799 240.2 501.599 V +f +570.5 513 m +558.5 523 556 526.5 V +569.5 508 569.5 501 V +572 508.5 570.5 513 V +f +576 535 m +555 550 551.5 557.5 V +578 528 578 523.5 V +578.5 532.5 576 535 V +f +593 689 m +581 697 579.5 695 V +590 688.5 592.5 680 V +591 689 593 689 V +f +601.5 608.5 m +584 620.5 l +603 603.5 603.5 599.5 V +601.5 608.5 L +f +0 g +1 w +210.75 631 m +232.75 626.25 l +S +261 469 m +260.5 472.5 251.5 462 v +S +266.5 464 m +268.5 470.5 262 466 v +S +320.5 455.5 m +322 466.5 310.5 453.5 v +S + +showpage + +%%Trailer diff --git a/vendor/github.com/llgcode/ps/samples/vasarely.ps b/vendor/github.com/llgcode/ps/samples/vasarely.ps new file mode 100644 index 0000000..bb058a6 --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/vasarely.ps @@ -0,0 +1,588 @@ +%! +% vasarely +% Elizabeth D. Zwicky +% zwicky@sgi.com +/vasarelysave save def % prevent residual side effects +% +% Inspired by Vasarely's experiments with tilting circles and squares +% (for instance "Tlinko" and "Betelgeuse" + +%% circles +/part { circle } def /nnrand false def +%% squares +% /part { ngon } def /nn 4 def /nnrand false def +%% random polygons +% /part { ngon } def /nnrand true def +%% random stars (not my favorite on this program) +% /part { nstar } def /nnrand true def + +%% tilt the base shape a random amount? +/twist false def +% /twist true def + + +/rainbow false def +%% To make rainbows +% /rainbow true def +%% Set this to 1 to go through a full range of colors +/rainrange .25 def + +% number of different designs per page +/inheight 2 def +/inwidth 2 def +% number of repeats in a design +/xtimes 10 def +/ytimes 16 def + +%% This sets the relationship between the two hues: comptwo is maximum contrast +/colorway {comptwo} def +%% monochrome comptwo harmtwo harmfour freecolor compthree closeharm +%% origcolor + +%% This sets the brightness and saturation of the colors; vivid makes +%% them both bright +/colorfam {vivid} def +%% vivid jewel intense medium pastel free orig contrast +%% medjewel medvivid vivpastel medpastel + + +%% Only experts below this point! + +10 srand +/seed rand def + +/starcompensate false def +/constroke 1 def + + + +/circle { + /radius radius 1.33 mul def + currentpoint /herey exch def /herex exch def + herex herey radius 0 360 arc +} def + +/ngon{ % polygon of n sides, n determined by nn + nside 2 div radius rmoveto + nn cvi { + nside neg 0 rlineto + 360 360 nn div sub neg rotate + } repeat + closepath +} def + +/nstar{ % star of n points, n determined by nstarslider + /radius radius 1.33 mul def + currentpoint /herey exch def /herex exch def + 0 radius rmoveto + 90 nstarangle 2 div add neg rotate + nn cvi {nstarside 0 rlineto + 180 180 nstarangle 2 mul sub sub neg rotate + nstarside 0 rlineto + 180 180 360 nn div sub nstarangle 2 mul sub sub rotate + } repeat + 90 nstarangle 2 div add rotate + closepath +} def + +/nstarangle {180 360 nn div sub 3 div} def +/nstarside { + 2 + radius + 1 + 180 nn div + sin + div + div + mul + nstarangle sin + mul + 180 + nstarangle 2 mul + sub + sin + div +} def + +/nside { + 2 + radius + 360 nn div 2 div tan + mul + mul +} def + + +/tan { /alpha exch def + alpha sin + 1 alpha sin dup mul sub sqrt + div +} def + + +/pastel { + /backbright high def + /backsat medlow def + /fillbright high def + /fillsat medlow def + /eobright high def + /eosat medlow def + constroke 0 eq { + /strokebright high def + /strokesat medlow def + } + { + /strokebright low def + /strokesat high def + } ifelse +} def + +/jewel { + /fillbright med def + /fillsat high def + /backbright med def + /backsat high def + /eobright med def + /eosat high def + constroke 0 eq { + /strokebright medlow def + /strokesat high def + } + { + /strokebright high def + /strokesat medlow def + } ifelse +} def + +/vivid { + /fillsat 1 def + /fillbright high def + /eosat 1 def + /eobright high def + /backsat 1 def + /backbright high def + constroke 0 eq { + /strokesat 1 def + /strokebright high def + } + { + /strokesat high def + /strokebright medlow def + } ifelse +} def + +/free { + /fillsat anyrand def + /fillbright anyrand def + /eosat anyrand def + /eobright anyrand def + /backsat anyrand def + /backbright anyrand def + /strokesat anyrand def + /strokebright anyrand def +} def + +/contrast { + /sat medhigh def + /bright rand 2 mod 0 eq {medhigh} {medlow} ifelse def + /backsat sat def + /backbright bright def + /eosat sat def + /eobright 1 bright sub def + /fillsat sat def + /fillbright bright def + /strokebright rand 2 mod def + /strokesat rand 2 mod def + +} def +/medium { + /backsat med def + /backbright med def + /eosat med def + /eobright med def + /fillsat med def + /fillbright med def + /strokebright med def + /strokesat med def + +} def +/intense { + /backsat high def + /backbright med def + /eosat high def + /eobright high def + /fillsat high def + /fillbright med def + /strokebright high def + /strokesat high def + +} def +/orig { + /backsat rand 99 mod 55 add 100 div def + /backbright rand 99 mod 35 add 100 div def + /eosat rand 77 mod 22 add 100 div def + /eobright 90 rand 75 mod sub 15 add 100 div def + /fillsat 100 rand 90 mod sub 100 div def + /fillbright 100 rand 45 mod sub 20 add 100 div def + /strokebright 100 rand 55 mod sub 100 div def + /strokesat 100 rand 85 mod sub 100 div def + +} def + +/medjewel { + /alt rand 2 mod def + /backsat alt 0 eq {high} { med} ifelse def + /fillsat alt 0 eq {med} {high} ifelse def + /eosat alt 0 eq {high} {med} ifelse def + /backbright med def + /fillbright med def + /eobright med def + constroke 0 eq { + /strokebright medlow def + /strokesat high def + } + { + /strokebright high def + /strokesat medlow def + } ifelse +} def + +/medvivid { + /alt rand 2 mod def + /backsat alt 0 eq {1} { med} ifelse def + /fillsat alt 0 eq {med} {1} ifelse def + /eosat alt 0 eq {1} {med} ifelse def + /backbright alt 0 eq {high} {med} ifelse def + /eobright alt 0 eq {high} {med} ifelse def + /fillbright alt 0 eq {med} {high} ifelse def + constroke 0 eq { + /strokesat 1 def + /strokebright high def + } + { + /strokesat high def + /strokebright medlow def + } ifelse +} def +/vivpastel { + /backlight rand 2 mod def + /backsat backlight 0 eq {medlow} {1} ifelse def + /eosat backlight 0 eq {medlow} {1} ifelse def + /fillsat backlight 0 eq {1} {medlow} ifelse def + /fillbright high def + /backbright high def + /eobright high def + constroke 0 eq { + /strokesat 1 def + /strokebright high def + } + { + /strokesat high def + /strokebright medlow def + } ifelse +} def + +/medpastel { + /alt rand 2 mod def + /backsat alt 0 eq {medlow} {med} ifelse def + /eosat alt 0 eq {medlow} {med} ifelse def + /fillsat alt 0 eq {med} {medlow} ifelse def + /fillbright alt 0 eq { high } {med} ifelse def + /backbright alt 0 eq {med} { high } ifelse def + /eobright alt 0 eq {med} { high } ifelse def + constroke 0 eq { + /strokebright high def + /strokesat medlow def + } + { + /strokebright low def + /strokesat high def + } ifelse +} def + +/maxcon { + rand 2 mod 1 eq { + /backsat 0 def + /backbright 0 def + /eosat 0 def + /eobright 0 def + /fillsat 0 def + /fillbright 1 def + /strokebright 1 def + /strokesat 0 def + } + { + /backsat 0 def + /backbright 1 def + /eosat 0 def + /eobright 1 def + /fillsat 0 def + /fillbright 0 def + /strokebright 0 def + /strokesat 0 def + } + ifelse +} def + +/monochrome { + /fillhue hue closevary def + /strokehue hue closevary def + /eohue hue closevary def + /backhue hue def +} def + +/blackandwhite { + /fillhue 1 def + /eohue 0 def + /backhue 0 def + /strokehue 1 def +} def + + +/freecolor { + /fillhue anyrand def + /strokehue anyrand def + /eohue anyrand def + /backhue anyrand def +} def + +/purple { + /fillhue rand 15 mod 80 add 100 div def + /backhue rand 15 mod 80 add 100 div def + /strokehue rand 15 mod 80 add 100 div def + /eohue rand 15 mod 80 add 100 div def + /backhue rand 15 mod 80 add 100 div def +} def + +/comptwo { + /fillhue hue closevary def + /strokehue hue .5 add dup 1 gt {1 sub} if def + /backhue strokehue def + /eohue strokehue closevary def +} def + +/compthree { + /backhue hue def + /strokehue hue 1 3 div add dup 1 gt {1 sub} if closevary def + /fillhue strokehue closevary def + /eohue hue 1 3 div sub dup 1 lt { 1 add} if closevary def +} def + +/origcolor { + /backhue hue def + /strokehue + hue 1000 mul cvi 3 mod dup 1 eq + {hue closevary} + {2 eq + {rand 999 mod 1000 div} + {hue .5 add dup 1 gt {1 sub} if } + ifelse + } + ifelse def + /fillhue hue 1000 mul cvi 3 mod dup 1 eq + {hue closevary} + {2 eq + {rand 999 mod 1000 div} + {hue .5 add dup 1 gt {1 sub} if } + ifelse + } + ifelse + def + /eohue hue 1000 mul cvi 2 mod 1 eq + {hue closevary} + {rand 999 mod 1000 div} + ifelse def +} def + +/harmtwo { + /fillhue hue closevary def + /backhue hue def + /strokehue hue .2 add dup 1 gt {1 sub} if closevary def + /eohue strokehue closevary def +} def + +/harmfour { + /fillhue hue closevary def + /backhue hue .1 add dup 1 gt {1 sub} if def + /strokehue hue .2 add dup 1 gt {1 sub} if closevary def + /eohue hue .1 sub dup 1 lt {1 add} if closevary def +} def + +/closeharm { + /fillhue hue def + /backhue hue .05 add dup 1 gt {1 sub} if closevary def + /strokehue hue .1 add dup 1 gt {1 sub} if closevary def + /eohue hue .05 sub dup 0 lt {1 add} if closevary def +} def + + +/high {100 rand 25 mod sub 100 div } def +/med { rand 33 mod 33 add 100 div } def +/medhigh {100 rand 50 mod sub 100 div } def +/medlow {rand 50 mod 100 div } def +/low { rand 25 mod 100 div} def +/anyrand { rand 100 mod 100 div } def +/closevary {rand 70 mod rand 100 mod sub 1000 div add} def + +%rainbow +% {/colorfill {fillhue 1 1 sethsbcolor fill} def} + /colorfill {fillhue fillsat fillbright sethsbcolor fill } def +%ifelse +/colorstroke {strokehue strokesat strokebright sethsbcolor stroke } def +/eocolorfill {eohue eosat eobright sethsbcolor eofill } def +/backfill{ backhue backsat backbright sethsbcolor fill } def + +/xstep { xrange xtimes 1 sub div x 1 sub mul } def +/ystep { yrange ytimes 1 sub div y 1 sub mul} def + +/functionarray [ + {sin abs} + {sin } + {cos } + {cos abs} + {sin dup mul } + {cos dup mul } + {sin abs sqrt } + {cos abs sqrt } +] def + +/range { /top exch def /bottom exch def /number exch def +% number is between -1 and 1 + /rangesize top bottom sub def + number 1 add 2 div + % number is now between 0 and 1 + rangesize mul + bottom add + } def + +/drawone { + /radius + width height lt {width 3 div} {height 3 div} ifelse + def + seed srand + 0 0 moveto + /origmatrix [ 0 0 0 0 0 0 ] currentmatrix def + [ % xstep function ystep function2 add 0.4 1.3 range + 1 + ystep function xstep function add -0.25 0.25 range + ystep function3 xstep function2 add -0.5 0.5 range +% xstep function4 ystep function mul 0.4 1.3 range + 1 + 0 + 0 + ] + concat + twist {twistdeg rotate} if + part colorfill + origmatrix setmatrix + rainbow + {/fillhue fillhue rainrange xtimes ytimes mul div add dup 1 gt {1 sub} if def} + if + +} def + +/notdrawone { + seed srand + twist {/twistdeg rand 360 mod def} if + nnrand {/nn rand 6 mod 3 add def} if + /x1 rand width 3 div cvi mod width 8 div add def + /y1 rand height 3 div cvi mod height 8 div add def + rand 3 mod dup 1 eq + {pop /x2 rand width 2 div cvi mod def + /y2 rand height 2 div cvi mod def} + { 2 eq + {/x2 y1 def /y2 x1 def} + {/x2 y1 width mul height div def /y2 x1 height mul width div def} + ifelse + } + ifelse + /radius width height gt {width} {height} ifelse 2.5 div def + /stripe rand width 10 div cvi mod 2 add def + starcompensate { /stripe stripe 2 mul def /radius radius 10 nn div mul def } if + /i 1 def + /repeats radius stripe div cvi 1 add def + /nnincr 1 def + repeats { + colorvary {colorfam colorway} if + /i i 1 add def + /radius radius stripe sub def + + } repeat +} def + + +/page { + clippath pathbbox /ury exch def /urx exch def /lly exch def /llx exch +def +/pagewidth urx llx sub 36 72 mul min def +/pageheight ury lly sub 36 72 mul min def +0 0 moveto + llx lly translate + /outerwidth + pagewidth inwidth div + def + /outerheight + pageheight inheight div + def + /width + outerwidth xtimes div + def + /height + outerheight ytimes div + def + + + + /size + width height gt {width} {height} ifelse + def + inwidth { + inheight { + + /seed rand def + /hue rand 999 mod 1000 div def + colorway colorfam + /x 1 def /y 1 def + nnrand {/nn rand 6 mod 3 add def} if + /twistdeg rand 360 mod def + + /function functionarray rand functionarray length mod get def + /function2 functionarray rand functionarray length mod get def + /function3 functionarray rand functionarray length mod get def + /function4 functionarray rand functionarray length mod get def + +/xrange [ 90 180 270 360 180 360 ] rand 6 mod get def +/yrange [ 90 180 270 360 180 360 ] rand 6 mod get def + initclip + newpath + 0 0 moveto + outerwidth 0 rlineto + 0 outerheight rlineto + outerwidth neg 0 rlineto + backfill + + xtimes { + ytimes{ + /y y 1 add def + width 2 div height 2 div translate + drawone + width 2 div neg height 2 div neg translate + 0 height translate + } repeat + + /y 1 def + /x x 1 add def + width height ytimes mul neg translate + + } repeat + + width xtimes mul neg outerheight translate + } repeat + outerwidth outerheight inheight mul neg translate + } repeat + + } def + +page showpage +clear cleardictstack +vasarelysave restore diff --git a/vendor/github.com/llgcode/ps/samples/vw.ps b/vendor/github.com/llgcode/ps/samples/vw.ps new file mode 100644 index 0000000..4abae4c --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/vw.ps @@ -0,0 +1,2743 @@ +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator: Adobe Illustrator 88(TM) 1.6 +%%For: (H A R D+S O F T 1010 Wien) (Seilerst\212tte 16) +%%Title: (Volkswagon.art) +%%CreationDate: (1.11.1988) (8:45 Uhr) +%%DocumentProcSets: Adobe_packedarray 0 0 +%%DocumentSuppliedProcSets: Adobe_packedarray 0 0 +%%DocumentProcSets: Adobe_cmykcolor 0 0 +%%DocumentSuppliedProcSets: Adobe_cmykcolor 0 0 +%%DocumentProcSets: Adobe_cshow 0 0 +%%DocumentSuppliedProcSets: Adobe_cshow 0 0 +%%DocumentProcSets: Adobe_customcolor 0 0 +%%DocumentSuppliedProcSets: Adobe_customcolor 0 0 +%%DocumentProcSets: Adobe_Illustrator_881 0 0 +%%DocumentSuppliedProcSets: Adobe_Illustrator_881 0 0 +%%ColorUsage: Black&White +%%DocumentProcessColors: Black +%%BoundingBox:93 103 495 358 +%%TemplateBox:280 200 280 200 +%%TileBox:-585 443 -2 884 +%%EndComments +%%BeginProcSet: Adobe_packedarray 0 0 +% packedarray Operators +% Version 1.0 5/9/1988 +% Copyright (C) 1987, 1988 +% Adobe Systems Incorporated +% All Rights Reserved +userdict /Adobe_packedarray 5 dict dup begin put +/initialize % - initialize - +{ +/packedarray where + { + pop + } + { + Adobe_packedarray begin + Adobe_packedarray + { + dup xcheck + { + bind + } if + userdict 3 1 roll put + } forall + end + } ifelse +} def +/terminate % - terminate - +{ +} def +/packedarray % arguments count packedarray array +{ +array astore readonly +} def +/setpacking % boolean setpacking - +{ +pop +} def +/currentpacking % - setpacking boolean +{ +false +} def +currentdict readonly pop end +%%EndProcSet +Adobe_packedarray /initialize get exec +%%BeginProcSet:Adobe_cmykcolor 0 0 +% cmykcolor Operators +% Version 1.0 5/9/1988 +% Copyright (C) 1987, 1988 +% Adobe Systems Incorporated +% All Rights Reserved +currentpacking true setpacking +userdict /Adobe_cmykcolor 4 dict dup begin put +/initialize % - initialize - +{ +/setcmykcolor where + { + pop + } + { + userdict /Adobe_cmykcolor_vars 2 dict dup begin put + /_setrgbcolor + /setrgbcolor load def + /_currentrgbcolor + /currentrgbcolor load def + Adobe_cmykcolor begin + Adobe_cmykcolor + { + dup xcheck + { + bind + } if + pop pop + } forall + end + end + Adobe_cmykcolor begin + } ifelse +} def +/terminate % - terminate - +{ +currentdict Adobe_cmykcolor eq + { + end + } if +} def +/setcmykcolor % cyan magenta yellow black setcmykcolor - +{ +1 sub 4 1 roll +3 + { + 3 index add neg dup 0 lt + { + pop 0 + } if + 3 1 roll + } repeat +Adobe_cmykcolor_vars /_setrgbcolor get exec +pop +} def +/currentcmykcolor % - currentcmykcolor cyan magenta yellow black +{ +Adobe_cmykcolor_vars /_currentrgbcolor get exec +3 + { + 1 sub neg 3 1 roll + } repeat +0 +} def +currentdict readonly pop end +setpacking +%%EndProcSet +%%BeginProcSet: Adobe_cshow 0 0 +% cshow Operator +% Version 1.0 5/9/1988 +% Copyright (C) 1987, 1988 +% Adobe Systems Incorporated +% All Rights Reserved +currentpacking true setpacking +userdict /Adobe_cshow 3 dict dup begin put +/initialize % - initialize - +{ +/cshow where + { + pop + } + { + userdict /Adobe_cshow_vars 1 dict dup begin put + /_cshow % - _cshow proc + {} def + Adobe_cshow begin + Adobe_cshow + { + dup xcheck + { + bind + } if + userdict 3 1 roll put + } forall + end + end + } ifelse +} def +/terminate % - terminate - +{ +} def +/cshow % string proc cshow - +{ +Adobe_cshow_vars + exch /_cshow + exch put + { + 0 0 Adobe_cshow_vars /_cshow get exec + } forall +} def +currentdict readonly pop end +setpacking +%%EndProcSet +%%BeginProcSet: Adobe_customcolor 0 0 +% Custom Color Operators +% Version 1.0 5/9/1988 +% Copyright (C) 1987, 1988 +% Adobe Systems Incorporated +% All Rights Reserved +currentpacking true setpacking +userdict /Adobe_customcolor 5 dict dup begin put +/initialize % - initialize - +{ +/setcustomcolor where + { + pop + } + { + Adobe_customcolor begin + Adobe_customcolor + { + dup xcheck + { + bind + } if + pop pop + } forall + end + Adobe_customcolor begin + } ifelse +} def +/terminate % - terminate - +{ +currentdict Adobe_customcolor eq + { + end + } if +} def +/findcmykcustomcolor % cyan magenta yellow black name findcmykcustomcolor object +{ +5 packedarray +} def +/setcustomcolor % object tint setcustomcolor - +{ +exch +aload pop pop +4 + { + 4 index mul 4 1 roll + } repeat +5 -1 roll pop +setcmykcolor +} def +/setoverprint % boolean setoverprint - +{ +pop +} def +currentdict readonly pop end +setpacking +%%EndProcSet +%%BeginProcSet: Adobe_Illustrator881 0 0 +% Adobe Illustrator (TM) Prolog +% Version 1.0 5/9/1988 +% Copyright (C) 1987, 1988 +% Adobe Systems Incorporated +% All Rights Reserved +currentpacking true setpacking +userdict /Adobe_Illustrator881 72 dict dup begin put +% initialization +/initialize % - initialize - +{ +userdict /Adobe_Illustrator881_vars 29 dict dup begin put +% paint operands +/_lp /none def +/_pf {} def +/_ps {} def +/_psf {} def +/_pss {} def +% text operands +/_a null def +/_as null def +/_tt 2 array def +/_tl 2 array def +/_tm matrix def +/t {} def +% color operands +/_gf null def +/_cf 4 array def +/_if null def +/_of false def +/_fc {} def +/_gs null def +/_cs 4 array def +/_is null def +/_os false def +/_sc {} def +/_i null def +Adobe_Illustrator881 begin +Adobe_Illustrator881 + { + dup xcheck + { + bind + } if + pop pop + } forall +end +end +Adobe_Illustrator881 begin +Adobe_Illustrator881_vars begin +newpath +} def +/terminate % - terminate - +{ +end +end +} def +% definition operators +/_ % - _ null +null def +/ddef % key value ddef - +{ +Adobe_Illustrator881_vars 3 1 roll put +} def +/xput % key value literal xput - +{ +dup load dup length exch maxlength eq + { + dup dup load dup + length 2 mul dict copy def + } if +load begin def end +} def +/npop % integer npop - +{ + { + pop + } repeat +} def +% marking operators +/sw % ax ay length string sw x y +{ +stringwidth +exch 5 -1 roll 3 index 1 sub mul add +4 1 roll 3 1 roll 1 sub mul add +} def +/ss % ax ay length string matrix ss - +{ +3 -1 roll pop +4 1 roll + { + 2 npop (0) exch + 2 copy 0 exch put pop + gsave + false charpath + currentpoint + 4 index setmatrix + stroke + grestore + moveto + 2 copy rmoveto + } cshow +3 npop +} def +% path operators +/sp % ax ay length string sp - +{ +exch pop + { + 2 npop (0) exch + 2 copy 0 exch put pop + false charpath + 2 copy rmoveto + } cshow +2 npop +} def +% path construction operators +/pl % x y pl x y +{ +transform +0.25 sub round 0.25 add exch +0.25 sub round 0.25 add exch +itransform +} def +/setstrokeadjust where +{ +pop true setstrokeadjust +/c % x1 y1 x2 y2 x3 y3 c - +{ +curveto +} def +/C +/c load def +/v % x2 y2 x3 y3 v - +{ +currentpoint 6 2 roll curveto +} def +/V +/v load def +/y % x1 y1 x2 y2 y - +{ +2 copy curveto +} def +/Y +/y load def +/l % x y l - +{ +lineto +} def +/L +/l load def +/m % x y m - +{ +moveto +} def +} +{ +/c +{ +pl curveto +} def +/C +/c load def +/v +{ +currentpoint 6 2 roll pl curveto +} def +/V +/v load def +/y +{ +pl 2 copy curveto +} def +/Y +/y load def +/l +{ +pl lineto +} def +/L +/l load def +/m +{ +pl moveto +} def +} ifelse +% graphic state operators +/d % array phase d - +{ +setdash +} def +/cf % - cf flatness +currentflat def +/i % flatness i - +{ +dup 0 eq + { + pop cf + } if +setflat +} def +/j % linejoin j - +{ +setlinejoin +} def +/J % linecap J - +{ +setlinecap +} def +/M % miterlimit M - +{ +setmiterlimit +} def +/w % linewidth w - +{ +setlinewidth +} def +% path painting operators +/H % - H - +{} def +/h % - h - +{ +closepath +} def +/N % - N - +{ +newpath +} def +/n % - n - +/N load def +/F % - F - +{ +_pf +} def +/f % - f - +{ +closepath +F +} def +/S % - S - +{ +_ps +} def +/s % - s - +{ +closepath +S +} def +/B % - B - +{ +gsave F grestore +S +} def +/b % - b - +{ +closepath +B +} def +/W % - W - +{ +clip +} def +% text painting operators +/ta % length string ta ax ay length string +{ +_as moveto +_tt aload pop 4 -2 roll +} def +/tl % - tl - +{ +_tl aload pop translate +} def +/as % - as array +{ +{ +0 0 +} +{ +2 copy _tt aload pop 4 -2 roll sw +exch neg 2 div exch neg 2 div +} +{ +2 copy _tt aload pop 4 -2 roll sw +exch neg exch neg +} +{ +0 0 +} +} cvlit def +/z % literal size leading tracking align z - +{ +/_a exch ddef +/_as as _a get ddef +_a 2 le + { + 0 _tt astore pop + 0 exch neg _tl astore pop + } + { + 0 exch neg _tt astore pop + neg 0 _tl astore pop + } ifelse +exch findfont exch scalefont setfont +} def +/tm % matrix tm - +{ +_tm currentmatrix pop +concat +} def +/I % matrix I - +{ +tm +/t + { + ta sp + tl + } ddef +} def +/o % matrix o - +{ +tm +/t + { + ta 4 npop + tl + newpath + } ddef +} def +/e % matrix e - +{ +tm +/t + { + ta _psf + tl + newpath + } ddef +} def +/r % matrix r - +{ +tm +/t + { + ta _tm _pss + tl + newpath + } ddef +} def +/a % matrix a - +{ +tm +/t + { + 2 copy + ta _psf + newpath + ta _tm _pss + tl + newpath + } ddef +} def +/T % - T - +{ +_tm setmatrix +} def +% font operators +/Z % array literal literal direction Z - +{ +pop +findfont begin +currentdict dup length 1 add dict begin + { + 1 index /FID ne + { + def + } + { + 2 npop + } ifelse + } forall +/FontName exch def dup length 0 ne + { + /Encoding Encoding 256 array copy def + 0 exch + { + dup type /nametype eq + { + Encoding 2 index 2 index put pop + 1 add + } + { + exch pop + } ifelse + } forall + } if pop +currentdict dup end end +/FontName get exch definefont pop +} def +% group operators +/u % - u - +{} def +/U % - U - +{} def +/q % - q - +{ +gsave +} def +/Q % - Q - +{ +grestore +} def +% place operators +/` % matrix llx lly urx ury string ` - +{ +/_i save ddef +6 1 roll 4 npop +concat +userdict begin +/showpage {} def +false setoverprint +pop +} def +/~ % - ~ - +{ +end +_i restore +} def +% color operators +/O % flag O - +{ +0 ne +/_of exch ddef +/_lp /none ddef +} def +/R % flag R - +{ +0 ne +/_os exch ddef +/_lp /none ddef +} def +/g % gray g - +{ +/_gf exch ddef +/_fc +{ +_lp /fill ne + { + _of setoverprint + _gf setgray + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +exch pop +ashow +} ddef +/_lp /none ddef +} def +/G % gray G - +{ +/_gs exch ddef +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _gs setgray + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_lp /none ddef +} def +/k % cyan magenta yellow black k - +{ +_cf astore pop +/_fc +{ +_lp /fill ne + { + _of setoverprint + _cf aload pop setcmykcolor + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +exch pop +ashow +} ddef +/_lp /none ddef +} def +/K % cyan magenta yellow black K - +{ +_cs astore pop +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _cs aload pop setcmykcolor + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_lp /none ddef +} def +/x % cyan magenta yellow black name gray x - +{ +/_gf exch ddef +findcmykcustomcolor +/_if exch ddef +/_fc +{ +_lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +exch pop +ashow +} ddef +/_lp /none ddef +} def +/X % cyan magenta yellow black name gray X - +{ +/_gs exch ddef +findcmykcustomcolor +/_is exch ddef +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_lp /none ddef +} def +% locked object operators +/A % value A - +{ +pop +} def +currentdict readonly pop end +setpacking +%%EndProcSet +%%EndProlog +%%BeginSetup + +Adobe_cmykcolor /initialize get exec +Adobe_cshow /initialize get exec +Adobe_customcolor /initialize get exec +Adobe_Illustrator881 /initialize get exec +%%EndSetup +0 O +0 g +0 R +0 G +1 i 0 J 0 j 0.1 w 10 M []0 d +%%Note: +401.983 289.058 m +405.345 288.036 406.92 283.42 405.5 278.75 c +404.08 274.08 400.203 271.122 396.84 272.145 c +393.477 273.167 391.902 277.782 393.322 282.453 c +394.743 287.123 398.62 290.08 401.983 289.058 c +b +399.411 280.601 m +B +0.2 g +0.2 G +405.75 284.25 m +400 284.25 395.93 283.289 396.84 272.145 C +406.25 271.75 405.75 282.551 405.75 284.25 C +b +0 g +0 G +394 284.25 m +396 283.25 396 283.25 y +393.75 280.25 396 283.25 v +398.25 286.25 399.5 287 402 286.5 C +401.5 288.75 402.419 288.844 401.983 289.058 c +397.5 291.25 394.559 284.25 394 284.25 C +b +1 G +396.25 272.75 m +396.5 279.25 396.75 283.5 400.25 284 c +S +396.25 282 m +394.75 279.5 393.5 278.5 y +S +0.9 g +0.9 G +397.25 286.75 m +397 284.25 l +403.75 284 l +403.25 286.5 403.5 286.5 v +403.75 286.5 397.25 286.5 397.25 286.75 c +b +0 g +1 G +398.25 287.25 m +398.5 287.25 397.75 284 398 284 c +S +0.9 g +0.9 G +403.25 288.25 m +403.25 285.25 403 285.5 405.5 285.5 C +405 286.25 403 288.25 403.25 288.25 C +b +0 g +0 G +1 w +143.5 159.75 m +150.75 159 157.75 162.75 V +157.5 162.75 143.323 164.677 143.5 164.5 C +143.5 159.5 143.5 160 143.5 159.75 c +b +1 G +4 M +219 316.5 m +268.5 311.5 270 309 y +292 309 l +333 325 l +356.5 332.5 371.5 305.5 375.5 282 C +298.5 290 245 290.5 224 282.5 C +223.5 282.5 196.5 277.5 y +161 277 l +171 317 l +170.5 317.5 219 316.5 y +s +0 G +197 156.5 m +188.5 156.5 188.5 156.5 y +188.5 155 l +186.5 155 l +186 157.5 l +187.369 153.479 187.5 159 v +189 222 205.5 266 224.5 206.5 C +231 185.5 236.5 180.5 243 179 C +244 170 241.5 165.5 258.5 165.5 C +279 165.5 L +293.5 156.5 319.5 154.5 Y +258.5 154 253.5 154.75 255 147.75 C +253.75 119.75 240 109.5 236.5 109 C +218 109 L +206.5 109.5 197.5 141 197 156.5 C +b +0.1 g +0.1 G +218 227.897 m +228.935 227.897 237.799 201.304 237.799 168.5 c +237.799 135.696 228.935 109.103 218 109.103 c +207.065 109.103 198.201 135.696 198.201 168.5 c +198.201 201.304 207.065 227.897 218 227.897 c +b +218 168.5 m +B +0.9 g +0.9 G +214.5 211.169 m +224.263 211.169 232.178 190.274 232.178 164.5 c +232.178 138.726 224.263 117.831 214.5 117.831 c +204.737 117.831 196.822 138.726 196.822 164.5 c +196.822 190.274 204.737 211.169 214.5 211.169 c +b +214.5 164.5 m +B +0 g +0 G +216.5 203.684 m +223.139 203.684 228.521 186.588 228.521 165.5 c +228.521 144.412 223.139 127.316 216.5 127.316 c +209.861 127.316 204.479 144.412 204.479 165.5 c +204.479 186.588 209.861 203.684 216.5 203.684 c +b +216.5 165.5 m +B +218 189.749 m +222.686 189.749 226.485 178.668 226.485 165 c +226.485 151.332 222.686 140.251 218 140.251 c +213.314 140.251 209.515 151.332 209.515 165 c +209.515 178.668 213.314 189.749 218 189.749 c +b +218 165 m +B +0.995 g +0.995 G +216.75 141.25 m +198.5 161.5 201 171.5 218.5 189.5 C +231.25 185.25 226.75 134.25 216.75 141.25 C +b +1 g +0 G +216.25 189.5 m +219.25 193.5 222.75 195.25 Y +229.5 183 228.75 148 223 136 C +219 135.5 216.75 139.5 Y +220.5 138.5 226.5 142.75 227 165.25 c +227.461 186.008 219.75 192.5 216.25 189.5 C +b +0.8 g +116.5 213.855 m +122.358 213.855 127.107 198.026 127.107 178.5 c +127.107 158.974 122.358 143.145 116.5 143.145 c +110.642 143.145 105.893 158.974 105.893 178.5 c +105.893 198.026 110.642 213.855 116.5 213.855 c +b +116.5 178.5 m +B +0.1 g +0.1 G +10 M +127 167 m +123.051 138.514 113.625 137.75 109.25 153 C +110.5 148 116.5 137.5 118.5 136 C +136.686 135.767 134.375 136 y +141.75 142.75 144.25 162 143.5 164.5 C +143.5 164.75 127 167 Y +b +0.6 g +0.6 G +4 M +96 184.5 m +97 234.5 108 247.5 128 248.5 C +139.5 314.5 156.5 329.5 169 332 C +194 355 339 348.5 361 325.5 C +376 307.5 386 277.5 389 278.5 C +408 276.5 418 255.5 417 251 C +466 248.5 486 230.5 479 178.5 C +243 178.5 L +227 184.5 220.5 221 219.5 219.5 C +211.5 242.5 190 249.5 187.5 158 C +127 167 L +119.5 170 121 170.5 121 175.5 C +118.5 230.5 101 257.5 96 184.5 C +b +0.85 g +0.85 G +162.5 317.5 m +151 316 134.5 266.75 143.25 276 C +154.5 279.25 L +162.5 317.5 l +B +1 g +0 G +212 305.5 m +212 328 202.994 337.748 283 337.5 c +363.75 337.25 359.75 327 372 304 c +392.183 266.106 354 290.25 291 289.5 c +218.003 288.631 212 274.898 212 305.5 c +b +0 g +0.4 G +322.75 314.25 m +322.75 311.5 319.25 306 319.25 305 C +316.25 297.5 316.5 292.75 316.75 291.75 c +S +325.75 297 m +324.5 292.75 322 290.75 y +S +0.8 g +0 G +0.2 w +363.5 284.25 m +357.75 317 L +358.5 316.25 L +364.25 284 L +363.5 284.25 L +b +0.2 g +357.75 316.5 m +363.5 284.25 L +362 284.5 L +356.5 318 L +358 317.5 l +B +0.7 g +0.2 G +218 298.75 m +253.5 293 l +253.25 291.5 l +217.75 297.5 l +218 298.75 L +b +0 g +0 G +239.75 294 m +241.25 295.5 242.25 295 242.75 294.25 C +239.75 294 L +b +0.4 g +0.4 G +0.25 w +214 311 m +248 310.5 259.5 305.5 260.5 289.25 C +284.5 290.25 l +296.545 289.752 296.5 290.25 v +295.5 301.25 308.5 314.75 321.5 315.75 C +325 314.25 327 288.75 326 288.75 C +340.5 287.25 L +334.5 320.75 330 319.75 341.5 321.25 C +351.5 318.25 358.75 329 372.25 286.5 C +373 292.75 L +361.793 323.81 355.695 337.356 282.5 336.25 C +241 332.5 209.5 341.5 214 311 C +b +0.8 g +0 G +0.2 w +317 289.5 m +323.75 294 333 295.75 341.75 287 C +344 286.75 L +337 296.75 324 298 314.75 289.75 C +317 289.5 L +b +1 g +264.25 296.75 m +259.75 296.75 261.794 294.492 264.5 294 C +274.5 292.25 L +274.75 295.5 L +264.25 296.75 L +b +0 g +263.25 294.25 m +261.5 294.25 259.75 292.75 263 291.75 C +272 289.25 l +274.25 292.25 L +263.25 294.25 L +b +0.7 g +0.2 G +261.5 295.5 m +262.25 293.75 261 293.75 y +239 294 l +239 295.75 l +261.5 295.5 l +b +1 g +0 G +284 334 m +287.25 327.5 287.75 323 Y +295.75 322.75 296.502 323.728 297 318 c +297.5 312.25 295 313.25 286.25 313.25 c +277.5 313.25 270.75 311.5 271.5 317 c +272.216 322.249 268.75 323.75 285.25 323 C +284.75 328.75 282.25 333.75 Y +284 334 L +b +0 g +1 w +364.75 283.75 m +385.667 281.744 361 317.338 361 318.5 C +355 329.5 331 334 323.75 334.25 C +316 335.75 307.5 335.5 278.5 336 C +205.974 335.566 214.34 327.988 213.5 309.5 C +215 288.5 207 283 253 289 C +301.5 294 349.5 286 364.5 284 c +S +197 156.5 m +188.5 156.5 l +B +274.5 153.5 m +274.5 142 281.407 136.084 286.25 135.75 c +293.5 135.25 298 136 Y +302.75 136.75 309.75 150.5 310 154 C +274.5 153.5 L +b +451.5 164 m +451.5 164 474 164.5 V +474.5 156 475.75 126.75 454.25 111.25 C +432.75 111.25 L +425.25 115.25 410.75 123 410 155.5 C +451.5 161 451.5 164 V +b +96 185.5 m +101 180.5 105 182 106 181.5 C +106.5 205 111 212.5 115.5 214.5 C +111.5 234.5 100 243.5 96 185.5 C +b +0.1 g +0.1 G +128 248.5 m +128 231.992 132 177 133.5 176 C +185.5 175 l +185 170.5 l +134 174.5 l +133.5 176 L +147 176 L +142.366 183.878 142.513 187.435 137 214 C +137.5 217 135 235.5 128.5 247.5 c +B +0 g +1 G +194 325 m +185.5 328 182.292 327.323 175 325.5 c +169 324 168 324 167 318.5 c +166 313 161 284 y +161.5 278 155.5 276.5 184 279 c +S +0.8 g +0.8 G +164 317 m +155.5 282 156.5 280.5 y +158 282.5 l +163.5 315 164 317 V +b +0.1 g +0.1 G +184.5 333.5 m +B +0.6 g +0.6 G +175 336.5 m +197.5 336.5 202.5 332.5 205.5 328 c +208.5 323.5 208 323.5 Y +215 334.5 218.5 339 248.5 339 c +278.5 339 319.135 338.027 324 336.875 C +325.875 337.5 326.875 337.5 324.125 338.625 C +306.5 346 220.5 354 175 336.5 C +b +0 g +0.9 G +186.5 159.5 m +186 220.5 195 256.5 251.5 254 c +S +210 242.5 m +218.5 252 243 254.5 260 251 C +S +99 213.5 m +102.75 234.5 110.5 236.5 116 215.75 c +S +1 g +1 G +242 259 m +256 254.5 265.25 257.75 245.25 262.75 C +225.75 267.75 211.25 266.75 210.75 267.25 C +201.75 268.75 202.5 262 210.5 263.5 C +227.5 261.5 242 259 Y +b +0.9 g +0.9 G +128.625 252.125 m +130.125 265.625 136.625 263.125 196.125 263.625 C +196.125 268.125 L +137.625 267.625 127.625 269.625 128.625 252.125 C +b +0.1 g +0 G +204 270.5 m +196 268 l +196 257.5 l +199.5 257.5 L +196.5 246.5 197.5 231.5 Y +200.5 235 L +200.5 245 200.5 254 203.5 257.5 C +207.25 263 L +B +0.2 g +0.2 G +191.25 282.75 m +197.75 282.75 l +197 281.25 l +B +0 g +0.3 G +168 329.75 m +162 300 157 270 Y +154.5 267.5 l +S +0.2 G +0.25 w +153 263.5 m +144.5 214.5 150 178 150.5 176.5 c +S +0.1 g +0.1 G +1 w +156.375 259.75 m +158.125 261.5 161.75 260.75 161.125 257.375 C +160.5 255.625 158.75 254 Y +156.375 253.5 152.125 256.75 156.375 259.75 C +b +0.9 g +0.9 G +148.5 260 m +148 256.5 l +163.5 256.125 L +155.5 260 l +148.5 260 L +b +0.1 g +0.1 G +162.375 256.875 m +162.875 256.25 162.125 256.125 y +B +0.4 g +0.4 G +148 256.625 m +159.625 256.875 L +161.125 256.125 163 255.75 163.25 256.125 C +148.875 255.625 L +148 256.625 L +b +0.9 g +0.9 G +152.375 256.125 m +152 254.625 154.375 254.375 154.125 256.125 C +152.375 256.125 L +b +0 g +0.4 G +152.75 255.375 m +153.375 254.75 153.875 255.5 y +S +1 G +152 277.5 m +142.5 275 141.5 274.5 V +132.66 266.59 146.721 313.095 160.5 319 C +163 318.5 160 313.5 y +S +0.2 G +152.75 276.5 m +140.5 273 139.5 272.5 V +130.5 269 147 316.75 160.5 320.5 C +163 320 163 319 y +S +141.25 274 m +135.75 271 149.5 313 161.5 318 C +S +0.1 g +0.1 G +149.25 315.75 m +158.75 328.25 163.25 331.25 178 333 C +215.5 332 207.036 320.828 206.5 270.5 C +204 269.5 L +205.71 317.369 204 322.5 v +202.75 326.25 197.25 330.5 190 331.25 C +174.25 332.5 161.5 332.75 149.25 315.75 C +b +414.5 259.375 m +430.5 230.5 417.5 201 Y +414.5 201 L +428.5 233 413 262.5 v +B +415.5 257 m +422 229 404.5 201 Y +408.5 201 L +424.782 229.795 415.5 257 v +B +315.5 165 m +B +280 165.5 m +B +435 153 m +B +277.5 173.5 m +271.5 160 318.5 154.5 324 153.5 C +358 149 356 151 368.5 150.5 c +385.604 149.816 458 162.5 459 167.5 C +409 168 277.5 173.5 Y +b +317.125 181.625 m +319.75 170.875 316.125 165.75 v +B +0.2 g +0.2 G +382 201 m +379.437 215.868 369.5 253.5 362 263.5 C +386 259 409.5 251 409 249.5 C +413.5 246.5 415 245.5 Y +415.5 223 406.5 204.5 405 201 C +382 201 L +b +351 201.5 m +335 241.5 276 273.5 V +326 273.5 348.5 265.5 351 264.5 C +373 235.5 371 201.5 Y +351 201.5 L +b +0.4 g +0.4 G +419.5 251 m +421.5 251 424.5 250.5 y +B +0.2 g +0.2 G +441 248 m +462.75 242.75 478 233 480.5 199 C +476 202 466 201 Y +463.5 201 L +472.5 211.5 471 221 468.5 225 C +473 217 476.5 223.5 469 232.5 C +459.625 244.125 443.875 246.5 441 248 C +b +421 244.25 m +437 244.75 450.75 238.25 Y +426.756 241.091 425.75 208.25 441.25 202.5 C +441.75 201 L +418.25 201 L +427 224.5 421 244.25 Y +b +347.5 201 m +341 216 300.5 261 273 270.5 C +262.5 277 225.5 274 245.5 269.5 C +256.5 266.5 290.5 255 317 220.5 C +327.5 207 331 201 Y +347.5 201 L +b +0.4 g +0.4 G +207.5 237.5 m +220.5 254.5 253 258 279 240.5 C +243.5 240.5 255.5 194.5 282 197.5 C +298.5 182 L +248 180 243.5 182 V +232.5 182 227 211.5 224.5 219.5 C +217.851 235.014 214.316 239.318 207.5 237.5 C +b +1 g +0.1 G +0.25 w +325.5 165.5 m +319.5 162.5 318 160.5 315.5 165.5 C +266.5 165 255.5 165.5 v +244.5 166 243 169 243 180.5 C +243 186.5 247 182 265 182 c +283 182 283 182 Y +374.5 181.5 474.5 182.5 477.5 182.5 C +485 179 l +485 180.5 L +491 174.5 490.5 165.5 474 164.5 C +452 165 451.5 164.5 V +450.5 166.5 448 159 440.5 164.5 C +325 165 L +319.5 161 317 163 315 165.5 C +B +0.98 g +1 w +267 201.5 m +250 214 256.5 243 277.5 239.5 C +298 238.5 306.5 210.5 292.5 201 c +278.5 191.5 264.5 203 267 201.5 C +b +0.9 g +270.5 236 m +255 229 263 207.5 273.5 203.5 C +290.5 193.5 299.25 211.75 296.25 220.25 C +293.25 234.25 279.5 239.5 270.5 236 C +b +0.2 g +0.2 G +213.75 279.5 m +210.75 279.5 209.25 273.5 220.5 276.75 C +247.25 278.25 264.25 275.5 Y +260.25 277 L +286 281.25 323.75 282.25 329.25 281 C +319.25 288 296.75 290.75 293 289.25 C +264.5 289 215.25 287 213.75 279.5 C +b +342.625 280.875 m +360.875 281.625 389.75 278 391.75 276.75 C +361.5 284.25 330.75 286.75 Y +339.5 283.25 340.875 280.875 342.625 280.875 C +b +0.1 g +0.1 G +206 268 m +207.5 273 211 272.5 213.5 272.5 C +214.5 271 216 272 Y +259.386 271.496 298.78 245.171 319.5 213 C +321.5 200.5 L +290.5 200 L +309.5 213 294 234 287.5 237 C +282.5 240.75 281.5 241 280.25 241.5 C +270.5 247.25 270.25 247.5 y +266.25 257.5 L +246.5 267 228.5 271 215.75 270.25 C +214.5 270.75 213.75 271 215.75 272.25 c +B +1 g +1 G +270.625 254.375 m +B +0.5 g +0.2 G +0.1 w +271.563 253.25 m +271.188 255.625 270.313 254.125 Y +270.662 252.845 272.88 252.238 268.688 254.125 C +268.063 254.625 267.813 255 267.563 254 C +266.563 255.25 265.813 255.25 266.063 253.875 C +266.188 252.5 266.188 252.375 Y +265.813 252.5 l +B +1 g +1 G +1 w +270.625 254.375 m +B +0.1 g +0.1 G +116.5 208.595 m +120.015 208.595 122.864 195.457 122.864 179.25 c +122.864 163.043 120.015 149.905 116.5 149.905 c +112.985 149.905 110.136 163.043 110.136 179.25 c +110.136 195.457 112.985 208.595 116.5 208.595 c +b +116.5 179.25 m +B +0.998 g +0 G +0.25 w +119 197.5 m +117.75 196.688 117 195.563 Y +119.188 195.938 119.625 192.875 Y +119 197.5 l +b +0 g +0.3 G +0.1 w 10 M +121 198.75 m +104.75 186.25 104.25 174.75 120.75 157 C +124.25 174.25 122.25 196.25 121 198.75 C +s +1 G +0.25 w +111.25 185.75 m +116.75 185 119.875 182.25 y +S +0.7 g +0.7 G +112 170 m +113.5 170 114.75 173.625 Y +114.625 173.625 120.875 173.375 Y +120.625 170.75 121.5 169.375 122.5 169.25 C +122.5 169.375 120.25 159.625 y +119.625 159.125 L +113.75 165.5 112.125 170 112 170 C +b +0.5 g +0.5 G +113.688 171.313 m +114.063 171.938 114.75 173.75 Y +114.625 173.75 120.875 173.5 Y +120.625 170.875 121.5 169.5 122.5 169.375 C +122.5 169.5 121.875 166.875 y +121.75 166.313 L +118.063 166.813 113.813 171.313 113.688 171.313 C +b +0.998 g +0 G +4 M +122 169.625 m +120.563 160.5 120.25 160.063 118 159.813 C +119.5 157.875 120.5 156.75 120.75 157 C +122.125 163.625 122.5 169.25 Y +122 169.625 l +b +0.9 g +0.1 w +110.754 185.312 m +111.925 185.312 112.875 182.542 112.875 179.125 c +112.875 175.708 111.925 172.938 110.754 172.938 c +109.582 172.938 108.632 175.708 108.632 179.125 c +108.632 182.542 109.582 185.312 110.754 185.312 c +b +110.754 179.125 m +B +0 g +0.2 G +10 M +109.125 180.813 m +109.25 183 110.257 184.937 110.754 185.312 c +S +0 G +108.688 179.813 m +109.063 181.25 109.93 181.496 110.5 181.813 c +111.063 182.125 112.125 182.438 112.25 183.5 c +S +109.313 174.938 m +109.688 176.375 110.555 176.621 111.125 176.938 c +111.688 177.25 112.75 177.563 112.875 178.625 c +S +0.7 G +0.25 w 4 M +112.75 167.25 m +112.75 159.5 115.25 150.25 118.25 152.5 c +S +116.5 206.75 m +113.5 205.25 112.75 191 y +S +0.7 g +1 w +218 141.25 m +206.25 153.25 204.75 160.25 205.25 164.75 C +208.25 167 L +215 163.75 224.75 163.5 y +225.75 162 L +224.75 152.75 222.5 141.5 219 141 C +B +0.5 g +0.5 G +224.75 153.25 m +218.5 154.75 204.75 160.25 205.25 164.75 C +208.25 167 L +215 163.75 224.75 163.5 y +225.75 162 L +224.886 154.008 224.114 153.159 224.75 153.25 C +B +0 g +0.7 G +0.25 w +210.75 164.5 m +215.875 162.625 222.25 162.125 y +S +206.625 153.125 m +209 131.25 216.625 125.625 219.375 130.75 c +S +206.75 177.375 m +208.25 186 210.125 194.25 210.75 195 c +S +0.5 G +210.75 195 m +213 203 218.5 204.5 221 200.625 c +S +0.8 g +0.8 G +1 w +206 170.5 m +207.5 170.25 208.75 169 Y +215 178.375 221.25 182.5 221.5 182.75 C +222.25 184.25 222.125 185 y +221.625 187.125 218.75 188.625 y +213.75 183.625 207 175.75 206 170.5 C +b +0 g +0 G +207.146 172.117 m +208.722 172.117 210 168.595 210 164.25 c +210 159.905 208.722 156.383 207.146 156.383 c +205.57 156.383 204.293 159.905 204.293 164.25 c +204.293 168.595 205.57 172.117 207.146 172.117 c +s +207.146 164.25 m +S +205.75 171.25 m +206.25 168.625 209.75 165.375 y +209.875 165.375 204.336 164.25 204.293 164.25 c +S +204.625 167.625 m +204.75 164.25 209.25 159.75 Y +206.125 158.875 205.5 158.125 y +S +0.8 g +0.8 G +219 316.5 m +B +1 g +0.4 G +0.1 w +317 182.5 m +317 194 L +327 193.5 l +327 182.5 l +317 182.5 L +b +0.2 G +317.5 201 m +317.5 206.5 317.5 207 Y +312.988 211.248 320.5 212.5 v +326.5 213.5 326 209 326.5 207.5 C +326.5 201 326.5 201 y +317.5 201 L +b +0 g +0 G +1 w +282.5 201.5 m +287.5 203.5 287 203.5 290.5 206.5 c +S +292.5 209.5 m +294 212 294.5 214.5 294.5 216 c +S +0.8 g +0.7 G +0.5 w +271.5 236.25 m +288.75 239 300.75 220.5 291.5 208 C +273 185 248 228.75 271.5 236.25 C +b +0.7 g +0.3 G +0.75 w +273.5 203.5 m +283 204.5 283.5 205 Y +283.5 206.5 L +286 206.5 l +286.5 208 l +288 208.5 L +288 210.5 288 210.5 Y +291 220.5 291 220.5 Y +287.5 234 272.5 242 262.5 224.5 C +261 212 269 205 273.5 203.5 C +b +0.95 g +0.6 G +0.25 w +280 231 m +278 228.5 276.5 227 y +283 225 284 222.5 285 220.5 C +287.5 219.5 l +288.5 222 288 222.5 V +284.5 231 280 231 Y +b +0 g +0.4 G +0.35 w +275 227 m +269.75 227 268 224.25 y +S +285.25 219 m +285.75 215.5 284.5 213 y +S +0.95 g +0.65 G +0.25 w +263.25 216.5 m +267.25 218.75 L +269 209.25 278.5 209.5 Y +281.5 203.25 281.5 203.5 y +275.5 202.25 l +267 206 263.25 212.75 263.25 216.5 c +b +274.5 212 m +276.5 209.75 280.75 211.25 Y +281 213 280.75 213.75 y +282.5 214.75 282.5 216.25 y +281 217.5 280.368 217.25 279.25 217.25 C +279 217.5 277.75 219.5 y +275.75 219 276.75 221.25 275.5 219 c +274.772 217.689 276 216.75 y +275.25 215.5 274.75 217.25 274.5 215 c +274.25 212.75 274.5 212 Y +b +0.98 g +0.1 G +0.75 w +437.375 235 m +468.75 251.5 484 202.25 454.75 199.25 C +437.25 194 420.75 223.75 439.25 236.25 c +B +0.9 g +456.5 202 m +434.25 202.5 428 231 447.25 236 C +467.75 239.5 477.75 207 456.5 202 C +b +0.85 g +0.7 G +0.25 w +463.5 209.75 m +471.75 232.75 450.25 240.5 440.75 231.75 C +427 218.5 451 187.75 463.5 209.75 C +b +0.7 g +0.3 G +441.75 230 m +450.25 236 464.75 231 463.5 218 C +456.5 183.75 426 217.5 441.75 230 C +b +0.95 g +0.6 G +453.5 225.25 m +453 227 452.983 227.808 453.75 228 c +454.75 228.25 453.5 229.5 y +452.774 230.4 454 230.75 v +455.75 231.25 460.25 228 460 226.75 C +460.75 224.75 460.5 224.25 459 224.5 c +457.5 224.75 454.25 225 y +454.25 224.75 453.5 225.25 y +b +0.1 w +444.75 213.75 m +443.25 217.5 443.25 217 448.25 220 c +453.25 223 453 223 y +456.25 220 457.5 219 460.25 218.75 C +462.5 219.25 459.25 207 456.75 206.25 C +450.25 205.25 444.5 202.75 444.75 213.75 C +b +0 g +0.1 G +0.5 w +459.563 204.688 m +456.625 202.688 456.438 202.813 v +S +464.938 215.188 m +464.375 210.188 461.875 206.75 461.25 206.5 c +S +1 g +0.2 G +0.1 w +442 201 m +440 206 441.5 211.5 442 211.5 C +445 215.5 449 213 450.5 212 C +451 201.5 450.5 201 Y +442 201 L +b +0.1 g +0.1 G +1 w +444 212.875 m +445.875 213.875 448.5 213.5 449.5 212 c +B +0.95 g +0.6 G +0.25 w +424.875 249.5 m +423.875 253.5 431 255 435.5 254.5 C +438.625 251.25 439.75 246 Y +435 242.75 435.375 241.375 431.875 244.375 C +428.125 247 428.75 246.5 424.875 249.5 C +b +0.3 g +0.3 G +0.5 w +442.25 211.125 m +443.625 211.25 443.5 211.5 444.75 208 c +446 204.5 446.5 201.125 y +442 201 l +440.75 205.75 440.95 211.007 442.25 211.125 c +b +0 g +0.1 G +442.25 211.125 m +443.375 211.125 443.625 211.5 445 207.5 c +S +442 201 m +443.5 200.5 443.375 198.895 443.375 198.5 c +S +0.85 g +0.85 G +475.5 197.5 m +477 198.875 482.875 200.75 484.875 194.625 C +486 187.375 485.5 185.875 Y +485.5 180 l +490 174.125 492.125 163 463.875 165.125 C +463.75 165.125 426.25 165.125 Y +377.75 166 l +346.5 167 L +346.25 167 337.5 166.75 y +332 166.25 l +326.25 165.5 l +316.75 166.5 l +311 166.75 l +306.75 166.25 l +284.75 167 l +272 167.5 l +265 167.5 l +262 167 l +259.25 167 l +257.25 166.25 257 166.25 V +249 168 243.5 165 243.75 180.25 C +244.25 181.5 245 179.5 245.5 177.25 C +245 169 262.5 172 264 171 C +272.75 171.25 287 171.5 y +304.25 170 316.5 171.25 317.25 171.5 c +318 171.75 383.25 170.5 y +476 169.25 L +481.25 169.75 484.25 171.25 y +485.75 171 l +487.25 172.75 488.25 175.5 485.563 179.25 C +485.75 178.688 479.188 182.188 479 182.5 C +478 189.25 477.75 191.5 475.5 193 C +479.75 194.375 479.625 196.5 479.5 197.25 C +477.75 197.875 475.5 197.5 y +b +1 g +0.2 G +1 w +255 181.5 m +257.5 175.5 259 178.5 259.5 183 c +260 187.5 260 195 269.5 194.5 C +382.5 192 473 193 475.5 193 C +479 190.5 478.5 183.5 479 182.5 C +484.5 179.5 485 179 Y +485.25 195.5 488.25 200.75 464 200.5 C +380.5 200 270.5 200.5 270.5 202 C +261 200.5 254.5 198.5 255 181.5 C +b +0.1 g +0.1 G +477.5 192.5 m +482 191 481 184 481 183 c +B +325.875 170.125 m +325.5 168.75 320.125 168.5 318.5 170 C +318.125 170.375 l +318.375 174.375 l +318.625 174 L +320.25 172.5 325.625 172.75 326 174.125 C +326.5 174.75 l +326.375 170.5 l +325.875 170.125 L +b +0 g +0 G +0.5 w +257.5 180 m +259 185.5 260 188.5 259.5 191 c +259 193.5 261.5 197.5 266.5 197.5 C +317 197.5 l +S +0.1 G +449.5 210.5 m +448.5 208.5 448.5 208.5 y +449 206.5 l +447.5 205 447 205 y +447.75 204.375 447.125 202.625 v +446.62 201.212 447.125 199.5 Y +447.375 197.5 l +475.5 197.5 L +481 198 484.5 194.5 485 193 c +S +0.2 G +0.25 w +325.25 211.5 m +324.75 208 325.75 205.25 Y +325.75 201.25 327.5 198.75 319 199.5 c +S +0 G +0.5 w +330.5 197.5 m +439.5 197.5 l +447.375 197.5 l +B +0.2 G +0.25 w +324 199.5 m +326.5 199.25 326.75 198.75 326.75 197.75 C +326.5 196.5 327 195 y +327.25 192.5 327.25 190.5 324 192 c +323.709 192.134 319.498 192.392 319 192.25 C +319.25 192.5 317.25 191.5 y +S +0.95 g +0.95 G +0.5 w +374.25 201.5 m +374.25 205 373.25 210.25 y +374.5 212 375.601 212.027 377 211.25 c +379.25 210 380.5 203.5 380.75 201.5 C +374.5 201.5 374.25 201.5 V +b +0 g +0.1 G +429.75 249.5 m +429.875 251.875 429.875 253.25 430.375 253.125 C +431.25 251.75 430.875 251.25 430.625 250.75 C +430.125 250.125 429.625 249.25 429.75 249.5 C +429.625 254.625 430.5 253.25 436.125 253.625 c +B +0 G +439.25 246.625 m +432.25 246.125 432.5 246.125 430.25 248.75 c +S +0.1 g +0.1 G +429.875 253.375 m +430.39 253.89 429.375 251.5 y +429.375 249 l +431.875 246.375 L +433.875 245.75 439.125 246.25 439.25 246.25 c +439.375 246.25 440.003 246.119 439.75 246 c +433.875 243.25 438.375 239.25 425.25 249.25 C +424.875 250.875 426.5 250 Y +426.5 250.125 426.625 252 y +427.5 252 l +428.25 252.75 l +428.75 253.375 l +429.75 253.25 429.875 253.375 v +b +0 g +1 w +388.5 278.5 m +414.5 274.5 416.125 240.75 401.625 201.25 c +S +0.7 G +345.5 207.5 m +342.5 217.5 292.5 275.5 256 276.5 C +S +1 g +1 G +0.5 w +229 276.5 m +B +0.8 g +0.1 G +277.5 283.75 m +274.25 283.75 275.25 281.125 277 281.5 C +296.875 281.625 296.875 281.625 y +298.75 282.5 297.5 283.75 296.875 283.75 c +296.25 283.75 277.5 283.75 y +b +0 g +0 G +279.625 282 m +280.875 282.75 280.875 282.625 280.875 282.75 c +280.875 282.875 281.25 282.875 y +N +0.6 g +0.6 G +287.75 281.75 m +290 282.5 292.125 282.75 293.625 281.625 C +293.5 281.75 287.875 281.875 287.75 281.75 C +b +0 g +0.2 G +260 180 m +315.5 180 l +S +327 180 m +442 180 l +S +454.5 180 m +476 180 l +S +455 169.5 m +472 168.5 482 169 483 171 c +S +453 168.5 m +473 167.5 482 169.5 484.5 169.5 c +S +328 170.5 m +411.5 168.5 413.5 169 v +S +334.5 170 m +360.5 169 l +S +376.5 169 m +406.5 168 l +S +426.5 167.5 m +446 168.5 l +S +245.5 177.25 m +248 170.5 250 171 262.5 170.5 c +S +245.5 174.5 m +247.5 171 250.5 170.5 252 170 c +253.5 169.5 261.5 169 y +S +256 170 m +274.5 170 l +S +266 171 m +301 172 305 170.5 v +S +317.5 176.5 m +318.5 170 316.5 167.5 315.5 165.5 c +S +0 G +260 185.5 m +260.75 188.875 260.75 194.25 269.5 194.5 C +279 188.5 L +279.5 187 288.5 183.5 y +289.5 182 l +277 182 L +267 188.5 265 192.25 260 185.5 C +b +0.1 g +0.1 G +335.5 193 m +340 186.5 345 182.5 Y +345 183 327 182.5 Y +327 183 327 193.5 Y +335.5 193 L +b +378.75 217.75 m +378.5 217 382 201.75 y +B +0 g +0.2 G +361 168.939 m +361.586 168.939 362.061 169.414 362.061 170 c +362.061 170.586 361.586 171.061 361 171.061 c +360.414 171.061 359.939 170.586 359.939 170 c +359.939 169.414 360.414 168.939 361 168.939 c +s +361 170 m +S +418.5 168.939 m +419.086 168.939 419.561 169.414 419.561 170 c +419.561 170.586 419.086 171.061 418.5 171.061 c +417.914 171.061 417.439 170.586 417.439 170 c +417.439 169.414 417.914 168.939 418.5 168.939 c +s +418.5 170 m +S +1 g +1 G +168.75 306.5 m +177.25 310.25 201.5 311.25 Y +201.25 286.75 201.25 286.75 y +199.75 280.75 200.25 278.75 192 279.25 C +192 279.5 163 279.5 163.25 279.5 c +163.5 279.5 167.75 306.75 168.75 306.5 C +b +0.2 g +0.2 G +1 w +169.75 308 m +171.5 308.25 l +173 321.5 L +173.75 323.25 174.25 324 Y +169.5 322 169.25 324 168 317.75 c +166.75 311.5 161.75 280.5 Y +162.75 279.25 162.75 279.75 163.25 279.5 C +169.25 315.75 L +170.75 315.5 L +169.75 308 L +b +166 280 m +165.5 279 L +185.75 280 l +186 279.25 l +186.75 279.25 l +186.5 281.25 l +166 280 L +b +1 g +0.8 G +189.75 282.25 m +196.25 323.75 L +199 322.75 200.75 318.75 201 318 c +201.25 317.25 202 318 Y +199.75 324.75 195.5 325 Y +188.25 280 L +189.25 279.25 189.75 280.75 Y +195.5 280.75 L +196.75 281.75 197 282.25 y +189.75 282.25 L +b +0.2 g +0.2 G +194.75 310.5 m +190.25 282.75 l +B +0.6 g +0.6 G +168 298.5 m +174.5 290.75 180 303 173 309 c +174 322 175.75 324 V +174.5 323.5 L +172.25 322.25 171.75 308.5 y +178.75 302.5 174.5 291.75 168 299.5 C +168 298.5 L +b +0 g +1 G +170 315 m +164.5 282 l +S +0.2 G +0.5 w +168.75 306.5 m +169 306.5 164.5 280 y +S +0.2 g +1 w +317 194 m +276.75 194.5 277.25 194.25 v +284.25 190.75 291.75 185.25 294.5 182 C +294.5 182.25 317 182.75 317 182.5 C +317.25 194 317 194 V +319 195 320.5 198.25 317.5 201 c +B +0 g +1 G +303.75 185.154 m +308.631 185.154 312.589 187.212 312.589 189.75 c +312.589 192.288 308.631 194.346 303.75 194.346 c +298.869 194.346 294.911 192.288 294.911 189.75 c +294.911 187.212 298.869 185.154 303.75 185.154 c +s +303.75 189.75 m +S +0 G +300.75 193 m +300.75 186.125 l +S +299.25 192.75 m +299.25 186.5 l +S +297.75 192 m +297.75 187.5 l +S +305.25 193.375 m +305.25 186 l +S +303.75 193.5 m +303.75 185.875 l +S +302.25 193.375 m +302.25 186 l +S +309.75 191.75 m +309.75 187.5 l +S +308.25 192.5 m +308.25 187 l +S +306.75 193.125 m +306.75 186.25 l +S +311 188.5 m +311 190.5 l +S +296.5 190.25 m +296.5 188.5 l +S +0.4 G +441 248 m +456.5 243.25 466 238.75 471.25 230 c +S +0.6 g +0.6 G +470.75 220 m +475.5 214.25 474.75 209.5 474.5 201.25 C +465.864 201.827 465.5 201.25 v +472.125 211.75 470.75 219.75 470.75 220 C +b +0.1 g +0.1 G +452 192.5 m +451.823 192.677 475.302 193.152 475.5 193 c +478.75 190.5 479 182.5 y +452.75 182.25 452.25 181.75 452.5 182 c +452.75 182.25 452.25 192.25 452 192.5 c +b +0 g +0 G +452.75 187.5 m +452.75 188.775 454.5 189 y +457.5 190.5 458.5 192.75 458.75 192.75 c +459 192.75 465 193 y +466.5 187.25 470.5 185.25 473 193.25 C +472.75 193.25 475.5 193 Y +477.5 190.25 477 192.5 477.75 189.75 C +476.25 187 475.25 185.5 y +475 183.75 475.5 182.5 473 182.75 C +473 183 452.25 181.5 452.5 182 c +452.75 182.5 452.75 187.25 452.75 187.5 c +b +0.6 g +0.6 G +465 193 m +466.75 187 471 185.5 473 193.25 C +472.75 193.25 465 192.75 465 193 C +b +0.3 g +0.3 G +336.25 193.5 m +378 193 378.5 193 V +379.5 184.5 380 183 371.25 182 C +352.25 182 348.75 182 y +345 182.75 340.5 187.75 336.25 193.5 c +b +0 g +0 G +0.5 w +337 193 m +341 193 l +343.5 191.5 l +347.5 190.5 354.735 188.873 356.5 187.5 c +361 184 374.5 186 Y +374 185.75 376.75 185.5 y +377.75 184.75 377.5 184.5 Y +363.25 183.5 357.75 184.5 355.25 185.75 C +342 187.75 337 192.75 337 193 C +b +0.2 g +0.2 G +221.5 248.25 m +230.5 253 252.75 254.25 260.75 250.75 C +260.5 250.75 262.75 248.5 Y +251 250.75 239.25 252.25 224.5 248.5 C +220.75 247 221.75 248.5 221.5 248.25 C +b +0.3 g +0.3 G +1 w +106 236.5 m +109.25 242.25 116.75 247.5 121.25 247.5 C +126.25 246.75 128.75 245 128.25 237.5 C +128 237.5 132.5 181.75 132.25 182 C +133.5 175 133.75 174.5 134 174.5 c +134.25 174.5 128 171.5 y +125.75 171 125.25 171.25 126 169 c +126.75 166.75 127.5 166.5 127 167 c +126.5 167.5 124.75 167.5 124.25 168.25 C +121.25 180.75 119 189.5 119.75 194 C +116.25 231 116.75 240.75 106 236.5 C +b +0 g +0.1 w 10 M +208.5 263.25 m +223.75 262.25 245.25 259.25 249.75 257 c +S +0.9 g +0.9 G +274.25 314.75 m +279 314.5 285.75 315.25 286.25 316.25 C +287.25 315.375 288.298 316.134 288.5 316.438 C +293.438 313.5 296.188 313.563 296.25 314.875 C +296.188 314.25 296.125 314.25 y +295.188 313.75 294.063 313.625 292.688 313.688 c +291.313 313.75 274.875 313.438 y +273.375 313.625 272.438 313.824 272.438 314.813 c +272.438 314.875 274.25 314.75 y +b +0 g +0.4 G +285.25 322.688 m +285.75 321.625 286 318.375 286.063 318.125 c +S +286.188 317.813 m +285.938 317.313 285.75 317.25 286.063 316.688 c +286.375 316.125 286.813 315.563 287.5 315.875 c +288.188 316.188 289 316.313 288.5 318 c +S +0.2 G +286.563 317.063 m +286.5 316.25 287.438 316.25 287.688 316.375 c +287.938 316.5 288.375 316.875 288.125 317.563 c +S +0 G +4 M +129 242 m +130.75 206.75 l +S +1 w 10 M +132 166 m +132.25 149.75 124.25 136 118.5 136 C +134.125 136 134.375 136 V +142.25 143.25 144.5 164.25 143.5 164.5 C +143.25 164.75 132 166 y +b +0.3 G +124 139.25 m +131.5 149 131.5 163 y +S +0 G +0.1 w 4 M +135 176 m +185.5 175 l +S +0.85 g +0.85 G +1 w +153.625 263.375 m +154.5 267.5 l +134.625 266.75 127.875 265.25 128.375 252.75 C +130.125 260.25 130.375 263 153.625 263.375 c +b +0 g +0.1 G +0.1 w +128.375 252.75 m +131.5 259.75 127.25 262.25 149.75 263.25 C +149.5 263.25 196.25 263.75 196.125 263.625 c +S +1 G +154.5 267.5 m +153.25 263 l +S +0.95 g +0.6 G +0.25 w +270.875 255.25 m +273.188 254.063 272 247.688 Y +271.938 247.625 267.375 247.75 Y +267.438 247.75 264.125 250.313 y +264.813 256.563 264.813 256.688 264.813 256.625 c +264.813 256.563 268.813 256.063 y +270.938 255.188 270.875 255.25 V +b +0.9 g +0 G +0.1 w +260.875 251.75 m +259.875 256.75 264.5 259.875 270.875 255.25 C +B +270.875 255.25 m +264.5 259.875 259.875 256.75 260.875 251.75 C +260.875 251.688 262.5 250.625 264.375 249.563 c +266.25 248.5 265.688 249.188 265.125 252.5 C +264.625 254.625 264.125 256.75 269.875 255.625 C +269.875 255.688 270.875 255.25 Y +b +0.5 g +0.2 G +270.313 255.188 m +264.188 256.188 264.875 255.5 266.063 249.188 C +266.125 249.25 266.438 249.063 266.375 249 C +266.438 249 265.813 252.5 Y +266.188 252.375 L +266.188 252.5 266.063 253.875 V +265.813 255.25 266.563 255.25 267.563 254 C +267.813 255 268.063 254.625 268.688 254.125 C +272.88 252.238 270.662 252.845 270.313 254.125 C +271.188 255.625 271.563 253.25 V +271.625 255.063 270.313 255.125 270.313 255.188 C +b +267.75 248.25 m +272.063 247.438 271.875 248.125 271.875 250 C +271.75 250.438 271.438 250 271.438 249.313 c +271.438 248.625 270.438 248.125 267.875 248.563 C +267.188 248.5 267.75 248.313 267.75 248.25 C +b +0 g +0 G +0.25 w +425 249.25 m +435.75 242.5 432.375 240.5 439.688 245.813 c +S +1 w +453.875 111.125 m +442.625 107.875 432.5 111.5 432.75 111.25 C +432.75 111.375 453.875 111.25 453.875 111.125 C +b +238.125 109.5 m +229.875 106.75 216.375 109.228 216.25 109.25 C +232.75 108.625 231.625 107.5 238.125 109.5 C +b +118.5 136 m +117.411 136.225 123.75 134.375 134 136 C +118.5 136 l +b +0.1 g +0.1 G +0.25 w +445.625 171.5 m +445.75 170.875 450.125 169.75 451 172 c +451.5 191 451.25 191 v +451.75 172 L +451.75 166.25 450 165 v +442.75 165.25 443 165.25 V +444.75 166 445 167.75 445.25 171 c +445.5 174.25 445.375 177.5 Y +445.375 177.75 445.576 171.745 445.625 171.5 c +b +0 g +0 G +0.1 w 10 M +168 299.5 m +170.75 296.25 173.75 295.875 175.125 299.25 c +S +174.5 323.5 m +172.5 321.375 171.375 310.125 171.75 308.5 c +S +1 g +1 G +300.5 294.5 m +281.75 294.5 L +281.875 294.5 281.75 295.625 Y +300 295.75 l +300 296.375 l +326.125 295.25 l +326 294.5 l +300.375 295.625 l +300.5 294.375 300.5 294.5 v +b +0 g +0.5 G +281.875 294.125 m +300.25 294.125 300.375 294.125 v +S +301.375 294.5 m +324.25 294.375 l +S +0 G +282.5 293.625 m +297.625 293.375 297.75 293.375 v +306.25 293.375 324.625 294 y +S +301.5 295 m +307.875 294.875 l +S +1 g +1 G +342.75 287.5 m +333 291.188 L +332.938 291.188 327.188 293.813 Y +327.25 293.875 328.438 294.875 y +343.063 288.563 343.125 288.563 v +343.188 288.563 342.75 287.438 342.75 287.5 C +b +0.5 g +0.5 G +342.75 287.5 m +333.75 290.563 327.188 293.813 Y +327.125 293.875 326.813 293.813 y +326.75 293.625 326.875 293.5 V +332.563 289.938 332.5 289.875 335.5 289.125 c +338.5 288.375 342.563 287.25 y +342.75 287.5 L +b +0 g +1 G +328.125 292.875 m +332.25 290.313 332.75 289.875 335.938 289.188 c +S +0 G +405.75 284.25 m +B +0.2 g +0.2 G +394 284.25 m +B +1 g +1 G +1 w 4 M +127 167 m +126 170 124 170.5 128 171.5 C +184 164 L +185 161.5 183 159 Y +127 167 L +b +0 g +0 G +0.25 w +319.375 211.25 m +321.75 212 323.875 211.375 324 211.375 c +S +1 g +1 G +326.375 170 m +325.75 166 325.875 166 325.75 166 c +325.625 166 329.5 170.687 325.75 166 c +323.75 163.5 317.375 159.75 315.875 165.125 C +317.25 168 318.125 170.375 y +319.375 168.5 324 168.75 326.375 170 C +b +0 g +0.2 G +0.1 w +175.75 324 m +173.625 319.375 172.875 309 173 309 c +S +0.95 g +0.95 G +1 w +321.5 287 m +351.5 275.5 366 250 369.5 224.5 C +374.5 225.5 L +366.5 272.5 339 283 330 287 c +321 291 321.5 287 Y +b +0 g +1 G +369.25 222.75 m +369.25 222.5 368.25 216.75 368.5 216.75 c +368.75 216.75 374 212.25 y +378.5 217.75 378.75 217.75 v +379 217.75 376 223.5 y +374.75 226 369.25 225.25 369.25 222.75 c +b +371.75 215.25 m +371.75 215.5 375.75 215.25 y +S +375.25 219.5 m +371 219.5 l +S +374.5 223 m +376.5 216.75 376.25 216.75 v +S +370.25 216.75 m +370.5 216.5 371.25 222.5 y +S +439.411 183.404 m +444.292 183.404 448.25 185.462 448.25 188 c +448.25 190.538 444.292 192.596 439.411 192.596 c +434.53 192.596 430.572 190.538 430.572 188 c +430.572 185.462 434.53 183.404 439.411 183.404 c +s +439.411 188 m +S +0 G +440.911 191.625 m +440.911 184.25 l +S +445.411 190 m +445.411 185.75 l +S +443.911 190.75 m +443.911 185.25 l +S +442.411 191.375 m +442.411 184.5 l +S +446.661 186.75 m +446.661 188.75 l +S +432.161 188.5 m +432.161 186.75 l +S +1 g +0.4 G +0.1 w +440 193 m +440.25 187.375 l +B +440.25 187.375 m +442.5 182.5 l +452.5 182 L +452 192.5 L +440 193 L +B +0.6 g +0.6 G +0.5 w +440 193 m +444.875 192.75 444.75 192.75 V +443.199 187.581 442.5 182.5 y +440.25 187.5 440.25 187.375 v +440.25 187.25 440 193 y +B +0 g +0.1 G +443.125 196.375 m +442.75 193.625 440.375 193.25 y +S +445.75 195 m +445.5 193.875 444.875 192.5 444.75 192.75 c +S +0.1 g +440.125 192.375 m +440.125 194.279 442.125 190.375 442.5 190.375 C +442.625 188.875 443.125 188.125 Y +443.25 187.75 443.5 186.875 442.875 187.5 c +442.25 188.125 441.875 188.875 y +440.125 189.5 440 189.625 y +440.125 192.25 440.125 192.375 v +b +0.2 g +0.2 G +1 w +381 193 m +380.909 193.183 439.933 191.8 440.125 192.375 c +440.25 192.75 440.25 187.25 440.25 187.375 c +440.25 187.5 442.25 182.75 442.5 182.5 c +442.75 182.25 372.5 182 y +378.25 183.5 378.75 182.75 379.25 187.75 C +381 191.25 381.25 192.5 381 193 c +b +0 g +0 G +433.411 190.375 m +433.411 185.875 l +433.5 186.125 433.375 187.375 y +S +434.911 191.125 m +434.911 184.875 l +435 185 434.75 188.375 434.875 188.5 c +S +436.411 191.375 m +436.411 184.5 l +436.5 184.5 436.375 189.5 y +S +437.911 191.75 m +437.911 184.375 l +438 184.25 438 190.625 438 190.75 c +S +1 G +0.25 w +437.911 184.25 m +438 184.25 438 184.75 y +S +0 G +1 w +439.411 191.875 m +439.411 184.25 l +439.375 184.25 439.322 191.875 439.411 191.875 c +s +1 G +431.625 185.875 m +433.25 183.625 440.5 182.875 441.875 183.625 c +S +0 G +0.5 w +440.125 192.375 m +440.405 192.655 436 192.75 y +420.5 182.25 l +426.5 182 l +439.75 192 440.125 192.375 v +b +0.7 g +0.7 G +434.5 253 m +435.875 252.625 436.75 252.125 437.125 251.375 C +437.125 251.5 436.125 253.125 y +434.625 252.875 434.5 253 V +b +437.875 247.75 m +437.424 248.201 438.75 248 y +439.125 247 l +437.875 246.75 l +437.875 247.75 438 247.625 437.875 247.75 c +b +0 g +0 G +410.5 192.75 m +406.5 189.75 403 189 y +401.554 189.161 398.625 189.5 404 192.75 C +404.25 192.75 401.5 192.25 401.5 192.5 C +396.25 187 395.006 185.25 390 185.25 c +389 185.25 382.5 184.5 379.25 187.75 C +379 183.5 378.5 182.5 370 182 C +370 182.25 395.5 182 y +398 185.25 399.5 187.5 y +404.25 185.5 413.25 192.75 Y +410.75 192.5 410.5 192.75 V +b +0.8 G +0.1 w +384 192 m +384.5 186.75 390.5 184.75 393.25 187.25 c +S +0.95 g +0.95 G +1 w +374 192.875 m +380 193.5 381 193 v +382.844 192.078 377.5 185.5 Y +371.5 185 374 192.875 Y +b +0 g +0 G +0.5 w +374.375 191.75 m +374.75 190.5 375.75 187.625 380.625 191.125 C +376.75 186.875 373.5 188 374.375 191.75 C +b +0.6 g +0.6 G +374.125 189.625 m +374.276 189.12 374.765 185.671 379.75 189.25 C +375.875 185 373.25 185.875 374.125 189.625 C +b +%%Trailer +Adobe_Illustrator881 /terminate get exec +Adobe_customcolor /terminate get exec +Adobe_cshow /terminate get exec +Adobe_cmykcolor /terminate get exec + +showpage diff --git a/vendor/github.com/llgcode/ps/samples/whitepaper.ps b/vendor/github.com/llgcode/ps/samples/whitepaper.ps new file mode 100644 index 0000000..4222c4c --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples/whitepaper.ps @@ -0,0 +1,5043 @@ +%!PS-Adobe-3.0 +%%BoundingBox: (atend) +%%Pages: (atend) +%%PageOrder: (atend) +%%DocumentFonts: (atend) +%%Creator: Frame 5.0 +%%DocumentData: Clean7Bit +%%EndComments +%%BeginProlog +% +% Frame ps_prolog 5.0, for use with Frame 5.0 products +% This ps_prolog file is Copyright (c) 1986-1995 Frame Technology +% Corporation. All rights reserved. This ps_prolog file may be +% freely copied and distributed in conjunction with documents created +% using FrameMaker, FrameMaker/SGML and FrameViewer as long as this +% copyright notice is preserved. +% +% FrameMaker users specify the proper paper size for each print job in the +% "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the +% printer that the PS file is sent to does not support the requested paper +% size, or if there is no paper tray of the proper size currently installed, +% then the job will not be printed. The following flag, if set to true, will +% cause the job to print on the default paper in such cases. +/FMAllowPaperSizeMismatch false def +% +% Frame products normally print colors as their true color on a color printer +% or as shades of gray, based on luminance, on a black-and white printer. The +% following flag, if set to true, forces all non-white colors to print as pure +% black. This has no effect on bitmap images. +/FMPrintAllColorsAsBlack false def +% +% Frame products can either set their own line screens or use a printer's +% default settings. Three flags below control this separately for no +% separations, spot separations and process separations. If a flag +% is true, then the default printer settings will not be changed. If it is +% false, Frame products will use their own settings from a table based on +% the printer's resolution. +/FMUseDefaultNoSeparationScreen true def +/FMUseDefaultSpotSeparationScreen true def +/FMUseDefaultProcessSeparationScreen false def +% +% For any given PostScript printer resolution, Frame products have two sets of +% screen angles and frequencies for printing process separations, which are +% recomended by Adobe. The following variable chooses the higher frequencies +% when set to true or the lower frequencies when set to false. This is only +% effective if the appropriate FMUseDefault...SeparationScreen flag is false. +/FMUseHighFrequencyScreens true def +% +% The following is a set of predefined optimal frequencies and angles for various +% common dpi settings. This is taken from "Advances in Color Separation Using +% PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) +% and corrolated with information which is in various PPD (4.0) files. +% +% The "dpiranges" figure is the minimum dots per inch device resolution which +% can support this setting. The "low" and "high" values are controlled by the +% setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control +% the use of the "Yellow Triple Dot" feature whereby the frequency id divided by +% three, but the dot function is "trippled" giving a block of 3x3 dots per cell. +% +% PatFreq is a compromise pattern frequency for ps Level 2 printers which is close +% to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat +% (too badly) against the screen frequencies of any separations for that DPI. +/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def +/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def +/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def +/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def +/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def +/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def +/YLowTDot [ true true false true true false false false ] def +/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def +/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def +/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def +/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def +/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def +/YHighTDot [ false false true false false true true false ] def +/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def +% +% PostScript Level 2 printers contain an "Accurate Screens" feature which can +% improve process separation rendering at the expense of compute time. This +% flag is ignored by PostScript Level 1 printers. +/FMUseAcccurateScreens true def +% +% The following PostScript procedure defines the spot function that Frame +% products will use for process separations. You may un-comment-out one of +% the alternative functions below, or use your own. +% +% Dot function +/FMSpotFunction {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub } + {dup mul exch dup mul add 1 exch sub }ifelse } def +% +% Line function +% /FMSpotFunction { pop } def +% +% Elipse function +% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add +% sqrt 1 exch sub } def +% +% +/FMversion (5.0) def +/fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def +/FMPColor + fMLevel1 { + false + /colorimage where {pop pop true} if + } { + true + } ifelse +def +/FrameDict 400 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } bind def + } if +/FMshowpage /showpage load def +/FMquit /quit load def +/FMFAILURE { + dup = flush + FMshowpage + /Helvetica findfont 12 scalefont setfont + 72 200 moveto show + 72 220 moveto show + FMshowpage + FMquit + } def +/FMVERSION { + FMversion ne { + (Frame product version does not match ps_prolog! Check installation;) + (also check ~/fminit and ./fminit for old versions) FMFAILURE + } if + } def +/FMBADEPSF { + (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) + (says your EPS file is not valid, as it calls X ) + dup dup (X) search pop exch pop exch pop length + 5 -1 roll + putinterval + FMFAILURE + } def +/fmConcatProcs + { + /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx +}def +FrameDict begin [ + /ALDsave + /FMdicttop + /FMoptop + /FMpointsize + /FMsaveobject + /b + /bitmapsave + /blut + /bpside + /bs + /bstring + /bwidth + /c + /cf + /cs + /cynu + /depth + /edown + /fh + /fillvals + /fw + /fx + /fy + /g + /gfile + /gindex + /grnt + /gryt + /gstring + /height + /hh + /i + /im + /indx + /is + /k + /kk + /landscape + /lb + /len + /llx + /lly + /m + /magu + /manualfeed + /n + /offbits + /onbits + /organgle + /orgbangle + /orgbfreq + /orgbproc + /orgbxfer + /orgfreq + /orggangle + /orggfreq + /orggproc + /orggxfer + /orgmatrix + /orgproc + /orgrangle + /orgrfreq + /orgrproc + /orgrxfer + /orgxfer + /pagesave + /paperheight + /papersizedict + /paperwidth + /pos + /pwid + /r + /rad + /redt + /sl + /str + /tran + /u + /urx + /ury + /val + /width + /width + /ws + /ww + /x + /x1 + /x2 + /xindex + /xpoint + /xscale + /xx + /y + /y1 + /y2 + /yelu + /yindex + /ypoint + /yscale + /yy +] { 0 def } forall +/FmBD {bind def} bind def +systemdict /pdfmark known { + /fMAcrobat true def + + /FmPD /pdfmark load def + + + /FmPT /show load def + + + currentdistillerparams /CoreDistVersion get 2000 ge { + + + /FmPD2 /pdfmark load def + + + + + + /FmPA { mark exch /Dest exch 5 3 roll + /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD + }FmBD + } { + + /FmPD2 /cleartomark load def + /FmPA {pop pop pop}FmBD + } ifelse +} { + + /fMAcrobat false def + /FmPD /cleartomark load def + /FmPD2 /cleartomark load def + /FmPT /pop load def + /FmPA {pop pop pop}FmBD +} ifelse +/FmDC { + transform fMDefaultMatrix itransform cvi exch cvi exch +}FmBD +/FmBx { + dup 3 index lt {3 1 roll exch} if + 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if +}FmBD +/FMnone 0 def +/FMcyan 1 def +/FMmagenta 2 def +/FMyellow 3 def +/FMblack 4 def +/FMcustom 5 def +/fMNegative false def +/FrameSepIs FMnone def +/FrameSepBlack 0 def +/FrameSepYellow 0 def +/FrameSepMagenta 0 def +/FrameSepCyan 0 def +/FrameSepRed 1 def +/FrameSepGreen 1 def +/FrameSepBlue 1 def +/FrameCurGray 1 def +/FrameCurPat null def +/FrameCurColors [ 0 0 0 1 0 0 0 ] def +/FrameColorEpsilon .001 def +/eqepsilon { + sub dup 0 lt {neg} if + FrameColorEpsilon le +} bind def +/FrameCmpColorsCMYK { + 2 copy 0 get exch 0 get eqepsilon { + 2 copy 1 get exch 1 get eqepsilon { + 2 copy 2 get exch 2 get eqepsilon { + 3 get exch 3 get eqepsilon + } {pop pop false} ifelse + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/FrameCmpColorsRGB { + 2 copy 4 get exch 0 get eqepsilon { + 2 copy 5 get exch 1 get eqepsilon { + 6 get exch 2 get eqepsilon + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/RGBtoCMYK { + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 3 copy + 2 copy + le { pop } { exch pop } ifelse + 2 copy + le { pop } { exch pop } ifelse + dup dup dup + 6 1 roll + 4 1 roll + 7 1 roll + sub + 6 1 roll + sub + 5 1 roll + sub + 4 1 roll +} bind def +/CMYKtoRGB { + dup dup 4 -1 roll add + 5 1 roll 3 -1 roll add + 4 1 roll add + 1 exch sub dup 0 lt {pop 0} if 3 1 roll + 1 exch sub dup 0 lt {pop 0} if exch + 1 exch sub dup 0 lt {pop 0} if exch +} bind def +/FrameSepInit { + 1.0 RealSetgray +} bind def +/FrameSetSepColor { + /FrameSepBlue exch def + /FrameSepGreen exch def + /FrameSepRed exch def + /FrameSepBlack exch def + /FrameSepYellow exch def + /FrameSepMagenta exch def + /FrameSepCyan exch def + /FrameSepIs FMcustom def + setCurrentScreen +} bind def +/FrameSetCyan { + /FrameSepBlue 1.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 1.0 def + /FrameSepIs FMcyan def + setCurrentScreen +} bind def + +/FrameSetMagenta { + /FrameSepBlue 1.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 1.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMmagenta def + setCurrentScreen +} bind def + +/FrameSetYellow { + /FrameSepBlue 0.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 1.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMyellow def + setCurrentScreen +} bind def + +/FrameSetBlack { + /FrameSepBlue 0.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 1.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMblack def + setCurrentScreen +} bind def + +/FrameNoSep { + /FrameSepIs FMnone def + setCurrentScreen +} bind def +/FrameSetSepColors { + FrameDict begin + [ exch 1 add 1 roll ] + /FrameSepColors + exch def end + } bind def +/FrameColorInSepListCMYK { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsCMYK + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/FrameColorInSepListRGB { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsRGB + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/RealSetgray /setgray load def +/RealSetrgbcolor /setrgbcolor load def +/RealSethsbcolor /sethsbcolor load def +end +/setgray { + FrameDict begin + FrameSepIs FMnone eq + { RealSetgray } + { + FrameSepIs FMblack eq + { RealSetgray } + { FrameSepIs FMcustom eq + FrameSepRed 0 eq and + FrameSepGreen 0 eq and + FrameSepBlue 0 eq and { + RealSetgray + } { + 1 RealSetgray pop + } ifelse + } ifelse + } ifelse + end +} bind def +/setrgbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetrgbcolor } + { + 3 copy [ 4 1 roll ] + FrameColorInSepListRGB + { + FrameSepBlue eq exch + FrameSepGreen eq and exch + FrameSepRed eq and + { 0 } { 1 } ifelse + } + { + FMPColor { + RealSetrgbcolor + currentcmykcolor + } { + RGBtoCMYK + } ifelse + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end +} bind def +/sethsbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSethsbcolor } + { + RealSethsbcolor + currentrgbcolor + setrgbcolor + } + ifelse + end +} bind def +FrameDict begin +/setcmykcolor where { + pop /RealSetcmykcolor /setcmykcolor load def +} { + /RealSetcmykcolor { + 4 1 roll + 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat + RealSetrgbcolor pop + } bind def +} ifelse +userdict /setcmykcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetcmykcolor } + { + 4 copy [ 5 1 roll ] + FrameColorInSepListCMYK + { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + { 0 } { 1 } ifelse + } + { + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end + } bind put +fMLevel1 { + + + + /patScreenDict 7 dict dup begin + <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD + <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD + [ 0 { pop } dup .5 2 ] FmBD + [ 90 { pop } dup .5 2 ] FmBD + <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD + <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD + <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD + end def +} { + + /patProcDict 5 dict dup begin + <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -1 -1 moveto 9 9 lineto stroke } bind def + <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + end def + /patDict 15 dict dup begin + /PatternType 1 def + /PaintType 2 def + /TilingType 3 def + /BBox [ 0 0 8 8 ] def + /XStep 8 def + /YStep 8 def + /PaintProc { + begin + patProcDict bstring known { + patProcDict bstring get exec + } { + 8 8 true [1 0 0 -1 0 8] bstring imagemask + } ifelse + end + } bind def + end def +} ifelse +/combineColor { + FrameSepIs FMnone eq + { + graymode fMLevel1 or not { + + [/Pattern [/DeviceCMYK]] setcolorspace + FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor + } { + FrameCurColors 3 get 1.0 ge { + FrameCurGray RealSetgray + } { + fMAcrobat not FMPColor graymode and and { + 0 1 3 { + FrameCurColors exch get + 1 FrameCurGray sub mul + } for + RealSetcmykcolor + } { + 4 1 6 { + FrameCurColors exch get + graymode { + 1 exch sub 1 FrameCurGray sub mul 1 exch sub + } { + 1.0 lt {FrameCurGray} {1} ifelse + } ifelse + } for + RealSetrgbcolor + } ifelse + } ifelse + } ifelse + } { + FrameCurColors 0 4 getinterval aload + FrameColorInSepListCMYK { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + FrameSepIs FMcustom eq and + { FrameCurGray } { 1 } ifelse + } { + FrameSepIs FMblack eq + {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + graymode fMLevel1 or not { + + [/Pattern [/DeviceGray]] setcolorspace + FrameCurPat setcolor + } { + graymode not fMLevel1 and { + + dup 1 lt {pop FrameCurGray} if + } if + RealSetgray + } ifelse + } ifelse +} bind def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/fMDefaultMatrix matrix defaultmatrix def +/fMatrix2 matrix def +/dpi 72 0 fMDefaultMatrix dtransform + dup mul exch dup mul add sqrt def + +/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def +/sangle 1 0 fMDefaultMatrix dtransform exch atan def + sangle fMatrix2 rotate + fMDefaultMatrix fMatrix2 concatmatrix + dup 0 get /sflipx exch def + 3 get /sflipy exch def +/screenIndex { + 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for +} bind def +/getCyanScreen { + FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getMagentaScreen { + FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getYellowScreen { + FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse + screenIndex dup 3 1 roll get 3 1 roll get { 3 div + {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat + FMSpotFunction } } {/FMSpotFunction load } ifelse + 0.0 exch +} bind def +/getBlackScreen { + FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse + screenIndex get 45.0 /FMSpotFunction load +} bind def +/getSpotScreen { + getBlackScreen +} bind def +/getCompositeScreen { + getBlackScreen +} bind def +/FMSetScreen + fMLevel1 { /setscreen load + }{ { + 8 dict begin + /HalftoneType 1 def + /SpotFunction exch def + /Angle exch def + /Frequency exch def + /AccurateScreens FMUseAcccurateScreens def + currentdict end sethalftone + } bind } ifelse +def +/setDefaultScreen { + FMPColor { + orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer + } + { + orgxfer cvx settransfer + } ifelse + orgfreq organgle orgproc cvx setscreen +} bind def +/setCurrentScreen { + FrameSepIs FMnone eq { + FMUseDefaultNoSeparationScreen { + setDefaultScreen + } { + getCompositeScreen FMSetScreen + } ifelse + } { + FrameSepIs FMcustom eq { + FMUseDefaultSpotSeparationScreen { + setDefaultScreen + } { + getSpotScreen FMSetScreen + } ifelse + } { + FMUseDefaultProcessSeparationScreen { + setDefaultScreen + } { + FrameSepIs FMcyan eq { + getCyanScreen FMSetScreen + } { + FrameSepIs FMmagenta eq { + getMagentaScreen FMSetScreen + } { + FrameSepIs FMyellow eq { + getYellowScreen FMSetScreen + } { + getBlackScreen FMSetScreen + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse +} bind def +end + +/FMDOCUMENT { + array /FMfonts exch def + /#copies exch def + FrameDict begin + 0 ne /manualfeed exch def + /paperheight exch def + /paperwidth exch def + 0 ne /fMNegative exch def + 0 ne /edown exch def + /yscale exch def + /xscale exch def + fMLevel1 { + manualfeed {setmanualfeed} if + /FMdicttop countdictstack 1 add def + /FMoptop count def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} {false} ifelse + {papersizefailure} if + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + } + {2 dict + dup /PageSize [paperwidth paperheight] put + manualfeed {dup /ManualFeed manualfeed put} if + {setpagedevice} stopped {papersizefailure} if + } + ifelse + + FMPColor { + currentcolorscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + cvlit /orgbproc exch def + /orgbangle exch def + /orgbfreq exch def + cvlit /orggproc exch def + /orggangle exch def + /orggfreq exch def + cvlit /orgrproc exch def + /orgrangle exch def + /orgrfreq exch def + currentcolortransfer + fMNegative { + 1 1 4 { + pop { 1 exch sub } fmConcatProcs 4 1 roll + } for + 4 copy + setcolortransfer + } if + cvlit /orgxfer exch def + cvlit /orgbxfer exch def + cvlit /orggxfer exch def + cvlit /orgrxfer exch def + } { + currentscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + + currenttransfer + fMNegative { + { 1 exch sub } fmConcatProcs + dup settransfer + } if + cvlit /orgxfer exch def + } ifelse + end +} def +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch dup /pwid exch def neg translate pop + }{ + pop /pwid exch def + } ifelse + edown { [-1 0 0 1 pwid 0] concat } if + 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto + 0 paperheight lineto 0 0 lineto 1 setgray fill + xscale yscale scale + /orgmatrix matrix def + gsave +} def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin dup + array /fillvals exch def + dict /patCache exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def +% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. +% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) + /banddevice {(banddevice) FMBADEPSF} def + /clear {(clear) FMBADEPSF} def + /cleardictstack {(cleardictstack) FMBADEPSF} def + /copypage {(copypage) FMBADEPSF} def + /erasepage {(erasepage) FMBADEPSF} def + /exitserver {(exitserver) FMBADEPSF} def + /framedevice {(framedevice) FMBADEPSF} def + /grestoreall {(grestoreall) FMBADEPSF} def + /initclip {(initclip) FMBADEPSF} def + /initgraphics {(initgraphics) FMBADEPSF} def + /quit {(quit) FMBADEPSF} def + /renderbands {(renderbands) FMBADEPSF} def + /setglobal {(setglobal) FMBADEPSF} def + /setpagedevice {(setpagedevice) FMBADEPSF} def + /setshared {(setshared) FMBADEPSF} def + /startjob {(startjob) FMBADEPSF} def + /lettertray {(lettertray) FMBADEPSF} def + /letter {(letter) FMBADEPSF} def + /lettersmall {(lettersmall) FMBADEPSF} def + /11x17tray {(11x17tray) FMBADEPSF} def + /11x17 {(11x17) FMBADEPSF} def + /ledgertray {(ledgertray) FMBADEPSF} def + /ledger {(ledger) FMBADEPSF} def + /legaltray {(legaltray) FMBADEPSF} def + /legal {(legal) FMBADEPSF} def + /statementtray {(statementtray) FMBADEPSF} def + /statement {(statement) FMBADEPSF} def + /executivetray {(executivetray) FMBADEPSF} def + /executive {(executive) FMBADEPSF} def + /a3tray {(a3tray) FMBADEPSF} def + /a3 {(a3) FMBADEPSF} def + /a4tray {(a4tray) FMBADEPSF} def + /a4 {(a4) FMBADEPSF} def + /a4small {(a4small) FMBADEPSF} def + /b4tray {(b4tray) FMBADEPSF} def + /b4 {(b4) FMBADEPSF} def + /b5tray {(b5tray) FMBADEPSF} def + /b5 {(b5) FMBADEPSF} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fw 2 div add fy fh 2 div add translate + rotate + fw 2 div neg fh 2 div neg translate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + /FMdicttop countdictstack 1 add def + /FMoptop count def + } bind def +/FMENDEPSF { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } bind def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } bind def +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } bind def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + statusdict begin stopped end + } bind def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } bind def +/desperatepapersize { + statusdict /setpageparams known + { + paperwidth paperheight 0 1 + statusdict begin + {setpageparams} stopped + end + } {true} ifelse + } bind def +/papersizefailure { + FMAllowPaperSizeMismatch not + { +(The requested paper size is not available in any currently-installed tray) +(Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) + FMFAILURE } if + } def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /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 /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /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 /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +FMPColor + + { + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + /BEGINBITMAPCMYK { + BITMAPCMYK } def + /BEGINBITMAPCMYKc { + BITMAPCMYKc } def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + /BEGINBITMAPCMYK { + BITMAPCMYKGRAY } def + /BEGINBITMAPCMYKc { + BITMAPCMYKGRAYc } def + } +ifelse +/K { + FMPrintAllColorsAsBlack { + dup 1 eq 2 index 1 eq and 3 index 1 eq and not + {7 {pop} repeat 0 0 0 1 0 0 0} if + } if + FrameCurColors astore + pop combineColor +} bind def +/graymode true def +fMLevel1 { + /fmGetFlip { + fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse + } FmBD +} if +/setPatternMode { + fMLevel1 { + 2 index patScreenDict exch known { + pop pop + patScreenDict exch get aload pop + freq + mul + 5 2 roll + fMatrix2 currentmatrix 1 get 0 ne { + 3 -1 roll 90 add 3 1 roll + sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul + } { + sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul + } ifelse + 0 lt {exch pop} {pop} ifelse + fMNegative { + {neg} fmConcatProcs + } if + bind + + + + systemdict /setscreen get exec + /FrameCurGray exch def + } { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/ypoint exch def + /xpoint exch def + /xindex xpoint 1 add 2 div bpside mul cvi def + /yindex ypoint 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + offbits offbits onbits add div fMNegative {1.0 exch sub} if + /FrameCurGray exch def + } ifelse + } { + pop pop + dup patCache exch known { + patCache exch get + } { + dup + patDict /bstring 3 -1 roll put + patDict + 9 PatFreq screenIndex get div dup matrix scale + makepattern + dup + patCache 4 -1 roll 3 -1 roll put + } ifelse + /FrameCurGray 0 def + /FrameCurPat exch def + } ifelse + /graymode false def + combineColor +} bind def +/setGrayScaleMode { + graymode not { + /graymode true def + fMLevel1 { + setCurrentScreen + } if + } if + /FrameCurGray exch def + combineColor +} bind def +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + +/PFill { + graymode fMLevel1 or not { + gsave 1 setgray eofill grestore + } if +} bind def +/PStroke { + graymode fMLevel1 or not { + gsave 1 setgray stroke grestore + } if + stroke +} bind def +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setPatternMode} + {setGrayScaleMode} + ifelse + } bind def +/V { + PFill gsave eofill grestore + } bind def +/Vclip { + clip + } bind def +/Vstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/N { + PStroke + } bind def +/Nclip { + strokepath clip newpath + } bind def +/Nstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def +/rarc + {rad + arcto + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + mark + newpath + { + x1 y1 rad add moveto + x1 y2 x2 y2 rarc + x2 y2 x2 y1 rarc + x2 y1 x1 y1 rarc + x1 y1 x1 y2 rarc + closepath + } stopped {x1 y1 x2 y2 R} if + cleartomark + } bind def +/RRR { + /rad exch def + normalize /y4 exch def /x4 exch def + normalize /y3 exch def /x3 exch def + normalize /y2 exch def /x2 exch def + normalize /y1 exch def /x1 exch def + newpath + normalize moveto + mark + { + x2 y2 x3 y3 rarc + x3 y3 x4 y4 rarc + x4 y4 x1 y1 rarc + x1 y1 x2 y2 rarc + closepath + } stopped + {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if + cleartomark + } bind def +/C { + grestore + gsave + R + clip + setCurrentScreen +} bind def +/CP { + grestore + gsave + Y + clip + setCurrentScreen +} bind def +/F { + FMfonts exch get + FMpointsize scalefont + setfont + } bind def +/Q { + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill fill + grestore + } bind def +/Gstrk { + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/Gclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GG { + gsave + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill + fill + grestore + } bind def +/GGclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GGstrk { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/Aclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/Astrk { + Gstrk +} bind def +/AA { + gsave + savematrix + newpath + + 3 index 2 div add exch 4 index 2 div sub exch + + normalize 3 index 2 div sub exch 4 index 2 div add exch + translate + rotate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/AAclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/AAstrk { + GGstrk +} bind def +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 7 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip { + + + bis ris copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + ris gis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + gis bis copy pop + dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip4 { + + + kis cis copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + cis mis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + mis yis copy pop + dup dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + yis kis copy pop + 3 mul is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def +/wbytes { + dup dup + 8 gt { pop 8 idiv mul } + { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + cvtProc + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + cvtProc + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def +fMLevel1 { +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /kk cynu magu min yelu min def + /u kk currentundercolorremoval exec def +% /u 0 def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def +} +{ +/colorSetup2 { + [ /Indexed /DeviceRGB 255 + {dup red exch get 255 div + exch dup green exch get 255 div + exch blue exch get 255 div} + ] setcolorspace +} bind def +} ifelse +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch fmConcatProcs settransfer +} bind def +/BITMAPCOLOR { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + fMLevel1 { + colorsetup + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} {is} {is} true 3 colorimage + } { + colorSetup2 + /is width depth wbytes string def + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {cf is readhexstring pop} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + fMLevel1 { + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} {is} {is} true 3 colorimage + } { + colorSetup2 + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {ip} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris} {gis} {bis} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYKc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYK { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /mis width string def + /yis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf mis readhexstring pop } + { cf yis readhexstring pop } + { cf kis readhexstring pop } + true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris gis bis width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAYc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop cis mis yis kis width cgray} image + bitmapsave restore + grestore + } bind def +/cgray { + /ww exch def + /k exch def + /y exch def + /m exch def + /c exch def + 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB + .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add + c i 3 -1 roll floor cvi put } for + c + } bind def +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /yis width string def + /mis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf mis readhexstring pop + cf yis readhexstring pop + cf kis readhexstring pop width cgray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +/I { setdash } bind def +/J { [] 0 setdash } bind def +%%EndProlog +%%BeginSetup +(5.0) FMVERSION +1 1 0 0 612 792 0 1 12 FMDOCUMENT +0 0 /Times-Roman FMFONTDEFINE +1 0 /Helvetica-Bold FMFONTDEFINE +2 0 /Times-Italic FMFONTDEFINE +3 0 /Helvetica-BoldOblique FMFONTDEFINE +4 0 /Courier FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 FMFILL +11 FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 FMFILL +25 FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "1" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +J +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 9 558 36 R +7 X +0 0 0 1 0 0 0 K +V +0 8 Q +0 X +(\251 Sun Microsystems, Inc., 1996) 54 30.67 T +(1) 306 30.67 T +54 54 297 621 R +7 X +V +1 10 Q +0 X +(INTR) 54 614.33 T +(ODUCTION) 77.13 614.33 T +0 F +0.25 0.09 (Since its release in May of 1995, Ja) 54 598.33 B +0.25 0.09 (v) 200.97 598.33 B +0.25 0.09 (a has swept across the) 205.81 598.33 B +0.25 0.71 (Internet. W) 54 587.33 B +0.25 0.71 (ith its promise of truly netw) 107.2 587.33 B +0.25 0.71 (ork oriented) 240.34 587.33 B +0.25 0.28 (computing and a nearly uni) 54 576.33 B +0.25 0.28 (v) 171.5 576.33 B +0.25 0.28 (ersal system for distrib) 176.63 576.33 B +0.25 0.28 (uting) 275.31 576.33 B +0.25 0.08 (applications, Ja) 54 565.33 B +0.25 0.08 (v) 116.99 565.33 B +0.25 0.08 (a is widely seen as the solution to man) 121.82 565.33 B +0.25 0.08 (y of) 280.68 565.33 B +0.25 0.04 (the most persistent problems in client/serv) 54 554.33 B +0.25 0.04 (er computing and) 225.93 554.33 B +0.25 0.46 (on the W) 54 543.33 B +0.25 0.46 (orld W) 94.03 543.33 B +0.25 0.46 (ide W) 124.68 543.33 B +0.25 0.46 (eb) 150.59 543.33 B +0.25 0.46 (. Ho) 160.54 543.33 B +0.25 0.46 (we) 179.6 543.33 B +0.25 0.46 (v) 191.93 543.33 B +0.25 0.46 (er) 197.24 543.33 B +0.25 0.46 (, this same ability to) 205.52 543.33 B +0.25 0.05 (distrib) 54 532.33 B +0.25 0.05 (ute e) 79.72 532.33 B +0.25 0.05 (x) 99.23 532.33 B +0.25 0.05 (ecutables automatically o) 104.13 532.33 B +0.25 0.05 (v) 207.4 532.33 B +0.25 0.05 (er the netw) 212.3 532.33 B +0.25 0.05 (ork raises) 257.69 532.33 B +0.25 0.36 (concerns about Ja) 54 521.33 B +0.25 0.36 (v) 131.51 521.33 B +0.25 0.36 (a\325) 136.62 521.33 B +0.25 0.36 (s ef) 144.56 521.33 B +0.25 0.36 (fect on netw) 160.15 521.33 B +0.25 0.36 (ork security) 214.3 521.33 B +0.25 0.36 (. These) 265.71 521.33 B +0.25 0.13 (concerns ha) 54 510.33 B +0.25 0.13 (v) 102.93 510.33 B +0.25 0.13 (e been heightened by the disco) 107.91 510.33 B +0.25 0.13 (v) 235.85 510.33 B +0.25 0.13 (ery of se) 240.83 510.33 B +0.25 0.13 (v) 276.65 510.33 B +0.25 0.13 (eral) 281.63 510.33 B +(security related b) 54 499.33 T +(ugs in e) 122.67 499.33 T +(xisting Ja) 153.63 499.33 T +(v) 191.49 499.33 T +(a implementations.) 196.24 499.33 T +0.25 0.01 (This paper discusses these concerns and ho) 54 480.33 B +0.25 0.01 (w Ja) 228.47 480.33 B +0.25 0.01 (v) 246.61 480.33 B +0.25 0.01 (a addresses) 251.38 480.33 B +0.25 0.09 (them. It also describes se) 54 469.33 B +0.25 0.09 (v) 157.44 469.33 B +0.25 0.09 (eral ef) 162.39 469.33 B +0.25 0.09 (forts underw) 188.3 469.33 B +0.25 0.09 (ay to enhance) 240.4 469.33 B +0.25 0.13 (and e) 54 458.33 B +0.25 0.13 (xtend the Ja) 76.14 458.33 B +0.25 0.13 (v) 125.79 458.33 B +0.25 0.13 (a security model. It is di) 130.67 458.33 B +0.25 0.13 (vided into three) 231.75 458.33 B +0.25 0.37 (sections. The f) 54 447.33 B +0.25 0.37 (irst section describes Ja) 118.08 447.33 B +0.25 0.37 (v) 222.01 447.33 B +0.25 0.37 (a in general and) 227.13 447.33 B +0.25 0.01 (discusses the security implications of Ja) 54 436.33 B +0.25 0.01 (v) 215.22 436.33 B +0.25 0.01 (a. Readers who are) 219.98 436.33 B +-0.14 (already f) 54 425.33 P +-0.14 (amiliar with Ja) 89.02 425.33 P +-0.14 (v) 147.98 425.33 P +-0.14 (a may wish to proceed to the second) 152.73 425.33 P +0.25 0.14 (section which discusses computer security in general, ho) 54 414.33 B +0.25 0.14 (w) 289.78 414.33 B +2.14 1.25 (security af) 54 403.33 B +2.14 1.25 (fects netw) 111.57 403.33 B +2.14 1.25 (ork) 166.93 403.33 B +2.14 1.25 (ed systems and some) 183.91 403.33 B +1.86 1.25 (misconceptions about security) 54 392.33 B +1.86 1.25 (. Because these) 214.41 392.33 B +0.25 0.32 (misconceptions are v) 54 381.33 B +0.25 0.32 (ery common and af) 145.1 381.33 B +0.25 0.32 (fect ho) 228.46 381.33 B +0.25 0.32 (w people) 258.16 381.33 B +0.25 0.12 (approach ne) 54 370.33 B +0.25 0.12 (w technology) 103.94 370.33 B +0.25 0.12 (, readers who are unf) 159.18 370.33 B +0.25 0.12 (amiliar with) 246.79 370.33 B +0.25 0.17 (general security issues are encouraged to read this section) 54 359.33 B +0.25 0.55 (carefully) 54 348.33 B +0.25 0.55 (. The third section discusses Ja) 93.82 348.33 B +0.25 0.55 (v) 235.74 348.33 B +0.25 0.55 (a security in) 241.04 348.33 B +0.25 0.08 (particular) 54 337.33 B +0.25 0.08 (, looks at ho) 92.69 337.33 B +0.25 0.08 (w the security model is implemented,) 143.07 337.33 B +(and describes upcoming e) 54 326.33 T +(xtensions to the security model.) 157.44 326.33 T +1 F +(J) 54 303.33 T +(A) 59.36 303.33 T +(V) 65.78 303.33 T +(A) 71.65 303.33 T +(The Ja) 54 280.33 T +(v) 85.53 280.33 T +(a Platf) 90.89 280.33 T +(orm) 120.7 280.33 T +0 F +0.25 0.16 (Ja) 54 264.33 B +0.25 0.16 (v) 62.45 264.33 B +0.25 0.16 (a is a re) 67.35 264.33 B +0.25 0.16 (v) 100.1 264.33 B +0.25 0.16 (olutionary ne) 105.05 264.33 B +0.25 0.16 (w application platform from Sun) 160.16 264.33 B +0.25 0.54 (Microsystems. Lik) 54 253.33 B +0.25 0.54 (e other operating systems, the Ja) 138.36 253.33 B +0.25 0.54 (v) 287.27 253.33 B +0.25 0.54 (a) 292.56 253.33 B +-0.18 (platform pro) 54 242.33 P +-0.18 (vides de) 103.94 242.33 P +-0.18 (v) 136.56 242.33 P +-0.18 (elopers with I/O, netw) 141.41 242.33 P +-0.18 (orking, windo) 230.21 242.33 P +-0.18 (ws) 285.89 242.33 P +0.25 0.44 (and graphics capabilities and other f) 54 231.33 B +0.25 0.44 (acilities needed to) 216.29 231.33 B +0.25 0.62 (de) 54 220.33 B +0.25 0.62 (v) 64.43 220.33 B +0.25 0.62 (elop and run sophisticated applications. The Ja) 69.9 220.33 B +0.25 0.62 (v) 287.19 220.33 B +0.25 0.62 (a) 292.56 220.33 B +0.25 0.08 (platform also pro) 54 209.33 B +0.25 0.08 (vides an important capability not found in) 124.55 209.33 B +0.25 0.39 (traditional operating systems. This ability) 54 198.33 B +0.25 0.39 (, called Write) 237.33 198.33 B +0.25 0.35 (Once/Run An) 54 187.33 B +0.25 0.35 (ywhere e) 113.2 187.33 B +0.25 0.35 (x) 152.45 187.33 B +0.25 0.35 (ecutables, allo) 157.65 187.33 B +0.25 0.35 (ws Ja) 220.08 187.33 B +0.25 0.35 (v) 243.81 187.33 B +0.25 0.35 (a programs) 248.91 187.33 B +0.25 0.09 (written on one type of hardw) 54 176.33 B +0.25 0.09 (are or operating system to run) 173.46 176.33 B +(unmodi\336ed on almost an) 54 165.33 T +(y other type of computer) 153.02 165.33 T +(.) 251.34 165.33 T +0.25 0.22 (Applications written for traditional operating systems are) 54 146.33 B +0.25 0.07 (tied directly to that platform and cannot be easily mo) 54 135.33 B +0.25 0.07 (v) 271.83 135.33 B +0.25 0.07 (ed to) 276.75 135.33 B +0.25 0.03 (another machine or operating system. This locks de) 54 124.33 B +0.25 0.03 (v) 263.06 124.33 B +0.25 0.03 (elopers) 267.94 124.33 B +-0.08 (to that particular) 54 113.33 P +-0.08 (, often proprietary) 119.54 113.33 P +-0.08 (, system. If the application) 191.21 113.33 P +0.25 0.17 (must be deplo) 54 102.33 B +0.25 0.17 (yed on other platforms, the de) 112.77 102.33 B +0.25 0.17 (v) 238.98 102.33 B +0.25 0.17 (elopers must) 244 102.33 B +0.24 (port the application to those platforms. These porting ef) 54 91.33 P +0.24 (forts) 278.67 91.33 P +0.25 0.11 (are often e) 54 80.33 B +0.25 0.11 (xpensi) 97.74 80.33 B +0.25 0.11 (v) 124.26 80.33 B +0.25 0.11 (e and w) 129.21 80.33 B +0.25 0.11 (aste resources that could be used) 161.48 80.33 B +0.25 0.56 (for ne) 54 69.33 B +0.25 0.56 (w de) 80.97 69.33 B +0.25 0.56 (v) 102.37 69.33 B +0.25 0.56 (elopment. Because ports to the secondary) 107.78 69.33 B +0.25 0.11 (platforms often lag behind the primary platform by se) 54 58.33 B +0.25 0.11 (v) 276.71 58.33 B +0.25 0.11 (eral) 281.67 58.33 B +315 54 558 621 R +7 X +V +0 X +0.11 (months, the application lock of traditional operating systems) 315 614.33 P +0.25 0.51 (also forces the or) 315 603.33 B +0.25 0.51 (g) 393.4 603.33 B +0.25 0.51 (anization to support man) 398.86 603.33 B +0.25 0.51 (y dif) 510.94 603.33 B +0.25 0.51 (ferent) 532.11 603.33 B +0.25 0.27 (v) 315 592.33 B +0.25 0.27 (ersions of the application. This administrati) 320.12 592.33 B +0.25 0.27 (v) 506.95 592.33 B +0.25 0.27 (e o) 512.07 592.33 B +0.25 0.27 (v) 524.91 592.33 B +0.25 0.27 (erhead) 530.02 592.33 B +0.25 0.32 (mak) 315 581.33 B +0.25 0.32 (es netw) 333.07 581.33 B +0.25 0.32 (ork) 365.7 581.33 B +0.25 0.32 (ed computing with traditional PCs a v) 379.88 581.33 B +0.25 0.32 (ery) 544.6 581.33 B +(e) 315 570.33 T +(xpensi) 319.29 570.33 T +(v) 345.15 570.33 T +(e proposition.) 350 570.33 T +0 8 Q +(1) 405 574.33 T +0 10 Q +0.25 0.5 (W) 315 551.33 B +0.25 0.5 (ith their Write Once/Run An) 324.54 551.33 B +0.25 0.5 (ywhere capability) 453.4 551.33 B +0.25 0.5 (, Ja) 532.92 551.33 B +0.25 0.5 (v) 548.31 551.33 B +0.25 0.5 (a) 553.56 551.33 B +0.25 0.08 (applications do not suf) 315 540.33 B +0.25 0.08 (fer from these problems. De) 408.23 540.33 B +0.25 0.08 (v) 523.69 540.33 B +0.25 0.08 (elopers) 528.62 540.33 B +0.25 0.57 (w) 315 529.33 B +0.25 0.57 (orking on a Sun Ultra computer running the Solaris) 322.69 529.33 B +0.21 (operating system can produce an e) 315 518.33 P +0.21 (x) 453.93 518.33 P +0.21 (ecutable which also runs) 458.78 518.33 P +0.25 0.54 (on W) 315 507.33 B +0.25 0.54 (indo) 338.95 507.33 B +0.25 0.54 (ws PCs, Macintosh and man) 358.65 507.33 B +0.25 0.54 (y other types of) 486.64 507.33 B +0.25 0.13 (computers without an) 315 496.33 B +0.25 0.13 (y porting. This frees up de) 404.69 496.33 B +0.25 0.13 (v) 514.86 496.33 B +0.25 0.13 (elopment) 519.84 496.33 B +0.25 0.11 (resources for other w) 315 485.33 B +0.25 0.11 (ork and ensures that ne) 402.7 485.33 B +0.25 0.11 (w applications) 498.24 485.33 B +0.25 0.32 (and ne) 315 474.33 B +0.25 0.32 (w v) 343.33 474.33 B +0.25 0.32 (ersions of old applications are simultaneously) 359.12 474.33 B +(a) 315 463.33 T +(v) 319.24 463.33 T +(ailable for all platforms in an or) 323.99 463.33 T +(g) 451.01 463.33 T +(anization.) 455.96 463.33 T +1 F +(The Vir) 315 441.33 T +(tual Mac) 349.1 441.33 T +(hine) 389.01 441.33 T +0 F +0.25 0.41 (Ja) 315 425.33 B +0.25 0.41 (v) 323.96 425.33 B +0.25 0.41 (a pro) 329.13 425.33 B +0.25 0.41 (vides its Write Once/Run An) 351.57 425.33 B +0.25 0.41 (ywhere capability) 479.73 425.33 B +0.25 0.19 (through the Ja) 315 414.33 B +0.25 0.19 (v) 374.55 414.33 B +0.25 0.19 (a V) 379.49 414.33 B +0.25 0.19 (irtual Machine. The V) 393.86 414.33 B +0.25 0.19 (irtual Machine is) 486.77 414.33 B +0.25 0.01 (implemented on top of a machine\325) 315 403.33 B +0.25 0.01 (s nati) 453.51 403.33 B +0.25 0.01 (v) 474.96 403.33 B +0.25 0.01 (e operating system.) 479.82 403.33 B +0.25 0.32 (Ja) 315 392.33 B +0.25 0.32 (v) 323.78 392.33 B +0.25 0.32 (a applications run on top of the virtual machine. The) 328.86 392.33 B +0.25 0.2 (virtual machine insulates the application from dif) 315 381.33 B +0.25 0.2 (ferences) 523.31 381.33 B +0.25 0.28 (between underlying operating systems and hardw) 315 370.33 B +0.25 0.28 (are and) 526.93 370.33 B +0.25 1.19 (ensures cross platform compatibility among all) 315 359.33 B +(implementations of the Ja) 315 348.33 T +(v) 417.85 348.33 T +(a platform \050see \336g. 1\051.) 422.6 348.33 T +0.25 0.1 (The Ja) 315 154.71 B +0.25 0.1 (v) 342 154.71 B +0.25 0.1 (a V) 346.85 154.71 B +0.25 0.1 (irtual machine w) 360.95 154.71 B +0.25 0.1 (as f) 430.09 154.71 B +0.25 0.1 (irst widely a) 444.33 154.71 B +0.25 0.1 (v) 495.31 154.71 B +0.25 0.1 (ailable in web) 500.16 154.71 B +0.25 0.09 (bro) 315 143.71 B +0.25 0.09 (wsers. Ja) 328.33 143.71 B +0.25 0.09 (v) 365.25 143.71 B +0.25 0.09 (a-enabled bro) 370.08 143.71 B +0.25 0.09 (wsers are currently a) 425.89 143.71 B +0.25 0.09 (v) 511.24 143.71 B +0.25 0.09 (ailable for) 516.08 143.71 B +315 117 558 137.09 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +315 124.99 446.98 124.99 2 L +0.25 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 612 792 C +0 9.5 Q +0 X +0 0 0 1 0 0 0 K +1.12 (1 A recent report from F) 315 110.67 P +1.12 (orrester Research estimates that, for) 417.11 110.67 P +-0.09 (companies aggressi) 315 100.67 P +-0.09 (v) 388.82 100.67 P +-0.09 (ely managing their PC related costs, cost of) 393.42 100.67 P +3.11 (o) 315 90.67 P +3.11 (wnership for the a) 319.51 90.67 P +3.11 (v) 397.5 90.67 P +3.11 (erage PC ranges between $3,500 and) 402.11 90.67 P +1 ($5,000 per year) 315 80.67 P +1 (. Other studies ha) 375.84 80.67 P +1 (v) 445.14 80.67 P +1 (e sho) 449.75 80.67 P +1 (wn that for companies) 470.3 80.67 P +0.19 (which are not closely w) 315 70.67 P +0.19 (atching PC related costs, cost of o) 405.9 70.67 P +0.19 (wner-) 535.85 70.67 P +(ship can be as high as $12,000 per year) 315 60.67 T +(.) 463.54 60.67 T +0 0 0 1 0 0 0 K +315 170.38 558 345 C +0 0 0 1 0 0 0 K +321.88 311.75 547.5 334.87 R +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +0 10 Q +(Ja) 399.02 322.04 T +(v) 407.15 322.04 T +(a Applications) 411.9 322.04 T +322.38 286.25 548 307.5 R +7 X +V +0 X +N +(Ja) 392.5 294.87 T +(v) 400.63 294.87 T +(a V) 405.38 294.87 T +(irtual Machine) 418.94 294.87 T +322.5 231.5 373.75 279 R +7 X +V +0 X +N +380.5 232.12 431.75 279.62 R +7 X +V +0 X +N +439.13 231.5 490.38 279 R +7 X +V +0 X +N +496.5 232.12 547.75 279.62 R +7 X +V +0 X +N +(Solaris) 336.25 253.62 T +(W) 388.13 253.62 T +(indo) 397.17 253.62 T +(ws) 414.7 253.62 T +(MacOS) 451.25 253.62 T +(Ja) 505.63 253.62 T +(v) 513.76 253.62 T +(aOS) 518.51 253.62 T +322.38 206.62 373.63 228.5 R +7 X +V +0 X +N +380.38 206.62 431.63 228.5 R +7 X +V +0 X +N +439.63 206.62 490.88 228.5 R +7 X +V +0 X +N +496.38 206.62 547.63 228.5 R +7 X +V +0 X +N +0 9 Q +(SP) 325.63 216.75 T +(ARC/Intel) 334.81 216.75 T +(Intel/Others) 385 216.12 T +(Po) 448.75 216.12 T +(werPC) 458.03 216.12 T +(Thin Clients) 500.63 217.37 T +(Fig. 1 The Ja) 321.88 193.62 T +(v) 368.7 193.62 T +(a V) 372.97 193.62 T +(irtual Machine sits between a nati) 385.17 193.62 T +(v) 506.18 193.62 T +(e operating) 510.54 193.62 T +(system and Ja) 321.88 184.62 T +(v) 371.69 184.62 T +(a applications, allo) 375.97 184.62 T +(wing a single e) 443.48 184.62 T +(x) 497.59 184.62 T +(ecutable to) 501.96 184.62 T +(run on man) 321.88 175.62 T +(y dif) 362.74 175.62 T +(ferent systems.) 379.26 175.62 T +0 0 0 1 0 0 0 K +0 0 612 792 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 630 558 740.88 R +7 X +0 0 0 1 0 0 0 K +V +1 18 Q +0 X +(Ja) 243.58 727.96 T +(v) 263.33 727.96 T +(a) 272.97 727.96 T +0 9.6 Q +(\252) 282.98 732.76 T +1 18 Q +( Security) 292.39 727.96 T +2 12 Q +(J) 212.98 692.23 T +(. Ste) 218 692.23 T +(ven F) 238.49 692.23 T +(ritzing) 264.82 692.23 T +(er) 296.04 692.23 T +(, Marianne Mueller) 304.7 692.23 T +0 F +(Sun Microsystems, Inc.) 249.34 676.23 T +FMENDPAGE +%%EndPage: "1" 1 +%%Page: "2" 2 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 18 558 45 R +7 X +0 0 0 1 0 0 0 K +V +0 8 Q +0 X +(\251 Sun Microsystems, Inc., 1996) 54 39.67 T +(2) 306 39.67 T +54 54 558 738 R +7 X +V +0 10 Q +0 X +0.25 0.11 (the major v) 54 731.33 B +0.25 0.11 (ersions of the Unix operating system, W) 101.1 731.33 B +0.25 0.11 (indo) 267.82 731.33 B +0.25 0.11 (ws) 285.78 731.33 B +0.25 0.49 (3.1, 95, and NT) 54 720.33 B +0.25 0.49 (, the MacOS and OS/2 W) 124.1 720.33 B +0.25 0.49 (arp. The Ja) 237.5 720.33 B +0.25 0.49 (v) 287.32 720.33 B +0.25 0.49 (a) 292.56 720.33 B +0.25 0.42 (V) 54 709.33 B +0.25 0.42 (irtual Machine has also been licensed by e) 61.04 709.33 B +0.25 0.42 (v) 249.48 709.33 B +0.25 0.42 (ery major) 254.76 709.33 B +0.25 0.54 (operating systems v) 54 698.33 B +0.25 0.54 (endor) 144.07 698.33 B +0.25 0.54 (, including Apple, HP) 169.15 698.33 B +0.25 0.54 (, IBM,) 267.65 698.33 B +0.25 0.09 (Microsoft and SunSoft. These v) 54 687.33 B +0.25 0.09 (endors will b) 184.95 687.33 B +0.25 0.09 (undle the Ja) 238.61 687.33 B +0.25 0.09 (v) 287.72 687.33 B +0.25 0.09 (a) 292.56 687.33 B +0.25 0.4 (V) 54 676.33 B +0.25 0.4 (irtual Machine with their operating systems. As these) 61.02 676.33 B +0.25 0.35 (implementations become a) 54 665.33 B +0.25 0.35 (v) 169.84 665.33 B +0.25 0.35 (ailable o) 174.94 665.33 B +0.25 0.35 (v) 212.32 665.33 B +0.25 0.35 (er the ne) 217.52 665.33 B +0.25 0.35 (xt se) 255.43 665.33 B +0.25 0.35 (v) 275.77 665.33 B +0.25 0.35 (eral) 280.97 665.33 B +0.25 0.2 (months, Ja) 54 654.33 B +0.25 0.2 (v) 98.83 654.33 B +0.25 0.2 (a will become a standard part of all important) 103.79 654.33 B +(operating systems, and an e) 54 643.33 T +(xpected part of e) 164.11 643.33 T +(v) 230.78 643.33 T +(ery desktop.) 235.63 643.33 T +1 F +(Applets) 54 621.33 T +0 F +0.25 0.17 (W) 54 605.33 B +0.25 0.17 (eb Applets are one of the most e) 62.81 605.33 B +0.25 0.17 (xciting uses of the Ja) 199.12 605.33 B +0.25 0.17 (v) 287.64 605.33 B +0.25 0.17 (a) 292.56 605.33 B +0.18 (Platform. Applets are small pieces of e) 54 594.33 P +0.18 (x) 210.16 594.33 P +0.18 (ecutable code which) 215.01 594.33 P +0.25 0.12 (may be included in W) 54 583.33 B +0.25 0.12 (eb pages and which run inside of the) 144.84 583.33 B +0.25 0.46 (user\325) 54 572.33 B +0.25 0.46 (s bro) 75.76 572.33 B +0.25 0.46 (wser) 97.8 572.33 B +0.25 0.46 (. While traditional web pages ha) 117.98 572.33 B +0.25 0.46 (v) 263.3 572.33 B +0.25 0.46 (e been) 268.61 572.33 B +0.25 0.48 (limited to simple te) 54 561.33 B +0.25 0.48 (xt and graphics, applets allo) 141.76 561.33 B +0.25 0.48 (w web) 268.44 561.33 B +0.25 0.1 (publishers to include sophisticated, interacti) 54 550.33 B +0.25 0.1 (v) 235.22 550.33 B +0.25 0.1 (e applications) 240.17 550.33 B +0.25 0.22 (in their pages. F) 54 539.33 B +0.25 0.22 (or e) 122.72 539.33 B +0.25 0.22 (xample, a stock brok) 138.96 539.33 B +0.25 0.22 (er might w) 227.27 539.33 B +0.25 0.22 (ant to) 273.17 539.33 B +0.25 0.49 (publish the results of a f) 54 528.33 B +0.25 0.49 (inancial analysis model. W) 163.93 528.33 B +0.25 0.49 (ith) 285.45 528.33 B +0.25 0.21 (applets, instead of publishing a simple graph sho) 54 517.33 B +0.25 0.21 (wing the) 260.59 517.33 B +0.25 0.31 (results of the model, the brok) 54 506.33 B +0.25 0.31 (er could publish the model) 181.62 506.33 B +0.25 0.1 (itself, along with connections to li) 54 495.33 B +0.25 0.1 (v) 194.6 495.33 B +0.25 0.1 (e stock mark) 199.55 495.33 B +0.25 0.1 (et data and) 252.21 495.33 B +(the customer\325) 54 484.33 T +(s portfolio.) 108.16 484.33 T +1 F +(Security Implications) 54 462.33 T +0 F +0.25 0.4 (While applets solv) 54 446.33 B +0.25 0.4 (e man) 135.98 446.33 B +0.25 0.4 (y of the important problems in) 162.23 446.33 B +0.25 0.04 (client/serv) 54 435.33 B +0.25 0.04 (er and netw) 95.93 435.33 B +0.25 0.04 (ork-centric computing, the) 143.39 435.33 B +0.25 0.04 (y also raise) 251.09 435.33 B +0.25 0.23 (ne) 54 424.33 B +0.25 0.23 (w concerns about security) 63.65 424.33 B +0.25 0.23 (. In traditional en) 173.62 424.33 B +0.25 0.23 (vironments,) 247.21 424.33 B +0.25 0.04 (companies could protect themselv) 54 413.33 B +0.25 0.04 (es by controlling ph) 192.25 413.33 B +0.25 0.04 (ysical) 273.47 413.33 B +0.25 0.49 (and netw) 54 402.33 B +0.25 0.49 (ork access to their computers by establishing) 94.46 402.33 B +0.25 0.34 (policies for what kinds of softw) 54 391.33 B +0.25 0.34 (are can be used on their) 193.12 391.33 B +0.25 0.16 (machines. These steps include b) 54 380.33 B +0.25 0.16 (uilding a f) 188.4 380.33 B +0.25 0.16 (ire) 231.24 380.33 B +0.25 0.16 (w) 242.03 380.33 B +0.25 0.16 (all between) 249.31 380.33 B +0.25 0.09 (the Internet and the compan) 54 369.33 B +0.25 0.09 (y\325) 169.02 369.33 B +0.25 0.09 (s intranet, obtaining softw) 176.99 369.33 B +0.25 0.09 (are) 284.6 369.33 B +0.25 0.15 (only from kno) 54 358.33 B +0.25 0.15 (wn and trusted sources, and using anti-virus) 113.38 358.33 B +(programs to check all ne) 54 347.33 T +(w softw) 152.06 347.33 T +(are.) 183.9 347.33 T +0.25 0.09 (Use of applets potentially adds a ne) 54 328.33 B +0.25 0.09 (w security vunerability) 200.49 328.33 B +0.25 0.09 (.) 294.5 328.33 B +0.17 (An emplo) 54 317.33 P +0.17 (yee searching an e) 93.79 317.33 P +0.17 (xternal W) 167.71 317.33 P +0.17 (eb site for information) 206.79 317.33 P +-0.19 (might inadv) 54 306.33 P +-0.19 (ertently load and e) 101.72 306.33 P +-0.19 (x) 175.15 306.33 P +-0.19 (ecute an applet without being) 180 306.33 P +0.25 0.03 (a) 54 295.33 B +0.25 0.03 (w) 58.32 295.33 B +0.25 0.03 (are that the site contains e) 65.47 295.33 B +0.25 0.03 (x) 171.06 295.33 B +0.25 0.03 (ecutable code. This automatic) 175.94 295.33 B +0.22 (distrib) 54 284.33 P +0.22 (ution of e) 79.36 284.33 P +0.22 (x) 117.98 284.33 P +0.22 (ecutables mak) 122.83 284.33 P +0.22 (es it v) 179.88 284.33 P +0.22 (ery lik) 204.06 284.33 P +0.22 (ely that softw) 230.01 284.33 P +0.22 (are) 284.79 284.33 P +0.25 0.41 (will be obtained from untrusted third parties. Since the) 54 273.33 B +0.25 0.36 (applet is imported into the user\325) 54 262.33 B +0.25 0.36 (s web bro) 194.19 262.33 B +0.25 0.36 (wser and runs) 236.6 262.33 B +0.25 0.42 (locally) 54 251.33 B +0.25 0.42 (, this softw) 83.51 251.33 B +0.25 0.42 (are could potentially steal or damage) 133.13 251.33 B +0.25 0.17 (information stored in the user\325) 54 240.33 B +0.25 0.17 (s machine on a netw) 181.26 240.33 B +0.25 0.17 (ork f) 266.97 240.33 B +0.25 0.17 (ile) 286.67 240.33 B +0.25 0.53 (serv) 54 229.33 B +0.25 0.53 (er) 72.62 229.33 B +0.25 0.53 (. Also, since this softw) 80.9 229.33 B +0.25 0.53 (are is already behind the) 185.58 229.33 B +-0.13 (compan) 54 218.33 P +-0.13 (y\325) 85.51 218.33 P +-0.13 (s \336re) 93.29 218.33 P +-0.13 (w) 112.63 218.33 P +-0.13 (all, the applet could attack other unprotected) 119.75 218.33 P +-0.14 (machines on a corporate intranet. These attacks w) 54 207.33 P +-0.14 (ould not be) 252.29 207.33 P +(stopped by traditional security measures.) 54 196.33 T +0.25 0.15 (Ja) 54 177.33 B +0.25 0.15 (v) 62.43 177.33 B +0.25 0.15 (a protects its users from these dangers by placing strict) 67.32 177.33 B +0.25 0.15 (limits on applets. Applets cannot read from or write to the) 54 166.33 B +0.25 0.42 (local disk. Stand-alone windo) 54 155.33 B +0.25 0.42 (ws created by applets are) 185.47 155.33 B +0.25 0 (clearly labeled as being o) 54 144.33 B +0.25 0 (wned by untrusted softw) 156.4 144.33 B +0.25 0 (are. These) 255.66 144.33 B +0.25 0.11 (limits pre) 54 133.33 B +0.25 0.11 (v) 93.2 133.33 B +0.25 0.11 (ent malicious applets from stealing information,) 98.17 133.33 B +0.25 0.22 (spreading viruses, or acting as T) 54 122.33 B +0.25 0.22 (rojan horses. Applets are) 191.56 122.33 B +0.25 0.15 (also prohibited from making netw) 54 111.33 B +0.25 0.15 (ork connections to other) 195.84 111.33 B +0.09 (computers on the corporate intranet. This pre) 54 100.33 P +0.09 (v) 234.56 100.33 P +0.09 (ents malicious) 239.41 100.33 P +0.25 0.48 (applets from e) 54 89.33 B +0.25 0.48 (xploiting security f) 118.27 89.33 B +0.25 0.48 (la) 203.91 89.33 B +0.25 0.48 (ws that might e) 211.94 89.33 B +0.25 0.48 (xist) 281.11 89.33 B +0.25 0.2 (behind the f) 54 78.33 B +0.25 0.2 (ire) 104.17 78.33 B +0.25 0.2 (w) 115.09 78.33 B +0.25 0.2 (all or in the underlying operating system.) 122.41 78.33 B +-0.14 (While Ja) 54 67.33 P +-0.14 (v) 88.93 67.33 P +-0.14 (a is the not \336rst or only platform that claims to be a) 93.68 67.33 P +0.25 0.53 (secure means of distrib) 315 731.33 B +0.25 0.53 (uting e) 420.14 731.33 B +0.25 0.53 (x) 451.43 731.33 B +0.25 0.53 (ecutable code o) 456.8 731.33 B +0.25 0.53 (v) 527.25 731.33 B +0.25 0.53 (er the) 532.63 731.33 B +(internet, it it perhaps the best kno) 315 720.33 T +(wn and most widely used.) 448.35 720.33 T +1 F +(WHA) 315 697.33 T +(T IS SECURITY?) 337.98 697.33 T +(The Security Pr) 315 674.33 T +(ocess) 388.16 674.33 T +0 F +-0 (Ef) 315 651.33 P +-0 (fecti) 324.19 651.33 P +-0 (v) 341.71 651.33 P +-0 (e security is an on-going process which must in) 346.56 651.33 P +-0 (v) 536.13 651.33 P +-0 (olv) 540.93 651.33 P +-0 (e) 553.56 651.33 P +0.73 (e) 315 640.33 P +0.73 (v) 319.19 640.33 P +0.73 (ery member of an or) 324.04 640.33 P +0.73 (g) 408.43 640.33 P +0.73 (anization and touch e) 413.38 640.33 P +0.73 (v) 500.59 640.33 P +0.73 (ery aspect of) 505.44 640.33 P +0.92 (its operation. The strongest possible netw) 315 629.33 P +0.92 (ork and computer) 485.61 629.33 P +0.76 (security does little to protect an or) 315 618.33 P +0.76 (g) 456.05 618.33 P +0.76 (anization which has not) 461 618.33 P +0.12 (tak) 315 607.33 P +0.12 (en steps to ensure that its emplo) 327.12 607.33 P +0.12 (yees are trustw) 455.49 607.33 P +0.12 (orth) 515.6 607.33 P +0.12 (y or to) 531.66 607.33 P +2.69 (protect its ph) 315 596.33 P +2.69 (ysical assets from theft. Similarly) 372.54 596.33 P +2.69 (, the best) 516.8 596.33 P +4.97 (security mechanisms and procedures quickly f) 315 585.33 P +4.97 (all into) 524.97 585.33 P +-0.05 (disrepair if the) 315 574.33 P +-0.05 (y are not constantly reinforced by training and) 373.08 574.33 P +(periodically updated to account for ne) 315 563.33 T +(w threats.) 466.66 563.33 T +1 F +(Cost V) 315 541.33 T +(. Security) 345.47 541.33 T +0 F +0.25 0.05 (Security is one means by which an or) 315 525.33 B +0.25 0.05 (g) 468.15 525.33 B +0.25 0.05 (anization can protect) 473.15 525.33 B +0.25 0.16 (or e) 315 514.33 B +0.25 0.16 (xtend a competiti) 331.01 514.33 B +0.25 0.16 (v) 403.44 514.33 B +0.25 0.16 (e adv) 408.45 514.33 B +0.25 0.16 (antage. By protecting v) 430.63 514.33 B +0.25 0.16 (aluable) 528.15 514.33 B +0.25 0.09 (ph) 315 503.33 B +0.25 0.09 (ysical assets or proprietary intellectual property) 325.12 503.33 B +0.25 0.09 (, security) 520.31 503.33 B +0.25 0.32 (policies and procedures allo) 315 492.33 B +0.25 0.32 (w an or) 436.46 492.33 B +0.25 0.32 (g) 469.02 492.33 B +0.25 0.32 (anization to e) 474.3 492.33 B +0.25 0.32 (xploit) 533.05 492.33 B +0.05 (those assets to the fullest. But there are costs associated with) 315 481.33 P +0.25 0.33 (all security procedures and these costs must be weighed) 315 470.33 B +0.25 0.12 (ag) 315 459.33 B +0.25 0.12 (ainst the v) 324.63 459.33 B +0.25 0.12 (alue of the assets protected by those measures) 367.3 459.33 B +0.25 0.02 (and the potential harm which could be caused by the loss of) 315 448.33 B +0.05 (that asset. A compan) 315 437.33 P +0.05 (y which wished to adv) 398.33 437.33 P +0.05 (ertise on the W) 488.38 437.33 P +0.05 (eb) 548.56 437.33 P +0.25 0.6 (may be satisf) 315 426.33 B +0.25 0.6 (ied with a simple f) 375.56 426.33 B +0.25 0.6 (ire) 461.91 426.33 B +0.25 0.6 (w) 474.02 426.33 B +0.25 0.6 (all to discourage) 481.75 426.33 B +0.12 (electronic v) 315 415.33 P +0.12 (andals. A lar) 361.8 415.33 P +0.12 (ge \336nancial institute with billions of) 412.68 415.33 P +0.25 0.12 (dollars at stak) 315 404.33 B +0.25 0.12 (e could justify much more elaborate security) 372.83 404.33 B +0.25 0.68 (measures, possibly including public k) 315 393.33 B +0.25 0.68 (e) 491.86 393.33 B +0.25 0.68 (y encryption,) 496.83 393.33 B +0.25 0.17 (dedicated, pri) 315 382.33 B +0.25 0.17 (v) 371.87 382.33 B +0.25 0.17 (ate netw) 376.8 382.33 B +0.25 0.17 (orks and re) 411.94 382.33 B +0.25 0.17 (gular security audits. In) 458.64 382.33 B +0.25 0.03 (e) 315 371.33 B +0.25 0.03 (xtreme cases, public safety and national security may be at) 319.32 371.33 B +0.25 0.05 (risk. F) 315 360.33 B +0.25 0.05 (or applications such as air traf) 341.04 360.33 B +0.25 0.05 (f) 464.05 360.33 B +0.25 0.05 (ic control and military) 466.88 360.33 B +0.25 0.46 (and intelligence systems, the risks of connecting these) 315 349.33 B +0.25 0.06 (systems to the Internet may so f) 315 338.33 B +0.25 0.06 (ar out-weigh the benef) 445.46 338.33 B +0.25 0.06 (its of) 537.18 338.33 B +0.25 0.25 (increased communication that the most sensiti) 315 327.33 B +0.25 0.25 (v) 511.85 327.33 B +0.25 0.25 (e of these) 516.95 327.33 B +(systems should ne) 315 316.33 T +(v) 387.53 316.33 T +(er be connected \050see \336g. 2\051.) 392.38 316.33 T +3 F +(Ne) 315 135.15 T +(w T) 327.63 135.15 T +(ec) 343.7 135.15 T +(hnology) 354.72 135.15 T +0 F +0.25 0.08 (Since no security system can e) 315 116.15 B +0.25 0.08 (v) 440.85 116.15 B +0.25 0.08 (er be 100% secure, it is not) 445.78 116.15 B +0.02 (meaningful to ask if a ne) 315 105.15 P +0.02 (w technology or system is \322secure\323.) 414.02 105.15 P +0.25 0.14 (Instead one should e) 315 94.15 B +0.25 0.14 (v) 400.21 94.15 B +0.25 0.14 (aluate the ne) 405.1 94.15 B +0.25 0.14 (w technology in light of) 457.69 94.15 B +0.25 0.21 (the e) 315 83.15 B +0.25 0.21 (xisting cost/security tradeof) 335.29 83.15 B +0.25 0.21 (fs. If the ne) 452.61 83.15 B +0.25 0.21 (w technology) 501.33 83.15 B +0.25 0.54 (mak) 315 72.15 B +0.25 0.54 (es it easier or cheaper to obtain the same le) 333.75 72.15 B +0.25 0.54 (v) 532.13 72.15 B +0.25 0.54 (el of) 537.52 72.15 B +0.25 0.04 (security) 315 61.15 B +0.25 0.04 (, that technology w) 346.36 61.15 B +0.25 0.04 (ould be v) 424.49 61.15 B +0.25 0.04 (ery attracti) 462.45 61.15 B +0.25 0.04 (v) 506.02 61.15 B +0.25 0.04 (e. If, on the) 510.91 61.15 B +0 0 0 1 0 0 0 K +315 150.82 558 313 C +0 0 0 1 0 0 0 K +333 304 333 205 531 205 3 L +0.5 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 10 Q +(Cost) 438.5 191.73 T +(Security) 0 -270 328.33 234 TF +90 180 180 72 522 214 A +J +333 292.5 540 292.5 2 L +J +333 292.5 336.75 292.5 2 L +N +[7.389 6.404] 7.389 I +336.75 292.5 536.25 292.5 2 L +N +J +536.25 292.5 540 292.5 2 L +N +(Fig. 2 Increasing security increases costs. Or) 326.5 176.04 T +(g) 505.17 176.04 T +(anizations) 510.12 176.04 T +(must choose the appropriate trade of) 326.5 166.04 T +(f.) 472.05 166.04 T +(W) 355.5 225 T +(eb adv) 364.14 225 T +(ertiser) 390.37 225 T +(On-line commerce) 395.5 256.5 T +(National) 494 274.5 T +(Security) 494 264.5 T +J +340 228.64 346.36 235 352.73 228.64 346.36 222.27 4 Y +V +J +340 228.64 346.36 235 352.73 228.64 346.36 222.27 4 Y +J +342.65 225.98 340 228.64 342.65 231.29 3 L +N +[1.731 1.5] 1.731 I +342.65 231.29 343.71 232.35 2 L +N +J +343.71 232.35 346.36 235 349.02 232.35 3 L +N +[1.731 1.5] 1.731 I +349.02 232.35 350.08 231.29 2 L +N +J +350.08 231.29 352.73 228.64 350.08 225.98 3 L +N +[1.731 1.5] 1.731 I +350.08 225.98 349.02 224.92 2 L +N +J +349.02 224.92 346.36 222.27 343.71 224.92 3 L +N +[1.731 1.5] 1.731 I +343.71 224.92 342.65 225.98 2 L +N +J +377.64 260 384 266.36 390.36 260 384 253.64 4 Y +V +J +377.64 260 384 266.36 390.36 260 384 253.64 4 Y +J +380.29 257.35 377.64 260 380.29 262.65 3 L +N +[1.731 1.5] 1.731 I +380.29 262.65 381.35 263.71 2 L +N +J +381.35 263.71 384 266.36 386.65 263.71 3 L +N +[1.731 1.5] 1.731 I +386.65 263.71 387.71 262.65 2 L +N +J +387.71 262.65 390.36 260 387.71 257.35 3 L +N +[1.731 1.5] 1.731 I +387.71 257.35 386.65 256.29 2 L +N +J +386.65 256.29 384 253.64 381.35 256.29 3 L +N +[1.731 1.5] 1.731 I +381.35 256.29 380.29 257.35 2 L +N +J +478.14 283.5 484.5 289.86 490.86 283.5 484.5 277.14 4 Y +V +J +478.14 283.5 484.5 289.86 490.86 283.5 484.5 277.14 4 Y +J +480.79 280.85 478.14 283.5 480.79 286.15 3 L +N +[1.731 1.5] 1.731 I +480.79 286.15 481.85 287.21 2 L +N +J +481.85 287.21 484.5 289.86 487.15 287.21 3 L +N +[1.731 1.5] 1.731 I +487.15 287.21 488.21 286.15 2 L +N +J +488.21 286.15 490.86 283.5 488.21 280.85 3 L +N +[1.731 1.5] 1.731 I +488.21 280.85 487.15 279.79 2 L +N +J +487.15 279.79 484.5 277.14 481.85 279.79 3 L +N +[1.731 1.5] 1.731 I +481.85 279.79 480.79 280.85 2 L +N +0 0 0 1 0 0 0 K +J +0 0 612 792 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "2" 2 +%%Page: "3" 3 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 9 558 36 R +7 X +0 0 0 1 0 0 0 K +V +0 8 Q +0 X +(\251 Sun Microsystems, Inc., 1996) 54 30.67 T +(3) 306 30.67 T +54 54 558 738 R +7 X +V +0 10 Q +0 X +0.25 1.22 (other hand, the ne) 54 731.33 B +0.25 1.22 (w system opens ne) 148.02 731.33 B +0.25 1.22 (w security) 244.44 731.33 B +0.25 0.5 (vulnerabilities and mak) 54 720.33 B +0.25 0.5 (es it more costly to achie) 159.79 720.33 B +0.25 0.5 (v) 273.52 720.33 B +0.25 0.5 (e an) 278.87 720.33 B +0.25 0.06 (acceptable le) 54 709.33 B +0.25 0.06 (v) 106.72 709.33 B +0.25 0.06 (el of security) 111.63 709.33 B +0.25 0.06 (, the or) 164.56 709.33 B +0.25 0.06 (g) 193.42 709.33 B +0.25 0.06 (anization must carefully) 198.43 709.33 B +0.11 (weigh the bene\336ts of) 54 698.33 P +0.11 (fered by the technology and ask itself if) 137.67 698.33 P +0.25 0.14 (these benef) 54 687.33 B +0.25 0.14 (its are w) 100.46 687.33 B +0.25 0.14 (orth either the added risk the) 135.96 687.33 B +0.25 0.14 (y bring or) 255.84 687.33 B +(the added e) 54 676.33 T +(xpense required to manage these risks.) 99.39 676.33 T +3 F +(Usability) 54 657.33 T +0 F +0.25 0.17 (When calculating security costs, usability is an important,) 54 638.33 B +0.25 0.33 (and often hidden, f) 54 627.33 B +0.25 0.33 (actor) 136.54 627.33 B +0.25 0.33 (. If security mechanisms are too) 157.65 627.33 B +0.25 0.58 (time-consuming or dif) 54 616.33 B +0.25 0.58 (f) 155.81 616.33 B +0.25 0.58 (icult to use, the) 159.17 616.33 B +0.25 0.58 (y can decrease) 230.69 616.33 B +-0.03 (producti) 54 605.33 P +-0.03 (vity by taking time and resources which should ha) 87.08 605.33 P +-0.03 (v) 287.71 605.33 P +-0.03 (e) 292.56 605.33 P +0.25 (been directed to the or) 54 594.33 P +0.25 (g) 144.23 594.33 P +0.25 (anization\325) 149.18 594.33 P +0.25 (s mission. Ov) 188.62 594.33 P +0.25 (erly stringent) 243.7 594.33 P +0.23 (procedures can actually weak) 54 583.33 P +0.23 (en security) 172.61 583.33 P +0.23 (. Users who \336nd the) 215.79 583.33 P +0.25 0.56 (policies dif) 54 572.33 B +0.25 0.56 (f) 105.47 572.33 B +0.25 0.56 (icult to follo) 108.82 572.33 B +0.25 0.56 (w may ignore the policies or) 166.4 572.33 B +0.25 0.18 (implement them haphazardly) 54 561.33 B +0.25 0.18 (. In e) 175.13 561.33 B +0.25 0.18 (xtreme cases, where the) 196.82 561.33 B +0.25 0.39 (policies are seen as b) 54 550.33 B +0.25 0.39 (ureaucratic roadblocks, users may) 147.76 550.33 B +0.25 0.06 (acti) 54 539.33 B +0.25 0.06 (v) 68.44 539.33 B +0.25 0.06 (ely sabotage the policies in order to \322get the job done\323) 73.35 539.33 B +(\050see \336g. 3\051.) 54 528.33 T +0.25 0.52 (In general, it is v) 54 337.33 B +0.25 0.52 (ery dif) 132.16 337.33 B +0.25 0.52 (f) 162.16 337.33 B +0.25 0.52 (icult to design easy-to-use or) 165.46 337.33 B +0.25 0.52 (automatic security mechanisms which still ef) 54 326.33 B +0.25 0.52 (fecti) 258.23 326.33 B +0.25 0.52 (v) 278.36 326.33 B +0.25 0.52 (ely) 283.73 326.33 B +0.25 0.18 (protect an or) 54 315.33 B +0.25 0.18 (g) 107.22 315.33 B +0.25 0.18 (anization\325) 112.35 315.33 B +0.25 0.18 (s assets. Despite these dif) 153.61 315.33 B +0.25 0.18 (f) 261.2 315.33 B +0.25 0.18 (iculties,) 264.16 315.33 B +0.25 0.31 (Ja) 54 304.33 B +0.25 0.31 (v) 62.74 304.33 B +0.25 0.31 (a is able to pro) 67.8 304.33 B +0.25 0.31 (vide transparent security mechanisms,) 132.44 304.33 B +0.25 0.01 (which do not require an) 54 293.33 B +0.25 0.01 (y kno) 150 293.33 B +0.25 0.01 (wledge or action on the part of) 172.53 293.33 B +0.25 0.06 (the end user) 54 282.33 B +0.25 0.06 (. This is possible because Ja) 102.97 282.33 B +0.25 0.06 (v) 217.93 282.33 B +0.25 0.06 (a\325) 222.74 282.33 B +0.25 0.06 (s security model) 230.07 282.33 B +0.25 0.09 (is intended to protect the end-user from hostile e) 54 271.33 B +0.25 0.09 (x) 254.14 271.33 B +0.25 0.09 (ecutables) 259.08 271.33 B +-0.19 (accidentally imported from untrusted sources. Limiting these) 54 260.33 P +0.25 0.68 (so called \322T) 54 249.33 B +0.25 0.68 (rojan horses\323 is a much easier task than) 110.65 249.33 B +0.25 0.42 (pro) 54 238.33 B +0.25 0.42 (viding general netw) 68.44 238.33 B +0.25 0.42 (ork and ph) 156.23 238.33 B +0.25 0.42 (ysical security) 203.64 238.33 B +0.25 0.42 (. Since) 267.02 238.33 B +0.25 0.18 (Ja) 54 227.33 B +0.25 0.18 (v) 62.49 227.33 B +0.25 0.18 (a\325) 67.43 227.33 B +0.25 0.18 (s security model is intended to augment, not replace,) 75.01 227.33 B +0.25 0.22 (these traditional security mechanisms, Ja) 54 216.33 B +0.25 0.22 (v) 227.51 216.33 B +0.25 0.22 (a can pro) 232.48 216.33 B +0.25 0.22 (vide a) 271.48 216.33 B +0.25 0.26 (simple, usable solution to this simpler) 54 205.33 B +0.25 0.26 (, more manageable) 216.57 205.33 B +(problem.) 54 194.33 T +1 F +(Common Security F) 54 172.33 T +(allacies) 148.26 172.33 T +3 F +(Risk A) 54 156.33 T +(v) 84.72 156.33 T +(oidance) 89.98 156.33 T +0 F +-0.17 (The most common security f) 54 137.33 P +-0.17 (allac) 168.2 137.33 P +-0.17 (y is that the goal of security) 186.93 137.33 P +0.25 0.03 (is to eliminate all risk and vulnerabilities from a system. As) 54 126.33 B +0.25 0.03 (discussed abo) 54 115.33 B +0.25 0.03 (v) 109.72 115.33 B +0.25 0.03 (e, this is an unobtainable goal and little good) 114.6 115.33 B +0.25 0.03 (comes from pursuing it. A compan) 54 104.33 B +0.25 0.03 (y with a \322zero tolerance\323) 195.39 104.33 B +0.25 0.28 (approach to security risks w) 54 93.33 B +0.25 0.28 (ould be forced to disconnect) 175.04 93.33 B +0.25 0.47 (itself completely from the Internet and thus w) 54 82.33 B +0.25 0.47 (ould not) 260.39 82.33 B +0.25 0.88 (benef) 54 71.33 B +0.25 0.88 (it from the v) 80.04 71.33 B +0.25 0.88 (ast resources and near) 141.66 71.33 B +0.25 0.88 (-uni) 249.52 71.33 B +0.25 0.88 (v) 268.89 71.33 B +0.25 0.88 (ersal) 274.61 71.33 B +0.25 0.16 (connecti) 54 60.33 B +0.25 0.16 (vity it pro) 88.92 60.33 B +0.25 0.16 (vides. Such a compan) 130.49 60.33 B +0.25 0.16 (y w) 221.53 60.33 B +0.25 0.16 (ould still be at) 236.88 60.33 B +0.25 0.56 (risk from undetected viruses in commercial softw) 315 731.33 B +0.25 0.56 (are,) 541.61 731.33 B +(disgruntled emplo) 315 720.33 T +(yees and industrial espionage.) 387.4 720.33 T +0.25 0.68 (While this compan) 315 701.33 B +0.25 0.68 (y spends v) 402.52 701.33 B +0.25 0.68 (ast sums of mone) 451.82 701.33 B +0.25 0.68 (y and) 533.08 701.33 B +0.25 0.82 (resources chasing the chimera of total security) 315 690.33 B +0.25 0.82 (, its) 540.01 690.33 B +0.25 0.17 (competitors with more realistic security policies w) 315 679.33 B +0.25 0.17 (ould be) 527.04 679.33 B +0.25 0.14 (concentrating on more practical matters such as e) 315 668.33 B +0.25 0.14 (xploiting) 520.78 668.33 B +0.25 0.64 (ne) 315 657.33 B +0.25 0.64 (w) 325.47 657.33 B +0.25 0.64 (, \322risk) 332.68 657.33 B +0.25 0.64 (y\323 technologies to better their competiti) 361.7 657.33 B +0.25 0.64 (v) 548.07 657.33 B +0.25 0.64 (e) 553.56 657.33 B +(position.) 315 646.33 T +3 F +(Piecemeal Security) 315 627.33 T +0 F +0.13 (The risk a) 315 608.33 P +0.13 (v) 355.06 608.33 P +0.13 (oidance f) 359.86 608.33 P +0.13 (allac) 396.82 608.33 P +0.13 (y is v) 415.55 608.33 P +0.13 (ery common among computer) 437.34 608.33 P +0.08 (users and managers. F) 315 597.33 P +0.08 (ortunately) 403.97 597.33 P +0.08 (, most security professionals) 443.87 597.33 P +0.25 0.54 (recognize that their goal is risk management, not risk) 315 586.33 B +0.25 0.5 (a) 315 575.33 B +0.25 0.5 (v) 319.74 575.33 B +0.25 0.5 (oidance, and do not f) 325.04 575.33 B +0.25 0.5 (all into this trap. Among these) 420.61 575.33 B +0.25 0.66 (professionals, piecemeal security is a more common) 315 564.33 B +(problem.) 315 553.33 T +0.25 0 (Piecemeal security is the tendenc) 315 534.33 B +0.25 0 (y to look at small pieces of) 448.67 534.33 B +0.08 (a system or netw) 315 523.33 P +0.08 (ork in isolation from the system as a whole.) 382.64 523.33 P +0.25 0.73 (Because computer systems and especially computer) 315 512.33 B +0.25 0.19 (netw) 315 501.33 B +0.25 0.19 (orks can be e) 335.09 501.33 B +0.25 0.19 (xtremely comple) 390.61 501.33 B +0.25 0.19 (x, it is of little v) 461.02 501.33 B +0.25 0.19 (alue to) 529.68 501.33 B +0.25 0.02 (e) 315 490.33 B +0.25 0.02 (xamine indi) 319.31 490.33 B +0.25 0.02 (vidual aspects of the system. Informed security) 367.02 490.33 B +0.25 0.06 (decisions can only be made by e) 315 479.33 B +0.25 0.06 (xamining the entire system) 447.67 479.33 B +0.25 0.22 (and looking for the unanticipated side-ef) 315 468.33 B +0.25 0.22 (fects of adding a) 487.4 468.33 B +(ne) 315 457.33 T +(w type of softw) 324.19 457.33 T +(are or netw) 386.58 457.33 T +(ork resource.) 431.46 457.33 T +0.25 0.42 (Piecemeal security often is the result of ha) 315 438.33 B +0.25 0.42 (ving se) 504.89 438.33 B +0.25 0.42 (v) 536.46 438.33 B +0.25 0.42 (eral) 541.74 438.33 B +0.25 0.1 (departments responsible for dif) 315 427.33 B +0.25 0.1 (ferent aspects of security) 443.35 427.33 B +0.25 0.1 (. If) 545.78 427.33 B +0.15 (these departments do not w) 315 416.33 P +0.15 (ork closely together) 424.92 416.33 P +0.15 (, each can set) 504.25 416.33 P +0.12 (policies without re) 315 405.33 P +0.12 (g) 389.53 405.33 P +0.12 (ard for ho) 394.48 405.33 P +0.12 (w those policies af) 433.9 405.33 P +0.12 (fect security) 508.73 405.33 P +0.25 0.29 (as a whole. This can create vulnerabilities at the borders) 315 394.33 B +0.25 0.09 (between tw) 315 383.33 B +0.25 0.09 (o departments and decrease the total security of) 361.86 383.33 B +-0.16 (the or) 315 372.33 P +-0.16 (g) 337.71 372.33 P +-0.16 (anization. These g) 342.66 372.33 P +-0.16 (aps are particularly dangerous since) 415.34 372.33 P +0.25 0.49 (attack) 315 361.33 B +0.25 0.49 (ers may acti) 341.71 361.33 B +0.25 0.49 (v) 396.13 361.33 B +0.25 0.49 (ely seek out areas in which se) 401.47 361.33 B +0.25 0.49 (v) 536.21 361.33 B +0.25 0.49 (eral) 541.55 361.33 B +0.25 0.02 (departments share security responsibilities or in which there) 315 350.33 B +(is a g) 315 339.33 T +(ap between departments.) 336.06 339.33 T +3 F +(Steel Door) 315 320.33 T +(s And Grass Huts) 364.86 320.33 T +0 F +-0.23 (Piecemeal security can lead an or) 315 301.33 P +-0.23 (g) 447.26 301.33 P +-0.23 (anization to o) 452.21 301.33 P +-0.23 (v) 506.05 301.33 P +-0.23 (er) 510.9 301.33 P +-0.23 (-react to a) 518.47 301.33 P +0.25 0.07 (percei) 315 290.33 B +0.25 0.07 (v) 339.59 290.33 B +0.25 0.07 (ed vulnerability) 344.51 290.33 B +0.25 0.07 (. This is often the case when dealing) 408.26 290.33 B +0.25 0.05 (with ne) 315 279.33 B +0.25 0.05 (w technologies. A f) 345.04 279.33 B +0.25 0.05 (la) 424.42 279.33 B +0.25 0.05 (w found in the ne) 431.58 279.33 B +0.25 0.05 (w technology) 503.09 279.33 B +0.25 0.02 (prompts the or) 315 268.33 B +0.25 0.02 (g) 373.92 268.33 B +0.25 0.02 (anization to e) 378.89 268.33 B +0.25 0.02 (xpend great ef) 433.38 268.33 B +0.25 0.02 (fort patching the) 491.1 268.33 B +0.25 0.43 (vulnerability) 315 257.33 B +0.25 0.43 (, without f) 371.07 257.33 B +0.25 0.43 (irst checking to see if this same) 417.15 257.33 B +0.25 0.22 (vulnerability e) 315 246.33 B +0.25 0.22 (xists, undetected, in e) 376.45 246.33 B +0.25 0.22 (xisting systems. Lik) 468.48 246.33 B +0.25 0.22 (e) 553.56 246.33 B +0.25 0.12 (steel doors on a grass hut, these patches, produced at great) 315 235.33 B +0.25 0.04 (e) 315 224.33 B +0.25 0.04 (xpense, close one possible hole b) 319.33 224.33 B +0.25 0.04 (ut do little to increase the) 454.36 224.33 B +(security of the system as a whole.) 315 213.33 T +0.08 (While the desire to b) 315 194.33 P +0.08 (uild steel doors to protect ag) 398.42 194.33 P +0.08 (ainst ne) 512.34 194.33 P +0.08 (wly) 543 194.33 P +0.25 0.02 (percei) 315 183.33 B +0.25 0.02 (v) 339.31 183.33 B +0.25 0.02 (ed threats can w) 344.18 183.33 B +0.25 0.02 (aste resources and slo) 409.88 183.33 B +0.25 0.02 (w the adoption) 497.78 183.33 B +0.25 0.18 (of ne) 315 172.33 B +0.25 0.18 (w technology) 336.18 172.33 B +0.25 0.18 (, pre) 392.13 172.33 B +0.25 0.18 (viously constructed steel doors can) 410.82 172.33 B +0.02 (blind an or) 315 161.33 P +0.02 (g) 358.19 161.33 P +0.02 (anization to ne) 363.14 161.33 P +0.02 (w or pre) 421.8 161.33 P +0.02 (viously unnoticed threats.) 454.91 161.33 P +0.25 0.01 (If the ne) 315 150.33 B +0.25 0.01 (w found threat is not well-understood and is similar) 348.69 150.33 B +0.25 0.19 (to the threat which moti) 315 139.33 B +0.25 0.19 (v) 415.85 139.33 B +0.25 0.19 (ated the construction of the steel) 420.79 139.33 B +0.25 0.1 (door) 315 128.33 B +0.25 0.1 (, f) 333.32 128.33 B +0.25 0.1 (alse conf) 342.08 128.33 B +0.25 0.1 (idence in the elaborately constructed door\325) 378.47 128.33 B +0.25 0.1 (s) 554.11 128.33 B +0.25 0.62 (ability to protect ag) 315 117.33 B +0.25 0.62 (ainst the ne) 406.71 117.33 B +0.25 0.62 (w threat can slo) 459.92 117.33 B +0.25 0.62 (w the) 533.34 117.33 B +(adoption of more ef) 315 106.33 T +(fecti) 393.9 106.33 T +(v) 411.42 106.33 T +(e measures.) 416.27 106.33 T +1 F +(K) 315 84.33 T +(eeping Current) 322.07 84.33 T +0 F +0.25 0.2 (One of the most important parts of the security process is) 315 68.33 B +0.25 0.44 (staying informed. Ne) 315 57.33 B +0.25 0.44 (w vulnerabilities in computer and) 408.66 57.33 B +0 0 0 1 0 0 0 K +54 353 297 525 C +0 0 0 1 0 0 0 K +72 516 72 417 270 417 3 L +0.5 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 10 Q +(Cost) 177.5 399 T +(Security) 0 -270 67.33 446 TF +J +72 504.5 279 504.5 2 L +J +72 504.5 75.75 504.5 2 L +N +[7.389 6.404] 7.389 I +75.75 504.5 275.25 504.5 2 L +N +J +275.25 504.5 279 504.5 2 L +N +J +84.5 428 M + 87.78 446.62 130.8 492.97 143 466 D + 152.5 445 169.38 437.04 196.5 439.44 D + 202.3 439.95 260.67 438.81 266.5 439 D +N +(Fig. 3 Ov) 63.5 377.5 T +(erly complicated and dif) 101.41 377.5 T +(\336cult to follo) 198.64 377.5 T +(w) 250.62 377.5 T +(procedures reduce o) 63.5 367.5 T +(v) 143.87 367.5 T +(erall security and increase cost.) 148.72 367.5 T +0 0 0 1 0 0 0 K +0 0 612 792 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "3" 3 +%%Page: "4" 4 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 18 558 45 R +7 X +0 0 0 1 0 0 0 K +V +0 8 Q +0 X +(\251 Sun Microsystems, Inc., 1996) 54 39.67 T +(4) 306 39.67 T +54 54 558 738 R +7 X +V +0 10 Q +0 X +0.25 0.49 (netw) 54 731.33 B +0.25 0.49 (ork systems, and ne) 75.31 731.33 B +0.25 0.49 (w attacks which e) 164.04 731.33 B +0.25 0.49 (xploit those) 244.38 731.33 B +0.25 0.21 (vulnerabilities, are found re) 54 720.33 B +0.25 0.21 (gularly) 171.28 720.33 B +0.25 0.21 (. Because of these ne) 200.44 720.33 B +0.25 0.21 (w) 289.78 720.33 B +0.25 0.51 (attacks, e) 54 709.33 B +0.25 0.51 (v) 96.35 709.33 B +0.25 0.51 (en the most secure installation will quickly) 101.72 709.33 B +0.25 0.09 (become vulnerable if its security is not acti) 54 698.33 B +0.25 0.09 (v) 231.48 698.33 B +0.25 0.09 (ely maintained) 236.42 698.33 B +(by a well-informed, up-to-date staf) 54 687.33 T +(f.) 193.44 687.33 T +0.25 0.13 (The CER) 54 668.33 B +0.25 0.13 (T) 92.04 668.33 B +0 8 Q +0.2 0.13 (2) 98.28 672.33 B +0 10 Q +0.25 0.13 ( Coordination Center \050CER) 102.4 668.33 B +0.25 0.13 (T/CC\051 maintains an) 215.45 668.33 B +0.25 0.06 (e) 54 657.33 B +0.25 0.06 (xcellent set of on-line resources for security professionals.) 58.35 657.33 B +-0.03 (The CER) 54 646.33 P +-0.03 (T/CC e) 90.87 646.33 P +-0.03 (v) 119.75 646.33 P +-0.03 (olv) 124.55 646.33 P +-0.03 (ed from an Adv) 137.18 646.33 P +-0.03 (anced Research Projects) 199.88 646.33 P +0 (Agenc) 54 635.33 P +0 (y \050ARP) 79.95 635.33 P +0 (A\051 computer emer) 109.31 635.33 P +0 (genc) 182.45 635.33 P +0 (y response team formed) 201.18 635.33 P +0.25 0 (in 1988 follo) 54 624.33 B +0.25 0 (wing the Morris Internet W) 105.96 624.33 B +0.25 0 (orm. The CER) 216.21 624.33 B +0.25 0 (T/CC) 274.76 624.33 B +0.25 0.05 (collects and in) 54 613.33 B +0.25 0.05 (v) 112.62 613.33 B +0.25 0.05 (estig) 117.52 613.33 B +0.25 0.05 (ates reports of security attacks and ne) 136.61 613.33 B +0.25 0.05 (w) 289.78 613.33 B +0.25 0.27 (found vulnerabilities. The) 54 602.33 B +0.25 0.27 (y distrib) 165.01 602.33 B +0.25 0.27 (ute this information as) 200.56 602.33 B +0.25 0.14 (CER) 54 591.33 B +0.25 0.14 (T Advisories, which document the vulnerabilities, list) 73.26 591.33 B +0.02 (con\336rmed and rumored occurrences of attacks e) 54 580.33 P +0.02 (xploiting the) 246.14 580.33 P +0.25 0.31 (vulnerabilities, and document patches and procedures to) 54 569.33 B +(close the vulnerabilities.) 54 558.33 T +0.25 0.2 (Ov) 54 539.33 B +0.25 0.2 (er the last se) 66.47 539.33 B +0.25 0.2 (v) 119.46 539.33 B +0.25 0.2 (eral years the CER) 124.5 539.33 B +0.25 0.2 (T/CC has documented) 203.49 539.33 B +0.25 0.51 (approximately 10 to 20 ne) 54 528.33 B +0.25 0.51 (w-found vulnerabilities and) 172.59 528.33 B +0.25 0.09 (attacks each year) 54 517.33 B +0.25 0.09 (. These vulnerabilities co) 123.82 517.33 B +0.25 0.09 (v) 227.35 517.33 B +0.25 0.09 (er all aspects of) 232.29 517.33 B +0.25 0.14 (computer security on systems ranging from mainframes to) 54 506.33 B +0.25 1.08 (Microsoft W) 54 495.33 B +0.25 1.08 (indo) 117.09 495.33 B +0.25 1.08 (ws. CER) 138.93 495.33 B +0.25 1.08 (T Advisories and other) 181.68 495.33 B +0.25 0.31 (information can be found on their web site at) 54 484.33 B +4 F +0.6 0.31 (http://) 253.12 484.33 B +(www.cert.org) 54 473.33 T +0 F +(.) 126 473.33 T +1 F +(J) 54 450.33 T +(A) 59.36 450.33 T +(V) 65.78 450.33 T +(A SECURITY) 71.65 450.33 T +(The Sandbo) 54 427.33 T +(x) 110.93 427.33 T +0 F +0.25 0.05 (Ja) 54 411.33 B +0.25 0.05 (v) 62.23 411.33 B +0.25 0.05 (a\325) 67.03 411.33 B +0.25 0.05 (s security allo) 74.35 411.33 B +0.25 0.05 (ws a user to import and run applets from) 130.88 411.33 B +0.25 0.44 (the W) 54 400.33 B +0.25 0.44 (eb or an intranet without undue risk to the user\325) 79.79 400.33 B +0.25 0.44 (s) 293.11 400.33 B +0.03 (machine. The applet\325) 54 389.33 P +0.03 (s actions are restricted to its \322sandbox\323,) 138.22 389.33 P +0.25 0.3 (an area of the web bro) 54 378.33 B +0.25 0.3 (wser dedicated to that applet. The) 150.79 378.33 B +0.25 0.36 (applet may do an) 54 367.33 B +0.25 0.36 (ything it w) 128.99 367.33 B +0.25 0.36 (ants within its sandbox, b) 176.71 367.33 B +0.25 0.36 (ut) 288.86 367.33 B +0.25 0.29 (cannot read or alter an) 54 356.33 B +0.25 0.29 (y data outside of its sandbox. The) 151.05 356.33 B +0.25 0.73 (sandbox model is to run untrusted code in a trusted) 54 345.33 B +0.25 0.12 (en) 54 334.33 B +0.25 0.12 (vironment so that if a user accidentally imports a hostile) 63.28 334.33 B +(applet, that applet cannot damage the local machine.) 54 323.33 T +0.15 (This approach is much dif) 54 304.33 P +0.15 (ferent from that used in traditional) 158.77 304.33 P +0.25 0.19 (operating systems. Because most operating systems allo) 54 293.33 B +0.25 0.19 (w) 289.78 293.33 B +0.25 0.07 (applications broad access to the machine, especially in PCs) 54 282.33 B +0.25 0.32 (where v) 54 271.33 B +0.25 0.32 (ery little protection is pro) 88.28 271.33 B +0.25 0.32 (vided by the operating) 199.79 271.33 B +0.25 0.46 (system, the runtime en) 54 260.33 B +0.25 0.46 (vironment cannot be trusted. T) 154.99 260.33 B +0.25 0.46 (o) 292 260.33 B +0.25 0.21 (compensate for this lack, security policies often require a) 54 249.33 B +0.25 0.06 (le) 54 238.33 B +0.25 0.06 (v) 61.09 238.33 B +0.25 0.06 (el of trust to be established in the application before it is) 66 238.33 B +0.25 0.18 (e) 54 227.33 B +0.25 0.18 (x) 58.47 227.33 B +0.25 0.18 (ecuted. F) 63.5 227.33 B +0.25 0.18 (or e) 101.9 227.33 B +0.25 0.18 (xample, an or) 118 227.33 B +0.25 0.18 (g) 175.39 227.33 B +0.25 0.18 (anization might require that) 180.52 227.33 B +0.25 0.18 (before an emplo) 54 216.33 B +0.25 0.18 (yee runs an application obtained from the) 122.12 216.33 B +0.25 0.25 (web, that application must be check) 54 205.33 B +0.25 0.25 (ed for viruses and its) 207.35 205.33 B +(source code e) 54 194.33 T +(xamined for malicious code.) 108.27 194.33 T +0.13 (There are tw) 54 175.33 P +0.13 (o problems with this approach. First, the checks) 104.7 175.33 P +0.06 (required to b) 54 164.33 P +0.06 (uild trust in the application may be too comple) 105.02 164.33 P +0.06 (x) 292 164.33 P +0.25 0.28 (and time-consuming to be practical. Fe) 54 153.33 B +0.25 0.28 (w emplo) 221.82 153.33 B +0.25 0.28 (yees will) 258.66 153.33 B +0.25 0.13 (tak) 54 142.33 B +0.25 0.13 (e the time to read the source code of an application and) 66.5 142.33 B +0.25 0.2 (compile it locally to ensure that it tak) 54 131.33 B +0.25 0.2 (es no hidden hostile) 212.76 131.33 B +0.25 1.06 (actions. Second, virus check) 54 120.33 B +0.25 1.06 (ers require constant) 198 120.33 B +0.25 0.38 (maintenance in order to remain ef) 54 109.33 B +0.25 0.38 (fecti) 202.64 109.33 B +0.25 0.38 (v) 222.04 109.33 B +0.25 0.38 (e. The) 227.26 109.33 B +0.25 0.38 (y must be) 254.6 109.33 B +54 77 297 97.09 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 84.99 185.98 84.99 2 L +0.25 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 612 792 C +0 9 Q +0 X +0 0 0 1 0 0 0 K +(2 CER) 54 71 T +(T is a service mark of Carne) 79.96 71 T +(gie Mellon Uni) 181.8 71 T +(v) 236.57 71 T +(ersity) 240.94 71 T +0 10 Q +0.25 0.03 (updated with samples of ne) 315 731.33 B +0.25 0.03 (wly disco) 425.91 731.33 B +0.25 0.03 (v) 464.88 731.33 B +0.25 0.03 (ered viruses and must) 469.76 731.33 B +0.03 (be installed on each machine. Also, man) 315 720.33 P +0.03 (y virus check) 476.66 720.33 P +0.03 (ers can) 529.93 720.33 P +0.25 0.17 (be turned of) 315 709.33 B +0.25 0.17 (f, either accidentally) 365.6 709.33 B +0.25 0.17 (, as part of an installation) 451.09 709.33 B +0.11 (procedure, or to sa) 315 698.33 P +0.11 (v) 389.56 698.33 P +0.11 (e time when handling \322safe\323 disk) 394.41 698.33 P +0.11 (ettes. If) 527.9 698.33 P +0.13 (the check) 315 687.33 P +0.13 (er is accidentally left of) 353.07 687.33 P +0.13 (f, the machine and possibly) 447.77 687.33 P +(the entire or) 315 676.33 T +(g) 363.14 676.33 T +(anization are at risk.) 368.09 676.33 T +0.25 0.52 (Ja) 315 657.33 B +0.25 0.52 (v) 324.16 657.33 B +0.25 0.52 (a solv) 329.43 657.33 B +0.25 0.52 (es these problems, and the usability problem) 356.24 657.33 B +0.25 0.15 (discussed abo) 315 646.33 B +0.25 0.15 (v) 372.38 646.33 B +0.25 0.15 (e, by automatically conf) 377.38 646.33 B +0.25 0.15 (ining applets to the) 477.93 646.33 B +0.22 (sandbox. End-users do not ha) 315 635.33 P +0.22 (v) 433.74 635.33 P +0.22 (e to tak) 438.59 635.33 P +0.22 (e an) 468.38 635.33 P +0.22 (y special action in) 484.83 635.33 P +0.25 0.47 (order to ensure the safety of the machine. Because the) 315 624.33 B +0.25 0.19 (sandbox pre) 315 613.33 B +0.25 0.19 (v) 365.71 613.33 B +0.25 0.19 (ents the actions required to spread a virus or) 370.75 613.33 B +0.25 0.46 (steal information, instead of trying to identify a virus-) 315 602.33 B +0.25 0.14 (infected e) 315 591.33 B +0.25 0.14 (x) 355.67 591.33 B +0.25 0.14 (ecutable or potential attack) 360.66 591.33 B +0.25 0.14 (er) 473.31 591.33 B +0.25 0.14 (, the sandbox does) 480.96 591.33 B +(not require periodic updates with ne) 315 580.33 T +(w viruses.) 458.89 580.33 T +3 F +(Applets And Applications) 315 561.33 T +0 F +0.25 0.34 (Ja) 315 542.33 B +0.25 0.34 (v) 323.8 542.33 B +0.25 0.34 (a programs can e) 328.89 542.33 B +0.25 0.34 (xist in tw) 402.9 542.33 B +0.25 0.34 (o forms: as applets, which) 443.89 542.33 B +0.25 0.19 (tra) 315 531.33 B +0.25 0.19 (v) 325.91 531.33 B +0.25 0.19 (el across the Internet or intranet as part of a web page) 330.94 531.33 B +0.25 0.21 (and run inside of the end-user\325) 315 520.33 B +0.25 0.21 (s bro) 444.81 520.33 B +0.25 0.21 (wser; or as traditional) 465.61 520.33 B +0.25 0.32 (stand-alone applications. Only applets are subject to the) 315 509.33 B +(security restrictions described abo) 315 498.33 T +(v) 451.21 498.33 T +(e.) 456.06 498.33 T +0.25 0.51 (Ja) 315 479.33 B +0.25 0.51 (v) 324.15 479.33 B +0.25 0.51 (a applications are purchased and installed just lik) 329.42 479.33 B +0.25 0.51 (e) 553.56 479.33 B +0.21 (traditional commercial applications. The) 315 468.33 P +0.21 (y may be purchased) 477.67 468.33 P +0.25 0.04 (in \322shrink-wrapped\323 box) 315 457.33 B +0.25 0.04 (es or imported o) 415.77 457.33 B +0.25 0.04 (v) 482.34 457.33 B +0.25 0.04 (er a netw) 487.23 457.33 B +0.25 0.04 (ork, and) 524.67 457.33 B +0.25 0.8 (may be installed by users or system administrators) 315 446.33 B +0.25 0.36 (\050according to standard practice within an or) 315 435.33 B +0.25 0.36 (g) 506.59 435.33 B +0.25 0.36 (anization.\051) 511.9 435.33 B +0.25 0.62 (Since applications are not imported from outside the) 315 424.33 B +0.25 0.23 (or) 315 413.33 B +0.25 0.23 (g) 323.61 413.33 B +0.25 0.23 (anization, and are \050in theory\051 only installed by trusted) 328.78 413.33 B +0.25 0.01 (indi) 315 402.33 B +0.25 0.01 (viduals, Ja) 330.37 402.33 B +0.25 0.01 (v) 372.8 402.33 B +0.25 0.01 (a applications add no ne) 377.56 402.33 B +0.25 0.01 (w security concerns.) 475.31 402.33 B +0.25 0.11 (Security comes from maintaining ph) 315 391.33 B +0.25 0.11 (ysical control o) 465.9 391.33 B +0.25 0.11 (v) 529.73 391.33 B +0.25 0.11 (er the) 534.69 391.33 B +0.25 0.1 (systems, pre) 315 380.33 B +0.25 0.1 (v) 365.7 380.33 B +0.25 0.1 (enting end-users from do) 370.65 380.33 B +0.25 0.1 (wnloading untrusted) 473.92 380.33 B +0.25 0.26 (applications from the net, using virus check) 315 369.33 B +0.25 0.26 (ers and other) 502.69 369.33 B +(traditional security measures.) 315 358.33 T +1 F +(Building The Sandbo) 315 336.33 T +(x) 414.71 336.33 T +0 F +0.25 0.63 (The sandbox is made up of se) 315 320.33 B +0.25 0.63 (v) 452.87 320.33 B +0.25 0.63 (eral dif) 458.35 320.33 B +0.25 0.63 (ferent systems) 492.02 320.33 B +0.25 0.48 (operating together) 315 309.33 B +0.25 0.48 (. These systems range from security) 396.45 309.33 B +0.25 0.09 (managers running inside of the application which imported) 315 298.33 B +0.17 (the applet, to safety features b) 315 287.33 P +0.17 (uilt into the Ja) 435.64 287.33 P +0.17 (v) 492.92 287.33 P +0.17 (a language and) 497.67 287.33 P +(the virtual machine.) 315 276.33 T +3 F +(Class Loader) 315 257.33 T +0 F +0.19 (When an applet is to be imported from the netw) 315 238.33 P +0.19 (ork, the web) 507.92 238.33 P +0.25 0.05 (bro) 315 227.33 B +0.25 0.05 (wser calls the applet class loader) 328.24 227.33 B +0.25 0.05 (. The class loader is the) 461.58 227.33 B +0.25 0.3 (f) 315 216.33 B +0.25 0.3 (irst link in the security chain. In addition to fetching an) 318.08 216.33 B +0.25 0.09 (applet\325) 315 205.33 B +0.25 0.09 (s e) 342.83 205.33 B +0.25 0.09 (x) 354.02 205.33 B +0.25 0.09 (ecutable code from the netw) 358.96 205.33 B +0.25 0.09 (ork, the class loader) 475.52 205.33 B +0.25 0.15 (enforces the name space hierarch) 315 194.33 B +0.25 0.15 (y) 453.42 194.33 B +0.25 0.15 (. A name space controls) 457.92 194.33 B +0.25 0.2 (what other portions of the Ja) 315 183.33 B +0.25 0.2 (v) 435.9 183.33 B +0.25 0.2 (a V) 440.85 183.33 B +0.25 0.2 (irtual Machine an applet) 455.25 183.33 B +-0.09 (can access. By maintaining a separate name space for trusted) 315 172.33 P +0.25 0.05 (code which w) 315 161.33 B +0.25 0.05 (as loaded from the local disk, the class loader) 371.59 161.33 B +0.25 0.41 (pre) 315 150.33 B +0.25 0.41 (v) 328.73 150.33 B +0.25 0.41 (ents untrusted applets from g) 333.99 150.33 B +0.25 0.41 (aining access to more) 462.78 150.33 B +(pri) 315 139.33 T +(vile) 325.86 139.33 T +(ged, trusted parts of the system.) 340.71 139.33 T +0.25 0.21 (Applets do) 315 120.33 B +0.25 0.21 (wnloaded from the net cannot create their o) 360.75 120.33 B +0.25 0.21 (wn) 545.57 120.33 B +0.25 0.12 (class loaders. Do) 315 109.33 B +0.25 0.12 (wnloaded applets are also pre) 385.4 109.33 B +0.25 0.12 (v) 508.06 109.33 B +0.25 0.12 (ented from) 513.03 109.33 B +(in) 315 98.33 T +(v) 322.38 98.33 T +(oking methods in the system\325) 327.18 98.33 T +(s class loader) 444.41 98.33 T +(.) 497.18 98.33 T +3 F +(V) 315 79.33 T +(eri\336er) 321.17 79.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "4" 4 +%%Page: "5" 5 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 9 558 36 R +7 X +0 0 0 1 0 0 0 K +V +0 8 Q +0 X +(\251 Sun Microsystems, Inc., 1996) 54 30.67 T +(5) 306 30.67 T +54 54 558 738 R +7 X +V +0 10 Q +0 X +0.25 0.26 (Before running a ne) 54 731.33 B +0.25 0.26 (wly imported applet, the class loader) 139.16 731.33 B +0.25 0.44 (in) 54 720.33 B +0.25 0.44 (v) 62.26 720.33 B +0.25 0.44 (ok) 67.5 720.33 B +0.25 0.44 (es the v) 78.27 720.33 B +0.25 0.44 (erif) 112.68 720.33 B +0.25 0.44 (ier) 127.76 720.33 B +0.25 0.44 (. The v) 139.07 720.33 B +0.25 0.44 (erif) 170.54 720.33 B +0.25 0.44 (ier checks that the applet) 185.62 720.33 B +0.25 0.17 (conforms to the Ja) 54 709.33 B +0.25 0.17 (v) 131.25 709.33 B +0.25 0.17 (a language specif) 136.18 709.33 B +0.25 0.17 (ication and that there) 208.48 709.33 B +0.25 0.14 (are no violations of the Ja) 54 698.33 B +0.25 0.14 (v) 161.99 698.33 B +0.25 0.14 (a language rules or name space) 166.88 698.33 B +0.25 0.05 (restrictions. The v) 54 687.33 B +0.25 0.05 (erif) 127.84 687.33 B +0.25 0.05 (ier also checks for common violations) 141.38 687.33 B +0.13 (of memory management, lik) 54 676.33 P +0.13 (e stack under\337o) 167.6 676.33 P +0.13 (ws or o) 230.92 676.33 P +0.13 (v) 260.46 676.33 P +0.13 (er\337o) 265.31 676.33 P +0.13 (ws,) 283.39 676.33 P +-0.12 (and ille) 54 665.33 P +-0.12 (g) 83.45 665.33 P +-0.12 (al data type casts, which could allo) 88.4 665.33 P +-0.12 (w a hostile applet) 227.1 665.33 P +0.25 0.09 (to corrupt part of the security mechanism or to replace part) 54 654.33 B +(of the system with its o) 54 643.33 T +(wn code.) 146.81 643.33 T +3 F +(Security Mana) 54 624.33 T +(g) 121.7 624.33 T +(er) 127.91 624.33 T +0 F +0.25 0.22 (The security manager enforces the boundaries around the) 54 605.33 B +0.25 0.37 (sandbox. Whene) 54 594.33 B +0.25 0.37 (v) 125.8 594.33 B +0.25 0.37 (er an applet tries to perform an action) 131.02 594.33 B +-0.21 (which could corrupt the local machine or access information,) 54 583.33 P +0.25 0.15 (the Ja) 54 572.33 B +0.25 0.15 (v) 78.01 572.33 B +0.25 0.15 (a V) 82.91 572.33 B +0.25 0.15 (irtual Machine f) 97.18 572.33 B +0.25 0.15 (irst asks the security manager if) 163.98 572.33 B +0.25 0.06 (this action can be performed safely) 54 561.33 B +0.25 0.06 (. If the security manager) 197.03 561.33 B +-0.01 (appro) 54 550.33 P +-0.01 (v) 76.62 550.33 P +-0.01 (es the action \321 for e) 81.47 550.33 P +-0.01 (xample, a trusted applet from the) 164.85 550.33 P +0.25 0.28 (local disk may be trying to read the disk, or an imported) 54 539.33 B +0.25 0.11 (untrusted applet may be trying to connect back to its home) 54 528.33 B +0.25 0.13 (serv) 54 517.33 B +0.25 0.13 (er \321 the virtual machine will then perform the action.) 71.04 517.33 B +0.25 0.18 (Otherwise, the virtual machine raises a security e) 54 506.33 B +0.25 0.18 (xception) 261.29 506.33 B +(and writes an error to the Ja) 54 495.33 T +(v) 164.88 495.33 T +(a console.) 169.63 495.33 T +0.25 0.13 (The security manager will not allo) 54 476.33 B +0.25 0.13 (w an untrusted applet to) 196.91 476.33 B +-0.01 (read or write to a \336le, delete a \336le, get an) 54 465.33 P +-0.01 (y information about) 217.58 465.33 P +0.25 0.15 (a f) 54 454.33 B +0.25 0.15 (ile, e) 64.42 454.33 B +0.25 0.15 (x) 84.86 454.33 B +0.25 0.15 (ecute operating system commands or nati) 89.86 454.33 B +0.25 0.15 (v) 262.53 454.33 B +0.25 0.15 (e code,) 267.53 454.33 B +0.25 0.39 (load a library) 54 443.33 B +0.25 0.39 (, or establish a netw) 112.69 443.33 B +0.25 0.39 (ork connection to an) 201.58 443.33 B +0.25 0.39 (y) 292 443.33 B +0.25 0.04 (machine other than the applet\325) 54 432.33 B +0.25 0.04 (s home serv) 177.4 432.33 B +0.25 0.04 (er) 225.99 432.33 B +0.25 0.04 (. This list is not) 233.3 432.33 B +0.25 0.41 (e) 54 421.33 B +0.25 0.41 (xhausti) 58.7 421.33 B +0.25 0.41 (v) 90.19 421.33 B +0.25 0.41 (e b) 95.45 421.33 B +0.25 0.41 (ut does gi) 108.67 421.33 B +0.25 0.41 (v) 151.89 421.33 B +0.25 0.41 (e a representati) 157.15 421.33 B +0.25 0.41 (v) 224.46 421.33 B +0.25 0.41 (e sample of the) 229.71 421.33 B +(restrictions place on applets.) 54 410.33 T +0.25 0.02 (An application or a web bro) 54 391.33 B +0.25 0.02 (wser can only ha) 167.47 391.33 B +0.25 0.02 (v) 235.82 391.33 B +0.25 0.02 (e one security) 240.7 391.33 B +0.25 0.11 (manager) 54 380.33 B +0.25 0.11 (. This assures that all access checks are made by a) 88.67 380.33 B +0.25 0.15 (single security manager enforcing a single security polic) 54 369.33 B +0.25 0.15 (y) 290 369.33 B +0.25 0.15 (.) 294.5 369.33 B +0.25 0.27 (The security manager is loaded at start-up and cannot be) 54 358.33 B +0.25 0.43 (e) 54 347.33 B +0.25 0.43 (xtended, o) 58.72 347.33 B +0.25 0.43 (v) 104.74 347.33 B +0.25 0.43 (erridden or replaced. F) 110.01 347.33 B +0.25 0.43 (or ob) 211.49 347.33 B +0.25 0.43 (vious reasons,) 234.55 347.33 B +(applets can not create their o) 54 336.33 T +(wn security managers.) 168.44 336.33 T +3 F +(Langua) 54 317.33 T +(g) 89.46 317.33 T +(e Features) 95.67 317.33 T +0 F +-0.19 (Ja) 54 298.33 P +-0.19 (v) 62.13 298.33 P +-0.19 (a has se) 66.88 298.33 P +-0.19 (v) 97.36 298.33 P +-0.19 (eral language features which protect the inte) 102.21 298.33 P +-0.19 (grity) 278.11 298.33 P +0.25 0.18 (of the security system and which pre) 54 287.33 B +0.25 0.18 (v) 208.3 287.33 B +0.25 0.18 (ent se) 213.33 287.33 B +0.25 0.18 (v) 237.45 287.33 B +0.25 0.18 (eral common) 242.48 287.33 B +0.25 0.41 (attacks. F) 54 276.33 B +0.25 0.41 (or e) 96.49 276.33 B +0.25 0.41 (xample, Ja) 113.48 276.33 B +0.25 0.41 (v) 160.35 276.33 B +0.25 0.41 (a programs are not allo) 165.51 276.33 B +0.25 0.41 (wed to) 267.78 276.33 B +0.25 0.39 (def) 54 265.33 B +0.25 0.39 (ine their o) 67.4 265.33 B +0.25 0.39 (wn memory pointers or to access ph) 112.51 265.33 B +0.25 0.39 (ysical) 271.71 265.33 B +-0.01 (memory directly) 54 254.33 P +-0.01 (. This pre) 119.72 254.33 P +-0.01 (v) 157.5 254.33 P +-0.01 (ents an applet from accessing and) 162.35 254.33 P +-0 (modifying critical parts of the security system. The language) 54 243.33 P +0.25 0.11 (tracks the type of ne) 54 232.33 B +0.25 0.11 (wly created classes and objects so that) 138.1 232.33 B +0.25 0.48 (an applet cannot for) 54 221.33 B +0.25 0.48 (ge its o) 143.88 221.33 B +0.25 0.48 (wn class loader or security) 176.87 221.33 B +-0.18 (manager) 54 210.33 P +-0.18 (. The Ja) 87.88 210.33 P +-0.18 (v) 118.7 210.33 P +-0.18 (a language also has se) 123.45 210.33 P +-0.18 (v) 210.78 210.33 P +-0.18 (eral other checks for) 215.63 210.33 P +0.25 0.03 (memory and pointer ab) 54 199.33 B +0.25 0.03 (use which could weak) 148.1 199.33 B +0.25 0.03 (en the security) 237.84 199.33 B +(system.) 54 188.33 T +0.25 0.39 (In addition to making Ja) 54 169.33 B +0.25 0.39 (v) 161.38 169.33 B +0.25 0.39 (a a more secure system, these) 166.52 169.33 B +0.25 0.11 (language features also mak) 54 158.33 B +0.25 0.11 (e Ja) 166.1 158.33 B +0.25 0.11 (v) 181.86 158.33 B +0.25 0.11 (a programs safer and more) 186.72 158.33 B +0.05 (reliable. Studies ha) 54 147.33 P +0.05 (v) 130.27 147.33 P +0.05 (e sho) 135.12 147.33 P +0.05 (wn that 40% to 50% of all b) 155.75 147.33 P +0.05 (ugs are) 268.36 147.33 P +0.25 0.23 (caused by errors in memory management. By automating) 54 136.33 B +0.25 0.04 (memory management, Ja) 54 125.33 B +0.25 0.04 (v) 155.37 125.33 B +0.25 0.04 (a eliminates a lar) 160.15 125.33 B +0.25 0.04 (ge class of b) 229.46 125.33 B +0.25 0.04 (ugs;) 280.21 125.33 B +(this results in more stable and reliable code.) 54 114.33 T +1 F +(Security Thr) 54 92.33 T +(ough Openness) 112.15 92.33 T +0 F +0.25 0.27 (In the past, man) 54 76.33 B +0.25 0.27 (y computer and netw) 122.74 76.33 B +0.25 0.27 (ork systems tried to) 212.59 76.33 B +0.25 0.09 (maintain security by hiding the inner w) 54 65.33 B +0.25 0.09 (orks and policies of) 216 65.33 B +0.25 0.61 (the system. This practice, kno) 315 731.33 B +0.25 0.61 (wn as security through) 453.56 731.33 B +0.25 0.31 (obscurity) 315 720.33 B +0.25 0.31 (, assumed that if the system w) 354.37 720.33 B +0.25 0.31 (as presented as a) 485.36 720.33 B +0.25 0.25 (black box then no one w) 315 709.33 B +0.25 0.25 (ould e) 419.84 709.33 B +0.25 0.25 (xpend the ef) 446.14 709.33 B +0.25 0.25 (fort needed to) 498.77 709.33 B +0.25 0.32 (disco) 315 698.33 B +0.25 0.32 (v) 337.55 698.33 B +0.25 0.32 (er the hidden vulnerabilities. The e) 342.72 698.33 B +0.25 0.32 (xistence of the) 494.72 698.33 B +0.25 0.05 (CER) 315 687.33 B +0.25 0.05 (T/CC and a number of well publicized netw) 334.01 687.33 B +0.25 0.05 (ork attacks) 513.62 687.33 B +0.25 0.8 (in recent years demonstrate that this assumption is) 315 676.33 B +0.13 (unfounded; the box is ne) 315 665.33 P +0.13 (v) 414.17 665.33 P +0.13 (er black enough. This is especially) 419.02 665.33 P +0.25 0.12 (true for commercially successful systems. F) 315 654.33 B +0.25 0.12 (or such widely) 497 654.33 B +0.25 0.09 (used systems, too man) 315 643.33 B +0.25 0.09 (y people kno) 407.56 643.33 B +0.25 0.09 (w the internal w) 460.59 643.33 B +0.25 0.09 (orkings) 527.44 643.33 B +0.03 (of the system for the details to remain secret and the re) 315 632.33 P +0.03 (w) 534.22 632.33 P +0.03 (ards) 541.34 632.33 P +(for breaking into the system are too great.) 315 621.33 T +0.03 (Sun took the opposite approach, and published all the details) 315 602.33 P +0.25 0.23 (of Ja) 315 591.33 B +0.25 0.23 (v) 335.36 591.33 B +0.25 0.23 (a security model when Ja) 340.34 591.33 B +0.25 0.23 (v) 447.77 591.33 B +0.25 0.23 (a w) 452.75 591.33 B +0.25 0.23 (as f) 467.75 591.33 B +0.25 0.23 (irst released. This) 482.53 591.33 B +0.25 0.79 (included the design specif) 315 580.33 B +0.25 0.79 (ications for the language) 439.79 580.33 B +0.25 1.2 (mechanisms and the sandbox, and a full source) 315 569.33 B +0.25 0.28 (implementation. This approach, dubbed security through) 315 558.33 B +0.25 0.02 (openness, w) 315 547.33 B +0.25 0.02 (as intended to encourage security researchers to) 364.3 547.33 B +0.25 0.31 (e) 315 536.33 B +0.25 0.31 (xamine the Ja) 319.6 536.33 B +0.25 0.31 (v) 378.98 536.33 B +0.25 0.31 (a model and to report an) 384.04 536.33 B +0.25 0.31 (y security f) 490.17 536.33 B +0.25 0.31 (la) 538.88 536.33 B +0.25 0.31 (ws) 546.58 536.33 B +0 (found; the \337a) 315 525.33 P +0 (ws could be \336x) 368.18 525.33 P +0 (ed before attacks based on those) 428.86 525.33 P +0.25 0.11 (f) 315 514.33 B +0.25 0.11 (la) 317.89 514.33 B +0.25 0.11 (ws could become endemic on the W) 325.18 514.33 B +0.25 0.11 (eb) 474.41 514.33 B +0.25 0.11 (. Security through) 483.67 514.33 B +0.25 0.36 (openness also allo) 315 503.33 B +0.25 0.36 (ws an) 394.46 503.33 B +0.25 0.36 (y or) 419.4 503.33 B +0.25 0.36 (g) 436.73 503.33 B +0.25 0.36 (anization to study the Ja) 442.04 503.33 B +0.25 0.36 (v) 548.45 503.33 B +0.25 0.36 (a) 553.56 503.33 B +-0.11 (security model in detail and mak) 315 492.33 P +-0.11 (e an informed assessment of) 445.15 492.33 P +(the potential risks v) 315 481.33 T +(ersus the bene\336ts of the Ja) 393.46 481.33 T +(v) 498.52 481.33 T +(a platform.) 503.27 481.33 T +1 F +(The Ja) 315 459.33 T +(v) 346.53 459.33 T +(a Security F) 351.89 459.33 T +(A) 407.78 459.33 T +(Q) 414.6 459.33 T +0 F +0.25 0.07 (K) 315 443.33 B +0.25 0.07 (eeping current is as important for Ja) 322.04 443.33 B +0.25 0.07 (v) 469.65 443.33 B +0.25 0.07 (a security as it is for) 474.47 443.33 B +0.25 0.35 (general security) 315 432.33 B +0.25 0.35 (. T) 383.72 432.33 B +0.25 0.35 (o f) 395.32 432.33 B +0.25 0.35 (acilitate this, Sun maintains a Ja) 407.33 432.33 B +0.25 0.35 (v) 548.46 432.33 B +0.25 0.35 (a) 553.56 432.33 B +0.25 0.29 (Security Frequently Ask) 315 421.33 B +0.25 0.29 (ed Questions \050F) 419.88 421.33 B +0.25 0.29 (A) 487.35 421.33 B +0.25 0.29 (Q\051 page on the) 494.31 421.33 B +0.25 0.77 (Ja) 315 410.33 B +0.25 0.77 (v) 324.67 410.33 B +0.25 0.77 (a web site. This F) 330.2 410.33 B +0.25 0.77 (A) 415.18 410.33 B +0.25 0.77 (Q can be found at) 422.63 410.33 B +4 F +0.6 0.77 (http://) 511.37 410.33 B +0.6 0.15 (java.sun.com/sfaq.) 315 399.33 B +0 F +0.25 0.15 ( The F) 425.68 399.33 B +0.25 0.15 (A) 452.45 399.33 B +0.25 0.15 (Q contains more details) 459.26 399.33 B +0.25 0.1 (on kno) 315 388.33 B +0.25 0.1 (wn vulnerabilities, the status of these vulnerabilities) 343.1 388.33 B +0.25 0.51 (and, when a) 315 377.33 B +0.25 0.51 (v) 368.95 377.33 B +0.25 0.51 (ailable, dates and release numbers of the) 374.21 377.33 B +0.05 (v) 315 366.33 P +0.05 (ersion of Ja) 319.85 366.33 P +0.05 (v) 365.85 366.33 P +0.05 (a in which the vulnerabilities were \336x) 370.6 366.33 P +0.05 (ed. More) 521.85 366.33 P +0.25 0.43 (security related information can be found at) 315 355.33 B +4 F +0.6 0.43 (http://) 513.44 355.33 B +(java.sun.com/security) 315 344.33 T +0 F +(.) 440.35 344.33 T +0.25 0.14 (Se) 315 325.33 B +0.25 0.14 (v) 325.02 325.33 B +0.25 0.14 (eral other or) 330.01 325.33 B +0.25 0.14 (g) 380.97 325.33 B +0.25 0.14 (anizations are also tracking Ja) 386.06 325.33 B +0.25 0.14 (v) 511.05 325.33 B +0.25 0.14 (a security) 515.94 325.33 B +0.25 0.14 (.) 555.5 325.33 B +0.25 0.5 (The CER) 315 314.33 B +0.25 0.5 (T/CC has released se) 355.68 314.33 B +0.25 0.5 (v) 450.43 314.33 B +0.25 0.5 (eral advisories on Ja) 455.78 314.33 B +0.25 0.5 (v) 548.3 314.33 B +0.25 0.5 (a) 553.56 314.33 B +0.25 0.2 (Security) 315 303.33 B +0.25 0.2 (. These vulnerabilities ha) 349.3 303.33 B +0.25 0.2 (v) 455.63 303.33 B +0.25 0.2 (e closely paralleled the) 460.69 303.33 B +0.25 0.22 (vulnerabilities listed abo) 315 292.33 B +0.25 0.22 (v) 419.26 292.33 B +0.25 0.22 (e and in the Ja) 424.32 292.33 B +0.25 0.22 (v) 485.55 292.33 B +0.25 0.22 (a Security F) 490.52 292.33 B +0.25 0.22 (A) 541.18 292.33 B +0.25 0.22 (Q.) 548.07 292.33 B +0.25 0.48 (Details are from the CER) 315 281.33 B +0.25 0.48 (T/CC web site. Se) 428.59 281.33 B +0.25 0.48 (v) 510.05 281.33 B +0.25 0.48 (eral other) 515.38 281.33 B +0.25 0.02 (or) 315 270.33 B +0.25 0.02 (g) 323.19 270.33 B +0.25 0.02 (anizations, including researchers at Princeton Uni) 328.16 270.33 B +0.25 0.02 (v) 528.95 270.33 B +0.25 0.02 (ersity) 533.82 270.33 B +0.25 0.02 (,) 555.5 270.33 B +0.01 (ha) 315 259.33 P +0.01 (v) 324.24 259.33 P +0.01 (e been in) 329.09 259.33 P +0.01 (v) 364.81 259.33 P +0.01 (estig) 369.66 259.33 P +0.01 (ating Ja) 388.5 259.33 P +0.01 (v) 419.14 259.33 P +0.01 (a security) 423.89 259.33 P +0.01 (. The Princeton \336ndings) 461.86 259.33 P +0.25 0.24 (can be found at) 315 248.33 B +4 F +0.6 0.24 (http://www.cs.princeton.edu/) 383.64 248.33 B +(sip/) 315 237.33 T +0 F +(.) 339 237.33 T +1 F +(EXTENDING J) 315 214.33 T +(A) 381.48 214.33 T +(V) 387.9 214.33 T +(A SECURITY) 393.77 214.33 T +(Security Modeling) 315 191.33 T +0 F +0.25 0.22 (While man) 315 175.33 B +0.25 0.22 (y e) 361.19 175.33 B +0.25 0.22 (xperts agree that the Ja) 373.88 175.33 B +0.25 0.22 (v) 471.48 175.33 B +0.25 0.22 (a Security model is) 476.44 175.33 B +0.25 0.22 (basically sound, there is a concern that the model has not) 315 164.33 B +-0.01 (been e) 315 153.33 P +-0.01 (xamined in enough detail to ensure that the sandbox is) 340.65 153.33 P +0.25 0.17 (as secure as is claimed. There is also the possibility that a) 315 142.33 B +0.25 0.02 (particular implementation of the Ja) 315 131.33 B +0.25 0.02 (v) 456.47 131.33 B +0.25 0.02 (a security model suf) 461.24 131.33 B +0.25 0.02 (fers) 542.95 131.33 B +0.25 0.03 (from b) 315 120.33 B +0.25 0.03 (ugs and other coding errors which could be e) 342.14 120.33 B +0.25 0.03 (xploited) 525.04 120.33 B +0.25 0.41 (by a malicious applet which wished to break out of the) 315 109.33 B +0.25 0.31 (sandbox. Finally) 315 98.33 B +0.25 0.31 (, there could be une) 386.15 98.33 B +0.25 0.31 (xpected interactions) 471.69 98.33 B +0.25 0.13 (between Ja) 315 87.33 B +0.25 0.13 (v) 360.48 87.33 B +0.25 0.13 (a applets and other parts of the netw) 365.36 87.33 B +0.25 0.13 (ork which) 516.45 87.33 B +0.06 (could be e) 315 76.33 P +0.06 (xploited. Problems which e) 356.07 76.33 P +0.06 (xploit all three of these) 465.55 76.33 P +(cate) 315 65.33 T +(gories ha) 330.95 65.33 T +(v) 367.13 65.33 T +(e been reported.) 371.98 65.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "5" 5 +%%Page: "6" 6 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 18 558 45 R +7 X +0 0 0 1 0 0 0 K +V +0 8 Q +0 X +(\251 Sun Microsystems, Inc., 1996) 54 39.67 T +(6) 306 39.67 T +54 54 558 738 R +7 X +V +0 10 Q +0 X +0.25 0.22 (F) 54 731.33 B +0.25 0.22 (or these reasons, Sun has initiated an independent, third) 59.63 731.33 B +0.25 0.72 (party security modeling ef) 54 720.33 B +0.25 0.72 (fort. The f) 178.44 720.33 B +0.25 0.72 (irst step, being) 227.11 720.33 B +0.25 0.02 (conducted by security consultant Blackw) 54 709.33 B +0.25 0.02 (atch Inc. \050) 219.97 709.33 B +4 F +0.6 0.02 (http:/) 260.92 709.33 B +0.6 0.61 (/www.blackwatch.com) 54 698.33 B +0 F +0.25 0.61 (\051, will produce a Security) 179.5 698.33 B +0.25 0.41 (Reference Model. The Reference Model will document) 54 687.33 B +(Ja) 54 676.33 T +(v) 62.13 676.33 T +(a\325) 66.88 676.33 T +(s security model in rigorous detail.) 74.1 676.33 T +0.25 0.04 (The second step will be to de) 54 657.33 B +0.25 0.04 (v) 172.93 657.33 B +0.25 0.04 (elop a more rigorous security) 177.81 657.33 B +0.07 (compatibility test suite based on the Reference Model. Since) 54 646.33 P +0.25 0.23 (each Ja) 54 635.33 B +0.25 0.23 (v) 84.82 635.33 B +0.25 0.23 (a licensee is free to re-implement portions of the) 89.8 635.33 B +-0.04 (Ja) 54 624.33 P +-0.04 (v) 62.13 624.33 P +-0.04 (a V) 66.88 624.33 P +-0.04 (irtual Machine, the ne) 80.4 624.33 P +-0.04 (w test suite will ensure that both) 167.79 624.33 P +0.25 0.57 (Sun and all licensees ha) 54 613.33 B +0.25 0.57 (v) 164.05 613.33 B +0.25 0.57 (e correctly implemented the) 169.47 613.33 B +0.25 0.06 (Reference Model. This test suite will be an enhancement to) 54 602.33 B +0.82 1.25 (the test suite already used to ensure that Ja) 54 591.33 B +0.82 1.25 (v) 286.56 591.33 B +0.82 1.25 (a) 292.56 591.33 B +(implementations comply with the Ja) 54 580.33 T +(v) 198.8 580.33 T +(a standard.) 203.55 580.33 T +-0.22 (The third step will be to commission independent, third party) 54 561.33 P +0.25 0.12 (assessments of Sun\325) 54 550.33 B +0.25 0.12 (s reference implementation of the Ja) 136.88 550.33 B +0.25 0.12 (v) 287.68 550.33 B +0.25 0.12 (a) 292.56 550.33 B +0.25 0.19 (standard. This assessment ef) 54 539.33 B +0.25 0.19 (fort relies on ha) 173.61 539.33 B +0.25 0.19 (ving a formal) 240.38 539.33 B +0.25 0.08 (model specif) 54 528.33 B +0.25 0.08 (ied so that the implementation can be assessed) 106 528.33 B +(in the conte) 54 517.33 T +(xt of the assertions of the security model.) 100.51 517.33 T +(This re) 54 498.33 T +(vie) 81.8 498.33 T +(w is e) 93.77 498.33 T +(xpected to be complete by the f) 116.95 498.33 T +(all of 1996.) 242.38 498.33 T +1 F +(Ne) 54 476.33 T +(w Security F) 66.63 476.33 T +(acilities) 125.34 476.33 T +0 F +0.25 0.05 (The sandbox model described abo) 54 460.33 B +0.25 0.05 (v) 193.15 460.33 B +0.25 0.05 (e protects the end-user\325) 198.05 460.33 B +0.25 0.05 (s) 293.11 460.33 B +0.25 0.1 (machine and netw) 54 449.33 B +0.25 0.1 (ork) 128.73 449.33 B +0.25 0.1 (ed computing resources from damage) 142.25 449.33 B +0.25 0.04 (or theft by a malicious applet. Users can run untrusted code) 54 438.33 B +0.25 0.5 (obtained from the netw) 54 427.33 B +0.25 0.5 (ork without undue risk to their) 158.74 427.33 B +(system.) 54 416.33 T +0.25 0.1 (The sandbox model does not address se) 54 397.33 B +0.25 0.1 (v) 217.45 397.33 B +0.25 0.1 (eral other security) 222.41 397.33 B +0.25 0.17 (and pri) 54 386.33 B +0.25 0.17 (v) 83.28 386.33 B +0.25 0.17 (ac) 88.2 386.33 B +0.25 0.17 (y issues. Authentication is needed, to guarantee) 97.28 386.33 B +0.25 0.1 (that an applet comes from the place it claims to ha) 54 375.33 B +0.25 0.1 (v) 262.68 375.33 B +0.25 0.1 (e come) 267.63 375.33 B +0.25 0.38 (from. Digitally signed and authenticated applets can be) 54 364.33 B +-0.03 (promoted to the status of trusted applets, and then allo) 54 353.33 P +-0.03 (wed to) 270.09 353.33 P +0.25 0.12 (run with fe) 54 342.33 B +0.25 0.12 (wer security restrictions. Encryption can ensure) 99.48 342.33 B +0.25 0.25 (the pri) 54 331.33 B +0.25 0.25 (v) 81.58 331.33 B +0.25 0.25 (ac) 86.58 331.33 B +0.25 0.25 (y of data passed between an applet client and a) 95.81 331.33 B +0.25 0.21 (serv) 54 320.33 B +0.25 0.21 (er on the Internet. W) 71.36 320.33 B +0.25 0.21 (ork is underw) 159.05 320.33 B +0.25 0.21 (ay to e) 217.2 320.33 B +0.25 0.21 (xtend Ja) 245.7 320.33 B +0.25 0.21 (v) 280.5 320.33 B +0.25 0.21 (a\325) 285.46 320.33 B +0.25 0.21 (s) 293.11 320.33 B +(security model into each of these areas.) 54 309.33 T +3 F +(Signed J) 54 290.33 T +(AR \336les) 95.48 290.33 T +0 F +0.25 0.37 (All netw) 54 271.33 B +0.25 0.37 (ork) 91.85 271.33 B +0.25 0.37 (ed systems are potentially vulnerable to the) 106.19 271.33 B +0.25 0.05 (\322Man-in-the-Middle\323 attack. In this attack, a client contacts) 54 260.33 B +0.2 (a le) 54 249.33 P +0.2 (gitimate serv) 68.21 249.33 P +0.2 (er on the netw) 120.19 249.33 P +0.2 (ork and requests some action.) 177.62 249.33 P +0.25 0.07 (The attack) 54 238.33 B +0.25 0.07 (er) 96.82 238.33 B +0.25 0.07 (, or man in the middle, notices this request and) 104.34 238.33 B +0.25 0.07 (w) 54 227.33 B +0.25 0.07 (aits for the serv) 61.19 227.33 B +0.25 0.07 (er to respond. The attack) 124.83 227.33 B +0.25 0.07 (er then intercepts) 226.51 227.33 B +0.25 0.21 (the response and supplies a bogus reply to the client. The) 54 216.33 B +0.25 0.15 (client then acts on the bogus information, or possibly runs) 54 205.33 B +0.25 0.29 (the program supplied by the attack) 54 194.33 B +0.25 0.29 (er) 203.49 194.33 B +0.25 0.29 (, gi) 211.43 194.33 B +0.25 0.29 (ving the attack) 225.36 194.33 B +0.25 0.29 (er) 288.94 194.33 B +0.23 (access to the client machine. F) 54 183.33 P +0.23 (or e) 177.19 183.33 P +0.23 (xample, an attack) 192.54 183.33 P +0.23 (er might) 263.16 183.33 P +0.25 0.27 (w) 54 172.33 B +0.25 0.27 (atch an Internet-based banking site. As clients visit the) 61.39 172.33 B +-0.06 (page which pro) 54 161.33 P +-0.06 (vides bill paying services, the attack) 115.38 161.33 P +-0.06 (er di) 259.97 161.33 P +-0.06 (v) 277.71 161.33 P +-0.06 (erts) 282.56 161.33 P +0.25 0.05 (the bank\325) 54 150.33 B +0.25 0.05 (s responses and pro) 91.64 150.33 B +0.25 0.05 (vides a malicious applet which) 171.23 150.33 B +-0.15 (mimics the bank\325) 54 139.33 P +-0.15 (s service, b) 122.59 139.33 P +-0.15 (ut also steals a cop) 166.79 139.33 P +-0.15 (y of the user\325) 241.07 139.33 P +-0.15 (s) 293.11 139.33 P +(credit card and bank account numbers.) 54 128.33 T +-0.16 (This attack can be thw) 54 109.33 P +-0.16 (arted by applying \322digital shrinkwrap\323) 143.23 109.33 P +0.25 0.04 (to the applet. W) 54 98.33 B +0.25 0.04 (e trust ph) 118.41 98.33 B +0.25 0.04 (ysical softw) 156.45 98.33 B +0.25 0.04 (are we ha) 205.08 98.33 B +0.25 0.04 (v) 244.02 98.33 B +0.25 0.04 (e purchased) 248.91 98.33 B +-0.23 (because its packaging sho) 54 87.33 P +-0.23 (ws who produced the softw) 156.64 87.33 P +-0.23 (are, and) 265.58 87.33 P +-0.16 (the shrinkwrap sho) 54 76.33 P +-0.16 (ws that the product has not been tampered) 129.53 76.33 P +0.25 0.26 (with. If the producer has a good reputation for pro) 54 65.33 B +0.25 0.26 (viding) 270.11 65.33 B +0.25 0.03 (softw) 315 731.33 B +0.25 0.03 (are which does not tak) 337.29 731.33 B +0.25 0.03 (e an) 428.92 731.33 B +0.25 0.03 (y hostile actions ag) 445.54 731.33 B +0.25 0.03 (ainst the) 523.87 731.33 B +0.25 0.23 (user) 315 720.33 B +0.25 0.23 (, then we can install the product with some de) 332.19 720.33 B +0.25 0.23 (gree of) 528.31 720.33 B +(con\336dence.) 315 709.33 T +0.25 0.3 (\322Signed applets\323 gi) 315 690.33 B +0.25 0.3 (v) 398.65 690.33 B +0.25 0.3 (e us the same le) 403.8 690.33 B +0.25 0.3 (v) 472.61 690.33 B +0.25 0.3 (el of conf) 477.76 690.33 B +0.25 0.3 (idence in) 519 690.33 B +-0.03 (netw) 315 679.33 P +-0.03 (ork distrib) 334.34 679.33 P +-0.03 (uted softw) 375.51 679.33 P +-0.03 (are. T) 417.32 679.33 P +-0.03 (o sign an applet, the producer) 439.82 679.33 P +0.25 0.09 (f) 315 668.33 B +0.25 0.09 (irst b) 317.87 668.33 B +0.25 0.09 (undles all the Ja) 338.75 668.33 B +0.25 0.09 (v) 405.01 668.33 B +0.25 0.09 (a code and related f) 409.85 668.33 B +0.25 0.09 (iles into a single) 490.42 668.33 B +0.12 (\336le called a Ja) 315 657.33 P +0.12 (v) 372.09 657.33 P +0.12 (a Archi) 376.84 657.33 P +0.12 (v) 406.42 657.33 P +0.12 (e, or J) 411.27 657.33 P +0.12 (AR. The producer then creates) 435.06 657.33 P +-0.1 (a string called a digital signature based on the contents of the) 315 646.33 P +0.25 0.26 (J) 315 635.33 B +0.25 0.26 (AR. The full details of digital signatures are be) 318.55 635.33 B +0.25 0.26 (yond the) 521.2 635.33 B +0.25 0.4 (scope of this white paper) 315 624.33 B +0.25 0.4 (. More details can be found in) 425.32 624.33 B +0.25 0.42 (\322) 315 613.33 B +0.25 0.42 (Applied Cryptograph) 319.06 613.33 B +0.25 0.42 (y) 412.55 613.33 B +0.25 0.42 (,) 417.32 613.33 B +0.25 0.42 (\323 by Bruce Schneier) 419.55 613.33 B +0.25 0.42 (, as well as) 508.73 613.33 B +(numerous other cryptographic reference books.) 315 602.33 T +0.25 0.45 (J) 315 583.33 B +0.25 0.45 (AR f) 318.74 583.33 B +0.25 0.45 (iles solv) 339.97 583.33 B +0.25 0.45 (e another problem. Currently) 377.21 583.33 B +0.25 0.45 (, man) 506.08 583.33 B +0.25 0.45 (y Ja) 530.66 583.33 B +0.25 0.45 (v) 548.36 583.33 B +0.25 0.45 (a) 553.56 583.33 B +-0.16 (applets tak) 315 572.33 P +-0.16 (e a v) 357.79 572.33 P +-0.16 (ery long time to do) 376.2 572.33 P +-0.16 (wnload and be) 451.42 572.33 P +-0.16 (gin running.) 509.27 572.33 P +0.25 0.09 (This can be anno) 315 561.33 B +0.25 0.09 (ying e) 385.12 561.33 B +0.25 0.09 (v) 410.38 561.33 B +0.25 0.09 (en for those users with a v) 415.32 561.33 B +0.25 0.09 (ery high) 524.07 561.33 B +0.25 0.51 (speed link to the Internet. The problem is that current) 315 550.33 B +0.25 0.15 (Internet protocols mo) 315 539.33 B +0.25 0.15 (v) 404.67 539.33 B +0.25 0.15 (e web pages across the Internet one) 409.67 539.33 B +0.25 0.09 (f) 315 528.33 B +0.25 0.09 (ile at a time. Since there is some o) 317.87 528.33 B +0.25 0.09 (v) 460.05 528.33 B +0.25 0.09 (erhead associated with) 464.99 528.33 B +0.07 (each request for a \336le, web pages and Ja) 315 517.33 P +0.07 (v) 476.12 517.33 P +0.07 (a applets which are) 480.88 517.33 P +0.25 0.55 (composed of man) 315 506.33 B +0.25 0.55 (y small f) 394.63 506.33 B +0.25 0.55 (iles might spend more time) 434.48 506.33 B +0.09 (requesting those \336les and w) 315 495.33 P +0.09 (aiting for replies than the) 426.35 495.33 P +0.09 (y spend) 527.08 495.33 P +-0.12 (actually mo) 315 484.33 P +-0.12 (ving the information. Since a J) 361.67 484.33 P +-0.12 (AR \336le b) 483.27 484.33 P +-0.12 (undles all) 519.51 484.33 P +0.15 (the information needed by the applet and its web page into a) 315 473.33 P +0.25 0.08 (single f) 315 462.33 B +0.25 0.08 (ile, the entire page can be do) 345.02 462.33 B +0.25 0.08 (wnloaded with a single) 463.19 462.33 B +0.25 0.13 (request. F) 315 451.33 B +0.25 0.13 (or man) 355.86 451.33 B +0.25 0.13 (y pages this will greatly reduce do) 384.81 451.33 B +0.25 0.13 (wnload) 527.9 451.33 B +(times.) 315 440.33 T +0.25 0.57 (J) 315 421.33 B +0.25 0.57 (ARs and digital signatures can also be used for Ja) 318.86 421.33 B +0.25 0.57 (v) 548.23 421.33 B +0.25 0.57 (a) 553.56 421.33 B +0.25 0.12 (applications. While Ja) 315 410.33 B +0.25 0.12 (v) 406.55 410.33 B +0.25 0.12 (a applications are more trustw) 411.42 410.33 B +0.25 0.12 (orth) 536.46 410.33 B +0.25 0.12 (y) 553 410.33 B +0.25 0.01 (than applets because the) 315 399.33 B +0.25 0.01 (y do not tra) 412.84 399.33 B +0.25 0.01 (v) 459.38 399.33 B +0.25 0.01 (el o) 464.24 399.33 B +0.25 0.01 (v) 479.12 399.33 B +0.25 0.01 (er the Internet and) 483.98 399.33 B +0.25 0.1 (are subject to an or) 315 388.33 B +0.25 0.1 (g) 393.86 388.33 B +0.25 0.1 (anizations traditional security policies,) 398.91 388.33 B +0.25 0.49 (applications are subject to se) 315 377.33 B +0.25 0.49 (v) 445.39 377.33 B +0.25 0.49 (eral types of attack. F) 450.73 377.33 B +0.25 0.49 (or) 549.18 377.33 B +0.25 0.08 (e) 315 366.33 B +0.25 0.08 (xample, viruses spread by modifying e) 319.37 366.33 B +0.25 0.08 (xisting applications) 478.25 366.33 B +0.25 0.21 (to include a cop) 315 355.33 B +0.25 0.21 (y of the virus. Since a virus w) 382.67 355.33 B +0.25 0.21 (ould not be) 510.36 355.33 B +0.08 (able to produce a v) 315 344.33 P +0.08 (alid signature for the altered program, the) 391.16 344.33 P +0.25 0.08 (Ja) 315 333.33 B +0.25 0.08 (v) 323.3 333.33 B +0.25 0.08 (a system could detect that a signed application has been) 328.13 333.33 B +0.25 0.03 (tampered with, and refuse to run it. Since the J) 315 322.33 B +0.25 0.03 (AR signature) 504.38 322.33 B +0.25 0 (system will w) 315 311.33 B +0.25 0 (ork with all types of information, not just Ja) 371.01 311.33 B +0.25 0 (v) 548.81 311.33 B +0.25 0 (a) 553.56 311.33 B +-0.22 (\336les, J) 315 300.33 P +-0.22 (AR signatures can also be used to protect data \336les and) 339.73 300.33 P +(other information.) 315 289.33 T +0.25 0.26 (Signed J) 315 270.33 B +0.25 0.26 (AR f) 350.91 270.33 B +0.25 0.26 (iles will be included in Ja) 371.38 270.33 B +0.25 0.26 (v) 481.42 270.33 B +0.25 0.26 (a release 1.1 and) 486.43 270.33 B +(should be a) 315 259.33 T +(v) 360.35 259.33 T +(ailable by the end of 1996.) 365.1 259.33 T +3 F +(Fle) 315 240.33 T +(xib) 329.3 240.33 T +(le P) 343.65 240.33 T +(olicies) 361.04 240.33 T +0 F +0.04 (Since digital signatures allo) 315 221.33 P +0.04 (w us to assign to Ja) 425.69 221.33 P +0.04 (v) 503.18 221.33 P +0.04 (a applets the) 507.93 221.33 P +0.25 0.53 (same le) 315 210.33 B +0.25 0.53 (v) 348.97 210.33 B +0.25 0.53 (el of trust which we assign to shrinkwrapped) 354.35 210.33 B +0.25 0.39 (applications, it may be useful to relax the Ja) 315 199.33 B +0.25 0.39 (v) 510.51 199.33 B +0.25 0.39 (a security) 515.65 199.33 B +-0.21 (restrictions for some applets. F) 315 188.33 P +-0.21 (or e) 437.63 188.33 P +-0.21 (xample, it w) 452.54 188.33 P +-0.21 (ould be useful) 501.75 188.33 P +0.25 0.08 (if the home banking applet described abo) 315 177.33 B +0.25 0.08 (v) 484.6 177.33 B +0.25 0.08 (e could establish) 489.53 177.33 B +0.25 0.41 (its o) 315 166.33 B +0.25 0.41 (wn directory on the user\325) 333.98 166.33 B +0.25 0.41 (s hard disk. It could store) 445.1 166.33 B +-0.13 (account and credit card numbers, passw) 315 155.33 P +-0.13 (ords, PINs, and other) 473.67 155.33 P +0.25 0.05 (frequently used information so the end-user w) 315 144.33 B +0.25 0.05 (ould not ha) 502.86 144.33 B +0.25 0.05 (v) 548.66 144.33 B +0.25 0.05 (e) 553.56 144.33 B +(to constantly re-enter that information.) 315 133.33 T +0.25 0 (Signed applets can be used to create this en) 315 114.33 B +0.25 0 (vironment. If the) 489.98 114.33 B +0.01 (end-user has pre) 315 103.33 P +0.01 (viously told the Ja) 380.31 103.33 P +0.01 (v) 453.21 103.33 P +0.01 (a system that a particular) 457.96 103.33 P +0.25 0.03 (web publisher) 315 92.33 B +0.25 0.03 (, say a bank or credit card compan) 371.62 92.33 B +0.25 0.03 (y) 511.4 92.33 B +0.25 0.03 (, is trusted) 515.78 92.33 B +0.25 0.06 (and a signed applet from that publisher has arri) 315 81.33 B +0.25 0.06 (v) 507.87 81.33 B +0.25 0.06 (ed o) 512.78 81.33 B +0.25 0.06 (v) 530.06 81.33 B +0.25 0.06 (er the) 534.97 81.33 B +0.25 0.43 (Internet and been authenticated, then the Ja) 315 70.33 B +0.25 0.43 (v) 508.39 70.33 B +0.25 0.43 (a Security) 513.58 70.33 B +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "6" 6 +%%Page: "7" 7 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 9 558 36 R +7 X +0 0 0 1 0 0 0 K +V +0 8 Q +0 X +(\251 Sun Microsystems, Inc., 1996) 54 30.67 T +(7) 306 30.67 T +54 54 558 738 R +7 X +V +0 10 Q +0 X +0.25 0.29 (Manager could allo) 54 731.33 B +0.25 0.29 (w that applet out of the sandbox, and) 137.17 731.33 B +(treat it as an application.) 54 720.33 T +0.25 0.13 (The Security Manger could also enforce dif) 54 701.33 B +0.25 0.13 (ferent le) 235.01 701.33 B +0.25 0.13 (v) 269.19 701.33 B +0.25 0.13 (els of) 274.17 701.33 B +0.25 0.03 (control based on ho) 54 690.33 B +0.25 0.03 (w much a particular publisher is trusted,) 133.61 690.33 B +0.25 0.46 (or on ho) 54 679.33 B +0.25 0.46 (w much the Internet as a whole is trusted. F) 91.29 679.33 B +0.25 0.46 (or) 288.21 679.33 B +0.25 0.04 (e) 54 668.33 B +0.25 0.04 (xample, a v) 58.33 668.33 B +0.25 0.04 (ery security-conscious user could conf) 105.47 668.33 B +0.25 0.04 (igure the) 261.18 668.33 B +0.25 0.6 (system to allo) 54 657.33 B +0.25 0.6 (w signed applets to run only inside the) 118.23 657.33 B +0.03 (sandbox, and to pre) 54 646.33 P +0.03 (v) 132.15 646.33 P +0.03 (ent an) 137 646.33 P +0.03 (y unsigned applet from running at) 161.04 646.33 P +0.25 0.24 (all. Another user might conf) 54 635.33 B +0.25 0.24 (igure the system to allo) 174.11 635.33 B +0.25 0.24 (w the) 273.86 635.33 B +0.18 (banking applet to access only one particular directory on the) 54 624.33 P +0.25 0.18 (hard disk, while a net g) 54 613.33 B +0.25 0.18 (aming applet could access another) 152.93 613.33 B +(directory and all other applets are restricted to the sandbox.) 54 602.33 T +3 F +(A) 54 583.33 T +(uditing) 60.92 583.33 T +0 F +0.25 0.33 (Auditing is another important security feature. Auditing) 54 564.33 B +0.24 (softw) 54 553.33 P +0.24 (are maintains a record of e) 76.12 553.33 P +0.24 (v) 183.4 553.33 P +0.24 (erything which happens on) 188.25 553.33 P +0.25 0.06 (the system. When something goes wrong, either through an) 54 542.33 B +0.25 0.29 (accident or a b) 54 531.33 B +0.25 0.29 (ug, or because of an attack, the audit trail) 117.51 531.33 B +0.25 0.35 (allo) 54 520.33 B +0.25 0.35 (ws systems administrators and security personnel to) 70.16 520.33 B +-0.08 (\336gure out what happened, and ho) 54 509.33 P +-0.08 (w to pre) 186.66 509.33 P +-0.08 (v) 219.02 509.33 P +-0.08 (ent a reoccurrence) 223.87 509.33 P +0.25 0.17 (in the future. While auditing cannot pre) 54 498.33 B +0.25 0.17 (v) 219.95 498.33 B +0.25 0.17 (ent accidents and) 224.96 498.33 B +0.25 0.28 (attacks, once things go wrong, it is an important tool for) 54 487.33 B +(cleaning up the mess.) 54 476.33 T +0.25 0.22 (While some v) 54 457.33 B +0.25 0.22 (ersions of the Ja) 112.56 457.33 B +0.25 0.22 (v) 181.58 457.33 B +0.25 0.22 (a platform include limited) 186.55 457.33 B +0.25 0.58 (auditing features, there is no standard set of auditing) 54 446.33 B +0.25 0.2 (capabilities on which an administrator can rely) 54 435.33 B +0.25 0.2 (, and those) 251.45 435.33 B +0.08 (features that do e) 54 424.33 P +0.08 (xist do not record as much detail as is often) 122.68 424.33 P +0.25 0.49 (needed. Ef) 54 413.33 B +0.25 0.49 (forts are under w) 101.68 413.33 B +0.25 0.49 (ay to def) 178.72 413.33 B +0.25 0.49 (ine what standard) 218.09 413.33 B +0.25 0.16 (features need to be included in e) 54 402.33 B +0.25 0.16 (v) 190.03 402.33 B +0.25 0.16 (ery Ja) 195.05 402.33 B +0.25 0.16 (v) 219.67 402.33 B +0.25 0.16 (a implementation) 224.59 402.33 B +(and ho) 54 391.33 T +(w these features should be implemented.) 80.69 391.33 T +3 F +(Encr) 54 372.33 T +(yption) 76.33 372.33 T +0 F +0.25 0.22 (While the sandbox and signed applets can protect ag) 54 353.33 B +0.25 0.22 (ainst) 277.22 353.33 B +0.25 0.13 (hostile applets and man-in-the-middle attacks, information) 54 342.33 B +0.25 0.12 (tra) 54 331.33 B +0.25 0.12 (v) 64.71 331.33 B +0.25 0.12 (eling between the applet and a serv) 69.69 331.33 B +0.25 0.12 (er on the Internet is) 215.81 331.33 B +0.25 0.06 (still vulnerable to theft. This is because the Internet itself is) 54 320.33 B +0.25 0.51 (an insecure medium. An attack) 54 309.33 B +0.25 0.51 (er attached to a central) 193.79 309.33 B +0.1 (portion of the Internet can read all information which tra) 54 298.33 P +0.1 (v) 281.04 298.33 P +0.1 (els) 285.89 298.33 P +0.04 (through that portion of the Internet. The attack) 54 287.33 P +0.04 (er could listen) 240.26 287.33 P +0.25 0.03 (to all traf) 54 276.33 B +0.25 0.03 (f) 91.26 276.33 B +0.25 0.03 (ic bound for a major bank or mail order compan) 94.08 276.33 B +0.25 0.03 (y) 290.12 276.33 B +0.25 0.03 (,) 294.5 276.33 B +0.25 0.1 (and simply read credit card numbers and other information) 54 265.33 B +-0.16 (of) 54 254.33 P +-0.16 (f the wire as it passed. T) 62.08 254.33 P +-0.16 (o secure ag) 157.78 254.33 P +-0.16 (ainst this type of attack,) 202.38 254.33 P +0.25 0.27 (all information f) 54 243.33 B +0.25 0.27 (lo) 124.15 243.33 B +0.25 0.27 (wing between the applet and its serv) 132.23 243.33 B +0.25 0.27 (er) 288.96 243.33 B +(must be rendered unreadable by encrypting it.) 54 232.33 T +-0 (Se) 54 213.33 P +-0 (v) 63.75 213.33 P +-0 (eral Ja) 68.6 213.33 P +-0 (v) 94.22 213.33 P +-0 (a encryption f) 98.97 213.33 P +-0 (acilities are being de) 154.4 213.33 P +-0 (v) 236.61 213.33 P +-0 (eloped. These) 241.46 213.33 P +0.25 0.18 (f) 54 202.33 B +0.25 0.18 (acilities will allo) 57.41 202.33 B +0.25 0.18 (w applet de) 127.72 202.33 B +0.25 0.18 (v) 176.03 202.33 B +0.25 0.18 (elopers to select the type of) 181.06 202.33 B +0.25 0.21 (encryption algorithm used, to ne) 54 191.33 B +0.25 0.21 (gotiate with the serv) 191.39 191.33 B +0.25 0.21 (er to) 277.85 191.33 B +0.25 0.16 (create the k) 54 180.33 B +0.25 0.16 (e) 102.39 180.33 B +0.25 0.16 (ys used in the encryption and to do the actual) 106.83 180.33 B +(encryption of the data.) 54 169.33 T +0.25 0.19 (While there are fe) 54 150.33 B +0.25 0.19 (w technical challenges to implementing) 129.92 150.33 B +0.25 0.01 (the cryptographic functionality) 54 139.33 B +0.25 0.01 (, the US go) 178.01 139.33 B +0.25 0.01 (v) 223.71 139.33 B +0.25 0.01 (ernment imposes) 228.57 139.33 B +0.01 (strict e) 54 128.33 P +0.01 (xport controls on encryption technology) 80.8 128.33 P +0.01 (. Since Ja) 240.75 128.33 P +0.01 (v) 278.63 128.33 P +0.01 (a is) 283.38 128.33 P +0.25 0.2 (a) 54 117.33 B +0.25 0.2 (v) 58.44 117.33 B +0.25 0.2 (ailable w) 63.39 117.33 B +0.25 0.2 (orld-wide, an) 101.73 117.33 B +0.25 0.2 (y proposed cryptographic system) 157.75 117.33 B +0.08 (must comply with these la) 54 106.33 P +0.08 (ws. Ensuring this compliance may) 159.18 106.33 P +(delay the release of the f) 54 95.33 T +(acilities.) 151.92 95.33 T +1 F +(SUMMAR) 315 731.33 T +(Y) 359.49 731.33 T +0 F +0.25 0.42 (The Ja) 315 715.33 B +0.25 0.42 (v) 343.94 715.33 B +0.25 0.42 (a platform supports Write Once/Run An) 349.11 715.33 B +0.25 0.42 (ywhere) 526.48 715.33 B +0.25 0.41 (applications. This, combined with the easy distrib) 315 704.33 B +0.25 0.41 (ution) 535.79 704.33 B +0.14 (mechanisms pro) 315 693.33 P +0.14 (vided by the W) 380.26 693.33 P +0.14 (orld W) 441.25 693.33 P +0.14 (ide W) 469.04 693.33 P +0.14 (eb and W) 492.54 693.33 P +0.14 (eb-lik) 530.33 693.33 P +0.14 (e) 553.56 693.33 P +0.25 0.33 (systems called intranets, mak) 315 682.33 B +0.25 0.33 (es Ja) 442.47 682.33 B +0.25 0.33 (v) 463.34 682.33 B +0.25 0.33 (a a po) 468.42 682.33 B +0.25 0.33 (werful tool for) 494.54 682.33 B +0.25 0.46 (man) 315 671.33 B +0.25 0.46 (y netw) 333.46 671.33 B +0.25 0.46 (ork based systems. The mobile applications) 363.33 671.33 B +0.25 0.53 (which Ja) 315 660.33 B +0.25 0.53 (v) 354.55 660.33 B +0.25 0.53 (a enables \321 applications that automatically) 359.83 660.33 B +0.25 0.08 (migrate o) 315 649.33 B +0.25 0.08 (v) 353.9 649.33 B +0.25 0.08 (er the netw) 358.83 649.33 B +0.25 0.08 (ork to where the) 404.58 649.33 B +0.25 0.08 (y are needed \321solv) 471.76 649.33 B +0.25 0.08 (e) 553.56 649.33 B +0.25 0.3 (man) 315 638.33 B +0.25 0.3 (y persistent problems in application distrib) 332.96 638.33 B +0.25 0.3 (ution and) 517.88 638.33 B +(systems management.) 315 627.33 T +0.25 0.22 (While mobile applications solv) 315 608.33 B +0.25 0.22 (e the softw) 447.03 608.33 B +0.25 0.22 (are distrib) 493.77 608.33 B +0.25 0.22 (ution) 536.54 608.33 B +0.25 0.18 (problem, the) 315 597.33 B +0.25 0.18 (y also mak) 367.76 597.33 B +0.25 0.18 (e it more lik) 413.24 597.33 B +0.25 0.18 (ely that end-users will) 464.79 597.33 B +0.04 (unintentionally import hostile applications into the corporate) 315 586.33 P +0.25 0.5 (netw) 315 575.33 B +0.25 0.5 (ork. Ja) 336.32 575.33 B +0.25 0.5 (v) 366.49 575.33 B +0.25 0.5 (a addresses these concerns by running all) 371.74 575.33 B +0.25 0.41 (untrusted applications in a protected area kno) 315 564.33 B +0.25 0.41 (wn as the) 516.49 564.33 B +0.25 0.4 (sandbox. Applications running in the sandbox can only) 315 553.33 B +0.25 0.09 (access local and netw) 315 542.33 B +0.25 0.09 (ork resources through a limited set of) 403.85 542.33 B +0.25 0.33 (trusted mechanisms. The sandbox model gi) 315 531.33 B +0.25 0.33 (v) 502.57 531.33 B +0.25 0.33 (es users the) 507.76 531.33 B +0.25 0.11 (adv) 315 520.33 B +0.25 0.11 (antages of easy) 329.51 520.33 B +0.25 0.11 (, ad-hoc application distrib) 392.04 520.33 B +0.25 0.11 (ution while it) 502.78 520.33 B +(protects them from potentially malicious applications.) 315 509.33 T +0.25 0.01 (Se) 315 490.33 B +0.25 0.01 (v) 324.77 490.33 B +0.25 0.01 (eral ef) 329.64 490.33 B +0.25 0.01 (forts are underw) 354.98 490.33 B +0.25 0.01 (ay to further enhance the sandbox) 421.11 490.33 B +0.25 0.07 (model. Independent contractors are re) 315 479.33 B +0.25 0.07 (vie) 469.71 479.33 B +0.25 0.07 (wing the design of) 481.89 479.33 B +0.25 0.14 (the sandbox to ensure that it pro) 315 468.33 B +0.25 0.14 (vides adequate protection.) 449.3 468.33 B +0.25 0.19 (Future releases of Ja) 315 457.33 B +0.25 0.19 (v) 401.45 457.33 B +0.25 0.19 (a will pro) 406.39 457.33 B +0.25 0.19 (vide applet signing, which) 446.96 457.33 B +0.25 0.39 (acts as digital shrinkwrap. Support for f) 315 446.33 B +0.25 0.39 (le) 490.63 446.33 B +0.25 0.39 (xible security) 498.49 446.33 B +0.25 0.49 (policies, encryption and other more adv) 315 435.33 B +0.25 0.49 (anced security) 493.92 435.33 B +(features are also being added.) 315 424.33 T +0.25 0.78 (An) 315 405.33 B +0.25 0.78 (y or) 328.63 405.33 B +0.25 0.78 (g) 347.64 405.33 B +0.25 0.78 (anization which is considering adding Ja) 353.37 405.33 B +0.25 0.78 (v) 548.03 405.33 B +0.25 0.78 (a) 553.56 405.33 B +0.25 0.09 (applications or Ja) 315 394.33 B +0.25 0.09 (v) 386.85 394.33 B +0.25 0.09 (a enabled softw) 391.68 394.33 B +0.25 0.09 (are to its netw) 456.14 394.33 B +0.25 0.09 (ork should) 514.47 394.33 B +0.25 0.01 (carefully consider ho) 315 383.33 B +0.25 0.01 (w Ja) 399.98 383.33 B +0.25 0.01 (v) 418.14 383.33 B +0.25 0.01 (a will af) 422.91 383.33 B +0.25 0.01 (fect their current security) 456.06 383.33 B +0.25 0 (policies. While no set of security policies can e) 315 372.33 B +0.25 0 (v) 505.39 372.33 B +0.25 0 (er eliminate) 510.24 372.33 B +0.25 0.12 (all risk from a netw) 315 361.33 B +0.25 0.12 (ork) 396.61 361.33 B +0.25 0.12 (ed en) 410.2 361.33 B +0.25 0.12 (vironment, understanding ho) 432.03 361.33 B +0.25 0.12 (w) 550.78 361.33 B +0.25 0.02 (Ja) 315 350.33 B +0.25 0.02 (v) 323.17 350.33 B +0.25 0.02 (a\325) 327.93 350.33 B +0.25 0.02 (s security model w) 335.19 350.33 B +0.25 0.02 (orks and what sorts of attacks might) 411.44 350.33 B +0.25 0.86 (be committed ag) 315 339.33 B +0.25 0.86 (ainst it, k) 394.96 339.33 B +0.25 0.86 (eeping current with ne) 441.73 339.33 B +0.25 0.86 (w) 550.78 339.33 B +0.25 0.11 (de) 315 328.33 B +0.25 0.11 (v) 324.41 328.33 B +0.25 0.11 (elopments by both attack) 329.38 328.33 B +0.25 0.11 (ers and other security of) 432.98 328.33 B +0.25 0.11 (f) 533.17 328.33 B +0.25 0.11 (icers,) 536.06 328.33 B +0.25 0.31 (and e) 315 317.33 B +0.25 0.31 (v) 337.92 317.33 B +0.25 0.31 (aluating Ja) 342.97 317.33 B +0.25 0.31 (v) 389.45 317.33 B +0.25 0.31 (a in light of the or) 394.51 317.33 B +0.25 0.31 (g) 473.66 317.33 B +0.25 0.31 (anization\325) 478.92 317.33 B +0.25 0.31 (s o) 521.43 317.33 B +0.25 0.31 (v) 533.84 317.33 B +0.25 0.31 (erall) 539 317.33 B +(security polic) 315 306.33 T +(y can reduce risks to an acceptable le) 369.01 306.33 T +(v) 517.32 306.33 T +(el.) 522.17 306.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "7" 7 +%%Trailer +%%BoundingBox: 0 0 612 792 +%%PageOrder: Ascend +%%Pages: 7 +%%DocumentFonts: Times-Roman +%%+ Helvetica-Bold +%%+ Times-Italic +%%+ Helvetica-BoldOblique +%%+ Courier +%%EOF diff --git a/vendor/github.com/llgcode/ps/samples_test.go b/vendor/github.com/llgcode/ps/samples_test.go new file mode 100644 index 0000000..a16adab --- /dev/null +++ b/vendor/github.com/llgcode/ps/samples_test.go @@ -0,0 +1,58 @@ +package ps + +import ( + "bufio" + "fmt" + "image" + "image/png" + "io/ioutil" + "log" + "os" + "strings" + "testing" + + "github.com/llgcode/draw2d/draw2dimg" +) + +func saveToPngFile(filePath string, m image.Image) { + f, err := os.Create(filePath) + if err != nil { + log.Println(err) + os.Exit(1) + } + defer f.Close() + b := bufio.NewWriter(f) + err = png.Encode(b, m) + if err != nil { + log.Println(err) + os.Exit(1) + } + err = b.Flush() + if err != nil { + log.Println(err) + os.Exit(1) + } + fmt.Printf("Wrote %s OK.\n", filePath) +} + +func init() { + os.Mkdir("result", 0666) +} + +func TestTiger(t *testing.T) { + i := image.NewRGBA(image.Rect(0, 0, 600, 800)) + gc := draw2dimg.NewGraphicContext(i) + gc.Translate(0, 380) + gc.Scale(1, -1) + gc.Translate(0, -380) + src, err := os.OpenFile("samples/tiger.ps", 0, 0) + if err != nil { + return + } + defer src.Close() + bytes, err := ioutil.ReadAll(src) + reader := strings.NewReader(string(bytes)) + interpreter := NewInterpreter(gc) + interpreter.Execute(reader) + saveToPngFile("result/TestPostscript.png", i) +} diff --git a/vendor/github.com/llgcode/ps/scanner.go b/vendor/github.com/llgcode/ps/scanner.go new file mode 100644 index 0000000..fb7cab5 --- /dev/null +++ b/vendor/github.com/llgcode/ps/scanner.go @@ -0,0 +1,572 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// postscript scanner derived form the scanner package of go sources +package ps + +import ( + "bytes" + "fmt" + "io" + "os" + "unicode" + "unicode/utf8" +) + +// A source position is represented by a Position value. +// A position is valid if Line > 0. +type Position struct { + Filename string // filename, if any + Offset int // byte offset, starting at 0 + Line int // line number, starting at 1 + Column int // column number, starting at 0 (character count per line) +} + +// IsValid returns true if the position is valid. +func (pos *Position) IsValid() bool { return pos.Line > 0 } + +func (pos Position) String() string { + s := pos.Filename + if pos.IsValid() { + if s != "" { + s += ":" + } + s += fmt.Sprintf("%d:%d", pos.Line, pos.Column) + } + if s == "" { + s = "???" + } + return s +} + +// Predefined mode bits to control recognition of tokens. For instance, +// to configure a Scanner such that it only recognizes (Go) identifiers, +// integers, and skips comments, set the Scanner's Mode field to: +// +// ScanIdents | ScanInts | SkipComments +// +const ( + ScanIdents = 1 << -Ident + ScanInts = 1 << -Int + ScanFloats = 1 << -Float // includes Ints + ScanChars = 1 << -Char + ScanStrings = 1 << -String + ScanRawStrings = 1 << -RawString + ScanComments = 1 << -Comment + SkipComments = 1 << -skipComment // if set with ScanComments, comments become white space + GoTokens = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments +) + +// The result of Scan is one of the following tokens or a Unicode character. +const ( + EOF = -(iota + 1) + Ident + Int + Float + Char + String + RawString + Comment + skipComment +) + +var tokenString = map[int]string{ + EOF: "EOF", + Ident: "Ident", + Int: "Int", + Float: "Float", + Char: "Char", + String: "String", + RawString: "RawString", + Comment: "Comment", +} + +// TokenString returns a (visible) string for a token or Unicode character. +func TokenString(tok int) string { + if s, found := tokenString[tok]; found { + return s + } + return fmt.Sprintf("U+%04X", tok) +} + +// GoWhitespace is the default value for the Scanner's Whitespace field. +// Its value selects Go's white space characters. +const GoWhitespace = 1<<'\t' | 1<<'\n' | 1<<'\r' | 1<<' ' + +const bufLen = 1024 // at least utf8.UTFMax + +// A Scanner implements reading of Unicode characters and tokens from an io.Reader. +type Scanner struct { + // Input + src io.Reader + + // Source buffer + srcBuf [bufLen + 1]byte // +1 for sentinel for common case of s.next() + srcPos int // reading position (srcBuf index) + srcEnd int // source end (srcBuf index) + + // Source position + srcBufOffset int // byte offset of srcBuf[0] in source + line int // newline count + 1 + column int // character count on line + + // Token text buffer + // Typically, token text is stored completely in srcBuf, but in general + // the token text's head may be buffered in tokBuf while the token text's + // tail is stored in srcBuf. + tokBuf bytes.Buffer // token text head that is not in srcBuf anymore + tokPos int // token text tail position (srcBuf index) + tokEnd int // token text tail end (srcBuf index) + + // One character look-ahead + ch rune // character before current srcPos + + // Error is called for each error encountered. If no Error + // function is set, the error is reported to os.Stderr. + Error func(s *Scanner, msg string) + + // ErrorCount is incremented by one for each error encountered. + ErrorCount int + + // The Mode field controls which tokens are recognized. For instance, + // to recognize Ints, set the ScanInts bit in Mode. The field may be + // changed at any time. + Mode uint + + // The Whitespace field controls which characters are recognized + // as white space. To recognize a character ch <= ' ' as white space, + // set the ch'th bit in Whitespace (the Scanner's behavior is undefined + // for values ch > ' '). The field may be changed at any time. + Whitespace uint64 + + // Current token position. The Offset, Line, and Column fields + // are set by Scan(); the Filename field is left untouched by the + // Scanner. + Position +} + +// Init initializes a Scanner with a new source and returns itself. +// Error is set to nil, ErrorCount is set to 0, Mode is set to GoTokens, +// and Whitespace is set to GoWhitespace. +func (s *Scanner) Init(src io.Reader) *Scanner { + s.src = src + + // initialize source buffer + s.srcBuf[0] = utf8.RuneSelf // sentinel + s.srcPos = 0 + s.srcEnd = 0 + + // initialize source position + s.srcBufOffset = 0 + s.line = 1 + s.column = 0 + + // initialize token text buffer + s.tokPos = -1 + + // initialize one character look-ahead + s.ch = s.next() + + // initialize public fields + s.Error = nil + s.ErrorCount = 0 + s.Mode = GoTokens + s.Whitespace = GoWhitespace + + return s +} + +// next reads and returns the next Unicode character. It is designed such +// that only a minimal amount of work needs to be done in the common ASCII +// case (one test to check for both ASCII and end-of-buffer, and one test +// to check for newlines). +func (s *Scanner) next() rune { + ch := rune(s.srcBuf[s.srcPos]) + + if ch >= utf8.RuneSelf { + // uncommon case: not ASCII or not enough bytes + for s.srcPos+utf8.UTFMax > s.srcEnd && !utf8.FullRune(s.srcBuf[s.srcPos:s.srcEnd]) { + // not enough bytes: read some more, but first + // save away token text if any + if s.tokPos >= 0 { + s.tokBuf.Write(s.srcBuf[s.tokPos:s.srcPos]) + s.tokPos = 0 + } + // move unread bytes to beginning of buffer + copy(s.srcBuf[0:], s.srcBuf[s.srcPos:s.srcEnd]) + s.srcBufOffset += s.srcPos + // read more bytes + i := s.srcEnd - s.srcPos + n, err := s.src.Read(s.srcBuf[i:bufLen]) + s.srcEnd = i + n + s.srcPos = 0 + s.srcBuf[s.srcEnd] = utf8.RuneSelf // sentinel + if err != nil { + if s.srcEnd == 0 { + return EOF + } + if err != io.EOF { + s.error(err.Error()) + break + } + } + } + // at least one byte + ch = rune(s.srcBuf[s.srcPos]) + if ch >= utf8.RuneSelf { + // uncommon case: not ASCII + var width int + ch, width = utf8.DecodeRune(s.srcBuf[s.srcPos:s.srcEnd]) + if ch == utf8.RuneError && width == 1 { + s.error("illegal UTF-8 encoding") + } + s.srcPos += width - 1 + } + } + + s.srcPos++ + s.column++ + switch ch { + case 0: + // implementation restriction for compatibility with other tools + s.error("illegal character NUL") + case '\n': + s.line++ + s.column = 0 + } + + return ch +} + +// Next reads and returns the next Unicode character. +// It returns EOF at the end of the source. It reports +// a read error by calling s.Error, if set, or else +// prints an error message to os.Stderr. Next does not +// update the Scanner's Position field; use Pos() to +// get the current position. +func (s *Scanner) Next() rune { + s.tokPos = -1 // don't collect token text + ch := s.ch + s.ch = s.next() + return ch +} + +// Peek returns the next Unicode character in the source without advancing +// the scanner. It returns EOF if the scanner's position is at the last +// character of the source. +func (s *Scanner) Peek() rune { + return s.ch +} + +func (s *Scanner) error(msg string) { + s.ErrorCount++ + if s.Error != nil { + s.Error(s, msg) + return + } + fmt.Fprintf(os.Stderr, "%s: %s", s.Position, msg) +} + +func (s *Scanner) scanIdentifier() rune { + ch := s.next() // read character after first '_' or letter + for ch == '_' || unicode.IsLetter(ch) || unicode.IsDigit(ch) || ch == '.' || ch == '-' || ch == '`' { + ch = s.next() + } + return ch +} + +func digitVal(ch rune) rune { + switch { + case '0' <= ch && ch <= '9': + return ch - '0' + case 'a' <= ch && ch <= 'f': + return ch - 'a' + 10 + case 'A' <= ch && ch <= 'F': + return ch - 'A' + 10 + } + return 16 // larger than any legal digit val +} + +func isDecimal(ch rune) bool { return '0' <= ch && ch <= '9' } + +func (s *Scanner) scanMantissa(ch rune) rune { + for isDecimal(ch) { + ch = s.next() + } + return ch +} + +func (s *Scanner) scanFraction(ch rune) rune { + if ch == '.' { + ch = s.scanMantissa(s.next()) + } + return ch +} + +func (s *Scanner) scanExponent(ch rune) rune { + if ch == 'e' || ch == 'E' { + ch = s.next() + if ch == '-' || ch == '+' { + ch = s.next() + } + ch = s.scanMantissa(ch) + } + return ch +} + +func (s *Scanner) scanNumber(ch rune) (int, rune) { + // isDecimal(ch) + if ch == '0' { + // int or float + ch = s.next() + if ch == 'x' || ch == 'X' { + // hexadecimal int + ch = s.next() + for digitVal(ch) < 16 { + ch = s.next() + } + } else { + // octal int or float + seenDecimalDigit := false + for isDecimal(ch) { + if ch > '7' { + seenDecimalDigit = true + } + ch = s.next() + } + if s.Mode&ScanFloats != 0 && (ch == '.' || ch == 'e' || ch == 'E') { + // float + ch = s.scanFraction(ch) + ch = s.scanExponent(ch) + return Float, ch + } + // octal int + if seenDecimalDigit { + s.error("illegal octal number") + } + } + return Int, ch + } + // decimal int or float + ch = s.scanMantissa(ch) + if s.Mode&ScanFloats != 0 && (ch == '.' || ch == 'e' || ch == 'E') { + // float + ch = s.scanFraction(ch) + ch = s.scanExponent(ch) + return Float, ch + } + return Int, ch +} + +func (s *Scanner) scanDigits(ch rune, base, n int) rune { + for n > 0 && int(digitVal(ch)) < base { + ch = s.next() + n-- + } + if n > 0 { + s.error("illegal char escape") + } + return ch +} + +func (s *Scanner) scanEscape(quote rune) rune { + ch := s.next() // read character after '/' + switch ch { + case 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\', quote: + // nothing to do + ch = s.next() + case '0', '1', '2', '3', '4', '5', '6', '7': + ch = s.scanDigits(ch, 8, 3) + case 'x': + ch = s.scanDigits(s.next(), 16, 2) + case 'u': + ch = s.scanDigits(s.next(), 16, 4) + case 'U': + ch = s.scanDigits(s.next(), 16, 8) + default: + s.error("illegal char escape") + } + return ch +} + +func (s *Scanner) scanString(quote rune) (n int) { + ch := s.next() // read character after quote + for ch != quote { + if ch == '\n' || ch < 0 { + s.error("literal not terminated") + return + } + if ch == '\\' { + ch = s.scanEscape(quote) + } else { + ch = s.next() + } + n++ + } + return +} + +func (s *Scanner) scanRawString() { + ch := s.next() // read character after '`' + for ch != '`' { + if ch < 0 { + s.error("literal not terminated") + return + } + ch = s.next() + } +} + +func (s *Scanner) scanLineComment() { + ch := s.next() // read character after "//" + for ch != '\n' { + if ch < 0 { + s.error("comment not terminated") + return + } + ch = s.next() + } +} + +func (s *Scanner) scanComment(ch rune) { + s.scanLineComment() +} + +// Scan reads the next token or Unicode character from source and returns it. +// It only recognizes tokens t for which the respective Mode bit (1<<-t) is set. +// It returns EOF at the end of the source. It reports scanner errors (read and +// token errors) by calling s.Error, if set; otherwise it prints an error message +// to os.Stderr. +func (s *Scanner) Scan() int { + ch := s.ch + + // reset token text position + s.tokPos = -1 + +redo: + // skip white space + for s.Whitespace&(1<