From 0edae18a1ecf7826d3ac49a3077549f578b21193 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Tue, 31 Mar 2020 08:39:48 +0800 Subject: [PATCH] add doc --- docs/images/lib2x-sf_square-1.JPG | Bin 0 -> 42971 bytes docs/lib2x-sf_square.md | 135 ++++++++++++++++++++++++++++++ src/surface/sf_square.scad | 30 ++++--- 3 files changed, 154 insertions(+), 11 deletions(-) create mode 100644 docs/images/lib2x-sf_square-1.JPG create mode 100644 docs/lib2x-sf_square.md diff --git a/docs/images/lib2x-sf_square-1.JPG b/docs/images/lib2x-sf_square-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..5aefe4fd1f727d793a70c48ea40d2d40a547ccc0 GIT binary patch literal 42971 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%0AiHMM| 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 literal 0 HcmV?d00001 diff --git a/docs/lib2x-sf_square.md b/docs/lib2x-sf_square.md new file mode 100644 index 00000000..6976830e --- /dev/null +++ b/docs/lib2x-sf_square.md @@ -0,0 +1,135 @@ +# sf_square + +Given a photo, such as: + +![sf_square](images/caterpillar.JPG) + +Follow the steps described in [img2gray](https://github.com/JustinSDK/img2gray). Copy the content (a list of numbers (0 ~ 255)) in the text file. Combined with the `sf_square` module, you can build a model like this: + +![sf_square](images/lib2x-sf_square-1.JPG) + +**Since:** 2.3 + +## Parameters + +- `levels` : A list of numbers (0 ~ 255). +- `thickness` : The thickness of the model. +- `depth` : The depth of the image. Default to half of `thickness`. +- `x_twist` : The number of twisted degrees along the x-axis. +- `y_twist` : The number of twisted degrees along the y-axis. +- `invert` : Inverts height values of the image. Default to `false`. + +## Examples + + // The code of the above picture. + use ; + + thicnkess = 10; + depth = 5; + x_twist = 90; + y_twist = 90; + invert = false; + levels = [ + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255] + ]; + + sf_square(levels, thicnkess, depth, x_twist = x_twist, y_twist = y_twist, invert = invert); \ No newline at end of file diff --git a/src/surface/sf_square.scad b/src/surface/sf_square.scad index a22fa35e..d9feb1a2 100644 --- a/src/surface/sf_square.scad +++ b/src/surface/sf_square.scad @@ -1,24 +1,32 @@ +use ; +use ; use ; use ; -/* - levels : A list of numbers (0 ~ 255). - thickness: square thickness - depth: the depth of the image - invert: inverts how the gray levels are translated into height values. -*/ -module sf_square(levels, thickness, depth, invert = false) { +module sf_square(levels, thickness, depth, x_twist = 0, y_twist = 0, invert = false) { + size = [len(levels[0]), len(levels)]; dp = is_undef(depth) ? thickness / 2 : depth; surface = _sf_square_surfaces(levels, thickness, dp, invert); offset_z = invert ? thickness : 0; sf_solidify( [ - for(row = surface[0]) - [ - for(p = row) p + [0, 0, offset_z] + for(row = surface[0]) [ + for(p = row) + ptf_y_twist(size, + ptf_x_twist(size, p + [0, 0, offset_z], x_twist), + y_twist + ) ] ], - surface[1] + [ + for(row = surface[1]) [ + for(p = row) + ptf_y_twist(size, + ptf_x_twist(size, p, x_twist), + y_twist + ) + ] + ] ); } \ No newline at end of file