]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Make brotli a submodule
authorShenglei Zhang <shenglei.zhang@intel.com>
Fri, 21 Feb 2020 02:21:06 +0000 (10:21 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Thu, 16 Apr 2020 01:58:38 +0000 (01:58 +0000)
Use submodule way to access brotli in BaseTools based on
brotli version 666c3280cc11dc433c303d79a83d4ffbdd12cc8d.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2558

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
92 files changed:
.gitmodules
.pytool/CISettings.py
BaseTools/Source/C/BrotliCompress/GNUmakefile
BaseTools/Source/C/BrotliCompress/LICENSE [deleted file]
BaseTools/Source/C/BrotliCompress/Makefile
BaseTools/Source/C/BrotliCompress/README.md [deleted file]
BaseTools/Source/C/BrotliCompress/ReadMe.txt [deleted file]
BaseTools/Source/C/BrotliCompress/brotli [new submodule]
BaseTools/Source/C/BrotliCompress/common/constants.h [deleted file]
BaseTools/Source/C/BrotliCompress/common/context.h [deleted file]
BaseTools/Source/C/BrotliCompress/common/dictionary.c [deleted file]
BaseTools/Source/C/BrotliCompress/common/dictionary.h [deleted file]
BaseTools/Source/C/BrotliCompress/common/platform.h [deleted file]
BaseTools/Source/C/BrotliCompress/common/transform.c [deleted file]
BaseTools/Source/C/BrotliCompress/common/transform.h [deleted file]
BaseTools/Source/C/BrotliCompress/common/version.h [deleted file]
BaseTools/Source/C/BrotliCompress/dec/bit_reader.c [deleted file]
BaseTools/Source/C/BrotliCompress/dec/bit_reader.h [deleted file]
BaseTools/Source/C/BrotliCompress/dec/decode.c [deleted file]
BaseTools/Source/C/BrotliCompress/dec/huffman.c [deleted file]
BaseTools/Source/C/BrotliCompress/dec/huffman.h [deleted file]
BaseTools/Source/C/BrotliCompress/dec/prefix.h [deleted file]
BaseTools/Source/C/BrotliCompress/dec/state.c [deleted file]
BaseTools/Source/C/BrotliCompress/dec/state.h [deleted file]
BaseTools/Source/C/BrotliCompress/docs/brotli-comparison-study-2015-09-22.pdf [deleted file]
BaseTools/Source/C/BrotliCompress/enc/backward_references.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/backward_references.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/backward_references_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/bit_cost.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/bit_cost.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/bit_cost_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/block_encoder_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/block_splitter.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/block_splitter.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/block_splitter_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/cluster.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/cluster.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/cluster_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/command.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/compress_fragment.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/compress_fragment.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/encode.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/encoder_dict.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/encoder_dict.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/entropy_encode.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/entropy_encode.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/entropy_encode_static.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/fast_log.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/find_match_length.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash_composite_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash_forgetful_chain_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash_longest_match64_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_quickly_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash_rolling_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/hash_to_binary_tree_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/histogram.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/histogram.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/histogram_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/literal_cost.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/literal_cost.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/memory.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/memory.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/metablock.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/metablock.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/metablock_inc.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/params.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/prefix.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/quality.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/ringbuffer.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/static_dict.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/static_dict.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/static_dict_lut.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/utf8_util.c [deleted file]
BaseTools/Source/C/BrotliCompress/enc/utf8_util.h [deleted file]
BaseTools/Source/C/BrotliCompress/enc/write_bits.h [deleted file]
BaseTools/Source/C/BrotliCompress/include/brotli/decode.h [deleted file]
BaseTools/Source/C/BrotliCompress/include/brotli/encode.h [deleted file]
BaseTools/Source/C/BrotliCompress/include/brotli/port.h [deleted file]
BaseTools/Source/C/BrotliCompress/include/brotli/types.h [deleted file]
BaseTools/Source/C/BrotliCompress/tools/brotli.c [deleted file]
BaseTools/Source/C/BrotliCompress/tools/brotli.md [deleted file]
Readme.md

index 20640fb617999d80aa4e21a2d29952b434a52369..41099f6fd701ca2059d774c9e02969245d5687ea 100644 (file)
@@ -13,3 +13,6 @@
 [submodule "MdeModulePkg/Library/BrotliCustomDecompressLib/brotli"]
        path = MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
        url = https://github.com/google/brotli
+[submodule "BaseTools/Source/C/BrotliCompress/brotli"]
+       path = BaseTools/Source/C/BrotliCompress/brotli
+       url = https://github.com/google/brotli
index 077d65473209aca414199c94b3e9bc830adde6f2..e373d17a6c3465d93c1b358b29e793c00b41f540 100644 (file)
@@ -148,6 +148,8 @@ class Settings(CiBuildSettingsManager, UpdateSettingsManager, SetupSettingsManag
             "MdeModulePkg/Universal/RegularExpressionDxe/oniguruma", False))\r
         rs.append(RequiredSubmodule(\r
             "MdeModulePkg/Library/BrotliCustomDecompressLib/brotli", False))\r
+        rs.append(RequiredSubmodule(\r
+            "BaseTools/Source/C/BrotliCompress/brotli", False))\r
         return rs\r
 \r
     def GetName(self):\r
index fdf713e8b236beee2b8791f6e04a162664f3c46f..9544837263ca64b40a635028078ff330933fe33e 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # GNU/Linux makefile for 'Brotli' module build.\r
 #\r
-# Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>\r
 # SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 MAKEROOT ?= ..\r
@@ -9,33 +9,33 @@ MAKEROOT ?= ..
 APPNAME = Brotli\r
 \r
 OBJECTS = \\r
-  tools/brotli.o \\r
-  common/dictionary.o \\r
-  common/transform.o \\r
-  dec/bit_reader.o \\r
-  dec/decode.o \\r
-  dec/huffman.o \\r
-  dec/state.o \\r
-  enc/backward_references.o \\r
-  enc/backward_references_hq.o \\r
-  enc/bit_cost.o \\r
-  enc/block_splitter.o \\r
-  enc/brotli_bit_stream.o \\r
-  enc/cluster.o \\r
-  enc/compress_fragment.o \\r
-  enc/compress_fragment_two_pass.o \\r
-  enc/dictionary_hash.o \\r
-  enc/encode.o \\r
-  enc/encoder_dict.o \\r
-  enc/entropy_encode.o \\r
-  enc/histogram.o \\r
-  enc/literal_cost.o \\r
-  enc/memory.o \\r
-  enc/metablock.o \\r
-  enc/static_dict.o \\r
-  enc/utf8_util.o\r
+  brotli/c/tools/brotli.o \\r
+  brotli/c/common/dictionary.o \\r
+  brotli/c/common/transform.o \\r
+  brotli/c/dec/bit_reader.o \\r
+  brotli/c/dec/decode.o \\r
+  brotli/c/dec/huffman.o \\r
+  brotli/c/dec/state.o \\r
+  brotli/c/enc/backward_references.o \\r
+  brotli/c/enc/backward_references_hq.o \\r
+  brotli/c/enc/bit_cost.o \\r
+  brotli/c/enc/block_splitter.o \\r
+  brotli/c/enc/brotli_bit_stream.o \\r
+  brotli/c/enc/cluster.o \\r
+  brotli/c/enc/compress_fragment.o \\r
+  brotli/c/enc/compress_fragment_two_pass.o \\r
+  brotli/c/enc/dictionary_hash.o \\r
+  brotli/c/enc/encode.o \\r
+  brotli/c/enc/encoder_dict.o \\r
+  brotli/c/enc/entropy_encode.o \\r
+  brotli/c/enc/histogram.o \\r
+  brotli/c/enc/literal_cost.o \\r
+  brotli/c/enc/memory.o \\r
+  brotli/c/enc/metablock.o \\r
+  brotli/c/enc/static_dict.o \\r
+  brotli/c/enc/utf8_util.o\r
 \r
 include $(MAKEROOT)/Makefiles/app.makefile\r
 \r
-TOOL_INCLUDE = -I ./include\r
+TOOL_INCLUDE = -I ./brotli/c/include\r
 LIBS += -lm\r
diff --git a/BaseTools/Source/C/BrotliCompress/LICENSE b/BaseTools/Source/C/BrotliCompress/LICENSE
deleted file mode 100644 (file)
index 49550fc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.\r
-\r
-Permission is hereby granted, free of charge, to any person obtaining a copy\r
-of this software and associated documentation files (the "Software"), to deal\r
-in the Software without restriction, including without limitation the rights\r
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-copies of the Software, and to permit persons to whom the Software is\r
-furnished to do so, subject to the following conditions:\r
-\r
-The above copyright notice and this permission notice shall be included in\r
-all copies or substantial portions of the Software.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\r
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-THE SOFTWARE.\r
index 4c03b0e6df17eaa061bcaad23c239321e2e8b943..b805ff1e5870102682dbc1bacdd0d71bb6e5371f 100644 (file)
@@ -1,46 +1,46 @@
 ## @file\r
 # Windows makefile for 'Brotli' module build.\r
 #\r
-# Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>\r
 # SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 !INCLUDE ..\Makefiles\ms.common\r
 \r
-INC = -I .\include $(INC)\r
+INC = -I .\brotli\c\include $(INC)\r
 CFLAGS = $(CFLAGS) /W2\r
 \r
 APPNAME = Brotli\r
 \r
 #LIBS = $(LIB_PATH)\Common.lib\r
 \r
-COMMON_OBJ = common\dictionary.obj common\transform.obj\r
+COMMON_OBJ = brotli\c\common\dictionary.obj brotli\c\common\transform.obj\r
 DEC_OBJ = \\r
-  dec\bit_reader.obj \\r
-  dec\decode.obj \\r
-  dec\huffman.obj \\r
-  dec\state.obj\r
+  brotli\c\dec\bit_reader.obj \\r
+  brotli\c\dec\decode.obj \\r
+  brotli\c\dec\huffman.obj \\r
+  brotli\c\dec\state.obj\r
 ENC_OBJ = \\r
-  enc\backward_references.obj \\r
-  enc\backward_references_hq.obj \\r
-  enc\bit_cost.obj \\r
-  enc\block_splitter.obj \\r
-  enc\brotli_bit_stream.obj \\r
-  enc\cluster.obj \\r
-  enc\compress_fragment.obj \\r
-  enc\compress_fragment_two_pass.obj \\r
-  enc\dictionary_hash.obj \\r
-  enc\encode.obj \\r
-  enc\encoder_dict.obj \\r
-  enc\entropy_encode.obj \\r
-  enc\histogram.obj \\r
-  enc\literal_cost.obj \\r
-  enc\memory.obj \\r
-  enc\metablock.obj \\r
-  enc\static_dict.obj \\r
-  enc\utf8_util.obj\r
+  brotli\c\enc\backward_references.obj \\r
+  brotli\c\enc\backward_references_hq.obj \\r
+  brotli\c\enc\bit_cost.obj \\r
+  brotli\c\enc\block_splitter.obj \\r
+  brotli\c\enc\brotli_bit_stream.obj \\r
+  brotli\c\enc\cluster.obj \\r
+  brotli\c\enc\compress_fragment.obj \\r
+  brotli\c\enc\compress_fragment_two_pass.obj \\r
+  brotli\c\enc\dictionary_hash.obj \\r
+  brotli\c\enc\encode.obj \\r
+  brotli\c\enc\encoder_dict.obj \\r
+  brotli\c\enc\entropy_encode.obj \\r
+  brotli\c\enc\histogram.obj \\r
+  brotli\c\enc\literal_cost.obj \\r
+  brotli\c\enc\memory.obj \\r
+  brotli\c\enc\metablock.obj \\r
+  brotli\c\enc\static_dict.obj \\r
+  brotli\c\enc\utf8_util.obj\r
 \r
 OBJECTS = \\r
-  tools\brotli.obj \\r
+  brotli\c\tools\brotli.obj \\r
   $(COMMON_OBJ) \\r
   $(DEC_OBJ) \\r
   $(ENC_OBJ)\r
diff --git a/BaseTools/Source/C/BrotliCompress/README.md b/BaseTools/Source/C/BrotliCompress/README.md
deleted file mode 100644 (file)
index 01848ad..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-### Introduction\r
-\r
-Brotli is a generic-purpose lossless compression algorithm that compresses data\r
-using a combination of a modern variant of the LZ77 algorithm, Huffman coding\r
-and 2nd order context modeling, with a compression ratio comparable to the best\r
-currently available general-purpose compression methods. It is similar in speed\r
-with deflate but offers more dense compression.\r
-\r
-The specification of the Brotli Compressed Data Format is defined in [RFC 7932](https://www.ietf.org/rfc/rfc7932.txt).\r
-\r
-Brotli is open-sourced under the MIT License, see the LICENSE file.\r
-\r
-Brotli mailing list:\r
-https://groups.google.com/forum/#!forum/brotli\r
-\r
-[![Build Status](https://travis-ci.org/google/brotli.svg?branch=master)](https://travis-ci.org/google/brotli)\r
-\r
-### Benchmarks\r
-* [Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/) / [Unstable Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/unstable/)\r
-* [Large Text Compression Benchmark](http://mattmahoney.net/dc/text.html)\r
-* [Lzturbo Benchmark](https://sites.google.com/site/powturbo/home/benchmark)\r
-\r
-### Related projects\r
-Independent [decoder](https://github.com/madler/brotli) implementation by Mark Adler, based entirely on format specification.\r
-\r
-JavaScript port of brotli [decoder](https://github.com/devongovett/brotli.js). Could be used directly via `npm install brotli`\r
diff --git a/BaseTools/Source/C/BrotliCompress/ReadMe.txt b/BaseTools/Source/C/BrotliCompress/ReadMe.txt
deleted file mode 100644 (file)
index 399ec38..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-It is based on the Brotli v1.0.6.\r
-Brotli was released on the website https://github.com/google/brotli.\r
diff --git a/BaseTools/Source/C/BrotliCompress/brotli b/BaseTools/Source/C/BrotliCompress/brotli
new file mode 160000 (submodule)
index 0000000..666c328
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
diff --git a/BaseTools/Source/C/BrotliCompress/common/constants.h b/BaseTools/Source/C/BrotliCompress/common/constants.h
deleted file mode 100644 (file)
index 1a29f03..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#ifndef BROTLI_COMMON_CONSTANTS_H_\r
-#define BROTLI_COMMON_CONSTANTS_H_\r
-\r
-/* Specification: 7.3. Encoding of the context map */\r
-#define BROTLI_CONTEXT_MAP_MAX_RLE 16\r
-\r
-/* Specification: 2. Compressed representation overview */\r
-#define BROTLI_MAX_NUMBER_OF_BLOCK_TYPES 256\r
-\r
-/* Specification: 3.3. Alphabet sizes: insert-and-copy length */\r
-#define BROTLI_NUM_LITERAL_SYMBOLS 256\r
-#define BROTLI_NUM_COMMAND_SYMBOLS 704\r
-#define BROTLI_NUM_BLOCK_LEN_SYMBOLS 26\r
-#define BROTLI_MAX_CONTEXT_MAP_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + \\r
-                                        BROTLI_CONTEXT_MAP_MAX_RLE)\r
-#define BROTLI_MAX_BLOCK_TYPE_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + 2)\r
-\r
-/* Specification: 3.5. Complex prefix codes */\r
-#define BROTLI_REPEAT_PREVIOUS_CODE_LENGTH 16\r
-#define BROTLI_REPEAT_ZERO_CODE_LENGTH 17\r
-#define BROTLI_CODE_LENGTH_CODES (BROTLI_REPEAT_ZERO_CODE_LENGTH + 1)\r
-/* "code length of 8 is repeated" */\r
-#define BROTLI_INITIAL_REPEATED_CODE_LENGTH 8\r
-\r
-/* "Large Window Brotli" */\r
-#define BROTLI_LARGE_MAX_DISTANCE_BITS 62U\r
-#define BROTLI_LARGE_MIN_WBITS 10\r
-#define BROTLI_LARGE_MAX_WBITS 30\r
-\r
-/* Specification: 4. Encoding of distances */\r
-#define BROTLI_NUM_DISTANCE_SHORT_CODES 16\r
-#define BROTLI_MAX_NPOSTFIX 3\r
-#define BROTLI_MAX_NDIRECT 120\r
-#define BROTLI_MAX_DISTANCE_BITS 24U\r
-#define BROTLI_DISTANCE_ALPHABET_SIZE(NPOSTFIX, NDIRECT, MAXNBITS) ( \\r
-    BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) +                    \\r
-    ((MAXNBITS) << ((NPOSTFIX) + 1)))\r
-/* BROTLI_NUM_DISTANCE_SYMBOLS == 1128 */\r
-#define BROTLI_NUM_DISTANCE_SYMBOLS \\r
-    BROTLI_DISTANCE_ALPHABET_SIZE(  \\r
-        BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_LARGE_MAX_DISTANCE_BITS)\r
-#define BROTLI_MAX_DISTANCE 0x3FFFFFC\r
-#define BROTLI_MAX_ALLOWED_DISTANCE 0x7FFFFFFC\r
-\r
-/* 7.1. Context modes and context ID lookup for literals */\r
-/* "context IDs for literals are in the range of 0..63" */\r
-#define BROTLI_LITERAL_CONTEXT_BITS 6\r
-\r
-/* 7.2. Context ID for distances */\r
-#define BROTLI_DISTANCE_CONTEXT_BITS 2\r
-\r
-/* 9.1. Format of the Stream Header */\r
-/* Number of slack bytes for window size. Don't confuse\r
-   with BROTLI_NUM_DISTANCE_SHORT_CODES. */\r
-#define BROTLI_WINDOW_GAP 16\r
-#define BROTLI_MAX_BACKWARD_LIMIT(W) (((size_t)1 << (W)) - BROTLI_WINDOW_GAP)\r
-\r
-#endif  /* BROTLI_COMMON_CONSTANTS_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/common/context.h b/BaseTools/Source/C/BrotliCompress/common/context.h
deleted file mode 100644 (file)
index 7ffc640..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Lookup table to map the previous two bytes to a context id.\r
-\r
-  There are four different context modeling modes defined here:\r
-    CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\r
-    CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\r
-    CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\r
-    CONTEXT_SIGNED: second-order context model tuned for signed integers.\r
-\r
-  If |p1| and |p2| are the previous two bytes, and |mode| is current context\r
-  mode, we calculate the context as:\r
-\r
-    context = ContextLut(mode)[p1] | ContextLut(mode)[p2 + 256].\r
-\r
-  For CONTEXT_UTF8 mode, if the previous two bytes are ASCII characters\r
-  (i.e. < 128), this will be equivalent to\r
-\r
-    context = 4 * context1(p1) + context2(p2),\r
-\r
-  where context1 is based on the previous byte in the following way:\r
-\r
-    0  : non-ASCII control\r
-    1  : \t, \n, \r\r
-    2  : space\r
-    3  : other punctuation\r
-    4  : " '\r
-    5  : %\r
-    6  : ( < [ {\r
-    7  : ) > ] }\r
-    8  : , ; :\r
-    9  : .\r
-    10 : =\r
-    11 : number\r
-    12 : upper-case vowel\r
-    13 : upper-case consonant\r
-    14 : lower-case vowel\r
-    15 : lower-case consonant\r
-\r
-  and context2 is based on the second last byte:\r
-\r
-    0 : control, space\r
-    1 : punctuation\r
-    2 : upper-case letter, number\r
-    3 : lower-case letter\r
-\r
-  If the last byte is ASCII, and the second last byte is not (in a valid UTF8\r
-  stream it will be a continuation byte, value between 128 and 191), the\r
-  context is the same as if the second last byte was an ASCII control or space.\r
-\r
-  If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\r
-  be a continuation byte and the context id is 2 or 3 depending on the LSB of\r
-  the last byte and to a lesser extent on the second last byte if it is ASCII.\r
-\r
-  If the last byte is a UTF8 continuation byte, the second last byte can be:\r
-    - continuation byte: the next byte is probably ASCII or lead byte (assuming\r
-      4-byte UTF8 characters are rare) and the context id is 0 or 1.\r
-    - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\r
-    - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\r
-\r
-  The possible value combinations of the previous two bytes, the range of\r
-  context ids and the type of the next byte is summarized in the table below:\r
-\r
-  |--------\-----------------------------------------------------------------|\r
-  |         \                         Last byte                              |\r
-  | Second   \---------------------------------------------------------------|\r
-  | last byte \    ASCII            |   cont. byte        |   lead byte      |\r
-  |            \   (0-127)          |   (128-191)         |   (192-)         |\r
-  |=============|===================|=====================|==================|\r
-  |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |\r
-  |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |\r
-  |-------------|-------------------|---------------------|------------------|\r
-  |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |\r
-  |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |\r
-  |-------------|-------------------|---------------------|------------------|\r
-  |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |\r
-  |  (192-207)  |                   |  context: 0 - 1     |                  |\r
-  |-------------|-------------------|---------------------|------------------|\r
-  |  lead byte  | not valid         |  next: cont.        |  not valid       |\r
-  |  (208-)     |                   |  context: 2 - 3     |                  |\r
-  |-------------|-------------------|---------------------|------------------|\r
-*/\r
-\r
-#ifndef BROTLI_COMMON_CONTEXT_H_\r
-#define BROTLI_COMMON_CONTEXT_H_\r
-\r
-#include <brotli/types.h>\r
-\r
-typedef enum ContextType {\r
-  CONTEXT_LSB6 = 0,\r
-  CONTEXT_MSB6 = 1,\r
-  CONTEXT_UTF8 = 2,\r
-  CONTEXT_SIGNED = 3\r
-} ContextType;\r
-\r
-/* Common context lookup table for all context modes. */\r
-static const uint8_t kContextLookup[2048] = {\r
-  /* CONTEXT_LSB6, last byte. */\r
-   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\r
-  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\r
-  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\r
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\r
-   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\r
-  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\r
-  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\r
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\r
-   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\r
-  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\r
-  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\r
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\r
-   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\r
-  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\r
-  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\r
-  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\r
-\r
-  /* CONTEXT_LSB6, second last byte, */\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-\r
-  /* CONTEXT_MSB6, last byte. */\r
-   0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,\r
-   4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,\r
-   8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11,\r
-  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\r
-  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\r
-  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\r
-  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\r
-  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\r
-  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\r
-  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\r
-  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\r
-  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\r
-  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\r
-  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\r
-  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\r
-  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\r
-\r
-  /* CONTEXT_MSB6, second last byte, */\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-\r
-  /* CONTEXT_UTF8, last byte. */\r
-  /* ASCII range. */\r
-   0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  4,  0,  0,\r
-   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\r
-   8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\r
-  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\r
-  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\r
-  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\r
-  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\r
-  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12,  0,\r
-  /* UTF8 continuation byte range. */\r
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\r
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\r
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\r
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\r
-  /* UTF8 lead byte range. */\r
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\r
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\r
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\r
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\r
-\r
-  /* CONTEXT_UTF8 second last byte. */\r
-  /* ASCII range. */\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\r
-  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\r
-  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\r
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\r
-  /* UTF8 continuation byte range. */\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  /* UTF8 lead byte range. */\r
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-\r
-  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\r
-   0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\r
-  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\r
-  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\r
-  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\r
-  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\r
-  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\r
-  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\r
-  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\r
-  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\r
-  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\r
-  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\r
-\r
-  /* CONTEXT_SIGNED, second last byte. */\r
-  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\r
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\r
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\r
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\r
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\r
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\r
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\r
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\r
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\r
-};\r
-\r
-typedef const uint8_t* ContextLut;\r
-\r
-/* typeof(MODE) == ContextType; returns ContextLut */\r
-#define BROTLI_CONTEXT_LUT(MODE) (&kContextLookup[(MODE) << 9])\r
-\r
-/* typeof(LUT) == ContextLut */\r
-#define BROTLI_CONTEXT(P1, P2, LUT) ((LUT)[P1] | ((LUT) + 256)[P2])\r
-\r
-#endif  /* BROTLI_COMMON_CONTEXT_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/common/dictionary.c b/BaseTools/Source/C/BrotliCompress/common/dictionary.c
deleted file mode 100644 (file)
index 7fd0761..0000000
+++ /dev/null
@@ -1,5905 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#include "./dictionary.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#ifndef BROTLI_EXTERNAL_DICTIONARY_DATA\r
-static const uint8_t kBrotliDictionaryData[] =\r
-{\r
-116,105,109,101,100,111,119,110,108,105,102,101,108,101,102,116,98,97,99,107,99,\r
-111,100,101,100,97,116,97,115,104,111,119,111,110,108,121,115,105,116,101,99,105\r
-,116,121,111,112,101,110,106,117,115,116,108,105,107,101,102,114,101,101,119,111\r
-,114,107,116,101,120,116,121,101,97,114,111,118,101,114,98,111,100,121,108,111,\r
-118,101,102,111,114,109,98,111,111,107,112,108,97,121,108,105,118,101,108,105,\r
-110,101,104,101,108,112,104,111,109,101,115,105,100,101,109,111,114,101,119,111,\r
-114,100,108,111,110,103,116,104,101,109,118,105,101,119,102,105,110,100,112,97,\r
-103,101,100,97,121,115,102,117,108,108,104,101,97,100,116,101,114,109,101,97,99,\r
-104,97,114,101,97,102,114,111,109,116,114,117,101,109,97,114,107,97,98,108,101,\r
-117,112,111,110,104,105,103,104,100,97,116,101,108,97,110,100,110,101,119,115,\r
-101,118,101,110,110,101,120,116,99,97,115,101,98,111,116,104,112,111,115,116,117\r
-,115,101,100,109,97,100,101,104,97,110,100,104,101,114,101,119,104,97,116,110,97\r
-,109,101,76,105,110,107,98,108,111,103,115,105,122,101,98,97,115,101,104,101,108\r
-,100,109,97,107,101,109,97,105,110,117,115,101,114,39,41,32,43,104,111,108,100,\r
-101,110,100,115,119,105,116,104,78,101,119,115,114,101,97,100,119,101,114,101,\r
-115,105,103,110,116,97,107,101,104,97,118,101,103,97,109,101,115,101,101,110,99,\r
-97,108,108,112,97,116,104,119,101,108,108,112,108,117,115,109,101,110,117,102,\r
-105,108,109,112,97,114,116,106,111,105,110,116,104,105,115,108,105,115,116,103,\r
-111,111,100,110,101,101,100,119,97,121,115,119,101,115,116,106,111,98,115,109,\r
-105,110,100,97,108,115,111,108,111,103,111,114,105,99,104,117,115,101,115,108,97\r
-,115,116,116,101,97,109,97,114,109,121,102,111,111,100,107,105,110,103,119,105,\r
-108,108,101,97,115,116,119,97,114,100,98,101,115,116,102,105,114,101,80,97,103,\r
-101,107,110,111,119,97,119,97,121,46,112,110,103,109,111,118,101,116,104,97,110,\r
-108,111,97,100,103,105,118,101,115,101,108,102,110,111,116,101,109,117,99,104,\r
-102,101,101,100,109,97,110,121,114,111,99,107,105,99,111,110,111,110,99,101,108,\r
-111,111,107,104,105,100,101,100,105,101,100,72,111,109,101,114,117,108,101,104,\r
-111,115,116,97,106,97,120,105,110,102,111,99,108,117,98,108,97,119,115,108,101,\r
-115,115,104,97,108,102,115,111,109,101,115,117,99,104,122,111,110,101,49,48,48,\r
-37,111,110,101,115,99,97,114,101,84,105,109,101,114,97,99,101,98,108,117,101,102\r
-,111,117,114,119,101,101,107,102,97,99,101,104,111,112,101,103,97,118,101,104,97\r
-,114,100,108,111,115,116,119,104,101,110,112,97,114,107,107,101,112,116,112,97,\r
-115,115,115,104,105,112,114,111,111,109,72,84,77,76,112,108,97,110,84,121,112,\r
-101,100,111,110,101,115,97,118,101,107,101,101,112,102,108,97,103,108,105,110,\r
-107,115,111,108,100,102,105,118,101,116,111,111,107,114,97,116,101,116,111,119,\r
-110,106,117,109,112,116,104,117,115,100,97,114,107,99,97,114,100,102,105,108,101\r
-,102,101,97,114,115,116,97,121,107,105,108,108,116,104,97,116,102,97,108,108,97,\r
-117,116,111,101,118,101,114,46,99,111,109,116,97,108,107,115,104,111,112,118,111\r
-,116,101,100,101,101,112,109,111,100,101,114,101,115,116,116,117,114,110,98,111,\r
-114,110,98,97,110,100,102,101,108,108,114,111,115,101,117,114,108,40,115,107,105\r
-,110,114,111,108,101,99,111,109,101,97,99,116,115,97,103,101,115,109,101,101,116\r
-,103,111,108,100,46,106,112,103,105,116,101,109,118,97,114,121,102,101,108,116,\r
-116,104,101,110,115,101,110,100,100,114,111,112,86,105,101,119,99,111,112,121,49\r
-,46,48,34,60,47,97,62,115,116,111,112,101,108,115,101,108,105,101,115,116,111,\r
-117,114,112,97,99,107,46,103,105,102,112,97,115,116,99,115,115,63,103,114,97,121\r
-,109,101,97,110,38,103,116,59,114,105,100,101,115,104,111,116,108,97,116,101,115\r
-,97,105,100,114,111,97,100,118,97,114,32,102,101,101,108,106,111,104,110,114,105\r
-,99,107,112,111,114,116,102,97,115,116,39,85,65,45,100,101,97,100,60,47,98,62,\r
-112,111,111,114,98,105,108,108,116,121,112,101,85,46,83,46,119,111,111,100,109,\r
-117,115,116,50,112,120,59,73,110,102,111,114,97,110,107,119,105,100,101,119,97,\r
-110,116,119,97,108,108,108,101,97,100,91,48,93,59,112,97,117,108,119,97,118,101,\r
-115,117,114,101,36,40,39,35,119,97,105,116,109,97,115,115,97,114,109,115,103,111\r
-,101,115,103,97,105,110,108,97,110,103,112,97,105,100,33,45,45,32,108,111,99,107\r
-,117,110,105,116,114,111,111,116,119,97,108,107,102,105,114,109,119,105,102,101,\r
-120,109,108,34,115,111,110,103,116,101,115,116,50,48,112,120,107,105,110,100,114\r
-,111,119,115,116,111,111,108,102,111,110,116,109,97,105,108,115,97,102,101,115,\r
-116,97,114,109,97,112,115,99,111,114,101,114,97,105,110,102,108,111,119,98,97,98\r
-,121,115,112,97,110,115,97,121,115,52,112,120,59,54,112,120,59,97,114,116,115,\r
-102,111,111,116,114,101,97,108,119,105,107,105,104,101,97,116,115,116,101,112,\r
-116,114,105,112,111,114,103,47,108,97,107,101,119,101,97,107,116,111,108,100,70,\r
-111,114,109,99,97,115,116,102,97,110,115,98,97,110,107,118,101,114,121,114,117,\r
-110,115,106,117,108,121,116,97,115,107,49,112,120,59,103,111,97,108,103,114,101,\r
-119,115,108,111,119,101,100,103,101,105,100,61,34,115,101,116,115,53,112,120,59,\r
-46,106,115,63,52,48,112,120,105,102,32,40,115,111,111,110,115,101,97,116,110,111\r
-,110,101,116,117,98,101,122,101,114,111,115,101,110,116,114,101,101,100,102,97,\r
-99,116,105,110,116,111,103,105,102,116,104,97,114,109,49,56,112,120,99,97,109,\r
-101,104,105,108,108,98,111,108,100,122,111,111,109,118,111,105,100,101,97,115,\r
-121,114,105,110,103,102,105,108,108,112,101,97,107,105,110,105,116,99,111,115,\r
-116,51,112,120,59,106,97,99,107,116,97,103,115,98,105,116,115,114,111,108,108,\r
-101,100,105,116,107,110,101,119,110,101,97,114,60,33,45,45,103,114,111,119,74,83\r
-,79,78,100,117,116,121,78,97,109,101,115,97,108,101,121,111,117,32,108,111,116,\r
-115,112,97,105,110,106,97,122,122,99,111,108,100,101,121,101,115,102,105,115,104\r
-,119,119,119,46,114,105,115,107,116,97,98,115,112,114,101,118,49,48,112,120,114,\r
-105,115,101,50,53,112,120,66,108,117,101,100,105,110,103,51,48,48,44,98,97,108,\r
-108,102,111,114,100,101,97,114,110,119,105,108,100,98,111,120,46,102,97,105,114,\r
-108,97,99,107,118,101,114,115,112,97,105,114,106,117,110,101,116,101,99,104,105,\r
-102,40,33,112,105,99,107,101,118,105,108,36,40,34,35,119,97,114,109,108,111,114,\r
-100,100,111,101,115,112,117,108,108,44,48,48,48,105,100,101,97,100,114,97,119,\r
-104,117,103,101,115,112,111,116,102,117,110,100,98,117,114,110,104,114,101,102,\r
-99,101,108,108,107,101,121,115,116,105,99,107,104,111,117,114,108,111,115,115,\r
-102,117,101,108,49,50,112,120,115,117,105,116,100,101,97,108,82,83,83,34,97,103,\r
-101,100,103,114,101,121,71,69,84,34,101,97,115,101,97,105,109,115,103,105,114,\r
-108,97,105,100,115,56,112,120,59,110,97,118,121,103,114,105,100,116,105,112,115,\r
-35,57,57,57,119,97,114,115,108,97,100,121,99,97,114,115,41,59,32,125,112,104,112\r
-,63,104,101,108,108,116,97,108,108,119,104,111,109,122,104,58,229,42,47,13,10,32\r
-,49,48,48,104,97,108,108,46,10,10,65,55,112,120,59,112,117,115,104,99,104,97,116\r
-,48,112,120,59,99,114,101,119,42,47,60,47,104,97,115,104,55,53,112,120,102,108,\r
-97,116,114,97,114,101,32,38,38,32,116,101,108,108,99,97,109,112,111,110,116,111,\r
-108,97,105,100,109,105,115,115,115,107,105,112,116,101,110,116,102,105,110,101,\r
-109,97,108,101,103,101,116,115,112,108,111,116,52,48,48,44,13,10,13,10,99,111,\r
-111,108,102,101,101,116,46,112,104,112,60,98,114,62,101,114,105,99,109,111,115,\r
-116,103,117,105,100,98,101,108,108,100,101,115,99,104,97,105,114,109,97,116,104,\r
-97,116,111,109,47,105,109,103,38,35,56,50,108,117,99,107,99,101,110,116,48,48,48\r
-,59,116,105,110,121,103,111,110,101,104,116,109,108,115,101,108,108,100,114,117,\r
-103,70,82,69,69,110,111,100,101,110,105,99,107,63,105,100,61,108,111,115,101,110\r
-,117,108,108,118,97,115,116,119,105,110,100,82,83,83,32,119,101,97,114,114,101,\r
-108,121,98,101,101,110,115,97,109,101,100,117,107,101,110,97,115,97,99,97,112,\r
-101,119,105,115,104,103,117,108,102,84,50,51,58,104,105,116,115,115,108,111,116,\r
-103,97,116,101,107,105,99,107,98,108,117,114,116,104,101,121,49,53,112,120,39,39\r
-,41,59,41,59,34,62,109,115,105,101,119,105,110,115,98,105,114,100,115,111,114,\r
-116,98,101,116,97,115,101,101,107,84,49,56,58,111,114,100,115,116,114,101,101,\r
-109,97,108,108,54,48,112,120,102,97,114,109,226,128,153,115,98,111,121,115,91,48\r
-,93,46,39,41,59,34,80,79,83,84,98,101,97,114,107,105,100,115,41,59,125,125,109,\r
-97,114,121,116,101,110,100,40,85,75,41,113,117,97,100,122,104,58,230,45,115,105,\r
-122,45,45,45,45,112,114,111,112,39,41,59,13,108,105,102,116,84,49,57,58,118,105,\r
-99,101,97,110,100,121,100,101,98,116,62,82,83,83,112,111,111,108,110,101,99,107,\r
-98,108,111,119,84,49,54,58,100,111,111,114,101,118,97,108,84,49,55,58,108,101,\r
-116,115,102,97,105,108,111,114,97,108,112,111,108,108,110,111,118,97,99,111,108,\r
-115,103,101,110,101,32,226,128,148,115,111,102,116,114,111,109,101,116,105,108,\r
-108,114,111,115,115,60,104,51,62,112,111,117,114,102,97,100,101,112,105,110,107,\r
-60,116,114,62,109,105,110,105,41,124,33,40,109,105,110,101,122,104,58,232,98,97,\r
-114,115,104,101,97,114,48,48,41,59,109,105,108,107,32,45,45,62,105,114,111,110,\r
-102,114,101,100,100,105,115,107,119,101,110,116,115,111,105,108,112,117,116,115,\r
-47,106,115,47,104,111,108,121,84,50,50,58,73,83,66,78,84,50,48,58,97,100,97,109,\r
-115,101,101,115,60,104,50,62,106,115,111,110,39,44,32,39,99,111,110,116,84,50,49\r
-,58,32,82,83,83,108,111,111,112,97,115,105,97,109,111,111,110,60,47,112,62,115,\r
-111,117,108,76,73,78,69,102,111,114,116,99,97,114,116,84,49,52,58,60,104,49,62,\r
-56,48,112,120,33,45,45,60,57,112,120,59,84,48,52,58,109,105,107,101,58,52,54,90,\r
-110,105,99,101,105,110,99,104,89,111,114,107,114,105,99,101,122,104,58,228,39,41\r
-,41,59,112,117,114,101,109,97,103,101,112,97,114,97,116,111,110,101,98,111,110,\r
-100,58,51,55,90,95,111,102,95,39,93,41,59,48,48,48,44,122,104,58,231,116,97,110,\r
-107,121,97,114,100,98,111,119,108,98,117,115,104,58,53,54,90,74,97,118,97,51,48,\r
-112,120,10,124,125,10,37,67,51,37,58,51,52,90,106,101,102,102,69,88,80,73,99,97,\r
-115,104,118,105,115,97,103,111,108,102,115,110,111,119,122,104,58,233,113,117,\r
-101,114,46,99,115,115,115,105,99,107,109,101,97,116,109,105,110,46,98,105,110,\r
-100,100,101,108,108,104,105,114,101,112,105,99,115,114,101,110,116,58,51,54,90,\r
-72,84,84,80,45,50,48,49,102,111,116,111,119,111,108,102,69,78,68,32,120,98,111,\r
-120,58,53,52,90,66,79,68,89,100,105,99,107,59,10,125,10,101,120,105,116,58,51,53\r
-,90,118,97,114,115,98,101,97,116,39,125,41,59,100,105,101,116,57,57,57,59,97,110\r
-,110,101,125,125,60,47,91,105,93,46,76,97,110,103,107,109,194,178,119,105,114,\r
-101,116,111,121,115,97,100,100,115,115,101,97,108,97,108,101,120,59,10,9,125,101\r
-,99,104,111,110,105,110,101,46,111,114,103,48,48,53,41,116,111,110,121,106,101,\r
-119,115,115,97,110,100,108,101,103,115,114,111,111,102,48,48,48,41,32,50,48,48,\r
-119,105,110,101,103,101,97,114,100,111,103,115,98,111,111,116,103,97,114,121,99,\r
-117,116,115,116,121,108,101,116,101,109,112,116,105,111,110,46,120,109,108,99,\r
-111,99,107,103,97,110,103,36,40,39,46,53,48,112,120,80,104,46,68,109,105,115,99,\r
-97,108,97,110,108,111,97,110,100,101,115,107,109,105,108,101,114,121,97,110,117,\r
-110,105,120,100,105,115,99,41,59,125,10,100,117,115,116,99,108,105,112,41,46,10,\r
-10,55,48,112,120,45,50,48,48,68,86,68,115,55,93,62,60,116,97,112,101,100,101,109\r
-,111,105,43,43,41,119,97,103,101,101,117,114,111,112,104,105,108,111,112,116,115\r
-,104,111,108,101,70,65,81,115,97,115,105,110,45,50,54,84,108,97,98,115,112,101,\r
-116,115,85,82,76,32,98,117,108,107,99,111,111,107,59,125,13,10,72,69,65,68,91,48\r
-,93,41,97,98,98,114,106,117,97,110,40,49,57,56,108,101,115,104,116,119,105,110,\r
-60,47,105,62,115,111,110,121,103,117,121,115,102,117,99,107,112,105,112,101,124,\r
-45,10,33,48,48,50,41,110,100,111,119,91,49,93,59,91,93,59,10,76,111,103,32,115,\r
-97,108,116,13,10,9,9,98,97,110,103,116,114,105,109,98,97,116,104,41,123,13,10,48\r
-,48,112,120,10,125,41,59,107,111,58,236,102,101,101,115,97,100,62,13,115,58,47,\r
-47,32,91,93,59,116,111,108,108,112,108,117,103,40,41,123,10,123,13,10,32,46,106,\r
-115,39,50,48,48,112,100,117,97,108,98,111,97,116,46,74,80,71,41,59,10,125,113,\r
-117,111,116,41,59,10,10,39,41,59,10,13,10,125,13,50,48,49,52,50,48,49,53,50,48,\r
-49,54,50,48,49,55,50,48,49,56,50,48,49,57,50,48,50,48,50,48,50,49,50,48,50,50,50\r
-,48,50,51,50,48,50,52,50,48,50,53,50,48,50,54,50,48,50,55,50,48,50,56,50,48,50,\r
-57,50,48,51,48,50,48,51,49,50,48,51,50,50,48,51,51,50,48,51,52,50,48,51,53,50,48\r
-,51,54,50,48,51,55,50,48,49,51,50,48,49,50,50,48,49,49,50,48,49,48,50,48,48,57,\r
-50,48,48,56,50,48,48,55,50,48,48,54,50,48,48,53,50,48,48,52,50,48,48,51,50,48,48\r
-,50,50,48,48,49,50,48,48,48,49,57,57,57,49,57,57,56,49,57,57,55,49,57,57,54,49,\r
-57,57,53,49,57,57,52,49,57,57,51,49,57,57,50,49,57,57,49,49,57,57,48,49,57,56,57\r
-,49,57,56,56,49,57,56,55,49,57,56,54,49,57,56,53,49,57,56,52,49,57,56,51,49,57,\r
-56,50,49,57,56,49,49,57,56,48,49,57,55,57,49,57,55,56,49,57,55,55,49,57,55,54,49\r
-,57,55,53,49,57,55,52,49,57,55,51,49,57,55,50,49,57,55,49,49,57,55,48,49,57,54,\r
-57,49,57,54,56,49,57,54,55,49,57,54,54,49,57,54,53,49,57,54,52,49,57,54,51,49,57\r
-,54,50,49,57,54,49,49,57,54,48,49,57,53,57,49,57,53,56,49,57,53,55,49,57,53,54,\r
-49,57,53,53,49,57,53,52,49,57,53,51,49,57,53,50,49,57,53,49,49,57,53,48,49,48,48\r
-,48,49,48,50,52,49,51,57,52,48,48,48,48,57,57,57,57,99,111,109,111,109,195,161,\r
-115,101,115,116,101,101,115,116,97,112,101,114,111,116,111,100,111,104,97,99,101\r
-,99,97,100,97,97,195,177,111,98,105,101,110,100,195,173,97,97,115,195,173,118,\r
-105,100,97,99,97,115,111,111,116,114,111,102,111,114,111,115,111,108,111,111,116\r
-,114,97,99,117,97,108,100,105,106,111,115,105,100,111,103,114,97,110,116,105,112\r
-,111,116,101,109,97,100,101,98,101,97,108,103,111,113,117,195,169,101,115,116,\r
-111,110,97,100,97,116,114,101,115,112,111,99,111,99,97,115,97,98,97,106,111,116,\r
-111,100,97,115,105,110,111,97,103,117,97,112,117,101,115,117,110,111,115,97,110,\r
-116,101,100,105,99,101,108,117,105,115,101,108,108,97,109,97,121,111,122,111,110\r
-,97,97,109,111,114,112,105,115,111,111,98,114,97,99,108,105,99,101,108,108,111,\r
-100,105,111,115,104,111,114,97,99,97,115,105,208,183,208,176,208,189,208,176,208\r
-,190,208,188,209,128,208,176,209,128,209,131,209,130,208,176,208,189,208,181,208\r
-,191,208,190,208,190,209,130,208,184,208,183,208,189,208,190,208,180,208,190,209\r
-,130,208,190,208,182,208,181,208,190,208,189,208,184,209,133,208,157,208,176,208\r
-,181,208,181,208,177,209,139,208,188,209,139,208,146,209,139,209,129,208,190,208\r
-,178,209,139,208,178,208,190,208,157,208,190,208,190,208,177,208,159,208,190,208\r
-,187,208,184,208,189,208,184,208,160,208,164,208,157,208,181,208,156,209,139,209\r
-,130,209,139,208,158,208,189,208,184,208,188,208,180,208,176,208,151,208,176,208\r
-,148,208,176,208,157,209,131,208,158,208,177,209,130,208,181,208,152,208,183,208\r
-,181,208,185,208,189,209,131,208,188,208,188,208,162,209,139,209,131,208,182,217\r
-,129,217,138,216,163,217,134,217,133,216,167,217,133,216,185,217,131,217,132,216\r
-,163,217,136,216,177,216,175,217,138,216,167,217,129,217,137,217,135,217,136,217\r
-,132,217,133,217,132,217,131,216,167,217,136,217,132,217,135,216,168,216,179,216\r
-,167,217,132,216,165,217,134,217,135,217,138,216,163,217,138,217,130,216,175,217\r
-,135,217,132,216,171,217,133,216,168,217,135,217,132,217,136,217,132,217,138,216\r
-,168,217,132,216,167,217,138,216,168,217,131,216,180,217,138,216,167,217,133,216\r
-,163,217,133,217,134,216,170,216,168,217,138,217,132,217,134,216,173,216,168,217\r
-,135,217,133,217,133,216,180,217,136,216,180,102,105,114,115,116,118,105,100,101\r
-,111,108,105,103,104,116,119,111,114,108,100,109,101,100,105,97,119,104,105,116,\r
-101,99,108,111,115,101,98,108,97,99,107,114,105,103,104,116,115,109,97,108,108,\r
-98,111,111,107,115,112,108,97,99,101,109,117,115,105,99,102,105,101,108,100,111,\r
-114,100,101,114,112,111,105,110,116,118,97,108,117,101,108,101,118,101,108,116,\r
-97,98,108,101,98,111,97,114,100,104,111,117,115,101,103,114,111,117,112,119,111,\r
-114,107,115,121,101,97,114,115,115,116,97,116,101,116,111,100,97,121,119,97,116,\r
-101,114,115,116,97,114,116,115,116,121,108,101,100,101,97,116,104,112,111,119,\r
-101,114,112,104,111,110,101,110,105,103,104,116,101,114,114,111,114,105,110,112,\r
-117,116,97,98,111,117,116,116,101,114,109,115,116,105,116,108,101,116,111,111,\r
-108,115,101,118,101,110,116,108,111,99,97,108,116,105,109,101,115,108,97,114,103\r
-,101,119,111,114,100,115,103,97,109,101,115,115,104,111,114,116,115,112,97,99,\r
-101,102,111,99,117,115,99,108,101,97,114,109,111,100,101,108,98,108,111,99,107,\r
-103,117,105,100,101,114,97,100,105,111,115,104,97,114,101,119,111,109,101,110,97\r
-,103,97,105,110,109,111,110,101,121,105,109,97,103,101,110,97,109,101,115,121,\r
-111,117,110,103,108,105,110,101,115,108,97,116,101,114,99,111,108,111,114,103,\r
-114,101,101,110,102,114,111,110,116,38,97,109,112,59,119,97,116,99,104,102,111,\r
-114,99,101,112,114,105,99,101,114,117,108,101,115,98,101,103,105,110,97,102,116,\r
-101,114,118,105,115,105,116,105,115,115,117,101,97,114,101,97,115,98,101,108,111\r
-,119,105,110,100,101,120,116,111,116,97,108,104,111,117,114,115,108,97,98,101,\r
-108,112,114,105,110,116,112,114,101,115,115,98,117,105,108,116,108,105,110,107,\r
-115,115,112,101,101,100,115,116,117,100,121,116,114,97,100,101,102,111,117,110,\r
-100,115,101,110,115,101,117,110,100,101,114,115,104,111,119,110,102,111,114,109,\r
-115,114,97,110,103,101,97,100,100,101,100,115,116,105,108,108,109,111,118,101,\r
-100,116,97,107,101,110,97,98,111,118,101,102,108,97,115,104,102,105,120,101,100,\r
-111,102,116,101,110,111,116,104,101,114,118,105,101,119,115,99,104,101,99,107,\r
-108,101,103,97,108,114,105,118,101,114,105,116,101,109,115,113,117,105,99,107,\r
-115,104,97,112,101,104,117,109,97,110,101,120,105,115,116,103,111,105,110,103,\r
-109,111,118,105,101,116,104,105,114,100,98,97,115,105,99,112,101,97,99,101,115,\r
-116,97,103,101,119,105,100,116,104,108,111,103,105,110,105,100,101,97,115,119,\r
-114,111,116,101,112,97,103,101,115,117,115,101,114,115,100,114,105,118,101,115,\r
-116,111,114,101,98,114,101,97,107,115,111,117,116,104,118,111,105,99,101,115,105\r
-,116,101,115,109,111,110,116,104,119,104,101,114,101,98,117,105,108,100,119,104,\r
-105,99,104,101,97,114,116,104,102,111,114,117,109,116,104,114,101,101,115,112,\r
-111,114,116,112,97,114,116,121,67,108,105,99,107,108,111,119,101,114,108,105,118\r
-,101,115,99,108,97,115,115,108,97,121,101,114,101,110,116,114,121,115,116,111,\r
-114,121,117,115,97,103,101,115,111,117,110,100,99,111,117,114,116,121,111,117,\r
-114,32,98,105,114,116,104,112,111,112,117,112,116,121,112,101,115,97,112,112,108\r
-,121,73,109,97,103,101,98,101,105,110,103,117,112,112,101,114,110,111,116,101,\r
-115,101,118,101,114,121,115,104,111,119,115,109,101,97,110,115,101,120,116,114,\r
-97,109,97,116,99,104,116,114,97,99,107,107,110,111,119,110,101,97,114,108,121,98\r
-,101,103,97,110,115,117,112,101,114,112,97,112,101,114,110,111,114,116,104,108,\r
-101,97,114,110,103,105,118,101,110,110,97,109,101,100,101,110,100,101,100,84,101\r
-,114,109,115,112,97,114,116,115,71,114,111,117,112,98,114,97,110,100,117,115,105\r
-,110,103,119,111,109,97,110,102,97,108,115,101,114,101,97,100,121,97,117,100,105\r
-,111,116,97,107,101,115,119,104,105,108,101,46,99,111,109,47,108,105,118,101,100\r
-,99,97,115,101,115,100,97,105,108,121,99,104,105,108,100,103,114,101,97,116,106,\r
-117,100,103,101,116,104,111,115,101,117,110,105,116,115,110,101,118,101,114,98,\r
-114,111,97,100,99,111,97,115,116,99,111,118,101,114,97,112,112,108,101,102,105,\r
-108,101,115,99,121,99,108,101,115,99,101,110,101,112,108,97,110,115,99,108,105,\r
-99,107,119,114,105,116,101,113,117,101,101,110,112,105,101,99,101,101,109,97,105\r
-,108,102,114,97,109,101,111,108,100,101,114,112,104,111,116,111,108,105,109,105,\r
-116,99,97,99,104,101,99,105,118,105,108,115,99,97,108,101,101,110,116,101,114,\r
-116,104,101,109,101,116,104,101,114,101,116,111,117,99,104,98,111,117,110,100,\r
-114,111,121,97,108,97,115,107,101,100,119,104,111,108,101,115,105,110,99,101,115\r
-,116,111,99,107,32,110,97,109,101,102,97,105,116,104,104,101,97,114,116,101,109,\r
-112,116,121,111,102,102,101,114,115,99,111,112,101,111,119,110,101,100,109,105,\r
-103,104,116,97,108,98,117,109,116,104,105,110,107,98,108,111,111,100,97,114,114,\r
-97,121,109,97,106,111,114,116,114,117,115,116,99,97,110,111,110,117,110,105,111,\r
-110,99,111,117,110,116,118,97,108,105,100,115,116,111,110,101,83,116,121,108,101\r
-,76,111,103,105,110,104,97,112,112,121,111,99,99,117,114,108,101,102,116,58,102,\r
-114,101,115,104,113,117,105,116,101,102,105,108,109,115,103,114,97,100,101,110,\r
-101,101,100,115,117,114,98,97,110,102,105,103,104,116,98,97,115,105,115,104,111,\r
-118,101,114,97,117,116,111,59,114,111,117,116,101,46,104,116,109,108,109,105,120\r
-,101,100,102,105,110,97,108,89,111,117,114,32,115,108,105,100,101,116,111,112,\r
-105,99,98,114,111,119,110,97,108,111,110,101,100,114,97,119,110,115,112,108,105,\r
-116,114,101,97,99,104,82,105,103,104,116,100,97,116,101,115,109,97,114,99,104,\r
-113,117,111,116,101,103,111,111,100,115,76,105,110,107,115,100,111,117,98,116,97\r
-,115,121,110,99,116,104,117,109,98,97,108,108,111,119,99,104,105,101,102,121,111\r
-,117,116,104,110,111,118,101,108,49,48,112,120,59,115,101,114,118,101,117,110,\r
-116,105,108,104,97,110,100,115,67,104,101,99,107,83,112,97,99,101,113,117,101,\r
-114,121,106,97,109,101,115,101,113,117,97,108,116,119,105,99,101,48,44,48,48,48,\r
-83,116,97,114,116,112,97,110,101,108,115,111,110,103,115,114,111,117,110,100,101\r
-,105,103,104,116,115,104,105,102,116,119,111,114,116,104,112,111,115,116,115,108\r
-,101,97,100,115,119,101,101,107,115,97,118,111,105,100,116,104,101,115,101,109,\r
-105,108,101,115,112,108,97,110,101,115,109,97,114,116,97,108,112,104,97,112,108,\r
-97,110,116,109,97,114,107,115,114,97,116,101,115,112,108,97,121,115,99,108,97,\r
-105,109,115,97,108,101,115,116,101,120,116,115,115,116,97,114,115,119,114,111,\r
-110,103,60,47,104,51,62,116,104,105,110,103,46,111,114,103,47,109,117,108,116,\r
-105,104,101,97,114,100,80,111,119,101,114,115,116,97,110,100,116,111,107,101,110\r
-,115,111,108,105,100,40,116,104,105,115,98,114,105,110,103,115,104,105,112,115,\r
-115,116,97,102,102,116,114,105,101,100,99,97,108,108,115,102,117,108,108,121,102\r
-,97,99,116,115,97,103,101,110,116,84,104,105,115,32,47,47,45,45,62,97,100,109,\r
-105,110,101,103,121,112,116,69,118,101,110,116,49,53,112,120,59,69,109,97,105,\r
-108,116,114,117,101,34,99,114,111,115,115,115,112,101,110,116,98,108,111,103,115\r
-,98,111,120,34,62,110,111,116,101,100,108,101,97,118,101,99,104,105,110,97,115,\r
-105,122,101,115,103,117,101,115,116,60,47,104,52,62,114,111,98,111,116,104,101,\r
-97,118,121,116,114,117,101,44,115,101,118,101,110,103,114,97,110,100,99,114,105,\r
-109,101,115,105,103,110,115,97,119,97,114,101,100,97,110,99,101,112,104,97,115,\r
-101,62,60,33,45,45,101,110,95,85,83,38,35,51,57,59,50,48,48,112,120,95,110,97,\r
-109,101,108,97,116,105,110,101,110,106,111,121,97,106,97,120,46,97,116,105,111,\r
-110,115,109,105,116,104,85,46,83,46,32,104,111,108,100,115,112,101,116,101,114,\r
-105,110,100,105,97,110,97,118,34,62,99,104,97,105,110,115,99,111,114,101,99,111,\r
-109,101,115,100,111,105,110,103,112,114,105,111,114,83,104,97,114,101,49,57,57,\r
-48,115,114,111,109,97,110,108,105,115,116,115,106,97,112,97,110,102,97,108,108,\r
-115,116,114,105,97,108,111,119,110,101,114,97,103,114,101,101,60,47,104,50,62,97\r
-,98,117,115,101,97,108,101,114,116,111,112,101,114,97,34,45,47,47,87,99,97,114,\r
-100,115,104,105,108,108,115,116,101,97,109,115,80,104,111,116,111,116,114,117,\r
-116,104,99,108,101,97,110,46,112,104,112,63,115,97,105,110,116,109,101,116,97,\r
-108,108,111,117,105,115,109,101,97,110,116,112,114,111,111,102,98,114,105,101,\r
-102,114,111,119,34,62,103,101,110,114,101,116,114,117,99,107,108,111,111,107,115\r
-,86,97,108,117,101,70,114,97,109,101,46,110,101,116,47,45,45,62,10,60,116,114,\r
-121,32,123,10,118,97,114,32,109,97,107,101,115,99,111,115,116,115,112,108,97,105\r
-,110,97,100,117,108,116,113,117,101,115,116,116,114,97,105,110,108,97,98,111,114\r
-,104,101,108,112,115,99,97,117,115,101,109,97,103,105,99,109,111,116,111,114,116\r
-,104,101,105,114,50,53,48,112,120,108,101,97,115,116,115,116,101,112,115,67,111,\r
-117,110,116,99,111,117,108,100,103,108,97,115,115,115,105,100,101,115,102,117,\r
-110,100,115,104,111,116,101,108,97,119,97,114,100,109,111,117,116,104,109,111,\r
-118,101,115,112,97,114,105,115,103,105,118,101,115,100,117,116,99,104,116,101,\r
-120,97,115,102,114,117,105,116,110,117,108,108,44,124,124,91,93,59,116,111,112,\r
-34,62,10,60,33,45,45,80,79,83,84,34,111,99,101,97,110,60,98,114,47,62,102,108,\r
-111,111,114,115,112,101,97,107,100,101,112,116,104,32,115,105,122,101,98,97,110,\r
-107,115,99,97,116,99,104,99,104,97,114,116,50,48,112,120,59,97,108,105,103,110,\r
-100,101,97,108,115,119,111,117,108,100,53,48,112,120,59,117,114,108,61,34,112,97\r
-,114,107,115,109,111,117,115,101,77,111,115,116,32,46,46,46,60,47,97,109,111,110\r
-,103,98,114,97,105,110,98,111,100,121,32,110,111,110,101,59,98,97,115,101,100,99\r
-,97,114,114,121,100,114,97,102,116,114,101,102,101,114,112,97,103,101,95,104,111\r
-,109,101,46,109,101,116,101,114,100,101,108,97,121,100,114,101,97,109,112,114,\r
-111,118,101,106,111,105,110,116,60,47,116,114,62,100,114,117,103,115,60,33,45,45\r
-,32,97,112,114,105,108,105,100,101,97,108,97,108,108,101,110,101,120,97,99,116,\r
-102,111,114,116,104,99,111,100,101,115,108,111,103,105,99,86,105,101,119,32,115,\r
-101,101,109,115,98,108,97,110,107,112,111,114,116,115,32,40,50,48,48,115,97,118,\r
-101,100,95,108,105,110,107,103,111,97,108,115,103,114,97,110,116,103,114,101,101\r
-,107,104,111,109,101,115,114,105,110,103,115,114,97,116,101,100,51,48,112,120,59\r
-,119,104,111,115,101,112,97,114,115,101,40,41,59,34,32,66,108,111,99,107,108,105\r
-,110,117,120,106,111,110,101,115,112,105,120,101,108,39,41,59,34,62,41,59,105,\r
-102,40,45,108,101,102,116,100,97,118,105,100,104,111,114,115,101,70,111,99,117,\r
-115,114,97,105,115,101,98,111,120,101,115,84,114,97,99,107,101,109,101,110,116,\r
-60,47,101,109,62,98,97,114,34,62,46,115,114,99,61,116,111,119,101,114,97,108,116\r
-,61,34,99,97,98,108,101,104,101,110,114,121,50,52,112,120,59,115,101,116,117,112\r
-,105,116,97,108,121,115,104,97,114,112,109,105,110,111,114,116,97,115,116,101,\r
-119,97,110,116,115,116,104,105,115,46,114,101,115,101,116,119,104,101,101,108,\r
-103,105,114,108,115,47,99,115,115,47,49,48,48,37,59,99,108,117,98,115,115,116,\r
-117,102,102,98,105,98,108,101,118,111,116,101,115,32,49,48,48,48,107,111,114,101\r
-,97,125,41,59,13,10,98,97,110,100,115,113,117,101,117,101,61,32,123,125,59,56,48\r
-,112,120,59,99,107,105,110,103,123,13,10,9,9,97,104,101,97,100,99,108,111,99,107\r
-,105,114,105,115,104,108,105,107,101,32,114,97,116,105,111,115,116,97,116,115,70\r
-,111,114,109,34,121,97,104,111,111,41,91,48,93,59,65,98,111,117,116,102,105,110,\r
-100,115,60,47,104,49,62,100,101,98,117,103,116,97,115,107,115,85,82,76,32,61,99,\r
-101,108,108,115,125,41,40,41,59,49,50,112,120,59,112,114,105,109,101,116,101,108\r
-,108,115,116,117,114,110,115,48,120,54,48,48,46,106,112,103,34,115,112,97,105,\r
-110,98,101,97,99,104,116,97,120,101,115,109,105,99,114,111,97,110,103,101,108,45\r
-,45,62,60,47,103,105,102,116,115,115,116,101,118,101,45,108,105,110,107,98,111,\r
-100,121,46,125,41,59,10,9,109,111,117,110,116,32,40,49,57,57,70,65,81,60,47,114,\r
-111,103,101,114,102,114,97,110,107,67,108,97,115,115,50,56,112,120,59,102,101,\r
-101,100,115,60,104,49,62,60,115,99,111,116,116,116,101,115,116,115,50,50,112,120\r
-,59,100,114,105,110,107,41,32,124,124,32,108,101,119,105,115,115,104,97,108,108,\r
-35,48,51,57,59,32,102,111,114,32,108,111,118,101,100,119,97,115,116,101,48,48,\r
-112,120,59,106,97,58,227,130,115,105,109,111,110,60,102,111,110,116,114,101,112,\r
-108,121,109,101,101,116,115,117,110,116,101,114,99,104,101,97,112,116,105,103,\r
-104,116,66,114,97,110,100,41,32,33,61,32,100,114,101,115,115,99,108,105,112,115,\r
-114,111,111,109,115,111,110,107,101,121,109,111,98,105,108,109,97,105,110,46,78,\r
-97,109,101,32,112,108,97,116,101,102,117,110,110,121,116,114,101,101,115,99,111,\r
-109,47,34,49,46,106,112,103,119,109,111,100,101,112,97,114,97,109,83,84,65,82,84\r
-,108,101,102,116,32,105,100,100,101,110,44,32,50,48,49,41,59,10,125,10,102,111,\r
-114,109,46,118,105,114,117,115,99,104,97,105,114,116,114,97,110,115,119,111,114,\r
-115,116,80,97,103,101,115,105,116,105,111,110,112,97,116,99,104,60,33,45,45,10,\r
-111,45,99,97,99,102,105,114,109,115,116,111,117,114,115,44,48,48,48,32,97,115,\r
-105,97,110,105,43,43,41,123,97,100,111,98,101,39,41,91,48,93,105,100,61,49,48,98\r
-,111,116,104,59,109,101,110,117,32,46,50,46,109,105,46,112,110,103,34,107,101,\r
-118,105,110,99,111,97,99,104,67,104,105,108,100,98,114,117,99,101,50,46,106,112,\r
-103,85,82,76,41,43,46,106,112,103,124,115,117,105,116,101,115,108,105,99,101,104\r
-,97,114,114,121,49,50,48,34,32,115,119,101,101,116,116,114,62,13,10,110,97,109,\r
-101,61,100,105,101,103,111,112,97,103,101,32,115,119,105,115,115,45,45,62,10,10,\r
-35,102,102,102,59,34,62,76,111,103,46,99,111,109,34,116,114,101,97,116,115,104,\r
-101,101,116,41,32,38,38,32,49,52,112,120,59,115,108,101,101,112,110,116,101,110,\r
-116,102,105,108,101,100,106,97,58,227,131,105,100,61,34,99,78,97,109,101,34,119,\r
-111,114,115,101,115,104,111,116,115,45,98,111,120,45,100,101,108,116,97,10,38,\r
-108,116,59,98,101,97,114,115,58,52,56,90,60,100,97,116,97,45,114,117,114,97,108,\r
-60,47,97,62,32,115,112,101,110,100,98,97,107,101,114,115,104,111,112,115,61,32,\r
-34,34,59,112,104,112,34,62,99,116,105,111,110,49,51,112,120,59,98,114,105,97,110\r
-,104,101,108,108,111,115,105,122,101,61,111,61,37,50,70,32,106,111,105,110,109,\r
-97,121,98,101,60,105,109,103,32,105,109,103,34,62,44,32,102,106,115,105,109,103,\r
-34,32,34,41,91,48,93,77,84,111,112,66,84,121,112,101,34,110,101,119,108,121,68,\r
-97,110,115,107,99,122,101,99,104,116,114,97,105,108,107,110,111,119,115,60,47,\r
-104,53,62,102,97,113,34,62,122,104,45,99,110,49,48,41,59,10,45,49,34,41,59,116,\r
-121,112,101,61,98,108,117,101,115,116,114,117,108,121,100,97,118,105,115,46,106,\r
-115,39,59,62,13,10,60,33,115,116,101,101,108,32,121,111,117,32,104,50,62,13,10,\r
-102,111,114,109,32,106,101,115,117,115,49,48,48,37,32,109,101,110,117,46,13,10,9\r
-,13,10,119,97,108,101,115,114,105,115,107,115,117,109,101,110,116,100,100,105,\r
-110,103,98,45,108,105,107,116,101,97,99,104,103,105,102,34,32,118,101,103,97,115\r
-,100,97,110,115,107,101,101,115,116,105,115,104,113,105,112,115,117,111,109,105,\r
-115,111,98,114,101,100,101,115,100,101,101,110,116,114,101,116,111,100,111,115,\r
-112,117,101,100,101,97,195,177,111,115,101,115,116,195,161,116,105,101,110,101,\r
-104,97,115,116,97,111,116,114,111,115,112,97,114,116,101,100,111,110,100,101,110\r
-,117,101,118,111,104,97,99,101,114,102,111,114,109,97,109,105,115,109,111,109,\r
-101,106,111,114,109,117,110,100,111,97,113,117,195,173,100,195,173,97,115,115,\r
-195,179,108,111,97,121,117,100,97,102,101,99,104,97,116,111,100,97,115,116,97,\r
-110,116,111,109,101,110,111,115,100,97,116,111,115,111,116,114,97,115,115,105,\r
-116,105,111,109,117,99,104,111,97,104,111,114,97,108,117,103,97,114,109,97,121,\r
-111,114,101,115,116,111,115,104,111,114,97,115,116,101,110,101,114,97,110,116,\r
-101,115,102,111,116,111,115,101,115,116,97,115,112,97,195,173,115,110,117,101,\r
-118,97,115,97,108,117,100,102,111,114,111,115,109,101,100,105,111,113,117,105,\r
-101,110,109,101,115,101,115,112,111,100,101,114,99,104,105,108,101,115,101,114,\r
-195,161,118,101,99,101,115,100,101,99,105,114,106,111,115,195,169,101,115,116,97\r
-,114,118,101,110,116,97,103,114,117,112,111,104,101,99,104,111,101,108,108,111,\r
-115,116,101,110,103,111,97,109,105,103,111,99,111,115,97,115,110,105,118,101,108\r
-,103,101,110,116,101,109,105,115,109,97,97,105,114,101,115,106,117,108,105,111,\r
-116,101,109,97,115,104,97,99,105,97,102,97,118,111,114,106,117,110,105,111,108,\r
-105,98,114,101,112,117,110,116,111,98,117,101,110,111,97,117,116,111,114,97,98,\r
-114,105,108,98,117,101,110,97,116,101,120,116,111,109,97,114,122,111,115,97,98,\r
-101,114,108,105,115,116,97,108,117,101,103,111,99,195,179,109,111,101,110,101,\r
-114,111,106,117,101,103,111,112,101,114,195,186,104,97,98,101,114,101,115,116,\r
-111,121,110,117,110,99,97,109,117,106,101,114,118,97,108,111,114,102,117,101,114\r
-,97,108,105,98,114,111,103,117,115,116,97,105,103,117,97,108,118,111,116,111,115\r
-,99,97,115,111,115,103,117,195,173,97,112,117,101,100,111,115,111,109,111,115,97\r
-,118,105,115,111,117,115,116,101,100,100,101,98,101,110,110,111,99,104,101,98,\r
-117,115,99,97,102,97,108,116,97,101,117,114,111,115,115,101,114,105,101,100,105,\r
-99,104,111,99,117,114,115,111,99,108,97,118,101,99,97,115,97,115,108,101,195,179\r
-,110,112,108,97,122,111,108,97,114,103,111,111,98,114,97,115,118,105,115,116,97,\r
-97,112,111,121,111,106,117,110,116,111,116,114,97,116,97,118,105,115,116,111,99,\r
-114,101,97,114,99,97,109,112,111,104,101,109,111,115,99,105,110,99,111,99,97,114\r
-,103,111,112,105,115,111,115,111,114,100,101,110,104,97,99,101,110,195,161,114,\r
-101,97,100,105,115,99,111,112,101,100,114,111,99,101,114,99,97,112,117,101,100,\r
-97,112,97,112,101,108,109,101,110,111,114,195,186,116,105,108,99,108,97,114,111,\r
-106,111,114,103,101,99,97,108,108,101,112,111,110,101,114,116,97,114,100,101,110\r
-,97,100,105,101,109,97,114,99,97,115,105,103,117,101,101,108,108,97,115,115,105,\r
-103,108,111,99,111,99,104,101,109,111,116,111,115,109,97,100,114,101,99,108,97,\r
-115,101,114,101,115,116,111,110,105,195,177,111,113,117,101,100,97,112,97,115,97\r
-,114,98,97,110,99,111,104,105,106,111,115,118,105,97,106,101,112,97,98,108,111,\r
-195,169,115,116,101,118,105,101,110,101,114,101,105,110,111,100,101,106,97,114,\r
-102,111,110,100,111,99,97,110,97,108,110,111,114,116,101,108,101,116,114,97,99,\r
-97,117,115,97,116,111,109,97,114,109,97,110,111,115,108,117,110,101,115,97,117,\r
-116,111,115,118,105,108,108,97,118,101,110,100,111,112,101,115,97,114,116,105,\r
-112,111,115,116,101,110,103,97,109,97,114,99,111,108,108,101,118,97,112,97,100,\r
-114,101,117,110,105,100,111,118,97,109,111,115,122,111,110,97,115,97,109,98,111,\r
-115,98,97,110,100,97,109,97,114,105,97,97,98,117,115,111,109,117,99,104,97,115,\r
-117,98,105,114,114,105,111,106,97,118,105,118,105,114,103,114,97,100,111,99,104,\r
-105,99,97,97,108,108,195,173,106,111,118,101,110,100,105,99,104,97,101,115,116,\r
-97,110,116,97,108,101,115,115,97,108,105,114,115,117,101,108,111,112,101,115,111\r
-,115,102,105,110,101,115,108,108,97,109,97,98,117,115,99,111,195,169,115,116,97,\r
-108,108,101,103,97,110,101,103,114,111,112,108,97,122,97,104,117,109,111,114,112\r
-,97,103,97,114,106,117,110,116,97,100,111,98,108,101,105,115,108,97,115,98,111,\r
-108,115,97,98,97,195,177,111,104,97,98,108,97,108,117,99,104,97,195,129,114,101,\r
-97,100,105,99,101,110,106,117,103,97,114,110,111,116,97,115,118,97,108,108,101,\r
-97,108,108,195,161,99,97,114,103,97,100,111,108,111,114,97,98,97,106,111,101,115\r
-,116,195,169,103,117,115,116,111,109,101,110,116,101,109,97,114,105,111,102,105,\r
-114,109,97,99,111,115,116,111,102,105,99,104,97,112,108,97,116,97,104,111,103,97\r
-,114,97,114,116,101,115,108,101,121,101,115,97,113,117,101,108,109,117,115,101,\r
-111,98,97,115,101,115,112,111,99,111,115,109,105,116,97,100,99,105,101,108,111,\r
-99,104,105,99,111,109,105,101,100,111,103,97,110,97,114,115,97,110,116,111,101,\r
-116,97,112,97,100,101,98,101,115,112,108,97,121,97,114,101,100,101,115,115,105,\r
-101,116,101,99,111,114,116,101,99,111,114,101,97,100,117,100,97,115,100,101,115,\r
-101,111,118,105,101,106,111,100,101,115,101,97,97,103,117,97,115,38,113,117,111,\r
-116,59,100,111,109,97,105,110,99,111,109,109,111,110,115,116,97,116,117,115,101,\r
-118,101,110,116,115,109,97,115,116,101,114,115,121,115,116,101,109,97,99,116,105\r
-,111,110,98,97,110,110,101,114,114,101,109,111,118,101,115,99,114,111,108,108,\r
-117,112,100,97,116,101,103,108,111,98,97,108,109,101,100,105,117,109,102,105,108\r
-,116,101,114,110,117,109,98,101,114,99,104,97,110,103,101,114,101,115,117,108,\r
-116,112,117,98,108,105,99,115,99,114,101,101,110,99,104,111,111,115,101,110,111,\r
-114,109,97,108,116,114,97,118,101,108,105,115,115,117,101,115,115,111,117,114,99\r
-,101,116,97,114,103,101,116,115,112,114,105,110,103,109,111,100,117,108,101,109,\r
-111,98,105,108,101,115,119,105,116,99,104,112,104,111,116,111,115,98,111,114,100\r
-,101,114,114,101,103,105,111,110,105,116,115,101,108,102,115,111,99,105,97,108,\r
-97,99,116,105,118,101,99,111,108,117,109,110,114,101,99,111,114,100,102,111,108,\r
-108,111,119,116,105,116,108,101,62,101,105,116,104,101,114,108,101,110,103,116,\r
-104,102,97,109,105,108,121,102,114,105,101,110,100,108,97,121,111,117,116,97,117\r
-,116,104,111,114,99,114,101,97,116,101,114,101,118,105,101,119,115,117,109,109,\r
-101,114,115,101,114,118,101,114,112,108,97,121,101,100,112,108,97,121,101,114,\r
-101,120,112,97,110,100,112,111,108,105,99,121,102,111,114,109,97,116,100,111,117\r
-,98,108,101,112,111,105,110,116,115,115,101,114,105,101,115,112,101,114,115,111,\r
-110,108,105,118,105,110,103,100,101,115,105,103,110,109,111,110,116,104,115,102,\r
-111,114,99,101,115,117,110,105,113,117,101,119,101,105,103,104,116,112,101,111,\r
-112,108,101,101,110,101,114,103,121,110,97,116,117,114,101,115,101,97,114,99,104\r
-,102,105,103,117,114,101,104,97,118,105,110,103,99,117,115,116,111,109,111,102,\r
-102,115,101,116,108,101,116,116,101,114,119,105,110,100,111,119,115,117,98,109,\r
-105,116,114,101,110,100,101,114,103,114,111,117,112,115,117,112,108,111,97,100,\r
-104,101,97,108,116,104,109,101,116,104,111,100,118,105,100,101,111,115,115,99,\r
-104,111,111,108,102,117,116,117,114,101,115,104,97,100,111,119,100,101,98,97,116\r
-,101,118,97,108,117,101,115,79,98,106,101,99,116,111,116,104,101,114,115,114,105\r
-,103,104,116,115,108,101,97,103,117,101,99,104,114,111,109,101,115,105,109,112,\r
-108,101,110,111,116,105,99,101,115,104,97,114,101,100,101,110,100,105,110,103,\r
-115,101,97,115,111,110,114,101,112,111,114,116,111,110,108,105,110,101,115,113,\r
-117,97,114,101,98,117,116,116,111,110,105,109,97,103,101,115,101,110,97,98,108,\r
-101,109,111,118,105,110,103,108,97,116,101,115,116,119,105,110,116,101,114,70,\r
-114,97,110,99,101,112,101,114,105,111,100,115,116,114,111,110,103,114,101,112,\r
-101,97,116,76,111,110,100,111,110,100,101,116,97,105,108,102,111,114,109,101,100\r
-,100,101,109,97,110,100,115,101,99,117,114,101,112,97,115,115,101,100,116,111,\r
-103,103,108,101,112,108,97,99,101,115,100,101,118,105,99,101,115,116,97,116,105,\r
-99,99,105,116,105,101,115,115,116,114,101,97,109,121,101,108,108,111,119,97,116,\r
-116,97,99,107,115,116,114,101,101,116,102,108,105,103,104,116,104,105,100,100,\r
-101,110,105,110,102,111,34,62,111,112,101,110,101,100,117,115,101,102,117,108,\r
-118,97,108,108,101,121,99,97,117,115,101,115,108,101,97,100,101,114,115,101,99,\r
-114,101,116,115,101,99,111,110,100,100,97,109,97,103,101,115,112,111,114,116,115\r
-,101,120,99,101,112,116,114,97,116,105,110,103,115,105,103,110,101,100,116,104,\r
-105,110,103,115,101,102,102,101,99,116,102,105,101,108,100,115,115,116,97,116,\r
-101,115,111,102,102,105,99,101,118,105,115,117,97,108,101,100,105,116,111,114,\r
-118,111,108,117,109,101,82,101,112,111,114,116,109,117,115,101,117,109,109,111,\r
-118,105,101,115,112,97,114,101,110,116,97,99,99,101,115,115,109,111,115,116,108,\r
-121,109,111,116,104,101,114,34,32,105,100,61,34,109,97,114,107,101,116,103,114,\r
-111,117,110,100,99,104,97,110,99,101,115,117,114,118,101,121,98,101,102,111,114,\r
-101,115,121,109,98,111,108,109,111,109,101,110,116,115,112,101,101,99,104,109,\r
-111,116,105,111,110,105,110,115,105,100,101,109,97,116,116,101,114,67,101,110,\r
-116,101,114,111,98,106,101,99,116,101,120,105,115,116,115,109,105,100,100,108,\r
-101,69,117,114,111,112,101,103,114,111,119,116,104,108,101,103,97,99,121,109,97,\r
-110,110,101,114,101,110,111,117,103,104,99,97,114,101,101,114,97,110,115,119,101\r
-,114,111,114,105,103,105,110,112,111,114,116,97,108,99,108,105,101,110,116,115,\r
-101,108,101,99,116,114,97,110,100,111,109,99,108,111,115,101,100,116,111,112,105\r
-,99,115,99,111,109,105,110,103,102,97,116,104,101,114,111,112,116,105,111,110,\r
-115,105,109,112,108,121,114,97,105,115,101,100,101,115,99,97,112,101,99,104,111,\r
-115,101,110,99,104,117,114,99,104,100,101,102,105,110,101,114,101,97,115,111,110\r
-,99,111,114,110,101,114,111,117,116,112,117,116,109,101,109,111,114,121,105,102,\r
-114,97,109,101,112,111,108,105,99,101,109,111,100,101,108,115,78,117,109,98,101,\r
-114,100,117,114,105,110,103,111,102,102,101,114,115,115,116,121,108,101,115,107,\r
-105,108,108,101,100,108,105,115,116,101,100,99,97,108,108,101,100,115,105,108,\r
-118,101,114,109,97,114,103,105,110,100,101,108,101,116,101,98,101,116,116,101,\r
-114,98,114,111,119,115,101,108,105,109,105,116,115,71,108,111,98,97,108,115,105,\r
-110,103,108,101,119,105,100,103,101,116,99,101,110,116,101,114,98,117,100,103,\r
-101,116,110,111,119,114,97,112,99,114,101,100,105,116,99,108,97,105,109,115,101,\r
-110,103,105,110,101,115,97,102,101,116,121,99,104,111,105,99,101,115,112,105,114\r
-,105,116,45,115,116,121,108,101,115,112,114,101,97,100,109,97,107,105,110,103,\r
-110,101,101,100,101,100,114,117,115,115,105,97,112,108,101,97,115,101,101,120,\r
-116,101,110,116,83,99,114,105,112,116,98,114,111,107,101,110,97,108,108,111,119,\r
-115,99,104,97,114,103,101,100,105,118,105,100,101,102,97,99,116,111,114,109,101,\r
-109,98,101,114,45,98,97,115,101,100,116,104,101,111,114,121,99,111,110,102,105,\r
-103,97,114,111,117,110,100,119,111,114,107,101,100,104,101,108,112,101,100,67,\r
-104,117,114,99,104,105,109,112,97,99,116,115,104,111,117,108,100,97,108,119,97,\r
-121,115,108,111,103,111,34,32,98,111,116,116,111,109,108,105,115,116,34,62,41,\r
-123,118,97,114,32,112,114,101,102,105,120,111,114,97,110,103,101,72,101,97,100,\r
-101,114,46,112,117,115,104,40,99,111,117,112,108,101,103,97,114,100,101,110,98,\r
-114,105,100,103,101,108,97,117,110,99,104,82,101,118,105,101,119,116,97,107,105,\r
-110,103,118,105,115,105,111,110,108,105,116,116,108,101,100,97,116,105,110,103,\r
-66,117,116,116,111,110,98,101,97,117,116,121,116,104,101,109,101,115,102,111,114\r
-,103,111,116,83,101,97,114,99,104,97,110,99,104,111,114,97,108,109,111,115,116,\r
-108,111,97,100,101,100,67,104,97,110,103,101,114,101,116,117,114,110,115,116,114\r
-,105,110,103,114,101,108,111,97,100,77,111,98,105,108,101,105,110,99,111,109,101\r
-,115,117,112,112,108,121,83,111,117,114,99,101,111,114,100,101,114,115,118,105,\r
-101,119,101,100,38,110,98,115,112,59,99,111,117,114,115,101,65,98,111,117,116,32\r
-,105,115,108,97,110,100,60,104,116,109,108,32,99,111,111,107,105,101,110,97,109,\r
-101,61,34,97,109,97,122,111,110,109,111,100,101,114,110,97,100,118,105,99,101,\r
-105,110,60,47,97,62,58,32,84,104,101,32,100,105,97,108,111,103,104,111,117,115,\r
-101,115,66,69,71,73,78,32,77,101,120,105,99,111,115,116,97,114,116,115,99,101,\r
-110,116,114,101,104,101,105,103,104,116,97,100,100,105,110,103,73,115,108,97,110\r
-,100,97,115,115,101,116,115,69,109,112,105,114,101,83,99,104,111,111,108,101,102\r
-,102,111,114,116,100,105,114,101,99,116,110,101,97,114,108,121,109,97,110,117,97\r
-,108,83,101,108,101,99,116,46,10,10,79,110,101,106,111,105,110,101,100,109,101,\r
-110,117,34,62,80,104,105,108,105,112,97,119,97,114,100,115,104,97,110,100,108,\r
-101,105,109,112,111,114,116,79,102,102,105,99,101,114,101,103,97,114,100,115,107\r
-,105,108,108,115,110,97,116,105,111,110,83,112,111,114,116,115,100,101,103,114,\r
-101,101,119,101,101,107,108,121,32,40,101,46,103,46,98,101,104,105,110,100,100,\r
-111,99,116,111,114,108,111,103,103,101,100,117,110,105,116,101,100,60,47,98,62,\r
-60,47,98,101,103,105,110,115,112,108,97,110,116,115,97,115,115,105,115,116,97,\r
-114,116,105,115,116,105,115,115,117,101,100,51,48,48,112,120,124,99,97,110,97,\r
-100,97,97,103,101,110,99,121,115,99,104,101,109,101,114,101,109,97,105,110,66,\r
-114,97,122,105,108,115,97,109,112,108,101,108,111,103,111,34,62,98,101,121,111,\r
-110,100,45,115,99,97,108,101,97,99,99,101,112,116,115,101,114,118,101,100,109,97\r
-,114,105,110,101,70,111,111,116,101,114,99,97,109,101,114,97,60,47,104,49,62,10,\r
-95,102,111,114,109,34,108,101,97,118,101,115,115,116,114,101,115,115,34,32,47,62\r
-,13,10,46,103,105,102,34,32,111,110,108,111,97,100,108,111,97,100,101,114,79,120\r
-,102,111,114,100,115,105,115,116,101,114,115,117,114,118,105,118,108,105,115,116\r
-,101,110,102,101,109,97,108,101,68,101,115,105,103,110,115,105,122,101,61,34,97,\r
-112,112,101,97,108,116,101,120,116,34,62,108,101,118,101,108,115,116,104,97,110,\r
-107,115,104,105,103,104,101,114,102,111,114,99,101,100,97,110,105,109,97,108,97,\r
-110,121,111,110,101,65,102,114,105,99,97,97,103,114,101,101,100,114,101,99,101,\r
-110,116,80,101,111,112,108,101,60,98,114,32,47,62,119,111,110,100,101,114,112,\r
-114,105,99,101,115,116,117,114,110,101,100,124,124,32,123,125,59,109,97,105,110,\r
-34,62,105,110,108,105,110,101,115,117,110,100,97,121,119,114,97,112,34,62,102,97\r
-,105,108,101,100,99,101,110,115,117,115,109,105,110,117,116,101,98,101,97,99,111\r
-,110,113,117,111,116,101,115,49,53,48,112,120,124,101,115,116,97,116,101,114,101\r
-,109,111,116,101,101,109,97,105,108,34,108,105,110,107,101,100,114,105,103,104,\r
-116,59,115,105,103,110,97,108,102,111,114,109,97,108,49,46,104,116,109,108,115,\r
-105,103,110,117,112,112,114,105,110,99,101,102,108,111,97,116,58,46,112,110,103,\r
-34,32,102,111,114,117,109,46,65,99,99,101,115,115,112,97,112,101,114,115,115,111\r
-,117,110,100,115,101,120,116,101,110,100,72,101,105,103,104,116,115,108,105,100,\r
-101,114,85,84,70,45,56,34,38,97,109,112,59,32,66,101,102,111,114,101,46,32,87,\r
-105,116,104,115,116,117,100,105,111,111,119,110,101,114,115,109,97,110,97,103,\r
-101,112,114,111,102,105,116,106,81,117,101,114,121,97,110,110,117,97,108,112,97,\r
-114,97,109,115,98,111,117,103,104,116,102,97,109,111,117,115,103,111,111,103,108\r
-,101,108,111,110,103,101,114,105,43,43,41,32,123,105,115,114,97,101,108,115,97,\r
-121,105,110,103,100,101,99,105,100,101,104,111,109,101,34,62,104,101,97,100,101,\r
-114,101,110,115,117,114,101,98,114,97,110,99,104,112,105,101,99,101,115,98,108,\r
-111,99,107,59,115,116,97,116,101,100,116,111,112,34,62,60,114,97,99,105,110,103,\r
-114,101,115,105,122,101,45,45,38,103,116,59,112,97,99,105,116,121,115,101,120,\r
-117,97,108,98,117,114,101,97,117,46,106,112,103,34,32,49,48,44,48,48,48,111,98,\r
-116,97,105,110,116,105,116,108,101,115,97,109,111,117,110,116,44,32,73,110,99,46\r
-,99,111,109,101,100,121,109,101,110,117,34,32,108,121,114,105,99,115,116,111,100\r
-,97,121,46,105,110,100,101,101,100,99,111,117,110,116,121,95,108,111,103,111,46,\r
-70,97,109,105,108,121,108,111,111,107,101,100,77,97,114,107,101,116,108,115,101,\r
-32,105,102,80,108,97,121,101,114,116,117,114,107,101,121,41,59,118,97,114,32,102\r
-,111,114,101,115,116,103,105,118,105,110,103,101,114,114,111,114,115,68,111,109,\r
-97,105,110,125,101,108,115,101,123,105,110,115,101,114,116,66,108,111,103,60,47,\r
-102,111,111,116,101,114,108,111,103,105,110,46,102,97,115,116,101,114,97,103,101\r
-,110,116,115,60,98,111,100,121,32,49,48,112,120,32,48,112,114,97,103,109,97,102,\r
-114,105,100,97,121,106,117,110,105,111,114,100,111,108,108,97,114,112,108,97,99,\r
-101,100,99,111,118,101,114,115,112,108,117,103,105,110,53,44,48,48,48,32,112,97,\r
-103,101,34,62,98,111,115,116,111,110,46,116,101,115,116,40,97,118,97,116,97,114,\r
-116,101,115,116,101,100,95,99,111,117,110,116,102,111,114,117,109,115,115,99,104\r
-,101,109,97,105,110,100,101,120,44,102,105,108,108,101,100,115,104,97,114,101,\r
-115,114,101,97,100,101,114,97,108,101,114,116,40,97,112,112,101,97,114,83,117,98\r
-,109,105,116,108,105,110,101,34,62,98,111,100,121,34,62,10,42,32,84,104,101,84,\r
-104,111,117,103,104,115,101,101,105,110,103,106,101,114,115,101,121,78,101,119,\r
-115,60,47,118,101,114,105,102,121,101,120,112,101,114,116,105,110,106,117,114,\r
-121,119,105,100,116,104,61,67,111,111,107,105,101,83,84,65,82,84,32,97,99,114,\r
-111,115,115,95,105,109,97,103,101,116,104,114,101,97,100,110,97,116,105,118,101,\r
-112,111,99,107,101,116,98,111,120,34,62,10,83,121,115,116,101,109,32,68,97,118,\r
-105,100,99,97,110,99,101,114,116,97,98,108,101,115,112,114,111,118,101,100,65,\r
-112,114,105,108,32,114,101,97,108,108,121,100,114,105,118,101,114,105,116,101,\r
-109,34,62,109,111,114,101,34,62,98,111,97,114,100,115,99,111,108,111,114,115,99,\r
-97,109,112,117,115,102,105,114,115,116,32,124,124,32,91,93,59,109,101,100,105,97\r
-,46,103,117,105,116,97,114,102,105,110,105,115,104,119,105,100,116,104,58,115,\r
-104,111,119,101,100,79,116,104,101,114,32,46,112,104,112,34,32,97,115,115,117,\r
-109,101,108,97,121,101,114,115,119,105,108,115,111,110,115,116,111,114,101,115,\r
-114,101,108,105,101,102,115,119,101,100,101,110,67,117,115,116,111,109,101,97,\r
-115,105,108,121,32,121,111,117,114,32,83,116,114,105,110,103,10,10,87,104,105,\r
-108,116,97,121,108,111,114,99,108,101,97,114,58,114,101,115,111,114,116,102,114,\r
-101,110,99,104,116,104,111,117,103,104,34,41,32,43,32,34,60,98,111,100,121,62,98\r
-,117,121,105,110,103,98,114,97,110,100,115,77,101,109,98,101,114,110,97,109,101,\r
-34,62,111,112,112,105,110,103,115,101,99,116,111,114,53,112,120,59,34,62,118,115\r
-,112,97,99,101,112,111,115,116,101,114,109,97,106,111,114,32,99,111,102,102,101,\r
-101,109,97,114,116,105,110,109,97,116,117,114,101,104,97,112,112,101,110,60,47,\r
-110,97,118,62,107,97,110,115,97,115,108,105,110,107,34,62,73,109,97,103,101,115,\r
-61,102,97,108,115,101,119,104,105,108,101,32,104,115,112,97,99,101,48,38,97,109,\r
-112,59,32,10,10,73,110,32,32,112,111,119,101,114,80,111,108,115,107,105,45,99,\r
-111,108,111,114,106,111,114,100,97,110,66,111,116,116,111,109,83,116,97,114,116,\r
-32,45,99,111,117,110,116,50,46,104,116,109,108,110,101,119,115,34,62,48,49,46,\r
-106,112,103,79,110,108,105,110,101,45,114,105,103,104,116,109,105,108,108,101,\r
-114,115,101,110,105,111,114,73,83,66,78,32,48,48,44,48,48,48,32,103,117,105,100,\r
-101,115,118,97,108,117,101,41,101,99,116,105,111,110,114,101,112,97,105,114,46,\r
-120,109,108,34,32,32,114,105,103,104,116,115,46,104,116,109,108,45,98,108,111,99\r
-,107,114,101,103,69,120,112,58,104,111,118,101,114,119,105,116,104,105,110,118,\r
-105,114,103,105,110,112,104,111,110,101,115,60,47,116,114,62,13,117,115,105,110,\r
-103,32,10,9,118,97,114,32,62,39,41,59,10,9,60,47,116,100,62,10,60,47,116,114,62,\r
-10,98,97,104,97,115,97,98,114,97,115,105,108,103,97,108,101,103,111,109,97,103,\r
-121,97,114,112,111,108,115,107,105,115,114,112,115,107,105,216,177,216,175,217,\r
-136,228,184,173,230,150,135,231,174,128,228,189,147,231,185,129,233,171,148,228,\r
-191,161,230,129,175,228,184,173,229,155,189,230,136,145,228,187,172,228,184,128,\r
-228,184,170,229,133,172,229,143,184,231,174,161,231,144,134,232,174,186,229,157,\r
-155,229,143,175,228,187,165,230,156,141,229,138,161,230,151,182,233,151,180,228,\r
-184,170,228,186,186,228,186,167,229,147,129,232,135,170,229,183,177,228,188,129,\r
-228,184,154,230,159,165,231,156,139,229,183,165,228,189,156,232,129,148,231,179,\r
-187,230,178,161,230,156,137,231,189,145,231,171,153,230,137,128,230,156,137,232,\r
-175,132,232,174,186,228,184,173,229,191,131,230,150,135,231,171,160,231,148,168,\r
-230,136,183,233,166,150,233,161,181,228,189,156,232,128,133,230,138,128,230,156,\r
-175,233,151,174,233,162,152,231,155,184,229,133,179,228,184,139,232,189,189,230,\r
-144,156,231,180,162,228,189,191,231,148,168,232,189,175,228,187,182,229,156,168,\r
-231,186,191,228,184,187,233,162,152,232,181,132,230,150,153,232,167,134,233,162,\r
-145,229,155,158,229,164,141,230,179,168,229,134,140,231,189,145,231,187,156,230,\r
-148,182,232,151,143,229,134,133,229,174,185,230,142,168,232,141,144,229,184,130,\r
-229,156,186,230,182,136,230,129,175,231,169,186,233,151,180,229,143,145,229,184,\r
-131,228,187,128,228,185,136,229,165,189,229,143,139,231,148,159,230,180,187,229,\r
-155,190,231,137,135,229,143,145,229,177,149,229,166,130,230,158,156,230,137,139,\r
-230,156,186,230,150,176,233,151,187,230,156,128,230,150,176,230,150,185,229,188,\r
-143,229,140,151,228,186,172,230,143,144,228,190,155,229,133,179,228,186,142,230,\r
-155,180,229,164,154,232,191,153,228,184,170,231,179,187,231,187,159,231,159,165,\r
-233,129,147,230,184,184,230,136,143,229,185,191,229,145,138,229,133,182,228,187,\r
-150,229,143,145,232,161,168,229,174,137,229,133,168,231,172,172,228,184,128,228,\r
-188,154,229,145,152,232,191,155,232,161,140,231,130,185,229,135,187,231,137,136,\r
-230,157,131,231,148,181,229,173,144,228,184,150,231,149,140,232,174,190,232,174,\r
-161,229,133,141,232,180,185,230,149,153,232,130,178,229,138,160,229,133,165,230,\r
-180,187,229,138,168,228,187,150,228,187,172,229,149,134,229,147,129,229,141,154,\r
-229,174,162,231,142,176,229,156,168,228,184,138,230,181,183,229,166,130,228,189,\r
-149,229,183,178,231,187,143,231,149,153,232,168,128,232,175,166,231,187,134,231,\r
-164,190,229,140,186,231,153,187,229,189,149,230,156,172,231,171,153,233,156,128,\r
-232,166,129,228,187,183,230,160,188,230,148,175,230,140,129,229,155,189,233,153,\r
-133,233,147,190,230,142,165,229,155,189,229,174,182,229,187,186,232,174,190,230,\r
-156,139,229,143,139,233,152,133,232,175,187,230,179,149,229,190,139,228,189,141,\r
-231,189,174,231,187,143,230,181,142,233,128,137,230,139,169,232,191,153,230,160,\r
-183,229,189,147,229,137,141,229,136,134,231,177,187,230,142,146,232,161,140,229,\r
-155,160,228,184,186,228,186,164,230,152,147,230,156,128,229,144,142,233,159,179,\r
-228,185,144,228,184,141,232,131,189,233,128,154,232,191,135,232,161,140,228,184,\r
-154,231,167,145,230,138,128,229,143,175,232,131,189,232,174,190,229,164,135,229,\r
-144,136,228,189,156,229,164,167,229,174,182,231,164,190,228,188,154,231,160,148,\r
-231,169,182,228,184,147,228,184,154,229,133,168,233,131,168,233,161,185,231,155,\r
-174,232,191,153,233,135,140,232,191,152,230,152,175,229,188,128,229,167,139,230,\r
-131,133,229,134,181,231,148,181,232,132,145,230,150,135,228,187,182,229,147,129,\r
-231,137,140,229,184,174,229,138,169,230,150,135,229,140,150,232,181,132,230,186,\r
-144,229,164,167,229,173,166,229,173,166,228,185,160,229,156,176,229,157,128,230,\r
-181,143,232,167,136,230,138,149,232,181,132,229,183,165,231,168,139,232,166,129,\r
-230,177,130,230,128,142,228,185,136,230,151,182,229,128,153,229,138,159,232,131,\r
-189,228,184,187,232,166,129,231,155,174,229,137,141,232,181,132,232,174,175,229,\r
-159,142,229,184,130,230,150,185,230,179,149,231,148,181,229,189,177,230,139,155,\r
-232,129,152,229,163,176,230,152,142,228,187,187,228,189,149,229,129,165,229,186,\r
-183,230,149,176,230,141,174,231,190,142,229,155,189,230,177,189,232,189,166,228,\r
-187,139,231,187,141,228,189,134,230,152,175,228,186,164,230,181,129,231,148,159,\r
-228,186,167,230,137,128,228,187,165,231,148,181,232,175,157,230,152,190,231,164,\r
-186,228,184,128,228,186,155,229,141,149,228,189,141,228,186,186,229,145,152,229,\r
-136,134,230,158,144,229,156,176,229,155,190,230,151,133,230,184,184,229,183,165,\r
-229,133,183,229,173,166,231,148,159,231,179,187,229,136,151,231,189,145,229,143,\r
-139,229,184,150,229,173,144,229,175,134,231,160,129,233,162,145,233,129,147,230,\r
-142,167,229,136,182,229,156,176,229,140,186,229,159,186,230,156,172,229,133,168,\r
-229,155,189,231,189,145,228,184,138,233,135,141,232,166,129,231,172,172,228,186,\r
-140,229,150,156,230,172,162,232,191,155,229,133,165,229,143,139,230,131,133,232,\r
-191,153,228,186,155,232,128,131,232,175,149,229,143,145,231,142,176,229,159,185,\r
-232,174,173,228,187,165,228,184,138,230,148,191,229,186,156,230,136,144,228,184,\r
-186,231,142,175,229,162,131,233,166,153,230,184,175,229,144,140,230,151,182,229,\r
-168,177,228,185,144,229,143,145,233,128,129,228,184,128,229,174,154,229,188,128,\r
-229,143,145,228,189,156,229,147,129,230,160,135,229,135,134,230,172,162,232,191,\r
-142,232,167,163,229,134,179,229,156,176,230,150,185,228,184,128,228,184,139,228,\r
-187,165,229,143,138,232,180,163,228,187,187,230,136,150,232,128,133,229,174,162,\r
-230,136,183,228,187,163,232,161,168,231,167,175,229,136,134,229,165,179,228,186,\r
-186,230,149,176,231,160,129,233,148,128,229,148,174,229,135,186,231,142,176,231,\r
-166,187,231,186,191,229,186,148,231,148,168,229,136,151,232,161,168,228,184,141,\r
-229,144,140,231,188,150,232,190,145,231,187,159,232,174,161,230,159,165,232,175,\r
-162,228,184,141,232,166,129,230,156,137,229,133,179,230,156,186,230,158,132,229,\r
-190,136,229,164,154,230,146,173,230,148,190,231,187,132,231,187,135,230,148,191,\r
-231,173,150,231,155,180,230,142,165,232,131,189,229,138,155,230,157,165,230,186,\r
-144,230,153,130,233,150,147,231,156,139,229,136,176,231,131,173,233,151,168,229,\r
-133,179,233,148,174,228,184,147,229,140,186,233,157,158,229,184,184,232,139,177,\r
-232,175,173,231,153,190,229,186,166,229,184,140,230,156,155,231,190,142,229,165,\r
-179,230,175,148,232,190,131,231,159,165,232,175,134,232,167,132,229,174,154,229,\r
-187,186,232,174,174,233,131,168,233,151,168,230,132,143,232,167,129,231,178,190,\r
-229,189,169,230,151,165,230,156,172,230,143,144,233,171,152,229,143,145,232,168,\r
-128,230,150,185,233,157,162,229,159,186,233,135,145,229,164,132,231,144,134,230,\r
-157,131,233,153,144,229,189,177,231,137,135,233,147,182,232,161,140,232,191,152,\r
-230,156,137,229,136,134,228,186,171,231,137,169,229,147,129,231,187,143,232,144,\r
-165,230,183,187,229,138,160,228,184,147,229,174,182,232,191,153,231,167,141,232,\r
-175,157,233,162,152,232,181,183,230,157,165,228,184,154,229,138,161,229,133,172,\r
-229,145,138,232,174,176,229,189,149,231,174,128,228,187,139,232,180,168,233,135,\r
-143,231,148,183,228,186,186,229,189,177,229,147,141,229,188,149,231,148,168,230,\r
-138,165,229,145,138,233,131,168,229,136,134,229,191,171,233,128,159,229,146,168,\r
-232,175,162,230,151,182,229,176,154,230,179,168,230,132,143,231,148,179,232,175,\r
-183,229,173,166,230,160,161,229,186,148,232,175,165,229,142,134,229,143,178,229,\r
-143,170,230,152,175,232,191,148,229,155,158,232,180,173,228,185,176,229,144,141,\r
-231,167,176,228,184,186,228,186,134,230,136,144,229,138,159,232,175,180,230,152,\r
-142,228,190,155,229,186,148,229,173,169,229,173,144,228,184,147,233,162,152,231,\r
-168,139,229,186,143,228,184,128,232,136,172,230,156,131,229,147,161,229,143,170,\r
-230,156,137,229,133,182,229,174,131,228,191,157,230,138,164,232,128,140,228,184,\r
-148,228,187,138,229,164,169,231,170,151,229,143,163,229,138,168,230,128,129,231,\r
-138,182,230,128,129,231,137,185,229,136,171,232,174,164,228,184,186,229,191,133,\r
-233,161,187,230,155,180,230,150,176,229,176,143,232,175,180,230,136,145,229,128,\r
-145,228,189,156,228,184,186,229,170,146,228,189,147,229,140,133,230,139,172,233,\r
-130,163,228,185,136,228,184,128,230,160,183,229,155,189,229,134,133,230,152,175,\r
-229,144,166,230,160,185,230,141,174,231,148,181,232,167,134,229,173,166,233,153,\r
-162,229,133,183,230,156,137,232,191,135,231,168,139,231,148,177,228,186,142,228,\r
-186,186,230,137,141,229,135,186,230,157,165,228,184,141,232,191,135,230,173,163,\r
-229,156,168,230,152,142,230,152,159,230,149,133,228,186,139,229,133,179,231,179,\r
-187,230,160,135,233,162,152,229,149,134,229,138,161,232,190,147,229,133,165,228,\r
-184,128,231,155,180,229,159,186,231,161,128,230,149,153,229,173,166,228,186,134,\r
-232,167,163,229,187,186,231,173,145,231,187,147,230,158,156,229,133,168,231,144,\r
-131,233,128,154,231,159,165,232,174,161,229,136,146,229,175,185,228,186,142,232,\r
-137,186,230,156,175,231,155,184,229,134,140,229,143,145,231,148,159,231,156,159,\r
-231,154,132,229,187,186,231,171,139,231,173,137,231,186,167,231,177,187,229,158,\r
-139,231,187,143,233,170,140,229,174,158,231,142,176,229,136,182,228,189,156,230,\r
-157,165,232,135,170,230,160,135,231,173,190,228,187,165,228,184,139,229,142,159,\r
-229,136,155,230,151,160,230,179,149,229,133,182,228,184,173,229,128,139,228,186,\r
-186,228,184,128,229,136,135,230,140,135,229,141,151,229,133,179,233,151,173,233,\r
-155,134,229,155,162,231,172,172,228,184,137,229,133,179,230,179,168,229,155,160,\r
-230,173,164,231,133,167,231,137,135,230,183,177,229,156,179,229,149,134,228,184,\r
-154,229,185,191,229,183,158,230,151,165,230,156,159,233,171,152,231,186,167,230,\r
-156,128,232,191,145,231,187,188,229,144,136,232,161,168,231,164,186,228,184,147,\r
-232,190,145,232,161,140,228,184,186,228,186,164,233,128,154,232,175,132,228,187,\r
-183,232,167,137,229,190,151,231,178,190,229,141,142,229,174,182,229,186,173,229,\r
-174,140,230,136,144,230,132,159,232,167,137,229,174,137,232,163,133,229,190,151,\r
-229,136,176,233,130,174,228,187,182,229,136,182,229,186,166,233,163,159,229,147,\r
-129,232,153,189,231,132,182,232,189,172,232,189,189,230,138,165,228,187,183,232,\r
-174,176,232,128,133,230,150,185,230,161,136,232,161,140,230,148,191,228,186,186,\r
-230,176,145,231,148,168,229,147,129,228,184,156,232,165,191,230,143,144,229,135,\r
-186,233,133,146,229,186,151,231,132,182,229,144,142,228,187,152,230,172,190,231,\r
-131,173,231,130,185,228,187,165,229,137,141,229,174,140,229,133,168,229,143,145,\r
-229,184,150,232,174,190,231,189,174,233,162,134,229,175,188,229,183,165,228,184,\r
-154,229,140,187,233,153,162,231,156,139,231,156,139,231,187,143,229,133,184,229,\r
-142,159,229,155,160,229,185,179,229,143,176,229,144,132,231,167,141,229,162,158,\r
-229,138,160,230,157,144,230,150,153,230,150,176,229,162,158,228,185,139,229,144,\r
-142,232,129,140,228,184,154,230,149,136,230,158,156,228,187,138,229,185,180,232,\r
-174,186,230,150,135,230,136,145,229,155,189,229,145,138,232,175,137,231,137,136,\r
-228,184,187,228,191,174,230,148,185,229,143,130,228,184,142,230,137,147,229,141,\r
-176,229,191,171,228,185,144,230,156,186,230,162,176,232,167,130,231,130,185,229,\r
-173,152,229,156,168,231,178,190,231,165,158,232,142,183,229,190,151,229,136,169,\r
-231,148,168,231,187,167,231,187,173,228,189,160,228,187,172,232,191,153,228,185,\r
-136,230,168,161,229,188,143,232,175,173,232,168,128,232,131,189,229,164,159,233,\r
-155,133,232,153,142,230,147,141,228,189,156,233,163,142,230,160,188,228,184,128,\r
-232,181,183,231,167,145,229,173,166,228,189,147,232,130,178,231,159,173,228,191,\r
-161,230,157,161,228,187,182,230,178,187,231,150,151,232,191,144,229,138,168,228,\r
-186,167,228,184,154,228,188,154,232,174,174,229,175,188,232,136,170,229,133,136,\r
-231,148,159,232,129,148,231,155,159,229,143,175,230,152,175,229,149,143,233,161,\r
-140,231,187,147,230,158,132,228,189,156,231,148,168,232,176,131,230,159,165,232,\r
-179,135,230,150,153,232,135,170,229,138,168,232,180,159,232,180,163,229,134,156,\r
-228,184,154,232,174,191,233,151,174,229,174,158,230,150,189,230,142,165,229,143,\r
-151,232,174,168,232,174,186,233,130,163,228,184,170,229,143,141,233,166,136,229,\r
-138,160,229,188,186,229,165,179,230,128,167,232,140,131,229,155,180,230,156,141,\r
-229,139,153,228,188,145,233,151,178,228,187,138,230,151,165,229,174,162,230,156,\r
-141,232,167,128,231,156,139,229,143,130,229,138,160,231,154,132,232,175,157,228,\r
-184,128,231,130,185,228,191,157,232,175,129,229,155,190,228,185,166,230,156,137,\r
-230,149,136,230,181,139,232,175,149,231,167,187,229,138,168,230,137,141,232,131,\r
-189,229,134,179,229,174,154,232,130,161,231,165,168,228,184,141,230,150,173,233,\r
-156,128,230,177,130,228,184,141,229,190,151,229,138,158,230,179,149,228,185,139,\r
-233,151,180,233,135,135,231,148,168,232,144,165,233,148,128,230,138,149,232,175,\r
-137,231,155,174,230,160,135,231,136,177,230,131,133,230,145,132,229,189,177,230,\r
-156,137,228,186,155,232,164,135,232,163,189,230,150,135,229,173,166,230,156,186,\r
-228,188,154,230,149,176,229,173,151,232,163,133,228,191,174,232,180,173,231,137,\r
-169,229,134,156,230,157,145,229,133,168,233,157,162,231,178,190,229,147,129,229,\r
-133,182,229,174,158,228,186,139,230,131,133,230,176,180,229,185,179,230,143,144,\r
-231,164,186,228,184,138,229,184,130,232,176,162,232,176,162,230,153,174,233,128,\r
-154,230,149,153,229,184,136,228,184,138,228,188,160,231,177,187,229,136,171,230,\r
-173,140,230,155,178,230,139,165,230,156,137,229,136,155,230,150,176,233,133,141,\r
-228,187,182,229,143,170,232,166,129,230,151,182,228,187,163,232,179,135,232,168,\r
-138,232,190,190,229,136,176,228,186,186,231,148,159,232,174,162,233,152,133,232,\r
-128,129,229,184,136,229,177,149,231,164,186,229,191,131,231,144,134,232,180,180,\r
-229,173,144,231,182,178,231,171,153,228,184,187,233,161,140,232,135,170,231,132,\r
-182,231,186,167,229,136,171,231,174,128,229,141,149,230,148,185,233,157,169,233,\r
-130,163,228,186,155,230,157,165,232,175,180,230,137,147,229,188,128,228,187,163,\r
-231,160,129,229,136,160,233,153,164,232,175,129,229,136,184,232,138,130,231,155,\r
-174,233,135,141,231,130,185,230,172,161,230,149,184,229,164,154,229,176,145,232,\r
-167,132,229,136,146,232,181,132,233,135,145,230,137,190,229,136,176,228,187,165,\r
-229,144,142,229,164,167,229,133,168,228,184,187,233,161,181,230,156,128,228,189,\r
-179,229,155,158,231,173,148,229,164,169,228,184,139,228,191,157,233,154,156,231,\r
-142,176,228,187,163,230,163,128,230,159,165,230,138,149,231,165,168,229,176,143,\r
-230,151,182,230,178,146,230,156,137,230,173,163,229,184,184,231,148,154,232,135,\r
-179,228,187,163,231,144,134,231,155,174,229,189,149,229,133,172,229,188,128,229,\r
-164,141,229,136,182,233,135,145,232,158,141,229,185,184,231,166,143,231,137,136,\r
-230,156,172,229,189,162,230,136,144,229,135,134,229,164,135,232,161,140,230,131,\r
-133,229,155,158,229,136,176,230,128,157,230,131,179,230,128,142,230,160,183,229,\r
-141,143,232,174,174,232,174,164,232,175,129,230,156,128,229,165,189,228,186,167,\r
-231,148,159,230,140,137,231,133,167,230,156,141,232,163,133,229,185,191,228,184,\r
-156,229,138,168,230,188,171,233,135,135,232,180,173,230,150,176,230,137,139,231,\r
-187,132,229,155,190,233,157,162,230,157,191,229,143,130,232,128,131,230,148,191,\r
-230,178,187,229,174,185,230,152,147,229,164,169,229,156,176,229,138,170,229,138,\r
-155,228,186,186,228,187,172,229,141,135,231,186,167,233,128,159,229,186,166,228,\r
-186,186,231,137,169,232,176,131,230,149,180,230,181,129,232,161,140,233,128,160,\r
-230,136,144,230,150,135,229,173,151,233,159,169,229,155,189,232,180,184,230,152,\r
-147,229,188,128,229,177,149,231,155,184,233,151,156,232,161,168,231,142,176,229,\r
-189,177,232,167,134,229,166,130,230,173,164,231,190,142,229,174,185,229,164,167,\r
-229,176,143,230,138,165,233,129,147,230,157,161,230,172,190,229,191,131,230,131,\r
-133,232,174,184,229,164,154,230,179,149,232,167,132,229,174,182,229,177,133,228,\r
-185,166,229,186,151,232,191,158,230,142,165,231,171,139,229,141,179,228,184,190,\r
-230,138,165,230,138,128,229,183,167,229,165,165,232,191,144,231,153,187,229,133,\r
-165,228,187,165,230,157,165,231,144,134,232,174,186,228,186,139,228,187,182,232,\r
-135,170,231,148,177,228,184,173,229,141,142,229,138,158,229,133,172,229,166,136,\r
-229,166,136,231,156,159,230,173,163,228,184,141,233,148,153,229,133,168,230,150,\r
-135,229,144,136,229,144,140,228,187,183,229,128,188,229,136,171,228,186,186,231,\r
-155,145,231,157,163,229,133,183,228,189,147,228,184,150,231,186,170,229,155,162,\r
-233,152,159,229,136,155,228,184,154,230,137,191,230,139,133,229,162,158,233,149,\r
-191,230,156,137,228,186,186,228,191,157,230,140,129,229,149,134,229,174,182,231,\r
-187,180,228,191,174,229,143,176,230,185,190,229,183,166,229,143,179,232,130,161,\r
-228,187,189,231,173,148,230,161,136,229,174,158,233,153,133,231,148,181,228,191,\r
-161,231,187,143,231,144,134,231,148,159,229,145,189,229,174,163,228,188,160,228,\r
-187,187,229,138,161,230,173,163,229,188,143,231,137,185,232,137,178,228,184,139,\r
-230,157,165,229,141,143,228,188,154,229,143,170,232,131,189,229,189,147,231,132,\r
-182,233,135,141,230,150,176,229,133,167,229,174,185,230,140,135,229,175,188,232,\r
-191,144,232,161,140,230,151,165,229,191,151,232,179,163,229,174,182,232,182,133,\r
-232,191,135,229,156,159,229,156,176,230,181,153,230,177,159,230,148,175,228,187,\r
-152,230,142,168,229,135,186,231,171,153,233,149,191,230,157,173,229,183,158,230,\r
-137,167,232,161,140,229,136,182,233,128,160,228,185,139,228,184,128,230,142,168,\r
-229,185,191,231,142,176,229,156,186,230,143,143,232,191,176,229,143,152,229,140,\r
-150,228,188,160,231,187,159,230,173,140,230,137,139,228,191,157,233,153,169,232,\r
-175,190,231,168,139,229,140,187,231,150,151,231,187,143,232,191,135,232,191,135,\r
-229,142,187,228,185,139,229,137,141,230,148,182,229,133,165,229,185,180,229,186,\r
-166,230,157,130,229,191,151,231,190,142,228,184,189,230,156,128,233,171,152,231,\r
-153,187,233,153,134,230,156,170,230,157,165,229,138,160,229,183,165,229,133,141,\r
-232,180,163,230,149,153,231,168,139,231,137,136,229,157,151,232,186,171,228,189,\r
-147,233,135,141,229,186,134,229,135,186,229,148,174,230,136,144,230,156,172,229,\r
-189,162,229,188,143,229,156,159,232,177,134,229,135,186,229,131,185,228,184,156,\r
-230,150,185,233,130,174,231,174,177,229,141,151,228,186,172,230,177,130,232,129,\r
-140,229,143,150,229,190,151,232,129,140,228,189,141,231,155,184,228,191,161,233,\r
-161,181,233,157,162,229,136,134,233,146,159,231,189,145,233,161,181,231,161,174,\r
-229,174,154,229,155,190,228,190,139,231,189,145,229,157,128,231,167,175,230,158,\r
-129,233,148,153,232,175,175,231,155,174,231,154,132,229,174,157,232,180,157,230,\r
-156,186,229,133,179,233,163,142,233,153,169,230,142,136,230,157,131,231,151,133,\r
-230,175,146,229,174,160,231,137,169,233,153,164,228,186,134,232,169,149,232,171,\r
-150,231,150,190,231,151,133,229,143,138,230,151,182,230,177,130,232,180,173,231,\r
-171,153,231,130,185,229,132,191,231,171,165,230,175,143,229,164,169,228,184,173,\r
-229,164,174,232,174,164,232,175,134,230,175,143,228,184,170,229,164,169,230,180,\r
-165,229,173,151,228,189,147,229,143,176,231,129,163,231,187,180,230,138,164,230,\r
-156,172,233,161,181,228,184,170,230,128,167,229,174,152,230,150,185,229,184,184,\r
-232,167,129,231,155,184,230,156,186,230,136,152,231,149,165,229,186,148,229,189,\r
-147,229,190,139,229,184,136,230,150,185,228,190,191,230,160,161,229,155,173,232,\r
-130,161,229,184,130,230,136,191,229,177,139,230,160,143,231,155,174,229,145,152,\r
-229,183,165,229,175,188,232,135,180,231,170,129,231,132,182,233,129,147,229,133,\r
-183,230,156,172,231,189,145,231,187,147,229,144,136,230,161,163,230,161,136,229,\r
-138,179,229,138,168,229,143,166,229,164,150,231,190,142,229,133,131,229,188,149,\r
-232,181,183,230,148,185,229,143,152,231,172,172,229,155,155,228,188,154,232,174,\r
-161,232,170,170,230,152,142,233,154,144,231,167,129,229,174,157,229,174,157,232,\r
-167,132,232,140,131,230,182,136,232,180,185,229,133,177,229,144,140,229,191,152,\r
-232,174,176,228,189,147,231,179,187,229,184,166,230,157,165,229,144,141,229,173,\r
-151,231,153,188,232,161,168,229,188,128,230,148,190,229,138,160,231,155,159,229,\r
-143,151,229,136,176,228,186,140,230,137,139,229,164,167,233,135,143,230,136,144,\r
-228,186,186,230,149,176,233,135,143,229,133,177,228,186,171,229,140,186,229,159,\r
-159,229,165,179,229,173,169,229,142,159,229,136,153,230,137,128,229,156,168,231,\r
-187,147,230,157,159,233,128,154,228,191,161,232,182,133,231,186,167,233,133,141,\r
-231,189,174,229,189,147,230,151,182,228,188,152,231,167,128,230,128,167,230,132,\r
-159,230,136,191,228,186,167,233,129,138,230,136,178,229,135,186,229,143,163,230,\r
-143,144,228,186,164,229,176,177,228,184,154,228,191,157,229,129,165,231,168,139,\r
-229,186,166,229,143,130,230,149,176,228,186,139,228,184,154,230,149,180,228,184,\r
-170,229,177,177,228,184,156,230,131,133,230,132,159,231,137,185,230,174,138,229,\r
-136,134,233,161,158,230,144,156,229,176,139,229,177,158,228,186,142,233,151,168,\r
-230,136,183,232,180,162,229,138,161,229,163,176,233,159,179,229,143,138,229,133,\r
-182,232,180,162,231,187,143,229,157,154,230,140,129,229,185,178,233,131,168,230,\r
-136,144,231,171,139,229,136,169,231,155,138,232,128,131,232,153,145,230,136,144,\r
-233,131,189,229,140,133,232,163,133,231,148,168,230,136,182,230,175,148,232,181,\r
-155,230,150,135,230,152,142,230,139,155,229,149,134,229,174,140,230,149,180,231,\r
-156,159,230,152,175,231,156,188,231,157,155,228,188,153,228,188,180,229,168,129,\r
-230,156,155,233,162,134,229,159,159,229,141,171,231,148,159,228,188,152,230,131,\r
-160,232,171,150,229,163,135,229,133,172,229,133,177,232,137,175,229,165,189,229,\r
-133,133,229,136,134,231,172,166,229,144,136,233,153,132,228,187,182,231,137,185,\r
-231,130,185,228,184,141,229,143,175,232,139,177,230,150,135,232,181,132,228,186,\r
-167,230,160,185,230,156,172,230,152,142,230,152,190,229,175,134,231,162,188,229,\r
-133,172,228,188,151,230,176,145,230,151,143,230,155,180,229,138,160,228,186,171,\r
-229,143,151,229,144,140,229,173,166,229,144,175,229,138,168,233,128,130,229,144,\r
-136,229,142,159,230,157,165,233,151,174,231,173,148,230,156,172,230,150,135,231,\r
-190,142,233,163,159,231,187,191,232,137,178,231,168,179,229,174,154,231,187,136,\r
-228,186,142,231,148,159,231,137,169,228,190,155,230,177,130,230,144,156,231,139,\r
-144,229,138,155,233,135,143,228,184,165,233,135,141,230,176,184,232,191,156,229,\r
-134,153,231,156,159,230,156,137,233,153,144,231,171,158,228,186,137,229,175,185,\r
-232,177,161,232,180,185,231,148,168,228,184,141,229,165,189,231,187,157,229,175,\r
-185,229,141,129,229,136,134,228,191,131,232,191,155,231,130,185,232,175,132,229,\r
-189,177,233,159,179,228,188,152,229,138,191,228,184,141,229,176,145,230,172,163,\r
-232,181,143,229,185,182,228,184,148,230,156,137,231,130,185,230,150,185,229,144,\r
-145,229,133,168,230,150,176,228,191,161,231,148,168,232,174,190,230,150,189,229,\r
-189,162,232,177,161,232,181,132,230,160,188,231,170,129,231,160,180,233,154,143,\r
-231,157,128,233,135,141,229,164,167,228,186,142,230,152,175,230,175,149,228,184,\r
-154,230,153,186,232,131,189,229,140,150,229,183,165,229,174,140,231,190,142,229,\r
-149,134,229,159,142,231,187,159,228,184,128,229,135,186,231,137,136,230,137,147,\r
-233,128,160,231,148,162,229,147,129,230,166,130,229,134,181,231,148,168,228,186,\r
-142,228,191,157,231,149,153,229,155,160,231,180,160,228,184,173,229,156,139,229,\r
-173,152,229,130,168,232,180,180,229,155,190,230,156,128,230,132,155,233,149,191,\r
-230,156,159,229,143,163,228,187,183,231,144,134,232,180,162,229,159,186,229,156,\r
-176,229,174,137,230,142,146,230,173,166,230,177,137,233,135,140,233,157,162,229,\r
-136,155,229,187,186,229,164,169,231,169,186,233,166,150,229,133,136,229,174,140,\r
-229,150,132,233,169,177,229,138,168,228,184,139,233,157,162,228,184,141,229,134,\r
-141,232,175,154,228,191,161,230,132,143,228,185,137,233,152,179,229,133,137,232,\r
-139,177,229,155,189,230,188,130,228,186,174,229,134,155,228,186,139,231,142,169,\r
-229,174,182,231,190,164,228,188,151,229,134,156,230,176,145,229,141,179,229,143,\r
-175,229,144,141,231,168,177,229,174,182,229,133,183,229,138,168,231,148,187,230,\r
-131,179,229,136,176,230,179,168,230,152,142,229,176,143,229,173,166,230,128,167,\r
-232,131,189,232,128,131,231,160,148,231,161,172,228,187,182,232,167,130,231,156,\r
-139,230,184,133,230,165,154,230,144,158,231,172,145,233,166,150,233,160,129,233,\r
-187,132,233,135,145,233,128,130,231,148,168,230,177,159,232,139,143,231,156,159,\r
-229,174,158,228,184,187,231,174,161,233,152,182,230,174,181,232,168,187,229,134,\r
-138,231,191,187,232,175,145,230,157,131,229,136,169,229,129,154,229,165,189,228,\r
-188,188,228,185,142,233,128,154,232,174,175,230,150,189,229,183,165,231,139,128,\r
-230,133,139,228,185,159,232,174,184,231,142,175,228,191,157,229,159,185,229,133,\r
-187,230,166,130,229,191,181,229,164,167,229,158,139,230,156,186,231,165,168,231,\r
-144,134,232,167,163,229,140,191,229,144,141,99,117,97,110,100,111,101,110,118,\r
-105,97,114,109,97,100,114,105,100,98,117,115,99,97,114,105,110,105,99,105,111,\r
-116,105,101,109,112,111,112,111,114,113,117,101,99,117,101,110,116,97,101,115,\r
-116,97,100,111,112,117,101,100,101,110,106,117,101,103,111,115,99,111,110,116,\r
-114,97,101,115,116,195,161,110,110,111,109,98,114,101,116,105,101,110,101,110,\r
-112,101,114,102,105,108,109,97,110,101,114,97,97,109,105,103,111,115,99,105,117,\r
-100,97,100,99,101,110,116,114,111,97,117,110,113,117,101,112,117,101,100,101,115\r
-,100,101,110,116,114,111,112,114,105,109,101,114,112,114,101,99,105,111,115,101,\r
-103,195,186,110,98,117,101,110,111,115,118,111,108,118,101,114,112,117,110,116,\r
-111,115,115,101,109,97,110,97,104,97,98,195,173,97,97,103,111,115,116,111,110,\r
-117,101,118,111,115,117,110,105,100,111,115,99,97,114,108,111,115,101,113,117,\r
-105,112,111,110,105,195,177,111,115,109,117,99,104,111,115,97,108,103,117,110,97\r
-,99,111,114,114,101,111,105,109,97,103,101,110,112,97,114,116,105,114,97,114,114\r
-,105,98,97,109,97,114,195,173,97,104,111,109,98,114,101,101,109,112,108,101,111,\r
-118,101,114,100,97,100,99,97,109,98,105,111,109,117,99,104,97,115,102,117,101,\r
-114,111,110,112,97,115,97,100,111,108,195,173,110,101,97,112,97,114,101,99,101,\r
-110,117,101,118,97,115,99,117,114,115,111,115,101,115,116,97,98,97,113,117,105,\r
-101,114,111,108,105,98,114,111,115,99,117,97,110,116,111,97,99,99,101,115,111,\r
-109,105,103,117,101,108,118,97,114,105,111,115,99,117,97,116,114,111,116,105,101\r
-,110,101,115,103,114,117,112,111,115,115,101,114,195,161,110,101,117,114,111,112\r
-,97,109,101,100,105,111,115,102,114,101,110,116,101,97,99,101,114,99,97,100,101,\r
-109,195,161,115,111,102,101,114,116,97,99,111,99,104,101,115,109,111,100,101,108\r
-,111,105,116,97,108,105,97,108,101,116,114,97,115,97,108,103,195,186,110,99,111,\r
-109,112,114,97,99,117,97,108,101,115,101,120,105,115,116,101,99,117,101,114,112,\r
-111,115,105,101,110,100,111,112,114,101,110,115,97,108,108,101,103,97,114,118,\r
-105,97,106,101,115,100,105,110,101,114,111,109,117,114,99,105,97,112,111,100,114\r
-,195,161,112,117,101,115,116,111,100,105,97,114,105,111,112,117,101,98,108,111,\r
-113,117,105,101,114,101,109,97,110,117,101,108,112,114,111,112,105,111,99,114,\r
-105,115,105,115,99,105,101,114,116,111,115,101,103,117,114,111,109,117,101,114,\r
-116,101,102,117,101,110,116,101,99,101,114,114,97,114,103,114,97,110,100,101,101\r
-,102,101,99,116,111,112,97,114,116,101,115,109,101,100,105,100,97,112,114,111,\r
-112,105,97,111,102,114,101,99,101,116,105,101,114,114,97,101,45,109,97,105,108,\r
-118,97,114,105,97,115,102,111,114,109,97,115,102,117,116,117,114,111,111,98,106,\r
-101,116,111,115,101,103,117,105,114,114,105,101,115,103,111,110,111,114,109,97,\r
-115,109,105,115,109,111,115,195,186,110,105,99,111,99,97,109,105,110,111,115,105\r
-,116,105,111,115,114,97,122,195,179,110,100,101,98,105,100,111,112,114,117,101,\r
-98,97,116,111,108,101,100,111,116,101,110,195,173,97,106,101,115,195,186,115,101\r
-,115,112,101,114,111,99,111,99,105,110,97,111,114,105,103,101,110,116,105,101,\r
-110,100,97,99,105,101,110,116,111,99,195,161,100,105,122,104,97,98,108,97,114,\r
-115,101,114,195,173,97,108,97,116,105,110,97,102,117,101,114,122,97,101,115,116,\r
-105,108,111,103,117,101,114,114,97,101,110,116,114,97,114,195,169,120,105,116,\r
-111,108,195,179,112,101,122,97,103,101,110,100,97,118,195,173,100,101,111,101,\r
-118,105,116,97,114,112,97,103,105,110,97,109,101,116,114,111,115,106,97,118,105,\r
-101,114,112,97,100,114,101,115,102,195,161,99,105,108,99,97,98,101,122,97,195,\r
-161,114,101,97,115,115,97,108,105,100,97,101,110,118,195,173,111,106,97,112,195,\r
-179,110,97,98,117,115,111,115,98,105,101,110,101,115,116,101,120,116,111,115,108\r
-,108,101,118,97,114,112,117,101,100,97,110,102,117,101,114,116,101,99,111,109,\r
-195,186,110,99,108,97,115,101,115,104,117,109,97,110,111,116,101,110,105,100,111\r
-,98,105,108,98,97,111,117,110,105,100,97,100,101,115,116,195,161,115,101,100,105\r
-,116,97,114,99,114,101,97,100,111,208,180,208,187,209,143,209,135,209,130,208,\r
-190,208,186,208,176,208,186,208,184,208,187,208,184,209,141,209,130,208,190,208,\r
-178,209,129,208,181,208,181,208,179,208,190,208,191,209,128,208,184,209,130,208,\r
-176,208,186,208,181,209,137,208,181,209,131,208,182,208,181,208,154,208,176,208,\r
-186,208,177,208,181,208,183,208,177,209,139,208,187,208,190,208,189,208,184,208,\r
-146,209,129,208,181,208,191,208,190,208,180,208,173,209,130,208,190,209,130,208,\r
-190,208,188,209,135,208,181,208,188,208,189,208,181,209,130,208,187,208,181,209,\r
-130,209,128,208,176,208,183,208,190,208,189,208,176,208,179,208,180,208,181,208,\r
-188,208,189,208,181,208,148,208,187,209,143,208,159,209,128,208,184,208,189,208,\r
-176,209,129,208,189,208,184,209,133,209,130,208,181,208,188,208,186,209,130,208,\r
-190,208,179,208,190,208,180,208,178,208,190,209,130,209,130,208,176,208,188,208,\r
-161,208,168,208,144,208,188,208,176,209,143,208,167,209,130,208,190,208,178,208,\r
-176,209,129,208,178,208,176,208,188,208,181,208,188,209,131,208,162,208,176,208,\r
-186,208,180,208,178,208,176,208,189,208,176,208,188,209,141,209,130,208,184,209,\r
-141,209,130,209,131,208,146,208,176,208,188,209,130,208,181,209,133,208,191,209,\r
-128,208,190,209,130,209,131,209,130,208,189,208,176,208,180,208,180,208,189,209,\r
-143,208,146,208,190,209,130,209,130,209,128,208,184,208,189,208,181,208,185,208,\r
-146,208,176,209,129,208,189,208,184,208,188,209,129,208,176,208,188,209,130,208,\r
-190,209,130,209,128,209,131,208,177,208,158,208,189,208,184,208,188,208,184,209,\r
-128,208,189,208,181,208,181,208,158,208,158,208,158,208,187,208,184,209,134,209,\r
-141,209,130,208,176,208,158,208,189,208,176,208,189,208,181,208,188,208,180,208,\r
-190,208,188,208,188,208,190,208,185,208,180,208,178,208,181,208,190,208,189,208,\r
-190,209,129,209,131,208,180,224,164,149,224,165,135,224,164,185,224,165,136,224,\r
-164,149,224,165,128,224,164,184,224,165,135,224,164,149,224,164,190,224,164,149,\r
-224,165,139,224,164,148,224,164,176,224,164,170,224,164,176,224,164,168,224,165,\r
-135,224,164,143,224,164,149,224,164,149,224,164,191,224,164,173,224,165,128,224,\r
-164,135,224,164,184,224,164,149,224,164,176,224,164,164,224,165,139,224,164,185,\r
-224,165,139,224,164,134,224,164,170,224,164,185,224,165,128,224,164,175,224,164,\r
-185,224,164,175,224,164,190,224,164,164,224,164,149,224,164,165,224,164,190,106,\r
-97,103,114,97,110,224,164,134,224,164,156,224,164,156,224,165,139,224,164,133,\r
-224,164,172,224,164,166,224,165,139,224,164,151,224,164,136,224,164,156,224,164,\r
-190,224,164,151,224,164,143,224,164,185,224,164,174,224,164,135,224,164,168,224,\r
-164,181,224,164,185,224,164,175,224,165,135,224,164,165,224,165,135,224,164,165,\r
-224,165,128,224,164,152,224,164,176,224,164,156,224,164,172,224,164,166,224,165,\r
-128,224,164,149,224,164,136,224,164,156,224,165,128,224,164,181,224,165,135,224,\r
-164,168,224,164,136,224,164,168,224,164,143,224,164,185,224,164,176,224,164,137,\r
-224,164,184,224,164,174,224,165,135,224,164,149,224,164,174,224,164,181,224,165,\r
-139,224,164,178,224,165,135,224,164,184,224,164,172,224,164,174,224,164,136,224,\r
-164,166,224,165,135,224,164,147,224,164,176,224,164,134,224,164,174,224,164,172,\r
-224,164,184,224,164,173,224,164,176,224,164,172,224,164,168,224,164,154,224,164,\r
-178,224,164,174,224,164,168,224,164,134,224,164,151,224,164,184,224,165,128,224,\r
-164,178,224,165,128,216,185,217,132,217,137,216,165,217,132,217,137,217,135,216,\r
-176,216,167,216,162,216,174,216,177,216,185,216,175,216,175,216,167,217,132,217,\r
-137,217,135,216,176,217,135,216,181,217,136,216,177,216,186,217,138,216,177,217,\r
-131,216,167,217,134,217,136,217,132,216,167,216,168,217,138,217,134,216,185,216,\r
-177,216,182,216,176,217,132,217,131,217,135,217,134,216,167,217,138,217,136,217,\r
-133,217,130,216,167,217,132,216,185,217,132,217,138,216,167,217,134,216,167,217,\r
-132,217,131,217,134,216,173,216,170,217,137,217,130,216,168,217,132,217,136,216,\r
-173,216,169,216,167,216,174,216,177,217,129,217,130,216,183,216,185,216,168,216,\r
-175,216,177,217,131,217,134,216,165,216,176,216,167,217,131,217,133,216,167,216,\r
-167,216,173,216,175,216,165,217,132,216,167,217,129,217,138,217,135,216,168,216,\r
-185,216,182,217,131,217,138,217,129,216,168,216,173,216,171,217,136,217,133,217,\r
-134,217,136,217,135,217,136,216,163,217,134,216,167,216,172,216,175,216,167,217,\r
-132,217,135,216,167,216,179,217,132,217,133,216,185,217,134,216,175,217,132,217,\r
-138,216,179,216,185,216,168,216,177,216,181,217,132,217,137,217,133,217,134,216,\r
-176,216,168,217,135,216,167,216,163,217,134,217,135,217,133,216,171,217,132,217,\r
-131,217,134,216,170,216,167,217,132,216,167,216,173,217,138,216,171,217,133,216,\r
-181,216,177,216,180,216,177,216,173,216,173,217,136,217,132,217,136,217,129,217,\r
-138,216,167,216,176,216,167,217,132,217,131,217,132,217,133,216,177,216,169,216,\r
-167,217,134,216,170,216,167,217,132,217,129,216,163,216,168,217,136,216,174,216,\r
-167,216,181,216,163,217,134,216,170,216,167,217,134,217,135,216,167,217,132,217,\r
-138,216,185,216,182,217,136,217,136,217,130,216,175,216,167,216,168,217,134,216,\r
-174,217,138,216,177,216,168,217,134,216,170,217,132,217,131,217,133,216,180,216,\r
-167,216,161,217,136,217,135,217,138,216,167,216,168,217,136,217,130,216,181,216,\r
-181,217,136,217,133,216,167,216,177,217,130,217,133,216,163,216,173,216,175,217,\r
-134,216,173,217,134,216,185,216,175,217,133,216,177,216,163,217,138,216,167,216,\r
-173,216,169,217,131,216,170,216,168,216,175,217,136,217,134,217,138,216,172,216,\r
-168,217,133,217,134,217,135,216,170,216,173,216,170,216,172,217,135,216,169,216,\r
-179,217,134,216,169,217,138,216,170,217,133,217,131,216,177,216,169,216,186,216,\r
-178,216,169,217,134,217,129,216,179,216,168,217,138,216,170,217,132,217,132,217,\r
-135,217,132,217,134,216,167,216,170,217,132,217,131,217,130,217,132,216,168,217,\r
-132,217,133,216,167,216,185,217,134,217,135,216,163,217,136,217,132,216,180,217,\r
-138,216,161,217,134,217,136,216,177,216,163,217,133,216,167,217,129,217,138,217,\r
-131,216,168,217,131,217,132,216,176,216,167,216,170,216,177,216,170,216,168,216,\r
-168,216,163,217,134,217,135,217,133,216,179,216,167,217,134,217,131,216,168,217,\r
-138,216,185,217,129,217,130,216,175,216,173,216,179,217,134,217,132,217,135,217,\r
-133,216,180,216,185,216,177,216,163,217,135,217,132,216,180,217,135,216,177,217,\r
-130,216,183,216,177,216,183,217,132,216,168,112,114,111,102,105,108,101,115,101,\r
-114,118,105,99,101,100,101,102,97,117,108,116,104,105,109,115,101,108,102,100,\r
-101,116,97,105,108,115,99,111,110,116,101,110,116,115,117,112,112,111,114,116,\r
-115,116,97,114,116,101,100,109,101,115,115,97,103,101,115,117,99,99,101,115,115,\r
-102,97,115,104,105,111,110,60,116,105,116,108,101,62,99,111,117,110,116,114,121,\r
-97,99,99,111,117,110,116,99,114,101,97,116,101,100,115,116,111,114,105,101,115,\r
-114,101,115,117,108,116,115,114,117,110,110,105,110,103,112,114,111,99,101,115,\r
-115,119,114,105,116,105,110,103,111,98,106,101,99,116,115,118,105,115,105,98,108\r
-,101,119,101,108,99,111,109,101,97,114,116,105,99,108,101,117,110,107,110,111,\r
-119,110,110,101,116,119,111,114,107,99,111,109,112,97,110,121,100,121,110,97,109\r
-,105,99,98,114,111,119,115,101,114,112,114,105,118,97,99,121,112,114,111,98,108,\r
-101,109,83,101,114,118,105,99,101,114,101,115,112,101,99,116,100,105,115,112,108\r
-,97,121,114,101,113,117,101,115,116,114,101,115,101,114,118,101,119,101,98,115,\r
-105,116,101,104,105,115,116,111,114,121,102,114,105,101,110,100,115,111,112,116,\r
-105,111,110,115,119,111,114,107,105,110,103,118,101,114,115,105,111,110,109,105,\r
-108,108,105,111,110,99,104,97,110,110,101,108,119,105,110,100,111,119,46,97,100,\r
-100,114,101,115,115,118,105,115,105,116,101,100,119,101,97,116,104,101,114,99,\r
-111,114,114,101,99,116,112,114,111,100,117,99,116,101,100,105,114,101,99,116,102\r
-,111,114,119,97,114,100,121,111,117,32,99,97,110,114,101,109,111,118,101,100,115\r
-,117,98,106,101,99,116,99,111,110,116,114,111,108,97,114,99,104,105,118,101,99,\r
-117,114,114,101,110,116,114,101,97,100,105,110,103,108,105,98,114,97,114,121,108\r
-,105,109,105,116,101,100,109,97,110,97,103,101,114,102,117,114,116,104,101,114,\r
-115,117,109,109,97,114,121,109,97,99,104,105,110,101,109,105,110,117,116,101,115\r
-,112,114,105,118,97,116,101,99,111,110,116,101,120,116,112,114,111,103,114,97,\r
-109,115,111,99,105,101,116,121,110,117,109,98,101,114,115,119,114,105,116,116,\r
-101,110,101,110,97,98,108,101,100,116,114,105,103,103,101,114,115,111,117,114,99\r
-,101,115,108,111,97,100,105,110,103,101,108,101,109,101,110,116,112,97,114,116,\r
-110,101,114,102,105,110,97,108,108,121,112,101,114,102,101,99,116,109,101,97,110\r
-,105,110,103,115,121,115,116,101,109,115,107,101,101,112,105,110,103,99,117,108,\r
-116,117,114,101,38,113,117,111,116,59,44,106,111,117,114,110,97,108,112,114,111,\r
-106,101,99,116,115,117,114,102,97,99,101,115,38,113,117,111,116,59,101,120,112,\r
-105,114,101,115,114,101,118,105,101,119,115,98,97,108,97,110,99,101,69,110,103,\r
-108,105,115,104,67,111,110,116,101,110,116,116,104,114,111,117,103,104,80,108,\r
-101,97,115,101,32,111,112,105,110,105,111,110,99,111,110,116,97,99,116,97,118,\r
-101,114,97,103,101,112,114,105,109,97,114,121,118,105,108,108,97,103,101,83,112,\r
-97,110,105,115,104,103,97,108,108,101,114,121,100,101,99,108,105,110,101,109,101\r
-,101,116,105,110,103,109,105,115,115,105,111,110,112,111,112,117,108,97,114,113,\r
-117,97,108,105,116,121,109,101,97,115,117,114,101,103,101,110,101,114,97,108,115\r
-,112,101,99,105,101,115,115,101,115,115,105,111,110,115,101,99,116,105,111,110,\r
-119,114,105,116,101,114,115,99,111,117,110,116,101,114,105,110,105,116,105,97,\r
-108,114,101,112,111,114,116,115,102,105,103,117,114,101,115,109,101,109,98,101,\r
-114,115,104,111,108,100,105,110,103,100,105,115,112,117,116,101,101,97,114,108,\r
-105,101,114,101,120,112,114,101,115,115,100,105,103,105,116,97,108,112,105,99,\r
-116,117,114,101,65,110,111,116,104,101,114,109,97,114,114,105,101,100,116,114,97\r
-,102,102,105,99,108,101,97,100,105,110,103,99,104,97,110,103,101,100,99,101,110,\r
-116,114,97,108,118,105,99,116,111,114,121,105,109,97,103,101,115,47,114,101,97,\r
-115,111,110,115,115,116,117,100,105,101,115,102,101,97,116,117,114,101,108,105,\r
-115,116,105,110,103,109,117,115,116,32,98,101,115,99,104,111,111,108,115,86,101,\r
-114,115,105,111,110,117,115,117,97,108,108,121,101,112,105,115,111,100,101,112,\r
-108,97,121,105,110,103,103,114,111,119,105,110,103,111,98,118,105,111,117,115,\r
-111,118,101,114,108,97,121,112,114,101,115,101,110,116,97,99,116,105,111,110,115\r
-,60,47,117,108,62,13,10,119,114,97,112,112,101,114,97,108,114,101,97,100,121,99,\r
-101,114,116,97,105,110,114,101,97,108,105,116,121,115,116,111,114,97,103,101,97,\r
-110,111,116,104,101,114,100,101,115,107,116,111,112,111,102,102,101,114,101,100,\r
-112,97,116,116,101,114,110,117,110,117,115,117,97,108,68,105,103,105,116,97,108,\r
-99,97,112,105,116,97,108,87,101,98,115,105,116,101,102,97,105,108,117,114,101,99\r
-,111,110,110,101,99,116,114,101,100,117,99,101,100,65,110,100,114,111,105,100,\r
-100,101,99,97,100,101,115,114,101,103,117,108,97,114,32,38,97,109,112,59,32,97,\r
-110,105,109,97,108,115,114,101,108,101,97,115,101,65,117,116,111,109,97,116,103,\r
-101,116,116,105,110,103,109,101,116,104,111,100,115,110,111,116,104,105,110,103,\r
-80,111,112,117,108,97,114,99,97,112,116,105,111,110,108,101,116,116,101,114,115,\r
-99,97,112,116,117,114,101,115,99,105,101,110,99,101,108,105,99,101,110,115,101,\r
-99,104,97,110,103,101,115,69,110,103,108,97,110,100,61,49,38,97,109,112,59,72,\r
-105,115,116,111,114,121,32,61,32,110,101,119,32,67,101,110,116,114,97,108,117,\r
-112,100,97,116,101,100,83,112,101,99,105,97,108,78,101,116,119,111,114,107,114,\r
-101,113,117,105,114,101,99,111,109,109,101,110,116,119,97,114,110,105,110,103,67\r
-,111,108,108,101,103,101,116,111,111,108,98,97,114,114,101,109,97,105,110,115,98\r
-,101,99,97,117,115,101,101,108,101,99,116,101,100,68,101,117,116,115,99,104,102,\r
-105,110,97,110,99,101,119,111,114,107,101,114,115,113,117,105,99,107,108,121,98,\r
-101,116,119,101,101,110,101,120,97,99,116,108,121,115,101,116,116,105,110,103,\r
-100,105,115,101,97,115,101,83,111,99,105,101,116,121,119,101,97,112,111,110,115,\r
-101,120,104,105,98,105,116,38,108,116,59,33,45,45,67,111,110,116,114,111,108,99,\r
-108,97,115,115,101,115,99,111,118,101,114,101,100,111,117,116,108,105,110,101,97\r
-,116,116,97,99,107,115,100,101,118,105,99,101,115,40,119,105,110,100,111,119,112\r
-,117,114,112,111,115,101,116,105,116,108,101,61,34,77,111,98,105,108,101,32,107,\r
-105,108,108,105,110,103,115,104,111,119,105,110,103,73,116,97,108,105,97,110,100\r
-,114,111,112,112,101,100,104,101,97,118,105,108,121,101,102,102,101,99,116,115,\r
-45,49,39,93,41,59,10,99,111,110,102,105,114,109,67,117,114,114,101,110,116,97,\r
-100,118,97,110,99,101,115,104,97,114,105,110,103,111,112,101,110,105,110,103,100\r
-,114,97,119,105,110,103,98,105,108,108,105,111,110,111,114,100,101,114,101,100,\r
-71,101,114,109,97,110,121,114,101,108,97,116,101,100,60,47,102,111,114,109,62,\r
-105,110,99,108,117,100,101,119,104,101,116,104,101,114,100,101,102,105,110,101,\r
-100,83,99,105,101,110,99,101,99,97,116,97,108,111,103,65,114,116,105,99,108,101,\r
-98,117,116,116,111,110,115,108,97,114,103,101,115,116,117,110,105,102,111,114,\r
-109,106,111,117,114,110,101,121,115,105,100,101,98,97,114,67,104,105,99,97,103,\r
-111,104,111,108,105,100,97,121,71,101,110,101,114,97,108,112,97,115,115,97,103,\r
-101,44,38,113,117,111,116,59,97,110,105,109,97,116,101,102,101,101,108,105,110,\r
-103,97,114,114,105,118,101,100,112,97,115,115,105,110,103,110,97,116,117,114,97,\r
-108,114,111,117,103,104,108,121,46,10,10,84,104,101,32,98,117,116,32,110,111,116\r
-,100,101,110,115,105,116,121,66,114,105,116,97,105,110,67,104,105,110,101,115,\r
-101,108,97,99,107,32,111,102,116,114,105,98,117,116,101,73,114,101,108,97,110,\r
-100,34,32,100,97,116,97,45,102,97,99,116,111,114,115,114,101,99,101,105,118,101,\r
-116,104,97,116,32,105,115,76,105,98,114,97,114,121,104,117,115,98,97,110,100,105\r
-,110,32,102,97,99,116,97,102,102,97,105,114,115,67,104,97,114,108,101,115,114,97\r
-,100,105,99,97,108,98,114,111,117,103,104,116,102,105,110,100,105,110,103,108,97\r
-,110,100,105,110,103,58,108,97,110,103,61,34,114,101,116,117,114,110,32,108,101,\r
-97,100,101,114,115,112,108,97,110,110,101,100,112,114,101,109,105,117,109,112,97\r
-,99,107,97,103,101,65,109,101,114,105,99,97,69,100,105,116,105,111,110,93,38,113\r
-,117,111,116,59,77,101,115,115,97,103,101,110,101,101,100,32,116,111,118,97,108,\r
-117,101,61,34,99,111,109,112,108,101,120,108,111,111,107,105,110,103,115,116,97,\r
-116,105,111,110,98,101,108,105,101,118,101,115,109,97,108,108,101,114,45,109,111\r
-,98,105,108,101,114,101,99,111,114,100,115,119,97,110,116,32,116,111,107,105,110\r
-,100,32,111,102,70,105,114,101,102,111,120,121,111,117,32,97,114,101,115,105,109\r
-,105,108,97,114,115,116,117,100,105,101,100,109,97,120,105,109,117,109,104,101,\r
-97,100,105,110,103,114,97,112,105,100,108,121,99,108,105,109,97,116,101,107,105,\r
-110,103,100,111,109,101,109,101,114,103,101,100,97,109,111,117,110,116,115,102,\r
-111,117,110,100,101,100,112,105,111,110,101,101,114,102,111,114,109,117,108,97,\r
-100,121,110,97,115,116,121,104,111,119,32,116,111,32,83,117,112,112,111,114,116,\r
-114,101,118,101,110,117,101,101,99,111,110,111,109,121,82,101,115,117,108,116,\r
-115,98,114,111,116,104,101,114,115,111,108,100,105,101,114,108,97,114,103,101,\r
-108,121,99,97,108,108,105,110,103,46,38,113,117,111,116,59,65,99,99,111,117,110,\r
-116,69,100,119,97,114,100,32,115,101,103,109,101,110,116,82,111,98,101,114,116,\r
-32,101,102,102,111,114,116,115,80,97,99,105,102,105,99,108,101,97,114,110,101,\r
-100,117,112,32,119,105,116,104,104,101,105,103,104,116,58,119,101,32,104,97,118,\r
-101,65,110,103,101,108,101,115,110,97,116,105,111,110,115,95,115,101,97,114,99,\r
-104,97,112,112,108,105,101,100,97,99,113,117,105,114,101,109,97,115,115,105,118,\r
-101,103,114,97,110,116,101,100,58,32,102,97,108,115,101,116,114,101,97,116,101,\r
-100,98,105,103,103,101,115,116,98,101,110,101,102,105,116,100,114,105,118,105,\r
-110,103,83,116,117,100,105,101,115,109,105,110,105,109,117,109,112,101,114,104,\r
-97,112,115,109,111,114,110,105,110,103,115,101,108,108,105,110,103,105,115,32,\r
-117,115,101,100,114,101,118,101,114,115,101,118,97,114,105,97,110,116,32,114,111\r
-,108,101,61,34,109,105,115,115,105,110,103,97,99,104,105,101,118,101,112,114,111\r
-,109,111,116,101,115,116,117,100,101,110,116,115,111,109,101,111,110,101,101,120\r
-,116,114,101,109,101,114,101,115,116,111,114,101,98,111,116,116,111,109,58,101,\r
-118,111,108,118,101,100,97,108,108,32,116,104,101,115,105,116,101,109,97,112,101\r
-,110,103,108,105,115,104,119,97,121,32,116,111,32,32,65,117,103,117,115,116,115,\r
-121,109,98,111,108,115,67,111,109,112,97,110,121,109,97,116,116,101,114,115,109,\r
-117,115,105,99,97,108,97,103,97,105,110,115,116,115,101,114,118,105,110,103,125,\r
-41,40,41,59,13,10,112,97,121,109,101,110,116,116,114,111,117,98,108,101,99,111,\r
-110,99,101,112,116,99,111,109,112,97,114,101,112,97,114,101,110,116,115,112,108,\r
-97,121,101,114,115,114,101,103,105,111,110,115,109,111,110,105,116,111,114,32,39\r
-,39,84,104,101,32,119,105,110,110,105,110,103,101,120,112,108,111,114,101,97,100\r
-,97,112,116,101,100,71,97,108,108,101,114,121,112,114,111,100,117,99,101,97,98,\r
-105,108,105,116,121,101,110,104,97,110,99,101,99,97,114,101,101,114,115,41,46,32\r
-,84,104,101,32,99,111,108,108,101,99,116,83,101,97,114,99,104,32,97,110,99,105,\r
-101,110,116,101,120,105,115,116,101,100,102,111,111,116,101,114,32,104,97,110,\r
-100,108,101,114,112,114,105,110,116,101,100,99,111,110,115,111,108,101,69,97,115\r
-,116,101,114,110,101,120,112,111,114,116,115,119,105,110,100,111,119,115,67,104,\r
-97,110,110,101,108,105,108,108,101,103,97,108,110,101,117,116,114,97,108,115,117\r
-,103,103,101,115,116,95,104,101,97,100,101,114,115,105,103,110,105,110,103,46,\r
-104,116,109,108,34,62,115,101,116,116,108,101,100,119,101,115,116,101,114,110,99\r
-,97,117,115,105,110,103,45,119,101,98,107,105,116,99,108,97,105,109,101,100,74,\r
-117,115,116,105,99,101,99,104,97,112,116,101,114,118,105,99,116,105,109,115,84,\r
-104,111,109,97,115,32,109,111,122,105,108,108,97,112,114,111,109,105,115,101,112\r
-,97,114,116,105,101,115,101,100,105,116,105,111,110,111,117,116,115,105,100,101,\r
-58,102,97,108,115,101,44,104,117,110,100,114,101,100,79,108,121,109,112,105,99,\r
-95,98,117,116,116,111,110,97,117,116,104,111,114,115,114,101,97,99,104,101,100,\r
-99,104,114,111,110,105,99,100,101,109,97,110,100,115,115,101,99,111,110,100,115,\r
-112,114,111,116,101,99,116,97,100,111,112,116,101,100,112,114,101,112,97,114,101\r
-,110,101,105,116,104,101,114,103,114,101,97,116,108,121,103,114,101,97,116,101,\r
-114,111,118,101,114,97,108,108,105,109,112,114,111,118,101,99,111,109,109,97,110\r
-,100,115,112,101,99,105,97,108,115,101,97,114,99,104,46,119,111,114,115,104,105,\r
-112,102,117,110,100,105,110,103,116,104,111,117,103,104,116,104,105,103,104,101,\r
-115,116,105,110,115,116,101,97,100,117,116,105,108,105,116,121,113,117,97,114,\r
-116,101,114,67,117,108,116,117,114,101,116,101,115,116,105,110,103,99,108,101,97\r
-,114,108,121,101,120,112,111,115,101,100,66,114,111,119,115,101,114,108,105,98,\r
-101,114,97,108,125,32,99,97,116,99,104,80,114,111,106,101,99,116,101,120,97,109,\r
-112,108,101,104,105,100,101,40,41,59,70,108,111,114,105,100,97,97,110,115,119,\r
-101,114,115,97,108,108,111,119,101,100,69,109,112,101,114,111,114,100,101,102,\r
-101,110,115,101,115,101,114,105,111,117,115,102,114,101,101,100,111,109,83,101,\r
-118,101,114,97,108,45,98,117,116,116,111,110,70,117,114,116,104,101,114,111,117,\r
-116,32,111,102,32,33,61,32,110,117,108,108,116,114,97,105,110,101,100,68,101,110\r
-,109,97,114,107,118,111,105,100,40,48,41,47,97,108,108,46,106,115,112,114,101,\r
-118,101,110,116,82,101,113,117,101,115,116,83,116,101,112,104,101,110,10,10,87,\r
-104,101,110,32,111,98,115,101,114,118,101,60,47,104,50,62,13,10,77,111,100,101,\r
-114,110,32,112,114,111,118,105,100,101,34,32,97,108,116,61,34,98,111,114,100,101\r
-,114,115,46,10,10,70,111,114,32,10,10,77,97,110,121,32,97,114,116,105,115,116,\r
-115,112,111,119,101,114,101,100,112,101,114,102,111,114,109,102,105,99,116,105,\r
-111,110,116,121,112,101,32,111,102,109,101,100,105,99,97,108,116,105,99,107,101,\r
-116,115,111,112,112,111,115,101,100,67,111,117,110,99,105,108,119,105,116,110,\r
-101,115,115,106,117,115,116,105,99,101,71,101,111,114,103,101,32,66,101,108,103,\r
-105,117,109,46,46,46,60,47,97,62,116,119,105,116,116,101,114,110,111,116,97,98,\r
-108,121,119,97,105,116,105,110,103,119,97,114,102,97,114,101,32,79,116,104,101,\r
-114,32,114,97,110,107,105,110,103,112,104,114,97,115,101,115,109,101,110,116,105\r
-,111,110,115,117,114,118,105,118,101,115,99,104,111,108,97,114,60,47,112,62,13,\r
-10,32,67,111,117,110,116,114,121,105,103,110,111,114,101,100,108,111,115,115,32,\r
-111,102,106,117,115,116,32,97,115,71,101,111,114,103,105,97,115,116,114,97,110,\r
-103,101,60,104,101,97,100,62,60,115,116,111,112,112,101,100,49,39,93,41,59,13,10\r
-,105,115,108,97,110,100,115,110,111,116,97,98,108,101,98,111,114,100,101,114,58,\r
-108,105,115,116,32,111,102,99,97,114,114,105,101,100,49,48,48,44,48,48,48,60,47,\r
-104,51,62,10,32,115,101,118,101,114,97,108,98,101,99,111,109,101,115,115,101,108\r
-,101,99,116,32,119,101,100,100,105,110,103,48,48,46,104,116,109,108,109,111,110,\r
-97,114,99,104,111,102,102,32,116,104,101,116,101,97,99,104,101,114,104,105,103,\r
-104,108,121,32,98,105,111,108,111,103,121,108,105,102,101,32,111,102,111,114,32,\r
-101,118,101,110,114,105,115,101,32,111,102,38,114,97,113,117,111,59,112,108,117,\r
-115,111,110,101,104,117,110,116,105,110,103,40,116,104,111,117,103,104,68,111,\r
-117,103,108,97,115,106,111,105,110,105,110,103,99,105,114,99,108,101,115,70,111,\r
-114,32,116,104,101,65,110,99,105,101,110,116,86,105,101,116,110,97,109,118,101,\r
-104,105,99,108,101,115,117,99,104,32,97,115,99,114,121,115,116,97,108,118,97,108\r
-,117,101,32,61,87,105,110,100,111,119,115,101,110,106,111,121,101,100,97,32,115,\r
-109,97,108,108,97,115,115,117,109,101,100,60,97,32,105,100,61,34,102,111,114,101\r
-,105,103,110,32,65,108,108,32,114,105,104,111,119,32,116,104,101,68,105,115,112,\r
-108,97,121,114,101,116,105,114,101,100,104,111,119,101,118,101,114,104,105,100,\r
-100,101,110,59,98,97,116,116,108,101,115,115,101,101,107,105,110,103,99,97,98,\r
-105,110,101,116,119,97,115,32,110,111,116,108,111,111,107,32,97,116,99,111,110,\r
-100,117,99,116,103,101,116,32,116,104,101,74,97,110,117,97,114,121,104,97,112,\r
-112,101,110,115,116,117,114,110,105,110,103,97,58,104,111,118,101,114,79,110,108\r
-,105,110,101,32,70,114,101,110,99,104,32,108,97,99,107,105,110,103,116,121,112,\r
-105,99,97,108,101,120,116,114,97,99,116,101,110,101,109,105,101,115,101,118,101,\r
-110,32,105,102,103,101,110,101,114,97,116,100,101,99,105,100,101,100,97,114,101,\r
-32,110,111,116,47,115,101,97,114,99,104,98,101,108,105,101,102,115,45,105,109,97\r
-,103,101,58,108,111,99,97,116,101,100,115,116,97,116,105,99,46,108,111,103,105,\r
-110,34,62,99,111,110,118,101,114,116,118,105,111,108,101,110,116,101,110,116,101\r
-,114,101,100,102,105,114,115,116,34,62,99,105,114,99,117,105,116,70,105,110,108,\r
-97,110,100,99,104,101,109,105,115,116,115,104,101,32,119,97,115,49,48,112,120,59\r
-,34,62,97,115,32,115,117,99,104,100,105,118,105,100,101,100,60,47,115,112,97,110\r
-,62,119,105,108,108,32,98,101,108,105,110,101,32,111,102,97,32,103,114,101,97,\r
-116,109,121,115,116,101,114,121,47,105,110,100,101,120,46,102,97,108,108,105,110\r
-,103,100,117,101,32,116,111,32,114,97,105,108,119,97,121,99,111,108,108,101,103,\r
-101,109,111,110,115,116,101,114,100,101,115,99,101,110,116,105,116,32,119,105,\r
-116,104,110,117,99,108,101,97,114,74,101,119,105,115,104,32,112,114,111,116,101,\r
-115,116,66,114,105,116,105,115,104,102,108,111,119,101,114,115,112,114,101,100,\r
-105,99,116,114,101,102,111,114,109,115,98,117,116,116,111,110,32,119,104,111,32,\r
-119,97,115,108,101,99,116,117,114,101,105,110,115,116,97,110,116,115,117,105,99,\r
-105,100,101,103,101,110,101,114,105,99,112,101,114,105,111,100,115,109,97,114,\r
-107,101,116,115,83,111,99,105,97,108,32,102,105,115,104,105,110,103,99,111,109,\r
-98,105,110,101,103,114,97,112,104,105,99,119,105,110,110,101,114,115,60,98,114,\r
-32,47,62,60,98,121,32,116,104,101,32,78,97,116,117,114,97,108,80,114,105,118,97,\r
-99,121,99,111,111,107,105,101,115,111,117,116,99,111,109,101,114,101,115,111,108\r
-,118,101,83,119,101,100,105,115,104,98,114,105,101,102,108,121,80,101,114,115,\r
-105,97,110,115,111,32,109,117,99,104,67,101,110,116,117,114,121,100,101,112,105,\r
-99,116,115,99,111,108,117,109,110,115,104,111,117,115,105,110,103,115,99,114,105\r
-,112,116,115,110,101,120,116,32,116,111,98,101,97,114,105,110,103,109,97,112,112\r
-,105,110,103,114,101,118,105,115,101,100,106,81,117,101,114,121,40,45,119,105,\r
-100,116,104,58,116,105,116,108,101,34,62,116,111,111,108,116,105,112,83,101,99,\r
-116,105,111,110,100,101,115,105,103,110,115,84,117,114,107,105,115,104,121,111,\r
-117,110,103,101,114,46,109,97,116,99,104,40,125,41,40,41,59,10,10,98,117,114,110\r
-,105,110,103,111,112,101,114,97,116,101,100,101,103,114,101,101,115,115,111,117,\r
-114,99,101,61,82,105,99,104,97,114,100,99,108,111,115,101,108,121,112,108,97,115\r
-,116,105,99,101,110,116,114,105,101,115,60,47,116,114,62,13,10,99,111,108,111,\r
-114,58,35,117,108,32,105,100,61,34,112,111,115,115,101,115,115,114,111,108,108,\r
-105,110,103,112,104,121,115,105,99,115,102,97,105,108,105,110,103,101,120,101,99\r
-,117,116,101,99,111,110,116,101,115,116,108,105,110,107,32,116,111,68,101,102,97\r
-,117,108,116,60,98,114,32,47,62,10,58,32,116,114,117,101,44,99,104,97,114,116,\r
-101,114,116,111,117,114,105,115,109,99,108,97,115,115,105,99,112,114,111,99,101,\r
-101,100,101,120,112,108,97,105,110,60,47,104,49,62,13,10,111,110,108,105,110,101\r
-,46,63,120,109,108,32,118,101,104,101,108,112,105,110,103,100,105,97,109,111,110\r
-,100,117,115,101,32,116,104,101,97,105,114,108,105,110,101,101,110,100,32,45,45,\r
-62,41,46,97,116,116,114,40,114,101,97,100,101,114,115,104,111,115,116,105,110,\r
-103,35,102,102,102,102,102,102,114,101,97,108,105,122,101,86,105,110,99,101,110,\r
-116,115,105,103,110,97,108,115,32,115,114,99,61,34,47,80,114,111,100,117,99,116,\r
-100,101,115,112,105,116,101,100,105,118,101,114,115,101,116,101,108,108,105,110,\r
-103,80,117,98,108,105,99,32,104,101,108,100,32,105,110,74,111,115,101,112,104,32\r
-,116,104,101,97,116,114,101,97,102,102,101,99,116,115,60,115,116,121,108,101,62,\r
-97,32,108,97,114,103,101,100,111,101,115,110,39,116,108,97,116,101,114,44,32,69,\r
-108,101,109,101,110,116,102,97,118,105,99,111,110,99,114,101,97,116,111,114,72,\r
-117,110,103,97,114,121,65,105,114,112,111,114,116,115,101,101,32,116,104,101,115\r
-,111,32,116,104,97,116,77,105,99,104,97,101,108,83,121,115,116,101,109,115,80,\r
-114,111,103,114,97,109,115,44,32,97,110,100,32,32,119,105,100,116,104,61,101,38,\r
-113,117,111,116,59,116,114,97,100,105,110,103,108,101,102,116,34,62,10,112,101,\r
-114,115,111,110,115,71,111,108,100,101,110,32,65,102,102,97,105,114,115,103,114,\r
-97,109,109,97,114,102,111,114,109,105,110,103,100,101,115,116,114,111,121,105,\r
-100,101,97,32,111,102,99,97,115,101,32,111,102,111,108,100,101,115,116,32,116,\r
-104,105,115,32,105,115,46,115,114,99,32,61,32,99,97,114,116,111,111,110,114,101,\r
-103,105,115,116,114,67,111,109,109,111,110,115,77,117,115,108,105,109,115,87,104\r
-,97,116,32,105,115,105,110,32,109,97,110,121,109,97,114,107,105,110,103,114,101,\r
-118,101,97,108,115,73,110,100,101,101,100,44,101,113,117,97,108,108,121,47,115,\r
-104,111,119,95,97,111,117,116,100,111,111,114,101,115,99,97,112,101,40,65,117,\r
-115,116,114,105,97,103,101,110,101,116,105,99,115,121,115,116,101,109,44,73,110,\r
-32,116,104,101,32,115,105,116,116,105,110,103,72,101,32,97,108,115,111,73,115,\r
-108,97,110,100,115,65,99,97,100,101,109,121,10,9,9,60,33,45,45,68,97,110,105,101\r
-,108,32,98,105,110,100,105,110,103,98,108,111,99,107,34,62,105,109,112,111,115,\r
-101,100,117,116,105,108,105,122,101,65,98,114,97,104,97,109,40,101,120,99,101,\r
-112,116,123,119,105,100,116,104,58,112,117,116,116,105,110,103,41,46,104,116,109\r
-,108,40,124,124,32,91,93,59,10,68,65,84,65,91,32,42,107,105,116,99,104,101,110,\r
-109,111,117,110,116,101,100,97,99,116,117,97,108,32,100,105,97,108,101,99,116,\r
-109,97,105,110,108,121,32,95,98,108,97,110,107,39,105,110,115,116,97,108,108,101\r
-,120,112,101,114,116,115,105,102,40,116,121,112,101,73,116,32,97,108,115,111,38,\r
-99,111,112,121,59,32,34,62,84,101,114,109,115,98,111,114,110,32,105,110,79,112,\r
-116,105,111,110,115,101,97,115,116,101,114,110,116,97,108,107,105,110,103,99,111\r
-,110,99,101,114,110,103,97,105,110,101,100,32,111,110,103,111,105,110,103,106,\r
-117,115,116,105,102,121,99,114,105,116,105,99,115,102,97,99,116,111,114,121,105,\r
-116,115,32,111,119,110,97,115,115,97,117,108,116,105,110,118,105,116,101,100,108\r
-,97,115,116,105,110,103,104,105,115,32,111,119,110,104,114,101,102,61,34,47,34,\r
-32,114,101,108,61,34,100,101,118,101,108,111,112,99,111,110,99,101,114,116,100,\r
-105,97,103,114,97,109,100,111,108,108,97,114,115,99,108,117,115,116,101,114,112,\r
-104,112,63,105,100,61,97,108,99,111,104,111,108,41,59,125,41,40,41,59,117,115,\r
-105,110,103,32,97,62,60,115,112,97,110,62,118,101,115,115,101,108,115,114,101,\r
-118,105,118,97,108,65,100,100,114,101,115,115,97,109,97,116,101,117,114,97,110,\r
-100,114,111,105,100,97,108,108,101,103,101,100,105,108,108,110,101,115,115,119,\r
-97,108,107,105,110,103,99,101,110,116,101,114,115,113,117,97,108,105,102,121,109\r
-,97,116,99,104,101,115,117,110,105,102,105,101,100,101,120,116,105,110,99,116,68\r
-,101,102,101,110,115,101,100,105,101,100,32,105,110,10,9,60,33,45,45,32,99,117,\r
-115,116,111,109,115,108,105,110,107,105,110,103,76,105,116,116,108,101,32,66,111\r
-,111,107,32,111,102,101,118,101,110,105,110,103,109,105,110,46,106,115,63,97,114\r
-,101,32,116,104,101,107,111,110,116,97,107,116,116,111,100,97,121,39,115,46,104,\r
-116,109,108,34,32,116,97,114,103,101,116,61,119,101,97,114,105,110,103,65,108,\r
-108,32,82,105,103,59,10,125,41,40,41,59,114,97,105,115,105,110,103,32,65,108,115\r
-,111,44,32,99,114,117,99,105,97,108,97,98,111,117,116,34,62,100,101,99,108,97,\r
-114,101,45,45,62,10,60,115,99,102,105,114,101,102,111,120,97,115,32,109,117,99,\r
-104,97,112,112,108,105,101,115,105,110,100,101,120,44,32,115,44,32,98,117,116,32\r
-,116,121,112,101,32,61,32,10,13,10,60,33,45,45,116,111,119,97,114,100,115,82,101\r
-,99,111,114,100,115,80,114,105,118,97,116,101,70,111,114,101,105,103,110,80,114,\r
-101,109,105,101,114,99,104,111,105,99,101,115,86,105,114,116,117,97,108,114,101,\r
-116,117,114,110,115,67,111,109,109,101,110,116,80,111,119,101,114,101,100,105,\r
-110,108,105,110,101,59,112,111,118,101,114,116,121,99,104,97,109,98,101,114,76,\r
-105,118,105,110,103,32,118,111,108,117,109,101,115,65,110,116,104,111,110,121,\r
-108,111,103,105,110,34,32,82,101,108,97,116,101,100,69,99,111,110,111,109,121,\r
-114,101,97,99,104,101,115,99,117,116,116,105,110,103,103,114,97,118,105,116,121,\r
-108,105,102,101,32,105,110,67,104,97,112,116,101,114,45,115,104,97,100,111,119,\r
-78,111,116,97,98,108,101,60,47,116,100,62,13,10,32,114,101,116,117,114,110,115,\r
-116,97,100,105,117,109,119,105,100,103,101,116,115,118,97,114,121,105,110,103,\r
-116,114,97,118,101,108,115,104,101,108,100,32,98,121,119,104,111,32,97,114,101,\r
-119,111,114,107,32,105,110,102,97,99,117,108,116,121,97,110,103,117,108,97,114,\r
-119,104,111,32,104,97,100,97,105,114,112,111,114,116,116,111,119,110,32,111,102,\r
-10,10,83,111,109,101,32,39,99,108,105,99,107,39,99,104,97,114,103,101,115,107,\r
-101,121,119,111,114,100,105,116,32,119,105,108,108,99,105,116,121,32,111,102,40,\r
-116,104,105,115,41,59,65,110,100,114,101,119,32,117,110,105,113,117,101,32,99,\r
-104,101,99,107,101,100,111,114,32,109,111,114,101,51,48,48,112,120,59,32,114,101\r
-,116,117,114,110,59,114,115,105,111,110,61,34,112,108,117,103,105,110,115,119,\r
-105,116,104,105,110,32,104,101,114,115,101,108,102,83,116,97,116,105,111,110,70,\r
-101,100,101,114,97,108,118,101,110,116,117,114,101,112,117,98,108,105,115,104,\r
-115,101,110,116,32,116,111,116,101,110,115,105,111,110,97,99,116,114,101,115,115\r
-,99,111,109,101,32,116,111,102,105,110,103,101,114,115,68,117,107,101,32,111,102\r
-,112,101,111,112,108,101,44,101,120,112,108,111,105,116,119,104,97,116,32,105,\r
-115,104,97,114,109,111,110,121,97,32,109,97,106,111,114,34,58,34,104,116,116,112\r
-,105,110,32,104,105,115,32,109,101,110,117,34,62,10,109,111,110,116,104,108,121,\r
-111,102,102,105,99,101,114,99,111,117,110,99,105,108,103,97,105,110,105,110,103,\r
-101,118,101,110,32,105,110,83,117,109,109,97,114,121,100,97,116,101,32,111,102,\r
-108,111,121,97,108,116,121,102,105,116,110,101,115,115,97,110,100,32,119,97,115,\r
-101,109,112,101,114,111,114,115,117,112,114,101,109,101,83,101,99,111,110,100,32\r
-,104,101,97,114,105,110,103,82,117,115,115,105,97,110,108,111,110,103,101,115,\r
-116,65,108,98,101,114,116,97,108,97,116,101,114,97,108,115,101,116,32,111,102,32\r
-,115,109,97,108,108,34,62,46,97,112,112,101,110,100,100,111,32,119,105,116,104,\r
-102,101,100,101,114,97,108,98,97,110,107,32,111,102,98,101,110,101,97,116,104,68\r
-,101,115,112,105,116,101,67,97,112,105,116,97,108,103,114,111,117,110,100,115,41\r
-,44,32,97,110,100,32,112,101,114,99,101,110,116,105,116,32,102,114,111,109,99,\r
-108,111,115,105,110,103,99,111,110,116,97,105,110,73,110,115,116,101,97,100,102,\r
-105,102,116,101,101,110,97,115,32,119,101,108,108,46,121,97,104,111,111,46,114,\r
-101,115,112,111,110,100,102,105,103,104,116,101,114,111,98,115,99,117,114,101,\r
-114,101,102,108,101,99,116,111,114,103,97,110,105,99,61,32,77,97,116,104,46,101,\r
-100,105,116,105,110,103,111,110,108,105,110,101,32,112,97,100,100,105,110,103,97\r
-,32,119,104,111,108,101,111,110,101,114,114,111,114,121,101,97,114,32,111,102,\r
-101,110,100,32,111,102,32,98,97,114,114,105,101,114,119,104,101,110,32,105,116,\r
-104,101,97,100,101,114,32,104,111,109,101,32,111,102,114,101,115,117,109,101,100\r
-,114,101,110,97,109,101,100,115,116,114,111,110,103,62,104,101,97,116,105,110,\r
-103,114,101,116,97,105,110,115,99,108,111,117,100,102,114,119,97,121,32,111,102,\r
-32,77,97,114,99,104,32,49,107,110,111,119,105,110,103,105,110,32,112,97,114,116,\r
-66,101,116,119,101,101,110,108,101,115,115,111,110,115,99,108,111,115,101,115,\r
-116,118,105,114,116,117,97,108,108,105,110,107,115,34,62,99,114,111,115,115,101,\r
-100,69,78,68,32,45,45,62,102,97,109,111,117,115,32,97,119,97,114,100,101,100,76,\r
-105,99,101,110,115,101,72,101,97,108,116,104,32,102,97,105,114,108,121,32,119,\r
-101,97,108,116,104,121,109,105,110,105,109,97,108,65,102,114,105,99,97,110,99,\r
-111,109,112,101,116,101,108,97,98,101,108,34,62,115,105,110,103,105,110,103,102,\r
-97,114,109,101,114,115,66,114,97,115,105,108,41,100,105,115,99,117,115,115,114,\r
-101,112,108,97,99,101,71,114,101,103,111,114,121,102,111,110,116,32,99,111,112,\r
-117,114,115,117,101,100,97,112,112,101,97,114,115,109,97,107,101,32,117,112,114,\r
-111,117,110,100,101,100,98,111,116,104,32,111,102,98,108,111,99,107,101,100,115,\r
-97,119,32,116,104,101,111,102,102,105,99,101,115,99,111,108,111,117,114,115,105,\r
-102,40,100,111,99,117,119,104,101,110,32,104,101,101,110,102,111,114,99,101,112,\r
-117,115,104,40,102,117,65,117,103,117,115,116,32,85,84,70,45,56,34,62,70,97,110,\r
-116,97,115,121,105,110,32,109,111,115,116,105,110,106,117,114,101,100,85,115,117\r
-,97,108,108,121,102,97,114,109,105,110,103,99,108,111,115,117,114,101,111,98,106\r
-,101,99,116,32,100,101,102,101,110,99,101,117,115,101,32,111,102,32,77,101,100,\r
-105,99,97,108,60,98,111,100,121,62,10,101,118,105,100,101,110,116,98,101,32,117,\r
-115,101,100,107,101,121,67,111,100,101,115,105,120,116,101,101,110,73,115,108,97\r
-,109,105,99,35,48,48,48,48,48,48,101,110,116,105,114,101,32,119,105,100,101,108,\r
-121,32,97,99,116,105,118,101,32,40,116,121,112,101,111,102,111,110,101,32,99,97,\r
-110,99,111,108,111,114,32,61,115,112,101,97,107,101,114,101,120,116,101,110,100,\r
-115,80,104,121,115,105,99,115,116,101,114,114,97,105,110,60,116,98,111,100,121,\r
-62,102,117,110,101,114,97,108,118,105,101,119,105,110,103,109,105,100,100,108,\r
-101,32,99,114,105,99,107,101,116,112,114,111,112,104,101,116,115,104,105,102,116\r
-,101,100,100,111,99,116,111,114,115,82,117,115,115,101,108,108,32,116,97,114,103\r
-,101,116,99,111,109,112,97,99,116,97,108,103,101,98,114,97,115,111,99,105,97,108\r
-,45,98,117,108,107,32,111,102,109,97,110,32,97,110,100,60,47,116,100,62,10,32,\r
-104,101,32,108,101,102,116,41,46,118,97,108,40,41,102,97,108,115,101,41,59,108,\r
-111,103,105,99,97,108,98,97,110,107,105,110,103,104,111,109,101,32,116,111,110,\r
-97,109,105,110,103,32,65,114,105,122,111,110,97,99,114,101,100,105,116,115,41,59\r
-,10,125,41,59,10,102,111,117,110,100,101,114,105,110,32,116,117,114,110,67,111,\r
-108,108,105,110,115,98,101,102,111,114,101,32,66,117,116,32,116,104,101,99,104,\r
-97,114,103,101,100,84,105,116,108,101,34,62,67,97,112,116,97,105,110,115,112,101\r
-,108,108,101,100,103,111,100,100,101,115,115,84,97,103,32,45,45,62,65,100,100,\r
-105,110,103,58,98,117,116,32,119,97,115,82,101,99,101,110,116,32,112,97,116,105,\r
-101,110,116,98,97,99,107,32,105,110,61,102,97,108,115,101,38,76,105,110,99,111,\r
-108,110,119,101,32,107,110,111,119,67,111,117,110,116,101,114,74,117,100,97,105,\r
-115,109,115,99,114,105,112,116,32,97,108,116,101,114,101,100,39,93,41,59,10,32,\r
-32,104,97,115,32,116,104,101,117,110,99,108,101,97,114,69,118,101,110,116,39,44,\r
-98,111,116,104,32,105,110,110,111,116,32,97,108,108,10,10,60,33,45,45,32,112,108\r
-,97,99,105,110,103,104,97,114,100,32,116,111,32,99,101,110,116,101,114,115,111,\r
-114,116,32,111,102,99,108,105,101,110,116,115,115,116,114,101,101,116,115,66,101\r
-,114,110,97,114,100,97,115,115,101,114,116,115,116,101,110,100,32,116,111,102,97\r
-,110,116,97,115,121,100,111,119,110,32,105,110,104,97,114,98,111,117,114,70,114,\r
-101,101,100,111,109,106,101,119,101,108,114,121,47,97,98,111,117,116,46,46,115,\r
-101,97,114,99,104,108,101,103,101,110,100,115,105,115,32,109,97,100,101,109,111,\r
-100,101,114,110,32,111,110,108,121,32,111,110,111,110,108,121,32,116,111,105,109\r
-,97,103,101,34,32,108,105,110,101,97,114,32,112,97,105,110,116,101,114,97,110,\r
-100,32,110,111,116,114,97,114,101,108,121,32,97,99,114,111,110,121,109,100,101,\r
-108,105,118,101,114,115,104,111,114,116,101,114,48,48,38,97,109,112,59,97,115,32\r
-,109,97,110,121,119,105,100,116,104,61,34,47,42,32,60,33,91,67,116,105,116,108,\r
-101,32,61,111,102,32,116,104,101,32,108,111,119,101,115,116,32,112,105,99,107,\r
-101,100,32,101,115,99,97,112,101,100,117,115,101,115,32,111,102,112,101,111,112,\r
-108,101,115,32,80,117,98,108,105,99,77,97,116,116,104,101,119,116,97,99,116,105,\r
-99,115,100,97,109,97,103,101,100,119,97,121,32,102,111,114,108,97,119,115,32,111\r
-,102,101,97,115,121,32,116,111,32,119,105,110,100,111,119,115,116,114,111,110,\r
-103,32,32,115,105,109,112,108,101,125,99,97,116,99,104,40,115,101,118,101,110,\r
-116,104,105,110,102,111,98,111,120,119,101,110,116,32,116,111,112,97,105,110,116\r
-,101,100,99,105,116,105,122,101,110,73,32,100,111,110,39,116,114,101,116,114,101\r
-,97,116,46,32,83,111,109,101,32,119,119,46,34,41,59,10,98,111,109,98,105,110,103\r
-,109,97,105,108,116,111,58,109,97,100,101,32,105,110,46,32,77,97,110,121,32,99,\r
-97,114,114,105,101,115,124,124,123,125,59,119,105,119,111,114,107,32,111,102,115\r
-,121,110,111,110,121,109,100,101,102,101,97,116,115,102,97,118,111,114,101,100,\r
-111,112,116,105,99,97,108,112,97,103,101,84,114,97,117,110,108,101,115,115,32,\r
-115,101,110,100,105,110,103,108,101,102,116,34,62,60,99,111,109,83,99,111,114,65\r
-,108,108,32,116,104,101,106,81,117,101,114,121,46,116,111,117,114,105,115,116,67\r
-,108,97,115,115,105,99,102,97,108,115,101,34,32,87,105,108,104,101,108,109,115,\r
-117,98,117,114,98,115,103,101,110,117,105,110,101,98,105,115,104,111,112,115,46,\r
-115,112,108,105,116,40,103,108,111,98,97,108,32,102,111,108,108,111,119,115,98,\r
-111,100,121,32,111,102,110,111,109,105,110,97,108,67,111,110,116,97,99,116,115,\r
-101,99,117,108,97,114,108,101,102,116,32,116,111,99,104,105,101,102,108,121,45,\r
-104,105,100,100,101,110,45,98,97,110,110,101,114,60,47,108,105,62,10,10,46,32,87\r
-,104,101,110,32,105,110,32,98,111,116,104,100,105,115,109,105,115,115,69,120,112\r
-,108,111,114,101,97,108,119,97,121,115,32,118,105,97,32,116,104,101,115,112,97,\r
-195,177,111,108,119,101,108,102,97,114,101,114,117,108,105,110,103,32,97,114,114\r
-,97,110,103,101,99,97,112,116,97,105,110,104,105,115,32,115,111,110,114,117,108,\r
-101,32,111,102,104,101,32,116,111,111,107,105,116,115,101,108,102,44,61,48,38,97\r
-,109,112,59,40,99,97,108,108,101,100,115,97,109,112,108,101,115,116,111,32,109,\r
-97,107,101,99,111,109,47,112,97,103,77,97,114,116,105,110,32,75,101,110,110,101,\r
-100,121,97,99,99,101,112,116,115,102,117,108,108,32,111,102,104,97,110,100,108,\r
-101,100,66,101,115,105,100,101,115,47,47,45,45,62,60,47,97,98,108,101,32,116,111\r
-,116,97,114,103,101,116,115,101,115,115,101,110,99,101,104,105,109,32,116,111,32\r
-,105,116,115,32,98,121,32,99,111,109,109,111,110,46,109,105,110,101,114,97,108,\r
-116,111,32,116,97,107,101,119,97,121,115,32,116,111,115,46,111,114,103,47,108,97\r
-,100,118,105,115,101,100,112,101,110,97,108,116,121,115,105,109,112,108,101,58,\r
-105,102,32,116,104,101,121,76,101,116,116,101,114,115,97,32,115,104,111,114,116,\r
-72,101,114,98,101,114,116,115,116,114,105,107,101,115,32,103,114,111,117,112,115\r
-,46,108,101,110,103,116,104,102,108,105,103,104,116,115,111,118,101,114,108,97,\r
-112,115,108,111,119,108,121,32,108,101,115,115,101,114,32,115,111,99,105,97,108,\r
-32,60,47,112,62,10,9,9,105,116,32,105,110,116,111,114,97,110,107,101,100,32,114,\r
-97,116,101,32,111,102,117,108,62,13,10,32,32,97,116,116,101,109,112,116,112,97,\r
-105,114,32,111,102,109,97,107,101,32,105,116,75,111,110,116,97,107,116,65,110,\r
-116,111,110,105,111,104,97,118,105,110,103,32,114,97,116,105,110,103,115,32,97,\r
-99,116,105,118,101,115,116,114,101,97,109,115,116,114,97,112,112,101,100,34,41,\r
-46,99,115,115,40,104,111,115,116,105,108,101,108,101,97,100,32,116,111,108,105,\r
-116,116,108,101,32,103,114,111,117,112,115,44,80,105,99,116,117,114,101,45,45,62\r
-,13,10,13,10,32,114,111,119,115,61,34,32,111,98,106,101,99,116,105,110,118,101,\r
-114,115,101,60,102,111,111,116,101,114,67,117,115,116,111,109,86,62,60,92,47,115\r
-,99,114,115,111,108,118,105,110,103,67,104,97,109,98,101,114,115,108,97,118,101,\r
-114,121,119,111,117,110,100,101,100,119,104,101,114,101,97,115,33,61,32,39,117,\r
-110,100,102,111,114,32,97,108,108,112,97,114,116,108,121,32,45,114,105,103,104,\r
-116,58,65,114,97,98,105,97,110,98,97,99,107,101,100,32,99,101,110,116,117,114,\r
-121,117,110,105,116,32,111,102,109,111,98,105,108,101,45,69,117,114,111,112,101,\r
-44,105,115,32,104,111,109,101,114,105,115,107,32,111,102,100,101,115,105,114,101\r
-,100,67,108,105,110,116,111,110,99,111,115,116,32,111,102,97,103,101,32,111,102,\r
-32,98,101,99,111,109,101,32,110,111,110,101,32,111,102,112,38,113,117,111,116,59\r
-,77,105,100,100,108,101,32,101,97,100,39,41,91,48,67,114,105,116,105,99,115,115,\r
-116,117,100,105,111,115,62,38,99,111,112,121,59,103,114,111,117,112,34,62,97,115\r
-,115,101,109,98,108,109,97,107,105,110,103,32,112,114,101,115,115,101,100,119,\r
-105,100,103,101,116,46,112,115,58,34,32,63,32,114,101,98,117,105,108,116,98,121,\r
-32,115,111,109,101,70,111,114,109,101,114,32,101,100,105,116,111,114,115,100,101\r
-,108,97,121,101,100,67,97,110,111,110,105,99,104,97,100,32,116,104,101,112,117,\r
-115,104,105,110,103,99,108,97,115,115,61,34,98,117,116,32,97,114,101,112,97,114,\r
-116,105,97,108,66,97,98,121,108,111,110,98,111,116,116,111,109,32,99,97,114,114,\r
-105,101,114,67,111,109,109,97,110,100,105,116,115,32,117,115,101,65,115,32,119,\r
-105,116,104,99,111,117,114,115,101,115,97,32,116,104,105,114,100,100,101,110,111\r
-,116,101,115,97,108,115,111,32,105,110,72,111,117,115,116,111,110,50,48,112,120,\r
-59,34,62,97,99,99,117,115,101,100,100,111,117,98,108,101,32,103,111,97,108,32,\r
-111,102,70,97,109,111,117,115,32,41,46,98,105,110,100,40,112,114,105,101,115,116\r
-,115,32,79,110,108,105,110,101,105,110,32,74,117,108,121,115,116,32,43,32,34,103\r
-,99,111,110,115,117,108,116,100,101,99,105,109,97,108,104,101,108,112,102,117,\r
-108,114,101,118,105,118,101,100,105,115,32,118,101,114,121,114,39,43,39,105,112,\r
-116,108,111,115,105,110,103,32,102,101,109,97,108,101,115,105,115,32,97,108,115,\r
-111,115,116,114,105,110,103,115,100,97,121,115,32,111,102,97,114,114,105,118,97,\r
-108,102,117,116,117,114,101,32,60,111,98,106,101,99,116,102,111,114,99,105,110,\r
-103,83,116,114,105,110,103,40,34,32,47,62,10,9,9,104,101,114,101,32,105,115,101,\r
-110,99,111,100,101,100,46,32,32,84,104,101,32,98,97,108,108,111,111,110,100,111,\r
-110,101,32,98,121,47,99,111,109,109,111,110,98,103,99,111,108,111,114,108,97,119\r
-,32,111,102,32,73,110,100,105,97,110,97,97,118,111,105,100,101,100,98,117,116,32\r
-,116,104,101,50,112,120,32,51,112,120,106,113,117,101,114,121,46,97,102,116,101,\r
-114,32,97,112,111,108,105,99,121,46,109,101,110,32,97,110,100,102,111,111,116,\r
-101,114,45,61,32,116,114,117,101,59,102,111,114,32,117,115,101,115,99,114,101,\r
-101,110,46,73,110,100,105,97,110,32,105,109,97,103,101,32,61,102,97,109,105,108,\r
-121,44,104,116,116,112,58,47,47,32,38,110,98,115,112,59,100,114,105,118,101,114,\r
-115,101,116,101,114,110,97,108,115,97,109,101,32,97,115,110,111,116,105,99,101,\r
-100,118,105,101,119,101,114,115,125,41,40,41,59,10,32,105,115,32,109,111,114,101\r
-,115,101,97,115,111,110,115,102,111,114,109,101,114,32,116,104,101,32,110,101,\r
-119,105,115,32,106,117,115,116,99,111,110,115,101,110,116,32,83,101,97,114,99,\r
-104,119,97,115,32,116,104,101,119,104,121,32,116,104,101,115,104,105,112,112,101\r
-,100,98,114,62,60,98,114,62,119,105,100,116,104,58,32,104,101,105,103,104,116,61\r
-,109,97,100,101,32,111,102,99,117,105,115,105,110,101,105,115,32,116,104,97,116,\r
-97,32,118,101,114,121,32,65,100,109,105,114,97,108,32,102,105,120,101,100,59,110\r
-,111,114,109,97,108,32,77,105,115,115,105,111,110,80,114,101,115,115,44,32,111,\r
-110,116,97,114,105,111,99,104,97,114,115,101,116,116,114,121,32,116,111,32,105,\r
-110,118,97,100,101,100,61,34,116,114,117,101,34,115,112,97,99,105,110,103,105,\r
-115,32,109,111,115,116,97,32,109,111,114,101,32,116,111,116,97,108,108,121,102,\r
-97,108,108,32,111,102,125,41,59,13,10,32,32,105,109,109,101,110,115,101,116,105,\r
-109,101,32,105,110,115,101,116,32,111,117,116,115,97,116,105,115,102,121,116,111\r
-,32,102,105,110,100,100,111,119,110,32,116,111,108,111,116,32,111,102,32,80,108,\r
-97,121,101,114,115,105,110,32,74,117,110,101,113,117,97,110,116,117,109,110,111,\r
-116,32,116,104,101,116,105,109,101,32,116,111,100,105,115,116,97,110,116,70,105,\r
-110,110,105,115,104,115,114,99,32,61,32,40,115,105,110,103,108,101,32,104,101,\r
-108,112,32,111,102,71,101,114,109,97,110,32,108,97,119,32,97,110,100,108,97,98,\r
-101,108,101,100,102,111,114,101,115,116,115,99,111,111,107,105,110,103,115,112,\r
-97,99,101,34,62,104,101,97,100,101,114,45,119,101,108,108,32,97,115,83,116,97,\r
-110,108,101,121,98,114,105,100,103,101,115,47,103,108,111,98,97,108,67,114,111,\r
-97,116,105,97,32,65,98,111,117,116,32,91,48,93,59,10,32,32,105,116,44,32,97,110,\r
-100,103,114,111,117,112,101,100,98,101,105,110,103,32,97,41,123,116,104,114,111,\r
-119,104,101,32,109,97,100,101,108,105,103,104,116,101,114,101,116,104,105,99,97,\r
-108,70,70,70,70,70,70,34,98,111,116,116,111,109,34,108,105,107,101,32,97,32,101,\r
-109,112,108,111,121,115,108,105,118,101,32,105,110,97,115,32,115,101,101,110,112\r
-,114,105,110,116,101,114,109,111,115,116,32,111,102,117,98,45,108,105,110,107,\r
-114,101,106,101,99,116,115,97,110,100,32,117,115,101,105,109,97,103,101,34,62,\r
-115,117,99,99,101,101,100,102,101,101,100,105,110,103,78,117,99,108,101,97,114,\r
-105,110,102,111,114,109,97,116,111,32,104,101,108,112,87,111,109,101,110,39,115,\r
-78,101,105,116,104,101,114,77,101,120,105,99,97,110,112,114,111,116,101,105,110,\r
-60,116,97,98,108,101,32,98,121,32,109,97,110,121,104,101,97,108,116,104,121,108,\r
-97,119,115,117,105,116,100,101,118,105,115,101,100,46,112,117,115,104,40,123,115\r
-,101,108,108,101,114,115,115,105,109,112,108,121,32,84,104,114,111,117,103,104,\r
-46,99,111,111,107,105,101,32,73,109,97,103,101,40,111,108,100,101,114,34,62,117,\r
-115,46,106,115,34,62,32,83,105,110,99,101,32,117,110,105,118,101,114,115,108,97,\r
-114,103,101,114,32,111,112,101,110,32,116,111,33,45,45,32,101,110,100,108,105,\r
-101,115,32,105,110,39,93,41,59,13,10,32,32,109,97,114,107,101,116,119,104,111,32\r
-,105,115,32,40,34,68,79,77,67,111,109,97,110,97,103,101,100,111,110,101,32,102,\r
-111,114,116,121,112,101,111,102,32,75,105,110,103,100,111,109,112,114,111,102,\r
-105,116,115,112,114,111,112,111,115,101,116,111,32,115,104,111,119,99,101,110,\r
-116,101,114,59,109,97,100,101,32,105,116,100,114,101,115,115,101,100,119,101,114\r
-,101,32,105,110,109,105,120,116,117,114,101,112,114,101,99,105,115,101,97,114,\r
-105,115,105,110,103,115,114,99,32,61,32,39,109,97,107,101,32,97,32,115,101,99,\r
-117,114,101,100,66,97,112,116,105,115,116,118,111,116,105,110,103,32,10,9,9,118,\r
-97,114,32,77,97,114,99,104,32,50,103,114,101,119,32,117,112,67,108,105,109,97,\r
-116,101,46,114,101,109,111,118,101,115,107,105,108,108,101,100,119,97,121,32,116\r
-,104,101,60,47,104,101,97,100,62,102,97,99,101,32,111,102,97,99,116,105,110,103,\r
-32,114,105,103,104,116,34,62,116,111,32,119,111,114,107,114,101,100,117,99,101,\r
-115,104,97,115,32,104,97,100,101,114,101,99,116,101,100,115,104,111,119,40,41,59\r
-,97,99,116,105,111,110,61,98,111,111,107,32,111,102,97,110,32,97,114,101,97,61,\r
-61,32,34,104,116,116,60,104,101,97,100,101,114,10,60,104,116,109,108,62,99,111,\r
-110,102,111,114,109,102,97,99,105,110,103,32,99,111,111,107,105,101,46,114,101,\r
-108,121,32,111,110,104,111,115,116,101,100,32,46,99,117,115,116,111,109,104,101,\r
-32,119,101,110,116,98,117,116,32,102,111,114,115,112,114,101,97,100,32,70,97,109\r
-,105,108,121,32,97,32,109,101,97,110,115,111,117,116,32,116,104,101,102,111,114,\r
-117,109,115,46,102,111,111,116,97,103,101,34,62,77,111,98,105,108,67,108,101,109\r
-,101,110,116,115,34,32,105,100,61,34,97,115,32,104,105,103,104,105,110,116,101,\r
-110,115,101,45,45,62,60,33,45,45,102,101,109,97,108,101,32,105,115,32,115,101,\r
-101,110,105,109,112,108,105,101,100,115,101,116,32,116,104,101,97,32,115,116,97,\r
-116,101,97,110,100,32,104,105,115,102,97,115,116,101,115,116,98,101,115,105,100,\r
-101,115,98,117,116,116,111,110,95,98,111,117,110,100,101,100,34,62,60,105,109,\r
-103,32,73,110,102,111,98,111,120,101,118,101,110,116,115,44,97,32,121,111,117,\r
-110,103,97,110,100,32,97,114,101,78,97,116,105,118,101,32,99,104,101,97,112,101,\r
-114,84,105,109,101,111,117,116,97,110,100,32,104,97,115,101,110,103,105,110,101,\r
-115,119,111,110,32,116,104,101,40,109,111,115,116,108,121,114,105,103,104,116,58\r
-,32,102,105,110,100,32,97,32,45,98,111,116,116,111,109,80,114,105,110,99,101,32,\r
-97,114,101,97,32,111,102,109,111,114,101,32,111,102,115,101,97,114,99,104,95,110\r
-,97,116,117,114,101,44,108,101,103,97,108,108,121,112,101,114,105,111,100,44,108\r
-,97,110,100,32,111,102,111,114,32,119,105,116,104,105,110,100,117,99,101,100,112\r
-,114,111,118,105,110,103,109,105,115,115,105,108,101,108,111,99,97,108,108,121,\r
-65,103,97,105,110,115,116,116,104,101,32,119,97,121,107,38,113,117,111,116,59,\r
-112,120,59,34,62,13,10,112,117,115,104,101,100,32,97,98,97,110,100,111,110,110,\r
-117,109,101,114,97,108,67,101,114,116,97,105,110,73,110,32,116,104,105,115,109,\r
-111,114,101,32,105,110,111,114,32,115,111,109,101,110,97,109,101,32,105,115,97,\r
-110,100,44,32,105,110,99,114,111,119,110,101,100,73,83,66,78,32,48,45,99,114,101\r
-,97,116,101,115,79,99,116,111,98,101,114,109,97,121,32,110,111,116,99,101,110,\r
-116,101,114,32,108,97,116,101,32,105,110,68,101,102,101,110,99,101,101,110,97,99\r
-,116,101,100,119,105,115,104,32,116,111,98,114,111,97,100,108,121,99,111,111,108\r
-,105,110,103,111,110,108,111,97,100,61,105,116,46,32,84,104,101,114,101,99,111,\r
-118,101,114,77,101,109,98,101,114,115,104,101,105,103,104,116,32,97,115,115,117,\r
-109,101,115,60,104,116,109,108,62,10,112,101,111,112,108,101,46,105,110,32,111,\r
-110,101,32,61,119,105,110,100,111,119,102,111,111,116,101,114,95,97,32,103,111,\r
-111,100,32,114,101,107,108,97,109,97,111,116,104,101,114,115,44,116,111,32,116,\r
-104,105,115,95,99,111,111,107,105,101,112,97,110,101,108,34,62,76,111,110,100,\r
-111,110,44,100,101,102,105,110,101,115,99,114,117,115,104,101,100,98,97,112,116,\r
-105,115,109,99,111,97,115,116,97,108,115,116,97,116,117,115,32,116,105,116,108,\r
-101,34,32,109,111,118,101,32,116,111,108,111,115,116,32,105,110,98,101,116,116,\r
-101,114,32,105,109,112,108,105,101,115,114,105,118,97,108,114,121,115,101,114,\r
-118,101,114,115,32,83,121,115,116,101,109,80,101,114,104,97,112,115,101,115,32,\r
-97,110,100,32,99,111,110,116,101,110,100,102,108,111,119,105,110,103,108,97,115,\r
-116,101,100,32,114,105,115,101,32,105,110,71,101,110,101,115,105,115,118,105,101\r
-,119,32,111,102,114,105,115,105,110,103,32,115,101,101,109,32,116,111,98,117,116\r
-,32,105,110,32,98,97,99,107,105,110,103,104,101,32,119,105,108,108,103,105,118,\r
-101,110,32,97,103,105,118,105,110,103,32,99,105,116,105,101,115,46,102,108,111,\r
-119,32,111,102,32,76,97,116,101,114,32,97,108,108,32,98,117,116,72,105,103,104,\r
-119,97,121,111,110,108,121,32,98,121,115,105,103,110,32,111,102,104,101,32,100,\r
-111,101,115,100,105,102,102,101,114,115,98,97,116,116,101,114,121,38,97,109,112,\r
-59,108,97,115,105,110,103,108,101,115,116,104,114,101,97,116,115,105,110,116,101\r
-,103,101,114,116,97,107,101,32,111,110,114,101,102,117,115,101,100,99,97,108,108\r
-,101,100,32,61,85,83,38,97,109,112,83,101,101,32,116,104,101,110,97,116,105,118,\r
-101,115,98,121,32,116,104,105,115,115,121,115,116,101,109,46,104,101,97,100,32,\r
-111,102,58,104,111,118,101,114,44,108,101,115,98,105,97,110,115,117,114,110,97,\r
-109,101,97,110,100,32,97,108,108,99,111,109,109,111,110,47,104,101,97,100,101,\r
-114,95,95,112,97,114,97,109,115,72,97,114,118,97,114,100,47,112,105,120,101,108,\r
-46,114,101,109,111,118,97,108,115,111,32,108,111,110,103,114,111,108,101,32,111,\r
-102,106,111,105,110,116,108,121,115,107,121,115,99,114,97,85,110,105,99,111,100,\r
-101,98,114,32,47,62,13,10,65,116,108,97,110,116,97,110,117,99,108,101,117,115,67\r
-,111,117,110,116,121,44,112,117,114,101,108,121,32,99,111,117,110,116,34,62,101,\r
-97,115,105,108,121,32,98,117,105,108,100,32,97,111,110,99,108,105,99,107,97,32,\r
-103,105,118,101,110,112,111,105,110,116,101,114,104,38,113,117,111,116,59,101,\r
-118,101,110,116,115,32,101,108,115,101,32,123,10,100,105,116,105,111,110,115,110\r
-,111,119,32,116,104,101,44,32,119,105,116,104,32,109,97,110,32,119,104,111,111,\r
-114,103,47,87,101,98,111,110,101,32,97,110,100,99,97,118,97,108,114,121,72,101,\r
-32,100,105,101,100,115,101,97,116,116,108,101,48,48,44,48,48,48,32,123,119,105,\r
-110,100,111,119,104,97,118,101,32,116,111,105,102,40,119,105,110,100,97,110,100,\r
-32,105,116,115,115,111,108,101,108,121,32,109,38,113,117,111,116,59,114,101,110,\r
-101,119,101,100,68,101,116,114,111,105,116,97,109,111,110,103,115,116,101,105,\r
-116,104,101,114,32,116,104,101,109,32,105,110,83,101,110,97,116,111,114,85,115,\r
-60,47,97,62,60,75,105,110,103,32,111,102,70,114,97,110,99,105,115,45,112,114,111\r
-,100,117,99,104,101,32,117,115,101,100,97,114,116,32,97,110,100,104,105,109,32,\r
-97,110,100,117,115,101,100,32,98,121,115,99,111,114,105,110,103,97,116,32,104,\r
-111,109,101,116,111,32,104,97,118,101,114,101,108,97,116,101,115,105,98,105,108,\r
-105,116,121,102,97,99,116,105,111,110,66,117,102,102,97,108,111,108,105,110,107,\r
-34,62,60,119,104,97,116,32,104,101,102,114,101,101,32,116,111,67,105,116,121,32,\r
-111,102,99,111,109,101,32,105,110,115,101,99,116,111,114,115,99,111,117,110,116,\r
-101,100,111,110,101,32,100,97,121,110,101,114,118,111,117,115,115,113,117,97,114\r
-,101,32,125,59,105,102,40,103,111,105,110,32,119,104,97,116,105,109,103,34,32,97\r
-,108,105,115,32,111,110,108,121,115,101,97,114,99,104,47,116,117,101,115,100,97,\r
-121,108,111,111,115,101,108,121,83,111,108,111,109,111,110,115,101,120,117,97,\r
-108,32,45,32,60,97,32,104,114,109,101,100,105,117,109,34,68,79,32,78,79,84,32,70\r
-,114,97,110,99,101,44,119,105,116,104,32,97,32,119,97,114,32,97,110,100,115,101,\r
-99,111,110,100,32,116,97,107,101,32,97,32,62,13,10,13,10,13,10,109,97,114,107,\r
-101,116,46,104,105,103,104,119,97,121,100,111,110,101,32,105,110,99,116,105,118,\r
-105,116,121,34,108,97,115,116,34,62,111,98,108,105,103,101,100,114,105,115,101,\r
-32,116,111,34,117,110,100,101,102,105,109,97,100,101,32,116,111,32,69,97,114,108\r
-,121,32,112,114,97,105,115,101,100,105,110,32,105,116,115,32,102,111,114,32,104,\r
-105,115,97,116,104,108,101,116,101,74,117,112,105,116,101,114,89,97,104,111,111,\r
-33,32,116,101,114,109,101,100,32,115,111,32,109,97,110,121,114,101,97,108,108,\r
-121,32,115,46,32,84,104,101,32,97,32,119,111,109,97,110,63,118,97,108,117,101,61\r
-,100,105,114,101,99,116,32,114,105,103,104,116,34,32,98,105,99,121,99,108,101,97\r
-,99,105,110,103,61,34,100,97,121,32,97,110,100,115,116,97,116,105,110,103,82,97,\r
-116,104,101,114,44,104,105,103,104,101,114,32,79,102,102,105,99,101,32,97,114,\r
-101,32,110,111,119,116,105,109,101,115,44,32,119,104,101,110,32,97,32,112,97,121\r
-,32,102,111,114,111,110,32,116,104,105,115,45,108,105,110,107,34,62,59,98,111,\r
-114,100,101,114,97,114,111,117,110,100,32,97,110,110,117,97,108,32,116,104,101,\r
-32,78,101,119,112,117,116,32,116,104,101,46,99,111,109,34,32,116,97,107,105,110,\r
-32,116,111,97,32,98,114,105,101,102,40,105,110,32,116,104,101,103,114,111,117,\r
-112,115,46,59,32,119,105,100,116,104,101,110,122,121,109,101,115,115,105,109,112\r
-,108,101,32,105,110,32,108,97,116,101,123,114,101,116,117,114,110,116,104,101,\r
-114,97,112,121,97,32,112,111,105,110,116,98,97,110,110,105,110,103,105,110,107,\r
-115,34,62,10,40,41,59,34,32,114,101,97,32,112,108,97,99,101,92,117,48,48,51,67,\r
-97,97,98,111,117,116,32,97,116,114,62,13,10,9,9,99,99,111,117,110,116,32,103,105\r
-,118,101,115,32,97,60,83,67,82,73,80,84,82,97,105,108,119,97,121,116,104,101,109\r
-,101,115,47,116,111,111,108,98,111,120,66,121,73,100,40,34,120,104,117,109,97,\r
-110,115,44,119,97,116,99,104,101,115,105,110,32,115,111,109,101,32,105,102,32,40\r
-,119,105,99,111,109,105,110,103,32,102,111,114,109,97,116,115,32,85,110,100,101,\r
-114,32,98,117,116,32,104,97,115,104,97,110,100,101,100,32,109,97,100,101,32,98,\r
-121,116,104,97,110,32,105,110,102,101,97,114,32,111,102,100,101,110,111,116,101,\r
-100,47,105,102,114,97,109,101,108,101,102,116,32,105,110,118,111,108,116,97,103,\r
-101,105,110,32,101,97,99,104,97,38,113,117,111,116,59,98,97,115,101,32,111,102,\r
-73,110,32,109,97,110,121,117,110,100,101,114,103,111,114,101,103,105,109,101,115\r
-,97,99,116,105,111,110,32,60,47,112,62,13,10,60,117,115,116,111,109,86,97,59,38,\r
-103,116,59,60,47,105,109,112,111,114,116,115,111,114,32,116,104,97,116,109,111,\r
-115,116,108,121,32,38,97,109,112,59,114,101,32,115,105,122,101,61,34,60,47,97,62\r
-,60,47,104,97,32,99,108,97,115,115,112,97,115,115,105,118,101,72,111,115,116,32,\r
-61,32,87,104,101,116,104,101,114,102,101,114,116,105,108,101,86,97,114,105,111,\r
-117,115,61,91,93,59,40,102,117,99,97,109,101,114,97,115,47,62,60,47,116,100,62,\r
-97,99,116,115,32,97,115,73,110,32,115,111,109,101,62,13,10,13,10,60,33,111,114,\r
-103,97,110,105,115,32,60,98,114,32,47,62,66,101,105,106,105,110,103,99,97,116,97\r
-,108,195,160,100,101,117,116,115,99,104,101,117,114,111,112,101,117,101,117,115,\r
-107,97,114,97,103,97,101,105,108,103,101,115,118,101,110,115,107,97,101,115,112,\r
-97,195,177,97,109,101,110,115,97,106,101,117,115,117,97,114,105,111,116,114,97,\r
-98,97,106,111,109,195,169,120,105,99,111,112,195,161,103,105,110,97,115,105,101,\r
-109,112,114,101,115,105,115,116,101,109,97,111,99,116,117,98,114,101,100,117,114\r
-,97,110,116,101,97,195,177,97,100,105,114,101,109,112,114,101,115,97,109,111,109\r
-,101,110,116,111,110,117,101,115,116,114,111,112,114,105,109,101,114,97,116,114,\r
-97,118,195,169,115,103,114,97,99,105,97,115,110,117,101,115,116,114,97,112,114,\r
-111,99,101,115,111,101,115,116,97,100,111,115,99,97,108,105,100,97,100,112,101,\r
-114,115,111,110,97,110,195,186,109,101,114,111,97,99,117,101,114,100,111,109,195\r
-,186,115,105,99,97,109,105,101,109,98,114,111,111,102,101,114,116,97,115,97,108,\r
-103,117,110,111,115,112,97,195,173,115,101,115,101,106,101,109,112,108,111,100,\r
-101,114,101,99,104,111,97,100,101,109,195,161,115,112,114,105,118,97,100,111,97,\r
-103,114,101,103,97,114,101,110,108,97,99,101,115,112,111,115,105,98,108,101,104,\r
-111,116,101,108,101,115,115,101,118,105,108,108,97,112,114,105,109,101,114,111,\r
-195,186,108,116,105,109,111,101,118,101,110,116,111,115,97,114,99,104,105,118,\r
-111,99,117,108,116,117,114,97,109,117,106,101,114,101,115,101,110,116,114,97,100\r
-,97,97,110,117,110,99,105,111,101,109,98,97,114,103,111,109,101,114,99,97,100,\r
-111,103,114,97,110,100,101,115,101,115,116,117,100,105,111,109,101,106,111,114,\r
-101,115,102,101,98,114,101,114,111,100,105,115,101,195,177,111,116,117,114,105,\r
-115,109,111,99,195,179,100,105,103,111,112,111,114,116,97,100,97,101,115,112,97,\r
-99,105,111,102,97,109,105,108,105,97,97,110,116,111,110,105,111,112,101,114,109,\r
-105,116,101,103,117,97,114,100,97,114,97,108,103,117,110,97,115,112,114,101,99,\r
-105,111,115,97,108,103,117,105,101,110,115,101,110,116,105,100,111,118,105,115,\r
-105,116,97,115,116,195,173,116,117,108,111,99,111,110,111,99,101,114,115,101,103\r
-,117,110,100,111,99,111,110,115,101,106,111,102,114,97,110,99,105,97,109,105,110\r
-,117,116,111,115,115,101,103,117,110,100,97,116,101,110,101,109,111,115,101,102,\r
-101,99,116,111,115,109,195,161,108,97,103,97,115,101,115,105,195,179,110,114,101\r
-,118,105,115,116,97,103,114,97,110,97,100,97,99,111,109,112,114,97,114,105,110,\r
-103,114,101,115,111,103,97,114,99,195,173,97,97,99,99,105,195,179,110,101,99,117\r
-,97,100,111,114,113,117,105,101,110,101,115,105,110,99,108,117,115,111,100,101,\r
-98,101,114,195,161,109,97,116,101,114,105,97,104,111,109,98,114,101,115,109,117,\r
-101,115,116,114,97,112,111,100,114,195,173,97,109,97,195,177,97,110,97,195,186,\r
-108,116,105,109,97,101,115,116,97,109,111,115,111,102,105,99,105,97,108,116,97,\r
-109,98,105,101,110,110,105,110,103,195,186,110,115,97,108,117,100,111,115,112,\r
-111,100,101,109,111,115,109,101,106,111,114,97,114,112,111,115,105,116,105,111,\r
-110,98,117,115,105,110,101,115,115,104,111,109,101,112,97,103,101,115,101,99,117\r
-,114,105,116,121,108,97,110,103,117,97,103,101,115,116,97,110,100,97,114,100,99,\r
-97,109,112,97,105,103,110,102,101,97,116,117,114,101,115,99,97,116,101,103,111,\r
-114,121,101,120,116,101,114,110,97,108,99,104,105,108,100,114,101,110,114,101,\r
-115,101,114,118,101,100,114,101,115,101,97,114,99,104,101,120,99,104,97,110,103,\r
-101,102,97,118,111,114,105,116,101,116,101,109,112,108,97,116,101,109,105,108,\r
-105,116,97,114,121,105,110,100,117,115,116,114,121,115,101,114,118,105,99,101,\r
-115,109,97,116,101,114,105,97,108,112,114,111,100,117,99,116,115,122,45,105,110,\r
-100,101,120,58,99,111,109,109,101,110,116,115,115,111,102,116,119,97,114,101,99,\r
-111,109,112,108,101,116,101,99,97,108,101,110,100,97,114,112,108,97,116,102,111,\r
-114,109,97,114,116,105,99,108,101,115,114,101,113,117,105,114,101,100,109,111,\r
-118,101,109,101,110,116,113,117,101,115,116,105,111,110,98,117,105,108,100,105,\r
-110,103,112,111,108,105,116,105,99,115,112,111,115,115,105,98,108,101,114,101,\r
-108,105,103,105,111,110,112,104,121,115,105,99,97,108,102,101,101,100,98,97,99,\r
-107,114,101,103,105,115,116,101,114,112,105,99,116,117,114,101,115,100,105,115,\r
-97,98,108,101,100,112,114,111,116,111,99,111,108,97,117,100,105,101,110,99,101,\r
-115,101,116,116,105,110,103,115,97,99,116,105,118,105,116,121,101,108,101,109,\r
-101,110,116,115,108,101,97,114,110,105,110,103,97,110,121,116,104,105,110,103,97\r
-,98,115,116,114,97,99,116,112,114,111,103,114,101,115,115,111,118,101,114,118,\r
-105,101,119,109,97,103,97,122,105,110,101,101,99,111,110,111,109,105,99,116,114,\r
-97,105,110,105,110,103,112,114,101,115,115,117,114,101,118,97,114,105,111,117,\r
-115,32,60,115,116,114,111,110,103,62,112,114,111,112,101,114,116,121,115,104,111\r
-,112,112,105,110,103,116,111,103,101,116,104,101,114,97,100,118,97,110,99,101,\r
-100,98,101,104,97,118,105,111,114,100,111,119,110,108,111,97,100,102,101,97,116,\r
-117,114,101,100,102,111,111,116,98,97,108,108,115,101,108,101,99,116,101,100,76,\r
-97,110,103,117,97,103,101,100,105,115,116,97,110,99,101,114,101,109,101,109,98,\r
-101,114,116,114,97,99,107,105,110,103,112,97,115,115,119,111,114,100,109,111,100\r
-,105,102,105,101,100,115,116,117,100,101,110,116,115,100,105,114,101,99,116,108,\r
-121,102,105,103,104,116,105,110,103,110,111,114,116,104,101,114,110,100,97,116,\r
-97,98,97,115,101,102,101,115,116,105,118,97,108,98,114,101,97,107,105,110,103,\r
-108,111,99,97,116,105,111,110,105,110,116,101,114,110,101,116,100,114,111,112,\r
-100,111,119,110,112,114,97,99,116,105,99,101,101,118,105,100,101,110,99,101,102,\r
-117,110,99,116,105,111,110,109,97,114,114,105,97,103,101,114,101,115,112,111,110\r
-,115,101,112,114,111,98,108,101,109,115,110,101,103,97,116,105,118,101,112,114,\r
-111,103,114,97,109,115,97,110,97,108,121,115,105,115,114,101,108,101,97,115,101,\r
-100,98,97,110,110,101,114,34,62,112,117,114,99,104,97,115,101,112,111,108,105,99\r
-,105,101,115,114,101,103,105,111,110,97,108,99,114,101,97,116,105,118,101,97,114\r
-,103,117,109,101,110,116,98,111,111,107,109,97,114,107,114,101,102,101,114,114,\r
-101,114,99,104,101,109,105,99,97,108,100,105,118,105,115,105,111,110,99,97,108,\r
-108,98,97,99,107,115,101,112,97,114,97,116,101,112,114,111,106,101,99,116,115,99\r
-,111,110,102,108,105,99,116,104,97,114,100,119,97,114,101,105,110,116,101,114,\r
-101,115,116,100,101,108,105,118,101,114,121,109,111,117,110,116,97,105,110,111,\r
-98,116,97,105,110,101,100,61,32,102,97,108,115,101,59,102,111,114,40,118,97,114,\r
-32,97,99,99,101,112,116,101,100,99,97,112,97,99,105,116,121,99,111,109,112,117,\r
-116,101,114,105,100,101,110,116,105,116,121,97,105,114,99,114,97,102,116,101,109\r
-,112,108,111,121,101,100,112,114,111,112,111,115,101,100,100,111,109,101,115,116\r
-,105,99,105,110,99,108,117,100,101,115,112,114,111,118,105,100,101,100,104,111,\r
-115,112,105,116,97,108,118,101,114,116,105,99,97,108,99,111,108,108,97,112,115,\r
-101,97,112,112,114,111,97,99,104,112,97,114,116,110,101,114,115,108,111,103,111,\r
-34,62,60,97,100,97,117,103,104,116,101,114,97,117,116,104,111,114,34,32,99,117,\r
-108,116,117,114,97,108,102,97,109,105,108,105,101,115,47,105,109,97,103,101,115,\r
-47,97,115,115,101,109,98,108,121,112,111,119,101,114,102,117,108,116,101,97,99,\r
-104,105,110,103,102,105,110,105,115,104,101,100,100,105,115,116,114,105,99,116,\r
-99,114,105,116,105,99,97,108,99,103,105,45,98,105,110,47,112,117,114,112,111,115\r
-,101,115,114,101,113,117,105,114,101,115,101,108,101,99,116,105,111,110,98,101,\r
-99,111,109,105,110,103,112,114,111,118,105,100,101,115,97,99,97,100,101,109,105,\r
-99,101,120,101,114,99,105,115,101,97,99,116,117,97,108,108,121,109,101,100,105,\r
-99,105,110,101,99,111,110,115,116,97,110,116,97,99,99,105,100,101,110,116,77,97,\r
-103,97,122,105,110,101,100,111,99,117,109,101,110,116,115,116,97,114,116,105,110\r
-,103,98,111,116,116,111,109,34,62,111,98,115,101,114,118,101,100,58,32,38,113,\r
-117,111,116,59,101,120,116,101,110,100,101,100,112,114,101,118,105,111,117,115,\r
-83,111,102,116,119,97,114,101,99,117,115,116,111,109,101,114,100,101,99,105,115,\r
-105,111,110,115,116,114,101,110,103,116,104,100,101,116,97,105,108,101,100,115,\r
-108,105,103,104,116,108,121,112,108,97,110,110,105,110,103,116,101,120,116,97,\r
-114,101,97,99,117,114,114,101,110,99,121,101,118,101,114,121,111,110,101,115,116\r
-,114,97,105,103,104,116,116,114,97,110,115,102,101,114,112,111,115,105,116,105,\r
-118,101,112,114,111,100,117,99,101,100,104,101,114,105,116,97,103,101,115,104,\r
-105,112,112,105,110,103,97,98,115,111,108,117,116,101,114,101,99,101,105,118,101\r
-,100,114,101,108,101,118,97,110,116,98,117,116,116,111,110,34,32,118,105,111,108\r
-,101,110,99,101,97,110,121,119,104,101,114,101,98,101,110,101,102,105,116,115,\r
-108,97,117,110,99,104,101,100,114,101,99,101,110,116,108,121,97,108,108,105,97,\r
-110,99,101,102,111,108,108,111,119,101,100,109,117,108,116,105,112,108,101,98,\r
-117,108,108,101,116,105,110,105,110,99,108,117,100,101,100,111,99,99,117,114,114\r
-,101,100,105,110,116,101,114,110,97,108,36,40,116,104,105,115,41,46,114,101,112,\r
-117,98,108,105,99,62,60,116,114,62,60,116,100,99,111,110,103,114,101,115,115,114\r
-,101,99,111,114,100,101,100,117,108,116,105,109,97,116,101,115,111,108,117,116,\r
-105,111,110,60,117,108,32,105,100,61,34,100,105,115,99,111,118,101,114,72,111,\r
-109,101,60,47,97,62,119,101,98,115,105,116,101,115,110,101,116,119,111,114,107,\r
-115,97,108,116,104,111,117,103,104,101,110,116,105,114,101,108,121,109,101,109,\r
-111,114,105,97,108,109,101,115,115,97,103,101,115,99,111,110,116,105,110,117,101\r
-,97,99,116,105,118,101,34,62,115,111,109,101,119,104,97,116,118,105,99,116,111,\r
-114,105,97,87,101,115,116,101,114,110,32,32,116,105,116,108,101,61,34,76,111,99,\r
-97,116,105,111,110,99,111,110,116,114,97,99,116,118,105,115,105,116,111,114,115,\r
-68,111,119,110,108,111,97,100,119,105,116,104,111,117,116,32,114,105,103,104,116\r
-,34,62,10,109,101,97,115,117,114,101,115,119,105,100,116,104,32,61,32,118,97,114\r
-,105,97,98,108,101,105,110,118,111,108,118,101,100,118,105,114,103,105,110,105,\r
-97,110,111,114,109,97,108,108,121,104,97,112,112,101,110,101,100,97,99,99,111,\r
-117,110,116,115,115,116,97,110,100,105,110,103,110,97,116,105,111,110,97,108,82,\r
-101,103,105,115,116,101,114,112,114,101,112,97,114,101,100,99,111,110,116,114,\r
-111,108,115,97,99,99,117,114,97,116,101,98,105,114,116,104,100,97,121,115,116,\r
-114,97,116,101,103,121,111,102,102,105,99,105,97,108,103,114,97,112,104,105,99,\r
-115,99,114,105,109,105,110,97,108,112,111,115,115,105,98,108,121,99,111,110,115,\r
-117,109,101,114,80,101,114,115,111,110,97,108,115,112,101,97,107,105,110,103,118\r
-,97,108,105,100,97,116,101,97,99,104,105,101,118,101,100,46,106,112,103,34,32,47\r
-,62,109,97,99,104,105,110,101,115,60,47,104,50,62,10,32,32,107,101,121,119,111,\r
-114,100,115,102,114,105,101,110,100,108,121,98,114,111,116,104,101,114,115,99,\r
-111,109,98,105,110,101,100,111,114,105,103,105,110,97,108,99,111,109,112,111,115\r
-,101,100,101,120,112,101,99,116,101,100,97,100,101,113,117,97,116,101,112,97,107\r
-,105,115,116,97,110,102,111,108,108,111,119,34,32,118,97,108,117,97,98,108,101,\r
-60,47,108,97,98,101,108,62,114,101,108,97,116,105,118,101,98,114,105,110,103,105\r
-,110,103,105,110,99,114,101,97,115,101,103,111,118,101,114,110,111,114,112,108,\r
-117,103,105,110,115,47,76,105,115,116,32,111,102,32,72,101,97,100,101,114,34,62,\r
-34,32,110,97,109,101,61,34,32,40,38,113,117,111,116,59,103,114,97,100,117,97,116\r
-,101,60,47,104,101,97,100,62,10,99,111,109,109,101,114,99,101,109,97,108,97,121,\r
-115,105,97,100,105,114,101,99,116,111,114,109,97,105,110,116,97,105,110,59,104,\r
-101,105,103,104,116,58,115,99,104,101,100,117,108,101,99,104,97,110,103,105,110,\r
-103,98,97,99,107,32,116,111,32,99,97,116,104,111,108,105,99,112,97,116,116,101,\r
-114,110,115,99,111,108,111,114,58,32,35,103,114,101,97,116,101,115,116,115,117,\r
-112,112,108,105,101,115,114,101,108,105,97,98,108,101,60,47,117,108,62,10,9,9,60\r
-,115,101,108,101,99,116,32,99,105,116,105,122,101,110,115,99,108,111,116,104,105\r
-,110,103,119,97,116,99,104,105,110,103,60,108,105,32,105,100,61,34,115,112,101,\r
-99,105,102,105,99,99,97,114,114,121,105,110,103,115,101,110,116,101,110,99,101,\r
-60,99,101,110,116,101,114,62,99,111,110,116,114,97,115,116,116,104,105,110,107,\r
-105,110,103,99,97,116,99,104,40,101,41,115,111,117,116,104,101,114,110,77,105,99\r
-,104,97,101,108,32,109,101,114,99,104,97,110,116,99,97,114,111,117,115,101,108,\r
-112,97,100,100,105,110,103,58,105,110,116,101,114,105,111,114,46,115,112,108,105\r
-,116,40,34,108,105,122,97,116,105,111,110,79,99,116,111,98,101,114,32,41,123,114\r
-,101,116,117,114,110,105,109,112,114,111,118,101,100,45,45,38,103,116,59,10,10,\r
-99,111,118,101,114,97,103,101,99,104,97,105,114,109,97,110,46,112,110,103,34,32,\r
-47,62,115,117,98,106,101,99,116,115,82,105,99,104,97,114,100,32,119,104,97,116,\r
-101,118,101,114,112,114,111,98,97,98,108,121,114,101,99,111,118,101,114,121,98,\r
-97,115,101,98,97,108,108,106,117,100,103,109,101,110,116,99,111,110,110,101,99,\r
-116,46,46,99,115,115,34,32,47,62,32,119,101,98,115,105,116,101,114,101,112,111,\r
-114,116,101,100,100,101,102,97,117,108,116,34,47,62,60,47,97,62,13,10,101,108,\r
-101,99,116,114,105,99,115,99,111,116,108,97,110,100,99,114,101,97,116,105,111,\r
-110,113,117,97,110,116,105,116,121,46,32,73,83,66,78,32,48,100,105,100,32,110,\r
-111,116,32,105,110,115,116,97,110,99,101,45,115,101,97,114,99,104,45,34,32,108,\r
-97,110,103,61,34,115,112,101,97,107,101,114,115,67,111,109,112,117,116,101,114,\r
-99,111,110,116,97,105,110,115,97,114,99,104,105,118,101,115,109,105,110,105,115,\r
-116,101,114,114,101,97,99,116,105,111,110,100,105,115,99,111,117,110,116,73,116,\r
-97,108,105,97,110,111,99,114,105,116,101,114,105,97,115,116,114,111,110,103,108,\r
-121,58,32,39,104,116,116,112,58,39,115,99,114,105,112,116,39,99,111,118,101,114,\r
-105,110,103,111,102,102,101,114,105,110,103,97,112,112,101,97,114,101,100,66,114\r
-,105,116,105,115,104,32,105,100,101,110,116,105,102,121,70,97,99,101,98,111,111,\r
-107,110,117,109,101,114,111,117,115,118,101,104,105,99,108,101,115,99,111,110,99\r
-,101,114,110,115,65,109,101,114,105,99,97,110,104,97,110,100,108,105,110,103,100\r
-,105,118,32,105,100,61,34,87,105,108,108,105,97,109,32,112,114,111,118,105,100,\r
-101,114,95,99,111,110,116,101,110,116,97,99,99,117,114,97,99,121,115,101,99,116,\r
-105,111,110,32,97,110,100,101,114,115,111,110,102,108,101,120,105,98,108,101,67,\r
-97,116,101,103,111,114,121,108,97,119,114,101,110,99,101,60,115,99,114,105,112,\r
-116,62,108,97,121,111,117,116,61,34,97,112,112,114,111,118,101,100,32,109,97,120\r
-,105,109,117,109,104,101,97,100,101,114,34,62,60,47,116,97,98,108,101,62,83,101,\r
-114,118,105,99,101,115,104,97,109,105,108,116,111,110,99,117,114,114,101,110,116\r
-,32,99,97,110,97,100,105,97,110,99,104,97,110,110,101,108,115,47,116,104,101,109\r
-,101,115,47,47,97,114,116,105,99,108,101,111,112,116,105,111,110,97,108,112,111,\r
-114,116,117,103,97,108,118,97,108,117,101,61,34,34,105,110,116,101,114,118,97,\r
-108,119,105,114,101,108,101,115,115,101,110,116,105,116,108,101,100,97,103,101,\r
-110,99,105,101,115,83,101,97,114,99,104,34,32,109,101,97,115,117,114,101,100,116\r
-,104,111,117,115,97,110,100,115,112,101,110,100,105,110,103,38,104,101,108,108,\r
-105,112,59,110,101,119,32,68,97,116,101,34,32,115,105,122,101,61,34,112,97,103,\r
-101,78,97,109,101,109,105,100,100,108,101,34,32,34,32,47,62,60,47,97,62,104,105,\r
-100,100,101,110,34,62,115,101,113,117,101,110,99,101,112,101,114,115,111,110,97,\r
-108,111,118,101,114,102,108,111,119,111,112,105,110,105,111,110,115,105,108,108,\r
-105,110,111,105,115,108,105,110,107,115,34,62,10,9,60,116,105,116,108,101,62,118\r
-,101,114,115,105,111,110,115,115,97,116,117,114,100,97,121,116,101,114,109,105,\r
-110,97,108,105,116,101,109,112,114,111,112,101,110,103,105,110,101,101,114,115,\r
-101,99,116,105,111,110,115,100,101,115,105,103,110,101,114,112,114,111,112,111,\r
-115,97,108,61,34,102,97,108,115,101,34,69,115,112,97,195,177,111,108,114,101,108\r
-,101,97,115,101,115,115,117,98,109,105,116,34,32,101,114,38,113,117,111,116,59,\r
-97,100,100,105,116,105,111,110,115,121,109,112,116,111,109,115,111,114,105,101,\r
-110,116,101,100,114,101,115,111,117,114,99,101,114,105,103,104,116,34,62,60,112,\r
-108,101,97,115,117,114,101,115,116,97,116,105,111,110,115,104,105,115,116,111,\r
-114,121,46,108,101,97,118,105,110,103,32,32,98,111,114,100,101,114,61,99,111,110\r
-,116,101,110,116,115,99,101,110,116,101,114,34,62,46,10,10,83,111,109,101,32,100\r
-,105,114,101,99,116,101,100,115,117,105,116,97,98,108,101,98,117,108,103,97,114,\r
-105,97,46,115,104,111,119,40,41,59,100,101,115,105,103,110,101,100,71,101,110,\r
-101,114,97,108,32,99,111,110,99,101,112,116,115,69,120,97,109,112,108,101,115,\r
-119,105,108,108,105,97,109,115,79,114,105,103,105,110,97,108,34,62,60,115,112,97\r
-,110,62,115,101,97,114,99,104,34,62,111,112,101,114,97,116,111,114,114,101,113,\r
-117,101,115,116,115,97,32,38,113,117,111,116,59,97,108,108,111,119,105,110,103,\r
-68,111,99,117,109,101,110,116,114,101,118,105,115,105,111,110,46,32,10,10,84,104\r
-,101,32,121,111,117,114,115,101,108,102,67,111,110,116,97,99,116,32,109,105,99,\r
-104,105,103,97,110,69,110,103,108,105,115,104,32,99,111,108,117,109,98,105,97,\r
-112,114,105,111,114,105,116,121,112,114,105,110,116,105,110,103,100,114,105,110,\r
-107,105,110,103,102,97,99,105,108,105,116,121,114,101,116,117,114,110,101,100,67\r
-,111,110,116,101,110,116,32,111,102,102,105,99,101,114,115,82,117,115,115,105,97\r
-,110,32,103,101,110,101,114,97,116,101,45,56,56,53,57,45,49,34,105,110,100,105,\r
-99,97,116,101,102,97,109,105,108,105,97,114,32,113,117,97,108,105,116,121,109,97\r
-,114,103,105,110,58,48,32,99,111,110,116,101,110,116,118,105,101,119,112,111,114\r
-,116,99,111,110,116,97,99,116,115,45,116,105,116,108,101,34,62,112,111,114,116,\r
-97,98,108,101,46,108,101,110,103,116,104,32,101,108,105,103,105,98,108,101,105,\r
-110,118,111,108,118,101,115,97,116,108,97,110,116,105,99,111,110,108,111,97,100,\r
-61,34,100,101,102,97,117,108,116,46,115,117,112,112,108,105,101,100,112,97,121,\r
-109,101,110,116,115,103,108,111,115,115,97,114,121,10,10,65,102,116,101,114,32,\r
-103,117,105,100,97,110,99,101,60,47,116,100,62,60,116,100,101,110,99,111,100,105\r
-,110,103,109,105,100,100,108,101,34,62,99,97,109,101,32,116,111,32,100,105,115,\r
-112,108,97,121,115,115,99,111,116,116,105,115,104,106,111,110,97,116,104,97,110,\r
-109,97,106,111,114,105,116,121,119,105,100,103,101,116,115,46,99,108,105,110,105\r
-,99,97,108,116,104,97,105,108,97,110,100,116,101,97,99,104,101,114,115,60,104,\r
-101,97,100,62,10,9,97,102,102,101,99,116,101,100,115,117,112,112,111,114,116,115\r
-,112,111,105,110,116,101,114,59,116,111,83,116,114,105,110,103,60,47,115,109,97,\r
-108,108,62,111,107,108,97,104,111,109,97,119,105,108,108,32,98,101,32,105,110,\r
-118,101,115,116,111,114,48,34,32,97,108,116,61,34,104,111,108,105,100,97,121,115\r
-,82,101,115,111,117,114,99,101,108,105,99,101,110,115,101,100,32,40,119,104,105,\r
-99,104,32,46,32,65,102,116,101,114,32,99,111,110,115,105,100,101,114,118,105,115\r
-,105,116,105,110,103,101,120,112,108,111,114,101,114,112,114,105,109,97,114,121,\r
-32,115,101,97,114,99,104,34,32,97,110,100,114,111,105,100,34,113,117,105,99,107,\r
-108,121,32,109,101,101,116,105,110,103,115,101,115,116,105,109,97,116,101,59,114\r
-,101,116,117,114,110,32,59,99,111,108,111,114,58,35,32,104,101,105,103,104,116,\r
-61,97,112,112,114,111,118,97,108,44,32,38,113,117,111,116,59,32,99,104,101,99,\r
-107,101,100,46,109,105,110,46,106,115,34,109,97,103,110,101,116,105,99,62,60,47,\r
-97,62,60,47,104,102,111,114,101,99,97,115,116,46,32,87,104,105,108,101,32,116,\r
-104,117,114,115,100,97,121,100,118,101,114,116,105,115,101,38,101,97,99,117,116,\r
-101,59,104,97,115,67,108,97,115,115,101,118,97,108,117,97,116,101,111,114,100,\r
-101,114,105,110,103,101,120,105,115,116,105,110,103,112,97,116,105,101,110,116,\r
-115,32,79,110,108,105,110,101,32,99,111,108,111,114,97,100,111,79,112,116,105,\r
-111,110,115,34,99,97,109,112,98,101,108,108,60,33,45,45,32,101,110,100,60,47,115\r
-,112,97,110,62,60,60,98,114,32,47,62,13,10,95,112,111,112,117,112,115,124,115,99\r
-,105,101,110,99,101,115,44,38,113,117,111,116,59,32,113,117,97,108,105,116,121,\r
-32,87,105,110,100,111,119,115,32,97,115,115,105,103,110,101,100,104,101,105,103,\r
-104,116,58,32,60,98,32,99,108,97,115,115,108,101,38,113,117,111,116,59,32,118,97\r
-,108,117,101,61,34,32,67,111,109,112,97,110,121,101,120,97,109,112,108,101,115,\r
-60,105,102,114,97,109,101,32,98,101,108,105,101,118,101,115,112,114,101,115,101,\r
-110,116,115,109,97,114,115,104,97,108,108,112,97,114,116,32,111,102,32,112,114,\r
-111,112,101,114,108,121,41,46,10,10,84,104,101,32,116,97,120,111,110,111,109,121\r
-,109,117,99,104,32,111,102,32,60,47,115,112,97,110,62,10,34,32,100,97,116,97,45,\r
-115,114,116,117,103,117,195,170,115,115,99,114,111,108,108,84,111,32,112,114,111\r
-,106,101,99,116,60,104,101,97,100,62,13,10,97,116,116,111,114,110,101,121,101,\r
-109,112,104,97,115,105,115,115,112,111,110,115,111,114,115,102,97,110,99,121,98,\r
-111,120,119,111,114,108,100,39,115,32,119,105,108,100,108,105,102,101,99,104,101\r
-,99,107,101,100,61,115,101,115,115,105,111,110,115,112,114,111,103,114,97,109,\r
-109,112,120,59,102,111,110,116,45,32,80,114,111,106,101,99,116,106,111,117,114,\r
-110,97,108,115,98,101,108,105,101,118,101,100,118,97,99,97,116,105,111,110,116,\r
-104,111,109,112,115,111,110,108,105,103,104,116,105,110,103,97,110,100,32,116,\r
-104,101,32,115,112,101,99,105,97,108,32,98,111,114,100,101,114,61,48,99,104,101,\r
-99,107,105,110,103,60,47,116,98,111,100,121,62,60,98,117,116,116,111,110,32,67,\r
-111,109,112,108,101,116,101,99,108,101,97,114,102,105,120,10,60,104,101,97,100,\r
-62,10,97,114,116,105,99,108,101,32,60,115,101,99,116,105,111,110,102,105,110,100\r
-,105,110,103,115,114,111,108,101,32,105,110,32,112,111,112,117,108,97,114,32,32,\r
-79,99,116,111,98,101,114,119,101,98,115,105,116,101,32,101,120,112,111,115,117,\r
-114,101,117,115,101,100,32,116,111,32,32,99,104,97,110,103,101,115,111,112,101,\r
-114,97,116,101,100,99,108,105,99,107,105,110,103,101,110,116,101,114,105,110,103\r
-,99,111,109,109,97,110,100,115,105,110,102,111,114,109,101,100,32,110,117,109,98\r
-,101,114,115,32,32,60,47,100,105,118,62,99,114,101,97,116,105,110,103,111,110,83\r
-,117,98,109,105,116,109,97,114,121,108,97,110,100,99,111,108,108,101,103,101,115\r
-,97,110,97,108,121,116,105,99,108,105,115,116,105,110,103,115,99,111,110,116,97,\r
-99,116,46,108,111,103,103,101,100,73,110,97,100,118,105,115,111,114,121,115,105,\r
-98,108,105,110,103,115,99,111,110,116,101,110,116,34,115,38,113,117,111,116,59,\r
-41,115,46,32,84,104,105,115,32,112,97,99,107,97,103,101,115,99,104,101,99,107,98\r
-,111,120,115,117,103,103,101,115,116,115,112,114,101,103,110,97,110,116,116,111,\r
-109,111,114,114,111,119,115,112,97,99,105,110,103,61,105,99,111,110,46,112,110,\r
-103,106,97,112,97,110,101,115,101,99,111,100,101,98,97,115,101,98,117,116,116,\r
-111,110,34,62,103,97,109,98,108,105,110,103,115,117,99,104,32,97,115,32,44,32,\r
-119,104,105,108,101,32,60,47,115,112,97,110,62,32,109,105,115,115,111,117,114,\r
-105,115,112,111,114,116,105,110,103,116,111,112,58,49,112,120,32,46,60,47,115,\r
-112,97,110,62,116,101,110,115,105,111,110,115,119,105,100,116,104,61,34,50,108,\r
-97,122,121,108,111,97,100,110,111,118,101,109,98,101,114,117,115,101,100,32,105,\r
-110,32,104,101,105,103,104,116,61,34,99,114,105,112,116,34,62,10,38,110,98,115,\r
-112,59,60,47,60,116,114,62,60,116,100,32,104,101,105,103,104,116,58,50,47,112,\r
-114,111,100,117,99,116,99,111,117,110,116,114,121,32,105,110,99,108,117,100,101,\r
-32,102,111,111,116,101,114,34,32,38,108,116,59,33,45,45,32,116,105,116,108,101,\r
-34,62,60,47,106,113,117,101,114,121,46,60,47,102,111,114,109,62,10,40,231,174,\r
-128,228,189,147,41,40,231,185,129,233,171,148,41,104,114,118,97,116,115,107,105,\r
-105,116,97,108,105,97,110,111,114,111,109,195,162,110,196,131,116,195,188,114,\r
-107,195,167,101,216,167,216,177,216,175,217,136,116,97,109,98,105,195,169,110,\r
-110,111,116,105,99,105,97,115,109,101,110,115,97,106,101,115,112,101,114,115,111\r
-,110,97,115,100,101,114,101,99,104,111,115,110,97,99,105,111,110,97,108,115,101,\r
-114,118,105,99,105,111,99,111,110,116,97,99,116,111,117,115,117,97,114,105,111,\r
-115,112,114,111,103,114,97,109,97,103,111,98,105,101,114,110,111,101,109,112,114\r
-,101,115,97,115,97,110,117,110,99,105,111,115,118,97,108,101,110,99,105,97,99,\r
-111,108,111,109,98,105,97,100,101,115,112,117,195,169,115,100,101,112,111,114,\r
-116,101,115,112,114,111,121,101,99,116,111,112,114,111,100,117,99,116,111,112,\r
-195,186,98,108,105,99,111,110,111,115,111,116,114,111,115,104,105,115,116,111,\r
-114,105,97,112,114,101,115,101,110,116,101,109,105,108,108,111,110,101,115,109,\r
-101,100,105,97,110,116,101,112,114,101,103,117,110,116,97,97,110,116,101,114,105\r
-,111,114,114,101,99,117,114,115,111,115,112,114,111,98,108,101,109,97,115,97,110\r
-,116,105,97,103,111,110,117,101,115,116,114,111,115,111,112,105,110,105,195,179,\r
-110,105,109,112,114,105,109,105,114,109,105,101,110,116,114,97,115,97,109,195,\r
-169,114,105,99,97,118,101,110,100,101,100,111,114,115,111,99,105,101,100,97,100,\r
-114,101,115,112,101,99,116,111,114,101,97,108,105,122,97,114,114,101,103,105,115\r
-,116,114,111,112,97,108,97,98,114,97,115,105,110,116,101,114,195,169,115,101,110\r
-,116,111,110,99,101,115,101,115,112,101,99,105,97,108,109,105,101,109,98,114,111\r
-,115,114,101,97,108,105,100,97,100,99,195,179,114,100,111,98,97,122,97,114,97,\r
-103,111,122,97,112,195,161,103,105,110,97,115,115,111,99,105,97,108,101,115,98,\r
-108,111,113,117,101,97,114,103,101,115,116,105,195,179,110,97,108,113,117,105,\r
-108,101,114,115,105,115,116,101,109,97,115,99,105,101,110,99,105,97,115,99,111,\r
-109,112,108,101,116,111,118,101,114,115,105,195,179,110,99,111,109,112,108,101,\r
-116,97,101,115,116,117,100,105,111,115,112,195,186,98,108,105,99,97,111,98,106,\r
-101,116,105,118,111,97,108,105,99,97,110,116,101,98,117,115,99,97,100,111,114,99\r
-,97,110,116,105,100,97,100,101,110,116,114,97,100,97,115,97,99,99,105,111,110,\r
-101,115,97,114,99,104,105,118,111,115,115,117,112,101,114,105,111,114,109,97,121\r
-,111,114,195,173,97,97,108,101,109,97,110,105,97,102,117,110,99,105,195,179,110,\r
-195,186,108,116,105,109,111,115,104,97,99,105,101,110,100,111,97,113,117,101,108\r
-,108,111,115,101,100,105,99,105,195,179,110,102,101,114,110,97,110,100,111,97,\r
-109,98,105,101,110,116,101,102,97,99,101,98,111,111,107,110,117,101,115,116,114,\r
-97,115,99,108,105,101,110,116,101,115,112,114,111,99,101,115,111,115,98,97,115,\r
-116,97,110,116,101,112,114,101,115,101,110,116,97,114,101,112,111,114,116,97,114\r
-,99,111,110,103,114,101,115,111,112,117,98,108,105,99,97,114,99,111,109,101,114,\r
-99,105,111,99,111,110,116,114,97,116,111,106,195,179,118,101,110,101,115,100,105\r
-,115,116,114,105,116,111,116,195,169,99,110,105,99,97,99,111,110,106,117,110,116\r
-,111,101,110,101,114,103,195,173,97,116,114,97,98,97,106,97,114,97,115,116,117,\r
-114,105,97,115,114,101,99,105,101,110,116,101,117,116,105,108,105,122,97,114,98,\r
-111,108,101,116,195,173,110,115,97,108,118,97,100,111,114,99,111,114,114,101,99,\r
-116,97,116,114,97,98,97,106,111,115,112,114,105,109,101,114,111,115,110,101,103,\r
-111,99,105,111,115,108,105,98,101,114,116,97,100,100,101,116,97,108,108,101,115,\r
-112,97,110,116,97,108,108,97,112,114,195,179,120,105,109,111,97,108,109,101,114,\r
-195,173,97,97,110,105,109,97,108,101,115,113,117,105,195,169,110,101,115,99,111,\r
-114,97,122,195,179,110,115,101,99,99,105,195,179,110,98,117,115,99,97,110,100,\r
-111,111,112,99,105,111,110,101,115,101,120,116,101,114,105,111,114,99,111,110,99\r
-,101,112,116,111,116,111,100,97,118,195,173,97,103,97,108,101,114,195,173,97,101\r
-,115,99,114,105,98,105,114,109,101,100,105,99,105,110,97,108,105,99,101,110,99,\r
-105,97,99,111,110,115,117,108,116,97,97,115,112,101,99,116,111,115,99,114,195,\r
-173,116,105,99,97,100,195,179,108,97,114,101,115,106,117,115,116,105,99,105,97,\r
-100,101,98,101,114,195,161,110,112,101,114,195,173,111,100,111,110,101,99,101,\r
-115,105,116,97,109,97,110,116,101,110,101,114,112,101,113,117,101,195,177,111,\r
-114,101,99,105,98,105,100,97,116,114,105,98,117,110,97,108,116,101,110,101,114,\r
-105,102,101,99,97,110,99,105,195,179,110,99,97,110,97,114,105,97,115,100,101,115\r
-,99,97,114,103,97,100,105,118,101,114,115,111,115,109,97,108,108,111,114,99,97,\r
-114,101,113,117,105,101,114,101,116,195,169,99,110,105,99,111,100,101,98,101,114\r
-,195,173,97,118,105,118,105,101,110,100,97,102,105,110,97,110,122,97,115,97,100,\r
-101,108,97,110,116,101,102,117,110,99,105,111,110,97,99,111,110,115,101,106,111,\r
-115,100,105,102,195,173,99,105,108,99,105,117,100,97,100,101,115,97,110,116,105,\r
-103,117,97,115,97,118,97,110,122,97,100,97,116,195,169,114,109,105,110,111,117,\r
-110,105,100,97,100,101,115,115,195,161,110,99,104,101,122,99,97,109,112,97,195,\r
-177,97,115,111,102,116,111,110,105,99,114,101,118,105,115,116,97,115,99,111,110,\r
-116,105,101,110,101,115,101,99,116,111,114,101,115,109,111,109,101,110,116,111,\r
-115,102,97,99,117,108,116,97,100,99,114,195,169,100,105,116,111,100,105,118,101,\r
-114,115,97,115,115,117,112,117,101,115,116,111,102,97,99,116,111,114,101,115,115\r
-,101,103,117,110,100,111,115,112,101,113,117,101,195,177,97,208,179,208,190,208,\r
-180,208,176,208,181,209,129,208,187,208,184,208,181,209,129,209,130,209,140,208,\r
-177,209,139,208,187,208,190,208,177,209,139,209,130,209,140,209,141,209,130,208,\r
-190,208,188,208,149,209,129,208,187,208,184,209,130,208,190,208,179,208,190,208,\r
-188,208,181,208,189,209,143,208,178,209,129,208,181,209,133,209,141,209,130,208,\r
-190,208,185,208,180,208,176,208,182,208,181,208,177,209,139,208,187,208,184,208,\r
-179,208,190,208,180,209,131,208,180,208,181,208,189,209,140,209,141,209,130,208,\r
-190,209,130,208,177,209,139,208,187,208,176,209,129,208,181,208,177,209,143,208,\r
-190,208,180,208,184,208,189,209,129,208,181,208,177,208,181,208,189,208,176,208,\r
-180,208,190,209,129,208,176,208,185,209,130,209,132,208,190,209,130,208,190,208,\r
-189,208,181,208,179,208,190,209,129,208,178,208,190,208,184,209,129,208,178,208,\r
-190,208,185,208,184,208,179,209,128,209,139,209,130,208,190,208,182,208,181,208,\r
-178,209,129,208,181,208,188,209,129,208,178,208,190,209,142,208,187,208,184,209,\r
-136,209,140,209,141,209,130,208,184,209,133,208,191,208,190,208,186,208,176,208,\r
-180,208,189,208,181,208,185,208,180,208,190,208,188,208,176,208,188,208,184,209,\r
-128,208,176,208,187,208,184,208,177,208,190,209,130,208,181,208,188,209,131,209,\r
-133,208,190,209,130,209,143,208,180,208,178,209,131,209,133,209,129,208,181,209,\r
-130,208,184,208,187,209,142,208,180,208,184,208,180,208,181,208,187,208,190,208,\r
-188,208,184,209,128,208,181,209,130,208,181,208,177,209,143,209,129,208,178,208,\r
-190,208,181,208,178,208,184,208,180,208,181,209,135,208,181,208,179,208,190,209,\r
-141,209,130,208,184,208,188,209,129,209,135,208,181,209,130,209,130,208,181,208,\r
-188,209,139,209,134,208,181,208,189,209,139,209,129,209,130,208,176,208,187,208,\r
-178,208,181,208,180,209,140,209,130,208,181,208,188,208,181,208,178,208,190,208,\r
-180,209,139,209,130,208,181,208,177,208,181,208,178,209,139,209,136,208,181,208,\r
-189,208,176,208,188,208,184,209,130,208,184,208,191,208,176,209,130,208,190,208,\r
-188,209,131,208,191,209,128,208,176,208,178,208,187,208,184,209,134,208,176,208,\r
-190,208,180,208,189,208,176,208,179,208,190,208,180,209,139,208,183,208,189,208,\r
-176,209,142,208,188,208,190,208,179,209,131,208,180,209,128,209,131,208,179,208,\r
-178,209,129,208,181,208,185,208,184,208,180,208,181,209,130,208,186,208,184,208,\r
-189,208,190,208,190,208,180,208,189,208,190,208,180,208,181,208,187,208,176,208,\r
-180,208,181,208,187,208,181,209,129,209,128,208,190,208,186,208,184,209,142,208,\r
-189,209,143,208,178,208,181,209,129,209,140,208,149,209,129,209,130,209,140,209,\r
-128,208,176,208,183,208,176,208,189,208,176,209,136,208,184,216,167,217,132,217,\r
-132,217,135,216,167,217,132,216,170,217,138,216,172,217,133,217,138,216,185,216,\r
-174,216,167,216,181,216,169,216,167,217,132,216,176,217,138,216,185,217,132,217,\r
-138,217,135,216,172,216,175,217,138,216,175,216,167,217,132,216,162,217,134,216,\r
-167,217,132,216,177,216,175,216,170,216,173,217,131,217,133,216,181,217,129,216,\r
-173,216,169,217,131,216,167,217,134,216,170,216,167,217,132,217,132,217,138,217,\r
-138,217,131,217,136,217,134,216,180,216,168,217,131,216,169,217,129,217,138,217,\r
-135,216,167,216,168,217,134,216,167,216,170,216,173,217,136,216,167,216,161,216,\r
-163,217,131,216,171,216,177,216,174,217,132,216,167,217,132,216,167,217,132,216,\r
-173,216,168,216,175,217,132,217,138,217,132,216,175,216,177,217,136,216,179,216,\r
-167,216,182,216,186,216,183,216,170,217,131,217,136,217,134,217,135,217,134,216,\r
-167,217,131,216,179,216,167,216,173,216,169,217,134,216,167,216,175,217,138,216,\r
-167,217,132,216,183,216,168,216,185,217,132,217,138,217,131,216,180,217,131,216,\r
-177,216,167,217,138,217,133,217,131,217,134,217,133,217,134,217,135,216,167,216,\r
-180,216,177,217,131,216,169,216,177,216,166,217,138,216,179,217,134,216,180,217,\r
-138,216,183,217,133,216,167,216,176,216,167,216,167,217,132,217,129,217,134,216,\r
-180,216,168,216,167,216,168,216,170,216,185,216,168,216,177,216,177,216,173,217,\r
-133,216,169,217,131,216,167,217,129,216,169,217,138,217,130,217,136,217,132,217,\r
-133,216,177,217,131,216,178,217,131,217,132,217,133,216,169,216,163,216,173,217,\r
-133,216,175,217,130,217,132,216,168,217,138,217,138,216,185,217,134,217,138,216,\r
-181,217,136,216,177,216,169,216,183,216,177,217,138,217,130,216,180,216,167,216,\r
-177,217,131,216,172,217,136,216,167,217,132,216,163,216,174,216,177,217,137,217,\r
-133,216,185,217,134,216,167,216,167,216,168,216,173,216,171,216,185,216,177,217,\r
-136,216,182,216,168,216,180,217,131,217,132,217,133,216,179,216,172,217,132,216,\r
-168,217,134,216,167,217,134,216,174,216,167,217,132,216,175,217,131,216,170,216,\r
-167,216,168,217,131,217,132,217,138,216,169,216,168,216,175,217,136,217,134,216,\r
-163,217,138,216,182,216,167,217,138,217,136,216,172,216,175,217,129,216,177,217,\r
-138,217,130,217,131,216,170,216,168,216,170,216,163,217,129,216,182,217,132,217,\r
-133,216,183,216,168,216,174,216,167,217,131,216,171,216,177,216,168,216,167,216,\r
-177,217,131,216,167,217,129,216,182,217,132,216,167,216,173,217,132,217,137,217,\r
-134,217,129,216,179,217,135,216,163,217,138,216,167,217,133,216,177,216,175,217,\r
-136,216,175,216,163,217,134,217,135,216,167,216,175,217,138,217,134,216,167,216,\r
-167,217,132,216,167,217,134,217,133,216,185,216,177,216,182,216,170,216,185,217,\r
-132,217,133,216,175,216,167,216,174,217,132,217,133,217,133,217,131,217,134,0,0,\r
-0,0,0,0,0,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,0,1,2,3,4,5,6,7,7,6,\r
-5,4,3,2,1,0,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,16,17,18,19,20,21,22,23,\r
-23,22,21,20,19,18,17,16,24,25,26,27,28,29,30,31,31,30,29,28,27,26,25,24,255,255,\r
-255,255,0,0,0,0,0,0,0,0,255,255,255,255,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,\r
-3,0,0,0,255,255,0,1,0,0,0,1,0,0,255,255,0,1,0,0,0,8,0,8,0,8,0,8,0,0,0,1,0,2,0,3,\r
-0,4,0,5,0,6,0,7,114,101,115,111,117,114,99,101,115,99,111,117,110,116,114,105,\r
-101,115,113,117,101,115,116,105,111,110,115,101,113,117,105,112,109,101,110,116,\r
-99,111,109,109,117,110,105,116,121,97,118,97,105,108,97,98,108,101,104,105,103,\r
-104,108,105,103,104,116,68,84,68,47,120,104,116,109,108,109,97,114,107,101,116,\r
-105,110,103,107,110,111,119,108,101,100,103,101,115,111,109,101,116,104,105,110,\r
-103,99,111,110,116,97,105,110,101,114,100,105,114,101,99,116,105,111,110,115,117\r
-,98,115,99,114,105,98,101,97,100,118,101,114,116,105,115,101,99,104,97,114,97,99\r
-,116,101,114,34,32,118,97,108,117,101,61,34,60,47,115,101,108,101,99,116,62,65,\r
-117,115,116,114,97,108,105,97,34,32,99,108,97,115,115,61,34,115,105,116,117,97,\r
-116,105,111,110,97,117,116,104,111,114,105,116,121,102,111,108,108,111,119,105,\r
-110,103,112,114,105,109,97,114,105,108,121,111,112,101,114,97,116,105,111,110,99\r
-,104,97,108,108,101,110,103,101,100,101,118,101,108,111,112,101,100,97,110,111,\r
-110,121,109,111,117,115,102,117,110,99,116,105,111,110,32,102,117,110,99,116,105\r
-,111,110,115,99,111,109,112,97,110,105,101,115,115,116,114,117,99,116,117,114,\r
-101,97,103,114,101,101,109,101,110,116,34,32,116,105,116,108,101,61,34,112,111,\r
-116,101,110,116,105,97,108,101,100,117,99,97,116,105,111,110,97,114,103,117,109,\r
-101,110,116,115,115,101,99,111,110,100,97,114,121,99,111,112,121,114,105,103,104\r
-,116,108,97,110,103,117,97,103,101,115,101,120,99,108,117,115,105,118,101,99,111\r
-,110,100,105,116,105,111,110,60,47,102,111,114,109,62,13,10,115,116,97,116,101,\r
-109,101,110,116,97,116,116,101,110,116,105,111,110,66,105,111,103,114,97,112,104\r
-,121,125,32,101,108,115,101,32,123,10,115,111,108,117,116,105,111,110,115,119,\r
-104,101,110,32,116,104,101,32,65,110,97,108,121,116,105,99,115,116,101,109,112,\r
-108,97,116,101,115,100,97,110,103,101,114,111,117,115,115,97,116,101,108,108,105\r
-,116,101,100,111,99,117,109,101,110,116,115,112,117,98,108,105,115,104,101,114,\r
-105,109,112,111,114,116,97,110,116,112,114,111,116,111,116,121,112,101,105,110,\r
-102,108,117,101,110,99,101,38,114,97,113,117,111,59,60,47,101,102,102,101,99,116\r
-,105,118,101,103,101,110,101,114,97,108,108,121,116,114,97,110,115,102,111,114,\r
-109,98,101,97,117,116,105,102,117,108,116,114,97,110,115,112,111,114,116,111,114\r
-,103,97,110,105,122,101,100,112,117,98,108,105,115,104,101,100,112,114,111,109,\r
-105,110,101,110,116,117,110,116,105,108,32,116,104,101,116,104,117,109,98,110,97\r
-,105,108,78,97,116,105,111,110,97,108,32,46,102,111,99,117,115,40,41,59,111,118,\r
-101,114,32,116,104,101,32,109,105,103,114,97,116,105,111,110,97,110,110,111,117,\r
-110,99,101,100,102,111,111,116,101,114,34,62,10,101,120,99,101,112,116,105,111,\r
-110,108,101,115,115,32,116,104,97,110,101,120,112,101,110,115,105,118,101,102,\r
-111,114,109,97,116,105,111,110,102,114,97,109,101,119,111,114,107,116,101,114,\r
-114,105,116,111,114,121,110,100,105,99,97,116,105,111,110,99,117,114,114,101,110\r
-,116,108,121,99,108,97,115,115,78,97,109,101,99,114,105,116,105,99,105,115,109,\r
-116,114,97,100,105,116,105,111,110,101,108,115,101,119,104,101,114,101,65,108,\r
-101,120,97,110,100,101,114,97,112,112,111,105,110,116,101,100,109,97,116,101,114\r
-,105,97,108,115,98,114,111,97,100,99,97,115,116,109,101,110,116,105,111,110,101,\r
-100,97,102,102,105,108,105,97,116,101,60,47,111,112,116,105,111,110,62,116,114,\r
-101,97,116,109,101,110,116,100,105,102,102,101,114,101,110,116,47,100,101,102,97\r
-,117,108,116,46,80,114,101,115,105,100,101,110,116,111,110,99,108,105,99,107,61,\r
-34,98,105,111,103,114,97,112,104,121,111,116,104,101,114,119,105,115,101,112,101\r
-,114,109,97,110,101,110,116,70,114,97,110,195,167,97,105,115,72,111,108,108,121,\r
-119,111,111,100,101,120,112,97,110,115,105,111,110,115,116,97,110,100,97,114,100\r
-,115,60,47,115,116,121,108,101,62,10,114,101,100,117,99,116,105,111,110,68,101,\r
-99,101,109,98,101,114,32,112,114,101,102,101,114,114,101,100,67,97,109,98,114,\r
-105,100,103,101,111,112,112,111,110,101,110,116,115,66,117,115,105,110,101,115,\r
-115,32,99,111,110,102,117,115,105,111,110,62,10,60,116,105,116,108,101,62,112,\r
-114,101,115,101,110,116,101,100,101,120,112,108,97,105,110,101,100,100,111,101,\r
-115,32,110,111,116,32,119,111,114,108,100,119,105,100,101,105,110,116,101,114,\r
-102,97,99,101,112,111,115,105,116,105,111,110,115,110,101,119,115,112,97,112,101\r
-,114,60,47,116,97,98,108,101,62,10,109,111,117,110,116,97,105,110,115,108,105,\r
-107,101,32,116,104,101,32,101,115,115,101,110,116,105,97,108,102,105,110,97,110,\r
-99,105,97,108,115,101,108,101,99,116,105,111,110,97,99,116,105,111,110,61,34,47,\r
-97,98,97,110,100,111,110,101,100,69,100,117,99,97,116,105,111,110,112,97,114,115\r
-,101,73,110,116,40,115,116,97,98,105,108,105,116,121,117,110,97,98,108,101,32,\r
-116,111,60,47,116,105,116,108,101,62,10,114,101,108,97,116,105,111,110,115,78,\r
-111,116,101,32,116,104,97,116,101,102,102,105,99,105,101,110,116,112,101,114,102\r
-,111,114,109,101,100,116,119,111,32,121,101,97,114,115,83,105,110,99,101,32,116,\r
-104,101,116,104,101,114,101,102,111,114,101,119,114,97,112,112,101,114,34,62,97,\r
-108,116,101,114,110,97,116,101,105,110,99,114,101,97,115,101,100,66,97,116,116,\r
-108,101,32,111,102,112,101,114,99,101,105,118,101,100,116,114,121,105,110,103,32\r
-,116,111,110,101,99,101,115,115,97,114,121,112,111,114,116,114,97,121,101,100,\r
-101,108,101,99,116,105,111,110,115,69,108,105,122,97,98,101,116,104,60,47,105,\r
-102,114,97,109,101,62,100,105,115,99,111,118,101,114,121,105,110,115,117,114,97,\r
-110,99,101,115,46,108,101,110,103,116,104,59,108,101,103,101,110,100,97,114,121,\r
-71,101,111,103,114,97,112,104,121,99,97,110,100,105,100,97,116,101,99,111,114,\r
-112,111,114,97,116,101,115,111,109,101,116,105,109,101,115,115,101,114,118,105,\r
-99,101,115,46,105,110,104,101,114,105,116,101,100,60,47,115,116,114,111,110,103,\r
-62,67,111,109,109,117,110,105,116,121,114,101,108,105,103,105,111,117,115,108,\r
-111,99,97,116,105,111,110,115,67,111,109,109,105,116,116,101,101,98,117,105,108,\r
-100,105,110,103,115,116,104,101,32,119,111,114,108,100,110,111,32,108,111,110,\r
-103,101,114,98,101,103,105,110,110,105,110,103,114,101,102,101,114,101,110,99,\r
-101,99,97,110,110,111,116,32,98,101,102,114,101,113,117,101,110,99,121,116,121,\r
-112,105,99,97,108,108,121,105,110,116,111,32,116,104,101,32,114,101,108,97,116,\r
-105,118,101,59,114,101,99,111,114,100,105,110,103,112,114,101,115,105,100,101,\r
-110,116,105,110,105,116,105,97,108,108,121,116,101,99,104,110,105,113,117,101,\r
-116,104,101,32,111,116,104,101,114,105,116,32,99,97,110,32,98,101,101,120,105,\r
-115,116,101,110,99,101,117,110,100,101,114,108,105,110,101,116,104,105,115,32,\r
-116,105,109,101,116,101,108,101,112,104,111,110,101,105,116,101,109,115,99,111,\r
-112,101,112,114,97,99,116,105,99,101,115,97,100,118,97,110,116,97,103,101,41,59,\r
-114,101,116,117,114,110,32,70,111,114,32,111,116,104,101,114,112,114,111,118,105\r
-,100,105,110,103,100,101,109,111,99,114,97,99,121,98,111,116,104,32,116,104,101,\r
-32,101,120,116,101,110,115,105,118,101,115,117,102,102,101,114,105,110,103,115,\r
-117,112,112,111,114,116,101,100,99,111,109,112,117,116,101,114,115,32,102,117,\r
-110,99,116,105,111,110,112,114,97,99,116,105,99,97,108,115,97,105,100,32,116,104\r
-,97,116,105,116,32,109,97,121,32,98,101,69,110,103,108,105,115,104,60,47,102,114\r
-,111,109,32,116,104,101,32,115,99,104,101,100,117,108,101,100,100,111,119,110,\r
-108,111,97,100,115,60,47,108,97,98,101,108,62,10,115,117,115,112,101,99,116,101,\r
-100,109,97,114,103,105,110,58,32,48,115,112,105,114,105,116,117,97,108,60,47,104\r
-,101,97,100,62,10,10,109,105,99,114,111,115,111,102,116,103,114,97,100,117,97,\r
-108,108,121,100,105,115,99,117,115,115,101,100,104,101,32,98,101,99,97,109,101,\r
-101,120,101,99,117,116,105,118,101,106,113,117,101,114,121,46,106,115,104,111,\r
-117,115,101,104,111,108,100,99,111,110,102,105,114,109,101,100,112,117,114,99,\r
-104,97,115,101,100,108,105,116,101,114,97,108,108,121,100,101,115,116,114,111,\r
-121,101,100,117,112,32,116,111,32,116,104,101,118,97,114,105,97,116,105,111,110,\r
-114,101,109,97,105,110,105,110,103,105,116,32,105,115,32,110,111,116,99,101,110,\r
-116,117,114,105,101,115,74,97,112,97,110,101,115,101,32,97,109,111,110,103,32,\r
-116,104,101,99,111,109,112,108,101,116,101,100,97,108,103,111,114,105,116,104,\r
-109,105,110,116,101,114,101,115,116,115,114,101,98,101,108,108,105,111,110,117,\r
-110,100,101,102,105,110,101,100,101,110,99,111,117,114,97,103,101,114,101,115,\r
-105,122,97,98,108,101,105,110,118,111,108,118,105,110,103,115,101,110,115,105,\r
-116,105,118,101,117,110,105,118,101,114,115,97,108,112,114,111,118,105,115,105,\r
-111,110,40,97,108,116,104,111,117,103,104,102,101,97,116,117,114,105,110,103,99,\r
-111,110,100,117,99,116,101,100,41,44,32,119,104,105,99,104,32,99,111,110,116,105\r
-,110,117,101,100,45,104,101,97,100,101,114,34,62,70,101,98,114,117,97,114,121,32\r
-,110,117,109,101,114,111,117,115,32,111,118,101,114,102,108,111,119,58,99,111,\r
-109,112,111,110,101,110,116,102,114,97,103,109,101,110,116,115,101,120,99,101,\r
-108,108,101,110,116,99,111,108,115,112,97,110,61,34,116,101,99,104,110,105,99,97\r
-,108,110,101,97,114,32,116,104,101,32,65,100,118,97,110,99,101,100,32,115,111,\r
-117,114,99,101,32,111,102,101,120,112,114,101,115,115,101,100,72,111,110,103,32,\r
-75,111,110,103,32,70,97,99,101,98,111,111,107,109,117,108,116,105,112,108,101,32\r
-,109,101,99,104,97,110,105,115,109,101,108,101,118,97,116,105,111,110,111,102,\r
-102,101,110,115,105,118,101,60,47,102,111,114,109,62,10,9,115,112,111,110,115,\r
-111,114,101,100,100,111,99,117,109,101,110,116,46,111,114,32,38,113,117,111,116,\r
-59,116,104,101,114,101,32,97,114,101,116,104,111,115,101,32,119,104,111,109,111,\r
-118,101,109,101,110,116,115,112,114,111,99,101,115,115,101,115,100,105,102,102,\r
-105,99,117,108,116,115,117,98,109,105,116,116,101,100,114,101,99,111,109,109,101\r
-,110,100,99,111,110,118,105,110,99,101,100,112,114,111,109,111,116,105,110,103,\r
-34,32,119,105,100,116,104,61,34,46,114,101,112,108,97,99,101,40,99,108,97,115,\r
-115,105,99,97,108,99,111,97,108,105,116,105,111,110,104,105,115,32,102,105,114,\r
-115,116,100,101,99,105,115,105,111,110,115,97,115,115,105,115,116,97,110,116,105\r
-,110,100,105,99,97,116,101,100,101,118,111,108,117,116,105,111,110,45,119,114,97\r
-,112,112,101,114,34,101,110,111,117,103,104,32,116,111,97,108,111,110,103,32,116\r
-,104,101,100,101,108,105,118,101,114,101,100,45,45,62,13,10,60,33,45,45,65,109,\r
-101,114,105,99,97,110,32,112,114,111,116,101,99,116,101,100,78,111,118,101,109,\r
-98,101,114,32,60,47,115,116,121,108,101,62,60,102,117,114,110,105,116,117,114,\r
-101,73,110,116,101,114,110,101,116,32,32,111,110,98,108,117,114,61,34,115,117,\r
-115,112,101,110,100,101,100,114,101,99,105,112,105,101,110,116,98,97,115,101,100\r
-,32,111,110,32,77,111,114,101,111,118,101,114,44,97,98,111,108,105,115,104,101,\r
-100,99,111,108,108,101,99,116,101,100,119,101,114,101,32,109,97,100,101,101,109,\r
-111,116,105,111,110,97,108,101,109,101,114,103,101,110,99,121,110,97,114,114,97,\r
-116,105,118,101,97,100,118,111,99,97,116,101,115,112,120,59,98,111,114,100,101,\r
-114,99,111,109,109,105,116,116,101,100,100,105,114,61,34,108,116,114,34,101,109,\r
-112,108,111,121,101,101,115,114,101,115,101,97,114,99,104,46,32,115,101,108,101,\r
-99,116,101,100,115,117,99,99,101,115,115,111,114,99,117,115,116,111,109,101,114,\r
-115,100,105,115,112,108,97,121,101,100,83,101,112,116,101,109,98,101,114,97,100,\r
-100,67,108,97,115,115,40,70,97,99,101,98,111,111,107,32,115,117,103,103,101,115,\r
-116,101,100,97,110,100,32,108,97,116,101,114,111,112,101,114,97,116,105,110,103,\r
-101,108,97,98,111,114,97,116,101,83,111,109,101,116,105,109,101,115,73,110,115,\r
-116,105,116,117,116,101,99,101,114,116,97,105,110,108,121,105,110,115,116,97,108\r
-,108,101,100,102,111,108,108,111,119,101,114,115,74,101,114,117,115,97,108,101,\r
-109,116,104,101,121,32,104,97,118,101,99,111,109,112,117,116,105,110,103,103,101\r
-,110,101,114,97,116,101,100,112,114,111,118,105,110,99,101,115,103,117,97,114,97\r
-,110,116,101,101,97,114,98,105,116,114,97,114,121,114,101,99,111,103,110,105,122\r
-,101,119,97,110,116,101,100,32,116,111,112,120,59,119,105,100,116,104,58,116,104\r
-,101,111,114,121,32,111,102,98,101,104,97,118,105,111,117,114,87,104,105,108,101\r
-,32,116,104,101,101,115,116,105,109,97,116,101,100,98,101,103,97,110,32,116,111,\r
-32,105,116,32,98,101,99,97,109,101,109,97,103,110,105,116,117,100,101,109,117,\r
-115,116,32,104,97,118,101,109,111,114,101,32,116,104,97,110,68,105,114,101,99,\r
-116,111,114,121,101,120,116,101,110,115,105,111,110,115,101,99,114,101,116,97,\r
-114,121,110,97,116,117,114,97,108,108,121,111,99,99,117,114,114,105,110,103,118,\r
-97,114,105,97,98,108,101,115,103,105,118,101,110,32,116,104,101,112,108,97,116,\r
-102,111,114,109,46,60,47,108,97,98,101,108,62,60,102,97,105,108,101,100,32,116,\r
-111,99,111,109,112,111,117,110,100,115,107,105,110,100,115,32,111,102,32,115,111\r
-,99,105,101,116,105,101,115,97,108,111,110,103,115,105,100,101,32,45,45,38,103,\r
-116,59,10,10,115,111,117,116,104,119,101,115,116,116,104,101,32,114,105,103,104,\r
-116,114,97,100,105,97,116,105,111,110,109,97,121,32,104,97,118,101,32,117,110,\r
-101,115,99,97,112,101,40,115,112,111,107,101,110,32,105,110,34,32,104,114,101,\r
-102,61,34,47,112,114,111,103,114,97,109,109,101,111,110,108,121,32,116,104,101,\r
-32,99,111,109,101,32,102,114,111,109,100,105,114,101,99,116,111,114,121,98,117,\r
-114,105,101,100,32,105,110,97,32,115,105,109,105,108,97,114,116,104,101,121,32,\r
-119,101,114,101,60,47,102,111,110,116,62,60,47,78,111,114,119,101,103,105,97,110\r
-,115,112,101,99,105,102,105,101,100,112,114,111,100,117,99,105,110,103,112,97,\r
-115,115,101,110,103,101,114,40,110,101,119,32,68,97,116,101,116,101,109,112,111,\r
-114,97,114,121,102,105,99,116,105,111,110,97,108,65,102,116,101,114,32,116,104,\r
-101,101,113,117,97,116,105,111,110,115,100,111,119,110,108,111,97,100,46,114,101\r
-,103,117,108,97,114,108,121,100,101,118,101,108,111,112,101,114,97,98,111,118,\r
-101,32,116,104,101,108,105,110,107,101,100,32,116,111,112,104,101,110,111,109,\r
-101,110,97,112,101,114,105,111,100,32,111,102,116,111,111,108,116,105,112,34,62,\r
-115,117,98,115,116,97,110,99,101,97,117,116,111,109,97,116,105,99,97,115,112,101\r
-,99,116,32,111,102,65,109,111,110,103,32,116,104,101,99,111,110,110,101,99,116,\r
-101,100,101,115,116,105,109,97,116,101,115,65,105,114,32,70,111,114,99,101,115,\r
-121,115,116,101,109,32,111,102,111,98,106,101,99,116,105,118,101,105,109,109,101\r
-,100,105,97,116,101,109,97,107,105,110,103,32,105,116,112,97,105,110,116,105,110\r
-,103,115,99,111,110,113,117,101,114,101,100,97,114,101,32,115,116,105,108,108,\r
-112,114,111,99,101,100,117,114,101,103,114,111,119,116,104,32,111,102,104,101,97\r
-,100,101,100,32,98,121,69,117,114,111,112,101,97,110,32,100,105,118,105,115,105,\r
-111,110,115,109,111,108,101,99,117,108,101,115,102,114,97,110,99,104,105,115,101\r
-,105,110,116,101,110,116,105,111,110,97,116,116,114,97,99,116,101,100,99,104,105\r
-,108,100,104,111,111,100,97,108,115,111,32,117,115,101,100,100,101,100,105,99,97\r
-,116,101,100,115,105,110,103,97,112,111,114,101,100,101,103,114,101,101,32,111,\r
-102,102,97,116,104,101,114,32,111,102,99,111,110,102,108,105,99,116,115,60,47,97\r
-,62,60,47,112,62,10,99,97,109,101,32,102,114,111,109,119,101,114,101,32,117,115,\r
-101,100,110,111,116,101,32,116,104,97,116,114,101,99,101,105,118,105,110,103,69,\r
-120,101,99,117,116,105,118,101,101,118,101,110,32,109,111,114,101,97,99,99,101,\r
-115,115,32,116,111,99,111,109,109,97,110,100,101,114,80,111,108,105,116,105,99,\r
-97,108,109,117,115,105,99,105,97,110,115,100,101,108,105,99,105,111,117,115,112,\r
-114,105,115,111,110,101,114,115,97,100,118,101,110,116,32,111,102,85,84,70,45,56\r
-,34,32,47,62,60,33,91,67,68,65,84,65,91,34,62,67,111,110,116,97,99,116,83,111,\r
-117,116,104,101,114,110,32,98,103,99,111,108,111,114,61,34,115,101,114,105,101,\r
-115,32,111,102,46,32,73,116,32,119,97,115,32,105,110,32,69,117,114,111,112,101,\r
-112,101,114,109,105,116,116,101,100,118,97,108,105,100,97,116,101,46,97,112,112,\r
-101,97,114,105,110,103,111,102,102,105,99,105,97,108,115,115,101,114,105,111,117\r
-,115,108,121,45,108,97,110,103,117,97,103,101,105,110,105,116,105,97,116,101,100\r
-,101,120,116,101,110,100,105,110,103,108,111,110,103,45,116,101,114,109,105,110,\r
-102,108,97,116,105,111,110,115,117,99,104,32,116,104,97,116,103,101,116,67,111,\r
-111,107,105,101,109,97,114,107,101,100,32,98,121,60,47,98,117,116,116,111,110,62\r
-,105,109,112,108,101,109,101,110,116,98,117,116,32,105,116,32,105,115,105,110,99\r
-,114,101,97,115,101,115,100,111,119,110,32,116,104,101,32,114,101,113,117,105,\r
-114,105,110,103,100,101,112,101,110,100,101,110,116,45,45,62,10,60,33,45,45,32,\r
-105,110,116,101,114,118,105,101,119,87,105,116,104,32,116,104,101,32,99,111,112,\r
-105,101,115,32,111,102,99,111,110,115,101,110,115,117,115,119,97,115,32,98,117,\r
-105,108,116,86,101,110,101,122,117,101,108,97,40,102,111,114,109,101,114,108,121\r
-,116,104,101,32,115,116,97,116,101,112,101,114,115,111,110,110,101,108,115,116,\r
-114,97,116,101,103,105,99,102,97,118,111,117,114,32,111,102,105,110,118,101,110,\r
-116,105,111,110,87,105,107,105,112,101,100,105,97,99,111,110,116,105,110,101,110\r
-,116,118,105,114,116,117,97,108,108,121,119,104,105,99,104,32,119,97,115,112,114\r
-,105,110,99,105,112,108,101,67,111,109,112,108,101,116,101,32,105,100,101,110,\r
-116,105,99,97,108,115,104,111,119,32,116,104,97,116,112,114,105,109,105,116,105,\r
-118,101,97,119,97,121,32,102,114,111,109,109,111,108,101,99,117,108,97,114,112,\r
-114,101,99,105,115,101,108,121,100,105,115,115,111,108,118,101,100,85,110,100,\r
-101,114,32,116,104,101,118,101,114,115,105,111,110,61,34,62,38,110,98,115,112,59\r
-,60,47,73,116,32,105,115,32,116,104,101,32,84,104,105,115,32,105,115,32,119,105,\r
-108,108,32,104,97,118,101,111,114,103,97,110,105,115,109,115,115,111,109,101,32,\r
-116,105,109,101,70,114,105,101,100,114,105,99,104,119,97,115,32,102,105,114,115,\r
-116,116,104,101,32,111,110,108,121,32,102,97,99,116,32,116,104,97,116,102,111,\r
-114,109,32,105,100,61,34,112,114,101,99,101,100,105,110,103,84,101,99,104,110,\r
-105,99,97,108,112,104,121,115,105,99,105,115,116,111,99,99,117,114,115,32,105,\r
-110,110,97,118,105,103,97,116,111,114,115,101,99,116,105,111,110,34,62,115,112,\r
-97,110,32,105,100,61,34,115,111,117,103,104,116,32,116,111,98,101,108,111,119,32\r
-,116,104,101,115,117,114,118,105,118,105,110,103,125,60,47,115,116,121,108,101,\r
-62,104,105,115,32,100,101,97,116,104,97,115,32,105,110,32,116,104,101,99,97,117,\r
-115,101,100,32,98,121,112,97,114,116,105,97,108,108,121,101,120,105,115,116,105,\r
-110,103,32,117,115,105,110,103,32,116,104,101,119,97,115,32,103,105,118,101,110,\r
-97,32,108,105,115,116,32,111,102,108,101,118,101,108,115,32,111,102,110,111,116,\r
-105,111,110,32,111,102,79,102,102,105,99,105,97,108,32,100,105,115,109,105,115,\r
-115,101,100,115,99,105,101,110,116,105,115,116,114,101,115,101,109,98,108,101,\r
-115,100,117,112,108,105,99,97,116,101,101,120,112,108,111,115,105,118,101,114,\r
-101,99,111,118,101,114,101,100,97,108,108,32,111,116,104,101,114,103,97,108,108,\r
-101,114,105,101,115,123,112,97,100,100,105,110,103,58,112,101,111,112,108,101,32\r
-,111,102,114,101,103,105,111,110,32,111,102,97,100,100,114,101,115,115,101,115,\r
-97,115,115,111,99,105,97,116,101,105,109,103,32,97,108,116,61,34,105,110,32,109,\r
-111,100,101,114,110,115,104,111,117,108,100,32,98,101,109,101,116,104,111,100,32\r
-,111,102,114,101,112,111,114,116,105,110,103,116,105,109,101,115,116,97,109,112,\r
-110,101,101,100,101,100,32,116,111,116,104,101,32,71,114,101,97,116,114,101,103,\r
-97,114,100,105,110,103,115,101,101,109,101,100,32,116,111,118,105,101,119,101,\r
-100,32,97,115,105,109,112,97,99,116,32,111,110,105,100,101,97,32,116,104,97,116,\r
-116,104,101,32,87,111,114,108,100,104,101,105,103,104,116,32,111,102,101,120,112\r
-,97,110,100,105,110,103,84,104,101,115,101,32,97,114,101,99,117,114,114,101,110,\r
-116,34,62,99,97,114,101,102,117,108,108,121,109,97,105,110,116,97,105,110,115,99\r
-,104,97,114,103,101,32,111,102,67,108,97,115,115,105,99,97,108,97,100,100,114,\r
-101,115,115,101,100,112,114,101,100,105,99,116,101,100,111,119,110,101,114,115,\r
-104,105,112,60,100,105,118,32,105,100,61,34,114,105,103,104,116,34,62,13,10,114,\r
-101,115,105,100,101,110,99,101,108,101,97,118,101,32,116,104,101,99,111,110,116,\r
-101,110,116,34,62,97,114,101,32,111,102,116,101,110,32,32,125,41,40,41,59,13,10,\r
-112,114,111,98,97,98,108,121,32,80,114,111,102,101,115,115,111,114,45,98,117,116\r
-,116,111,110,34,32,114,101,115,112,111,110,100,101,100,115,97,121,115,32,116,104\r
-,97,116,104,97,100,32,116,111,32,98,101,112,108,97,99,101,100,32,105,110,72,117,\r
-110,103,97,114,105,97,110,115,116,97,116,117,115,32,111,102,115,101,114,118,101,\r
-115,32,97,115,85,110,105,118,101,114,115,97,108,101,120,101,99,117,116,105,111,\r
-110,97,103,103,114,101,103,97,116,101,102,111,114,32,119,104,105,99,104,105,110,\r
-102,101,99,116,105,111,110,97,103,114,101,101,100,32,116,111,104,111,119,101,118\r
-,101,114,44,32,112,111,112,117,108,97,114,34,62,112,108,97,99,101,100,32,111,110\r
-,99,111,110,115,116,114,117,99,116,101,108,101,99,116,111,114,97,108,115,121,109\r
-,98,111,108,32,111,102,105,110,99,108,117,100,105,110,103,114,101,116,117,114,\r
-110,32,116,111,97,114,99,104,105,116,101,99,116,67,104,114,105,115,116,105,97,\r
-110,112,114,101,118,105,111,117,115,32,108,105,118,105,110,103,32,105,110,101,97\r
-,115,105,101,114,32,116,111,112,114,111,102,101,115,115,111,114,10,38,108,116,59\r
-,33,45,45,32,101,102,102,101,99,116,32,111,102,97,110,97,108,121,116,105,99,115,\r
-119,97,115,32,116,97,107,101,110,119,104,101,114,101,32,116,104,101,116,111,111,\r
-107,32,111,118,101,114,98,101,108,105,101,102,32,105,110,65,102,114,105,107,97,\r
-97,110,115,97,115,32,102,97,114,32,97,115,112,114,101,118,101,110,116,101,100,\r
-119,111,114,107,32,119,105,116,104,97,32,115,112,101,99,105,97,108,60,102,105,\r
-101,108,100,115,101,116,67,104,114,105,115,116,109,97,115,82,101,116,114,105,101\r
-,118,101,100,10,10,73,110,32,116,104,101,32,98,97,99,107,32,105,110,116,111,110,\r
-111,114,116,104,101,97,115,116,109,97,103,97,122,105,110,101,115,62,60,115,116,\r
-114,111,110,103,62,99,111,109,109,105,116,116,101,101,103,111,118,101,114,110,\r
-105,110,103,103,114,111,117,112,115,32,111,102,115,116,111,114,101,100,32,105,\r
-110,101,115,116,97,98,108,105,115,104,97,32,103,101,110,101,114,97,108,105,116,\r
-115,32,102,105,114,115,116,116,104,101,105,114,32,111,119,110,112,111,112,117,\r
-108,97,116,101,100,97,110,32,111,98,106,101,99,116,67,97,114,105,98,98,101,97,\r
-110,97,108,108,111,119,32,116,104,101,100,105,115,116,114,105,99,116,115,119,105\r
-,115,99,111,110,115,105,110,108,111,99,97,116,105,111,110,46,59,32,119,105,100,\r
-116,104,58,32,105,110,104,97,98,105,116,101,100,83,111,99,105,97,108,105,115,116\r
-,74,97,110,117,97,114,121,32,49,60,47,102,111,111,116,101,114,62,115,105,109,105\r
-,108,97,114,108,121,99,104,111,105,99,101,32,111,102,116,104,101,32,115,97,109,\r
-101,32,115,112,101,99,105,102,105,99,32,98,117,115,105,110,101,115,115,32,84,104\r
-,101,32,102,105,114,115,116,46,108,101,110,103,116,104,59,32,100,101,115,105,114\r
-,101,32,116,111,100,101,97,108,32,119,105,116,104,115,105,110,99,101,32,116,104,\r
-101,117,115,101,114,65,103,101,110,116,99,111,110,99,101,105,118,101,100,105,110\r
-,100,101,120,46,112,104,112,97,115,32,38,113,117,111,116,59,101,110,103,97,103,\r
-101,32,105,110,114,101,99,101,110,116,108,121,44,102,101,119,32,121,101,97,114,\r
-115,119,101,114,101,32,97,108,115,111,10,60,104,101,97,100,62,10,60,101,100,105,\r
-116,101,100,32,98,121,97,114,101,32,107,110,111,119,110,99,105,116,105,101,115,\r
-32,105,110,97,99,99,101,115,115,107,101,121,99,111,110,100,101,109,110,101,100,\r
-97,108,115,111,32,104,97,118,101,115,101,114,118,105,99,101,115,44,102,97,109,\r
-105,108,121,32,111,102,83,99,104,111,111,108,32,111,102,99,111,110,118,101,114,\r
-116,101,100,110,97,116,117,114,101,32,111,102,32,108,97,110,103,117,97,103,101,\r
-109,105,110,105,115,116,101,114,115,60,47,111,98,106,101,99,116,62,116,104,101,\r
-114,101,32,105,115,32,97,32,112,111,112,117,108,97,114,115,101,113,117,101,110,\r
-99,101,115,97,100,118,111,99,97,116,101,100,84,104,101,121,32,119,101,114,101,97\r
-,110,121,32,111,116,104,101,114,108,111,99,97,116,105,111,110,61,101,110,116,101\r
-,114,32,116,104,101,109,117,99,104,32,109,111,114,101,114,101,102,108,101,99,116\r
-,101,100,119,97,115,32,110,97,109,101,100,111,114,105,103,105,110,97,108,32,97,\r
-32,116,121,112,105,99,97,108,119,104,101,110,32,116,104,101,121,101,110,103,105,\r
-110,101,101,114,115,99,111,117,108,100,32,110,111,116,114,101,115,105,100,101,\r
-110,116,115,119,101,100,110,101,115,100,97,121,116,104,101,32,116,104,105,114,\r
-100,32,112,114,111,100,117,99,116,115,74,97,110,117,97,114,121,32,50,119,104,97,\r
-116,32,116,104,101,121,97,32,99,101,114,116,97,105,110,114,101,97,99,116,105,111\r
-,110,115,112,114,111,99,101,115,115,111,114,97,102,116,101,114,32,104,105,115,\r
-116,104,101,32,108,97,115,116,32,99,111,110,116,97,105,110,101,100,34,62,60,47,\r
-100,105,118,62,10,60,47,97,62,60,47,116,100,62,100,101,112,101,110,100,32,111,\r
-110,115,101,97,114,99,104,34,62,10,112,105,101,99,101,115,32,111,102,99,111,109,\r
-112,101,116,105,110,103,82,101,102,101,114,101,110,99,101,116,101,110,110,101,\r
-115,115,101,101,119,104,105,99,104,32,104,97,115,32,118,101,114,115,105,111,110,\r
-61,60,47,115,112,97,110,62,32,60,60,47,104,101,97,100,101,114,62,103,105,118,101\r
-,115,32,116,104,101,104,105,115,116,111,114,105,97,110,118,97,108,117,101,61,34,\r
-34,62,112,97,100,100,105,110,103,58,48,118,105,101,119,32,116,104,97,116,116,111\r
-,103,101,116,104,101,114,44,116,104,101,32,109,111,115,116,32,119,97,115,32,102,\r
-111,117,110,100,115,117,98,115,101,116,32,111,102,97,116,116,97,99,107,32,111,\r
-110,99,104,105,108,100,114,101,110,44,112,111,105,110,116,115,32,111,102,112,101\r
-,114,115,111,110,97,108,32,112,111,115,105,116,105,111,110,58,97,108,108,101,103\r
-,101,100,108,121,67,108,101,118,101,108,97,110,100,119,97,115,32,108,97,116,101,\r
-114,97,110,100,32,97,102,116,101,114,97,114,101,32,103,105,118,101,110,119,97,\r
-115,32,115,116,105,108,108,115,99,114,111,108,108,105,110,103,100,101,115,105,\r
-103,110,32,111,102,109,97,107,101,115,32,116,104,101,109,117,99,104,32,108,101,\r
-115,115,65,109,101,114,105,99,97,110,115,46,10,10,65,102,116,101,114,32,44,32,98\r
-,117,116,32,116,104,101,77,117,115,101,117,109,32,111,102,108,111,117,105,115,\r
-105,97,110,97,40,102,114,111,109,32,116,104,101,109,105,110,110,101,115,111,116,\r
-97,112,97,114,116,105,99,108,101,115,97,32,112,114,111,99,101,115,115,68,111,109\r
-,105,110,105,99,97,110,118,111,108,117,109,101,32,111,102,114,101,116,117,114,\r
-110,105,110,103,100,101,102,101,110,115,105,118,101,48,48,112,120,124,114,105,\r
-103,104,109,97,100,101,32,102,114,111,109,109,111,117,115,101,111,118,101,114,34\r
-,32,115,116,121,108,101,61,34,115,116,97,116,101,115,32,111,102,40,119,104,105,\r
-99,104,32,105,115,99,111,110,116,105,110,117,101,115,70,114,97,110,99,105,115,99\r
-,111,98,117,105,108,100,105,110,103,32,119,105,116,104,111,117,116,32,97,119,105\r
-,116,104,32,115,111,109,101,119,104,111,32,119,111,117,108,100,97,32,102,111,114\r
-,109,32,111,102,97,32,112,97,114,116,32,111,102,98,101,102,111,114,101,32,105,\r
-116,107,110,111,119,110,32,97,115,32,32,83,101,114,118,105,99,101,115,108,111,99\r
-,97,116,105,111,110,32,97,110,100,32,111,102,116,101,110,109,101,97,115,117,114,\r
-105,110,103,97,110,100,32,105,116,32,105,115,112,97,112,101,114,98,97,99,107,118\r
-,97,108,117,101,115,32,111,102,13,10,60,116,105,116,108,101,62,61,32,119,105,110\r
-,100,111,119,46,100,101,116,101,114,109,105,110,101,101,114,38,113,117,111,116,\r
-59,32,112,108,97,121,101,100,32,98,121,97,110,100,32,101,97,114,108,121,60,47,99\r
-,101,110,116,101,114,62,102,114,111,109,32,116,104,105,115,116,104,101,32,116,\r
-104,114,101,101,112,111,119,101,114,32,97,110,100,111,102,32,38,113,117,111,116,\r
-59,105,110,110,101,114,72,84,77,76,60,97,32,104,114,101,102,61,34,121,58,105,110\r
-,108,105,110,101,59,67,104,117,114,99,104,32,111,102,116,104,101,32,101,118,101,\r
-110,116,118,101,114,121,32,104,105,103,104,111,102,102,105,99,105,97,108,32,45,\r
-104,101,105,103,104,116,58,32,99,111,110,116,101,110,116,61,34,47,99,103,105,45,\r
-98,105,110,47,116,111,32,99,114,101,97,116,101,97,102,114,105,107,97,97,110,115,\r
-101,115,112,101,114,97,110,116,111,102,114,97,110,195,167,97,105,115,108,97,116,\r
-118,105,101,197,161,117,108,105,101,116,117,118,105,197,179,196,140,101,197,161,\r
-116,105,110,97,196,141,101,197,161,116,105,110,97,224,185,132,224,184,151,224,\r
-184,162,230,151,165,230,156,172,232,170,158,231,174,128,228,189,147,229,173,151,\r
-231,185,129,233,171,148,229,173,151,237,149,156,234,181,173,236,150,180,228,184,\r
-186,228,187,128,228,185,136,232,174,161,231,174,151,230,156,186,231,172,148,232,\r
-174,176,230,156,172,232,168,142,232,171,150,229,141,128,230,156,141,229,138,161,\r
-229,153,168,228,186,146,232,129,148,231,189,145,230,136,191,229,156,176,228,186,\r
-167,228,191,177,228,185,144,233,131,168,229,135,186,231,137,136,231,164,190,230,\r
-142,146,232,161,140,230,166,156,233,131,168,232,144,189,230,160,188,232,191,155,\r
-228,184,128,230,173,165,230,148,175,228,187,152,229,174,157,233,170,140,232,175,\r
-129,231,160,129,229,167,148,229,145,152,228,188,154,230,149,176,230,141,174,229,\r
-186,147,230,182,136,232,180,185,232,128,133,229,138,158,229,133,172,229,174,164,\r
-232,174,168,232,174,186,229,140,186,230,183,177,229,156,179,229,184,130,230,146,\r
-173,230,148,190,229,153,168,229,140,151,228,186,172,229,184,130,229,164,167,229,\r
-173,166,231,148,159,232,182,138,230,157,165,232,182,138,231,174,161,231,144,134,\r
-229,145,152,228,191,161,230,129,175,231,189,145,115,101,114,118,105,99,105,111,\r
-115,97,114,116,195,173,99,117,108,111,97,114,103,101,110,116,105,110,97,98,97,\r
-114,99,101,108,111,110,97,99,117,97,108,113,117,105,101,114,112,117,98,108,105,\r
-99,97,100,111,112,114,111,100,117,99,116,111,115,112,111,108,195,173,116,105,99,\r
-97,114,101,115,112,117,101,115,116,97,119,105,107,105,112,101,100,105,97,115,105\r
-,103,117,105,101,110,116,101,98,195,186,115,113,117,101,100,97,99,111,109,117,\r
-110,105,100,97,100,115,101,103,117,114,105,100,97,100,112,114,105,110,99,105,112\r
-,97,108,112,114,101,103,117,110,116,97,115,99,111,110,116,101,110,105,100,111,\r
-114,101,115,112,111,110,100,101,114,118,101,110,101,122,117,101,108,97,112,114,\r
-111,98,108,101,109,97,115,100,105,99,105,101,109,98,114,101,114,101,108,97,99,\r
-105,195,179,110,110,111,118,105,101,109,98,114,101,115,105,109,105,108,97,114,\r
-101,115,112,114,111,121,101,99,116,111,115,112,114,111,103,114,97,109,97,115,105\r
-,110,115,116,105,116,117,116,111,97,99,116,105,118,105,100,97,100,101,110,99,117\r
-,101,110,116,114,97,101,99,111,110,111,109,195,173,97,105,109,195,161,103,101,\r
-110,101,115,99,111,110,116,97,99,116,97,114,100,101,115,99,97,114,103,97,114,110\r
-,101,99,101,115,97,114,105,111,97,116,101,110,99,105,195,179,110,116,101,108,195\r
-,169,102,111,110,111,99,111,109,105,115,105,195,179,110,99,97,110,99,105,111,110\r
-,101,115,99,97,112,97,99,105,100,97,100,101,110,99,111,110,116,114,97,114,97,110\r
-,195,161,108,105,115,105,115,102,97,118,111,114,105,116,111,115,116,195,169,114,\r
-109,105,110,111,115,112,114,111,118,105,110,99,105,97,101,116,105,113,117,101,\r
-116,97,115,101,108,101,109,101,110,116,111,115,102,117,110,99,105,111,110,101,\r
-115,114,101,115,117,108,116,97,100,111,99,97,114,195,161,99,116,101,114,112,114,\r
-111,112,105,101,100,97,100,112,114,105,110,99,105,112,105,111,110,101,99,101,115\r
-,105,100,97,100,109,117,110,105,99,105,112,97,108,99,114,101,97,99,105,195,179,\r
-110,100,101,115,99,97,114,103,97,115,112,114,101,115,101,110,99,105,97,99,111,\r
-109,101,114,99,105,97,108,111,112,105,110,105,111,110,101,115,101,106,101,114,99\r
-,105,99,105,111,101,100,105,116,111,114,105,97,108,115,97,108,97,109,97,110,99,\r
-97,103,111,110,122,195,161,108,101,122,100,111,99,117,109,101,110,116,111,112,\r
-101,108,195,173,99,117,108,97,114,101,99,105,101,110,116,101,115,103,101,110,101\r
-,114,97,108,101,115,116,97,114,114,97,103,111,110,97,112,114,195,161,99,116,105,\r
-99,97,110,111,118,101,100,97,100,101,115,112,114,111,112,117,101,115,116,97,112,\r
-97,99,105,101,110,116,101,115,116,195,169,99,110,105,99,97,115,111,98,106,101,\r
-116,105,118,111,115,99,111,110,116,97,99,116,111,115,224,164,174,224,165,135,224\r
-,164,130,224,164,178,224,164,191,224,164,143,224,164,185,224,165,136,224,164,130\r
-,224,164,151,224,164,175,224,164,190,224,164,184,224,164,190,224,164,165,224,164\r
-,143,224,164,181,224,164,130,224,164,176,224,164,185,224,165,135,224,164,149,224\r
-,165,139,224,164,136,224,164,149,224,165,129,224,164,155,224,164,176,224,164,185\r
-,224,164,190,224,164,172,224,164,190,224,164,166,224,164,149,224,164,185,224,164\r
-,190,224,164,184,224,164,173,224,165,128,224,164,185,224,165,129,224,164,143,224\r
-,164,176,224,164,185,224,165,128,224,164,174,224,165,136,224,164,130,224,164,166\r
-,224,164,191,224,164,168,224,164,172,224,164,190,224,164,164,100,105,112,108,111\r
-,100,111,99,115,224,164,184,224,164,174,224,164,175,224,164,176,224,165,130,224,\r
-164,170,224,164,168,224,164,190,224,164,174,224,164,170,224,164,164,224,164,190,\r
-224,164,171,224,164,191,224,164,176,224,164,148,224,164,184,224,164,164,224,164,\r
-164,224,164,176,224,164,185,224,164,178,224,165,139,224,164,151,224,164,185,224,\r
-165,129,224,164,134,224,164,172,224,164,190,224,164,176,224,164,166,224,165,135,\r
-224,164,182,224,164,185,224,165,129,224,164,136,224,164,150,224,165,135,224,164,\r
-178,224,164,175,224,164,166,224,164,191,224,164,149,224,164,190,224,164,174,224,\r
-164,181,224,165,135,224,164,172,224,164,164,224,165,128,224,164,168,224,164,172,\r
-224,165,128,224,164,154,224,164,174,224,165,140,224,164,164,224,164,184,224,164,\r
-190,224,164,178,224,164,178,224,165,135,224,164,150,224,164,156,224,165,137,224,\r
-164,172,224,164,174,224,164,166,224,164,166,224,164,164,224,164,165,224,164,190,\r
-224,164,168,224,164,185,224,165,128,224,164,182,224,164,185,224,164,176,224,164,\r
-133,224,164,178,224,164,151,224,164,149,224,164,173,224,165,128,224,164,168,224,\r
-164,151,224,164,176,224,164,170,224,164,190,224,164,184,224,164,176,224,164,190,\r
-224,164,164,224,164,149,224,164,191,224,164,143,224,164,137,224,164,184,224,165,\r
-135,224,164,151,224,164,175,224,165,128,224,164,185,224,165,130,224,164,129,224,\r
-164,134,224,164,151,224,165,135,224,164,159,224,165,128,224,164,174,224,164,150,\r
-224,165,139,224,164,156,224,164,149,224,164,190,224,164,176,224,164,133,224,164,\r
-173,224,165,128,224,164,151,224,164,175,224,165,135,224,164,164,224,165,129,224,\r
-164,174,224,164,181,224,165,139,224,164,159,224,164,166,224,165,135,224,164,130,\r
-224,164,133,224,164,151,224,164,176,224,164,144,224,164,184,224,165,135,224,164,\r
-174,224,165,135,224,164,178,224,164,178,224,164,151,224,164,190,224,164,185,224,\r
-164,190,224,164,178,224,164,138,224,164,170,224,164,176,224,164,154,224,164,190,\r
-224,164,176,224,164,144,224,164,184,224,164,190,224,164,166,224,165,135,224,164,\r
-176,224,164,156,224,164,191,224,164,184,224,164,166,224,164,191,224,164,178,224,\r
-164,172,224,164,130,224,164,166,224,164,172,224,164,168,224,164,190,224,164,185,\r
-224,165,130,224,164,130,224,164,178,224,164,190,224,164,150,224,164,156,224,165,\r
-128,224,164,164,224,164,172,224,164,159,224,164,168,224,164,174,224,164,191,224,\r
-164,178,224,164,135,224,164,184,224,165,135,224,164,134,224,164,168,224,165,135,\r
-224,164,168,224,164,175,224,164,190,224,164,149,224,165,129,224,164,178,224,164,\r
-178,224,165,137,224,164,151,224,164,173,224,164,190,224,164,151,224,164,176,224,\r
-165,135,224,164,178,224,164,156,224,164,151,224,164,185,224,164,176,224,164,190,\r
-224,164,174,224,164,178,224,164,151,224,165,135,224,164,170,224,165,135,224,164,\r
-156,224,164,185,224,164,190,224,164,165,224,164,135,224,164,184,224,165,128,224,\r
-164,184,224,164,185,224,165,128,224,164,149,224,164,178,224,164,190,224,164,160,\r
-224,165,128,224,164,149,224,164,185,224,164,190,224,164,129,224,164,166,224,165,\r
-130,224,164,176,224,164,164,224,164,185,224,164,164,224,164,184,224,164,190,224,\r
-164,164,224,164,175,224,164,190,224,164,166,224,164,134,224,164,175,224,164,190,\r
-224,164,170,224,164,190,224,164,149,224,164,149,224,165,140,224,164,168,224,164,\r
-182,224,164,190,224,164,174,224,164,166,224,165,135,224,164,150,224,164,175,224,\r
-164,185,224,165,128,224,164,176,224,164,190,224,164,175,224,164,150,224,165,129,\r
-224,164,166,224,164,178,224,164,151,224,165,128,99,97,116,101,103,111,114,105,\r
-101,115,101,120,112,101,114,105,101,110,99,101,60,47,116,105,116,108,101,62,13,\r
-10,67,111,112,121,114,105,103,104,116,32,106,97,118,97,115,99,114,105,112,116,99\r
-,111,110,100,105,116,105,111,110,115,101,118,101,114,121,116,104,105,110,103,60,\r
-112,32,99,108,97,115,115,61,34,116,101,99,104,110,111,108,111,103,121,98,97,99,\r
-107,103,114,111,117,110,100,60,97,32,99,108,97,115,115,61,34,109,97,110,97,103,\r
-101,109,101,110,116,38,99,111,112,121,59,32,50,48,49,106,97,118,97,83,99,114,105\r
-,112,116,99,104,97,114,97,99,116,101,114,115,98,114,101,97,100,99,114,117,109,98\r
-,116,104,101,109,115,101,108,118,101,115,104,111,114,105,122,111,110,116,97,108,\r
-103,111,118,101,114,110,109,101,110,116,67,97,108,105,102,111,114,110,105,97,97,\r
-99,116,105,118,105,116,105,101,115,100,105,115,99,111,118,101,114,101,100,78,97,\r
-118,105,103,97,116,105,111,110,116,114,97,110,115,105,116,105,111,110,99,111,110\r
-,110,101,99,116,105,111,110,110,97,118,105,103,97,116,105,111,110,97,112,112,101\r
-,97,114,97,110,99,101,60,47,116,105,116,108,101,62,60,109,99,104,101,99,107,98,\r
-111,120,34,32,116,101,99,104,110,105,113,117,101,115,112,114,111,116,101,99,116,\r
-105,111,110,97,112,112,97,114,101,110,116,108,121,97,115,32,119,101,108,108,32,\r
-97,115,117,110,116,39,44,32,39,85,65,45,114,101,115,111,108,117,116,105,111,110,\r
-111,112,101,114,97,116,105,111,110,115,116,101,108,101,118,105,115,105,111,110,\r
-116,114,97,110,115,108,97,116,101,100,87,97,115,104,105,110,103,116,111,110,110,\r
-97,118,105,103,97,116,111,114,46,32,61,32,119,105,110,100,111,119,46,105,109,112\r
-,114,101,115,115,105,111,110,38,108,116,59,98,114,38,103,116,59,108,105,116,101,\r
-114,97,116,117,114,101,112,111,112,117,108,97,116,105,111,110,98,103,99,111,108,\r
-111,114,61,34,35,101,115,112,101,99,105,97,108,108,121,32,99,111,110,116,101,110\r
-,116,61,34,112,114,111,100,117,99,116,105,111,110,110,101,119,115,108,101,116,\r
-116,101,114,112,114,111,112,101,114,116,105,101,115,100,101,102,105,110,105,116,\r
-105,111,110,108,101,97,100,101,114,115,104,105,112,84,101,99,104,110,111,108,111\r
-,103,121,80,97,114,108,105,97,109,101,110,116,99,111,109,112,97,114,105,115,111,\r
-110,117,108,32,99,108,97,115,115,61,34,46,105,110,100,101,120,79,102,40,34,99,\r
-111,110,99,108,117,115,105,111,110,100,105,115,99,117,115,115,105,111,110,99,111\r
-,109,112,111,110,101,110,116,115,98,105,111,108,111,103,105,99,97,108,82,101,118\r
-,111,108,117,116,105,111,110,95,99,111,110,116,97,105,110,101,114,117,110,100,\r
-101,114,115,116,111,111,100,110,111,115,99,114,105,112,116,62,60,112,101,114,109\r
-,105,115,115,105,111,110,101,97,99,104,32,111,116,104,101,114,97,116,109,111,115\r
-,112,104,101,114,101,32,111,110,102,111,99,117,115,61,34,60,102,111,114,109,32,\r
-105,100,61,34,112,114,111,99,101,115,115,105,110,103,116,104,105,115,46,118,97,\r
-108,117,101,103,101,110,101,114,97,116,105,111,110,67,111,110,102,101,114,101,\r
-110,99,101,115,117,98,115,101,113,117,101,110,116,119,101,108,108,45,107,110,111\r
-,119,110,118,97,114,105,97,116,105,111,110,115,114,101,112,117,116,97,116,105,\r
-111,110,112,104,101,110,111,109,101,110,111,110,100,105,115,99,105,112,108,105,\r
-110,101,108,111,103,111,46,112,110,103,34,32,40,100,111,99,117,109,101,110,116,\r
-44,98,111,117,110,100,97,114,105,101,115,101,120,112,114,101,115,115,105,111,110\r
-,115,101,116,116,108,101,109,101,110,116,66,97,99,107,103,114,111,117,110,100,\r
-111,117,116,32,111,102,32,116,104,101,101,110,116,101,114,112,114,105,115,101,40\r
-,34,104,116,116,112,115,58,34,32,117,110,101,115,99,97,112,101,40,34,112,97,115,\r
-115,119,111,114,100,34,32,100,101,109,111,99,114,97,116,105,99,60,97,32,104,114,\r
-101,102,61,34,47,119,114,97,112,112,101,114,34,62,10,109,101,109,98,101,114,115,\r
-104,105,112,108,105,110,103,117,105,115,116,105,99,112,120,59,112,97,100,100,105\r
-,110,103,112,104,105,108,111,115,111,112,104,121,97,115,115,105,115,116,97,110,\r
-99,101,117,110,105,118,101,114,115,105,116,121,102,97,99,105,108,105,116,105,101\r
-,115,114,101,99,111,103,110,105,122,101,100,112,114,101,102,101,114,101,110,99,\r
-101,105,102,32,40,116,121,112,101,111,102,109,97,105,110,116,97,105,110,101,100,\r
-118,111,99,97,98,117,108,97,114,121,104,121,112,111,116,104,101,115,105,115,46,\r
-115,117,98,109,105,116,40,41,59,38,97,109,112,59,110,98,115,112,59,97,110,110,\r
-111,116,97,116,105,111,110,98,101,104,105,110,100,32,116,104,101,70,111,117,110,\r
-100,97,116,105,111,110,112,117,98,108,105,115,104,101,114,34,97,115,115,117,109,\r
-112,116,105,111,110,105,110,116,114,111,100,117,99,101,100,99,111,114,114,117,\r
-112,116,105,111,110,115,99,105,101,110,116,105,115,116,115,101,120,112,108,105,\r
-99,105,116,108,121,105,110,115,116,101,97,100,32,111,102,100,105,109,101,110,115\r
-,105,111,110,115,32,111,110,67,108,105,99,107,61,34,99,111,110,115,105,100,101,\r
-114,101,100,100,101,112,97,114,116,109,101,110,116,111,99,99,117,112,97,116,105,\r
-111,110,115,111,111,110,32,97,102,116,101,114,105,110,118,101,115,116,109,101,\r
-110,116,112,114,111,110,111,117,110,99,101,100,105,100,101,110,116,105,102,105,\r
-101,100,101,120,112,101,114,105,109,101,110,116,77,97,110,97,103,101,109,101,110\r
-,116,103,101,111,103,114,97,112,104,105,99,34,32,104,101,105,103,104,116,61,34,\r
-108,105,110,107,32,114,101,108,61,34,46,114,101,112,108,97,99,101,40,47,100,101,\r
-112,114,101,115,115,105,111,110,99,111,110,102,101,114,101,110,99,101,112,117,\r
-110,105,115,104,109,101,110,116,101,108,105,109,105,110,97,116,101,100,114,101,\r
-115,105,115,116,97,110,99,101,97,100,97,112,116,97,116,105,111,110,111,112,112,\r
-111,115,105,116,105,111,110,119,101,108,108,32,107,110,111,119,110,115,117,112,\r
-112,108,101,109,101,110,116,100,101,116,101,114,109,105,110,101,100,104,49,32,99\r
-,108,97,115,115,61,34,48,112,120,59,109,97,114,103,105,110,109,101,99,104,97,110\r
-,105,99,97,108,115,116,97,116,105,115,116,105,99,115,99,101,108,101,98,114,97,\r
-116,101,100,71,111,118,101,114,110,109,101,110,116,10,10,68,117,114,105,110,103,\r
-32,116,100,101,118,101,108,111,112,101,114,115,97,114,116,105,102,105,99,105,97,\r
-108,101,113,117,105,118,97,108,101,110,116,111,114,105,103,105,110,97,116,101,\r
-100,67,111,109,109,105,115,115,105,111,110,97,116,116,97,99,104,109,101,110,116,\r
-60,115,112,97,110,32,105,100,61,34,116,104,101,114,101,32,119,101,114,101,78,101\r
-,100,101,114,108,97,110,100,115,98,101,121,111,110,100,32,116,104,101,114,101,\r
-103,105,115,116,101,114,101,100,106,111,117,114,110,97,108,105,115,116,102,114,\r
-101,113,117,101,110,116,108,121,97,108,108,32,111,102,32,116,104,101,108,97,110,\r
-103,61,34,101,110,34,32,60,47,115,116,121,108,101,62,13,10,97,98,115,111,108,117\r
-,116,101,59,32,115,117,112,112,111,114,116,105,110,103,101,120,116,114,101,109,\r
-101,108,121,32,109,97,105,110,115,116,114,101,97,109,60,47,115,116,114,111,110,\r
-103,62,32,112,111,112,117,108,97,114,105,116,121,101,109,112,108,111,121,109,101\r
-,110,116,60,47,116,97,98,108,101,62,13,10,32,99,111,108,115,112,97,110,61,34,60,\r
-47,102,111,114,109,62,10,32,32,99,111,110,118,101,114,115,105,111,110,97,98,111,\r
-117,116,32,116,104,101,32,60,47,112,62,60,47,100,105,118,62,105,110,116,101,103,\r
-114,97,116,101,100,34,32,108,97,110,103,61,34,101,110,80,111,114,116,117,103,117\r
-,101,115,101,115,117,98,115,116,105,116,117,116,101,105,110,100,105,118,105,100,\r
-117,97,108,105,109,112,111,115,115,105,98,108,101,109,117,108,116,105,109,101,\r
-100,105,97,97,108,109,111,115,116,32,97,108,108,112,120,32,115,111,108,105,100,\r
-32,35,97,112,97,114,116,32,102,114,111,109,115,117,98,106,101,99,116,32,116,111,\r
-105,110,32,69,110,103,108,105,115,104,99,114,105,116,105,99,105,122,101,100,101,\r
-120,99,101,112,116,32,102,111,114,103,117,105,100,101,108,105,110,101,115,111,\r
-114,105,103,105,110,97,108,108,121,114,101,109,97,114,107,97,98,108,101,116,104,\r
-101,32,115,101,99,111,110,100,104,50,32,99,108,97,115,115,61,34,60,97,32,116,105\r
-,116,108,101,61,34,40,105,110,99,108,117,100,105,110,103,112,97,114,97,109,101,\r
-116,101,114,115,112,114,111,104,105,98,105,116,101,100,61,32,34,104,116,116,112,\r
-58,47,47,100,105,99,116,105,111,110,97,114,121,112,101,114,99,101,112,116,105,\r
-111,110,114,101,118,111,108,117,116,105,111,110,102,111,117,110,100,97,116,105,\r
-111,110,112,120,59,104,101,105,103,104,116,58,115,117,99,99,101,115,115,102,117,\r
-108,115,117,112,112,111,114,116,101,114,115,109,105,108,108,101,110,110,105,117,\r
-109,104,105,115,32,102,97,116,104,101,114,116,104,101,32,38,113,117,111,116,59,\r
-110,111,45,114,101,112,101,97,116,59,99,111,109,109,101,114,99,105,97,108,105,\r
-110,100,117,115,116,114,105,97,108,101,110,99,111,117,114,97,103,101,100,97,109,\r
-111,117,110,116,32,111,102,32,117,110,111,102,102,105,99,105,97,108,101,102,102,\r
-105,99,105,101,110,99,121,82,101,102,101,114,101,110,99,101,115,99,111,111,114,\r
-100,105,110,97,116,101,100,105,115,99,108,97,105,109,101,114,101,120,112,101,100\r
-,105,116,105,111,110,100,101,118,101,108,111,112,105,110,103,99,97,108,99,117,\r
-108,97,116,101,100,115,105,109,112,108,105,102,105,101,100,108,101,103,105,116,\r
-105,109,97,116,101,115,117,98,115,116,114,105,110,103,40,48,34,32,99,108,97,115,\r
-115,61,34,99,111,109,112,108,101,116,101,108,121,105,108,108,117,115,116,114,97,\r
-116,101,102,105,118,101,32,121,101,97,114,115,105,110,115,116,114,117,109,101,\r
-110,116,80,117,98,108,105,115,104,105,110,103,49,34,32,99,108,97,115,115,61,34,\r
-112,115,121,99,104,111,108,111,103,121,99,111,110,102,105,100,101,110,99,101,110\r
-,117,109,98,101,114,32,111,102,32,97,98,115,101,110,99,101,32,111,102,102,111,99\r
-,117,115,101,100,32,111,110,106,111,105,110,101,100,32,116,104,101,115,116,114,\r
-117,99,116,117,114,101,115,112,114,101,118,105,111,117,115,108,121,62,60,47,105,\r
-102,114,97,109,101,62,111,110,99,101,32,97,103,97,105,110,98,117,116,32,114,97,\r
-116,104,101,114,105,109,109,105,103,114,97,110,116,115,111,102,32,99,111,117,114\r
-,115,101,44,97,32,103,114,111,117,112,32,111,102,76,105,116,101,114,97,116,117,\r
-114,101,85,110,108,105,107,101,32,116,104,101,60,47,97,62,38,110,98,115,112,59,\r
-10,102,117,110,99,116,105,111,110,32,105,116,32,119,97,115,32,116,104,101,67,111\r
-,110,118,101,110,116,105,111,110,97,117,116,111,109,111,98,105,108,101,80,114,\r
-111,116,101,115,116,97,110,116,97,103,103,114,101,115,115,105,118,101,97,102,116\r
-,101,114,32,116,104,101,32,83,105,109,105,108,97,114,108,121,44,34,32,47,62,60,\r
-47,100,105,118,62,99,111,108,108,101,99,116,105,111,110,13,10,102,117,110,99,116\r
-,105,111,110,118,105,115,105,98,105,108,105,116,121,116,104,101,32,117,115,101,\r
-32,111,102,118,111,108,117,110,116,101,101,114,115,97,116,116,114,97,99,116,105,\r
-111,110,117,110,100,101,114,32,116,104,101,32,116,104,114,101,97,116,101,110,101\r
-,100,42,60,33,91,67,68,65,84,65,91,105,109,112,111,114,116,97,110,99,101,105,110\r
-,32,103,101,110,101,114,97,108,116,104,101,32,108,97,116,116,101,114,60,47,102,\r
-111,114,109,62,10,60,47,46,105,110,100,101,120,79,102,40,39,105,32,61,32,48,59,\r
-32,105,32,60,100,105,102,102,101,114,101,110,99,101,100,101,118,111,116,101,100,\r
-32,116,111,116,114,97,100,105,116,105,111,110,115,115,101,97,114,99,104,32,102,\r
-111,114,117,108,116,105,109,97,116,101,108,121,116,111,117,114,110,97,109,101,\r
-110,116,97,116,116,114,105,98,117,116,101,115,115,111,45,99,97,108,108,101,100,\r
-32,125,10,60,47,115,116,121,108,101,62,101,118,97,108,117,97,116,105,111,110,101\r
-,109,112,104,97,115,105,122,101,100,97,99,99,101,115,115,105,98,108,101,60,47,\r
-115,101,99,116,105,111,110,62,115,117,99,99,101,115,115,105,111,110,97,108,111,\r
-110,103,32,119,105,116,104,77,101,97,110,119,104,105,108,101,44,105,110,100,117,\r
-115,116,114,105,101,115,60,47,97,62,60,98,114,32,47,62,104,97,115,32,98,101,99,\r
-111,109,101,97,115,112,101,99,116,115,32,111,102,84,101,108,101,118,105,115,105,\r
-111,110,115,117,102,102,105,99,105,101,110,116,98,97,115,107,101,116,98,97,108,\r
-108,98,111,116,104,32,115,105,100,101,115,99,111,110,116,105,110,117,105,110,103\r
-,97,110,32,97,114,116,105,99,108,101,60,105,109,103,32,97,108,116,61,34,97,100,\r
-118,101,110,116,117,114,101,115,104,105,115,32,109,111,116,104,101,114,109,97,\r
-110,99,104,101,115,116,101,114,112,114,105,110,99,105,112,108,101,115,112,97,114\r
-,116,105,99,117,108,97,114,99,111,109,109,101,110,116,97,114,121,101,102,102,101\r
-,99,116,115,32,111,102,100,101,99,105,100,101,100,32,116,111,34,62,60,115,116,\r
-114,111,110,103,62,112,117,98,108,105,115,104,101,114,115,74,111,117,114,110,97,\r
-108,32,111,102,100,105,102,102,105,99,117,108,116,121,102,97,99,105,108,105,116,\r
-97,116,101,97,99,99,101,112,116,97,98,108,101,115,116,121,108,101,46,99,115,115,\r
-34,9,102,117,110,99,116,105,111,110,32,105,110,110,111,118,97,116,105,111,110,62\r
-,67,111,112,121,114,105,103,104,116,115,105,116,117,97,116,105,111,110,115,119,\r
-111,117,108,100,32,104,97,118,101,98,117,115,105,110,101,115,115,101,115,68,105,\r
-99,116,105,111,110,97,114,121,115,116,97,116,101,109,101,110,116,115,111,102,116\r
-,101,110,32,117,115,101,100,112,101,114,115,105,115,116,101,110,116,105,110,32,\r
-74,97,110,117,97,114,121,99,111,109,112,114,105,115,105,110,103,60,47,116,105,\r
-116,108,101,62,10,9,100,105,112,108,111,109,97,116,105,99,99,111,110,116,97,105,\r
-110,105,110,103,112,101,114,102,111,114,109,105,110,103,101,120,116,101,110,115,\r
-105,111,110,115,109,97,121,32,110,111,116,32,98,101,99,111,110,99,101,112,116,32\r
-,111,102,32,111,110,99,108,105,99,107,61,34,73,116,32,105,115,32,97,108,115,111,\r
-102,105,110,97,110,99,105,97,108,32,109,97,107,105,110,103,32,116,104,101,76,117\r
-,120,101,109,98,111,117,114,103,97,100,100,105,116,105,111,110,97,108,97,114,101\r
-,32,99,97,108,108,101,100,101,110,103,97,103,101,100,32,105,110,34,115,99,114,\r
-105,112,116,34,41,59,98,117,116,32,105,116,32,119,97,115,101,108,101,99,116,114,\r
-111,110,105,99,111,110,115,117,98,109,105,116,61,34,10,60,33,45,45,32,69,110,100\r
-,32,101,108,101,99,116,114,105,99,97,108,111,102,102,105,99,105,97,108,108,121,\r
-115,117,103,103,101,115,116,105,111,110,116,111,112,32,111,102,32,116,104,101,\r
-117,110,108,105,107,101,32,116,104,101,65,117,115,116,114,97,108,105,97,110,79,\r
-114,105,103,105,110,97,108,108,121,114,101,102,101,114,101,110,99,101,115,10,60,\r
-47,104,101,97,100,62,13,10,114,101,99,111,103,110,105,115,101,100,105,110,105,\r
-116,105,97,108,105,122,101,108,105,109,105,116,101,100,32,116,111,65,108,101,120\r
-,97,110,100,114,105,97,114,101,116,105,114,101,109,101,110,116,65,100,118,101,\r
-110,116,117,114,101,115,102,111,117,114,32,121,101,97,114,115,10,10,38,108,116,\r
-59,33,45,45,32,105,110,99,114,101,97,115,105,110,103,100,101,99,111,114,97,116,\r
-105,111,110,104,51,32,99,108,97,115,115,61,34,111,114,105,103,105,110,115,32,111\r
-,102,111,98,108,105,103,97,116,105,111,110,114,101,103,117,108,97,116,105,111,\r
-110,99,108,97,115,115,105,102,105,101,100,40,102,117,110,99,116,105,111,110,40,\r
-97,100,118,97,110,116,97,103,101,115,98,101,105,110,103,32,116,104,101,32,104,\r
-105,115,116,111,114,105,97,110,115,60,98,97,115,101,32,104,114,101,102,114,101,\r
-112,101,97,116,101,100,108,121,119,105,108,108,105,110,103,32,116,111,99,111,109\r
-,112,97,114,97,98,108,101,100,101,115,105,103,110,97,116,101,100,110,111,109,105\r
-,110,97,116,105,111,110,102,117,110,99,116,105,111,110,97,108,105,110,115,105,\r
-100,101,32,116,104,101,114,101,118,101,108,97,116,105,111,110,101,110,100,32,111\r
-,102,32,116,104,101,115,32,102,111,114,32,116,104,101,32,97,117,116,104,111,114,\r
-105,122,101,100,114,101,102,117,115,101,100,32,116,111,116,97,107,101,32,112,108\r
-,97,99,101,97,117,116,111,110,111,109,111,117,115,99,111,109,112,114,111,109,105\r
-,115,101,112,111,108,105,116,105,99,97,108,32,114,101,115,116,97,117,114,97,110,\r
-116,116,119,111,32,111,102,32,116,104,101,70,101,98,114,117,97,114,121,32,50,113\r
-,117,97,108,105,116,121,32,111,102,115,119,102,111,98,106,101,99,116,46,117,110,\r
-100,101,114,115,116,97,110,100,110,101,97,114,108,121,32,97,108,108,119,114,105,\r
-116,116,101,110,32,98,121,105,110,116,101,114,118,105,101,119,115,34,32,119,105,\r
-100,116,104,61,34,49,119,105,116,104,100,114,97,119,97,108,102,108,111,97,116,58\r
-,108,101,102,116,105,115,32,117,115,117,97,108,108,121,99,97,110,100,105,100,97,\r
-116,101,115,110,101,119,115,112,97,112,101,114,115,109,121,115,116,101,114,105,\r
-111,117,115,68,101,112,97,114,116,109,101,110,116,98,101,115,116,32,107,110,111,\r
-119,110,112,97,114,108,105,97,109,101,110,116,115,117,112,112,114,101,115,115,\r
-101,100,99,111,110,118,101,110,105,101,110,116,114,101,109,101,109,98,101,114,\r
-101,100,100,105,102,102,101,114,101,110,116,32,115,121,115,116,101,109,97,116,\r
-105,99,104,97,115,32,108,101,100,32,116,111,112,114,111,112,97,103,97,110,100,97\r
-,99,111,110,116,114,111,108,108,101,100,105,110,102,108,117,101,110,99,101,115,\r
-99,101,114,101,109,111,110,105,97,108,112,114,111,99,108,97,105,109,101,100,80,\r
-114,111,116,101,99,116,105,111,110,108,105,32,99,108,97,115,115,61,34,83,99,105,\r
-101,110,116,105,102,105,99,99,108,97,115,115,61,34,110,111,45,116,114,97,100,101\r
-,109,97,114,107,115,109,111,114,101,32,116,104,97,110,32,119,105,100,101,115,112\r
-,114,101,97,100,76,105,98,101,114,97,116,105,111,110,116,111,111,107,32,112,108,\r
-97,99,101,100,97,121,32,111,102,32,116,104,101,97,115,32,108,111,110,103,32,97,\r
-115,105,109,112,114,105,115,111,110,101,100,65,100,100,105,116,105,111,110,97,\r
-108,10,60,104,101,97,100,62,10,60,109,76,97,98,111,114,97,116,111,114,121,78,111\r
-,118,101,109,98,101,114,32,50,101,120,99,101,112,116,105,111,110,115,73,110,100,\r
-117,115,116,114,105,97,108,118,97,114,105,101,116,121,32,111,102,102,108,111,97,\r
-116,58,32,108,101,102,68,117,114,105,110,103,32,116,104,101,97,115,115,101,115,\r
-115,109,101,110,116,104,97,118,101,32,98,101,101,110,32,100,101,97,108,115,32,\r
-119,105,116,104,83,116,97,116,105,115,116,105,99,115,111,99,99,117,114,114,101,\r
-110,99,101,47,117,108,62,60,47,100,105,118,62,99,108,101,97,114,102,105,120,34,\r
-62,116,104,101,32,112,117,98,108,105,99,109,97,110,121,32,121,101,97,114,115,119\r
-,104,105,99,104,32,119,101,114,101,111,118,101,114,32,116,105,109,101,44,115,121\r
-,110,111,110,121,109,111,117,115,99,111,110,116,101,110,116,34,62,10,112,114,101\r
-,115,117,109,97,98,108,121,104,105,115,32,102,97,109,105,108,121,117,115,101,114\r
-,65,103,101,110,116,46,117,110,101,120,112,101,99,116,101,100,105,110,99,108,117\r
-,100,105,110,103,32,99,104,97,108,108,101,110,103,101,100,97,32,109,105,110,111,\r
-114,105,116,121,117,110,100,101,102,105,110,101,100,34,98,101,108,111,110,103,\r
-115,32,116,111,116,97,107,101,110,32,102,114,111,109,105,110,32,79,99,116,111,98\r
-,101,114,112,111,115,105,116,105,111,110,58,32,115,97,105,100,32,116,111,32,98,\r
-101,114,101,108,105,103,105,111,117,115,32,70,101,100,101,114,97,116,105,111,110\r
-,32,114,111,119,115,112,97,110,61,34,111,110,108,121,32,97,32,102,101,119,109,\r
-101,97,110,116,32,116,104,97,116,108,101,100,32,116,111,32,116,104,101,45,45,62,\r
-13,10,60,100,105,118,32,60,102,105,101,108,100,115,101,116,62,65,114,99,104,98,\r
-105,115,104,111,112,32,99,108,97,115,115,61,34,110,111,98,101,105,110,103,32,117\r
-,115,101,100,97,112,112,114,111,97,99,104,101,115,112,114,105,118,105,108,101,\r
-103,101,115,110,111,115,99,114,105,112,116,62,10,114,101,115,117,108,116,115,32,\r
-105,110,109,97,121,32,98,101,32,116,104,101,69,97,115,116,101,114,32,101,103,103\r
-,109,101,99,104,97,110,105,115,109,115,114,101,97,115,111,110,97,98,108,101,80,\r
-111,112,117,108,97,116,105,111,110,67,111,108,108,101,99,116,105,111,110,115,101\r
-,108,101,99,116,101,100,34,62,110,111,115,99,114,105,112,116,62,13,47,105,110,\r
-100,101,120,46,112,104,112,97,114,114,105,118,97,108,32,111,102,45,106,115,115,\r
-100,107,39,41,41,59,109,97,110,97,103,101,100,32,116,111,105,110,99,111,109,112,\r
-108,101,116,101,99,97,115,117,97,108,116,105,101,115,99,111,109,112,108,101,116,\r
-105,111,110,67,104,114,105,115,116,105,97,110,115,83,101,112,116,101,109,98,101,\r
-114,32,97,114,105,116,104,109,101,116,105,99,112,114,111,99,101,100,117,114,101,\r
-115,109,105,103,104,116,32,104,97,118,101,80,114,111,100,117,99,116,105,111,110,\r
-105,116,32,97,112,112,101,97,114,115,80,104,105,108,111,115,111,112,104,121,102,\r
-114,105,101,110,100,115,104,105,112,108,101,97,100,105,110,103,32,116,111,103,\r
-105,118,105,110,103,32,116,104,101,116,111,119,97,114,100,32,116,104,101,103,117\r
-,97,114,97,110,116,101,101,100,100,111,99,117,109,101,110,116,101,100,99,111,108\r
-,111,114,58,35,48,48,48,118,105,100,101,111,32,103,97,109,101,99,111,109,109,105\r
-,115,115,105,111,110,114,101,102,108,101,99,116,105,110,103,99,104,97,110,103,\r
-101,32,116,104,101,97,115,115,111,99,105,97,116,101,100,115,97,110,115,45,115,\r
-101,114,105,102,111,110,107,101,121,112,114,101,115,115,59,32,112,97,100,100,105\r
-,110,103,58,72,101,32,119,97,115,32,116,104,101,117,110,100,101,114,108,121,105,\r
-110,103,116,121,112,105,99,97,108,108,121,32,44,32,97,110,100,32,116,104,101,32,\r
-115,114,99,69,108,101,109,101,110,116,115,117,99,99,101,115,115,105,118,101,115,\r
-105,110,99,101,32,116,104,101,32,115,104,111,117,108,100,32,98,101,32,110,101,\r
-116,119,111,114,107,105,110,103,97,99,99,111,117,110,116,105,110,103,117,115,101\r
-,32,111,102,32,116,104,101,108,111,119,101,114,32,116,104,97,110,115,104,111,119\r
-,115,32,116,104,97,116,60,47,115,112,97,110,62,10,9,9,99,111,109,112,108,97,105,\r
-110,116,115,99,111,110,116,105,110,117,111,117,115,113,117,97,110,116,105,116,\r
-105,101,115,97,115,116,114,111,110,111,109,101,114,104,101,32,100,105,100,32,110\r
-,111,116,100,117,101,32,116,111,32,105,116,115,97,112,112,108,105,101,100,32,116\r
-,111,97,110,32,97,118,101,114,97,103,101,101,102,102,111,114,116,115,32,116,111,\r
-116,104,101,32,102,117,116,117,114,101,97,116,116,101,109,112,116,32,116,111,84,\r
-104,101,114,101,102,111,114,101,44,99,97,112,97,98,105,108,105,116,121,82,101,\r
-112,117,98,108,105,99,97,110,119,97,115,32,102,111,114,109,101,100,69,108,101,99\r
-,116,114,111,110,105,99,107,105,108,111,109,101,116,101,114,115,99,104,97,108,\r
-108,101,110,103,101,115,112,117,98,108,105,115,104,105,110,103,116,104,101,32,\r
-102,111,114,109,101,114,105,110,100,105,103,101,110,111,117,115,100,105,114,101,\r
-99,116,105,111,110,115,115,117,98,115,105,100,105,97,114,121,99,111,110,115,112,\r
-105,114,97,99,121,100,101,116,97,105,108,115,32,111,102,97,110,100,32,105,110,32\r
-,116,104,101,97,102,102,111,114,100,97,98,108,101,115,117,98,115,116,97,110,99,\r
-101,115,114,101,97,115,111,110,32,102,111,114,99,111,110,118,101,110,116,105,111\r
-,110,105,116,101,109,116,121,112,101,61,34,97,98,115,111,108,117,116,101,108,121\r
-,115,117,112,112,111,115,101,100,108,121,114,101,109,97,105,110,101,100,32,97,97\r
-,116,116,114,97,99,116,105,118,101,116,114,97,118,101,108,108,105,110,103,115,\r
-101,112,97,114,97,116,101,108,121,102,111,99,117,115,101,115,32,111,110,101,108,\r
-101,109,101,110,116,97,114,121,97,112,112,108,105,99,97,98,108,101,102,111,117,\r
-110,100,32,116,104,97,116,115,116,121,108,101,115,104,101,101,116,109,97,110,117\r
-,115,99,114,105,112,116,115,116,97,110,100,115,32,102,111,114,32,110,111,45,114,\r
-101,112,101,97,116,40,115,111,109,101,116,105,109,101,115,67,111,109,109,101,114\r
-,99,105,97,108,105,110,32,65,109,101,114,105,99,97,117,110,100,101,114,116,97,\r
-107,101,110,113,117,97,114,116,101,114,32,111,102,97,110,32,101,120,97,109,112,\r
-108,101,112,101,114,115,111,110,97,108,108,121,105,110,100,101,120,46,112,104,\r
-112,63,60,47,98,117,116,116,111,110,62,10,112,101,114,99,101,110,116,97,103,101,\r
-98,101,115,116,45,107,110,111,119,110,99,114,101,97,116,105,110,103,32,97,34,32,\r
-100,105,114,61,34,108,116,114,76,105,101,117,116,101,110,97,110,116,10,60,100,\r
-105,118,32,105,100,61,34,116,104,101,121,32,119,111,117,108,100,97,98,105,108,\r
-105,116,121,32,111,102,109,97,100,101,32,117,112,32,111,102,110,111,116,101,100,\r
-32,116,104,97,116,99,108,101,97,114,32,116,104,97,116,97,114,103,117,101,32,116,\r
-104,97,116,116,111,32,97,110,111,116,104,101,114,99,104,105,108,100,114,101,110,\r
-39,115,112,117,114,112,111,115,101,32,111,102,102,111,114,109,117,108,97,116,101\r
-,100,98,97,115,101,100,32,117,112,111,110,116,104,101,32,114,101,103,105,111,110\r
-,115,117,98,106,101,99,116,32,111,102,112,97,115,115,101,110,103,101,114,115,112\r
-,111,115,115,101,115,115,105,111,110,46,10,10,73,110,32,116,104,101,32,66,101,\r
-102,111,114,101,32,116,104,101,97,102,116,101,114,119,97,114,100,115,99,117,114,\r
-114,101,110,116,108,121,32,97,99,114,111,115,115,32,116,104,101,115,99,105,101,\r
-110,116,105,102,105,99,99,111,109,109,117,110,105,116,121,46,99,97,112,105,116,\r
-97,108,105,115,109,105,110,32,71,101,114,109,97,110,121,114,105,103,104,116,45,\r
-119,105,110,103,116,104,101,32,115,121,115,116,101,109,83,111,99,105,101,116,121\r
-,32,111,102,112,111,108,105,116,105,99,105,97,110,100,105,114,101,99,116,105,111\r
-,110,58,119,101,110,116,32,111,110,32,116,111,114,101,109,111,118,97,108,32,111,\r
-102,32,78,101,119,32,89,111,114,107,32,97,112,97,114,116,109,101,110,116,115,105\r
-,110,100,105,99,97,116,105,111,110,100,117,114,105,110,103,32,116,104,101,117,\r
-110,108,101,115,115,32,116,104,101,104,105,115,116,111,114,105,99,97,108,104,97,\r
-100,32,98,101,101,110,32,97,100,101,102,105,110,105,116,105,118,101,105,110,103,\r
-114,101,100,105,101,110,116,97,116,116,101,110,100,97,110,99,101,67,101,110,116,\r
-101,114,32,102,111,114,112,114,111,109,105,110,101,110,99,101,114,101,97,100,121\r
-,83,116,97,116,101,115,116,114,97,116,101,103,105,101,115,98,117,116,32,105,110,\r
-32,116,104,101,97,115,32,112,97,114,116,32,111,102,99,111,110,115,116,105,116,\r
-117,116,101,99,108,97,105,109,32,116,104,97,116,108,97,98,111,114,97,116,111,114\r
-,121,99,111,109,112,97,116,105,98,108,101,102,97,105,108,117,114,101,32,111,102,\r
-44,32,115,117,99,104,32,97,115,32,98,101,103,97,110,32,119,105,116,104,117,115,\r
-105,110,103,32,116,104,101,32,116,111,32,112,114,111,118,105,100,101,102,101,97,\r
-116,117,114,101,32,111,102,102,114,111,109,32,119,104,105,99,104,47,34,32,99,108\r
-,97,115,115,61,34,103,101,111,108,111,103,105,99,97,108,115,101,118,101,114,97,\r
-108,32,111,102,100,101,108,105,98,101,114,97,116,101,105,109,112,111,114,116,97,\r
-110,116,32,104,111,108,100,115,32,116,104,97,116,105,110,103,38,113,117,111,116,\r
-59,32,118,97,108,105,103,110,61,116,111,112,116,104,101,32,71,101,114,109,97,110\r
-,111,117,116,115,105,100,101,32,111,102,110,101,103,111,116,105,97,116,101,100,\r
-104,105,115,32,99,97,114,101,101,114,115,101,112,97,114,97,116,105,111,110,105,\r
-100,61,34,115,101,97,114,99,104,119,97,115,32,99,97,108,108,101,100,116,104,101,\r
-32,102,111,117,114,116,104,114,101,99,114,101,97,116,105,111,110,111,116,104,101\r
-,114,32,116,104,97,110,112,114,101,118,101,110,116,105,111,110,119,104,105,108,\r
-101,32,116,104,101,32,101,100,117,99,97,116,105,111,110,44,99,111,110,110,101,99\r
-,116,105,110,103,97,99,99,117,114,97,116,101,108,121,119,101,114,101,32,98,117,\r
-105,108,116,119,97,115,32,107,105,108,108,101,100,97,103,114,101,101,109,101,110\r
-,116,115,109,117,99,104,32,109,111,114,101,32,68,117,101,32,116,111,32,116,104,\r
-101,119,105,100,116,104,58,32,49,48,48,115,111,109,101,32,111,116,104,101,114,75\r
-,105,110,103,100,111,109,32,111,102,116,104,101,32,101,110,116,105,114,101,102,\r
-97,109,111,117,115,32,102,111,114,116,111,32,99,111,110,110,101,99,116,111,98,\r
-106,101,99,116,105,118,101,115,116,104,101,32,70,114,101,110,99,104,112,101,111,\r
-112,108,101,32,97,110,100,102,101,97,116,117,114,101,100,34,62,105,115,32,115,97\r
-,105,100,32,116,111,115,116,114,117,99,116,117,114,97,108,114,101,102,101,114,\r
-101,110,100,117,109,109,111,115,116,32,111,102,116,101,110,97,32,115,101,112,97,\r
-114,97,116,101,45,62,10,60,100,105,118,32,105,100,32,79,102,102,105,99,105,97,\r
-108,32,119,111,114,108,100,119,105,100,101,46,97,114,105,97,45,108,97,98,101,108\r
-,116,104,101,32,112,108,97,110,101,116,97,110,100,32,105,116,32,119,97,115,100,\r
-34,32,118,97,108,117,101,61,34,108,111,111,107,105,110,103,32,97,116,98,101,110,\r
-101,102,105,99,105,97,108,97,114,101,32,105,110,32,116,104,101,109,111,110,105,\r
-116,111,114,105,110,103,114,101,112,111,114,116,101,100,108,121,116,104,101,32,\r
-109,111,100,101,114,110,119,111,114,107,105,110,103,32,111,110,97,108,108,111,\r
-119,101,100,32,116,111,119,104,101,114,101,32,116,104,101,32,105,110,110,111,118\r
-,97,116,105,118,101,60,47,97,62,60,47,100,105,118,62,115,111,117,110,100,116,114\r
-,97,99,107,115,101,97,114,99,104,70,111,114,109,116,101,110,100,32,116,111,32,98\r
-,101,105,110,112,117,116,32,105,100,61,34,111,112,101,110,105,110,103,32,111,102\r
-,114,101,115,116,114,105,99,116,101,100,97,100,111,112,116,101,100,32,98,121,97,\r
-100,100,114,101,115,115,105,110,103,116,104,101,111,108,111,103,105,97,110,109,\r
-101,116,104,111,100,115,32,111,102,118,97,114,105,97,110,116,32,111,102,67,104,\r
-114,105,115,116,105,97,110,32,118,101,114,121,32,108,97,114,103,101,97,117,116,\r
-111,109,111,116,105,118,101,98,121,32,102,97,114,32,116,104,101,114,97,110,103,\r
-101,32,102,114,111,109,112,117,114,115,117,105,116,32,111,102,102,111,108,108,\r
-111,119,32,116,104,101,98,114,111,117,103,104,116,32,116,111,105,110,32,69,110,\r
-103,108,97,110,100,97,103,114,101,101,32,116,104,97,116,97,99,99,117,115,101,100\r
-,32,111,102,99,111,109,101,115,32,102,114,111,109,112,114,101,118,101,110,116,\r
-105,110,103,100,105,118,32,115,116,121,108,101,61,104,105,115,32,111,114,32,104,\r
-101,114,116,114,101,109,101,110,100,111,117,115,102,114,101,101,100,111,109,32,\r
-111,102,99,111,110,99,101,114,110,105,110,103,48,32,49,101,109,32,49,101,109,59,\r
-66,97,115,107,101,116,98,97,108,108,47,115,116,121,108,101,46,99,115,115,97,110,\r
-32,101,97,114,108,105,101,114,101,118,101,110,32,97,102,116,101,114,47,34,32,116\r
-,105,116,108,101,61,34,46,99,111,109,47,105,110,100,101,120,116,97,107,105,110,\r
-103,32,116,104,101,112,105,116,116,115,98,117,114,103,104,99,111,110,116,101,110\r
-,116,34,62,13,60,115,99,114,105,112,116,62,40,102,116,117,114,110,101,100,32,111\r
-,117,116,104,97,118,105,110,103,32,116,104,101,60,47,115,112,97,110,62,13,10,32,\r
-111,99,99,97,115,105,111,110,97,108,98,101,99,97,117,115,101,32,105,116,115,116,\r
-97,114,116,101,100,32,116,111,112,104,121,115,105,99,97,108,108,121,62,60,47,100\r
-,105,118,62,10,32,32,99,114,101,97,116,101,100,32,98,121,67,117,114,114,101,110,\r
-116,108,121,44,32,98,103,99,111,108,111,114,61,34,116,97,98,105,110,100,101,120,\r
-61,34,100,105,115,97,115,116,114,111,117,115,65,110,97,108,121,116,105,99,115,32\r
-,97,108,115,111,32,104,97,115,32,97,62,60,100,105,118,32,105,100,61,34,60,47,115\r
-,116,121,108,101,62,10,60,99,97,108,108,101,100,32,102,111,114,115,105,110,103,\r
-101,114,32,97,110,100,46,115,114,99,32,61,32,34,47,47,118,105,111,108,97,116,105\r
-,111,110,115,116,104,105,115,32,112,111,105,110,116,99,111,110,115,116,97,110,\r
-116,108,121,105,115,32,108,111,99,97,116,101,100,114,101,99,111,114,100,105,110,\r
-103,115,100,32,102,114,111,109,32,116,104,101,110,101,100,101,114,108,97,110,100\r
-,115,112,111,114,116,117,103,117,195,170,115,215,162,215,145,215,168,215,153,215\r
-,170,217,129,216,167,216,177,216,179,219,140,100,101,115,97,114,114,111,108,108,\r
-111,99,111,109,101,110,116,97,114,105,111,101,100,117,99,97,99,105,195,179,110,\r
-115,101,112,116,105,101,109,98,114,101,114,101,103,105,115,116,114,97,100,111,\r
-100,105,114,101,99,99,105,195,179,110,117,98,105,99,97,99,105,195,179,110,112,\r
-117,98,108,105,99,105,100,97,100,114,101,115,112,117,101,115,116,97,115,114,101,\r
-115,117,108,116,97,100,111,115,105,109,112,111,114,116,97,110,116,101,114,101,\r
-115,101,114,118,97,100,111,115,97,114,116,195,173,99,117,108,111,115,100,105,102\r
-,101,114,101,110,116,101,115,115,105,103,117,105,101,110,116,101,115,114,101,112\r
-,195,186,98,108,105,99,97,115,105,116,117,97,99,105,195,179,110,109,105,110,105,\r
-115,116,101,114,105,111,112,114,105,118,97,99,105,100,97,100,100,105,114,101,99,\r
-116,111,114,105,111,102,111,114,109,97,99,105,195,179,110,112,111,98,108,97,99,\r
-105,195,179,110,112,114,101,115,105,100,101,110,116,101,99,111,110,116,101,110,\r
-105,100,111,115,97,99,99,101,115,111,114,105,111,115,116,101,99,104,110,111,114,\r
-97,116,105,112,101,114,115,111,110,97,108,101,115,99,97,116,101,103,111,114,195,\r
-173,97,101,115,112,101,99,105,97,108,101,115,100,105,115,112,111,110,105,98,108,\r
-101,97,99,116,117,97,108,105,100,97,100,114,101,102,101,114,101,110,99,105,97,\r
-118,97,108,108,97,100,111,108,105,100,98,105,98,108,105,111,116,101,99,97,114,\r
-101,108,97,99,105,111,110,101,115,99,97,108,101,110,100,97,114,105,111,112,111,\r
-108,195,173,116,105,99,97,115,97,110,116,101,114,105,111,114,101,115,100,111,99,\r
-117,109,101,110,116,111,115,110,97,116,117,114,97,108,101,122,97,109,97,116,101,\r
-114,105,97,108,101,115,100,105,102,101,114,101,110,99,105,97,101,99,111,110,195,\r
-179,109,105,99,97,116,114,97,110,115,112,111,114,116,101,114,111,100,114,195,173\r
-,103,117,101,122,112,97,114,116,105,99,105,112,97,114,101,110,99,117,101,110,116\r
-,114,97,110,100,105,115,99,117,115,105,195,179,110,101,115,116,114,117,99,116,\r
-117,114,97,102,117,110,100,97,99,105,195,179,110,102,114,101,99,117,101,110,116,\r
-101,115,112,101,114,109,97,110,101,110,116,101,116,111,116,97,108,109,101,110,\r
-116,101,208,188,208,190,208,182,208,189,208,190,208,177,209,131,208,180,208,181,\r
-209,130,208,188,208,190,208,182,208,181,209,130,208,178,209,128,208,181,208,188,\r
-209,143,209,130,208,176,208,186,208,182,208,181,209,135,209,130,208,190,208,177,\r
-209,139,208,177,208,190,208,187,208,181,208,181,208,190,209,135,208,181,208,189,\r
-209,140,209,141,209,130,208,190,208,179,208,190,208,186,208,190,208,179,208,180,\r
-208,176,208,191,208,190,209,129,208,187,208,181,208,178,209,129,208,181,208,179,\r
-208,190,209,129,208,176,208,185,209,130,208,181,209,135,208,181,209,128,208,181,\r
-208,183,208,188,208,190,208,179,209,131,209,130,209,129,208,176,208,185,209,130,\r
-208,176,208,182,208,184,208,183,208,189,208,184,208,188,208,181,208,182,208,180,\r
-209,131,208,177,209,131,208,180,209,131,209,130,208,159,208,190,208,184,209,129,\r
-208,186,208,183,208,180,208,181,209,129,209,140,208,178,208,184,208,180,208,181,\r
-208,190,209,129,208,178,209,143,208,183,208,184,208,189,209,131,208,182,208,189,\r
-208,190,209,129,208,178,208,190,208,181,208,185,208,187,209,142,208,180,208,181,\r
-208,185,208,191,208,190,209,128,208,189,208,190,208,188,208,189,208,190,208,179,\r
-208,190,208,180,208,181,209,130,208,181,208,185,209,129,208,178,208,190,208,184,\r
-209,133,208,191,209,128,208,176,208,178,208,176,209,130,208,176,208,186,208,190,\r
-208,185,208,188,208,181,209,129,209,130,208,190,208,184,208,188,208,181,208,181,\r
-209,130,208,182,208,184,208,183,208,189,209,140,208,190,208,180,208,189,208,190,\r
-208,185,208,187,209,131,209,135,209,136,208,181,208,191,208,181,209,128,208,181,\r
-208,180,209,135,208,176,209,129,209,130,208,184,209,135,208,176,209,129,209,130,\r
-209,140,209,128,208,176,208,177,208,190,209,130,208,189,208,190,208,178,209,139,\r
-209,133,208,191,209,128,208,176,208,178,208,190,209,129,208,190,208,177,208,190,\r
-208,185,208,191,208,190,209,130,208,190,208,188,208,188,208,181,208,189,208,181,\r
-208,181,209,135,208,184,209,129,208,187,208,181,208,189,208,190,208,178,209,139,\r
-208,181,209,131,209,129,208,187,209,131,208,179,208,190,208,186,208,190,208,187,\r
-208,190,208,189,208,176,208,183,208,176,208,180,209,130,208,176,208,186,208,190,\r
-208,181,209,130,208,190,208,179,208,180,208,176,208,191,208,190,209,135,209,130,\r
-208,184,208,159,208,190,209,129,208,187,208,181,209,130,208,176,208,186,208,184,\r
-208,181,208,189,208,190,208,178,209,139,208,185,209,129,209,130,208,190,208,184,\r
-209,130,209,130,208,176,208,186,208,184,209,133,209,129,209,128,208,176,208,183,\r
-209,131,208,161,208,176,208,189,208,186,209,130,209,132,208,190,209,128,209,131,\r
-208,188,208,154,208,190,208,179,208,180,208,176,208,186,208,189,208,184,208,179,\r
-208,184,209,129,208,187,208,190,208,178,208,176,208,189,208,176,209,136,208,181,\r
-208,185,208,189,208,176,208,185,209,130,208,184,209,129,208,178,208,190,208,184,\r
-208,188,209,129,208,178,209,143,208,183,209,140,208,187,209,142,208,177,208,190,\r
-208,185,209,135,208,176,209,129,209,130,208,190,209,129,209,128,208,181,208,180,\r
-208,184,208,154,209,128,208,190,208,188,208,181,208,164,208,190,209,128,209,131,\r
-208,188,209,128,209,139,208,189,208,186,208,181,209,129,209,130,208,176,208,187,\r
-208,184,208,191,208,190,208,184,209,129,208,186,209,130,209,139,209,129,209,143,\r
-209,135,208,188,208,181,209,129,209,143,209,134,209,134,208,181,208,189,209,130,\r
-209,128,209,130,209,128,209,131,208,180,208,176,209,129,208,176,208,188,209,139,\r
-209,133,209,128,209,139,208,189,208,186,208,176,208,157,208,190,208,178,209,139,\r
-208,185,209,135,208,176,209,129,208,190,208,178,208,188,208,181,209,129,209,130,\r
-208,176,209,132,208,184,208,187,209,140,208,188,208,188,208,176,209,128,209,130,\r
-208,176,209,129,209,130,209,128,208,176,208,189,208,188,208,181,209,129,209,130,\r
-208,181,209,130,208,181,208,186,209,129,209,130,208,189,208,176,209,136,208,184,\r
-209,133,208,188,208,184,208,189,209,131,209,130,208,184,208,188,208,181,208,189,\r
-208,184,208,184,208,188,208,181,209,142,209,130,208,189,208,190,208,188,208,181,\r
-209,128,208,179,208,190,209,128,208,190,208,180,209,129,208,176,208,188,208,190,\r
-208,188,209,141,209,130,208,190,208,188,209,131,208,186,208,190,208,189,209,134,\r
-208,181,209,129,208,178,208,190,208,181,208,188,208,186,208,176,208,186,208,190,\r
-208,185,208,144,209,128,209,133,208,184,208,178,217,133,217,134,216,170,216,175,\r
-217,137,216,165,216,177,216,179,216,167,217,132,216,177,216,179,216,167,217,132,\r
-216,169,216,167,217,132,216,185,216,167,217,133,217,131,216,170,216,168,217,135,\r
-216,167,216,168,216,177,216,167,217,133,216,172,216,167,217,132,217,138,217,136,\r
-217,133,216,167,217,132,216,181,217,136,216,177,216,172,216,175,217,138,216,175,\r
-216,169,216,167,217,132,216,185,216,182,217,136,216,165,216,182,216,167,217,129,\r
-216,169,216,167,217,132,217,130,216,179,217,133,216,167,217,132,216,185,216,167,\r
-216,168,216,170,216,173,217,133,217,138,217,132,217,133,217,132,217,129,216,167,\r
-216,170,217,133,217,132,216,170,217,130,217,137,216,170,216,185,216,175,217,138,\r
-217,132,216,167,217,132,216,180,216,185,216,177,216,163,216,174,216,168,216,167,\r
-216,177,216,170,216,183,217,136,217,138,216,177,216,185,217,132,217,138,217,131,\r
-217,133,216,165,216,177,217,129,216,167,217,130,216,183,217,132,216,168,216,167,\r
-216,170,216,167,217,132,217,132,216,186,216,169,216,170,216,177,216,170,217,138,\r
-216,168,216,167,217,132,217,134,216,167,216,179,216,167,217,132,216,180,217,138,\r
-216,174,217,133,217,134,216,170,216,175,217,138,216,167,217,132,216,185,216,177,\r
-216,168,216,167,217,132,217,130,216,181,216,181,216,167,217,129,217,132,216,167,\r
-217,133,216,185,217,132,217,138,217,135,216,167,216,170,216,173,216,175,217,138,\r
-216,171,216,167,217,132,217,132,217,135,217,133,216,167,217,132,216,185,217,133,\r
-217,132,217,133,217,131,216,170,216,168,216,169,217,138,217,133,217,131,217,134,\r
-217,131,216,167,217,132,216,183,217,129,217,132,217,129,217,138,216,175,217,138,\r
-217,136,216,165,216,175,216,167,216,177,216,169,216,170,216,167,216,177,217,138,\r
-216,174,216,167,217,132,216,181,216,173,216,169,216,170,216,179,216,172,217,138,\r
-217,132,216,167,217,132,217,136,217,130,216,170,216,185,217,134,216,175,217,133,\r
-216,167,217,133,216,175,217,138,217,134,216,169,216,170,216,181,217,133,217,138,\r
-217,133,216,163,216,177,216,180,217,138,217,129,216,167,217,132,216,176,217,138,\r
-217,134,216,185,216,177,216,168,217,138,216,169,216,168,217,136,216,167,216,168,\r
-216,169,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,179,217,129,\r
-216,177,217,133,216,180,216,167,217,131,217,132,216,170,216,185,216,167,217,132,\r
-217,137,216,167,217,132,216,163,217,136,217,132,216,167,217,132,216,179,217,134,\r
-216,169,216,172,216,167,217,133,216,185,216,169,216,167,217,132,216,181,216,173,\r
-217,129,216,167,217,132,216,175,217,138,217,134,217,131,217,132,217,133,216,167,\r
-216,170,216,167,217,132,216,174,216,167,216,181,216,167,217,132,217,133,217,132,\r
-217,129,216,163,216,185,216,182,216,167,216,161,217,131,216,170,216,167,216,168,\r
-216,169,216,167,217,132,216,174,217,138,216,177,216,177,216,179,216,167,216,166,\r
-217,132,216,167,217,132,217,130,217,132,216,168,216,167,217,132,216,163,216,175,\r
-216,168,217,133,217,130,216,167,216,183,216,185,217,133,216,177,216,167,216,179,\r
-217,132,217,133,217,134,216,183,217,130,216,169,216,167,217,132,217,131,216,170,\r
-216,168,216,167,217,132,216,177,216,172,217,132,216,167,216,180,216,170,216,177,\r
-217,131,216,167,217,132,217,130,216,175,217,133,217,138,216,185,216,183,217,138,\r
-217,131,115,66,121,84,97,103,78,97,109,101,40,46,106,112,103,34,32,97,108,116,61\r
-,34,49,112,120,32,115,111,108,105,100,32,35,46,103,105,102,34,32,97,108,116,61,\r
-34,116,114,97,110,115,112,97,114,101,110,116,105,110,102,111,114,109,97,116,105,\r
-111,110,97,112,112,108,105,99,97,116,105,111,110,34,32,111,110,99,108,105,99,107\r
-,61,34,101,115,116,97,98,108,105,115,104,101,100,97,100,118,101,114,116,105,115,\r
-105,110,103,46,112,110,103,34,32,97,108,116,61,34,101,110,118,105,114,111,110,\r
-109,101,110,116,112,101,114,102,111,114,109,97,110,99,101,97,112,112,114,111,112\r
-,114,105,97,116,101,38,97,109,112,59,109,100,97,115,104,59,105,109,109,101,100,\r
-105,97,116,101,108,121,60,47,115,116,114,111,110,103,62,60,47,114,97,116,104,101\r
-,114,32,116,104,97,110,116,101,109,112,101,114,97,116,117,114,101,100,101,118,\r
-101,108,111,112,109,101,110,116,99,111,109,112,101,116,105,116,105,111,110,112,\r
-108,97,99,101,104,111,108,100,101,114,118,105,115,105,98,105,108,105,116,121,58,\r
-99,111,112,121,114,105,103,104,116,34,62,48,34,32,104,101,105,103,104,116,61,34,\r
-101,118,101,110,32,116,104,111,117,103,104,114,101,112,108,97,99,101,109,101,110\r
-,116,100,101,115,116,105,110,97,116,105,111,110,67,111,114,112,111,114,97,116,\r
-105,111,110,60,117,108,32,99,108,97,115,115,61,34,65,115,115,111,99,105,97,116,\r
-105,111,110,105,110,100,105,118,105,100,117,97,108,115,112,101,114,115,112,101,\r
-99,116,105,118,101,115,101,116,84,105,109,101,111,117,116,40,117,114,108,40,104,\r
-116,116,112,58,47,47,109,97,116,104,101,109,97,116,105,99,115,109,97,114,103,105\r
-,110,45,116,111,112,58,101,118,101,110,116,117,97,108,108,121,32,100,101,115,99,\r
-114,105,112,116,105,111,110,41,32,110,111,45,114,101,112,101,97,116,99,111,108,\r
-108,101,99,116,105,111,110,115,46,74,80,71,124,116,104,117,109,98,124,112,97,114\r
-,116,105,99,105,112,97,116,101,47,104,101,97,100,62,60,98,111,100,121,102,108,\r
-111,97,116,58,108,101,102,116,59,60,108,105,32,99,108,97,115,115,61,34,104,117,\r
-110,100,114,101,100,115,32,111,102,10,10,72,111,119,101,118,101,114,44,32,99,111\r
-,109,112,111,115,105,116,105,111,110,99,108,101,97,114,58,98,111,116,104,59,99,\r
-111,111,112,101,114,97,116,105,111,110,119,105,116,104,105,110,32,116,104,101,32\r
-,108,97,98,101,108,32,102,111,114,61,34,98,111,114,100,101,114,45,116,111,112,58\r
-,78,101,119,32,90,101,97,108,97,110,100,114,101,99,111,109,109,101,110,100,101,\r
-100,112,104,111,116,111,103,114,97,112,104,121,105,110,116,101,114,101,115,116,\r
-105,110,103,38,108,116,59,115,117,112,38,103,116,59,99,111,110,116,114,111,118,\r
-101,114,115,121,78,101,116,104,101,114,108,97,110,100,115,97,108,116,101,114,110\r
-,97,116,105,118,101,109,97,120,108,101,110,103,116,104,61,34,115,119,105,116,122\r
-,101,114,108,97,110,100,68,101,118,101,108,111,112,109,101,110,116,101,115,115,\r
-101,110,116,105,97,108,108,121,10,10,65,108,116,104,111,117,103,104,32,60,47,116\r
-,101,120,116,97,114,101,97,62,116,104,117,110,100,101,114,98,105,114,100,114,101\r
-,112,114,101,115,101,110,116,101,100,38,97,109,112,59,110,100,97,115,104,59,115,\r
-112,101,99,117,108,97,116,105,111,110,99,111,109,109,117,110,105,116,105,101,115\r
-,108,101,103,105,115,108,97,116,105,111,110,101,108,101,99,116,114,111,110,105,\r
-99,115,10,9,60,100,105,118,32,105,100,61,34,105,108,108,117,115,116,114,97,116,\r
-101,100,101,110,103,105,110,101,101,114,105,110,103,116,101,114,114,105,116,111,\r
-114,105,101,115,97,117,116,104,111,114,105,116,105,101,115,100,105,115,116,114,\r
-105,98,117,116,101,100,54,34,32,104,101,105,103,104,116,61,34,115,97,110,115,45,\r
-115,101,114,105,102,59,99,97,112,97,98,108,101,32,111,102,32,100,105,115,97,112,\r
-112,101,97,114,101,100,105,110,116,101,114,97,99,116,105,118,101,108,111,111,107\r
-,105,110,103,32,102,111,114,105,116,32,119,111,117,108,100,32,98,101,65,102,103,\r
-104,97,110,105,115,116,97,110,119,97,115,32,99,114,101,97,116,101,100,77,97,116,\r
-104,46,102,108,111,111,114,40,115,117,114,114,111,117,110,100,105,110,103,99,97,\r
-110,32,97,108,115,111,32,98,101,111,98,115,101,114,118,97,116,105,111,110,109,97\r
-,105,110,116,101,110,97,110,99,101,101,110,99,111,117,110,116,101,114,101,100,60\r
-,104,50,32,99,108,97,115,115,61,34,109,111,114,101,32,114,101,99,101,110,116,105\r
-,116,32,104,97,115,32,98,101,101,110,105,110,118,97,115,105,111,110,32,111,102,\r
-41,46,103,101,116,84,105,109,101,40,41,102,117,110,100,97,109,101,110,116,97,108\r
-,68,101,115,112,105,116,101,32,116,104,101,34,62,60,100,105,118,32,105,100,61,34\r
-,105,110,115,112,105,114,97,116,105,111,110,101,120,97,109,105,110,97,116,105,\r
-111,110,112,114,101,112,97,114,97,116,105,111,110,101,120,112,108,97,110,97,116,\r
-105,111,110,60,105,110,112,117,116,32,105,100,61,34,60,47,97,62,60,47,115,112,97\r
-,110,62,118,101,114,115,105,111,110,115,32,111,102,105,110,115,116,114,117,109,\r
-101,110,116,115,98,101,102,111,114,101,32,116,104,101,32,32,61,32,39,104,116,116\r
-,112,58,47,47,68,101,115,99,114,105,112,116,105,111,110,114,101,108,97,116,105,\r
-118,101,108,121,32,46,115,117,98,115,116,114,105,110,103,40,101,97,99,104,32,111\r
-,102,32,116,104,101,101,120,112,101,114,105,109,101,110,116,115,105,110,102,108,\r
-117,101,110,116,105,97,108,105,110,116,101,103,114,97,116,105,111,110,109,97,110\r
-,121,32,112,101,111,112,108,101,100,117,101,32,116,111,32,116,104,101,32,99,111,\r
-109,98,105,110,97,116,105,111,110,100,111,32,110,111,116,32,104,97,118,101,77,\r
-105,100,100,108,101,32,69,97,115,116,60,110,111,115,99,114,105,112,116,62,60,99,\r
-111,112,121,114,105,103,104,116,34,32,112,101,114,104,97,112,115,32,116,104,101,\r
-105,110,115,116,105,116,117,116,105,111,110,105,110,32,68,101,99,101,109,98,101,\r
-114,97,114,114,97,110,103,101,109,101,110,116,109,111,115,116,32,102,97,109,111,\r
-117,115,112,101,114,115,111,110,97,108,105,116,121,99,114,101,97,116,105,111,110\r
-,32,111,102,108,105,109,105,116,97,116,105,111,110,115,101,120,99,108,117,115,\r
-105,118,101,108,121,115,111,118,101,114,101,105,103,110,116,121,45,99,111,110,\r
-116,101,110,116,34,62,10,60,116,100,32,99,108,97,115,115,61,34,117,110,100,101,\r
-114,103,114,111,117,110,100,112,97,114,97,108,108,101,108,32,116,111,100,111,99,\r
-116,114,105,110,101,32,111,102,111,99,99,117,112,105,101,100,32,98,121,116,101,\r
-114,109,105,110,111,108,111,103,121,82,101,110,97,105,115,115,97,110,99,101,97,\r
-32,110,117,109,98,101,114,32,111,102,115,117,112,112,111,114,116,32,102,111,114,\r
-101,120,112,108,111,114,97,116,105,111,110,114,101,99,111,103,110,105,116,105,\r
-111,110,112,114,101,100,101,99,101,115,115,111,114,60,105,109,103,32,115,114,99,\r
-61,34,47,60,104,49,32,99,108,97,115,115,61,34,112,117,98,108,105,99,97,116,105,\r
-111,110,109,97,121,32,97,108,115,111,32,98,101,115,112,101,99,105,97,108,105,122\r
-,101,100,60,47,102,105,101,108,100,115,101,116,62,112,114,111,103,114,101,115,\r
-115,105,118,101,109,105,108,108,105,111,110,115,32,111,102,115,116,97,116,101,\r
-115,32,116,104,97,116,101,110,102,111,114,99,101,109,101,110,116,97,114,111,117,\r
-110,100,32,116,104,101,32,111,110,101,32,97,110,111,116,104,101,114,46,112,97,\r
-114,101,110,116,78,111,100,101,97,103,114,105,99,117,108,116,117,114,101,65,108,\r
-116,101,114,110,97,116,105,118,101,114,101,115,101,97,114,99,104,101,114,115,116\r
-,111,119,97,114,100,115,32,116,104,101,77,111,115,116,32,111,102,32,116,104,101,\r
-109,97,110,121,32,111,116,104,101,114,32,40,101,115,112,101,99,105,97,108,108,\r
-121,60,116,100,32,119,105,100,116,104,61,34,59,119,105,100,116,104,58,49,48,48,\r
-37,105,110,100,101,112,101,110,100,101,110,116,60,104,51,32,99,108,97,115,115,61\r
-,34,32,111,110,99,104,97,110,103,101,61,34,41,46,97,100,100,67,108,97,115,115,40\r
-,105,110,116,101,114,97,99,116,105,111,110,79,110,101,32,111,102,32,116,104,101,\r
-32,100,97,117,103,104,116,101,114,32,111,102,97,99,99,101,115,115,111,114,105,\r
-101,115,98,114,97,110,99,104,101,115,32,111,102,13,10,60,100,105,118,32,105,100,\r
-61,34,116,104,101,32,108,97,114,103,101,115,116,100,101,99,108,97,114,97,116,105\r
-,111,110,114,101,103,117,108,97,116,105,111,110,115,73,110,102,111,114,109,97,\r
-116,105,111,110,116,114,97,110,115,108,97,116,105,111,110,100,111,99,117,109,101\r
-,110,116,97,114,121,105,110,32,111,114,100,101,114,32,116,111,34,62,10,60,104,\r
-101,97,100,62,10,60,34,32,104,101,105,103,104,116,61,34,49,97,99,114,111,115,115\r
-,32,116,104,101,32,111,114,105,101,110,116,97,116,105,111,110,41,59,60,47,115,99\r
-,114,105,112,116,62,105,109,112,108,101,109,101,110,116,101,100,99,97,110,32,98,\r
-101,32,115,101,101,110,116,104,101,114,101,32,119,97,115,32,97,100,101,109,111,\r
-110,115,116,114,97,116,101,99,111,110,116,97,105,110,101,114,34,62,99,111,110,\r
-110,101,99,116,105,111,110,115,116,104,101,32,66,114,105,116,105,115,104,119,97,\r
-115,32,119,114,105,116,116,101,110,33,105,109,112,111,114,116,97,110,116,59,112,\r
-120,59,32,109,97,114,103,105,110,45,102,111,108,108,111,119,101,100,32,98,121,97\r
-,98,105,108,105,116,121,32,116,111,32,99,111,109,112,108,105,99,97,116,101,100,\r
-100,117,114,105,110,103,32,116,104,101,32,105,109,109,105,103,114,97,116,105,111\r
-,110,97,108,115,111,32,99,97,108,108,101,100,60,104,52,32,99,108,97,115,115,61,\r
-34,100,105,115,116,105,110,99,116,105,111,110,114,101,112,108,97,99,101,100,32,\r
-98,121,103,111,118,101,114,110,109,101,110,116,115,108,111,99,97,116,105,111,110\r
-,32,111,102,105,110,32,78,111,118,101,109,98,101,114,119,104,101,116,104,101,114\r
-,32,116,104,101,60,47,112,62,10,60,47,100,105,118,62,97,99,113,117,105,115,105,\r
-116,105,111,110,99,97,108,108,101,100,32,116,104,101,32,112,101,114,115,101,99,\r
-117,116,105,111,110,100,101,115,105,103,110,97,116,105,111,110,123,102,111,110,\r
-116,45,115,105,122,101,58,97,112,112,101,97,114,101,100,32,105,110,105,110,118,\r
-101,115,116,105,103,97,116,101,101,120,112,101,114,105,101,110,99,101,100,109,\r
-111,115,116,32,108,105,107,101,108,121,119,105,100,101,108,121,32,117,115,101,\r
-100,100,105,115,99,117,115,115,105,111,110,115,112,114,101,115,101,110,99,101,32\r
-,111,102,32,40,100,111,99,117,109,101,110,116,46,101,120,116,101,110,115,105,118\r
-,101,108,121,73,116,32,104,97,115,32,98,101,101,110,105,116,32,100,111,101,115,\r
-32,110,111,116,99,111,110,116,114,97,114,121,32,116,111,105,110,104,97,98,105,\r
-116,97,110,116,115,105,109,112,114,111,118,101,109,101,110,116,115,99,104,111,\r
-108,97,114,115,104,105,112,99,111,110,115,117,109,112,116,105,111,110,105,110,\r
-115,116,114,117,99,116,105,111,110,102,111,114,32,101,120,97,109,112,108,101,111\r
-,110,101,32,111,114,32,109,111,114,101,112,120,59,32,112,97,100,100,105,110,103,\r
-116,104,101,32,99,117,114,114,101,110,116,97,32,115,101,114,105,101,115,32,111,\r
-102,97,114,101,32,117,115,117,97,108,108,121,114,111,108,101,32,105,110,32,116,\r
-104,101,112,114,101,118,105,111,117,115,108,121,32,100,101,114,105,118,97,116,\r
-105,118,101,115,101,118,105,100,101,110,99,101,32,111,102,101,120,112,101,114,\r
-105,101,110,99,101,115,99,111,108,111,114,115,99,104,101,109,101,115,116,97,116,\r
-101,100,32,116,104,97,116,99,101,114,116,105,102,105,99,97,116,101,60,47,97,62,\r
-60,47,100,105,118,62,10,32,115,101,108,101,99,116,101,100,61,34,104,105,103,104,\r
-32,115,99,104,111,111,108,114,101,115,112,111,110,115,101,32,116,111,99,111,109,\r
-102,111,114,116,97,98,108,101,97,100,111,112,116,105,111,110,32,111,102,116,104,\r
-114,101,101,32,121,101,97,114,115,116,104,101,32,99,111,117,110,116,114,121,105,\r
-110,32,70,101,98,114,117,97,114,121,115,111,32,116,104,97,116,32,116,104,101,112\r
-,101,111,112,108,101,32,119,104,111,32,112,114,111,118,105,100,101,100,32,98,121\r
-,60,112,97,114,97,109,32,110,97,109,101,97,102,102,101,99,116,101,100,32,98,121,\r
-105,110,32,116,101,114,109,115,32,111,102,97,112,112,111,105,110,116,109,101,110\r
-,116,73,83,79,45,56,56,53,57,45,49,34,119,97,115,32,98,111,114,110,32,105,110,\r
-104,105,115,116,111,114,105,99,97,108,32,114,101,103,97,114,100,101,100,32,97,\r
-115,109,101,97,115,117,114,101,109,101,110,116,105,115,32,98,97,115,101,100,32,\r
-111,110,32,97,110,100,32,111,116,104,101,114,32,58,32,102,117,110,99,116,105,111\r
-,110,40,115,105,103,110,105,102,105,99,97,110,116,99,101,108,101,98,114,97,116,\r
-105,111,110,116,114,97,110,115,109,105,116,116,101,100,47,106,115,47,106,113,117\r
-,101,114,121,46,105,115,32,107,110,111,119,110,32,97,115,116,104,101,111,114,101\r
-,116,105,99,97,108,32,116,97,98,105,110,100,101,120,61,34,105,116,32,99,111,117,\r
-108,100,32,98,101,60,110,111,115,99,114,105,112,116,62,10,104,97,118,105,110,103\r
-,32,98,101,101,110,13,10,60,104,101,97,100,62,13,10,60,32,38,113,117,111,116,59,\r
-84,104,101,32,99,111,109,112,105,108,97,116,105,111,110,104,101,32,104,97,100,32\r
-,98,101,101,110,112,114,111,100,117,99,101,100,32,98,121,112,104,105,108,111,115\r
-,111,112,104,101,114,99,111,110,115,116,114,117,99,116,101,100,105,110,116,101,\r
-110,100,101,100,32,116,111,97,109,111,110,103,32,111,116,104,101,114,99,111,109,\r
-112,97,114,101,100,32,116,111,116,111,32,115,97,121,32,116,104,97,116,69,110,103\r
-,105,110,101,101,114,105,110,103,97,32,100,105,102,102,101,114,101,110,116,114,\r
-101,102,101,114,114,101,100,32,116,111,100,105,102,102,101,114,101,110,99,101,\r
-115,98,101,108,105,101,102,32,116,104,97,116,112,104,111,116,111,103,114,97,112,\r
-104,115,105,100,101,110,116,105,102,121,105,110,103,72,105,115,116,111,114,121,\r
-32,111,102,32,82,101,112,117,98,108,105,99,32,111,102,110,101,99,101,115,115,97,\r
-114,105,108,121,112,114,111,98,97,98,105,108,105,116,121,116,101,99,104,110,105,\r
-99,97,108,108,121,108,101,97,118,105,110,103,32,116,104,101,115,112,101,99,116,\r
-97,99,117,108,97,114,102,114,97,99,116,105,111,110,32,111,102,101,108,101,99,116\r
-,114,105,99,105,116,121,104,101,97,100,32,111,102,32,116,104,101,114,101,115,116\r
-,97,117,114,97,110,116,115,112,97,114,116,110,101,114,115,104,105,112,101,109,\r
-112,104,97,115,105,115,32,111,110,109,111,115,116,32,114,101,99,101,110,116,115,\r
-104,97,114,101,32,119,105,116,104,32,115,97,121,105,110,103,32,116,104,97,116,\r
-102,105,108,108,101,100,32,119,105,116,104,100,101,115,105,103,110,101,100,32,\r
-116,111,105,116,32,105,115,32,111,102,116,101,110,34,62,60,47,105,102,114,97,109\r
-,101,62,97,115,32,102,111,108,108,111,119,115,58,109,101,114,103,101,100,32,119,\r
-105,116,104,116,104,114,111,117,103,104,32,116,104,101,99,111,109,109,101,114,99\r
-,105,97,108,32,112,111,105,110,116,101,100,32,111,117,116,111,112,112,111,114,\r
-116,117,110,105,116,121,118,105,101,119,32,111,102,32,116,104,101,114,101,113,\r
-117,105,114,101,109,101,110,116,100,105,118,105,115,105,111,110,32,111,102,112,\r
-114,111,103,114,97,109,109,105,110,103,104,101,32,114,101,99,101,105,118,101,100\r
-,115,101,116,73,110,116,101,114,118,97,108,34,62,60,47,115,112,97,110,62,60,47,\r
-105,110,32,78,101,119,32,89,111,114,107,97,100,100,105,116,105,111,110,97,108,32\r
-,99,111,109,112,114,101,115,115,105,111,110,10,10,60,100,105,118,32,105,100,61,\r
-34,105,110,99,111,114,112,111,114,97,116,101,59,60,47,115,99,114,105,112,116,62,\r
-60,97,116,116,97,99,104,69,118,101,110,116,98,101,99,97,109,101,32,116,104,101,\r
-32,34,32,116,97,114,103,101,116,61,34,95,99,97,114,114,105,101,100,32,111,117,\r
-116,83,111,109,101,32,111,102,32,116,104,101,115,99,105,101,110,99,101,32,97,110\r
-,100,116,104,101,32,116,105,109,101,32,111,102,67,111,110,116,97,105,110,101,114\r
-,34,62,109,97,105,110,116,97,105,110,105,110,103,67,104,114,105,115,116,111,112,\r
-104,101,114,77,117,99,104,32,111,102,32,116,104,101,119,114,105,116,105,110,103,\r
-115,32,111,102,34,32,104,101,105,103,104,116,61,34,50,115,105,122,101,32,111,102\r
-,32,116,104,101,118,101,114,115,105,111,110,32,111,102,32,109,105,120,116,117,\r
-114,101,32,111,102,32,98,101,116,119,101,101,110,32,116,104,101,69,120,97,109,\r
-112,108,101,115,32,111,102,101,100,117,99,97,116,105,111,110,97,108,99,111,109,\r
-112,101,116,105,116,105,118,101,32,111,110,115,117,98,109,105,116,61,34,100,105,\r
-114,101,99,116,111,114,32,111,102,100,105,115,116,105,110,99,116,105,118,101,47,\r
-68,84,68,32,88,72,84,77,76,32,114,101,108,97,116,105,110,103,32,116,111,116,101,\r
-110,100,101,110,99,121,32,116,111,112,114,111,118,105,110,99,101,32,111,102,119,\r
-104,105,99,104,32,119,111,117,108,100,100,101,115,112,105,116,101,32,116,104,101\r
-,115,99,105,101,110,116,105,102,105,99,32,108,101,103,105,115,108,97,116,117,114\r
-,101,46,105,110,110,101,114,72,84,77,76,32,97,108,108,101,103,97,116,105,111,110\r
-,115,65,103,114,105,99,117,108,116,117,114,101,119,97,115,32,117,115,101,100,32,\r
-105,110,97,112,112,114,111,97,99,104,32,116,111,105,110,116,101,108,108,105,103,\r
-101,110,116,121,101,97,114,115,32,108,97,116,101,114,44,115,97,110,115,45,115,\r
-101,114,105,102,100,101,116,101,114,109,105,110,105,110,103,80,101,114,102,111,\r
-114,109,97,110,99,101,97,112,112,101,97,114,97,110,99,101,115,44,32,119,104,105,\r
-99,104,32,105,115,32,102,111,117,110,100,97,116,105,111,110,115,97,98,98,114,101\r
-,118,105,97,116,101,100,104,105,103,104,101,114,32,116,104,97,110,115,32,102,114\r
-,111,109,32,116,104,101,32,105,110,100,105,118,105,100,117,97,108,32,99,111,109,\r
-112,111,115,101,100,32,111,102,115,117,112,112,111,115,101,100,32,116,111,99,108\r
-,97,105,109,115,32,116,104,97,116,97,116,116,114,105,98,117,116,105,111,110,102,\r
-111,110,116,45,115,105,122,101,58,49,101,108,101,109,101,110,116,115,32,111,102,\r
-72,105,115,116,111,114,105,99,97,108,32,104,105,115,32,98,114,111,116,104,101,\r
-114,97,116,32,116,104,101,32,116,105,109,101,97,110,110,105,118,101,114,115,97,\r
-114,121,103,111,118,101,114,110,101,100,32,98,121,114,101,108,97,116,101,100,32,\r
-116,111,32,117,108,116,105,109,97,116,101,108,121,32,105,110,110,111,118,97,116,\r
-105,111,110,115,105,116,32,105,115,32,115,116,105,108,108,99,97,110,32,111,110,\r
-108,121,32,98,101,100,101,102,105,110,105,116,105,111,110,115,116,111,71,77,84,\r
-83,116,114,105,110,103,65,32,110,117,109,98,101,114,32,111,102,105,109,103,32,99\r
-,108,97,115,115,61,34,69,118,101,110,116,117,97,108,108,121,44,119,97,115,32,99,\r
-104,97,110,103,101,100,111,99,99,117,114,114,101,100,32,105,110,110,101,105,103,\r
-104,98,111,114,105,110,103,100,105,115,116,105,110,103,117,105,115,104,119,104,\r
-101,110,32,104,101,32,119,97,115,105,110,116,114,111,100,117,99,105,110,103,116,\r
-101,114,114,101,115,116,114,105,97,108,77,97,110,121,32,111,102,32,116,104,101,\r
-97,114,103,117,101,115,32,116,104,97,116,97,110,32,65,109,101,114,105,99,97,110,\r
-99,111,110,113,117,101,115,116,32,111,102,119,105,100,101,115,112,114,101,97,100\r
-,32,119,101,114,101,32,107,105,108,108,101,100,115,99,114,101,101,110,32,97,110,\r
-100,32,73,110,32,111,114,100,101,114,32,116,111,101,120,112,101,99,116,101,100,\r
-32,116,111,100,101,115,99,101,110,100,97,110,116,115,97,114,101,32,108,111,99,97\r
-,116,101,100,108,101,103,105,115,108,97,116,105,118,101,103,101,110,101,114,97,\r
-116,105,111,110,115,32,98,97,99,107,103,114,111,117,110,100,109,111,115,116,32,\r
-112,101,111,112,108,101,121,101,97,114,115,32,97,102,116,101,114,116,104,101,114\r
-,101,32,105,115,32,110,111,116,104,101,32,104,105,103,104,101,115,116,102,114,\r
-101,113,117,101,110,116,108,121,32,116,104,101,121,32,100,111,32,110,111,116,97,\r
-114,103,117,101,100,32,116,104,97,116,115,104,111,119,101,100,32,116,104,97,116,\r
-112,114,101,100,111,109,105,110,97,110,116,116,104,101,111,108,111,103,105,99,97\r
-,108,98,121,32,116,104,101,32,116,105,109,101,99,111,110,115,105,100,101,114,105\r
-,110,103,115,104,111,114,116,45,108,105,118,101,100,60,47,115,112,97,110,62,60,\r
-47,97,62,99,97,110,32,98,101,32,117,115,101,100,118,101,114,121,32,108,105,116,\r
-116,108,101,111,110,101,32,111,102,32,116,104,101,32,104,97,100,32,97,108,114,\r
-101,97,100,121,105,110,116,101,114,112,114,101,116,101,100,99,111,109,109,117,\r
-110,105,99,97,116,101,102,101,97,116,117,114,101,115,32,111,102,103,111,118,101,\r
-114,110,109,101,110,116,44,60,47,110,111,115,99,114,105,112,116,62,101,110,116,\r
-101,114,101,100,32,116,104,101,34,32,104,101,105,103,104,116,61,34,51,73,110,100\r
-,101,112,101,110,100,101,110,116,112,111,112,117,108,97,116,105,111,110,115,108,\r
-97,114,103,101,45,115,99,97,108,101,46,32,65,108,116,104,111,117,103,104,32,117,\r
-115,101,100,32,105,110,32,116,104,101,100,101,115,116,114,117,99,116,105,111,110\r
-,112,111,115,115,105,98,105,108,105,116,121,115,116,97,114,116,105,110,103,32,\r
-105,110,116,119,111,32,111,114,32,109,111,114,101,101,120,112,114,101,115,115,\r
-105,111,110,115,115,117,98,111,114,100,105,110,97,116,101,108,97,114,103,101,114\r
-,32,116,104,97,110,104,105,115,116,111,114,121,32,97,110,100,60,47,111,112,116,\r
-105,111,110,62,13,10,67,111,110,116,105,110,101,110,116,97,108,101,108,105,109,\r
-105,110,97,116,105,110,103,119,105,108,108,32,110,111,116,32,98,101,112,114,97,\r
-99,116,105,99,101,32,111,102,105,110,32,102,114,111,110,116,32,111,102,115,105,\r
-116,101,32,111,102,32,116,104,101,101,110,115,117,114,101,32,116,104,97,116,116,\r
-111,32,99,114,101,97,116,101,32,97,109,105,115,115,105,115,115,105,112,112,105,\r
-112,111,116,101,110,116,105,97,108,108,121,111,117,116,115,116,97,110,100,105,\r
-110,103,98,101,116,116,101,114,32,116,104,97,110,119,104,97,116,32,105,115,32,\r
-110,111,119,115,105,116,117,97,116,101,100,32,105,110,109,101,116,97,32,110,97,\r
-109,101,61,34,84,114,97,100,105,116,105,111,110,97,108,115,117,103,103,101,115,\r
-116,105,111,110,115,84,114,97,110,115,108,97,116,105,111,110,116,104,101,32,102,\r
-111,114,109,32,111,102,97,116,109,111,115,112,104,101,114,105,99,105,100,101,111\r
-,108,111,103,105,99,97,108,101,110,116,101,114,112,114,105,115,101,115,99,97,108\r
-,99,117,108,97,116,105,110,103,101,97,115,116,32,111,102,32,116,104,101,114,101,\r
-109,110,97,110,116,115,32,111,102,112,108,117,103,105,110,115,112,97,103,101,47,\r
-105,110,100,101,120,46,112,104,112,63,114,101,109,97,105,110,101,100,32,105,110,\r
-116,114,97,110,115,102,111,114,109,101,100,72,101,32,119,97,115,32,97,108,115,\r
-111,119,97,115,32,97,108,114,101,97,100,121,115,116,97,116,105,115,116,105,99,97\r
-,108,105,110,32,102,97,118,111,114,32,111,102,77,105,110,105,115,116,114,121,32,\r
-111,102,109,111,118,101,109,101,110,116,32,111,102,102,111,114,109,117,108,97,\r
-116,105,111,110,105,115,32,114,101,113,117,105,114,101,100,60,108,105,110,107,32\r
-,114,101,108,61,34,84,104,105,115,32,105,115,32,116,104,101,32,60,97,32,104,114,\r
-101,102,61,34,47,112,111,112,117,108,97,114,105,122,101,100,105,110,118,111,108,\r
-118,101,100,32,105,110,97,114,101,32,117,115,101,100,32,116,111,97,110,100,32,\r
-115,101,118,101,114,97,108,109,97,100,101,32,98,121,32,116,104,101,115,101,101,\r
-109,115,32,116,111,32,98,101,108,105,107,101,108,121,32,116,104,97,116,80,97,108\r
-,101,115,116,105,110,105,97,110,110,97,109,101,100,32,97,102,116,101,114,105,116\r
-,32,104,97,100,32,98,101,101,110,109,111,115,116,32,99,111,109,109,111,110,116,\r
-111,32,114,101,102,101,114,32,116,111,98,117,116,32,116,104,105,115,32,105,115,\r
-99,111,110,115,101,99,117,116,105,118,101,116,101,109,112,111,114,97,114,105,108\r
-,121,73,110,32,103,101,110,101,114,97,108,44,99,111,110,118,101,110,116,105,111,\r
-110,115,116,97,107,101,115,32,112,108,97,99,101,115,117,98,100,105,118,105,115,\r
-105,111,110,116,101,114,114,105,116,111,114,105,97,108,111,112,101,114,97,116,\r
-105,111,110,97,108,112,101,114,109,97,110,101,110,116,108,121,119,97,115,32,108,\r
-97,114,103,101,108,121,111,117,116,98,114,101,97,107,32,111,102,105,110,32,116,\r
-104,101,32,112,97,115,116,102,111,108,108,111,119,105,110,103,32,97,32,120,109,\r
-108,110,115,58,111,103,61,34,62,60,97,32,99,108,97,115,115,61,34,99,108,97,115,\r
-115,61,34,116,101,120,116,67,111,110,118,101,114,115,105,111,110,32,109,97,121,\r
-32,98,101,32,117,115,101,100,109,97,110,117,102,97,99,116,117,114,101,97,102,116\r
-,101,114,32,98,101,105,110,103,99,108,101,97,114,102,105,120,34,62,10,113,117,\r
-101,115,116,105,111,110,32,111,102,119,97,115,32,101,108,101,99,116,101,100,116,\r
-111,32,98,101,99,111,109,101,32,97,98,101,99,97,117,115,101,32,111,102,32,115,\r
-111,109,101,32,112,101,111,112,108,101,105,110,115,112,105,114,101,100,32,98,121\r
-,115,117,99,99,101,115,115,102,117,108,32,97,32,116,105,109,101,32,119,104,101,\r
-110,109,111,114,101,32,99,111,109,109,111,110,97,109,111,110,103,115,116,32,116,\r
-104,101,97,110,32,111,102,102,105,99,105,97,108,119,105,100,116,104,58,49,48,48,\r
-37,59,116,101,99,104,110,111,108,111,103,121,44,119,97,115,32,97,100,111,112,116\r
-,101,100,116,111,32,107,101,101,112,32,116,104,101,115,101,116,116,108,101,109,\r
-101,110,116,115,108,105,118,101,32,98,105,114,116,104,115,105,110,100,101,120,46\r
-,104,116,109,108,34,67,111,110,110,101,99,116,105,99,117,116,97,115,115,105,103,\r
-110,101,100,32,116,111,38,97,109,112,59,116,105,109,101,115,59,97,99,99,111,117,\r
-110,116,32,102,111,114,97,108,105,103,110,61,114,105,103,104,116,116,104,101,32,\r
-99,111,109,112,97,110,121,97,108,119,97,121,115,32,98,101,101,110,114,101,116,\r
-117,114,110,101,100,32,116,111,105,110,118,111,108,118,101,109,101,110,116,66,\r
-101,99,97,117,115,101,32,116,104,101,116,104,105,115,32,112,101,114,105,111,100,\r
-34,32,110,97,109,101,61,34,113,34,32,99,111,110,102,105,110,101,100,32,116,111,\r
-97,32,114,101,115,117,108,116,32,111,102,118,97,108,117,101,61,34,34,32,47,62,\r
-105,115,32,97,99,116,117,97,108,108,121,69,110,118,105,114,111,110,109,101,110,\r
-116,13,10,60,47,104,101,97,100,62,13,10,67,111,110,118,101,114,115,101,108,121,\r
-44,62,10,60,100,105,118,32,105,100,61,34,48,34,32,119,105,100,116,104,61,34,49,\r
-105,115,32,112,114,111,98,97,98,108,121,104,97,118,101,32,98,101,99,111,109,101,\r
-99,111,110,116,114,111,108,108,105,110,103,116,104,101,32,112,114,111,98,108,101\r
-,109,99,105,116,105,122,101,110,115,32,111,102,112,111,108,105,116,105,99,105,97\r
-,110,115,114,101,97,99,104,101,100,32,116,104,101,97,115,32,101,97,114,108,121,\r
-32,97,115,58,110,111,110,101,59,32,111,118,101,114,60,116,97,98,108,101,32,99,\r
-101,108,108,118,97,108,105,100,105,116,121,32,111,102,100,105,114,101,99,116,108\r
-,121,32,116,111,111,110,109,111,117,115,101,100,111,119,110,119,104,101,114,101,\r
-32,105,116,32,105,115,119,104,101,110,32,105,116,32,119,97,115,109,101,109,98,\r
-101,114,115,32,111,102,32,114,101,108,97,116,105,111,110,32,116,111,97,99,99,111\r
-,109,109,111,100,97,116,101,97,108,111,110,103,32,119,105,116,104,32,73,110,32,\r
-116,104,101,32,108,97,116,101,116,104,101,32,69,110,103,108,105,115,104,100,101,\r
-108,105,99,105,111,117,115,34,62,116,104,105,115,32,105,115,32,110,111,116,116,\r
-104,101,32,112,114,101,115,101,110,116,105,102,32,116,104,101,121,32,97,114,101,\r
-97,110,100,32,102,105,110,97,108,108,121,97,32,109,97,116,116,101,114,32,111,102\r
-,13,10,9,60,47,100,105,118,62,13,10,13,10,60,47,115,99,114,105,112,116,62,102,97\r
-,115,116,101,114,32,116,104,97,110,109,97,106,111,114,105,116,121,32,111,102,97,\r
-102,116,101,114,32,119,104,105,99,104,99,111,109,112,97,114,97,116,105,118,101,\r
-116,111,32,109,97,105,110,116,97,105,110,105,109,112,114,111,118,101,32,116,104,\r
-101,97,119,97,114,100,101,100,32,116,104,101,101,114,34,32,99,108,97,115,115,61,\r
-34,102,114,97,109,101,98,111,114,100,101,114,114,101,115,116,111,114,97,116,105,\r
-111,110,105,110,32,116,104,101,32,115,97,109,101,97,110,97,108,121,115,105,115,\r
-32,111,102,116,104,101,105,114,32,102,105,114,115,116,68,117,114,105,110,103,32,\r
-116,104,101,32,99,111,110,116,105,110,101,110,116,97,108,115,101,113,117,101,110\r
-,99,101,32,111,102,102,117,110,99,116,105,111,110,40,41,123,102,111,110,116,45,\r
-115,105,122,101,58,32,119,111,114,107,32,111,110,32,116,104,101,60,47,115,99,114\r
-,105,112,116,62,10,60,98,101,103,105,110,115,32,119,105,116,104,106,97,118,97,\r
-115,99,114,105,112,116,58,99,111,110,115,116,105,116,117,101,110,116,119,97,115,\r
-32,102,111,117,110,100,101,100,101,113,117,105,108,105,98,114,105,117,109,97,115\r
-,115,117,109,101,32,116,104,97,116,105,115,32,103,105,118,101,110,32,98,121,110,\r
-101,101,100,115,32,116,111,32,98,101,99,111,111,114,100,105,110,97,116,101,115,\r
-116,104,101,32,118,97,114,105,111,117,115,97,114,101,32,112,97,114,116,32,111,\r
-102,111,110,108,121,32,105,110,32,116,104,101,115,101,99,116,105,111,110,115,32,\r
-111,102,105,115,32,97,32,99,111,109,109,111,110,116,104,101,111,114,105,101,115,\r
-32,111,102,100,105,115,99,111,118,101,114,105,101,115,97,115,115,111,99,105,97,\r
-116,105,111,110,101,100,103,101,32,111,102,32,116,104,101,115,116,114,101,110,\r
-103,116,104,32,111,102,112,111,115,105,116,105,111,110,32,105,110,112,114,101,\r
-115,101,110,116,45,100,97,121,117,110,105,118,101,114,115,97,108,108,121,116,111\r
-,32,102,111,114,109,32,116,104,101,98,117,116,32,105,110,115,116,101,97,100,99,\r
-111,114,112,111,114,97,116,105,111,110,97,116,116,97,99,104,101,100,32,116,111,\r
-105,115,32,99,111,109,109,111,110,108,121,114,101,97,115,111,110,115,32,102,111,\r
-114,32,38,113,117,111,116,59,116,104,101,32,99,97,110,32,98,101,32,109,97,100,\r
-101,119,97,115,32,97,98,108,101,32,116,111,119,104,105,99,104,32,109,101,97,110,\r
-115,98,117,116,32,100,105,100,32,110,111,116,111,110,77,111,117,115,101,79,118,\r
-101,114,97,115,32,112,111,115,115,105,98,108,101,111,112,101,114,97,116,101,100,\r
-32,98,121,99,111,109,105,110,103,32,102,114,111,109,116,104,101,32,112,114,105,\r
-109,97,114,121,97,100,100,105,116,105,111,110,32,111,102,102,111,114,32,115,101,\r
-118,101,114,97,108,116,114,97,110,115,102,101,114,114,101,100,97,32,112,101,114,\r
-105,111,100,32,111,102,97,114,101,32,97,98,108,101,32,116,111,104,111,119,101,\r
-118,101,114,44,32,105,116,115,104,111,117,108,100,32,104,97,118,101,109,117,99,\r
-104,32,108,97,114,103,101,114,10,9,60,47,115,99,114,105,112,116,62,97,100,111,\r
-112,116,101,100,32,116,104,101,112,114,111,112,101,114,116,121,32,111,102,100,\r
-105,114,101,99,116,101,100,32,98,121,101,102,102,101,99,116,105,118,101,108,121,\r
-119,97,115,32,98,114,111,117,103,104,116,99,104,105,108,100,114,101,110,32,111,\r
-102,80,114,111,103,114,97,109,109,105,110,103,108,111,110,103,101,114,32,116,104\r
-,97,110,109,97,110,117,115,99,114,105,112,116,115,119,97,114,32,97,103,97,105,\r
-110,115,116,98,121,32,109,101,97,110,115,32,111,102,97,110,100,32,109,111,115,\r
-116,32,111,102,115,105,109,105,108,97,114,32,116,111,32,112,114,111,112,114,105,\r
-101,116,97,114,121,111,114,105,103,105,110,97,116,105,110,103,112,114,101,115,\r
-116,105,103,105,111,117,115,103,114,97,109,109,97,116,105,99,97,108,101,120,112,\r
-101,114,105,101,110,99,101,46,116,111,32,109,97,107,101,32,116,104,101,73,116,32\r
-,119,97,115,32,97,108,115,111,105,115,32,102,111,117,110,100,32,105,110,99,111,\r
-109,112,101,116,105,116,111,114,115,105,110,32,116,104,101,32,85,46,83,46,114,\r
-101,112,108,97,99,101,32,116,104,101,98,114,111,117,103,104,116,32,116,104,101,\r
-99,97,108,99,117,108,97,116,105,111,110,102,97,108,108,32,111,102,32,116,104,101\r
-,116,104,101,32,103,101,110,101,114,97,108,112,114,97,99,116,105,99,97,108,108,\r
-121,105,110,32,104,111,110,111,114,32,111,102,114,101,108,101,97,115,101,100,32,\r
-105,110,114,101,115,105,100,101,110,116,105,97,108,97,110,100,32,115,111,109,101\r
-,32,111,102,107,105,110,103,32,111,102,32,116,104,101,114,101,97,99,116,105,111,\r
-110,32,116,111,49,115,116,32,69,97,114,108,32,111,102,99,117,108,116,117,114,101\r
-,32,97,110,100,112,114,105,110,99,105,112,97,108,108,121,60,47,116,105,116,108,\r
-101,62,10,32,32,116,104,101,121,32,99,97,110,32,98,101,98,97,99,107,32,116,111,\r
-32,116,104,101,115,111,109,101,32,111,102,32,104,105,115,101,120,112,111,115,117\r
-,114,101,32,116,111,97,114,101,32,115,105,109,105,108,97,114,102,111,114,109,32,\r
-111,102,32,116,104,101,97,100,100,70,97,118,111,114,105,116,101,99,105,116,105,\r
-122,101,110,115,104,105,112,112,97,114,116,32,105,110,32,116,104,101,112,101,111\r
-,112,108,101,32,119,105,116,104,105,110,32,112,114,97,99,116,105,99,101,116,111,\r
-32,99,111,110,116,105,110,117,101,38,97,109,112,59,109,105,110,117,115,59,97,112\r
-,112,114,111,118,101,100,32,98,121,32,116,104,101,32,102,105,114,115,116,32,97,\r
-108,108,111,119,101,100,32,116,104,101,97,110,100,32,102,111,114,32,116,104,101,\r
-102,117,110,99,116,105,111,110,105,110,103,112,108,97,121,105,110,103,32,116,104\r
-,101,115,111,108,117,116,105,111,110,32,116,111,104,101,105,103,104,116,61,34,48\r
-,34,32,105,110,32,104,105,115,32,98,111,111,107,109,111,114,101,32,116,104,97,\r
-110,32,97,102,111,108,108,111,119,115,32,116,104,101,99,114,101,97,116,101,100,\r
-32,116,104,101,112,114,101,115,101,110,99,101,32,105,110,38,110,98,115,112,59,60\r
-,47,116,100,62,110,97,116,105,111,110,97,108,105,115,116,116,104,101,32,105,100,\r
-101,97,32,111,102,97,32,99,104,97,114,97,99,116,101,114,119,101,114,101,32,102,\r
-111,114,99,101,100,32,99,108,97,115,115,61,34,98,116,110,100,97,121,115,32,111,\r
-102,32,116,104,101,102,101,97,116,117,114,101,100,32,105,110,115,104,111,119,105\r
-,110,103,32,116,104,101,105,110,116,101,114,101,115,116,32,105,110,105,110,32,\r
-112,108,97,99,101,32,111,102,116,117,114,110,32,111,102,32,116,104,101,116,104,\r
-101,32,104,101,97,100,32,111,102,76,111,114,100,32,111,102,32,116,104,101,112,\r
-111,108,105,116,105,99,97,108,108,121,104,97,115,32,105,116,115,32,111,119,110,\r
-69,100,117,99,97,116,105,111,110,97,108,97,112,112,114,111,118,97,108,32,111,102\r
-,115,111,109,101,32,111,102,32,116,104,101,101,97,99,104,32,111,116,104,101,114,\r
-44,98,101,104,97,118,105,111,114,32,111,102,97,110,100,32,98,101,99,97,117,115,\r
-101,97,110,100,32,97,110,111,116,104,101,114,97,112,112,101,97,114,101,100,32,\r
-111,110,114,101,99,111,114,100,101,100,32,105,110,98,108,97,99,107,38,113,117,\r
-111,116,59,109,97,121,32,105,110,99,108,117,100,101,116,104,101,32,119,111,114,\r
-108,100,39,115,99,97,110,32,108,101,97,100,32,116,111,114,101,102,101,114,115,32\r
-,116,111,32,97,98,111,114,100,101,114,61,34,48,34,32,103,111,118,101,114,110,109\r
-,101,110,116,32,119,105,110,110,105,110,103,32,116,104,101,114,101,115,117,108,\r
-116,101,100,32,105,110,32,119,104,105,108,101,32,116,104,101,32,87,97,115,104,\r
-105,110,103,116,111,110,44,116,104,101,32,115,117,98,106,101,99,116,99,105,116,\r
-121,32,105,110,32,116,104,101,62,60,47,100,105,118,62,13,10,9,9,114,101,102,108,\r
-101,99,116,32,116,104,101,116,111,32,99,111,109,112,108,101,116,101,98,101,99,97\r
-,109,101,32,109,111,114,101,114,97,100,105,111,97,99,116,105,118,101,114,101,106\r
-,101,99,116,101,100,32,98,121,119,105,116,104,111,117,116,32,97,110,121,104,105,\r
-115,32,102,97,116,104,101,114,44,119,104,105,99,104,32,99,111,117,108,100,99,111\r
-,112,121,32,111,102,32,116,104,101,116,111,32,105,110,100,105,99,97,116,101,97,\r
-32,112,111,108,105,116,105,99,97,108,97,99,99,111,117,110,116,115,32,111,102,99,\r
-111,110,115,116,105,116,117,116,101,115,119,111,114,107,101,100,32,119,105,116,\r
-104,101,114,60,47,97,62,60,47,108,105,62,111,102,32,104,105,115,32,108,105,102,\r
-101,97,99,99,111,109,112,97,110,105,101,100,99,108,105,101,110,116,87,105,100,\r
-116,104,112,114,101,118,101,110,116,32,116,104,101,76,101,103,105,115,108,97,116\r
-,105,118,101,100,105,102,102,101,114,101,110,116,108,121,116,111,103,101,116,104\r
-,101,114,32,105,110,104,97,115,32,115,101,118,101,114,97,108,102,111,114,32,97,\r
-110,111,116,104,101,114,116,101,120,116,32,111,102,32,116,104,101,102,111,117,\r
-110,100,101,100,32,116,104,101,101,32,119,105,116,104,32,116,104,101,32,105,115,\r
-32,117,115,101,100,32,102,111,114,99,104,97,110,103,101,100,32,116,104,101,117,\r
-115,117,97,108,108,121,32,116,104,101,112,108,97,99,101,32,119,104,101,114,101,\r
-119,104,101,114,101,97,115,32,116,104,101,62,32,60,97,32,104,114,101,102,61,34,\r
-34,62,60,97,32,104,114,101,102,61,34,116,104,101,109,115,101,108,118,101,115,44,\r
-97,108,116,104,111,117,103,104,32,104,101,116,104,97,116,32,99,97,110,32,98,101,\r
-116,114,97,100,105,116,105,111,110,97,108,114,111,108,101,32,111,102,32,116,104,\r
-101,97,115,32,97,32,114,101,115,117,108,116,114,101,109,111,118,101,67,104,105,\r
-108,100,100,101,115,105,103,110,101,100,32,98,121,119,101,115,116,32,111,102,32,\r
-116,104,101,83,111,109,101,32,112,101,111,112,108,101,112,114,111,100,117,99,116\r
-,105,111,110,44,115,105,100,101,32,111,102,32,116,104,101,110,101,119,115,108,\r
-101,116,116,101,114,115,117,115,101,100,32,98,121,32,116,104,101,100,111,119,110\r
-,32,116,111,32,116,104,101,97,99,99,101,112,116,101,100,32,98,121,108,105,118,\r
-101,32,105,110,32,116,104,101,97,116,116,101,109,112,116,115,32,116,111,111,117,\r
-116,115,105,100,101,32,116,104,101,102,114,101,113,117,101,110,99,105,101,115,72\r
-,111,119,101,118,101,114,44,32,105,110,112,114,111,103,114,97,109,109,101,114,\r
-115,97,116,32,108,101,97,115,116,32,105,110,97,112,112,114,111,120,105,109,97,\r
-116,101,97,108,116,104,111,117,103,104,32,105,116,119,97,115,32,112,97,114,116,\r
-32,111,102,97,110,100,32,118,97,114,105,111,117,115,71,111,118,101,114,110,111,\r
-114,32,111,102,116,104,101,32,97,114,116,105,99,108,101,116,117,114,110,101,100,\r
-32,105,110,116,111,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,101,99,\r
-111,110,111,109,121,105,115,32,116,104,101,32,109,111,115,116,109,111,115,116,32\r
-,119,105,100,101,108,121,119,111,117,108,100,32,108,97,116,101,114,97,110,100,32\r
-,112,101,114,104,97,112,115,114,105,115,101,32,116,111,32,116,104,101,111,99,99,\r
-117,114,115,32,119,104,101,110,117,110,100,101,114,32,119,104,105,99,104,99,111,\r
-110,100,105,116,105,111,110,115,46,116,104,101,32,119,101,115,116,101,114,110,\r
-116,104,101,111,114,121,32,116,104,97,116,105,115,32,112,114,111,100,117,99,101,\r
-100,116,104,101,32,99,105,116,121,32,111,102,105,110,32,119,104,105,99,104,32,\r
-104,101,115,101,101,110,32,105,110,32,116,104,101,116,104,101,32,99,101,110,116,\r
-114,97,108,98,117,105,108,100,105,110,103,32,111,102,109,97,110,121,32,111,102,\r
-32,104,105,115,97,114,101,97,32,111,102,32,116,104,101,105,115,32,116,104,101,32\r
-,111,110,108,121,109,111,115,116,32,111,102,32,116,104,101,109,97,110,121,32,111\r
-,102,32,116,104,101,116,104,101,32,87,101,115,116,101,114,110,84,104,101,114,101\r
-,32,105,115,32,110,111,101,120,116,101,110,100,101,100,32,116,111,83,116,97,116,\r
-105,115,116,105,99,97,108,99,111,108,115,112,97,110,61,50,32,124,115,104,111,114\r
-,116,32,115,116,111,114,121,112,111,115,115,105,98,108,101,32,116,111,116,111,\r
-112,111,108,111,103,105,99,97,108,99,114,105,116,105,99,97,108,32,111,102,114,\r
-101,112,111,114,116,101,100,32,116,111,97,32,67,104,114,105,115,116,105,97,110,\r
-100,101,99,105,115,105,111,110,32,116,111,105,115,32,101,113,117,97,108,32,116,\r
-111,112,114,111,98,108,101,109,115,32,111,102,84,104,105,115,32,99,97,110,32,98,\r
-101,109,101,114,99,104,97,110,100,105,115,101,102,111,114,32,109,111,115,116,32,\r
-111,102,110,111,32,101,118,105,100,101,110,99,101,101,100,105,116,105,111,110,\r
-115,32,111,102,101,108,101,109,101,110,116,115,32,105,110,38,113,117,111,116,59,\r
-46,32,84,104,101,99,111,109,47,105,109,97,103,101,115,47,119,104,105,99,104,32,\r
-109,97,107,101,115,116,104,101,32,112,114,111,99,101,115,115,114,101,109,97,105,\r
-110,115,32,116,104,101,108,105,116,101,114,97,116,117,114,101,44,105,115,32,97,\r
-32,109,101,109,98,101,114,116,104,101,32,112,111,112,117,108,97,114,116,104,101,\r
-32,97,110,99,105,101,110,116,112,114,111,98,108,101,109,115,32,105,110,116,105,\r
-109,101,32,111,102,32,116,104,101,100,101,102,101,97,116,101,100,32,98,121,98,\r
-111,100,121,32,111,102,32,116,104,101,97,32,102,101,119,32,121,101,97,114,115,\r
-109,117,99,104,32,111,102,32,116,104,101,116,104,101,32,119,111,114,107,32,111,\r
-102,67,97,108,105,102,111,114,110,105,97,44,115,101,114,118,101,100,32,97,115,32\r
-,97,103,111,118,101,114,110,109,101,110,116,46,99,111,110,99,101,112,116,115,32,\r
-111,102,109,111,118,101,109,101,110,116,32,105,110,9,9,60,100,105,118,32,105,100\r
-,61,34,105,116,34,32,118,97,108,117,101,61,34,108,97,110,103,117,97,103,101,32,\r
-111,102,97,115,32,116,104,101,121,32,97,114,101,112,114,111,100,117,99,101,100,\r
-32,105,110,105,115,32,116,104,97,116,32,116,104,101,101,120,112,108,97,105,110,\r
-32,116,104,101,100,105,118,62,60,47,100,105,118,62,10,72,111,119,101,118,101,114\r
-,32,116,104,101,108,101,97,100,32,116,111,32,116,104,101,9,60,97,32,104,114,101,\r
-102,61,34,47,119,97,115,32,103,114,97,110,116,101,100,112,101,111,112,108,101,32\r
-,104,97,118,101,99,111,110,116,105,110,117,97,108,108,121,119,97,115,32,115,101,\r
-101,110,32,97,115,97,110,100,32,114,101,108,97,116,101,100,116,104,101,32,114,\r
-111,108,101,32,111,102,112,114,111,112,111,115,101,100,32,98,121,111,102,32,116,\r
-104,101,32,98,101,115,116,101,97,99,104,32,111,116,104,101,114,46,67,111,110,115\r
-,116,97,110,116,105,110,101,112,101,111,112,108,101,32,102,114,111,109,100,105,\r
-97,108,101,99,116,115,32,111,102,116,111,32,114,101,118,105,115,105,111,110,119,\r
-97,115,32,114,101,110,97,109,101,100,97,32,115,111,117,114,99,101,32,111,102,116\r
-,104,101,32,105,110,105,116,105,97,108,108,97,117,110,99,104,101,100,32,105,110,\r
-112,114,111,118,105,100,101,32,116,104,101,116,111,32,116,104,101,32,119,101,115\r
-,116,119,104,101,114,101,32,116,104,101,114,101,97,110,100,32,115,105,109,105,\r
-108,97,114,98,101,116,119,101,101,110,32,116,119,111,105,115,32,97,108,115,111,\r
-32,116,104,101,69,110,103,108,105,115,104,32,97,110,100,99,111,110,100,105,116,\r
-105,111,110,115,44,116,104,97,116,32,105,116,32,119,97,115,101,110,116,105,116,\r
-108,101,100,32,116,111,116,104,101,109,115,101,108,118,101,115,46,113,117,97,110\r
-,116,105,116,121,32,111,102,114,97,110,115,112,97,114,101,110,99,121,116,104,101\r
-,32,115,97,109,101,32,97,115,116,111,32,106,111,105,110,32,116,104,101,99,111,\r
-117,110,116,114,121,32,97,110,100,116,104,105,115,32,105,115,32,116,104,101,84,\r
-104,105,115,32,108,101,100,32,116,111,97,32,115,116,97,116,101,109,101,110,116,\r
-99,111,110,116,114,97,115,116,32,116,111,108,97,115,116,73,110,100,101,120,79,\r
-102,116,104,114,111,117,103,104,32,104,105,115,105,115,32,100,101,115,105,103,\r
-110,101,100,116,104,101,32,116,101,114,109,32,105,115,105,115,32,112,114,111,118\r
-,105,100,101,100,112,114,111,116,101,99,116,32,116,104,101,110,103,60,47,97,62,\r
-60,47,108,105,62,84,104,101,32,99,117,114,114,101,110,116,116,104,101,32,115,105\r
-,116,101,32,111,102,115,117,98,115,116,97,110,116,105,97,108,101,120,112,101,114\r
-,105,101,110,99,101,44,105,110,32,116,104,101,32,87,101,115,116,116,104,101,121,\r
-32,115,104,111,117,108,100,115,108,111,118,101,110,196,141,105,110,97,99,111,109\r
-,101,110,116,97,114,105,111,115,117,110,105,118,101,114,115,105,100,97,100,99,\r
-111,110,100,105,99,105,111,110,101,115,97,99,116,105,118,105,100,97,100,101,115,\r
-101,120,112,101,114,105,101,110,99,105,97,116,101,99,110,111,108,111,103,195,173\r
-,97,112,114,111,100,117,99,99,105,195,179,110,112,117,110,116,117,97,99,105,195,\r
-179,110,97,112,108,105,99,97,99,105,195,179,110,99,111,110,116,114,97,115,101,\r
-195,177,97,99,97,116,101,103,111,114,195,173,97,115,114,101,103,105,115,116,114,\r
-97,114,115,101,112,114,111,102,101,115,105,111,110,97,108,116,114,97,116,97,109,\r
-105,101,110,116,111,114,101,103,195,173,115,116,114,97,116,101,115,101,99,114,\r
-101,116,97,114,195,173,97,112,114,105,110,99,105,112,97,108,101,115,112,114,111,\r
-116,101,99,99,105,195,179,110,105,109,112,111,114,116,97,110,116,101,115,105,109\r
-,112,111,114,116,97,110,99,105,97,112,111,115,105,98,105,108,105,100,97,100,105,\r
-110,116,101,114,101,115,97,110,116,101,99,114,101,99,105,109,105,101,110,116,111\r
-,110,101,99,101,115,105,100,97,100,101,115,115,117,115,99,114,105,98,105,114,115\r
-,101,97,115,111,99,105,97,99,105,195,179,110,100,105,115,112,111,110,105,98,108,\r
-101,115,101,118,97,108,117,97,99,105,195,179,110,101,115,116,117,100,105,97,110,\r
-116,101,115,114,101,115,112,111,110,115,97,98,108,101,114,101,115,111,108,117,99\r
-,105,195,179,110,103,117,97,100,97,108,97,106,97,114,97,114,101,103,105,115,116,\r
-114,97,100,111,115,111,112,111,114,116,117,110,105,100,97,100,99,111,109,101,114\r
-,99,105,97,108,101,115,102,111,116,111,103,114,97,102,195,173,97,97,117,116,111,\r
-114,105,100,97,100,101,115,105,110,103,101,110,105,101,114,195,173,97,116,101,\r
-108,101,118,105,115,105,195,179,110,99,111,109,112,101,116,101,110,99,105,97,111\r
-,112,101,114,97,99,105,111,110,101,115,101,115,116,97,98,108,101,99,105,100,111,\r
-115,105,109,112,108,101,109,101,110,116,101,97,99,116,117,97,108,109,101,110,116\r
-,101,110,97,118,101,103,97,99,105,195,179,110,99,111,110,102,111,114,109,105,100\r
-,97,100,108,105,110,101,45,104,101,105,103,104,116,58,102,111,110,116,45,102,97,\r
-109,105,108,121,58,34,32,58,32,34,104,116,116,112,58,47,47,97,112,112,108,105,99\r
-,97,116,105,111,110,115,108,105,110,107,34,32,104,114,101,102,61,34,115,112,101,\r
-99,105,102,105,99,97,108,108,121,47,47,60,33,91,67,68,65,84,65,91,10,79,114,103,\r
-97,110,105,122,97,116,105,111,110,100,105,115,116,114,105,98,117,116,105,111,110\r
-,48,112,120,59,32,104,101,105,103,104,116,58,114,101,108,97,116,105,111,110,115,\r
-104,105,112,100,101,118,105,99,101,45,119,105,100,116,104,60,100,105,118,32,99,\r
-108,97,115,115,61,34,60,108,97,98,101,108,32,102,111,114,61,34,114,101,103,105,\r
-115,116,114,97,116,105,111,110,60,47,110,111,115,99,114,105,112,116,62,10,47,105\r
-,110,100,101,120,46,104,116,109,108,34,119,105,110,100,111,119,46,111,112,101,\r
-110,40,32,33,105,109,112,111,114,116,97,110,116,59,97,112,112,108,105,99,97,116,\r
-105,111,110,47,105,110,100,101,112,101,110,100,101,110,99,101,47,47,119,119,119,\r
-46,103,111,111,103,108,101,111,114,103,97,110,105,122,97,116,105,111,110,97,117,\r
-116,111,99,111,109,112,108,101,116,101,114,101,113,117,105,114,101,109,101,110,\r
-116,115,99,111,110,115,101,114,118,97,116,105,118,101,60,102,111,114,109,32,110,\r
-97,109,101,61,34,105,110,116,101,108,108,101,99,116,117,97,108,109,97,114,103,\r
-105,110,45,108,101,102,116,58,49,56,116,104,32,99,101,110,116,117,114,121,97,110\r
-,32,105,109,112,111,114,116,97,110,116,105,110,115,116,105,116,117,116,105,111,\r
-110,115,97,98,98,114,101,118,105,97,116,105,111,110,60,105,109,103,32,99,108,97,\r
-115,115,61,34,111,114,103,97,110,105,115,97,116,105,111,110,99,105,118,105,108,\r
-105,122,97,116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,97,114,99\r
-,104,105,116,101,99,116,117,114,101,105,110,99,111,114,112,111,114,97,116,101,\r
-100,50,48,116,104,32,99,101,110,116,117,114,121,45,99,111,110,116,97,105,110,101\r
-,114,34,62,109,111,115,116,32,110,111,116,97,98,108,121,47,62,60,47,97,62,60,47,\r
-100,105,118,62,110,111,116,105,102,105,99,97,116,105,111,110,39,117,110,100,101,\r
-102,105,110,101,100,39,41,70,117,114,116,104,101,114,109,111,114,101,44,98,101,\r
-108,105,101,118,101,32,116,104,97,116,105,110,110,101,114,72,84,77,76,32,61,32,\r
-112,114,105,111,114,32,116,111,32,116,104,101,100,114,97,109,97,116,105,99,97,\r
-108,108,121,114,101,102,101,114,114,105,110,103,32,116,111,110,101,103,111,116,\r
-105,97,116,105,111,110,115,104,101,97,100,113,117,97,114,116,101,114,115,83,111,\r
-117,116,104,32,65,102,114,105,99,97,117,110,115,117,99,99,101,115,115,102,117,\r
-108,80,101,110,110,115,121,108,118,97,110,105,97,65,115,32,97,32,114,101,115,117\r
-,108,116,44,60,104,116,109,108,32,108,97,110,103,61,34,38,108,116,59,47,115,117,\r
-112,38,103,116,59,100,101,97,108,105,110,103,32,119,105,116,104,112,104,105,108,\r
-97,100,101,108,112,104,105,97,104,105,115,116,111,114,105,99,97,108,108,121,41,\r
-59,60,47,115,99,114,105,112,116,62,10,112,97,100,100,105,110,103,45,116,111,112,\r
-58,101,120,112,101,114,105,109,101,110,116,97,108,103,101,116,65,116,116,114,105\r
-,98,117,116,101,105,110,115,116,114,117,99,116,105,111,110,115,116,101,99,104,\r
-110,111,108,111,103,105,101,115,112,97,114,116,32,111,102,32,116,104,101,32,61,\r
-102,117,110,99,116,105,111,110,40,41,123,115,117,98,115,99,114,105,112,116,105,\r
-111,110,108,46,100,116,100,34,62,13,10,60,104,116,103,101,111,103,114,97,112,104\r
-,105,99,97,108,67,111,110,115,116,105,116,117,116,105,111,110,39,44,32,102,117,\r
-110,99,116,105,111,110,40,115,117,112,112,111,114,116,101,100,32,98,121,97,103,\r
-114,105,99,117,108,116,117,114,97,108,99,111,110,115,116,114,117,99,116,105,111,\r
-110,112,117,98,108,105,99,97,116,105,111,110,115,102,111,110,116,45,115,105,122,\r
-101,58,32,49,97,32,118,97,114,105,101,116,121,32,111,102,60,100,105,118,32,115,\r
-116,121,108,101,61,34,69,110,99,121,99,108,111,112,101,100,105,97,105,102,114,97\r
-,109,101,32,115,114,99,61,34,100,101,109,111,110,115,116,114,97,116,101,100,97,\r
-99,99,111,109,112,108,105,115,104,101,100,117,110,105,118,101,114,115,105,116,\r
-105,101,115,68,101,109,111,103,114,97,112,104,105,99,115,41,59,60,47,115,99,114,\r
-105,112,116,62,60,100,101,100,105,99,97,116,101,100,32,116,111,107,110,111,119,\r
-108,101,100,103,101,32,111,102,115,97,116,105,115,102,97,99,116,105,111,110,112,\r
-97,114,116,105,99,117,108,97,114,108,121,60,47,100,105,118,62,60,47,100,105,118,\r
-62,69,110,103,108,105,115,104,32,40,85,83,41,97,112,112,101,110,100,67,104,105,\r
-108,100,40,116,114,97,110,115,109,105,115,115,105,111,110,115,46,32,72,111,119,\r
-101,118,101,114,44,32,105,110,116,101,108,108,105,103,101,110,99,101,34,32,116,\r
-97,98,105,110,100,101,120,61,34,102,108,111,97,116,58,114,105,103,104,116,59,67,\r
-111,109,109,111,110,119,101,97,108,116,104,114,97,110,103,105,110,103,32,102,114\r
-,111,109,105,110,32,119,104,105,99,104,32,116,104,101,97,116,32,108,101,97,115,\r
-116,32,111,110,101,114,101,112,114,111,100,117,99,116,105,111,110,101,110,99,121\r
-,99,108,111,112,101,100,105,97,59,102,111,110,116,45,115,105,122,101,58,49,106,\r
-117,114,105,115,100,105,99,116,105,111,110,97,116,32,116,104,97,116,32,116,105,\r
-109,101,34,62,60,97,32,99,108,97,115,115,61,34,73,110,32,97,100,100,105,116,105,\r
-111,110,44,100,101,115,99,114,105,112,116,105,111,110,43,99,111,110,118,101,114,\r
-115,97,116,105,111,110,99,111,110,116,97,99,116,32,119,105,116,104,105,115,32,\r
-103,101,110,101,114,97,108,108,121,114,34,32,99,111,110,116,101,110,116,61,34,\r
-114,101,112,114,101,115,101,110,116,105,110,103,38,108,116,59,109,97,116,104,38,\r
-103,116,59,112,114,101,115,101,110,116,97,116,105,111,110,111,99,99,97,115,105,\r
-111,110,97,108,108,121,60,105,109,103,32,119,105,100,116,104,61,34,110,97,118,\r
-105,103,97,116,105,111,110,34,62,99,111,109,112,101,110,115,97,116,105,111,110,\r
-99,104,97,109,112,105,111,110,115,104,105,112,109,101,100,105,97,61,34,97,108,\r
-108,34,32,118,105,111,108,97,116,105,111,110,32,111,102,114,101,102,101,114,101,\r
-110,99,101,32,116,111,114,101,116,117,114,110,32,116,114,117,101,59,83,116,114,\r
-105,99,116,47,47,69,78,34,32,116,114,97,110,115,97,99,116,105,111,110,115,105,\r
-110,116,101,114,118,101,110,116,105,111,110,118,101,114,105,102,105,99,97,116,\r
-105,111,110,73,110,102,111,114,109,97,116,105,111,110,32,100,105,102,102,105,99,\r
-117,108,116,105,101,115,67,104,97,109,112,105,111,110,115,104,105,112,99,97,112,\r
-97,98,105,108,105,116,105,101,115,60,33,91,101,110,100,105,102,93,45,45,62,125,\r
-10,60,47,115,99,114,105,112,116,62,10,67,104,114,105,115,116,105,97,110,105,116,\r
-121,102,111,114,32,101,120,97,109,112,108,101,44,80,114,111,102,101,115,115,105,\r
-111,110,97,108,114,101,115,116,114,105,99,116,105,111,110,115,115,117,103,103,\r
-101,115,116,32,116,104,97,116,119,97,115,32,114,101,108,101,97,115,101,100,40,\r
-115,117,99,104,32,97,115,32,116,104,101,114,101,109,111,118,101,67,108,97,115,\r
-115,40,117,110,101,109,112,108,111,121,109,101,110,116,116,104,101,32,65,109,101\r
-,114,105,99,97,110,115,116,114,117,99,116,117,114,101,32,111,102,47,105,110,100,\r
-101,120,46,104,116,109,108,32,112,117,98,108,105,115,104,101,100,32,105,110,115,\r
-112,97,110,32,99,108,97,115,115,61,34,34,62,60,97,32,104,114,101,102,61,34,47,\r
-105,110,116,114,111,100,117,99,116,105,111,110,98,101,108,111,110,103,105,110,\r
-103,32,116,111,99,108,97,105,109,101,100,32,116,104,97,116,99,111,110,115,101,\r
-113,117,101,110,99,101,115,60,109,101,116,97,32,110,97,109,101,61,34,71,117,105,\r
-100,101,32,116,111,32,116,104,101,111,118,101,114,119,104,101,108,109,105,110,\r
-103,97,103,97,105,110,115,116,32,116,104,101,32,99,111,110,99,101,110,116,114,97\r
-,116,101,100,44,10,46,110,111,110,116,111,117,99,104,32,111,98,115,101,114,118,\r
-97,116,105,111,110,115,60,47,97,62,10,60,47,100,105,118,62,10,102,32,40,100,111,\r
-99,117,109,101,110,116,46,98,111,114,100,101,114,58,32,49,112,120,32,123,102,111\r
-,110,116,45,115,105,122,101,58,49,116,114,101,97,116,109,101,110,116,32,111,102,\r
-48,34,32,104,101,105,103,104,116,61,34,49,109,111,100,105,102,105,99,97,116,105,\r
-111,110,73,110,100,101,112,101,110,100,101,110,99,101,100,105,118,105,100,101,\r
-100,32,105,110,116,111,103,114,101,97,116,101,114,32,116,104,97,110,97,99,104,\r
-105,101,118,101,109,101,110,116,115,101,115,116,97,98,108,105,115,104,105,110,\r
-103,74,97,118,97,83,99,114,105,112,116,34,32,110,101,118,101,114,116,104,101,108\r
-,101,115,115,115,105,103,110,105,102,105,99,97,110,99,101,66,114,111,97,100,99,\r
-97,115,116,105,110,103,62,38,110,98,115,112,59,60,47,116,100,62,99,111,110,116,\r
-97,105,110,101,114,34,62,10,115,117,99,104,32,97,115,32,116,104,101,32,105,110,\r
-102,108,117,101,110,99,101,32,111,102,97,32,112,97,114,116,105,99,117,108,97,114\r
-,115,114,99,61,39,104,116,116,112,58,47,47,110,97,118,105,103,97,116,105,111,110\r
-,34,32,104,97,108,102,32,111,102,32,116,104,101,32,115,117,98,115,116,97,110,116\r
-,105,97,108,32,38,110,98,115,112,59,60,47,100,105,118,62,97,100,118,97,110,116,\r
-97,103,101,32,111,102,100,105,115,99,111,118,101,114,121,32,111,102,102,117,110,\r
-100,97,109,101,110,116,97,108,32,109,101,116,114,111,112,111,108,105,116,97,110,\r
-116,104,101,32,111,112,112,111,115,105,116,101,34,32,120,109,108,58,108,97,110,\r
-103,61,34,100,101,108,105,98,101,114,97,116,101,108,121,97,108,105,103,110,61,99\r
-,101,110,116,101,114,101,118,111,108,117,116,105,111,110,32,111,102,112,114,101,\r
-115,101,114,118,97,116,105,111,110,105,109,112,114,111,118,101,109,101,110,116,\r
-115,98,101,103,105,110,110,105,110,103,32,105,110,74,101,115,117,115,32,67,104,\r
-114,105,115,116,80,117,98,108,105,99,97,116,105,111,110,115,100,105,115,97,103,\r
-114,101,101,109,101,110,116,116,101,120,116,45,97,108,105,103,110,58,114,44,32,\r
-102,117,110,99,116,105,111,110,40,41,115,105,109,105,108,97,114,105,116,105,101,\r
-115,98,111,100,121,62,60,47,104,116,109,108,62,105,115,32,99,117,114,114,101,110\r
-,116,108,121,97,108,112,104,97,98,101,116,105,99,97,108,105,115,32,115,111,109,\r
-101,116,105,109,101,115,116,121,112,101,61,34,105,109,97,103,101,47,109,97,110,\r
-121,32,111,102,32,116,104,101,32,102,108,111,119,58,104,105,100,100,101,110,59,\r
-97,118,97,105,108,97,98,108,101,32,105,110,100,101,115,99,114,105,98,101,32,116,\r
-104,101,101,120,105,115,116,101,110,99,101,32,111,102,97,108,108,32,111,118,101,\r
-114,32,116,104,101,116,104,101,32,73,110,116,101,114,110,101,116,9,60,117,108,32\r
-,99,108,97,115,115,61,34,105,110,115,116,97,108,108,97,116,105,111,110,110,101,\r
-105,103,104,98,111,114,104,111,111,100,97,114,109,101,100,32,102,111,114,99,101,\r
-115,114,101,100,117,99,105,110,103,32,116,104,101,99,111,110,116,105,110,117,101\r
-,115,32,116,111,78,111,110,101,116,104,101,108,101,115,115,44,116,101,109,112,\r
-101,114,97,116,117,114,101,115,10,9,9,60,97,32,104,114,101,102,61,34,99,108,111,\r
-115,101,32,116,111,32,116,104,101,101,120,97,109,112,108,101,115,32,111,102,32,\r
-105,115,32,97,98,111,117,116,32,116,104,101,40,115,101,101,32,98,101,108,111,119\r
-,41,46,34,32,105,100,61,34,115,101,97,114,99,104,112,114,111,102,101,115,115,105\r
-,111,110,97,108,105,115,32,97,118,97,105,108,97,98,108,101,116,104,101,32,111,\r
-102,102,105,99,105,97,108,9,9,60,47,115,99,114,105,112,116,62,10,10,9,9,60,100,\r
-105,118,32,105,100,61,34,97,99,99,101,108,101,114,97,116,105,111,110,116,104,114\r
-,111,117,103,104,32,116,104,101,32,72,97,108,108,32,111,102,32,70,97,109,101,100\r
-,101,115,99,114,105,112,116,105,111,110,115,116,114,97,110,115,108,97,116,105,\r
-111,110,115,105,110,116,101,114,102,101,114,101,110,99,101,32,116,121,112,101,61\r
-,39,116,101,120,116,47,114,101,99,101,110,116,32,121,101,97,114,115,105,110,32,\r
-116,104,101,32,119,111,114,108,100,118,101,114,121,32,112,111,112,117,108,97,114\r
-,123,98,97,99,107,103,114,111,117,110,100,58,116,114,97,100,105,116,105,111,110,\r
-97,108,32,115,111,109,101,32,111,102,32,116,104,101,32,99,111,110,110,101,99,116\r
-,101,100,32,116,111,101,120,112,108,111,105,116,97,116,105,111,110,101,109,101,\r
-114,103,101,110,99,101,32,111,102,99,111,110,115,116,105,116,117,116,105,111,110\r
-,65,32,72,105,115,116,111,114,121,32,111,102,115,105,103,110,105,102,105,99,97,\r
-110,116,32,109,97,110,117,102,97,99,116,117,114,101,100,101,120,112,101,99,116,\r
-97,116,105,111,110,115,62,60,110,111,115,99,114,105,112,116,62,60,99,97,110,32,\r
-98,101,32,102,111,117,110,100,98,101,99,97,117,115,101,32,116,104,101,32,104,97,\r
-115,32,110,111,116,32,98,101,101,110,110,101,105,103,104,98,111,117,114,105,110,\r
-103,119,105,116,104,111,117,116,32,116,104,101,32,97,100,100,101,100,32,116,111,\r
-32,116,104,101,9,60,108,105,32,99,108,97,115,115,61,34,105,110,115,116,114,117,\r
-109,101,110,116,97,108,83,111,118,105,101,116,32,85,110,105,111,110,97,99,107,\r
-110,111,119,108,101,100,103,101,100,119,104,105,99,104,32,99,97,110,32,98,101,\r
-110,97,109,101,32,102,111,114,32,116,104,101,97,116,116,101,110,116,105,111,110,\r
-32,116,111,97,116,116,101,109,112,116,115,32,116,111,32,100,101,118,101,108,111,\r
-112,109,101,110,116,115,73,110,32,102,97,99,116,44,32,116,104,101,60,108,105,32,\r
-99,108,97,115,115,61,34,97,105,109,112,108,105,99,97,116,105,111,110,115,115,117\r
-,105,116,97,98,108,101,32,102,111,114,109,117,99,104,32,111,102,32,116,104,101,\r
-32,99,111,108,111,110,105,122,97,116,105,111,110,112,114,101,115,105,100,101,110\r
-,116,105,97,108,99,97,110,99,101,108,66,117,98,98,108,101,32,73,110,102,111,114,\r
-109,97,116,105,111,110,109,111,115,116,32,111,102,32,116,104,101,32,105,115,32,\r
-100,101,115,99,114,105,98,101,100,114,101,115,116,32,111,102,32,116,104,101,32,\r
-109,111,114,101,32,111,114,32,108,101,115,115,105,110,32,83,101,112,116,101,109,\r
-98,101,114,73,110,116,101,108,108,105,103,101,110,99,101,115,114,99,61,34,104,\r
-116,116,112,58,47,47,112,120,59,32,104,101,105,103,104,116,58,32,97,118,97,105,\r
-108,97,98,108,101,32,116,111,109,97,110,117,102,97,99,116,117,114,101,114,104,\r
-117,109,97,110,32,114,105,103,104,116,115,108,105,110,107,32,104,114,101,102,61,\r
-34,47,97,118,97,105,108,97,98,105,108,105,116,121,112,114,111,112,111,114,116,\r
-105,111,110,97,108,111,117,116,115,105,100,101,32,116,104,101,32,97,115,116,114,\r
-111,110,111,109,105,99,97,108,104,117,109,97,110,32,98,101,105,110,103,115,110,\r
-97,109,101,32,111,102,32,116,104,101,32,97,114,101,32,102,111,117,110,100,32,105\r
-,110,97,114,101,32,98,97,115,101,100,32,111,110,115,109,97,108,108,101,114,32,\r
-116,104,97,110,97,32,112,101,114,115,111,110,32,119,104,111,101,120,112,97,110,\r
-115,105,111,110,32,111,102,97,114,103,117,105,110,103,32,116,104,97,116,110,111,\r
-119,32,107,110,111,119,110,32,97,115,73,110,32,116,104,101,32,101,97,114,108,121\r
-,105,110,116,101,114,109,101,100,105,97,116,101,100,101,114,105,118,101,100,32,\r
-102,114,111,109,83,99,97,110,100,105,110,97,118,105,97,110,60,47,97,62,60,47,100\r
-,105,118,62,13,10,99,111,110,115,105,100,101,114,32,116,104,101,97,110,32,101,\r
-115,116,105,109,97,116,101,100,116,104,101,32,78,97,116,105,111,110,97,108,60,\r
-100,105,118,32,105,100,61,34,112,97,103,114,101,115,117,108,116,105,110,103,32,\r
-105,110,99,111,109,109,105,115,115,105,111,110,101,100,97,110,97,108,111,103,111\r
-,117,115,32,116,111,97,114,101,32,114,101,113,117,105,114,101,100,47,117,108,62,\r
-10,60,47,100,105,118,62,10,119,97,115,32,98,97,115,101,100,32,111,110,97,110,100\r
-,32,98,101,99,97,109,101,32,97,38,110,98,115,112,59,38,110,98,115,112,59,116,34,\r
-32,118,97,108,117,101,61,34,34,32,119,97,115,32,99,97,112,116,117,114,101,100,\r
-110,111,32,109,111,114,101,32,116,104,97,110,114,101,115,112,101,99,116,105,118,\r
-101,108,121,99,111,110,116,105,110,117,101,32,116,111,32,62,13,10,60,104,101,97,\r
-100,62,13,10,60,119,101,114,101,32,99,114,101,97,116,101,100,109,111,114,101,32,\r
-103,101,110,101,114,97,108,105,110,102,111,114,109,97,116,105,111,110,32,117,115\r
-,101,100,32,102,111,114,32,116,104,101,105,110,100,101,112,101,110,100,101,110,\r
-116,32,116,104,101,32,73,109,112,101,114,105,97,108,99,111,109,112,111,110,101,\r
-110,116,32,111,102,116,111,32,116,104,101,32,110,111,114,116,104,105,110,99,108,\r
-117,100,101,32,116,104,101,32,67,111,110,115,116,114,117,99,116,105,111,110,115,\r
-105,100,101,32,111,102,32,116,104,101,32,119,111,117,108,100,32,110,111,116,32,\r
-98,101,102,111,114,32,105,110,115,116,97,110,99,101,105,110,118,101,110,116,105,\r
-111,110,32,111,102,109,111,114,101,32,99,111,109,112,108,101,120,99,111,108,108,\r
-101,99,116,105,118,101,108,121,98,97,99,107,103,114,111,117,110,100,58,32,116,\r
-101,120,116,45,97,108,105,103,110,58,32,105,116,115,32,111,114,105,103,105,110,\r
-97,108,105,110,116,111,32,97,99,99,111,117,110,116,116,104,105,115,32,112,114,\r
-111,99,101,115,115,97,110,32,101,120,116,101,110,115,105,118,101,104,111,119,101\r
-,118,101,114,44,32,116,104,101,116,104,101,121,32,97,114,101,32,110,111,116,114,\r
-101,106,101,99,116,101,100,32,116,104,101,99,114,105,116,105,99,105,115,109,32,\r
-111,102,100,117,114,105,110,103,32,119,104,105,99,104,112,114,111,98,97,98,108,\r
-121,32,116,104,101,116,104,105,115,32,97,114,116,105,99,108,101,40,102,117,110,\r
-99,116,105,111,110,40,41,123,73,116,32,115,104,111,117,108,100,32,98,101,97,110,\r
-32,97,103,114,101,101,109,101,110,116,97,99,99,105,100,101,110,116,97,108,108,\r
-121,100,105,102,102,101,114,115,32,102,114,111,109,65,114,99,104,105,116,101,99,\r
-116,117,114,101,98,101,116,116,101,114,32,107,110,111,119,110,97,114,114,97,110,\r
-103,101,109,101,110,116,115,105,110,102,108,117,101,110,99,101,32,111,110,97,116\r
-,116,101,110,100,101,100,32,116,104,101,105,100,101,110,116,105,99,97,108,32,116\r
-,111,115,111,117,116,104,32,111,102,32,116,104,101,112,97,115,115,32,116,104,114\r
-,111,117,103,104,120,109,108,34,32,116,105,116,108,101,61,34,119,101,105,103,104\r
-,116,58,98,111,108,100,59,99,114,101,97,116,105,110,103,32,116,104,101,100,105,\r
-115,112,108,97,121,58,110,111,110,101,114,101,112,108,97,99,101,100,32,116,104,\r
-101,60,105,109,103,32,115,114,99,61,34,47,105,104,116,116,112,115,58,47,47,119,\r
-119,119,46,87,111,114,108,100,32,87,97,114,32,73,73,116,101,115,116,105,109,111,\r
-110,105,97,108,115,102,111,117,110,100,32,105,110,32,116,104,101,114,101,113,117\r
-,105,114,101,100,32,116,111,32,97,110,100,32,116,104,97,116,32,116,104,101,98,\r
-101,116,119,101,101,110,32,116,104,101,32,119,97,115,32,100,101,115,105,103,110,\r
-101,100,99,111,110,115,105,115,116,115,32,111,102,32,99,111,110,115,105,100,101,\r
-114,97,98,108,121,112,117,98,108,105,115,104,101,100,32,98,121,116,104,101,32,\r
-108,97,110,103,117,97,103,101,67,111,110,115,101,114,118,97,116,105,111,110,99,\r
-111,110,115,105,115,116,101,100,32,111,102,114,101,102,101,114,32,116,111,32,116\r
-,104,101,98,97,99,107,32,116,111,32,116,104,101,32,99,115,115,34,32,109,101,100,\r
-105,97,61,34,80,101,111,112,108,101,32,102,114,111,109,32,97,118,97,105,108,97,\r
-98,108,101,32,111,110,112,114,111,118,101,100,32,116,111,32,98,101,115,117,103,\r
-103,101,115,116,105,111,110,115,34,119,97,115,32,107,110,111,119,110,32,97,115,\r
-118,97,114,105,101,116,105,101,115,32,111,102,108,105,107,101,108,121,32,116,111\r
-,32,98,101,99,111,109,112,114,105,115,101,100,32,111,102,115,117,112,112,111,114\r
-,116,32,116,104,101,32,104,97,110,100,115,32,111,102,32,116,104,101,99,111,117,\r
-112,108,101,100,32,119,105,116,104,99,111,110,110,101,99,116,32,97,110,100,32,98\r
-,111,114,100,101,114,58,110,111,110,101,59,112,101,114,102,111,114,109,97,110,99\r
-,101,115,98,101,102,111,114,101,32,98,101,105,110,103,108,97,116,101,114,32,98,\r
-101,99,97,109,101,99,97,108,99,117,108,97,116,105,111,110,115,111,102,116,101,\r
-110,32,99,97,108,108,101,100,114,101,115,105,100,101,110,116,115,32,111,102,109,\r
-101,97,110,105,110,103,32,116,104,97,116,62,60,108,105,32,99,108,97,115,115,61,\r
-34,101,118,105,100,101,110,99,101,32,102,111,114,101,120,112,108,97,110,97,116,\r
-105,111,110,115,101,110,118,105,114,111,110,109,101,110,116,115,34,62,60,47,97,\r
-62,60,47,100,105,118,62,119,104,105,99,104,32,97,108,108,111,119,115,73,110,116,\r
-114,111,100,117,99,116,105,111,110,100,101,118,101,108,111,112,101,100,32,98,121\r
-,97,32,119,105,100,101,32,114,97,110,103,101,111,110,32,98,101,104,97,108,102,32\r
-,111,102,118,97,108,105,103,110,61,34,116,111,112,34,112,114,105,110,99,105,112,\r
-108,101,32,111,102,97,116,32,116,104,101,32,116,105,109,101,44,60,47,110,111,115\r
-,99,114,105,112,116,62,13,115,97,105,100,32,116,111,32,104,97,118,101,105,110,32\r
-,116,104,101,32,102,105,114,115,116,119,104,105,108,101,32,111,116,104,101,114,\r
-115,104,121,112,111,116,104,101,116,105,99,97,108,112,104,105,108,111,115,111,\r
-112,104,101,114,115,112,111,119,101,114,32,111,102,32,116,104,101,99,111,110,116\r
-,97,105,110,101,100,32,105,110,112,101,114,102,111,114,109,101,100,32,98,121,105\r
-,110,97,98,105,108,105,116,121,32,116,111,119,101,114,101,32,119,114,105,116,116\r
-,101,110,115,112,97,110,32,115,116,121,108,101,61,34,105,110,112,117,116,32,110,\r
-97,109,101,61,34,116,104,101,32,113,117,101,115,116,105,111,110,105,110,116,101,\r
-110,100,101,100,32,102,111,114,114,101,106,101,99,116,105,111,110,32,111,102,105\r
-,109,112,108,105,101,115,32,116,104,97,116,105,110,118,101,110,116,101,100,32,\r
-116,104,101,116,104,101,32,115,116,97,110,100,97,114,100,119,97,115,32,112,114,\r
-111,98,97,98,108,121,108,105,110,107,32,98,101,116,119,101,101,110,112,114,111,\r
-102,101,115,115,111,114,32,111,102,105,110,116,101,114,97,99,116,105,111,110,115\r
-,99,104,97,110,103,105,110,103,32,116,104,101,73,110,100,105,97,110,32,79,99,101\r
-,97,110,32,99,108,97,115,115,61,34,108,97,115,116,119,111,114,107,105,110,103,32\r
-,119,105,116,104,39,104,116,116,112,58,47,47,119,119,119,46,121,101,97,114,115,\r
-32,98,101,102,111,114,101,84,104,105,115,32,119,97,115,32,116,104,101,114,101,99\r
-,114,101,97,116,105,111,110,97,108,101,110,116,101,114,105,110,103,32,116,104,\r
-101,109,101,97,115,117,114,101,109,101,110,116,115,97,110,32,101,120,116,114,101\r
-,109,101,108,121,118,97,108,117,101,32,111,102,32,116,104,101,115,116,97,114,116\r
-,32,111,102,32,116,104,101,10,60,47,115,99,114,105,112,116,62,10,10,97,110,32,\r
-101,102,102,111,114,116,32,116,111,105,110,99,114,101,97,115,101,32,116,104,101,\r
-116,111,32,116,104,101,32,115,111,117,116,104,115,112,97,99,105,110,103,61,34,48\r
-,34,62,115,117,102,102,105,99,105,101,110,116,108,121,116,104,101,32,69,117,114,\r
-111,112,101,97,110,99,111,110,118,101,114,116,101,100,32,116,111,99,108,101,97,\r
-114,84,105,109,101,111,117,116,100,105,100,32,110,111,116,32,104,97,118,101,99,\r
-111,110,115,101,113,117,101,110,116,108,121,102,111,114,32,116,104,101,32,110,\r
-101,120,116,101,120,116,101,110,115,105,111,110,32,111,102,101,99,111,110,111,\r
-109,105,99,32,97,110,100,97,108,116,104,111,117,103,104,32,116,104,101,97,114,\r
-101,32,112,114,111,100,117,99,101,100,97,110,100,32,119,105,116,104,32,116,104,\r
-101,105,110,115,117,102,102,105,99,105,101,110,116,103,105,118,101,110,32,98,121\r
-,32,116,104,101,115,116,97,116,105,110,103,32,116,104,97,116,101,120,112,101,110\r
-,100,105,116,117,114,101,115,60,47,115,112,97,110,62,60,47,97,62,10,116,104,111,\r
-117,103,104,116,32,116,104,97,116,111,110,32,116,104,101,32,98,97,115,105,115,99\r
-,101,108,108,112,97,100,100,105,110,103,61,105,109,97,103,101,32,111,102,32,116,\r
-104,101,114,101,116,117,114,110,105,110,103,32,116,111,105,110,102,111,114,109,\r
-97,116,105,111,110,44,115,101,112,97,114,97,116,101,100,32,98,121,97,115,115,97,\r
-115,115,105,110,97,116,101,100,115,34,32,99,111,110,116,101,110,116,61,34,97,117\r
-,116,104,111,114,105,116,121,32,111,102,110,111,114,116,104,119,101,115,116,101,\r
-114,110,60,47,100,105,118,62,10,60,100,105,118,32,34,62,60,47,100,105,118,62,13,\r
-10,32,32,99,111,110,115,117,108,116,97,116,105,111,110,99,111,109,109,117,110,\r
-105,116,121,32,111,102,116,104,101,32,110,97,116,105,111,110,97,108,105,116,32,\r
-115,104,111,117,108,100,32,98,101,112,97,114,116,105,99,105,112,97,110,116,115,\r
-32,97,108,105,103,110,61,34,108,101,102,116,116,104,101,32,103,114,101,97,116,\r
-101,115,116,115,101,108,101,99,116,105,111,110,32,111,102,115,117,112,101,114,\r
-110,97,116,117,114,97,108,100,101,112,101,110,100,101,110,116,32,111,110,105,115\r
-,32,109,101,110,116,105,111,110,101,100,97,108,108,111,119,105,110,103,32,116,\r
-104,101,119,97,115,32,105,110,118,101,110,116,101,100,97,99,99,111,109,112,97,\r
-110,121,105,110,103,104,105,115,32,112,101,114,115,111,110,97,108,97,118,97,105,\r
-108,97,98,108,101,32,97,116,115,116,117,100,121,32,111,102,32,116,104,101,111,\r
-110,32,116,104,101,32,111,116,104,101,114,101,120,101,99,117,116,105,111,110,32,\r
-111,102,72,117,109,97,110,32,82,105,103,104,116,115,116,101,114,109,115,32,111,\r
-102,32,116,104,101,97,115,115,111,99,105,97,116,105,111,110,115,114,101,115,101,\r
-97,114,99,104,32,97,110,100,115,117,99,99,101,101,100,101,100,32,98,121,100,101,\r
-102,101,97,116,101,100,32,116,104,101,97,110,100,32,102,114,111,109,32,116,104,\r
-101,98,117,116,32,116,104,101,121,32,97,114,101,99,111,109,109,97,110,100,101,\r
-114,32,111,102,115,116,97,116,101,32,111,102,32,116,104,101,121,101,97,114,115,\r
-32,111,102,32,97,103,101,116,104,101,32,115,116,117,100,121,32,111,102,60,117,\r
-108,32,99,108,97,115,115,61,34,115,112,108,97,99,101,32,105,110,32,116,104,101,\r
-119,104,101,114,101,32,104,101,32,119,97,115,60,108,105,32,99,108,97,115,115,61,\r
-34,102,116,104,101,114,101,32,97,114,101,32,110,111,119,104,105,99,104,32,98,101\r
-,99,97,109,101,104,101,32,112,117,98,108,105,115,104,101,100,101,120,112,114,101\r
-,115,115,101,100,32,105,110,116,111,32,119,104,105,99,104,32,116,104,101,99,111,\r
-109,109,105,115,115,105,111,110,101,114,102,111,110,116,45,119,101,105,103,104,\r
-116,58,116,101,114,114,105,116,111,114,121,32,111,102,101,120,116,101,110,115,\r
-105,111,110,115,34,62,82,111,109,97,110,32,69,109,112,105,114,101,101,113,117,97\r
-,108,32,116,111,32,116,104,101,73,110,32,99,111,110,116,114,97,115,116,44,104,\r
-111,119,101,118,101,114,44,32,97,110,100,105,115,32,116,121,112,105,99,97,108,\r
-108,121,97,110,100,32,104,105,115,32,119,105,102,101,40,97,108,115,111,32,99,97,\r
-108,108,101,100,62,60,117,108,32,99,108,97,115,115,61,34,101,102,102,101,99,116,\r
-105,118,101,108,121,32,101,118,111,108,118,101,100,32,105,110,116,111,115,101,\r
-101,109,32,116,111,32,104,97,118,101,119,104,105,99,104,32,105,115,32,116,104,\r
-101,116,104,101,114,101,32,119,97,115,32,110,111,97,110,32,101,120,99,101,108,\r
-108,101,110,116,97,108,108,32,111,102,32,116,104,101,115,101,100,101,115,99,114,\r
-105,98,101,100,32,98,121,73,110,32,112,114,97,99,116,105,99,101,44,98,114,111,97\r
-,100,99,97,115,116,105,110,103,99,104,97,114,103,101,100,32,119,105,116,104,114,\r
-101,102,108,101,99,116,101,100,32,105,110,115,117,98,106,101,99,116,101,100,32,\r
-116,111,109,105,108,105,116,97,114,121,32,97,110,100,116,111,32,116,104,101,32,\r
-112,111,105,110,116,101,99,111,110,111,109,105,99,97,108,108,121,115,101,116,84,\r
-97,114,103,101,116,105,110,103,97,114,101,32,97,99,116,117,97,108,108,121,118,\r
-105,99,116,111,114,121,32,111,118,101,114,40,41,59,60,47,115,99,114,105,112,116,\r
-62,99,111,110,116,105,110,117,111,117,115,108,121,114,101,113,117,105,114,101,\r
-100,32,102,111,114,101,118,111,108,117,116,105,111,110,97,114,121,97,110,32,101,\r
-102,102,101,99,116,105,118,101,110,111,114,116,104,32,111,102,32,116,104,101,44,\r
-32,119,104,105,99,104,32,119,97,115,32,102,114,111,110,116,32,111,102,32,116,104\r
-,101,111,114,32,111,116,104,101,114,119,105,115,101,115,111,109,101,32,102,111,\r
-114,109,32,111,102,104,97,100,32,110,111,116,32,98,101,101,110,103,101,110,101,\r
-114,97,116,101,100,32,98,121,105,110,102,111,114,109,97,116,105,111,110,46,112,\r
-101,114,109,105,116,116,101,100,32,116,111,105,110,99,108,117,100,101,115,32,116\r
-,104,101,100,101,118,101,108,111,112,109,101,110,116,44,101,110,116,101,114,101,\r
-100,32,105,110,116,111,116,104,101,32,112,114,101,118,105,111,117,115,99,111,110\r
-,115,105,115,116,101,110,116,108,121,97,114,101,32,107,110,111,119,110,32,97,115\r
-,116,104,101,32,102,105,101,108,100,32,111,102,116,104,105,115,32,116,121,112,\r
-101,32,111,102,103,105,118,101,110,32,116,111,32,116,104,101,116,104,101,32,116,\r
-105,116,108,101,32,111,102,99,111,110,116,97,105,110,115,32,116,104,101,105,110,\r
-115,116,97,110,99,101,115,32,111,102,105,110,32,116,104,101,32,110,111,114,116,\r
-104,100,117,101,32,116,111,32,116,104,101,105,114,97,114,101,32,100,101,115,105,\r
-103,110,101,100,99,111,114,112,111,114,97,116,105,111,110,115,119,97,115,32,116,\r
-104,97,116,32,116,104,101,111,110,101,32,111,102,32,116,104,101,115,101,109,111,\r
-114,101,32,112,111,112,117,108,97,114,115,117,99,99,101,101,100,101,100,32,105,\r
-110,115,117,112,112,111,114,116,32,102,114,111,109,105,110,32,100,105,102,102,\r
-101,114,101,110,116,100,111,109,105,110,97,116,101,100,32,98,121,100,101,115,105\r
-,103,110,101,100,32,102,111,114,111,119,110,101,114,115,104,105,112,32,111,102,\r
-97,110,100,32,112,111,115,115,105,98,108,121,115,116,97,110,100,97,114,100,105,\r
-122,101,100,114,101,115,112,111,110,115,101,84,101,120,116,119,97,115,32,105,110\r
-,116,101,110,100,101,100,114,101,99,101,105,118,101,100,32,116,104,101,97,115,\r
-115,117,109,101,100,32,116,104,97,116,97,114,101,97,115,32,111,102,32,116,104,\r
-101,112,114,105,109,97,114,105,108,121,32,105,110,116,104,101,32,98,97,115,105,\r
-115,32,111,102,105,110,32,116,104,101,32,115,101,110,115,101,97,99,99,111,117,\r
-110,116,115,32,102,111,114,100,101,115,116,114,111,121,101,100,32,98,121,97,116,\r
-32,108,101,97,115,116,32,116,119,111,119,97,115,32,100,101,99,108,97,114,101,100\r
-,99,111,117,108,100,32,110,111,116,32,98,101,83,101,99,114,101,116,97,114,121,32\r
-,111,102,97,112,112,101,97,114,32,116,111,32,98,101,109,97,114,103,105,110,45,\r
-116,111,112,58,49,47,94,92,115,43,124,92,115,43,36,47,103,101,41,123,116,104,114\r
-,111,119,32,101,125,59,116,104,101,32,115,116,97,114,116,32,111,102,116,119,111,\r
-32,115,101,112,97,114,97,116,101,108,97,110,103,117,97,103,101,32,97,110,100,119\r
-,104,111,32,104,97,100,32,98,101,101,110,111,112,101,114,97,116,105,111,110,32,\r
-111,102,100,101,97,116,104,32,111,102,32,116,104,101,114,101,97,108,32,110,117,\r
-109,98,101,114,115,9,60,108,105,110,107,32,114,101,108,61,34,112,114,111,118,105\r
-,100,101,100,32,116,104,101,116,104,101,32,115,116,111,114,121,32,111,102,99,111\r
-,109,112,101,116,105,116,105,111,110,115,101,110,103,108,105,115,104,32,40,85,75\r
-,41,101,110,103,108,105,115,104,32,40,85,83,41,208,156,208,190,208,189,208,179,\r
-208,190,208,187,208,161,209,128,208,191,209,129,208,186,208,184,209,129,209,128,\r
-208,191,209,129,208,186,208,184,209,129,209,128,208,191,209,129,208,186,208,190,\r
-217,132,216,185,216,177,216,168,217,138,216,169,230,173,163,233,171,148,228,184,\r
-173,230,150,135,231,174,128,228,189,147,228,184,173,230,150,135,231,185,129,228,\r
-189,147,228,184,173,230,150,135,230,156,137,233,153,144,229,133,172,229,143,184,\r
-228,186,186,230,176,145,230,148,191,229,186,156,233,152,191,233,135,140,229,183,\r
-180,229,183,180,231,164,190,228,188,154,228,184,187,228,185,137,230,147,141,228,\r
-189,156,231,179,187,231,187,159,230,148,191,231,173,150,230,179,149,232,167,132,\r
-105,110,102,111,114,109,97,99,105,195,179,110,104,101,114,114,97,109,105,101,110\r
-,116,97,115,101,108,101,99,116,114,195,179,110,105,99,111,100,101,115,99,114,105\r
-,112,99,105,195,179,110,99,108,97,115,105,102,105,99,97,100,111,115,99,111,110,\r
-111,99,105,109,105,101,110,116,111,112,117,98,108,105,99,97,99,105,195,179,110,\r
-114,101,108,97,99,105,111,110,97,100,97,115,105,110,102,111,114,109,195,161,116,\r
-105,99,97,114,101,108,97,99,105,111,110,97,100,111,115,100,101,112,97,114,116,97\r
-,109,101,110,116,111,116,114,97,98,97,106,97,100,111,114,101,115,100,105,114,101\r
-,99,116,97,109,101,110,116,101,97,121,117,110,116,97,109,105,101,110,116,111,109\r
-,101,114,99,97,100,111,76,105,98,114,101,99,111,110,116,195,161,99,116,101,110,\r
-111,115,104,97,98,105,116,97,99,105,111,110,101,115,99,117,109,112,108,105,109,\r
-105,101,110,116,111,114,101,115,116,97,117,114,97,110,116,101,115,100,105,115,\r
-112,111,115,105,99,105,195,179,110,99,111,110,115,101,99,117,101,110,99,105,97,\r
-101,108,101,99,116,114,195,179,110,105,99,97,97,112,108,105,99,97,99,105,111,110\r
-,101,115,100,101,115,99,111,110,101,99,116,97,100,111,105,110,115,116,97,108,97,\r
-99,105,195,179,110,114,101,97,108,105,122,97,99,105,195,179,110,117,116,105,108,\r
-105,122,97,99,105,195,179,110,101,110,99,105,99,108,111,112,101,100,105,97,101,\r
-110,102,101,114,109,101,100,97,100,101,115,105,110,115,116,114,117,109,101,110,\r
-116,111,115,101,120,112,101,114,105,101,110,99,105,97,115,105,110,115,116,105,\r
-116,117,99,105,195,179,110,112,97,114,116,105,99,117,108,97,114,101,115,115,117,\r
-98,99,97,116,101,103,111,114,105,97,209,130,208,190,208,187,209,140,208,186,208,\r
-190,208,160,208,190,209,129,209,129,208,184,208,184,209,128,208,176,208,177,208,\r
-190,209,130,209,139,208,177,208,190,208,187,209,140,209,136,208,181,208,191,209,\r
-128,208,190,209,129,209,130,208,190,208,188,208,190,208,182,208,181,209,130,208,\r
-181,208,180,209,128,209,131,208,179,208,184,209,133,209,129,208,187,209,131,209,\r
-135,208,176,208,181,209,129,208,181,208,185,209,135,208,176,209,129,208,178,209,\r
-129,208,181,208,179,208,180,208,176,208,160,208,190,209,129,209,129,208,184,209,\r
-143,208,156,208,190,209,129,208,186,208,178,208,181,208,180,209,128,209,131,208,\r
-179,208,184,208,181,208,179,208,190,209,128,208,190,208,180,208,176,208,178,208,\r
-190,208,191,209,128,208,190,209,129,208,180,208,176,208,189,208,189,209,139,209,\r
-133,208,180,208,190,208,187,208,182,208,189,209,139,208,184,208,188,208,181,208,\r
-189,208,189,208,190,208,156,208,190,209,129,208,186,208,178,209,139,209,128,209,\r
-131,208,177,208,187,208,181,208,185,208,156,208,190,209,129,208,186,208,178,208,\r
-176,209,129,209,130,209,128,208,176,208,189,209,139,208,189,208,184,209,135,208,\r
-181,208,179,208,190,209,128,208,176,208,177,208,190,209,130,208,181,208,180,208,\r
-190,208,187,208,182,208,181,208,189,209,131,209,129,208,187,209,131,208,179,208,\r
-184,209,130,208,181,208,191,208,181,209,128,209,140,208,158,208,180,208,189,208,\r
-176,208,186,208,190,208,191,208,190,209,130,208,190,208,188,209,131,209,128,208,\r
-176,208,177,208,190,209,130,209,131,208,176,208,191,209,128,208,181,208,187,209,\r
-143,208,178,208,190,208,190,208,177,209,137,208,181,208,190,208,180,208,189,208,\r
-190,208,179,208,190,209,129,208,178,208,190,208,181,208,179,208,190,209,129,209,\r
-130,208,176,209,130,209,140,208,184,208,180,209,128,209,131,208,179,208,190,208,\r
-185,209,132,208,190,209,128,209,131,208,188,208,181,209,133,208,190,209,128,208,\r
-190,209,136,208,190,208,191,209,128,208,190,209,130,208,184,208,178,209,129,209,\r
-129,209,139,208,187,208,186,208,176,208,186,208,176,208,182,208,180,209,139,208,\r
-185,208,178,208,187,208,176,209,129,209,130,208,184,208,179,209,128,209,131,208,\r
-191,208,191,209,139,208,178,208,188,208,181,209,129,209,130,208,181,209,128,208,\r
-176,208,177,208,190,209,130,208,176,209,129,208,186,208,176,208,183,208,176,208,\r
-187,208,191,208,181,209,128,208,178,209,139,208,185,208,180,208,181,208,187,208,\r
-176,209,130,209,140,208,180,208,181,208,189,209,140,208,179,208,184,208,191,208,\r
-181,209,128,208,184,208,190,208,180,208,177,208,184,208,183,208,189,208,181,209,\r
-129,208,190,209,129,208,189,208,190,208,178,208,181,208,188,208,190,208,188,208,\r
-181,208,189,209,130,208,186,209,131,208,191,208,184,209,130,209,140,208,180,208,\r
-190,208,187,208,182,208,189,208,176,209,128,208,176,208,188,208,186,208,176,209,\r
-133,208,189,208,176,209,135,208,176,208,187,208,190,208,160,208,176,208,177,208,\r
-190,209,130,208,176,208,162,208,190,208,187,209,140,208,186,208,190,209,129,208,\r
-190,208,178,209,129,208,181,208,188,208,178,209,130,208,190,209,128,208,190,208,\r
-185,208,189,208,176,209,135,208,176,208,187,208,176,209,129,208,191,208,184,209,\r
-129,208,190,208,186,209,129,208,187,209,131,208,182,208,177,209,139,209,129,208,\r
-184,209,129,209,130,208,181,208,188,208,191,208,181,209,135,208,176,209,130,208,\r
-184,208,189,208,190,208,178,208,190,208,179,208,190,208,191,208,190,208,188,208,\r
-190,209,137,208,184,209,129,208,176,208,185,209,130,208,190,208,178,208,191,208,\r
-190,209,135,208,181,208,188,209,131,208,191,208,190,208,188,208,190,209,137,209,\r
-140,208,180,208,190,208,187,208,182,208,189,208,190,209,129,209,129,209,139,208,\r
-187,208,186,208,184,208,177,209,139,209,129,209,130,209,128,208,190,208,180,208,\r
-176,208,189,208,189,209,139,208,181,208,188,208,189,208,190,208,179,208,184,208,\r
-181,208,191,209,128,208,190,208,181,208,186,209,130,208,161,208,181,208,185,209,\r
-135,208,176,209,129,208,188,208,190,208,180,208,181,208,187,208,184,209,130,208,\r
-176,208,186,208,190,208,179,208,190,208,190,208,189,208,187,208,176,208,185,208,\r
-189,208,179,208,190,209,128,208,190,208,180,208,181,208,178,208,181,209,128,209,\r
-129,208,184,209,143,209,129,209,130,209,128,208,176,208,189,208,181,209,132,208,\r
-184,208,187,209,140,208,188,209,139,209,131,209,128,208,190,208,178,208,189,209,\r
-143,209,128,208,176,208,183,208,189,209,139,209,133,208,184,209,129,208,186,208,\r
-176,209,130,209,140,208,189,208,181,208,180,208,181,208,187,209,142,209,143,208,\r
-189,208,178,208,176,209,128,209,143,208,188,208,181,208,189,209,140,209,136,208,\r
-181,208,188,208,189,208,190,208,179,208,184,209,133,208,180,208,176,208,189,208,\r
-189,208,190,208,185,208,183,208,189,208,176,209,135,208,184,209,130,208,189,208,\r
-181,208,187,209,140,208,183,209,143,209,132,208,190,209,128,209,131,208,188,208,\r
-176,208,162,208,181,208,191,208,181,209,128,209,140,208,188,208,181,209,129,209,\r
-143,209,134,208,176,208,183,208,176,209,137,208,184,209,130,209,139,208,155,209,\r
-131,209,135,209,136,208,184,208,181,224,164,168,224,164,185,224,165,128,224,164,\r
-130,224,164,149,224,164,176,224,164,168,224,165,135,224,164,133,224,164,170,224,\r
-164,168,224,165,135,224,164,149,224,164,191,224,164,175,224,164,190,224,164,149,\r
-224,164,176,224,165,135,224,164,130,224,164,133,224,164,168,224,165,141,224,164,\r
-175,224,164,149,224,165,141,224,164,175,224,164,190,224,164,151,224,164,190,224,\r
-164,135,224,164,161,224,164,172,224,164,190,224,164,176,224,165,135,224,164,149,\r
-224,164,191,224,164,184,224,165,128,224,164,166,224,164,191,224,164,175,224,164,\r
-190,224,164,170,224,164,185,224,164,178,224,165,135,224,164,184,224,164,191,224,\r
-164,130,224,164,185,224,164,173,224,164,190,224,164,176,224,164,164,224,164,133,\r
-224,164,170,224,164,168,224,165,128,224,164,181,224,164,190,224,164,178,224,165,\r
-135,224,164,184,224,165,135,224,164,181,224,164,190,224,164,149,224,164,176,224,\r
-164,164,224,165,135,224,164,174,224,165,135,224,164,176,224,165,135,224,164,185,\r
-224,165,139,224,164,168,224,165,135,224,164,184,224,164,149,224,164,164,224,165,\r
-135,224,164,172,224,164,185,224,165,129,224,164,164,224,164,184,224,164,190,224,\r
-164,135,224,164,159,224,164,185,224,165,139,224,164,151,224,164,190,224,164,156,\r
-224,164,190,224,164,168,224,165,135,224,164,174,224,164,191,224,164,168,224,164,\r
-159,224,164,149,224,164,176,224,164,164,224,164,190,224,164,149,224,164,176,224,\r
-164,168,224,164,190,224,164,137,224,164,168,224,164,149,224,165,135,224,164,175,\r
-224,164,185,224,164,190,224,164,129,224,164,184,224,164,172,224,164,184,224,165,\r
-135,224,164,173,224,164,190,224,164,183,224,164,190,224,164,134,224,164,170,224,\r
-164,149,224,165,135,224,164,178,224,164,191,224,164,175,224,165,135,224,164,182,\r
-224,165,129,224,164,176,224,165,130,224,164,135,224,164,184,224,164,149,224,165,\r
-135,224,164,152,224,164,130,224,164,159,224,165,135,224,164,174,224,165,135,224,\r
-164,176,224,165,128,224,164,184,224,164,149,224,164,164,224,164,190,224,164,174,\r
-224,165,135,224,164,176,224,164,190,224,164,178,224,165,135,224,164,149,224,164,\r
-176,224,164,133,224,164,167,224,164,191,224,164,149,224,164,133,224,164,170,224,\r
-164,168,224,164,190,224,164,184,224,164,174,224,164,190,224,164,156,224,164,174,\r
-224,165,129,224,164,157,224,165,135,224,164,149,224,164,190,224,164,176,224,164,\r
-163,224,164,185,224,165,139,224,164,164,224,164,190,224,164,149,224,164,161,224,\r
-164,188,224,165,128,224,164,175,224,164,185,224,164,190,224,164,130,224,164,185,\r
-224,165,139,224,164,159,224,164,178,224,164,182,224,164,172,224,165,141,224,164,\r
-166,224,164,178,224,164,191,224,164,175,224,164,190,224,164,156,224,165,128,224,\r
-164,181,224,164,168,224,164,156,224,164,190,224,164,164,224,164,190,224,164,149,\r
-224,165,136,224,164,184,224,165,135,224,164,134,224,164,170,224,164,149,224,164,\r
-190,224,164,181,224,164,190,224,164,178,224,165,128,224,164,166,224,165,135,224,\r
-164,168,224,165,135,224,164,170,224,165,130,224,164,176,224,165,128,224,164,170,\r
-224,164,190,224,164,168,224,165,128,224,164,137,224,164,184,224,164,149,224,165,\r
-135,224,164,185,224,165,139,224,164,151,224,165,128,224,164,172,224,165,136,224,\r
-164,160,224,164,149,224,164,134,224,164,170,224,164,149,224,165,128,224,164,181,\r
-224,164,176,224,165,141,224,164,183,224,164,151,224,164,190,224,164,130,224,164,\r
-181,224,164,134,224,164,170,224,164,149,224,165,139,224,164,156,224,164,191,224,\r
-164,178,224,164,190,224,164,156,224,164,190,224,164,168,224,164,190,224,164,184,\r
-224,164,185,224,164,174,224,164,164,224,164,185,224,164,174,224,165,135,224,164,\r
-130,224,164,137,224,164,168,224,164,149,224,165,128,224,164,175,224,164,190,224,\r
-164,185,224,165,130,224,164,166,224,164,176,224,165,141,224,164,156,224,164,184,\r
-224,165,130,224,164,154,224,165,128,224,164,170,224,164,184,224,164,130,224,164,\r
-166,224,164,184,224,164,181,224,164,190,224,164,178,224,164,185,224,165,139,224,\r
-164,168,224,164,190,224,164,185,224,165,139,224,164,164,224,165,128,224,164,156,\r
-224,165,136,224,164,184,224,165,135,224,164,181,224,164,190,224,164,170,224,164,\r
-184,224,164,156,224,164,168,224,164,164,224,164,190,224,164,168,224,165,135,224,\r
-164,164,224,164,190,224,164,156,224,164,190,224,164,176,224,165,128,224,164,152,\r
-224,164,190,224,164,175,224,164,178,224,164,156,224,164,191,224,164,178,224,165,\r
-135,224,164,168,224,165,128,224,164,154,224,165,135,224,164,156,224,164,190,224,\r
-164,130,224,164,154,224,164,170,224,164,164,224,165,141,224,164,176,224,164,151,\r
-224,165,130,224,164,151,224,164,178,224,164,156,224,164,190,224,164,164,224,165,\r
-135,224,164,172,224,164,190,224,164,185,224,164,176,224,164,134,224,164,170,224,\r
-164,168,224,165,135,224,164,181,224,164,190,224,164,185,224,164,168,224,164,135,\r
-224,164,184,224,164,149,224,164,190,224,164,184,224,165,129,224,164,172,224,164,\r
-185,224,164,176,224,164,185,224,164,168,224,165,135,224,164,135,224,164,184,224,\r
-164,184,224,165,135,224,164,184,224,164,185,224,164,191,224,164,164,224,164,172,\r
-224,164,161,224,164,188,224,165,135,224,164,152,224,164,159,224,164,168,224,164,\r
-190,224,164,164,224,164,178,224,164,190,224,164,182,224,164,170,224,164,190,224,\r
-164,130,224,164,154,224,164,182,224,165,141,224,164,176,224,165,128,224,164,172,\r
-224,164,161,224,164,188,224,165,128,224,164,185,224,165,139,224,164,164,224,165,\r
-135,224,164,184,224,164,190,224,164,136,224,164,159,224,164,182,224,164,190,224,\r
-164,175,224,164,166,224,164,184,224,164,149,224,164,164,224,165,128,224,164,156,\r
-224,164,190,224,164,164,224,165,128,224,164,181,224,164,190,224,164,178,224,164,\r
-190,224,164,185,224,164,156,224,164,190,224,164,176,224,164,170,224,164,159,224,\r
-164,168,224,164,190,224,164,176,224,164,150,224,164,168,224,165,135,224,164,184,\r
-224,164,161,224,164,188,224,164,149,224,164,174,224,164,191,224,164,178,224,164,\r
-190,224,164,137,224,164,184,224,164,149,224,165,128,224,164,149,224,165,135,224,\r
-164,181,224,164,178,224,164,178,224,164,151,224,164,164,224,164,190,224,164,150,\r
-224,164,190,224,164,168,224,164,190,224,164,133,224,164,176,224,165,141,224,164,\r
-165,224,164,156,224,164,185,224,164,190,224,164,130,224,164,166,224,165,135,224,\r
-164,150,224,164,190,224,164,170,224,164,185,224,164,178,224,165,128,224,164,168,\r
-224,164,191,224,164,175,224,164,174,224,164,172,224,164,191,224,164,168,224,164,\r
-190,224,164,172,224,165,136,224,164,130,224,164,149,224,164,149,224,164,185,224,\r
-165,128,224,164,130,224,164,149,224,164,185,224,164,168,224,164,190,224,164,166,\r
-224,165,135,224,164,164,224,164,190,224,164,185,224,164,174,224,164,178,224,165,\r
-135,224,164,149,224,164,190,224,164,171,224,165,128,224,164,156,224,164,172,224,\r
-164,149,224,164,191,224,164,164,224,165,129,224,164,176,224,164,164,224,164,174,\r
-224,164,190,224,164,130,224,164,151,224,164,181,224,164,185,224,165,128,224,164,\r
-130,224,164,176,224,165,139,224,164,156,224,164,188,224,164,174,224,164,191,224,\r
-164,178,224,165,128,224,164,134,224,164,176,224,165,139,224,164,170,224,164,184,\r
-224,165,135,224,164,168,224,164,190,224,164,175,224,164,190,224,164,166,224,164,\r
-181,224,164,178,224,165,135,224,164,168,224,165,135,224,164,150,224,164,190,224,\r
-164,164,224,164,190,224,164,149,224,164,176,224,165,128,224,164,172,224,164,137,\r
-224,164,168,224,164,149,224,164,190,224,164,156,224,164,181,224,164,190,224,164,\r
-172,224,164,170,224,165,130,224,164,176,224,164,190,224,164,172,224,164,161,224,\r
-164,188,224,164,190,224,164,184,224,165,140,224,164,166,224,164,190,224,164,182,\r
-224,165,135,224,164,175,224,164,176,224,164,149,224,164,191,224,164,175,224,165,\r
-135,224,164,149,224,164,185,224,164,190,224,164,130,224,164,133,224,164,149,224,\r
-164,184,224,164,176,224,164,172,224,164,168,224,164,190,224,164,143,224,164,181,\r
-224,164,185,224,164,190,224,164,130,224,164,184,224,165,141,224,164,165,224,164,\r
-178,224,164,174,224,164,191,224,164,178,224,165,135,224,164,178,224,165,135,224,\r
-164,150,224,164,149,224,164,181,224,164,191,224,164,183,224,164,175,224,164,149,\r
-224,165,141,224,164,176,224,164,130,224,164,184,224,164,174,224,165,130,224,164,\r
-185,224,164,165,224,164,190,224,164,168,224,164,190,216,170,216,179,216,170,216,\r
-183,217,138,216,185,217,133,216,180,216,167,216,177,217,131,216,169,216,168,217,\r
-136,216,167,216,179,216,183,216,169,216,167,217,132,216,181,217,129,216,173,216,\r
-169,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,174,216,\r
-167,216,181,216,169,216,167,217,132,217,133,216,178,217,138,216,175,216,167,217,\r
-132,216,185,216,167,217,133,216,169,216,167,217,132,217,131,216,167,216,170,216,\r
-168,216,167,217,132,216,177,216,175,217,136,216,175,216,168,216,177,217,134,216,\r
-167,217,133,216,172,216,167,217,132,216,175,217,136,217,132,216,169,216,167,217,\r
-132,216,185,216,167,217,132,217,133,216,167,217,132,217,133,217,136,217,130,216,\r
-185,216,167,217,132,216,185,216,177,216,168,217,138,216,167,217,132,216,179,216,\r
-177,217,138,216,185,216,167,217,132,216,172,217,136,216,167,217,132,216,167,217,\r
-132,216,176,217,135,216,167,216,168,216,167,217,132,216,173,217,138,216,167,216,\r
-169,216,167,217,132,216,173,217,130,217,136,217,130,216,167,217,132,217,131,216,\r
-177,217,138,217,133,216,167,217,132,216,185,216,177,216,167,217,130,217,133,216,\r
-173,217,129,217,136,216,184,216,169,216,167,217,132,216,171,216,167,217,134,217,\r
-138,217,133,216,180,216,167,217,135,216,175,216,169,216,167,217,132,217,133,216,\r
-177,216,163,216,169,216,167,217,132,217,130,216,177,216,162,217,134,216,167,217,\r
-132,216,180,216,168,216,167,216,168,216,167,217,132,216,173,217,136,216,167,216,\r
-177,216,167,217,132,216,172,216,175,217,138,216,175,216,167,217,132,216,163,216,\r
-179,216,177,216,169,216,167,217,132,216,185,217,132,217,136,217,133,217,133,216,\r
-172,217,133,217,136,216,185,216,169,216,167,217,132,216,177,216,173,217,133,217,\r
-134,216,167,217,132,217,134,217,130,216,167,216,183,217,129,217,132,216,179,216,\r
-183,217,138,217,134,216,167,217,132,217,131,217,136,217,138,216,170,216,167,217,\r
-132,216,175,217,134,217,138,216,167,216,168,216,177,217,131,216,167,216,170,217,\r
-135,216,167,217,132,216,177,217,138,216,167,216,182,216,170,216,173,217,138,216,\r
-167,216,170,217,138,216,168,216,170,217,136,217,130,217,138,216,170,216,167,217,\r
-132,216,163,217,136,217,132,217,137,216,167,217,132,216,168,216,177,217,138,216,\r
-175,216,167,217,132,217,131,217,132,216,167,217,133,216,167,217,132,216,177,216,\r
-167,216,168,216,183,216,167,217,132,216,180,216,174,216,181,217,138,216,179,217,\r
-138,216,167,216,177,216,167,216,170,216,167,217,132,216,171,216,167,217,132,216,\r
-171,216,167,217,132,216,181,217,132,216,167,216,169,216,167,217,132,216,173,216,\r
-175,217,138,216,171,216,167,217,132,216,178,217,136,216,167,216,177,216,167,217,\r
-132,216,174,217,132,217,138,216,172,216,167,217,132,216,172,217,133,217,138,216,\r
-185,216,167,217,132,216,185,216,167,217,133,217,135,216,167,217,132,216,172,217,\r
-133,216,167,217,132,216,167,217,132,216,179,216,167,216,185,216,169,217,133,216,\r
-180,216,167,217,135,216,175,217,135,216,167,217,132,216,177,216,166,217,138,216,\r
-179,216,167,217,132,216,175,216,174,217,136,217,132,216,167,217,132,217,129,217,\r
-134,217,138,216,169,216,167,217,132,217,131,216,170,216,167,216,168,216,167,217,\r
-132,216,175,217,136,216,177,217,138,216,167,217,132,216,175,216,177,217,136,216,\r
-179,216,167,216,179,216,170,216,186,216,177,217,130,216,170,216,181,216,167,217,\r
-133,217,138,217,133,216,167,217,132,216,168,217,134,216,167,216,170,216,167,217,\r
-132,216,185,216,184,217,138,217,133,101,110,116,101,114,116,97,105,110,109,101,\r
-110,116,117,110,100,101,114,115,116,97,110,100,105,110,103,32,61,32,102,117,110,\r
-99,116,105,111,110,40,41,46,106,112,103,34,32,119,105,100,116,104,61,34,99,111,\r
-110,102,105,103,117,114,97,116,105,111,110,46,112,110,103,34,32,119,105,100,116,\r
-104,61,34,60,98,111,100,121,32,99,108,97,115,115,61,34,77,97,116,104,46,114,97,\r
-110,100,111,109,40,41,99,111,110,116,101,109,112,111,114,97,114,121,32,85,110,\r
-105,116,101,100,32,83,116,97,116,101,115,99,105,114,99,117,109,115,116,97,110,99\r
-,101,115,46,97,112,112,101,110,100,67,104,105,108,100,40,111,114,103,97,110,105,\r
-122,97,116,105,111,110,115,60,115,112,97,110,32,99,108,97,115,115,61,34,34,62,60\r
-,105,109,103,32,115,114,99,61,34,47,100,105,115,116,105,110,103,117,105,115,104,\r
-101,100,116,104,111,117,115,97,110,100,115,32,111,102,32,99,111,109,109,117,110,\r
-105,99,97,116,105,111,110,99,108,101,97,114,34,62,60,47,100,105,118,62,105,110,\r
-118,101,115,116,105,103,97,116,105,111,110,102,97,118,105,99,111,110,46,105,99,\r
-111,34,32,109,97,114,103,105,110,45,114,105,103,104,116,58,98,97,115,101,100,32,\r
-111,110,32,116,104,101,32,77,97,115,115,97,99,104,117,115,101,116,116,115,116,97\r
-,98,108,101,32,98,111,114,100,101,114,61,105,110,116,101,114,110,97,116,105,111,\r
-110,97,108,97,108,115,111,32,107,110,111,119,110,32,97,115,112,114,111,110,117,\r
-110,99,105,97,116,105,111,110,98,97,99,107,103,114,111,117,110,100,58,35,102,112\r
-,97,100,100,105,110,103,45,108,101,102,116,58,70,111,114,32,101,120,97,109,112,\r
-108,101,44,32,109,105,115,99,101,108,108,97,110,101,111,117,115,38,108,116,59,47\r
-,109,97,116,104,38,103,116,59,112,115,121,99,104,111,108,111,103,105,99,97,108,\r
-105,110,32,112,97,114,116,105,99,117,108,97,114,101,97,114,99,104,34,32,116,121,\r
-112,101,61,34,102,111,114,109,32,109,101,116,104,111,100,61,34,97,115,32,111,112\r
-,112,111,115,101,100,32,116,111,83,117,112,114,101,109,101,32,67,111,117,114,116\r
-,111,99,99,97,115,105,111,110,97,108,108,121,32,65,100,100,105,116,105,111,110,\r
-97,108,108,121,44,78,111,114,116,104,32,65,109,101,114,105,99,97,112,120,59,98,\r
-97,99,107,103,114,111,117,110,100,111,112,112,111,114,116,117,110,105,116,105,\r
-101,115,69,110,116,101,114,116,97,105,110,109,101,110,116,46,116,111,76,111,119,\r
-101,114,67,97,115,101,40,109,97,110,117,102,97,99,116,117,114,105,110,103,112,\r
-114,111,102,101,115,115,105,111,110,97,108,32,99,111,109,98,105,110,101,100,32,\r
-119,105,116,104,70,111,114,32,105,110,115,116,97,110,99,101,44,99,111,110,115,\r
-105,115,116,105,110,103,32,111,102,34,32,109,97,120,108,101,110,103,116,104,61,\r
-34,114,101,116,117,114,110,32,102,97,108,115,101,59,99,111,110,115,99,105,111,\r
-117,115,110,101,115,115,77,101,100,105,116,101,114,114,97,110,101,97,110,101,120\r
-,116,114,97,111,114,100,105,110,97,114,121,97,115,115,97,115,115,105,110,97,116,\r
-105,111,110,115,117,98,115,101,113,117,101,110,116,108,121,32,98,117,116,116,111\r
-,110,32,116,121,112,101,61,34,116,104,101,32,110,117,109,98,101,114,32,111,102,\r
-116,104,101,32,111,114,105,103,105,110,97,108,32,99,111,109,112,114,101,104,101,\r
-110,115,105,118,101,114,101,102,101,114,115,32,116,111,32,116,104,101,60,47,117,\r
-108,62,10,60,47,100,105,118,62,10,112,104,105,108,111,115,111,112,104,105,99,97,\r
-108,108,111,99,97,116,105,111,110,46,104,114,101,102,119,97,115,32,112,117,98,\r
-108,105,115,104,101,100,83,97,110,32,70,114,97,110,99,105,115,99,111,40,102,117,\r
-110,99,116,105,111,110,40,41,123,10,60,100,105,118,32,105,100,61,34,109,97,105,\r
-110,115,111,112,104,105,115,116,105,99,97,116,101,100,109,97,116,104,101,109,97,\r
-116,105,99,97,108,32,47,104,101,97,100,62,13,10,60,98,111,100,121,115,117,103,\r
-103,101,115,116,115,32,116,104,97,116,100,111,99,117,109,101,110,116,97,116,105,\r
-111,110,99,111,110,99,101,110,116,114,97,116,105,111,110,114,101,108,97,116,105,\r
-111,110,115,104,105,112,115,109,97,121,32,104,97,118,101,32,98,101,101,110,40,\r
-102,111,114,32,101,120,97,109,112,108,101,44,84,104,105,115,32,97,114,116,105,99\r
-,108,101,32,105,110,32,115,111,109,101,32,99,97,115,101,115,112,97,114,116,115,\r
-32,111,102,32,116,104,101,32,100,101,102,105,110,105,116,105,111,110,32,111,102,\r
-71,114,101,97,116,32,66,114,105,116,97,105,110,32,99,101,108,108,112,97,100,100,\r
-105,110,103,61,101,113,117,105,118,97,108,101,110,116,32,116,111,112,108,97,99,\r
-101,104,111,108,100,101,114,61,34,59,32,102,111,110,116,45,115,105,122,101,58,32\r
-,106,117,115,116,105,102,105,99,97,116,105,111,110,98,101,108,105,101,118,101,\r
-100,32,116,104,97,116,115,117,102,102,101,114,101,100,32,102,114,111,109,97,116,\r
-116,101,109,112,116,101,100,32,116,111,32,108,101,97,100,101,114,32,111,102,32,\r
-116,104,101,99,114,105,112,116,34,32,115,114,99,61,34,47,40,102,117,110,99,116,\r
-105,111,110,40,41,32,123,97,114,101,32,97,118,97,105,108,97,98,108,101,10,9,60,\r
-108,105,110,107,32,114,101,108,61,34,32,115,114,99,61,39,104,116,116,112,58,47,\r
-47,105,110,116,101,114,101,115,116,101,100,32,105,110,99,111,110,118,101,110,116\r
-,105,111,110,97,108,32,34,32,97,108,116,61,34,34,32,47,62,60,47,97,114,101,32,\r
-103,101,110,101,114,97,108,108,121,104,97,115,32,97,108,115,111,32,98,101,101,\r
-110,109,111,115,116,32,112,111,112,117,108,97,114,32,99,111,114,114,101,115,112,\r
-111,110,100,105,110,103,99,114,101,100,105,116,101,100,32,119,105,116,104,116,\r
-121,108,101,61,34,98,111,114,100,101,114,58,60,47,97,62,60,47,115,112,97,110,62,\r
-60,47,46,103,105,102,34,32,119,105,100,116,104,61,34,60,105,102,114,97,109,101,\r
-32,115,114,99,61,34,116,97,98,108,101,32,99,108,97,115,115,61,34,105,110,108,105\r
-,110,101,45,98,108,111,99,107,59,97,99,99,111,114,100,105,110,103,32,116,111,32,\r
-116,111,103,101,116,104,101,114,32,119,105,116,104,97,112,112,114,111,120,105,\r
-109,97,116,101,108,121,112,97,114,108,105,97,109,101,110,116,97,114,121,109,111,\r
-114,101,32,97,110,100,32,109,111,114,101,100,105,115,112,108,97,121,58,110,111,\r
-110,101,59,116,114,97,100,105,116,105,111,110,97,108,108,121,112,114,101,100,111\r
-,109,105,110,97,110,116,108,121,38,110,98,115,112,59,124,38,110,98,115,112,59,38\r
-,110,98,115,112,59,60,47,115,112,97,110,62,32,99,101,108,108,115,112,97,99,105,\r
-110,103,61,60,105,110,112,117,116,32,110,97,109,101,61,34,111,114,34,32,99,111,\r
-110,116,101,110,116,61,34,99,111,110,116,114,111,118,101,114,115,105,97,108,112,\r
-114,111,112,101,114,116,121,61,34,111,103,58,47,120,45,115,104,111,99,107,119,97\r
-,118,101,45,100,101,109,111,110,115,116,114,97,116,105,111,110,115,117,114,114,\r
-111,117,110,100,101,100,32,98,121,78,101,118,101,114,116,104,101,108,101,115,115\r
-,44,119,97,115,32,116,104,101,32,102,105,114,115,116,99,111,110,115,105,100,101,\r
-114,97,98,108,101,32,65,108,116,104,111,117,103,104,32,116,104,101,32,99,111,108\r
-,108,97,98,111,114,97,116,105,111,110,115,104,111,117,108,100,32,110,111,116,32,\r
-98,101,112,114,111,112,111,114,116,105,111,110,32,111,102,60,115,112,97,110,32,\r
-115,116,121,108,101,61,34,107,110,111,119,110,32,97,115,32,116,104,101,32,115,\r
-104,111,114,116,108,121,32,97,102,116,101,114,102,111,114,32,105,110,115,116,97,\r
-110,99,101,44,100,101,115,99,114,105,98,101,100,32,97,115,32,47,104,101,97,100,\r
-62,10,60,98,111,100,121,32,115,116,97,114,116,105,110,103,32,119,105,116,104,105\r
-,110,99,114,101,97,115,105,110,103,108,121,32,116,104,101,32,102,97,99,116,32,\r
-116,104,97,116,100,105,115,99,117,115,115,105,111,110,32,111,102,109,105,100,100\r
-,108,101,32,111,102,32,116,104,101,97,110,32,105,110,100,105,118,105,100,117,97,\r
-108,100,105,102,102,105,99,117,108,116,32,116,111,32,112,111,105,110,116,32,111,\r
-102,32,118,105,101,119,104,111,109,111,115,101,120,117,97,108,105,116,121,97,99,\r
-99,101,112,116,97,110,99,101,32,111,102,60,47,115,112,97,110,62,60,47,100,105,\r
-118,62,109,97,110,117,102,97,99,116,117,114,101,114,115,111,114,105,103,105,110,\r
-32,111,102,32,116,104,101,99,111,109,109,111,110,108,121,32,117,115,101,100,105,\r
-109,112,111,114,116,97,110,99,101,32,111,102,100,101,110,111,109,105,110,97,116,\r
-105,111,110,115,98,97,99,107,103,114,111,117,110,100,58,32,35,108,101,110,103,\r
-116,104,32,111,102,32,116,104,101,100,101,116,101,114,109,105,110,97,116,105,111\r
-,110,97,32,115,105,103,110,105,102,105,99,97,110,116,34,32,98,111,114,100,101,\r
-114,61,34,48,34,62,114,101,118,111,108,117,116,105,111,110,97,114,121,112,114,\r
-105,110,99,105,112,108,101,115,32,111,102,105,115,32,99,111,110,115,105,100,101,\r
-114,101,100,119,97,115,32,100,101,118,101,108,111,112,101,100,73,110,100,111,45,\r
-69,117,114,111,112,101,97,110,118,117,108,110,101,114,97,98,108,101,32,116,111,\r
-112,114,111,112,111,110,101,110,116,115,32,111,102,97,114,101,32,115,111,109,101\r
-,116,105,109,101,115,99,108,111,115,101,114,32,116,111,32,116,104,101,78,101,119\r
-,32,89,111,114,107,32,67,105,116,121,32,110,97,109,101,61,34,115,101,97,114,99,\r
-104,97,116,116,114,105,98,117,116,101,100,32,116,111,99,111,117,114,115,101,32,\r
-111,102,32,116,104,101,109,97,116,104,101,109,97,116,105,99,105,97,110,98,121,32\r
-,116,104,101,32,101,110,100,32,111,102,97,116,32,116,104,101,32,101,110,100,32,\r
-111,102,34,32,98,111,114,100,101,114,61,34,48,34,32,116,101,99,104,110,111,108,\r
-111,103,105,99,97,108,46,114,101,109,111,118,101,67,108,97,115,115,40,98,114,97,\r
-110,99,104,32,111,102,32,116,104,101,101,118,105,100,101,110,99,101,32,116,104,\r
-97,116,33,91,101,110,100,105,102,93,45,45,62,13,10,73,110,115,116,105,116,117,\r
-116,101,32,111,102,32,105,110,116,111,32,97,32,115,105,110,103,108,101,114,101,\r
-115,112,101,99,116,105,118,101,108,121,46,97,110,100,32,116,104,101,114,101,102,\r
-111,114,101,112,114,111,112,101,114,116,105,101,115,32,111,102,105,115,32,108,\r
-111,99,97,116,101,100,32,105,110,115,111,109,101,32,111,102,32,119,104,105,99,\r
-104,84,104,101,114,101,32,105,115,32,97,108,115,111,99,111,110,116,105,110,117,\r
-101,100,32,116,111,32,97,112,112,101,97,114,97,110,99,101,32,111,102,32,38,97,\r
-109,112,59,110,100,97,115,104,59,32,100,101,115,99,114,105,98,101,115,32,116,104\r
-,101,99,111,110,115,105,100,101,114,97,116,105,111,110,97,117,116,104,111,114,32\r
-,111,102,32,116,104,101,105,110,100,101,112,101,110,100,101,110,116,108,121,101,\r
-113,117,105,112,112,101,100,32,119,105,116,104,100,111,101,115,32,110,111,116,32\r
-,104,97,118,101,60,47,97,62,60,97,32,104,114,101,102,61,34,99,111,110,102,117,\r
-115,101,100,32,119,105,116,104,60,108,105,110,107,32,104,114,101,102,61,34,47,97\r
-,116,32,116,104,101,32,97,103,101,32,111,102,97,112,112,101,97,114,32,105,110,32\r
-,116,104,101,84,104,101,115,101,32,105,110,99,108,117,100,101,114,101,103,97,114\r
-,100,108,101,115,115,32,111,102,99,111,117,108,100,32,98,101,32,117,115,101,100,\r
-32,115,116,121,108,101,61,38,113,117,111,116,59,115,101,118,101,114,97,108,32,\r
-116,105,109,101,115,114,101,112,114,101,115,101,110,116,32,116,104,101,98,111,\r
-100,121,62,10,60,47,104,116,109,108,62,116,104,111,117,103,104,116,32,116,111,32\r
-,98,101,112,111,112,117,108,97,116,105,111,110,32,111,102,112,111,115,115,105,98\r
-,105,108,105,116,105,101,115,112,101,114,99,101,110,116,97,103,101,32,111,102,97\r
-,99,99,101,115,115,32,116,111,32,116,104,101,97,110,32,97,116,116,101,109,112,\r
-116,32,116,111,112,114,111,100,117,99,116,105,111,110,32,111,102,106,113,117,101\r
-,114,121,47,106,113,117,101,114,121,116,119,111,32,100,105,102,102,101,114,101,\r
-110,116,98,101,108,111,110,103,32,116,111,32,116,104,101,101,115,116,97,98,108,\r
-105,115,104,109,101,110,116,114,101,112,108,97,99,105,110,103,32,116,104,101,100\r
-,101,115,99,114,105,112,116,105,111,110,34,32,100,101,116,101,114,109,105,110,\r
-101,32,116,104,101,97,118,97,105,108,97,98,108,101,32,102,111,114,65,99,99,111,\r
-114,100,105,110,103,32,116,111,32,119,105,100,101,32,114,97,110,103,101,32,111,\r
-102,9,60,100,105,118,32,99,108,97,115,115,61,34,109,111,114,101,32,99,111,109,\r
-109,111,110,108,121,111,114,103,97,110,105,115,97,116,105,111,110,115,102,117,\r
-110,99,116,105,111,110,97,108,105,116,121,119,97,115,32,99,111,109,112,108,101,\r
-116,101,100,32,38,97,109,112,59,109,100,97,115,104,59,32,112,97,114,116,105,99,\r
-105,112,97,116,105,111,110,116,104,101,32,99,104,97,114,97,99,116,101,114,97,110\r
-,32,97,100,100,105,116,105,111,110,97,108,97,112,112,101,97,114,115,32,116,111,\r
-32,98,101,102,97,99,116,32,116,104,97,116,32,116,104,101,97,110,32,101,120,97,\r
-109,112,108,101,32,111,102,115,105,103,110,105,102,105,99,97,110,116,108,121,111\r
-,110,109,111,117,115,101,111,118,101,114,61,34,98,101,99,97,117,115,101,32,116,\r
-104,101,121,32,97,115,121,110,99,32,61,32,116,114,117,101,59,112,114,111,98,108,\r
-101,109,115,32,119,105,116,104,115,101,101,109,115,32,116,111,32,104,97,118,101,\r
-116,104,101,32,114,101,115,117,108,116,32,111,102,32,115,114,99,61,34,104,116,\r
-116,112,58,47,47,102,97,109,105,108,105,97,114,32,119,105,116,104,112,111,115,\r
-115,101,115,115,105,111,110,32,111,102,102,117,110,99,116,105,111,110,32,40,41,\r
-32,123,116,111,111,107,32,112,108,97,99,101,32,105,110,97,110,100,32,115,111,109\r
-,101,116,105,109,101,115,115,117,98,115,116,97,110,116,105,97,108,108,121,60,115\r
-,112,97,110,62,60,47,115,112,97,110,62,105,115,32,111,102,116,101,110,32,117,115\r
-,101,100,105,110,32,97,110,32,97,116,116,101,109,112,116,103,114,101,97,116,32,\r
-100,101,97,108,32,111,102,69,110,118,105,114,111,110,109,101,110,116,97,108,115,\r
-117,99,99,101,115,115,102,117,108,108,121,32,118,105,114,116,117,97,108,108,121,\r
-32,97,108,108,50,48,116,104,32,99,101,110,116,117,114,121,44,112,114,111,102,101\r
-,115,115,105,111,110,97,108,115,110,101,99,101,115,115,97,114,121,32,116,111,32,\r
-100,101,116,101,114,109,105,110,101,100,32,98,121,99,111,109,112,97,116,105,98,\r
-105,108,105,116,121,98,101,99,97,117,115,101,32,105,116,32,105,115,68,105,99,116\r
-,105,111,110,97,114,121,32,111,102,109,111,100,105,102,105,99,97,116,105,111,110\r
-,115,84,104,101,32,102,111,108,108,111,119,105,110,103,109,97,121,32,114,101,102\r
-,101,114,32,116,111,58,67,111,110,115,101,113,117,101,110,116,108,121,44,73,110,\r
-116,101,114,110,97,116,105,111,110,97,108,97,108,116,104,111,117,103,104,32,115,\r
-111,109,101,116,104,97,116,32,119,111,117,108,100,32,98,101,119,111,114,108,100,\r
-39,115,32,102,105,114,115,116,99,108,97,115,115,105,102,105,101,100,32,97,115,98\r
-,111,116,116,111,109,32,111,102,32,116,104,101,40,112,97,114,116,105,99,117,108,\r
-97,114,108,121,97,108,105,103,110,61,34,108,101,102,116,34,32,109,111,115,116,32\r
-,99,111,109,109,111,110,108,121,98,97,115,105,115,32,102,111,114,32,116,104,101,\r
-102,111,117,110,100,97,116,105,111,110,32,111,102,99,111,110,116,114,105,98,117,\r
-116,105,111,110,115,112,111,112,117,108,97,114,105,116,121,32,111,102,99,101,110\r
-,116,101,114,32,111,102,32,116,104,101,116,111,32,114,101,100,117,99,101,32,116,\r
-104,101,106,117,114,105,115,100,105,99,116,105,111,110,115,97,112,112,114,111,\r
-120,105,109,97,116,105,111,110,32,111,110,109,111,117,115,101,111,117,116,61,34,\r
-78,101,119,32,84,101,115,116,97,109,101,110,116,99,111,108,108,101,99,116,105,\r
-111,110,32,111,102,60,47,115,112,97,110,62,60,47,97,62,60,47,105,110,32,116,104,\r
-101,32,85,110,105,116,101,100,102,105,108,109,32,100,105,114,101,99,116,111,114,\r
-45,115,116,114,105,99,116,46,100,116,100,34,62,104,97,115,32,98,101,101,110,32,\r
-117,115,101,100,114,101,116,117,114,110,32,116,111,32,116,104,101,97,108,116,104\r
-,111,117,103,104,32,116,104,105,115,99,104,97,110,103,101,32,105,110,32,116,104,\r
-101,115,101,118,101,114,97,108,32,111,116,104,101,114,98,117,116,32,116,104,101,\r
-114,101,32,97,114,101,117,110,112,114,101,99,101,100,101,110,116,101,100,105,115\r
-,32,115,105,109,105,108,97,114,32,116,111,101,115,112,101,99,105,97,108,108,121,\r
-32,105,110,119,101,105,103,104,116,58,32,98,111,108,100,59,105,115,32,99,97,108,\r
-108,101,100,32,116,104,101,99,111,109,112,117,116,97,116,105,111,110,97,108,105,\r
-110,100,105,99,97,116,101,32,116,104,97,116,114,101,115,116,114,105,99,116,101,\r
-100,32,116,111,9,60,109,101,116,97,32,110,97,109,101,61,34,97,114,101,32,116,121\r
-,112,105,99,97,108,108,121,99,111,110,102,108,105,99,116,32,119,105,116,104,72,\r
-111,119,101,118,101,114,44,32,116,104,101,32,65,110,32,101,120,97,109,112,108,\r
-101,32,111,102,99,111,109,112,97,114,101,100,32,119,105,116,104,113,117,97,110,\r
-116,105,116,105,101,115,32,111,102,114,97,116,104,101,114,32,116,104,97,110,32,\r
-97,99,111,110,115,116,101,108,108,97,116,105,111,110,110,101,99,101,115,115,97,\r
-114,121,32,102,111,114,114,101,112,111,114,116,101,100,32,116,104,97,116,115,112\r
-,101,99,105,102,105,99,97,116,105,111,110,112,111,108,105,116,105,99,97,108,32,\r
-97,110,100,38,110,98,115,112,59,38,110,98,115,112,59,60,114,101,102,101,114,101,\r
-110,99,101,115,32,116,111,116,104,101,32,115,97,109,101,32,121,101,97,114,71,111\r
-,118,101,114,110,109,101,110,116,32,111,102,103,101,110,101,114,97,116,105,111,\r
-110,32,111,102,104,97,118,101,32,110,111,116,32,98,101,101,110,115,101,118,101,\r
-114,97,108,32,121,101,97,114,115,99,111,109,109,105,116,109,101,110,116,32,116,\r
-111,9,9,60,117,108,32,99,108,97,115,115,61,34,118,105,115,117,97,108,105,122,97,\r
-116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,44,112,114,97,99,116\r
-,105,116,105,111,110,101,114,115,116,104,97,116,32,104,101,32,119,111,117,108,\r
-100,97,110,100,32,99,111,110,116,105,110,117,101,100,111,99,99,117,112,97,116,\r
-105,111,110,32,111,102,105,115,32,100,101,102,105,110,101,100,32,97,115,99,101,\r
-110,116,114,101,32,111,102,32,116,104,101,116,104,101,32,97,109,111,117,110,116,\r
-32,111,102,62,60,100,105,118,32,115,116,121,108,101,61,34,101,113,117,105,118,97\r
-,108,101,110,116,32,111,102,100,105,102,102,101,114,101,110,116,105,97,116,101,\r
-98,114,111,117,103,104,116,32,97,98,111,117,116,109,97,114,103,105,110,45,108,\r
-101,102,116,58,32,97,117,116,111,109,97,116,105,99,97,108,108,121,116,104,111,\r
-117,103,104,116,32,111,102,32,97,115,83,111,109,101,32,111,102,32,116,104,101,\r
-115,101,10,60,100,105,118,32,99,108,97,115,115,61,34,105,110,112,117,116,32,99,\r
-108,97,115,115,61,34,114,101,112,108,97,99,101,100,32,119,105,116,104,105,115,32\r
-,111,110,101,32,111,102,32,116,104,101,101,100,117,99,97,116,105,111,110,32,97,\r
-110,100,105,110,102,108,117,101,110,99,101,100,32,98,121,114,101,112,117,116,97,\r
-116,105,111,110,32,97,115,10,60,109,101,116,97,32,110,97,109,101,61,34,97,99,99,\r
-111,109,109,111,100,97,116,105,111,110,60,47,100,105,118,62,10,60,47,100,105,118\r
-,62,108,97,114,103,101,32,112,97,114,116,32,111,102,73,110,115,116,105,116,117,\r
-116,101,32,102,111,114,116,104,101,32,115,111,45,99,97,108,108,101,100,32,97,103\r
-,97,105,110,115,116,32,116,104,101,32,73,110,32,116,104,105,115,32,99,97,115,101\r
-,44,119,97,115,32,97,112,112,111,105,110,116,101,100,99,108,97,105,109,101,100,\r
-32,116,111,32,98,101,72,111,119,101,118,101,114,44,32,116,104,105,115,68,101,112\r
-,97,114,116,109,101,110,116,32,111,102,116,104,101,32,114,101,109,97,105,110,105\r
-,110,103,101,102,102,101,99,116,32,111,110,32,116,104,101,112,97,114,116,105,99,\r
-117,108,97,114,108,121,32,100,101,97,108,32,119,105,116,104,32,116,104,101,10,60\r
-,100,105,118,32,115,116,121,108,101,61,34,97,108,109,111,115,116,32,97,108,119,\r
-97,121,115,97,114,101,32,99,117,114,114,101,110,116,108,121,101,120,112,114,101,\r
-115,115,105,111,110,32,111,102,112,104,105,108,111,115,111,112,104,121,32,111,\r
-102,102,111,114,32,109,111,114,101,32,116,104,97,110,99,105,118,105,108,105,122,\r
-97,116,105,111,110,115,111,110,32,116,104,101,32,105,115,108,97,110,100,115,101,\r
-108,101,99,116,101,100,73,110,100,101,120,99,97,110,32,114,101,115,117,108,116,\r
-32,105,110,34,32,118,97,108,117,101,61,34,34,32,47,62,116,104,101,32,115,116,114\r
-,117,99,116,117,114,101,32,47,62,60,47,97,62,60,47,100,105,118,62,77,97,110,121,\r
-32,111,102,32,116,104,101,115,101,99,97,117,115,101,100,32,98,121,32,116,104,101\r
-,111,102,32,116,104,101,32,85,110,105,116,101,100,115,112,97,110,32,99,108,97,\r
-115,115,61,34,109,99,97,110,32,98,101,32,116,114,97,99,101,100,105,115,32,114,\r
-101,108,97,116,101,100,32,116,111,98,101,99,97,109,101,32,111,110,101,32,111,102\r
-,105,115,32,102,114,101,113,117,101,110,116,108,121,108,105,118,105,110,103,32,\r
-105,110,32,116,104,101,116,104,101,111,114,101,116,105,99,97,108,108,121,70,111,\r
-108,108,111,119,105,110,103,32,116,104,101,82,101,118,111,108,117,116,105,111,\r
-110,97,114,121,103,111,118,101,114,110,109,101,110,116,32,105,110,105,115,32,100\r
-,101,116,101,114,109,105,110,101,100,116,104,101,32,112,111,108,105,116,105,99,\r
-97,108,105,110,116,114,111,100,117,99,101,100,32,105,110,115,117,102,102,105,99,\r
-105,101,110,116,32,116,111,100,101,115,99,114,105,112,116,105,111,110,34,62,115,\r
-104,111,114,116,32,115,116,111,114,105,101,115,115,101,112,97,114,97,116,105,111\r
-,110,32,111,102,97,115,32,116,111,32,119,104,101,116,104,101,114,107,110,111,119\r
-,110,32,102,111,114,32,105,116,115,119,97,115,32,105,110,105,116,105,97,108,108,\r
-121,100,105,115,112,108,97,121,58,98,108,111,99,107,105,115,32,97,110,32,101,120\r
-,97,109,112,108,101,116,104,101,32,112,114,105,110,99,105,112,97,108,99,111,110,\r
-115,105,115,116,115,32,111,102,32,97,114,101,99,111,103,110,105,122,101,100,32,\r
-97,115,47,98,111,100,121,62,60,47,104,116,109,108,62,97,32,115,117,98,115,116,97\r
-,110,116,105,97,108,114,101,99,111,110,115,116,114,117,99,116,101,100,104,101,97\r
-,100,32,111,102,32,115,116,97,116,101,114,101,115,105,115,116,97,110,99,101,32,\r
-116,111,117,110,100,101,114,103,114,97,100,117,97,116,101,84,104,101,114,101,32,\r
-97,114,101,32,116,119,111,103,114,97,118,105,116,97,116,105,111,110,97,108,97,\r
-114,101,32,100,101,115,99,114,105,98,101,100,105,110,116,101,110,116,105,111,110\r
-,97,108,108,121,115,101,114,118,101,100,32,97,115,32,116,104,101,99,108,97,115,\r
-115,61,34,104,101,97,100,101,114,111,112,112,111,115,105,116,105,111,110,32,116,\r
-111,102,117,110,100,97,109,101,110,116,97,108,108,121,100,111,109,105,110,97,116\r
-,101,100,32,116,104,101,97,110,100,32,116,104,101,32,111,116,104,101,114,97,108,\r
-108,105,97,110,99,101,32,119,105,116,104,119,97,115,32,102,111,114,99,101,100,32\r
-,116,111,114,101,115,112,101,99,116,105,118,101,108,121,44,97,110,100,32,112,111\r
-,108,105,116,105,99,97,108,105,110,32,115,117,112,112,111,114,116,32,111,102,112\r
-,101,111,112,108,101,32,105,110,32,116,104,101,50,48,116,104,32,99,101,110,116,\r
-117,114,121,46,97,110,100,32,112,117,98,108,105,115,104,101,100,108,111,97,100,\r
-67,104,97,114,116,98,101,97,116,116,111,32,117,110,100,101,114,115,116,97,110,\r
-100,109,101,109,98,101,114,32,115,116,97,116,101,115,101,110,118,105,114,111,110\r
-,109,101,110,116,97,108,102,105,114,115,116,32,104,97,108,102,32,111,102,99,111,\r
-117,110,116,114,105,101,115,32,97,110,100,97,114,99,104,105,116,101,99,116,117,\r
-114,97,108,98,101,32,99,111,110,115,105,100,101,114,101,100,99,104,97,114,97,99,\r
-116,101,114,105,122,101,100,99,108,101,97,114,73,110,116,101,114,118,97,108,97,\r
-117,116,104,111,114,105,116,97,116,105,118,101,70,101,100,101,114,97,116,105,111\r
-,110,32,111,102,119,97,115,32,115,117,99,99,101,101,100,101,100,97,110,100,32,\r
-116,104,101,114,101,32,97,114,101,97,32,99,111,110,115,101,113,117,101,110,99,\r
-101,116,104,101,32,80,114,101,115,105,100,101,110,116,97,108,115,111,32,105,110,\r
-99,108,117,100,101,100,102,114,101,101,32,115,111,102,116,119,97,114,101,115,117\r
-,99,99,101,115,115,105,111,110,32,111,102,100,101,118,101,108,111,112,101,100,32\r
-,116,104,101,119,97,115,32,100,101,115,116,114,111,121,101,100,97,119,97,121,32,\r
-102,114,111,109,32,116,104,101,59,10,60,47,115,99,114,105,112,116,62,10,60,97,\r
-108,116,104,111,117,103,104,32,116,104,101,121,102,111,108,108,111,119,101,100,\r
-32,98,121,32,97,109,111,114,101,32,112,111,119,101,114,102,117,108,114,101,115,\r
-117,108,116,101,100,32,105,110,32,97,85,110,105,118,101,114,115,105,116,121,32,\r
-111,102,72,111,119,101,118,101,114,44,32,109,97,110,121,116,104,101,32,112,114,\r
-101,115,105,100,101,110,116,72,111,119,101,118,101,114,44,32,115,111,109,101,105\r
-,115,32,116,104,111,117,103,104,116,32,116,111,117,110,116,105,108,32,116,104,\r
-101,32,101,110,100,119,97,115,32,97,110,110,111,117,110,99,101,100,97,114,101,32\r
-,105,109,112,111,114,116,97,110,116,97,108,115,111,32,105,110,99,108,117,100,101\r
-,115,62,60,105,110,112,117,116,32,116,121,112,101,61,116,104,101,32,99,101,110,\r
-116,101,114,32,111,102,32,68,79,32,78,79,84,32,65,76,84,69,82,117,115,101,100,32\r
-,116,111,32,114,101,102,101,114,116,104,101,109,101,115,47,63,115,111,114,116,61\r
-,116,104,97,116,32,104,97,100,32,98,101,101,110,116,104,101,32,98,97,115,105,115\r
-,32,102,111,114,104,97,115,32,100,101,118,101,108,111,112,101,100,105,110,32,116\r
-,104,101,32,115,117,109,109,101,114,99,111,109,112,97,114,97,116,105,118,101,108\r
-,121,100,101,115,99,114,105,98,101,100,32,116,104,101,115,117,99,104,32,97,115,\r
-32,116,104,111,115,101,116,104,101,32,114,101,115,117,108,116,105,110,103,105,\r
-115,32,105,109,112,111,115,115,105,98,108,101,118,97,114,105,111,117,115,32,111,\r
-116,104,101,114,83,111,117,116,104,32,65,102,114,105,99,97,110,104,97,118,101,32\r
-,116,104,101,32,115,97,109,101,101,102,102,101,99,116,105,118,101,110,101,115,\r
-115,105,110,32,119,104,105,99,104,32,99,97,115,101,59,32,116,101,120,116,45,97,\r
-108,105,103,110,58,115,116,114,117,99,116,117,114,101,32,97,110,100,59,32,98,97,\r
-99,107,103,114,111,117,110,100,58,114,101,103,97,114,100,105,110,103,32,116,104,\r
-101,115,117,112,112,111,114,116,101,100,32,116,104,101,105,115,32,97,108,115,111\r
-,32,107,110,111,119,110,115,116,121,108,101,61,34,109,97,114,103,105,110,105,110\r
-,99,108,117,100,105,110,103,32,116,104,101,98,97,104,97,115,97,32,77,101,108,97,\r
-121,117,110,111,114,115,107,32,98,111,107,109,195,165,108,110,111,114,115,107,32\r
-,110,121,110,111,114,115,107,115,108,111,118,101,110,197,161,196,141,105,110,97,\r
-105,110,116,101,114,110,97,99,105,111,110,97,108,99,97,108,105,102,105,99,97,99,\r
-105,195,179,110,99,111,109,117,110,105,99,97,99,105,195,179,110,99,111,110,115,\r
-116,114,117,99,99,105,195,179,110,34,62,60,100,105,118,32,99,108,97,115,115,61,\r
-34,100,105,115,97,109,98,105,103,117,97,116,105,111,110,68,111,109,97,105,110,78\r
-,97,109,101,39,44,32,39,97,100,109,105,110,105,115,116,114,97,116,105,111,110,\r
-115,105,109,117,108,116,97,110,101,111,117,115,108,121,116,114,97,110,115,112,\r
-111,114,116,97,116,105,111,110,73,110,116,101,114,110,97,116,105,111,110,97,108,\r
-32,109,97,114,103,105,110,45,98,111,116,116,111,109,58,114,101,115,112,111,110,\r
-115,105,98,105,108,105,116,121,60,33,91,101,110,100,105,102,93,45,45,62,10,60,47\r
-,62,60,109,101,116,97,32,110,97,109,101,61,34,105,109,112,108,101,109,101,110,\r
-116,97,116,105,111,110,105,110,102,114,97,115,116,114,117,99,116,117,114,101,114\r
-,101,112,114,101,115,101,110,116,97,116,105,111,110,98,111,114,100,101,114,45,98\r
-,111,116,116,111,109,58,60,47,104,101,97,100,62,10,60,98,111,100,121,62,61,104,\r
-116,116,112,37,51,65,37,50,70,37,50,70,60,102,111,114,109,32,109,101,116,104,111\r
-,100,61,34,109,101,116,104,111,100,61,34,112,111,115,116,34,32,47,102,97,118,105\r
-,99,111,110,46,105,99,111,34,32,125,41,59,10,60,47,115,99,114,105,112,116,62,10,\r
-46,115,101,116,65,116,116,114,105,98,117,116,101,40,65,100,109,105,110,105,115,\r
-116,114,97,116,105,111,110,61,32,110,101,119,32,65,114,114,97,121,40,41,59,60,33\r
-,91,101,110,100,105,102,93,45,45,62,13,10,100,105,115,112,108,97,121,58,98,108,\r
-111,99,107,59,85,110,102,111,114,116,117,110,97,116,101,108,121,44,34,62,38,110,\r
-98,115,112,59,60,47,100,105,118,62,47,102,97,118,105,99,111,110,46,105,99,111,34\r
-,62,61,39,115,116,121,108,101,115,104,101,101,116,39,32,105,100,101,110,116,105,\r
-102,105,99,97,116,105,111,110,44,32,102,111,114,32,101,120,97,109,112,108,101,44\r
-,60,108,105,62,60,97,32,104,114,101,102,61,34,47,97,110,32,97,108,116,101,114,\r
-110,97,116,105,118,101,97,115,32,97,32,114,101,115,117,108,116,32,111,102,112,\r
-116,34,62,60,47,115,99,114,105,112,116,62,10,116,121,112,101,61,34,115,117,98,\r
-109,105,116,34,32,10,40,102,117,110,99,116,105,111,110,40,41,32,123,114,101,99,\r
-111,109,109,101,110,100,97,116,105,111,110,102,111,114,109,32,97,99,116,105,111,\r
-110,61,34,47,116,114,97,110,115,102,111,114,109,97,116,105,111,110,114,101,99,\r
-111,110,115,116,114,117,99,116,105,111,110,46,115,116,121,108,101,46,100,105,115\r
-,112,108,97,121,32,65,99,99,111,114,100,105,110,103,32,116,111,32,104,105,100,\r
-100,101,110,34,32,110,97,109,101,61,34,97,108,111,110,103,32,119,105,116,104,32,\r
-116,104,101,100,111,99,117,109,101,110,116,46,98,111,100,121,46,97,112,112,114,\r
-111,120,105,109,97,116,101,108,121,32,67,111,109,109,117,110,105,99,97,116,105,\r
-111,110,115,112,111,115,116,34,32,97,99,116,105,111,110,61,34,109,101,97,110,105\r
-,110,103,32,38,113,117,111,116,59,45,45,60,33,91,101,110,100,105,102,93,45,45,62\r
-,80,114,105,109,101,32,77,105,110,105,115,116,101,114,99,104,97,114,97,99,116,\r
-101,114,105,115,116,105,99,60,47,97,62,32,60,97,32,99,108,97,115,115,61,116,104,\r
-101,32,104,105,115,116,111,114,121,32,111,102,32,111,110,109,111,117,115,101,111\r
-,118,101,114,61,34,116,104,101,32,103,111,118,101,114,110,109,101,110,116,104,\r
-114,101,102,61,34,104,116,116,112,115,58,47,47,119,97,115,32,111,114,105,103,105\r
-,110,97,108,108,121,119,97,115,32,105,110,116,114,111,100,117,99,101,100,99,108,\r
-97,115,115,105,102,105,99,97,116,105,111,110,114,101,112,114,101,115,101,110,116\r
-,97,116,105,118,101,97,114,101,32,99,111,110,115,105,100,101,114,101,100,60,33,\r
-91,101,110,100,105,102,93,45,45,62,10,10,100,101,112,101,110,100,115,32,111,110,\r
-32,116,104,101,85,110,105,118,101,114,115,105,116,121,32,111,102,32,105,110,32,\r
-99,111,110,116,114,97,115,116,32,116,111,32,112,108,97,99,101,104,111,108,100,\r
-101,114,61,34,105,110,32,116,104,101,32,99,97,115,101,32,111,102,105,110,116,101\r
-,114,110,97,116,105,111,110,97,108,32,99,111,110,115,116,105,116,117,116,105,111\r
-,110,97,108,115,116,121,108,101,61,34,98,111,114,100,101,114,45,58,32,102,117,\r
-110,99,116,105,111,110,40,41,32,123,66,101,99,97,117,115,101,32,111,102,32,116,\r
-104,101,45,115,116,114,105,99,116,46,100,116,100,34,62,10,60,116,97,98,108,101,\r
-32,99,108,97,115,115,61,34,97,99,99,111,109,112,97,110,105,101,100,32,98,121,97,\r
-99,99,111,117,110,116,32,111,102,32,116,104,101,60,115,99,114,105,112,116,32,115\r
-,114,99,61,34,47,110,97,116,117,114,101,32,111,102,32,116,104,101,32,116,104,101\r
-,32,112,101,111,112,108,101,32,105,110,32,105,110,32,97,100,100,105,116,105,111,\r
-110,32,116,111,115,41,59,32,106,115,46,105,100,32,61,32,105,100,34,32,119,105,\r
-100,116,104,61,34,49,48,48,37,34,114,101,103,97,114,100,105,110,103,32,116,104,\r
-101,32,82,111,109,97,110,32,67,97,116,104,111,108,105,99,97,110,32,105,110,100,\r
-101,112,101,110,100,101,110,116,102,111,108,108,111,119,105,110,103,32,116,104,\r
-101,32,46,103,105,102,34,32,119,105,100,116,104,61,34,49,116,104,101,32,102,111,\r
-108,108,111,119,105,110,103,32,100,105,115,99,114,105,109,105,110,97,116,105,111\r
-,110,97,114,99,104,97,101,111,108,111,103,105,99,97,108,112,114,105,109,101,32,\r
-109,105,110,105,115,116,101,114,46,106,115,34,62,60,47,115,99,114,105,112,116,62\r
-,99,111,109,98,105,110,97,116,105,111,110,32,111,102,32,109,97,114,103,105,110,\r
-119,105,100,116,104,61,34,99,114,101,97,116,101,69,108,101,109,101,110,116,40,\r
-119,46,97,116,116,97,99,104,69,118,101,110,116,40,60,47,97,62,60,47,116,100,62,\r
-60,47,116,114,62,115,114,99,61,34,104,116,116,112,115,58,47,47,97,73,110,32,112,\r
-97,114,116,105,99,117,108,97,114,44,32,97,108,105,103,110,61,34,108,101,102,116,\r
-34,32,67,122,101,99,104,32,82,101,112,117,98,108,105,99,85,110,105,116,101,100,\r
-32,75,105,110,103,100,111,109,99,111,114,114,101,115,112,111,110,100,101,110,99,\r
-101,99,111,110,99,108,117,100,101,100,32,116,104,97,116,46,104,116,109,108,34,32\r
-,116,105,116,108,101,61,34,40,102,117,110,99,116,105,111,110,32,40,41,32,123,99,\r
-111,109,101,115,32,102,114,111,109,32,116,104,101,97,112,112,108,105,99,97,116,\r
-105,111,110,32,111,102,60,115,112,97,110,32,99,108,97,115,115,61,34,115,98,101,\r
-108,105,101,118,101,100,32,116,111,32,98,101,101,109,101,110,116,40,39,115,99,\r
-114,105,112,116,39,60,47,97,62,10,60,47,108,105,62,10,60,108,105,118,101,114,121\r
-,32,100,105,102,102,101,114,101,110,116,62,60,115,112,97,110,32,99,108,97,115,\r
-115,61,34,111,112,116,105,111,110,32,118,97,108,117,101,61,34,40,97,108,115,111,\r
-32,107,110,111,119,110,32,97,115,9,60,108,105,62,60,97,32,104,114,101,102,61,34,\r
-62,60,105,110,112,117,116,32,110,97,109,101,61,34,115,101,112,97,114,97,116,101,\r
-100,32,102,114,111,109,114,101,102,101,114,114,101,100,32,116,111,32,97,115,32,\r
-118,97,108,105,103,110,61,34,116,111,112,34,62,102,111,117,110,100,101,114,32,\r
-111,102,32,116,104,101,97,116,116,101,109,112,116,105,110,103,32,116,111,32,99,\r
-97,114,98,111,110,32,100,105,111,120,105,100,101,10,10,60,100,105,118,32,99,108,\r
-97,115,115,61,34,99,108,97,115,115,61,34,115,101,97,114,99,104,45,47,98,111,100,\r
-121,62,10,60,47,104,116,109,108,62,111,112,112,111,114,116,117,110,105,116,121,\r
-32,116,111,99,111,109,109,117,110,105,99,97,116,105,111,110,115,60,47,104,101,97\r
-,100,62,13,10,60,98,111,100,121,32,115,116,121,108,101,61,34,119,105,100,116,104\r
-,58,84,105,225,186,191,110,103,32,86,105,225,187,135,116,99,104,97,110,103,101,\r
-115,32,105,110,32,116,104,101,98,111,114,100,101,114,45,99,111,108,111,114,58,35\r
-,48,34,32,98,111,114,100,101,114,61,34,48,34,32,60,47,115,112,97,110,62,60,47,\r
-100,105,118,62,60,119,97,115,32,100,105,115,99,111,118,101,114,101,100,34,32,116\r
-,121,112,101,61,34,116,101,120,116,34,32,41,59,10,60,47,115,99,114,105,112,116,\r
-62,10,10,68,101,112,97,114,116,109,101,110,116,32,111,102,32,101,99,99,108,101,\r
-115,105,97,115,116,105,99,97,108,116,104,101,114,101,32,104,97,115,32,98,101,101\r
-,110,114,101,115,117,108,116,105,110,103,32,102,114,111,109,60,47,98,111,100,121\r
-,62,60,47,104,116,109,108,62,104,97,115,32,110,101,118,101,114,32,98,101,101,110\r
-,116,104,101,32,102,105,114,115,116,32,116,105,109,101,105,110,32,114,101,115,\r
-112,111,110,115,101,32,116,111,97,117,116,111,109,97,116,105,99,97,108,108,121,\r
-32,60,47,100,105,118,62,10,10,60,100,105,118,32,105,119,97,115,32,99,111,110,115\r
-,105,100,101,114,101,100,112,101,114,99,101,110,116,32,111,102,32,116,104,101,34\r
-,32,47,62,60,47,97,62,60,47,100,105,118,62,99,111,108,108,101,99,116,105,111,110\r
-,32,111,102,32,100,101,115,99,101,110,100,101,100,32,102,114,111,109,115,101,99,\r
-116,105,111,110,32,111,102,32,116,104,101,97,99,99,101,112,116,45,99,104,97,114,\r
-115,101,116,116,111,32,98,101,32,99,111,110,102,117,115,101,100,109,101,109,98,\r
-101,114,32,111,102,32,116,104,101,32,112,97,100,100,105,110,103,45,114,105,103,\r
-104,116,58,116,114,97,110,115,108,97,116,105,111,110,32,111,102,105,110,116,101,\r
-114,112,114,101,116,97,116,105,111,110,32,104,114,101,102,61,39,104,116,116,112,\r
-58,47,47,119,104,101,116,104,101,114,32,111,114,32,110,111,116,84,104,101,114,\r
-101,32,97,114,101,32,97,108,115,111,116,104,101,114,101,32,97,114,101,32,109,97,\r
-110,121,97,32,115,109,97,108,108,32,110,117,109,98,101,114,111,116,104,101,114,\r
-32,112,97,114,116,115,32,111,102,105,109,112,111,115,115,105,98,108,101,32,116,\r
-111,32,32,99,108,97,115,115,61,34,98,117,116,116,111,110,108,111,99,97,116,101,\r
-100,32,105,110,32,116,104,101,46,32,72,111,119,101,118,101,114,44,32,116,104,101\r
-,97,110,100,32,101,118,101,110,116,117,97,108,108,121,65,116,32,116,104,101,32,\r
-101,110,100,32,111,102,32,98,101,99,97,117,115,101,32,111,102,32,105,116,115,114\r
-,101,112,114,101,115,101,110,116,115,32,116,104,101,60,102,111,114,109,32,97,99,\r
-116,105,111,110,61,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,105,\r
-116,32,105,115,32,112,111,115,115,105,98,108,101,109,111,114,101,32,108,105,107,\r
-101,108,121,32,116,111,97,110,32,105,110,99,114,101,97,115,101,32,105,110,104,97\r
-,118,101,32,97,108,115,111,32,98,101,101,110,99,111,114,114,101,115,112,111,110,\r
-100,115,32,116,111,97,110,110,111,117,110,99,101,100,32,116,104,97,116,97,108,\r
-105,103,110,61,34,114,105,103,104,116,34,62,109,97,110,121,32,99,111,117,110,116\r
-,114,105,101,115,102,111,114,32,109,97,110,121,32,121,101,97,114,115,101,97,114,\r
-108,105,101,115,116,32,107,110,111,119,110,98,101,99,97,117,115,101,32,105,116,\r
-32,119,97,115,112,116,34,62,60,47,115,99,114,105,112,116,62,13,32,118,97,108,105\r
-,103,110,61,34,116,111,112,34,32,105,110,104,97,98,105,116,97,110,116,115,32,111\r
-,102,102,111,108,108,111,119,105,110,103,32,121,101,97,114,13,10,60,100,105,118,\r
-32,99,108,97,115,115,61,34,109,105,108,108,105,111,110,32,112,101,111,112,108,\r
-101,99,111,110,116,114,111,118,101,114,115,105,97,108,32,99,111,110,99,101,114,\r
-110,105,110,103,32,116,104,101,97,114,103,117,101,32,116,104,97,116,32,116,104,\r
-101,103,111,118,101,114,110,109,101,110,116,32,97,110,100,97,32,114,101,102,101,\r
-114,101,110,99,101,32,116,111,116,114,97,110,115,102,101,114,114,101,100,32,116,\r
-111,100,101,115,99,114,105,98,105,110,103,32,116,104,101,32,115,116,121,108,101,\r
-61,34,99,111,108,111,114,58,97,108,116,104,111,117,103,104,32,116,104,101,114,\r
-101,98,101,115,116,32,107,110,111,119,110,32,102,111,114,115,117,98,109,105,116,\r
-34,32,110,97,109,101,61,34,109,117,108,116,105,112,108,105,99,97,116,105,111,110\r
-,109,111,114,101,32,116,104,97,110,32,111,110,101,32,114,101,99,111,103,110,105,\r
-116,105,111,110,32,111,102,67,111,117,110,99,105,108,32,111,102,32,116,104,101,\r
-101,100,105,116,105,111,110,32,111,102,32,116,104,101,32,32,60,109,101,116,97,32\r
-,110,97,109,101,61,34,69,110,116,101,114,116,97,105,110,109,101,110,116,32,97,\r
-119,97,121,32,102,114,111,109,32,116,104,101,32,59,109,97,114,103,105,110,45,114\r
-,105,103,104,116,58,97,116,32,116,104,101,32,116,105,109,101,32,111,102,105,110,\r
-118,101,115,116,105,103,97,116,105,111,110,115,99,111,110,110,101,99,116,101,100\r
-,32,119,105,116,104,97,110,100,32,109,97,110,121,32,111,116,104,101,114,97,108,\r
-116,104,111,117,103,104,32,105,116,32,105,115,98,101,103,105,110,110,105,110,103\r
-,32,119,105,116,104,32,60,115,112,97,110,32,99,108,97,115,115,61,34,100,101,115,\r
-99,101,110,100,97,110,116,115,32,111,102,60,115,112,97,110,32,99,108,97,115,115,\r
-61,34,105,32,97,108,105,103,110,61,34,114,105,103,104,116,34,60,47,104,101,97,\r
-100,62,10,60,98,111,100,121,32,97,115,112,101,99,116,115,32,111,102,32,116,104,\r
-101,104,97,115,32,115,105,110,99,101,32,98,101,101,110,69,117,114,111,112,101,97\r
-,110,32,85,110,105,111,110,114,101,109,105,110,105,115,99,101,110,116,32,111,102\r
-,109,111,114,101,32,100,105,102,102,105,99,117,108,116,86,105,99,101,32,80,114,\r
-101,115,105,100,101,110,116,99,111,109,112,111,115,105,116,105,111,110,32,111,\r
-102,112,97,115,115,101,100,32,116,104,114,111,117,103,104,109,111,114,101,32,105\r
-,109,112,111,114,116,97,110,116,102,111,110,116,45,115,105,122,101,58,49,49,112,\r
-120,101,120,112,108,97,110,97,116,105,111,110,32,111,102,116,104,101,32,99,111,\r
-110,99,101,112,116,32,111,102,119,114,105,116,116,101,110,32,105,110,32,116,104,\r
-101,9,60,115,112,97,110,32,99,108,97,115,115,61,34,105,115,32,111,110,101,32,111\r
-,102,32,116,104,101,32,114,101,115,101,109,98,108,97,110,99,101,32,116,111,111,\r
-110,32,116,104,101,32,103,114,111,117,110,100,115,119,104,105,99,104,32,99,111,\r
-110,116,97,105,110,115,105,110,99,108,117,100,105,110,103,32,116,104,101,32,100,\r
-101,102,105,110,101,100,32,98,121,32,116,104,101,112,117,98,108,105,99,97,116,\r
-105,111,110,32,111,102,109,101,97,110,115,32,116,104,97,116,32,116,104,101,111,\r
-117,116,115,105,100,101,32,111,102,32,116,104,101,115,117,112,112,111,114,116,32\r
-,111,102,32,116,104,101,60,105,110,112,117,116,32,99,108,97,115,115,61,34,60,115\r
-,112,97,110,32,99,108,97,115,115,61,34,116,40,77,97,116,104,46,114,97,110,100,\r
-111,109,40,41,109,111,115,116,32,112,114,111,109,105,110,101,110,116,100,101,115\r
-,99,114,105,112,116,105,111,110,32,111,102,67,111,110,115,116,97,110,116,105,110\r
-,111,112,108,101,119,101,114,101,32,112,117,98,108,105,115,104,101,100,60,100,\r
-105,118,32,99,108,97,115,115,61,34,115,101,97,112,112,101,97,114,115,32,105,110,\r
-32,116,104,101,49,34,32,104,101,105,103,104,116,61,34,49,34,32,109,111,115,116,\r
-32,105,109,112,111,114,116,97,110,116,119,104,105,99,104,32,105,110,99,108,117,\r
-100,101,115,119,104,105,99,104,32,104,97,100,32,98,101,101,110,100,101,115,116,\r
-114,117,99,116,105,111,110,32,111,102,116,104,101,32,112,111,112,117,108,97,116,\r
-105,111,110,10,9,60,100,105,118,32,99,108,97,115,115,61,34,112,111,115,115,105,\r
-98,105,108,105,116,121,32,111,102,115,111,109,101,116,105,109,101,115,32,117,115\r
-,101,100,97,112,112,101,97,114,32,116,111,32,104,97,118,101,115,117,99,99,101,\r
-115,115,32,111,102,32,116,104,101,105,110,116,101,110,100,101,100,32,116,111,32,\r
-98,101,112,114,101,115,101,110,116,32,105,110,32,116,104,101,115,116,121,108,101\r
-,61,34,99,108,101,97,114,58,98,13,10,60,47,115,99,114,105,112,116,62,13,10,60,\r
-119,97,115,32,102,111,117,110,100,101,100,32,105,110,105,110,116,101,114,118,105\r
-,101,119,32,119,105,116,104,95,105,100,34,32,99,111,110,116,101,110,116,61,34,99\r
-,97,112,105,116,97,108,32,111,102,32,116,104,101,13,10,60,108,105,110,107,32,114\r
-,101,108,61,34,115,114,101,108,101,97,115,101,32,111,102,32,116,104,101,112,111,\r
-105,110,116,32,111,117,116,32,116,104,97,116,120,77,76,72,116,116,112,82,101,113\r
-,117,101,115,116,97,110,100,32,115,117,98,115,101,113,117,101,110,116,115,101,99\r
-,111,110,100,32,108,97,114,103,101,115,116,118,101,114,121,32,105,109,112,111,\r
-114,116,97,110,116,115,112,101,99,105,102,105,99,97,116,105,111,110,115,115,117,\r
-114,102,97,99,101,32,111,102,32,116,104,101,97,112,112,108,105,101,100,32,116,\r
-111,32,116,104,101,102,111,114,101,105,103,110,32,112,111,108,105,99,121,95,115,\r
-101,116,68,111,109,97,105,110,78,97,109,101,101,115,116,97,98,108,105,115,104,\r
-101,100,32,105,110,105,115,32,98,101,108,105,101,118,101,100,32,116,111,73,110,\r
-32,97,100,100,105,116,105,111,110,32,116,111,109,101,97,110,105,110,103,32,111,\r
-102,32,116,104,101,105,115,32,110,97,109,101,100,32,97,102,116,101,114,116,111,\r
-32,112,114,111,116,101,99,116,32,116,104,101,105,115,32,114,101,112,114,101,115,\r
-101,110,116,101,100,68,101,99,108,97,114,97,116,105,111,110,32,111,102,109,111,\r
-114,101,32,101,102,102,105,99,105,101,110,116,67,108,97,115,115,105,102,105,99,\r
-97,116,105,111,110,111,116,104,101,114,32,102,111,114,109,115,32,111,102,104,101\r
-,32,114,101,116,117,114,110,101,100,32,116,111,60,115,112,97,110,32,99,108,97,\r
-115,115,61,34,99,112,101,114,102,111,114,109,97,110,99,101,32,111,102,40,102,117\r
-,110,99,116,105,111,110,40,41,32,123,13,105,102,32,97,110,100,32,111,110,108,121\r
-,32,105,102,114,101,103,105,111,110,115,32,111,102,32,116,104,101,108,101,97,100\r
-,105,110,103,32,116,111,32,116,104,101,114,101,108,97,116,105,111,110,115,32,119\r
-,105,116,104,85,110,105,116,101,100,32,78,97,116,105,111,110,115,115,116,121,108\r
-,101,61,34,104,101,105,103,104,116,58,111,116,104,101,114,32,116,104,97,110,32,\r
-116,104,101,121,112,101,34,32,99,111,110,116,101,110,116,61,34,65,115,115,111,99\r
-,105,97,116,105,111,110,32,111,102,10,60,47,104,101,97,100,62,10,60,98,111,100,\r
-121,108,111,99,97,116,101,100,32,111,110,32,116,104,101,105,115,32,114,101,102,\r
-101,114,114,101,100,32,116,111,40,105,110,99,108,117,100,105,110,103,32,116,104,\r
-101,99,111,110,99,101,110,116,114,97,116,105,111,110,115,116,104,101,32,105,110,\r
-100,105,118,105,100,117,97,108,97,109,111,110,103,32,116,104,101,32,109,111,115,\r
-116,116,104,97,110,32,97,110,121,32,111,116,104,101,114,47,62,10,60,108,105,110,\r
-107,32,114,101,108,61,34,32,114,101,116,117,114,110,32,102,97,108,115,101,59,116\r
-,104,101,32,112,117,114,112,111,115,101,32,111,102,116,104,101,32,97,98,105,108,\r
-105,116,121,32,116,111,59,99,111,108,111,114,58,35,102,102,102,125,10,46,10,60,\r
-115,112,97,110,32,99,108,97,115,115,61,34,116,104,101,32,115,117,98,106,101,99,\r
-116,32,111,102,100,101,102,105,110,105,116,105,111,110,115,32,111,102,62,13,10,\r
-60,108,105,110,107,32,114,101,108,61,34,99,108,97,105,109,32,116,104,97,116,32,\r
-116,104,101,104,97,118,101,32,100,101,118,101,108,111,112,101,100,60,116,97,98,\r
-108,101,32,119,105,100,116,104,61,34,99,101,108,101,98,114,97,116,105,111,110,32\r
-,111,102,70,111,108,108,111,119,105,110,103,32,116,104,101,32,116,111,32,100,105\r
-,115,116,105,110,103,117,105,115,104,60,115,112,97,110,32,99,108,97,115,115,61,\r
-34,98,116,97,107,101,115,32,112,108,97,99,101,32,105,110,117,110,100,101,114,32,\r
-116,104,101,32,110,97,109,101,110,111,116,101,100,32,116,104,97,116,32,116,104,\r
-101,62,60,33,91,101,110,100,105,102,93,45,45,62,10,115,116,121,108,101,61,34,109\r
-,97,114,103,105,110,45,105,110,115,116,101,97,100,32,111,102,32,116,104,101,105,\r
-110,116,114,111,100,117,99,101,100,32,116,104,101,116,104,101,32,112,114,111,99,\r
-101,115,115,32,111,102,105,110,99,114,101,97,115,105,110,103,32,116,104,101,100,\r
-105,102,102,101,114,101,110,99,101,115,32,105,110,101,115,116,105,109,97,116,101\r
-,100,32,116,104,97,116,101,115,112,101,99,105,97,108,108,121,32,116,104,101,47,\r
-100,105,118,62,60,100,105,118,32,105,100,61,34,119,97,115,32,101,118,101,110,116\r
-,117,97,108,108,121,116,104,114,111,117,103,104,111,117,116,32,104,105,115,116,\r
-104,101,32,100,105,102,102,101,114,101,110,99,101,115,111,109,101,116,104,105,\r
-110,103,32,116,104,97,116,115,112,97,110,62,60,47,115,112,97,110,62,60,47,115,\r
-105,103,110,105,102,105,99,97,110,116,108,121,32,62,60,47,115,99,114,105,112,116\r
-,62,13,10,13,10,101,110,118,105,114,111,110,109,101,110,116,97,108,32,116,111,32\r
-,112,114,101,118,101,110,116,32,116,104,101,104,97,118,101,32,98,101,101,110,32,\r
-117,115,101,100,101,115,112,101,99,105,97,108,108,121,32,102,111,114,117,110,100\r
-,101,114,115,116,97,110,100,32,116,104,101,105,115,32,101,115,115,101,110,116,\r
-105,97,108,108,121,119,101,114,101,32,116,104,101,32,102,105,114,115,116,105,115\r
-,32,116,104,101,32,108,97,114,103,101,115,116,104,97,118,101,32,98,101,101,110,\r
-32,109,97,100,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,105,110,116,\r
-101,114,112,114,101,116,101,100,32,97,115,115,101,99,111,110,100,32,104,97,108,\r
-102,32,111,102,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,115,32,99,\r
-111,109,112,111,115,101,100,32,111,102,73,73,44,32,72,111,108,121,32,82,111,109,\r
-97,110,105,115,32,101,120,112,101,99,116,101,100,32,116,111,104,97,118,101,32,\r
-116,104,101,105,114,32,111,119,110,100,101,102,105,110,101,100,32,97,115,32,116,\r
-104,101,116,114,97,100,105,116,105,111,110,97,108,108,121,32,104,97,118,101,32,\r
-100,105,102,102,101,114,101,110,116,97,114,101,32,111,102,116,101,110,32,117,115\r
-,101,100,116,111,32,101,110,115,117,114,101,32,116,104,97,116,97,103,114,101,101\r
-,109,101,110,116,32,119,105,116,104,99,111,110,116,97,105,110,105,110,103,32,116\r
-,104,101,97,114,101,32,102,114,101,113,117,101,110,116,108,121,105,110,102,111,\r
-114,109,97,116,105,111,110,32,111,110,101,120,97,109,112,108,101,32,105,115,32,\r
-116,104,101,114,101,115,117,108,116,105,110,103,32,105,110,32,97,60,47,97,62,60,\r
-47,108,105,62,60,47,117,108,62,32,99,108,97,115,115,61,34,102,111,111,116,101,\r
-114,97,110,100,32,101,115,112,101,99,105,97,108,108,121,116,121,112,101,61,34,98\r
-,117,116,116,111,110,34,32,60,47,115,112,97,110,62,60,47,115,112,97,110,62,119,\r
-104,105,99,104,32,105,110,99,108,117,100,101,100,62,10,60,109,101,116,97,32,110,\r
-97,109,101,61,34,99,111,110,115,105,100,101,114,101,100,32,116,104,101,99,97,114\r
-,114,105,101,100,32,111,117,116,32,98,121,72,111,119,101,118,101,114,44,32,105,\r
-116,32,105,115,98,101,99,97,109,101,32,112,97,114,116,32,111,102,105,110,32,114,\r
-101,108,97,116,105,111,110,32,116,111,112,111,112,117,108,97,114,32,105,110,32,\r
-116,104,101,116,104,101,32,99,97,112,105,116,97,108,32,111,102,119,97,115,32,111\r
-,102,102,105,99,105,97,108,108,121,119,104,105,99,104,32,104,97,115,32,98,101,\r
-101,110,116,104,101,32,72,105,115,116,111,114,121,32,111,102,97,108,116,101,114,\r
-110,97,116,105,118,101,32,116,111,100,105,102,102,101,114,101,110,116,32,102,114\r
-,111,109,116,111,32,115,117,112,112,111,114,116,32,116,104,101,115,117,103,103,\r
-101,115,116,101,100,32,116,104,97,116,105,110,32,116,104,101,32,112,114,111,99,\r
-101,115,115,32,32,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,102,\r
-111,117,110,100,97,116,105,111,110,98,101,99,97,117,115,101,32,111,102,32,104,\r
-105,115,99,111,110,99,101,114,110,101,100,32,119,105,116,104,116,104,101,32,117,\r
-110,105,118,101,114,115,105,116,121,111,112,112,111,115,101,100,32,116,111,32,\r
-116,104,101,116,104,101,32,99,111,110,116,101,120,116,32,111,102,60,115,112,97,\r
-110,32,99,108,97,115,115,61,34,112,116,101,120,116,34,32,110,97,109,101,61,34,\r
-113,34,9,9,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,115,99,105,\r
-101,110,116,105,102,105,99,114,101,112,114,101,115,101,110,116,101,100,32,98,121\r
-,109,97,116,104,101,109,97,116,105,99,105,97,110,115,101,108,101,99,116,101,100,\r
-32,98,121,32,116,104,101,116,104,97,116,32,104,97,118,101,32,98,101,101,110,62,\r
-60,100,105,118,32,99,108,97,115,115,61,34,99,100,105,118,32,105,100,61,34,104,\r
-101,97,100,101,114,105,110,32,112,97,114,116,105,99,117,108,97,114,44,99,111,110\r
-,118,101,114,116,101,100,32,105,110,116,111,41,59,10,60,47,115,99,114,105,112,\r
-116,62,10,60,112,104,105,108,111,115,111,112,104,105,99,97,108,32,115,114,112,\r
-115,107,111,104,114,118,97,116,115,107,105,116,105,225,186,191,110,103,32,86,105\r
-,225,187,135,116,208,160,209,131,209,129,209,129,208,186,208,184,208,185,209,128\r
-,209,131,209,129,209,129,208,186,208,184,208,185,105,110,118,101,115,116,105,103\r
-,97,99,105,195,179,110,112,97,114,116,105,99,105,112,97,99,105,195,179,110,208,\r
-186,208,190,209,130,208,190,209,128,209,139,208,181,208,190,208,177,208,187,208,\r
-176,209,129,209,130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,208,\r
-185,209,135,208,181,208,187,208,190,208,178,208,181,208,186,209,129,208,184,209,\r
-129,209,130,208,181,208,188,209,139,208,157,208,190,208,178,208,190,209,129,209,\r
-130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,209,133,208,190,208,\r
-177,208,187,208,176,209,129,209,130,209,140,208,178,209,128,208,181,208,188,208,\r
-181,208,189,208,184,208,186,208,190,209,130,208,190,209,128,208,176,209,143,209,\r
-129,208,181,208,179,208,190,208,180,208,189,209,143,209,129,208,186,208,176,209,\r
-135,208,176,209,130,209,140,208,189,208,190,208,178,208,190,209,129,209,130,208,\r
-184,208,163,208,186,209,128,208,176,208,184,208,189,209,139,208,178,208,190,208,\r
-191,209,128,208,190,209,129,209,139,208,186,208,190,209,130,208,190,209,128,208,\r
-190,208,185,209,129,208,180,208,181,208,187,208,176,209,130,209,140,208,191,208,\r
-190,208,188,208,190,209,137,209,140,209,142,209,129,209,128,208,181,208,180,209,\r
-129,209,130,208,178,208,190,208,177,209,128,208,176,208,183,208,190,208,188,209,\r
-129,209,130,208,190,209,128,208,190,208,189,209,139,209,131,209,135,208,176,209,\r
-129,209,130,208,184,208,181,209,130,208,181,209,135,208,181,208,189,208,184,208,\r
-181,208,147,208,187,208,176,208,178,208,189,208,176,209,143,208,184,209,129,209,\r
-130,208,190,209,128,208,184,208,184,209,129,208,184,209,129,209,130,208,181,208,\r
-188,208,176,209,128,208,181,209,136,208,181,208,189,208,184,209,143,208,161,208,\r
-186,208,176,209,135,208,176,209,130,209,140,208,191,208,190,209,141,209,130,208,\r
-190,208,188,209,131,209,129,208,187,208,181,208,180,209,131,208,181,209,130,209,\r
-129,208,186,208,176,208,183,208,176,209,130,209,140,209,130,208,190,208,178,208,\r
-176,209,128,208,190,208,178,208,186,208,190,208,189,208,181,209,135,208,189,208,\r
-190,209,128,208,181,209,136,208,181,208,189,208,184,208,181,208,186,208,190,209,\r
-130,208,190,209,128,208,190,208,181,208,190,209,128,208,179,208,176,208,189,208,\r
-190,208,178,208,186,208,190,209,130,208,190,209,128,208,190,208,188,208,160,208,\r
-181,208,186,208,187,208,176,208,188,208,176,216,167,217,132,217,133,217,134,216,\r
-170,216,175,217,137,217,133,217,134,216,170,216,175,217,138,216,167,216,170,216,\r
-167,217,132,217,133,217,136,216,182,217,136,216,185,216,167,217,132,216,168,216,\r
-177,216,167,217,133,216,172,216,167,217,132,217,133,217,136,216,167,217,130,216,\r
-185,216,167,217,132,216,177,216,179,216,167,216,166,217,132,217,133,216,180,216,\r
-167,216,177,217,131,216,167,216,170,216,167,217,132,216,163,216,185,216,182,216,\r
-167,216,161,216,167,217,132,216,177,217,138,216,167,216,182,216,169,216,167,217,\r
-132,216,170,216,181,217,133,217,138,217,133,216,167,217,132,216,167,216,185,216,\r
-182,216,167,216,161,216,167,217,132,217,134,216,170,216,167,216,166,216,172,216,\r
-167,217,132,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,170,216,\r
-179,216,172,217,138,217,132,216,167,217,132,216,163,217,130,216,179,216,167,217,\r
-133,216,167,217,132,216,182,216,186,216,183,216,167,216,170,216,167,217,132,217,\r
-129,217,138,216,175,217,138,217,136,216,167,217,132,216,170,216,177,216,173,217,\r
-138,216,168,216,167,217,132,216,172,216,175,217,138,216,175,216,169,216,167,217,\r
-132,216,170,216,185,217,132,217,138,217,133,216,167,217,132,216,163,216,174,216,\r
-168,216,167,216,177,216,167,217,132,216,167,217,129,217,132,216,167,217,133,216,\r
-167,217,132,216,163,217,129,217,132,216,167,217,133,216,167,217,132,216,170,216,\r
-167,216,177,217,138,216,174,216,167,217,132,216,170,217,130,217,134,217,138,216,\r
-169,216,167,217,132,216,167,217,132,216,185,216,167,216,168,216,167,217,132,216,\r
-174,217,136,216,167,216,183,216,177,216,167,217,132,217,133,216,172,216,170,217,\r
-133,216,185,216,167,217,132,216,175,217,138,217,131,217,136,216,177,216,167,217,\r
-132,216,179,217,138,216,167,216,173,216,169,216,185,216,168,216,175,216,167,217,\r
-132,217,132,217,135,216,167,217,132,216,170,216,177,216,168,217,138,216,169,216,\r
-167,217,132,216,177,217,136,216,167,216,168,216,183,216,167,217,132,216,163,216,\r
-175,216,168,217,138,216,169,216,167,217,132,216,167,216,174,216,168,216,167,216,\r
-177,216,167,217,132,217,133,216,170,216,173,216,175,216,169,216,167,217,132,216,\r
-167,216,186,216,167,217,134,217,138,99,117,114,115,111,114,58,112,111,105,110,\r
-116,101,114,59,60,47,116,105,116,108,101,62,10,60,109,101,116,97,32,34,32,104,\r
-114,101,102,61,34,104,116,116,112,58,47,47,34,62,60,115,112,97,110,32,99,108,97,\r
-115,115,61,34,109,101,109,98,101,114,115,32,111,102,32,116,104,101,32,119,105,\r
-110,100,111,119,46,108,111,99,97,116,105,111,110,118,101,114,116,105,99,97,108,\r
-45,97,108,105,103,110,58,47,97,62,32,124,32,60,97,32,104,114,101,102,61,34,60,33\r
-,100,111,99,116,121,112,101,32,104,116,109,108,62,109,101,100,105,97,61,34,115,\r
-99,114,101,101,110,34,32,60,111,112,116,105,111,110,32,118,97,108,117,101,61,34,\r
-102,97,118,105,99,111,110,46,105,99,111,34,32,47,62,10,9,9,60,100,105,118,32,99,\r
-108,97,115,115,61,34,99,104,97,114,97,99,116,101,114,105,115,116,105,99,115,34,\r
-32,109,101,116,104,111,100,61,34,103,101,116,34,32,47,98,111,100,121,62,10,60,47\r
-,104,116,109,108,62,10,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32,\r
-100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,112,97,100,100,105,110,\r
-103,45,98,111,116,116,111,109,58,114,101,112,114,101,115,101,110,116,97,116,105,\r
-118,101,115,115,117,98,109,105,116,34,32,118,97,108,117,101,61,34,97,108,105,103\r
-,110,61,34,99,101,110,116,101,114,34,32,116,104,114,111,117,103,104,111,117,116,\r
-32,116,104,101,32,115,99,105,101,110,99,101,32,102,105,99,116,105,111,110,10,32,\r
-32,60,100,105,118,32,99,108,97,115,115,61,34,115,117,98,109,105,116,34,32,99,108\r
-,97,115,115,61,34,111,110,101,32,111,102,32,116,104,101,32,109,111,115,116,32,\r
-118,97,108,105,103,110,61,34,116,111,112,34,62,60,119,97,115,32,101,115,116,97,\r
-98,108,105,115,104,101,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10,114\r
-,101,116,117,114,110,32,102,97,108,115,101,59,34,62,41,46,115,116,121,108,101,46\r
-,100,105,115,112,108,97,121,98,101,99,97,117,115,101,32,111,102,32,116,104,101,\r
-32,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,60,102,111,114,109,\r
-32,97,99,116,105,111,110,61,34,47,125,98,111,100,121,123,109,97,114,103,105,110,\r
-58,48,59,69,110,99,121,99,108,111,112,101,100,105,97,32,111,102,118,101,114,115,\r
-105,111,110,32,111,102,32,116,104,101,32,46,99,114,101,97,116,101,69,108,101,109\r
-,101,110,116,40,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,60,47,100,\r
-105,118,62,10,60,47,100,105,118,62,10,10,97,100,109,105,110,105,115,116,114,97,\r
-116,105,118,101,32,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,104,105,\r
-115,116,111,114,121,32,111,102,32,116,104,101,32,34,62,60,105,110,112,117,116,32\r
-,116,121,112,101,61,34,112,111,114,116,105,111,110,32,111,102,32,116,104,101,32,\r
-97,115,32,112,97,114,116,32,111,102,32,116,104,101,32,38,110,98,115,112,59,60,97\r
-,32,104,114,101,102,61,34,111,116,104,101,114,32,99,111,117,110,116,114,105,101,\r
-115,34,62,10,60,100,105,118,32,99,108,97,115,115,61,34,60,47,115,112,97,110,62,\r
-60,47,115,112,97,110,62,60,73,110,32,111,116,104,101,114,32,119,111,114,100,115,\r
-44,100,105,115,112,108,97,121,58,32,98,108,111,99,107,59,99,111,110,116,114,111,\r
-108,32,111,102,32,116,104,101,32,105,110,116,114,111,100,117,99,116,105,111,110,\r
-32,111,102,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,97,115,32,119,101,\r
-108,108,32,97,115,32,116,104,101,32,105,110,32,114,101,99,101,110,116,32,121,101\r
-,97,114,115,13,10,9,60,100,105,118,32,99,108,97,115,115,61,34,60,47,100,105,118,\r
-62,10,9,60,47,100,105,118,62,10,105,110,115,112,105,114,101,100,32,98,121,32,116\r
-,104,101,116,104,101,32,101,110,100,32,111,102,32,116,104,101,32,99,111,109,112,\r
-97,116,105,98,108,101,32,119,105,116,104,98,101,99,97,109,101,32,107,110,111,119\r
-,110,32,97,115,32,115,116,121,108,101,61,34,109,97,114,103,105,110,58,46,106,115\r
-,34,62,60,47,115,99,114,105,112,116,62,60,32,73,110,116,101,114,110,97,116,105,\r
-111,110,97,108,32,116,104,101,114,101,32,104,97,118,101,32,98,101,101,110,71,101\r
-,114,109,97,110,32,108,97,110,103,117,97,103,101,32,115,116,121,108,101,61,34,99\r
-,111,108,111,114,58,35,67,111,109,109,117,110,105,115,116,32,80,97,114,116,121,\r
-99,111,110,115,105,115,116,101,110,116,32,119,105,116,104,98,111,114,100,101,114\r
-,61,34,48,34,32,99,101,108,108,32,109,97,114,103,105,110,104,101,105,103,104,116\r
-,61,34,116,104,101,32,109,97,106,111,114,105,116,121,32,111,102,34,32,97,108,105\r
-,103,110,61,34,99,101,110,116,101,114,114,101,108,97,116,101,100,32,116,111,32,\r
-116,104,101,32,109,97,110,121,32,100,105,102,102,101,114,101,110,116,32,79,114,\r
-116,104,111,100,111,120,32,67,104,117,114,99,104,115,105,109,105,108,97,114,32,\r
-116,111,32,116,104,101,32,47,62,10,60,108,105,110,107,32,114,101,108,61,34,115,\r
-119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,117,110,116,105,108,32,\r
-104,105,115,32,100,101,97,116,104,125,41,40,41,59,10,60,47,115,99,114,105,112,\r
-116,62,111,116,104,101,114,32,108,97,110,103,117,97,103,101,115,99,111,109,112,\r
-97,114,101,100,32,116,111,32,116,104,101,112,111,114,116,105,111,110,115,32,111,\r
-102,32,116,104,101,116,104,101,32,78,101,116,104,101,114,108,97,110,100,115,116,\r
-104,101,32,109,111,115,116,32,99,111,109,109,111,110,98,97,99,107,103,114,111,\r
-117,110,100,58,117,114,108,40,97,114,103,117,101,100,32,116,104,97,116,32,116,\r
-104,101,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,110,99,108,\r
-117,100,101,100,32,105,110,32,116,104,101,78,111,114,116,104,32,65,109,101,114,\r
-105,99,97,110,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,105,110\r
-,116,101,114,112,114,101,116,97,116,105,111,110,115,116,104,101,32,116,114,97,\r
-100,105,116,105,111,110,97,108,100,101,118,101,108,111,112,109,101,110,116,32,\r
-111,102,32,102,114,101,113,117,101,110,116,108,121,32,117,115,101,100,97,32,99,\r
-111,108,108,101,99,116,105,111,110,32,111,102,118,101,114,121,32,115,105,109,105\r
-,108,97,114,32,116,111,115,117,114,114,111,117,110,100,105,110,103,32,116,104,\r
-101,101,120,97,109,112,108,101,32,111,102,32,116,104,105,115,97,108,105,103,110,\r
-61,34,99,101,110,116,101,114,34,62,119,111,117,108,100,32,104,97,118,101,32,98,\r
-101,101,110,105,109,97,103,101,95,99,97,112,116,105,111,110,32,61,97,116,116,97,\r
-99,104,101,100,32,116,111,32,116,104,101,115,117,103,103,101,115,116,105,110,103\r
-,32,116,104,97,116,105,110,32,116,104,101,32,102,111,114,109,32,111,102,32,105,\r
-110,118,111,108,118,101,100,32,105,110,32,116,104,101,105,115,32,100,101,114,105\r
-,118,101,100,32,102,114,111,109,110,97,109,101,100,32,97,102,116,101,114,32,116,\r
-104,101,73,110,116,114,111,100,117,99,116,105,111,110,32,116,111,114,101,115,116\r
-,114,105,99,116,105,111,110,115,32,111,110,32,115,116,121,108,101,61,34,119,105,\r
-100,116,104,58,32,99,97,110,32,98,101,32,117,115,101,100,32,116,111,32,116,104,\r
-101,32,99,114,101,97,116,105,111,110,32,111,102,109,111,115,116,32,105,109,112,\r
-111,114,116,97,110,116,32,105,110,102,111,114,109,97,116,105,111,110,32,97,110,\r
-100,114,101,115,117,108,116,101,100,32,105,110,32,116,104,101,99,111,108,108,97,\r
-112,115,101,32,111,102,32,116,104,101,84,104,105,115,32,109,101,97,110,115,32,\r
-116,104,97,116,101,108,101,109,101,110,116,115,32,111,102,32,116,104,101,119,97,\r
-115,32,114,101,112,108,97,99,101,100,32,98,121,97,110,97,108,121,115,105,115,32,\r
-111,102,32,116,104,101,105,110,115,112,105,114,97,116,105,111,110,32,102,111,114\r
-,114,101,103,97,114,100,101,100,32,97,115,32,116,104,101,109,111,115,116,32,115,\r
-117,99,99,101,115,115,102,117,108,107,110,111,119,110,32,97,115,32,38,113,117,\r
-111,116,59,97,32,99,111,109,112,114,101,104,101,110,115,105,118,101,72,105,115,\r
-116,111,114,121,32,111,102,32,116,104,101,32,119,101,114,101,32,99,111,110,115,\r
-105,100,101,114,101,100,114,101,116,117,114,110,101,100,32,116,111,32,116,104,\r
-101,97,114,101,32,114,101,102,101,114,114,101,100,32,116,111,85,110,115,111,117,\r
-114,99,101,100,32,105,109,97,103,101,62,10,9,60,100,105,118,32,99,108,97,115,115\r
-,61,34,99,111,110,115,105,115,116,115,32,111,102,32,116,104,101,115,116,111,112,\r
-80,114,111,112,97,103,97,116,105,111,110,105,110,116,101,114,101,115,116,32,105,\r
-110,32,116,104,101,97,118,97,105,108,97,98,105,108,105,116,121,32,111,102,97,112\r
-,112,101,97,114,115,32,116,111,32,104,97,118,101,101,108,101,99,116,114,111,109,\r
-97,103,110,101,116,105,99,101,110,97,98,108,101,83,101,114,118,105,99,101,115,40\r
-,102,117,110,99,116,105,111,110,32,111,102,32,116,104,101,73,116,32,105,115,32,\r
-105,109,112,111,114,116,97,110,116,60,47,115,99,114,105,112,116,62,60,47,100,105\r
-,118,62,102,117,110,99,116,105,111,110,40,41,123,118,97,114,32,114,101,108,97,\r
-116,105,118,101,32,116,111,32,116,104,101,97,115,32,97,32,114,101,115,117,108,\r
-116,32,111,102,32,116,104,101,32,112,111,115,105,116,105,111,110,32,111,102,70,\r
-111,114,32,101,120,97,109,112,108,101,44,32,105,110,32,109,101,116,104,111,100,\r
-61,34,112,111,115,116,34,32,119,97,115,32,102,111,108,108,111,119,101,100,32,98,\r
-121,38,97,109,112,59,109,100,97,115,104,59,32,116,104,101,116,104,101,32,97,112,\r
-112,108,105,99,97,116,105,111,110,106,115,34,62,60,47,115,99,114,105,112,116,62,\r
-13,10,117,108,62,60,47,100,105,118,62,60,47,100,105,118,62,97,102,116,101,114,32\r
-,116,104,101,32,100,101,97,116,104,119,105,116,104,32,114,101,115,112,101,99,116\r
-,32,116,111,115,116,121,108,101,61,34,112,97,100,100,105,110,103,58,105,115,32,\r
-112,97,114,116,105,99,117,108,97,114,108,121,100,105,115,112,108,97,121,58,105,\r
-110,108,105,110,101,59,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,105\r
-,115,32,100,105,118,105,100,101,100,32,105,110,116,111,228,184,173,230,150,135,\r
-32,40,231,174,128,228,189,147,41,114,101,115,112,111,110,115,97,98,105,108,105,\r
-100,97,100,97,100,109,105,110,105,115,116,114,97,99,105,195,179,110,105,110,116,\r
-101,114,110,97,99,105,111,110,97,108,101,115,99,111,114,114,101,115,112,111,110,\r
-100,105,101,110,116,101,224,164,137,224,164,170,224,164,175,224,165,139,224,164,\r
-151,224,164,170,224,165,130,224,164,176,224,165,141,224,164,181,224,164,185,224,\r
-164,174,224,164,190,224,164,176,224,165,135,224,164,178,224,165,139,224,164,151,\r
-224,165,139,224,164,130,224,164,154,224,165,129,224,164,168,224,164,190,224,164,\r
-181,224,164,178,224,165,135,224,164,149,224,164,191,224,164,168,224,164,184,224,\r
-164,176,224,164,149,224,164,190,224,164,176,224,164,170,224,165,129,224,164,178,\r
-224,164,191,224,164,184,224,164,150,224,165,139,224,164,156,224,165,135,224,164,\r
-130,224,164,154,224,164,190,224,164,185,224,164,191,224,164,143,224,164,173,224,\r
-165,135,224,164,156,224,165,135,224,164,130,224,164,182,224,164,190,224,164,174,\r
-224,164,191,224,164,178,224,164,185,224,164,174,224,164,190,224,164,176,224,165,\r
-128,224,164,156,224,164,190,224,164,151,224,164,176,224,164,163,224,164,172,224,\r
-164,168,224,164,190,224,164,168,224,165,135,224,164,149,224,165,129,224,164,174,\r
-224,164,190,224,164,176,224,164,172,224,165,141,224,164,178,224,165,137,224,164,\r
-151,224,164,174,224,164,190,224,164,178,224,164,191,224,164,149,224,164,174,224,\r
-164,185,224,164,191,224,164,178,224,164,190,224,164,170,224,165,131,224,164,183,\r
-224,165,141,224,164,160,224,164,172,224,164,162,224,164,188,224,164,164,224,165,\r
-135,224,164,173,224,164,190,224,164,156,224,164,170,224,164,190,224,164,149,224,\r
-165,141,224,164,178,224,164,191,224,164,149,224,164,159,224,165,141,224,164,176,\r
-224,165,135,224,164,168,224,164,150,224,164,191,224,164,178,224,164,190,224,164,\r
-171,224,164,166,224,165,140,224,164,176,224,164,190,224,164,168,224,164,174,224,\r
-164,190,224,164,174,224,164,178,224,165,135,224,164,174,224,164,164,224,164,166,\r
-224,164,190,224,164,168,224,164,172,224,164,190,224,164,156,224,164,190,224,164,\r
-176,224,164,181,224,164,191,224,164,149,224,164,190,224,164,184,224,164,149,224,\r
-165,141,224,164,175,224,165,139,224,164,130,224,164,154,224,164,190,224,164,185,\r
-224,164,164,224,165,135,224,164,170,224,164,185,224,165,129,224,164,129,224,164,\r
-154,224,164,172,224,164,164,224,164,190,224,164,175,224,164,190,224,164,184,224,\r
-164,130,224,164,181,224,164,190,224,164,166,224,164,166,224,165,135,224,164,150,\r
-224,164,168,224,165,135,224,164,170,224,164,191,224,164,155,224,164,178,224,165,\r
-135,224,164,181,224,164,191,224,164,182,224,165,135,224,164,183,224,164,176,224,\r
-164,190,224,164,156,224,165,141,224,164,175,224,164,137,224,164,164,224,165,141,\r
-224,164,164,224,164,176,224,164,174,224,165,129,224,164,130,224,164,172,224,164,\r
-136,224,164,166,224,165,139,224,164,168,224,165,139,224,164,130,224,164,137,224,\r
-164,170,224,164,149,224,164,176,224,164,163,224,164,170,224,164,162,224,164,188,\r
-224,165,135,224,164,130,224,164,184,224,165,141,224,164,165,224,164,191,224,164,\r
-164,224,164,171,224,164,191,224,164,178,224,165,141,224,164,174,224,164,174,224,\r
-165,129,224,164,150,224,165,141,224,164,175,224,164,133,224,164,154,224,165,141,\r
-224,164,155,224,164,190,224,164,155,224,165,130,224,164,159,224,164,164,224,165,\r
-128,224,164,184,224,164,130,224,164,151,224,165,128,224,164,164,224,164,156,224,\r
-164,190,224,164,143,224,164,151,224,164,190,224,164,181,224,164,191,224,164,173,\r
-224,164,190,224,164,151,224,164,152,224,164,163,224,165,141,224,164,159,224,165,\r
-135,224,164,166,224,165,130,224,164,184,224,164,176,224,165,135,224,164,166,224,\r
-164,191,224,164,168,224,165,139,224,164,130,224,164,185,224,164,164,224,165,141,\r
-224,164,175,224,164,190,224,164,184,224,165,135,224,164,149,224,165,141,224,164,\r
-184,224,164,151,224,164,190,224,164,130,224,164,167,224,165,128,224,164,181,224,\r
-164,191,224,164,182,224,165,141,224,164,181,224,164,176,224,164,190,224,164,164,\r
-224,165,135,224,164,130,224,164,166,224,165,136,224,164,159,224,165,141,224,164,\r
-184,224,164,168,224,164,149,224,165,141,224,164,182,224,164,190,224,164,184,224,\r
-164,190,224,164,174,224,164,168,224,165,135,224,164,133,224,164,166,224,164,190,\r
-224,164,178,224,164,164,224,164,172,224,164,191,224,164,156,224,164,178,224,165,\r
-128,224,164,170,224,165,129,224,164,176,224,165,130,224,164,183,224,164,185,224,\r
-164,191,224,164,130,224,164,166,224,165,128,224,164,174,224,164,191,224,164,164,\r
-224,165,141,224,164,176,224,164,149,224,164,181,224,164,191,224,164,164,224,164,\r
-190,224,164,176,224,165,129,224,164,170,224,164,175,224,165,135,224,164,184,224,\r
-165,141,224,164,165,224,164,190,224,164,168,224,164,149,224,164,176,224,165,139,\r
-224,164,161,224,164,188,224,164,174,224,165,129,224,164,149,224,165,141,224,164,\r
-164,224,164,175,224,165,139,224,164,156,224,164,168,224,164,190,224,164,149,224,\r
-165,131,224,164,170,224,164,175,224,164,190,224,164,170,224,165,139,224,164,184,\r
-224,165,141,224,164,159,224,164,152,224,164,176,224,165,135,224,164,178,224,165,\r
-130,224,164,149,224,164,190,224,164,176,224,165,141,224,164,175,224,164,181,224,\r
-164,191,224,164,154,224,164,190,224,164,176,224,164,184,224,165,130,224,164,154,\r
-224,164,168,224,164,190,224,164,174,224,165,130,224,164,178,224,165,141,224,164,\r
-175,224,164,166,224,165,135,224,164,150,224,165,135,224,164,130,224,164,185,224,\r
-164,174,224,165,135,224,164,182,224,164,190,224,164,184,224,165,141,224,164,149,\r
-224,165,130,224,164,178,224,164,174,224,165,136,224,164,130,224,164,168,224,165,\r
-135,224,164,164,224,165,136,224,164,175,224,164,190,224,164,176,224,164,156,224,\r
-164,191,224,164,184,224,164,149,224,165,135,114,115,115,43,120,109,108,34,32,116\r
-,105,116,108,101,61,34,45,116,121,112,101,34,32,99,111,110,116,101,110,116,61,34\r
-,116,105,116,108,101,34,32,99,111,110,116,101,110,116,61,34,97,116,32,116,104,\r
-101,32,115,97,109,101,32,116,105,109,101,46,106,115,34,62,60,47,115,99,114,105,\r
-112,116,62,10,60,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,32,60,47\r
-,115,112,97,110,62,60,47,97,62,60,47,108,105,62,118,101,114,116,105,99,97,108,45\r
-,97,108,105,103,110,58,116,47,106,113,117,101,114,121,46,109,105,110,46,106,115,\r
-34,62,46,99,108,105,99,107,40,102,117,110,99,116,105,111,110,40,32,115,116,121,\r
-108,101,61,34,112,97,100,100,105,110,103,45,125,41,40,41,59,10,60,47,115,99,114,\r
-105,112,116,62,10,60,47,115,112,97,110,62,60,97,32,104,114,101,102,61,34,60,97,\r
-32,104,114,101,102,61,34,104,116,116,112,58,47,47,41,59,32,114,101,116,117,114,\r
-110,32,102,97,108,115,101,59,116,101,120,116,45,100,101,99,111,114,97,116,105,\r
-111,110,58,32,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,98,111,114,\r
-100,101,114,45,99,111,108,108,97,112,115,101,58,97,115,115,111,99,105,97,116,101\r
-,100,32,119,105,116,104,32,66,97,104,97,115,97,32,73,110,100,111,110,101,115,105\r
-,97,69,110,103,108,105,115,104,32,108,97,110,103,117,97,103,101,60,116,101,120,\r
-116,32,120,109,108,58,115,112,97,99,101,61,46,103,105,102,34,32,98,111,114,100,\r
-101,114,61,34,48,34,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,10,111,\r
-118,101,114,102,108,111,119,58,104,105,100,100,101,110,59,105,109,103,32,115,114\r
-,99,61,34,104,116,116,112,58,47,47,97,100,100,69,118,101,110,116,76,105,115,116,\r
-101,110,101,114,114,101,115,112,111,110,115,105,98,108,101,32,102,111,114,32,115\r
-,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,47,102,97,118,105,99,111,\r
-110,46,105,99,111,34,32,47,62,111,112,101,114,97,116,105,110,103,32,115,121,115,\r
-116,101,109,34,32,115,116,121,108,101,61,34,119,105,100,116,104,58,49,116,97,114\r
-,103,101,116,61,34,95,98,108,97,110,107,34,62,83,116,97,116,101,32,85,110,105,\r
-118,101,114,115,105,116,121,116,101,120,116,45,97,108,105,103,110,58,108,101,102\r
-,116,59,10,100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,44,32,105,\r
-110,99,108,117,100,105,110,103,32,116,104,101,32,97,114,111,117,110,100,32,116,\r
-104,101,32,119,111,114,108,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10\r
-,60,34,32,115,116,121,108,101,61,34,104,101,105,103,104,116,58,59,111,118,101,\r
-114,102,108,111,119,58,104,105,100,100,101,110,109,111,114,101,32,105,110,102,\r
-111,114,109,97,116,105,111,110,97,110,32,105,110,116,101,114,110,97,116,105,111,\r
-110,97,108,97,32,109,101,109,98,101,114,32,111,102,32,116,104,101,32,111,110,101\r
-,32,111,102,32,116,104,101,32,102,105,114,115,116,99,97,110,32,98,101,32,102,111\r
-,117,110,100,32,105,110,32,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10,\r
-100,105,115,112,108,97,121,58,32,110,111,110,101,59,34,62,34,32,47,62,10,60,108,\r
-105,110,107,32,114,101,108,61,34,10,32,32,40,102,117,110,99,116,105,111,110,40,\r
-41,32,123,116,104,101,32,49,53,116,104,32,99,101,110,116,117,114,121,46,112,114,\r
-101,118,101,110,116,68,101,102,97,117,108,116,40,108,97,114,103,101,32,110,117,\r
-109,98,101,114,32,111,102,32,66,121,122,97,110,116,105,110,101,32,69,109,112,105\r
-,114,101,46,106,112,103,124,116,104,117,109,98,124,108,101,102,116,124,118,97,\r
-115,116,32,109,97,106,111,114,105,116,121,32,111,102,109,97,106,111,114,105,116,\r
-121,32,111,102,32,116,104,101,32,32,97,108,105,103,110,61,34,99,101,110,116,101,\r
-114,34,62,85,110,105,118,101,114,115,105,116,121,32,80,114,101,115,115,100,111,\r
-109,105,110,97,116,101,100,32,98,121,32,116,104,101,83,101,99,111,110,100,32,87,\r
-111,114,108,100,32,87,97,114,100,105,115,116,114,105,98,117,116,105,111,110,32,\r
-111,102,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,116,104,\r
-101,32,114,101,115,116,32,111,102,32,116,104,101,32,99,104,97,114,97,99,116,101,\r
-114,105,122,101,100,32,98,121,32,114,101,108,61,34,110,111,102,111,108,108,111,\r
-119,34,62,100,101,114,105,118,101,115,32,102,114,111,109,32,116,104,101,114,97,\r
-116,104,101,114,32,116,104,97,110,32,116,104,101,32,97,32,99,111,109,98,105,110,\r
-97,116,105,111,110,32,111,102,115,116,121,108,101,61,34,119,105,100,116,104,58,\r
-49,48,48,69,110,103,108,105,115,104,45,115,112,101,97,107,105,110,103,99,111,109\r
-,112,117,116,101,114,32,115,99,105,101,110,99,101,98,111,114,100,101,114,61,34,\r
-48,34,32,97,108,116,61,34,116,104,101,32,101,120,105,115,116,101,110,99,101,32,\r
-111,102,68,101,109,111,99,114,97,116,105,99,32,80,97,114,116,121,34,32,115,116,\r
-121,108,101,61,34,109,97,114,103,105,110,45,70,111,114,32,116,104,105,115,32,114\r
-,101,97,115,111,110,44,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,9,115\r
-,66,121,84,97,103,78,97,109,101,40,115,41,91,48,93,106,115,34,62,60,47,115,99,\r
-114,105,112,116,62,13,10,60,46,106,115,34,62,60,47,115,99,114,105,112,116,62,13,\r
-10,108,105,110,107,32,114,101,108,61,34,105,99,111,110,34,32,39,32,97,108,116,61\r
-,39,39,32,99,108,97,115,115,61,39,102,111,114,109,97,116,105,111,110,32,111,102,\r
-32,116,104,101,118,101,114,115,105,111,110,115,32,111,102,32,116,104,101,32,60,\r
-47,97,62,60,47,100,105,118,62,60,47,100,105,118,62,47,112,97,103,101,62,10,32,32\r
-,60,112,97,103,101,62,10,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110,\r
-116,98,101,99,97,109,101,32,116,104,101,32,102,105,114,115,116,98,97,104,97,115,\r
-97,32,73,110,100,111,110,101,115,105,97,101,110,103,108,105,115,104,32,40,115,\r
-105,109,112,108,101,41,206,149,206,187,206,187,206,183,206,189,206,185,206,186,\r
-206,172,209,133,209,128,208,178,208,176,209,130,209,129,208,186,208,184,208,186,\r
-208,190,208,188,208,191,208,176,208,189,208,184,208,184,209,143,208,178,208,187,\r
-209,143,208,181,209,130,209,129,209,143,208,148,208,190,208,177,208,176,208,178,\r
-208,184,209,130,209,140,209,135,208,181,208,187,208,190,208,178,208,181,208,186,\r
-208,176,209,128,208,176,208,183,208,178,208,184,209,130,208,184,209,143,208,152,\r
-208,189,209,130,208,181,209,128,208,189,208,181,209,130,208,158,209,130,208,178,\r
-208,181,209,130,208,184,209,130,209,140,208,189,208,176,208,191,209,128,208,184,\r
-208,188,208,181,209,128,208,184,208,189,209,130,208,181,209,128,208,189,208,181,\r
-209,130,208,186,208,190,209,130,208,190,209,128,208,190,208,179,208,190,209,129,\r
-209,130,209,128,208,176,208,189,208,184,209,134,209,139,208,186,208,176,209,135,\r
-208,181,209,129,209,130,208,178,208,181,209,131,209,129,208,187,208,190,208,178,\r
-208,184,209,143,209,133,208,191,209,128,208,190,208,177,208,187,208,181,208,188,\r
-209,139,208,191,208,190,208,187,209,131,209,135,208,184,209,130,209,140,209,143,\r
-208,178,208,187,209,143,209,142,209,130,209,129,209,143,208,189,208,176,208,184,\r
-208,177,208,190,208,187,208,181,208,181,208,186,208,190,208,188,208,191,208,176,\r
-208,189,208,184,209,143,208,178,208,189,208,184,208,188,208,176,208,189,208,184,\r
-208,181,209,129,209,128,208,181,208,180,209,129,209,130,208,178,208,176,216,167,\r
-217,132,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,177,\r
-216,166,217,138,216,179,217,138,216,169,216,167,217,132,216,167,217,134,216,170,\r
-217,130,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216,167,216,170,\r
-217,131,216,167,217,132,216,179,217,138,216,167,216,177,216,167,216,170,216,167,\r
-217,132,217,133,217,131,216,170,217,136,216,168,216,169,216,167,217,132,216,179,\r
-216,185,217,136,216,175,217,138,216,169,216,167,216,173,216,181,216,167,216,166,\r
-217,138,216,167,216,170,216,167,217,132,216,185,216,167,217,132,217,133,217,138,\r
-216,169,216,167,217,132,216,181,217,136,216,170,217,138,216,167,216,170,216,167,\r
-217,132,216,167,217,134,216,170,216,177,217,134,216,170,216,167,217,132,216,170,\r
-216,181,216,167,217,133,217,138,217,133,216,167,217,132,216,165,216,179,217,132,\r
-216,167,217,133,217,138,216,167,217,132,217,133,216,180,216,167,216,177,217,131,\r
-216,169,216,167,217,132,217,133,216,177,216,166,217,138,216,167,216,170,114,111,\r
-98,111,116,115,34,32,99,111,110,116,101,110,116,61,34,60,100,105,118,32,105,100,\r
-61,34,102,111,111,116,101,114,34,62,116,104,101,32,85,110,105,116,101,100,32,83,\r
-116,97,116,101,115,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,\r
-46,106,112,103,124,114,105,103,104,116,124,116,104,117,109,98,124,46,106,115,34,\r
-62,60,47,115,99,114,105,112,116,62,13,10,60,108,111,99,97,116,105,111,110,46,112\r
-,114,111,116,111,99,111,108,102,114,97,109,101,98,111,114,100,101,114,61,34,48,\r
-34,32,115,34,32,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,60,47,97,62,\r
-60,47,100,105,118,62,60,47,100,105,118,62,60,102,111,110,116,45,119,101,105,103,\r
-104,116,58,98,111,108,100,59,38,113,117,111,116,59,32,97,110,100,32,38,113,117,\r
-111,116,59,100,101,112,101,110,100,105,110,103,32,111,110,32,116,104,101,32,109,\r
-97,114,103,105,110,58,48,59,112,97,100,100,105,110,103,58,34,32,114,101,108,61,\r
-34,110,111,102,111,108,108,111,119,34,32,80,114,101,115,105,100,101,110,116,32,\r
-111,102,32,116,104,101,32,116,119,101,110,116,105,101,116,104,32,99,101,110,116,\r
-117,114,121,101,118,105,115,105,111,110,62,10,32,32,60,47,112,97,103,101,73,110,\r
-116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,97,46,97,115,121,110,\r
-99,32,61,32,116,114,117,101,59,13,10,105,110,102,111,114,109,97,116,105,111,110,\r
-32,97,98,111,117,116,60,100,105,118,32,105,100,61,34,104,101,97,100,101,114,34,\r
-62,34,32,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,60,97,32,104,114,\r
-101,102,61,34,104,116,116,112,115,58,47,47,60,100,105,118,32,105,100,61,34,99,\r
-111,110,116,101,110,116,34,60,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10\r
-,60,100,101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32,60,105,109,\r
-103,32,115,114,99,61,39,104,116,116,112,58,47,47,97,99,99,111,114,100,105,110,\r
-103,32,116,111,32,116,104,101,32,10,60,47,98,111,100,121,62,10,60,47,104,116,109\r
-,108,62,10,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,115,\r
-99,114,105,112,116,32,108,97,110,103,117,97,103,101,61,34,65,114,105,97,108,44,\r
-32,72,101,108,118,101,116,105,99,97,44,60,47,97,62,60,115,112,97,110,32,99,108,\r
-97,115,115,61,34,60,47,115,99,114,105,112,116,62,60,115,99,114,105,112,116,32,\r
-112,111,108,105,116,105,99,97,108,32,112,97,114,116,105,101,115,116,100,62,60,47\r
-,116,114,62,60,47,116,97,98,108,101,62,60,104,114,101,102,61,34,104,116,116,112,\r
-58,47,47,119,119,119,46,105,110,116,101,114,112,114,101,116,97,116,105,111,110,\r
-32,111,102,114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,100,\r
-111,99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,99,104,97,114,115,101\r
-,116,61,34,117,116,102,45,56,34,62,10,98,101,103,105,110,110,105,110,103,32,111,\r
-102,32,116,104,101,32,114,101,118,101,97,108,101,100,32,116,104,97,116,32,116,\r
-104,101,116,101,108,101,118,105,115,105,111,110,32,115,101,114,105,101,115,34,32\r
-,114,101,108,61,34,110,111,102,111,108,108,111,119,34,62,32,116,97,114,103,101,\r
-116,61,34,95,98,108,97,110,107,34,62,99,108,97,105,109,105,110,103,32,116,104,97\r
-,116,32,116,104,101,104,116,116,112,37,51,65,37,50,70,37,50,70,119,119,119,46,\r
-109,97,110,105,102,101,115,116,97,116,105,111,110,115,32,111,102,80,114,105,109,\r
-101,32,77,105,110,105,115,116,101,114,32,111,102,105,110,102,108,117,101,110,99,\r
-101,100,32,98,121,32,116,104,101,99,108,97,115,115,61,34,99,108,101,97,114,102,\r
-105,120,34,62,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10,13,10,116,104,\r
-114,101,101,45,100,105,109,101,110,115,105,111,110,97,108,67,104,117,114,99,104,\r
-32,111,102,32,69,110,103,108,97,110,100,111,102,32,78,111,114,116,104,32,67,97,\r
-114,111,108,105,110,97,115,113,117,97,114,101,32,107,105,108,111,109,101,116,114\r
-,101,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,100,105\r
-,115,116,105,110,99,116,32,102,114,111,109,32,116,104,101,99,111,109,109,111,110\r
-,108,121,32,107,110,111,119,110,32,97,115,80,104,111,110,101,116,105,99,32,65,\r
-108,112,104,97,98,101,116,100,101,99,108,97,114,101,100,32,116,104,97,116,32,116\r
-,104,101,99,111,110,116,114,111,108,108,101,100,32,98,121,32,116,104,101,66,101,\r
-110,106,97,109,105,110,32,70,114,97,110,107,108,105,110,114,111,108,101,45,112,\r
-108,97,121,105,110,103,32,103,97,109,101,116,104,101,32,85,110,105,118,101,114,\r
-115,105,116,121,32,111,102,105,110,32,87,101,115,116,101,114,110,32,69,117,114,\r
-111,112,101,112,101,114,115,111,110,97,108,32,99,111,109,112,117,116,101,114,80,\r
-114,111,106,101,99,116,32,71,117,116,101,110,98,101,114,103,114,101,103,97,114,\r
-100,108,101,115,115,32,111,102,32,116,104,101,104,97,115,32,98,101,101,110,32,\r
-112,114,111,112,111,115,101,100,116,111,103,101,116,104,101,114,32,119,105,116,\r
-104,32,116,104,101,62,60,47,108,105,62,60,108,105,32,99,108,97,115,115,61,34,105\r
-,110,32,115,111,109,101,32,99,111,117,110,116,114,105,101,115,109,105,110,46,106\r
-,115,34,62,60,47,115,99,114,105,112,116,62,111,102,32,116,104,101,32,112,111,112\r
-,117,108,97,116,105,111,110,111,102,102,105,99,105,97,108,32,108,97,110,103,117,\r
-97,103,101,60,105,109,103,32,115,114,99,61,34,105,109,97,103,101,115,47,105,100,\r
-101,110,116,105,102,105,101,100,32,98,121,32,116,104,101,110,97,116,117,114,97,\r
-108,32,114,101,115,111,117,114,99,101,115,99,108,97,115,115,105,102,105,99,97,\r
-116,105,111,110,32,111,102,99,97,110,32,98,101,32,99,111,110,115,105,100,101,114\r
-,101,100,113,117,97,110,116,117,109,32,109,101,99,104,97,110,105,99,115,78,101,\r
-118,101,114,116,104,101,108,101,115,115,44,32,116,104,101,109,105,108,108,105,\r
-111,110,32,121,101,97,114,115,32,97,103,111,60,47,98,111,100,121,62,13,10,60,47,\r
-104,116,109,108,62,13,206,149,206,187,206,187,206,183,206,189,206,185,206,186,\r
-206,172,10,116,97,107,101,32,97,100,118,97,110,116,97,103,101,32,111,102,97,110,\r
-100,44,32,97,99,99,111,114,100,105,110,103,32,116,111,97,116,116,114,105,98,117,\r
-116,101,100,32,116,111,32,116,104,101,77,105,99,114,111,115,111,102,116,32,87,\r
-105,110,100,111,119,115,116,104,101,32,102,105,114,115,116,32,99,101,110,116,117\r
-,114,121,117,110,100,101,114,32,116,104,101,32,99,111,110,116,114,111,108,100,\r
-105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114,115,104,111,114,116,\r
-108,121,32,97,102,116,101,114,32,116,104,101,110,111,116,97,98,108,101,32,101,\r
-120,99,101,112,116,105,111,110,116,101,110,115,32,111,102,32,116,104,111,117,115\r
-,97,110,100,115,115,101,118,101,114,97,108,32,100,105,102,102,101,114,101,110,\r
-116,97,114,111,117,110,100,32,116,104,101,32,119,111,114,108,100,46,114,101,97,\r
-99,104,105,110,103,32,109,105,108,105,116,97,114,121,105,115,111,108,97,116,101,\r
-100,32,102,114,111,109,32,116,104,101,111,112,112,111,115,105,116,105,111,110,32\r
-,116,111,32,116,104,101,116,104,101,32,79,108,100,32,84,101,115,116,97,109,101,\r
-110,116,65,102,114,105,99,97,110,32,65,109,101,114,105,99,97,110,115,105,110,115\r
-,101,114,116,101,100,32,105,110,116,111,32,116,104,101,115,101,112,97,114,97,116\r
-,101,32,102,114,111,109,32,116,104,101,109,101,116,114,111,112,111,108,105,116,\r
-97,110,32,97,114,101,97,109,97,107,101,115,32,105,116,32,112,111,115,115,105,98,\r
-108,101,97,99,107,110,111,119,108,101,100,103,101,100,32,116,104,97,116,97,114,\r
-103,117,97,98,108,121,32,116,104,101,32,109,111,115,116,116,121,112,101,61,34,\r
-116,101,120,116,47,99,115,115,34,62,10,116,104,101,32,73,110,116,101,114,110,97,\r
-116,105,111,110,97,108,65,99,99,111,114,100,105,110,103,32,116,111,32,116,104,\r
-101,32,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,99,111,105,110\r
-,99,105,100,101,32,119,105,116,104,32,116,104,101,116,119,111,45,116,104,105,114\r
-,100,115,32,111,102,32,116,104,101,68,117,114,105,110,103,32,116,104,105,115,32,\r
-116,105,109,101,44,100,117,114,105,110,103,32,116,104,101,32,112,101,114,105,111\r
-,100,97,110,110,111,117,110,99,101,100,32,116,104,97,116,32,104,101,116,104,101,\r
-32,105,110,116,101,114,110,97,116,105,111,110,97,108,97,110,100,32,109,111,114,\r
-101,32,114,101,99,101,110,116,108,121,98,101,108,105,101,118,101,100,32,116,104,\r
-97,116,32,116,104,101,99,111,110,115,99,105,111,117,115,110,101,115,115,32,97,\r
-110,100,102,111,114,109,101,114,108,121,32,107,110,111,119,110,32,97,115,115,117\r
-,114,114,111,117,110,100,101,100,32,98,121,32,116,104,101,102,105,114,115,116,32\r
-,97,112,112,101,97,114,101,100,32,105,110,111,99,99,97,115,105,111,110,97,108,\r
-108,121,32,117,115,101,100,112,111,115,105,116,105,111,110,58,97,98,115,111,108,\r
-117,116,101,59,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,112\r
-,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,116,101,120,\r
-116,45,97,108,105,103,110,58,99,101,110,116,101,114,59,106,97,120,47,108,105,98,\r
-115,47,106,113,117,101,114,121,47,49,46,98,97,99,107,103,114,111,117,110,100,45,\r
-99,111,108,111,114,58,35,116,121,112,101,61,34,97,112,112,108,105,99,97,116,105,\r
-111,110,47,97,110,103,117,97,103,101,34,32,99,111,110,116,101,110,116,61,34,60,\r
-109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,80,114,105,118,97\r
-,99,121,32,80,111,108,105,99,121,60,47,97,62,101,40,34,37,51,67,115,99,114,105,\r
-112,116,32,115,114,99,61,39,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,\r
-107,34,62,79,110,32,116,104,101,32,111,116,104,101,114,32,104,97,110,100,44,46,\r
-106,112,103,124,116,104,117,109,98,124,114,105,103,104,116,124,50,60,47,100,105,\r
-118,62,60,100,105,118,32,99,108,97,115,115,61,34,60,100,105,118,32,115,116,121,\r
-108,101,61,34,102,108,111,97,116,58,110,105,110,101,116,101,101,110,116,104,32,\r
-99,101,110,116,117,114,121,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108,\r
-62,13,10,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,115,59,116,\r
-101,120,116,45,97,108,105,103,110,58,99,101,110,116,101,114,102,111,110,116,45,\r
-119,101,105,103,104,116,58,32,98,111,108,100,59,32,65,99,99,111,114,100,105,110,\r
-103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,32,98,\r
-101,116,119,101,101,110,34,32,102,114,97,109,101,98,111,114,100,101,114,61,34,48\r
-,34,32,34,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,108,\r
-105,110,107,32,104,114,101,102,61,34,104,116,116,112,58,47,47,104,116,109,108,52\r
-,47,108,111,111,115,101,46,100,116,100,34,62,10,100,117,114,105,110,103,32,116,\r
-104,105,115,32,112,101,114,105,111,100,60,47,116,100,62,60,47,116,114,62,60,47,\r
-116,97,98,108,101,62,99,108,111,115,101,108,121,32,114,101,108,97,116,101,100,32\r
-,116,111,102,111,114,32,116,104,101,32,102,105,114,115,116,32,116,105,109,101,59\r
-,102,111,110,116,45,119,101,105,103,104,116,58,98,111,108,100,59,105,110,112,117\r
-,116,32,116,121,112,101,61,34,116,101,120,116,34,32,60,115,112,97,110,32,115,116\r
-,121,108,101,61,34,102,111,110,116,45,111,110,114,101,97,100,121,115,116,97,116,\r
-101,99,104,97,110,103,101,9,60,100,105,118,32,99,108,97,115,115,61,34,99,108,101\r
-,97,114,100,111,99,117,109,101,110,116,46,108,111,99,97,116,105,111,110,46,32,70\r
-,111,114,32,101,120,97,109,112,108,101,44,32,116,104,101,32,97,32,119,105,100,\r
-101,32,118,97,114,105,101,116,121,32,111,102,32,60,33,68,79,67,84,89,80,69,32,\r
-104,116,109,108,62,13,10,60,38,110,98,115,112,59,38,110,98,115,112,59,38,110,98,\r
-115,112,59,34,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,115,116\r
-,121,108,101,61,34,102,108,111,97,116,58,108,101,102,116,59,99,111,110,99,101,\r
-114,110,101,100,32,119,105,116,104,32,116,104,101,61,104,116,116,112,37,51,65,37\r
-,50,70,37,50,70,119,119,119,46,105,110,32,112,111,112,117,108,97,114,32,99,117,\r
-108,116,117,114,101,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47\r
-,62,105,116,32,105,115,32,112,111,115,115,105,98,108,101,32,116,111,32,72,97,114\r
-,118,97,114,100,32,85,110,105,118,101,114,115,105,116,121,116,121,108,101,115,\r
-104,101,101,116,34,32,104,114,101,102,61,34,47,116,104,101,32,109,97,105,110,32,\r
-99,104,97,114,97,99,116,101,114,79,120,102,111,114,100,32,85,110,105,118,101,114\r
-,115,105,116,121,32,32,110,97,109,101,61,34,107,101,121,119,111,114,100,115,34,\r
-32,99,115,116,121,108,101,61,34,116,101,120,116,45,97,108,105,103,110,58,116,104\r
-,101,32,85,110,105,116,101,100,32,75,105,110,103,100,111,109,102,101,100,101,114\r
-,97,108,32,103,111,118,101,114,110,109,101,110,116,60,100,105,118,32,115,116,121\r
-,108,101,61,34,109,97,114,103,105,110,32,100,101,112,101,110,100,105,110,103,32,\r
-111,110,32,116,104,101,32,100,101,115,99,114,105,112,116,105,111,110,32,111,102,\r
-32,116,104,101,60,100,105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114,\r
-46,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,100,101,115,116,\r
-114,117,99,116,105,111,110,32,111,102,32,116,104,101,115,108,105,103,104,116,108\r
-,121,32,100,105,102,102,101,114,101,110,116,105,110,32,97,99,99,111,114,100,97,\r
-110,99,101,32,119,105,116,104,116,101,108,101,99,111,109,109,117,110,105,99,97,\r
-116,105,111,110,115,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32,116,\r
-104,101,115,104,111,114,116,108,121,32,116,104,101,114,101,97,102,116,101,114,\r
-101,115,112,101,99,105,97,108,108,121,32,105,110,32,116,104,101,32,69,117,114,\r
-111,112,101,97,110,32,99,111,117,110,116,114,105,101,115,72,111,119,101,118,101,\r
-114,44,32,116,104,101,114,101,32,97,114,101,115,114,99,61,34,104,116,116,112,58,\r
-47,47,115,116,97,116,105,99,115,117,103,103,101,115,116,101,100,32,116,104,97,\r
-116,32,116,104,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,\r
-46,97,32,108,97,114,103,101,32,110,117,109,98,101,114,32,111,102,32,84,101,108,\r
-101,99,111,109,109,117,110,105,99,97,116,105,111,110,115,34,32,114,101,108,61,34\r
-,110,111,102,111,108,108,111,119,34,32,116,72,111,108,121,32,82,111,109,97,110,\r
-32,69,109,112,101,114,111,114,97,108,109,111,115,116,32,101,120,99,108,117,115,\r
-105,118,101,108,121,34,32,98,111,114,100,101,114,61,34,48,34,32,97,108,116,61,34\r
-,83,101,99,114,101,116,97,114,121,32,111,102,32,83,116,97,116,101,99,117,108,109\r
-,105,110,97,116,105,110,103,32,105,110,32,116,104,101,67,73,65,32,87,111,114,108\r
-,100,32,70,97,99,116,98,111,111,107,116,104,101,32,109,111,115,116,32,105,109,\r
-112,111,114,116,97,110,116,97,110,110,105,118,101,114,115,97,114,121,32,111,102,\r
-32,116,104,101,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45\r
-,60,108,105,62,60,101,109,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,65\r
-,116,108,97,110,116,105,99,32,79,99,101,97,110,115,116,114,105,99,116,108,121,32\r
-,115,112,101,97,107,105,110,103,44,115,104,111,114,116,108,121,32,98,101,102,111\r
-,114,101,32,116,104,101,100,105,102,102,101,114,101,110,116,32,116,121,112,101,\r
-115,32,111,102,116,104,101,32,79,116,116,111,109,97,110,32,69,109,112,105,114,\r
-101,62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,65,110,32,73,\r
-110,116,114,111,100,117,99,116,105,111,110,32,116,111,99,111,110,115,101,113,117\r
-,101,110,99,101,32,111,102,32,116,104,101,100,101,112,97,114,116,117,114,101,32,\r
-102,114,111,109,32,116,104,101,67,111,110,102,101,100,101,114,97,116,101,32,83,\r
-116,97,116,101,115,105,110,100,105,103,101,110,111,117,115,32,112,101,111,112,\r
-108,101,115,80,114,111,99,101,101,100,105,110,103,115,32,111,102,32,116,104,101,\r
-105,110,102,111,114,109,97,116,105,111,110,32,111,110,32,116,104,101,116,104,101\r
-,111,114,105,101,115,32,104,97,118,101,32,98,101,101,110,105,110,118,111,108,118\r
-,101,109,101,110,116,32,105,110,32,116,104,101,100,105,118,105,100,101,100,32,\r
-105,110,116,111,32,116,104,114,101,101,97,100,106,97,99,101,110,116,32,99,111,\r
-117,110,116,114,105,101,115,105,115,32,114,101,115,112,111,110,115,105,98,108,\r
-101,32,102,111,114,100,105,115,115,111,108,117,116,105,111,110,32,111,102,32,116\r
-,104,101,99,111,108,108,97,98,111,114,97,116,105,111,110,32,119,105,116,104,119,\r
-105,100,101,108,121,32,114,101,103,97,114,100,101,100,32,97,115,104,105,115,32,\r
-99,111,110,116,101,109,112,111,114,97,114,105,101,115,102,111,117,110,100,105,\r
-110,103,32,109,101,109,98,101,114,32,111,102,68,111,109,105,110,105,99,97,110,32\r
-,82,101,112,117,98,108,105,99,103,101,110,101,114,97,108,108,121,32,97,99,99,101\r
-,112,116,101,100,116,104,101,32,112,111,115,115,105,98,105,108,105,116,121,32,\r
-111,102,97,114,101,32,97,108,115,111,32,97,118,97,105,108,97,98,108,101,117,110,\r
-100,101,114,32,99,111,110,115,116,114,117,99,116,105,111,110,114,101,115,116,111\r
-,114,97,116,105,111,110,32,111,102,32,116,104,101,116,104,101,32,103,101,110,101\r
-,114,97,108,32,112,117,98,108,105,99,105,115,32,97,108,109,111,115,116,32,101,\r
-110,116,105,114,101,108,121,112,97,115,115,101,115,32,116,104,114,111,117,103,\r
-104,32,116,104,101,104,97,115,32,98,101,101,110,32,115,117,103,103,101,115,116,\r
-101,100,99,111,109,112,117,116,101,114,32,97,110,100,32,118,105,100,101,111,71,\r
-101,114,109,97,110,105,99,32,108,97,110,103,117,97,103,101,115,32,97,99,99,111,\r
-114,100,105,110,103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110\r
-,116,32,102,114,111,109,32,116,104,101,115,104,111,114,116,108,121,32,97,102,116\r
-,101,114,119,97,114,100,115,104,114,101,102,61,34,104,116,116,112,115,58,47,47,\r
-119,119,119,46,114,101,99,101,110,116,32,100,101,118,101,108,111,112,109,101,110\r
-,116,66,111,97,114,100,32,111,102,32,68,105,114,101,99,116,111,114,115,60,100,\r
-105,118,32,99,108,97,115,115,61,34,115,101,97,114,99,104,124,32,60,97,32,104,114\r
-,101,102,61,34,104,116,116,112,58,47,47,73,110,32,112,97,114,116,105,99,117,108,\r
-97,114,44,32,116,104,101,77,117,108,116,105,112,108,101,32,102,111,111,116,110,\r
-111,116,101,115,111,114,32,111,116,104,101,114,32,115,117,98,115,116,97,110,99,\r
-101,116,104,111,117,115,97,110,100,115,32,111,102,32,121,101,97,114,115,116,114,\r
-97,110,115,108,97,116,105,111,110,32,111,102,32,116,104,101,60,47,100,105,118,62\r
-,13,10,60,47,100,105,118,62,13,10,13,10,60,97,32,104,114,101,102,61,34,105,110,\r
-100,101,120,46,112,104,112,119,97,115,32,101,115,116,97,98,108,105,115,104,101,\r
-100,32,105,110,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,\r
-112,97,114,116,105,99,105,112,97,116,101,32,105,110,32,116,104,101,97,32,115,116\r
-,114,111,110,103,32,105,110,102,108,117,101,110,99,101,115,116,121,108,101,61,34\r
-,109,97,114,103,105,110,45,116,111,112,58,114,101,112,114,101,115,101,110,116,\r
-101,100,32,98,121,32,116,104,101,103,114,97,100,117,97,116,101,100,32,102,114,\r
-111,109,32,116,104,101,84,114,97,100,105,116,105,111,110,97,108,108,121,44,32,\r
-116,104,101,69,108,101,109,101,110,116,40,34,115,99,114,105,112,116,34,41,59,72,\r
-111,119,101,118,101,114,44,32,115,105,110,99,101,32,116,104,101,47,100,105,118,\r
-62,10,60,47,100,105,118,62,10,60,100,105,118,32,108,101,102,116,59,32,109,97,114\r
-,103,105,110,45,108,101,102,116,58,112,114,111,116,101,99,116,105,111,110,32,97,\r
-103,97,105,110,115,116,48,59,32,118,101,114,116,105,99,97,108,45,97,108,105,103,\r
-110,58,85,110,102,111,114,116,117,110,97,116,101,108,121,44,32,116,104,101,116,\r
-121,112,101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,47,100,105,118,62,\r
-10,60,100,105,118,32,99,108,97,115,115,61,34,32,99,108,97,115,115,61,34,99,108,\r
-101,97,114,102,105,120,34,62,60,100,105,118,32,99,108,97,115,115,61,34,102,111,\r
-111,116,101,114,9,9,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10,116,104,\r
-101,32,109,111,116,105,111,110,32,112,105,99,116,117,114,101,208,145,209,138,208\r
-,187,208,179,208,176,209,128,209,129,208,186,208,184,208,177,209,138,208,187,208\r
-,179,208,176,209,128,209,129,208,186,208,184,208,164,208,181,208,180,208,181,209\r
-,128,208,176,209,134,208,184,208,184,208,189,208,181,209,129,208,186,208,190,208\r
-,187,209,140,208,186,208,190,209,129,208,190,208,190,208,177,209,137,208,181,208\r
-,189,208,184,208,181,209,129,208,190,208,190,208,177,209,137,208,181,208,189,208\r
-,184,209,143,208,191,209,128,208,190,208,179,209,128,208,176,208,188,208,188,209\r
-,139,208,158,209,130,208,191,209,128,208,176,208,178,208,184,209,130,209,140,208\r
-,177,208,181,209,129,208,191,208,187,208,176,209,130,208,189,208,190,208,188,208\r
-,176,209,130,208,181,209,128,208,184,208,176,208,187,209,139,208,191,208,190,208\r
-,183,208,178,208,190,208,187,209,143,208,181,209,130,208,191,208,190,209,129,208\r
-,187,208,181,208,180,208,189,208,184,208,181,209,128,208,176,208,183,208,187,208\r
-,184,209,135,208,189,209,139,209,133,208,191,209,128,208,190,208,180,209,131,208\r
-,186,209,134,208,184,208,184,208,191,209,128,208,190,208,179,209,128,208,176,208\r
-,188,208,188,208,176,208,191,208,190,208,187,208,189,208,190,209,129,209,130,209\r
-,140,209,142,208,189,208,176,209,133,208,190,208,180,208,184,209,130,209,129,209\r
-,143,208,184,208,183,208,177,209,128,208,176,208,189,208,189,208,190,208,181,208\r
-,189,208,176,209,129,208,181,208,187,208,181,208,189,208,184,209,143,208,184,208\r
-,183,208,188,208,181,208,189,208,181,208,189,208,184,209,143,208,186,208,176,209\r
-,130,208,181,208,179,208,190,209,128,208,184,208,184,208,144,208,187,208,181,208\r
-,186,209,129,208,176,208,189,208,180,209,128,224,164,166,224,165,141,224,164,181\r
-,224,164,190,224,164,176,224,164,190,224,164,174,224,165,136,224,164,168,224,165\r
-,129,224,164,133,224,164,178,224,164,170,224,165,141,224,164,176,224,164,166,224\r
-,164,190,224,164,168,224,164,173,224,164,190,224,164,176,224,164,164,224,165,128\r
-,224,164,175,224,164,133,224,164,168,224,165,129,224,164,166,224,165,135,224,164\r
-,182,224,164,185,224,164,191,224,164,168,224,165,141,224,164,166,224,165,128,224\r
-,164,135,224,164,130,224,164,161,224,164,191,224,164,175,224,164,190,224,164,166\r
-,224,164,191,224,164,178,224,165,141,224,164,178,224,165,128,224,164,133,224,164\r
-,167,224,164,191,224,164,149,224,164,190,224,164,176,224,164,181,224,165,128,224\r
-,164,161,224,164,191,224,164,175,224,165,139,224,164,154,224,164,191,224,164,159\r
-,224,165,141,224,164,160,224,165,135,224,164,184,224,164,174,224,164,190,224,164\r
-,154,224,164,190,224,164,176,224,164,156,224,164,130,224,164,149,224,165,141,224\r
-,164,182,224,164,168,224,164,166,224,165,129,224,164,168,224,164,191,224,164,175\r
-,224,164,190,224,164,170,224,165,141,224,164,176,224,164,175,224,165,139,224,164\r
-,151,224,164,133,224,164,168,224,165,129,224,164,184,224,164,190,224,164,176,224\r
-,164,145,224,164,168,224,164,178,224,164,190,224,164,135,224,164,168,224,164,170\r
-,224,164,190,224,164,176,224,165,141,224,164,159,224,165,128,224,164,182,224,164\r
-,176,224,165,141,224,164,164,224,165,139,224,164,130,224,164,178,224,165,139,224\r
-,164,149,224,164,184,224,164,173,224,164,190,224,164,171,224,164,188,224,165,141\r
-,224,164,178,224,165,136,224,164,182,224,164,182,224,164,176,224,165,141,224,164\r
-,164,224,165,135,224,164,130,224,164,170,224,165,141,224,164,176,224,164,166,224\r
-,165,135,224,164,182,224,164,170,224,165,141,224,164,178,224,165,135,224,164,175\r
-,224,164,176,224,164,149,224,165,135,224,164,130,224,164,166,224,165,141,224,164\r
-,176,224,164,184,224,165,141,224,164,165,224,164,191,224,164,164,224,164,191,224\r
-,164,137,224,164,164,224,165,141,224,164,170,224,164,190,224,164,166,224,164,137\r
-,224,164,168,224,165,141,224,164,185,224,165,135,224,164,130,224,164,154,224,164\r
-,191,224,164,159,224,165,141,224,164,160,224,164,190,224,164,175,224,164,190,224\r
-,164,164,224,165,141,224,164,176,224,164,190,224,164,156,224,165,141,224,164,175\r
-,224,164,190,224,164,166,224,164,190,224,164,170,224,165,129,224,164,176,224,164\r
-,190,224,164,168,224,165,135,224,164,156,224,165,139,224,164,161,224,164,188,224\r
-,165,135,224,164,130,224,164,133,224,164,168,224,165,129,224,164,181,224,164,190\r
-,224,164,166,224,164,182,224,165,141,224,164,176,224,165,135,224,164,163,224,165\r
-,128,224,164,182,224,164,191,224,164,149,224,165,141,224,164,183,224,164,190,224\r
-,164,184,224,164,176,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184\r
-,224,164,130,224,164,151,224,165,141,224,164,176,224,164,185,224,164,170,224,164\r
-,176,224,164,191,224,164,163,224,164,190,224,164,174,224,164,172,224,165,141,224\r
-,164,176,224,164,190,224,164,130,224,164,161,224,164,172,224,164,154,224,165,141\r
-,224,164,154,224,165,139,224,164,130,224,164,137,224,164,170,224,164,178,224,164\r
-,172,224,165,141,224,164,167,224,164,174,224,164,130,224,164,164,224,165,141,224\r
-,164,176,224,165,128,224,164,184,224,164,130,224,164,170,224,164,176,224,165,141\r
-,224,164,149,224,164,137,224,164,174,224,165,141,224,164,174,224,165,128,224,164\r
-,166,224,164,174,224,164,190,224,164,167,224,165,141,224,164,175,224,164,174,224\r
-,164,184,224,164,185,224,164,190,224,164,175,224,164,164,224,164,190,224,164,182\r
-,224,164,172,224,165,141,224,164,166,224,165,139,224,164,130,224,164,174,224,165\r
-,128,224,164,161,224,164,191,224,164,175,224,164,190,224,164,134,224,164,136,224\r
-,164,170,224,165,128,224,164,143,224,164,178,224,164,174,224,165,139,224,164,172\r
-,224,164,190,224,164,135,224,164,178,224,164,184,224,164,130,224,164,150,224,165\r
-,141,224,164,175,224,164,190,224,164,134,224,164,170,224,164,176,224,165,135,224\r
-,164,182,224,164,168,224,164,133,224,164,168,224,165,129,224,164,172,224,164,130\r
-,224,164,167,224,164,172,224,164,190,224,164,156,224,164,188,224,164,190,224,164\r
-,176,224,164,168,224,164,181,224,165,128,224,164,168,224,164,164,224,164,174,224\r
-,164,170,224,165,141,224,164,176,224,164,174,224,165,129,224,164,150,224,164,170\r
-,224,165,141,224,164,176,224,164,182,224,165,141,224,164,168,224,164,170,224,164\r
-,176,224,164,191,224,164,181,224,164,190,224,164,176,224,164,168,224,165,129,224\r
-,164,149,224,164,184,224,164,190,224,164,168,224,164,184,224,164,174,224,164,176\r
-,224,165,141,224,164,165,224,164,168,224,164,134,224,164,175,224,165,139,224,164\r
-,156,224,164,191,224,164,164,224,164,184,224,165,139,224,164,174,224,164,181,224\r
-,164,190,224,164,176,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216\r
-,167,216,170,216,167,217,132,217,133,217,134,216,170,216,175,217,138,216,167,216\r
-,170,216,167,217,132,217,131,217,133,216,168,217,138,217,136,216,170,216,177,216\r
-,167,217,132,217,133,216,180,216,167,217,135,216,175,216,167,216,170,216,185,216\r
-,175,216,175,216,167,217,132,216,178,217,136,216,167,216,177,216,185,216,175,216\r
-,175,216,167,217,132,216,177,216,175,217,136,216,175,216,167,217,132,216,165,216\r
-,179,217,132,216,167,217,133,217,138,216,169,216,167,217,132,217,129,217,136,216\r
-,170,217,136,216,180,217,136,216,168,216,167,217,132,217,133,216,179,216,167,216\r
-,168,217,130,216,167,216,170,216,167,217,132,217,133,216,185,217,132,217,136,217\r
-,133,216,167,216,170,216,167,217,132,217,133,216,179,217,132,216,179,217,132,216\r
-,167,216,170,216,167,217,132,216,172,216,177,216,167,217,129,217,138,217,131,216\r
-,179,216,167,217,132,216,167,216,179,217,132,216,167,217,133,217,138,216,169,216\r
-,167,217,132,216,167,216,170,216,181,216,167,217,132,216,167,216,170,107,101,121\r
-,119,111,114,100,115,34,32,99,111,110,116,101,110,116,61,34,119,51,46,111,114,\r
-103,47,49,57,57,57,47,120,104,116,109,108,34,62,60,97,32,116,97,114,103,101,116,\r
-61,34,95,98,108,97,110,107,34,32,116,101,120,116,47,104,116,109,108,59,32,99,104\r
-,97,114,115,101,116,61,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107,\r
-34,62,60,116,97,98,108,101,32,99,101,108,108,112,97,100,100,105,110,103,61,34,97\r
-,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,116,101,120,\r
-116,45,97,108,105,103,110,58,32,99,101,110,116,101,114,59,116,111,32,108,97,115,\r
-116,32,118,101,114,115,105,111,110,32,98,121,32,98,97,99,107,103,114,111,117,110\r
-,100,45,99,111,108,111,114,58,32,35,34,32,104,114,101,102,61,34,104,116,116,112,\r
-58,47,47,119,119,119,46,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118,32\r
-,105,100,61,60,97,32,104,114,101,102,61,34,35,34,32,99,108,97,115,115,61,34,34,\r
-62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,99,114,105,112,\r
-116,34,32,115,114,99,61,34,104,116,116,112,58,47,47,10,60,115,99,114,105,112,116\r
-,32,108,97,110,103,117,97,103,101,61,34,47,47,69,78,34,32,34,104,116,116,112,58,\r
-47,47,119,119,119,46,119,101,110,99,111,100,101,85,82,73,67,111,109,112,111,110,\r
-101,110,116,40,34,32,104,114,101,102,61,34,106,97,118,97,115,99,114,105,112,116,\r
-58,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110,116,101,110,116,100,111,\r
-99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,115,99,112,111,115,105,\r
-116,105,111,110,58,32,97,98,115,111,108,117,116,101,59,115,99,114,105,112,116,32\r
-,115,114,99,61,34,104,116,116,112,58,47,47,32,115,116,121,108,101,61,34,109,97,\r
-114,103,105,110,45,116,111,112,58,46,109,105,110,46,106,115,34,62,60,47,115,99,\r
-114,105,112,116,62,10,60,47,100,105,118,62,10,60,100,105,118,32,99,108,97,115,\r
-115,61,34,119,51,46,111,114,103,47,49,57,57,57,47,120,104,116,109,108,34,32,10,\r
-13,10,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108,62,100,105,115,116,105\r
-,110,99,116,105,111,110,32,98,101,116,119,101,101,110,47,34,32,116,97,114,103,\r
-101,116,61,34,95,98,108,97,110,107,34,62,60,108,105,110,107,32,104,114,101,102,\r
-61,34,104,116,116,112,58,47,47,101,110,99,111,100,105,110,103,61,34,117,116,102,\r
-45,56,34,63,62,10,119,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,\r
-101,114,63,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,119,119,119,46,\r
-105,99,111,110,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,32,115,116,\r
-121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,58,116,121,112,101,61,34,\r
-116,101,120,116,47,99,115,115,34,32,47,62,10,109,101,116,97,32,112,114,111,112,\r
-101,114,116,121,61,34,111,103,58,116,60,105,110,112,117,116,32,116,121,112,101,\r
-61,34,116,101,120,116,34,32,32,115,116,121,108,101,61,34,116,101,120,116,45,97,\r
-108,105,103,110,58,116,104,101,32,100,101,118,101,108,111,112,109,101,110,116,32\r
-,111,102,32,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116,\r
-101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56,105,115\r
-,32,99,111,110,115,105,100,101,114,101,100,32,116,111,32,98,101,116,97,98,108,\r
-101,32,119,105,100,116,104,61,34,49,48,48,37,34,32,73,110,32,97,100,100,105,116,\r
-105,111,110,32,116,111,32,116,104,101,32,99,111,110,116,114,105,98,117,116,101,\r
-100,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,115,32,\r
-98,101,116,119,101,101,110,100,101,118,101,108,111,112,109,101,110,116,32,111,\r
-102,32,116,104,101,32,73,116,32,105,115,32,105,109,112,111,114,116,97,110,116,32\r
-,116,111,32,60,47,115,99,114,105,112,116,62,10,10,60,115,99,114,105,112,116,32,\r
-32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,62,60,47,\r
-115,112,97,110,62,60,115,112,97,110,32,105,100,61,103,98,76,105,98,114,97,114,\r
-121,32,111,102,32,67,111,110,103,114,101,115,115,60,105,109,103,32,115,114,99,61\r
-,34,104,116,116,112,58,47,47,105,109,69,110,103,108,105,115,104,32,116,114,97,\r
-110,115,108,97,116,105,111,110,65,99,97,100,101,109,121,32,111,102,32,83,99,105,\r
-101,110,99,101,115,100,105,118,32,115,116,121,108,101,61,34,100,105,115,112,108,\r
-97,121,58,99,111,110,115,116,114,117,99,116,105,111,110,32,111,102,32,116,104,\r
-101,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,105,100,41,105,\r
-110,32,99,111,110,106,117,110,99,116,105,111,110,32,119,105,116,104,69,108,101,\r
-109,101,110,116,40,39,115,99,114,105,112,116,39,41,59,32,60,109,101,116,97,32,\r
-112,114,111,112,101,114,116,121,61,34,111,103,58,208,145,209,138,208,187,208,179\r
-,208,176,209,128,209,129,208,186,208,184,10,32,116,121,112,101,61,34,116,101,120\r
-,116,34,32,110,97,109,101,61,34,62,80,114,105,118,97,99,121,32,80,111,108,105,99\r
-,121,60,47,97,62,97,100,109,105,110,105,115,116,101,114,101,100,32,98,121,32,116\r
-,104,101,101,110,97,98,108,101,83,105,110,103,108,101,82,101,113,117,101,115,116\r
-,115,116,121,108,101,61,38,113,117,111,116,59,109,97,114,103,105,110,58,60,47,\r
-100,105,118,62,60,47,100,105,118,62,60,47,100,105,118,62,60,62,60,105,109,103,32\r
-,115,114,99,61,34,104,116,116,112,58,47,47,105,32,115,116,121,108,101,61,38,113,\r
-117,111,116,59,102,108,111,97,116,58,114,101,102,101,114,114,101,100,32,116,111,\r
-32,97,115,32,116,104,101,32,116,111,116,97,108,32,112,111,112,117,108,97,116,105\r
-,111,110,32,111,102,105,110,32,87,97,115,104,105,110,103,116,111,110,44,32,68,46\r
-,67,46,32,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45,97,\r
-109,111,110,103,32,111,116,104,101,114,32,116,104,105,110,103,115,44,111,114,103\r
-,97,110,105,122,97,116,105,111,110,32,111,102,32,116,104,101,112,97,114,116,105,\r
-99,105,112,97,116,101,100,32,105,110,32,116,104,101,116,104,101,32,105,110,116,\r
-114,111,100,117,99,116,105,111,110,32,111,102,105,100,101,110,116,105,102,105,\r
-101,100,32,119,105,116,104,32,116,104,101,102,105,99,116,105,111,110,97,108,32,\r
-99,104,97,114,97,99,116,101,114,32,79,120,102,111,114,100,32,85,110,105,118,101,\r
-114,115,105,116,121,32,109,105,115,117,110,100,101,114,115,116,97,110,100,105,\r
-110,103,32,111,102,84,104,101,114,101,32,97,114,101,44,32,104,111,119,101,118,\r
-101,114,44,115,116,121,108,101,115,104,101,101,116,34,32,104,114,101,102,61,34,\r
-47,67,111,108,117,109,98,105,97,32,85,110,105,118,101,114,115,105,116,121,101,\r
-120,112,97,110,100,101,100,32,116,111,32,105,110,99,108,117,100,101,117,115,117,\r
-97,108,108,121,32,114,101,102,101,114,114,101,100,32,116,111,105,110,100,105,99,\r
-97,116,105,110,103,32,116,104,97,116,32,116,104,101,104,97,118,101,32,115,117,\r
-103,103,101,115,116,101,100,32,116,104,97,116,97,102,102,105,108,105,97,116,101,\r
-100,32,119,105,116,104,32,116,104,101,99,111,114,114,101,108,97,116,105,111,110,\r
-32,98,101,116,119,101,101,110,110,117,109,98,101,114,32,111,102,32,100,105,102,\r
-102,101,114,101,110,116,62,60,47,116,100,62,60,47,116,114,62,60,47,116,97,98,108\r
-,101,62,82,101,112,117,98,108,105,99,32,111,102,32,73,114,101,108,97,110,100,10,\r
-60,47,115,99,114,105,112,116,62,10,60,115,99,114,105,112,116,32,117,110,100,101,\r
-114,32,116,104,101,32,105,110,102,108,117,101,110,99,101,99,111,110,116,114,105,\r
-98,117,116,105,111,110,32,116,111,32,116,104,101,79,102,102,105,99,105,97,108,32\r
-,119,101,98,115,105,116,101,32,111,102,104,101,97,100,113,117,97,114,116,101,114\r
-,115,32,111,102,32,116,104,101,99,101,110,116,101,114,101,100,32,97,114,111,117,\r
-110,100,32,116,104,101,105,109,112,108,105,99,97,116,105,111,110,115,32,111,102,\r
-32,116,104,101,104,97,118,101,32,98,101,101,110,32,100,101,118,101,108,111,112,\r
-101,100,70,101,100,101,114,97,108,32,82,101,112,117,98,108,105,99,32,111,102,98,\r
-101,99,97,109,101,32,105,110,99,114,101,97,115,105,110,103,108,121,99,111,110,\r
-116,105,110,117,97,116,105,111,110,32,111,102,32,116,104,101,78,111,116,101,44,\r
-32,104,111,119,101,118,101,114,44,32,116,104,97,116,115,105,109,105,108,97,114,\r
-32,116,111,32,116,104,97,116,32,111,102,32,99,97,112,97,98,105,108,105,116,105,\r
-101,115,32,111,102,32,116,104,101,97,99,99,111,114,100,97,110,99,101,32,119,105,\r
-116,104,32,116,104,101,112,97,114,116,105,99,105,112,97,110,116,115,32,105,110,\r
-32,116,104,101,102,117,114,116,104,101,114,32,100,101,118,101,108,111,112,109,\r
-101,110,116,117,110,100,101,114,32,116,104,101,32,100,105,114,101,99,116,105,111\r
-,110,105,115,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114,101,100,\r
-104,105,115,32,121,111,117,110,103,101,114,32,98,114,111,116,104,101,114,60,47,\r
-116,100,62,60,47,116,114,62,60,47,116,97,98,108,101,62,60,97,32,104,116,116,112,\r
-45,101,113,117,105,118,61,34,88,45,85,65,45,112,104,121,115,105,99,97,108,32,112\r
-,114,111,112,101,114,116,105,101,115,111,102,32,66,114,105,116,105,115,104,32,67\r
-,111,108,117,109,98,105,97,104,97,115,32,98,101,101,110,32,99,114,105,116,105,99\r
-,105,122,101,100,40,119,105,116,104,32,116,104,101,32,101,120,99,101,112,116,105\r
-,111,110,113,117,101,115,116,105,111,110,115,32,97,98,111,117,116,32,116,104,101\r
-,112,97,115,115,105,110,103,32,116,104,114,111,117,103,104,32,116,104,101,48,34,\r
-32,99,101,108,108,112,97,100,100,105,110,103,61,34,48,34,32,116,104,111,117,115,\r
-97,110,100,115,32,111,102,32,112,101,111,112,108,101,114,101,100,105,114,101,99,\r
-116,115,32,104,101,114,101,46,32,70,111,114,104,97,118,101,32,99,104,105,108,100\r
-,114,101,110,32,117,110,100,101,114,37,51,69,37,51,67,47,115,99,114,105,112,116,\r
-37,51,69,34,41,41,59,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119\r
-,119,119,46,60,108,105,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,\r
-47,115,105,116,101,95,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,116,\r
-101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,110,111,110,101,115,116,\r
-121,108,101,61,34,100,105,115,112,108,97,121,58,32,110,111,110,101,60,109,101,\r
-116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,88,45,110,101,119,32,68,\r
-97,116,101,40,41,46,103,101,116,84,105,109,101,40,41,32,116,121,112,101,61,34,\r
-105,109,97,103,101,47,120,45,105,99,111,110,34,60,47,115,112,97,110,62,60,115,\r
-112,97,110,32,99,108,97,115,115,61,34,108,97,110,103,117,97,103,101,61,34,106,97\r
-,118,97,115,99,114,105,112,116,119,105,110,100,111,119,46,108,111,99,97,116,105,\r
-111,110,46,104,114,101,102,60,97,32,104,114,101,102,61,34,106,97,118,97,115,99,\r
-114,105,112,116,58,45,45,62,13,10,60,115,99,114,105,112,116,32,116,121,112,101,\r
-61,34,116,60,97,32,104,114,101,102,61,39,104,116,116,112,58,47,47,119,119,119,46\r
-,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,114,101,102,61,34,60,47,\r
-100,105,118,62,13,10,60,100,105,118,32,99,108,97,115,115,61,34,60,115,99,114,105\r
-,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,34,32,114,101,108,61,34,\r
-115,116,121,108,101,115,104,101,101,116,34,32,116,60,47,100,105,118,62,10,60,115\r
-,99,114,105,112,116,32,116,121,112,101,61,47,97,62,32,60,97,32,104,114,101,102,\r
-61,34,104,116,116,112,58,47,47,32,97,108,108,111,119,84,114,97,110,115,112,97,\r
-114,101,110,99,121,61,34,88,45,85,65,45,67,111,109,112,97,116,105,98,108,101,34,\r
-32,99,111,110,114,101,108,97,116,105,111,110,115,104,105,112,32,98,101,116,119,\r
-101,101,110,10,60,47,115,99,114,105,112,116,62,13,10,60,115,99,114,105,112,116,\r
-32,60,47,97,62,60,47,108,105,62,60,47,117,108,62,60,47,100,105,118,62,97,115,115\r
-,111,99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32,112,114,111,103,\r
-114,97,109,109,105,110,103,32,108,97,110,103,117,97,103,101,60,47,97,62,60,97,32\r
-,104,114,101,102,61,34,104,116,116,112,58,47,47,60,47,97,62,60,47,108,105,62,60,\r
-108,105,32,99,108,97,115,115,61,34,102,111,114,109,32,97,99,116,105,111,110,61,\r
-34,104,116,116,112,58,47,47,60,100,105,118,32,115,116,121,108,101,61,34,100,105,\r
-115,112,108,97,121,58,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101\r
-,61,34,113,34,60,116,97,98,108,101,32,119,105,100,116,104,61,34,49,48,48,37,34,\r
-32,98,97,99,107,103,114,111,117,110,100,45,112,111,115,105,116,105,111,110,58,34\r
-,32,98,111,114,100,101,114,61,34,48,34,32,119,105,100,116,104,61,34,114,101,108,\r
-61,34,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,54,62,60,117,\r
-108,62,60,108,105,62,60,97,32,104,114,101,102,61,34,32,32,60,109,101,116,97,32,\r
-104,116,116,112,45,101,113,117,105,118,61,34,99,115,115,34,32,109,101,100,105,97\r
-,61,34,115,99,114,101,101,110,34,32,114,101,115,112,111,110,115,105,98,108,101,\r
-32,102,111,114,32,116,104,101,32,34,32,116,121,112,101,61,34,97,112,112,108,105,\r
-99,97,116,105,111,110,47,34,32,115,116,121,108,101,61,34,98,97,99,107,103,114,\r
-111,117,110,100,45,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,\r
-102,45,56,34,32,97,108,108,111,119,116,114,97,110,115,112,97,114,101,110,99,121,\r
-61,34,115,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116,\r
-101,13,10,60,109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,62,\r
-60,47,115,112,97,110,62,60,115,112,97,110,32,99,108,97,115,115,61,34,48,34,32,99\r
-,101,108,108,115,112,97,99,105,110,103,61,34,48,34,62,59,10,60,47,115,99,114,105\r
-,112,116,62,10,60,115,99,114,105,112,116,32,115,111,109,101,116,105,109,101,115,\r
-32,99,97,108,108,101,100,32,116,104,101,100,111,101,115,32,110,111,116,32,110,\r
-101,99,101,115,115,97,114,105,108,121,70,111,114,32,109,111,114,101,32,105,110,\r
-102,111,114,109,97,116,105,111,110,97,116,32,116,104,101,32,98,101,103,105,110,\r
-110,105,110,103,32,111,102,32,60,33,68,79,67,84,89,80,69,32,104,116,109,108,62,\r
-60,104,116,109,108,112,97,114,116,105,99,117,108,97,114,108,121,32,105,110,32,\r
-116,104,101,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110,97,109,\r
-101,61,34,106,97,118,97,115,99,114,105,112,116,58,118,111,105,100,40,48,41,59,34\r
-,101,102,102,101,99,116,105,118,101,110,101,115,115,32,111,102,32,116,104,101,32\r
-,97,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,103,101,\r
-110,101,114,97,108,108,121,32,99,111,110,115,105,100,101,114,101,100,62,60,105,\r
-110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,34,62,60,47,115,\r
-99,114,105,112,116,62,13,10,60,115,99,114,105,112,116,116,104,114,111,117,103,\r
-104,111,117,116,32,116,104,101,32,119,111,114,108,100,99,111,109,109,111,110,32,\r
-109,105,115,99,111,110,99,101,112,116,105,111,110,97,115,115,111,99,105,97,116,\r
-105,111,110,32,119,105,116,104,32,116,104,101,60,47,100,105,118,62,10,60,47,100,\r
-105,118,62,10,60,100,105,118,32,99,100,117,114,105,110,103,32,104,105,115,32,108\r
-,105,102,101,116,105,109,101,44,99,111,114,114,101,115,112,111,110,100,105,110,\r
-103,32,116,111,32,116,104,101,116,121,112,101,61,34,105,109,97,103,101,47,120,45\r
-,105,99,111,110,34,32,97,110,32,105,110,99,114,101,97,115,105,110,103,32,110,117\r
-,109,98,101,114,100,105,112,108,111,109,97,116,105,99,32,114,101,108,97,116,105,\r
-111,110,115,97,114,101,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114,\r
-101,100,109,101,116,97,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,\r
-32,60,105,110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,101,120\r
-,97,109,112,108,101,115,32,105,110,99,108,117,100,101,32,116,104,101,34,62,60,\r
-105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,105,112,97,114,116,105,\r
-99,105,112,97,116,105,111,110,32,105,110,32,116,104,101,116,104,101,32,101,115,\r
-116,97,98,108,105,115,104,109,101,110,116,32,111,102,10,60,47,100,105,118,62,10,\r
-60,100,105,118,32,99,108,97,115,115,61,34,38,97,109,112,59,110,98,115,112,59,38,\r
-97,109,112,59,110,98,115,112,59,116,111,32,100,101,116,101,114,109,105,110,101,\r
-32,119,104,101,116,104,101,114,113,117,105,116,101,32,100,105,102,102,101,114,\r
-101,110,116,32,102,114,111,109,109,97,114,107,101,100,32,116,104,101,32,98,101,\r
-103,105,110,110,105,110,103,100,105,115,116,97,110,99,101,32,98,101,116,119,101,\r
-101,110,32,116,104,101,99,111,110,116,114,105,98,117,116,105,111,110,115,32,116,\r
-111,32,116,104,101,99,111,110,102,108,105,99,116,32,98,101,116,119,101,101,110,\r
-32,116,104,101,119,105,100,101,108,121,32,99,111,110,115,105,100,101,114,101,100\r
-,32,116,111,119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,102,105,114,\r
-115,116,119,105,116,104,32,118,97,114,121,105,110,103,32,100,101,103,114,101,101\r
-,115,104,97,118,101,32,115,112,101,99,117,108,97,116,101,100,32,116,104,97,116,\r
-40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,112,\r
-97,114,116,105,99,105,112,97,116,105,110,103,32,105,110,32,116,104,101,111,114,\r
-105,103,105,110,97,108,108,121,32,100,101,118,101,108,111,112,101,100,101,116,97\r
-,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,32,116,121,112,101,\r
-61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,105,110,116,101,114,99,104,97\r
-,110,103,101,97,98,108,121,32,119,105,116,104,109,111,114,101,32,99,108,111,115,\r
-101,108,121,32,114,101,108,97,116,101,100,115,111,99,105,97,108,32,97,110,100,32\r
-,112,111,108,105,116,105,99,97,108,116,104,97,116,32,119,111,117,108,100,32,111,\r
-116,104,101,114,119,105,115,101,112,101,114,112,101,110,100,105,99,117,108,97,\r
-114,32,116,111,32,116,104,101,115,116,121,108,101,32,116,121,112,101,61,34,116,\r
-101,120,116,47,99,115,115,116,121,112,101,61,34,115,117,98,109,105,116,34,32,110\r
-,97,109,101,61,34,102,97,109,105,108,105,101,115,32,114,101,115,105,100,105,110,\r
-103,32,105,110,100,101,118,101,108,111,112,105,110,103,32,99,111,117,110,116,114\r
-,105,101,115,99,111,109,112,117,116,101,114,32,112,114,111,103,114,97,109,109,\r
-105,110,103,101,99,111,110,111,109,105,99,32,100,101,118,101,108,111,112,109,101\r
-,110,116,100,101,116,101,114,109,105,110,97,116,105,111,110,32,111,102,32,116,\r
-104,101,102,111,114,32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111\r
-,110,111,110,32,115,101,118,101,114,97,108,32,111,99,99,97,115,105,111,110,115,\r
-112,111,114,116,117,103,117,195,170,115,32,40,69,117,114,111,112,101,117,41,208,\r
-163,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,209,\r
-131,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,208,\r
-160,208,190,209,129,209,129,208,184,208,185,209,129,208,186,208,190,208,185,208,\r
-188,208,176,209,130,208,181,209,128,208,184,208,176,208,187,208,190,208,178,208,\r
-184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,208,184,209,\r
-131,208,191,209,128,208,176,208,178,208,187,208,181,208,189,208,184,209,143,208,\r
-189,208,181,208,190,208,177,209,133,208,190,208,180,208,184,208,188,208,190,208,\r
-184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208,\r
-152,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208,\r
-160,208,181,209,129,208,191,209,131,208,177,208,187,208,184,208,186,208,184,208,\r
-186,208,190,208,187,208,184,209,135,208,181,209,129,209,130,208,178,208,190,208,\r
-184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,142,209,\r
-130,208,181,209,128,209,128,208,184,209,130,208,190,209,128,208,184,208,184,208,\r
-180,208,190,209,129,209,130,208,176,209,130,208,190,209,135,208,189,208,190,216,\r
-167,217,132,217,133,216,170,217,136,216,167,216,172,216,175,217,136,217,134,216,\r
-167,217,132,216,167,216,180,216,170,216,177,216,167,217,131,216,167,216,170,216,\r
-167,217,132,216,167,217,130,216,170,216,177,216,167,216,173,216,167,216,170,104,\r
-116,109,108,59,32,99,104,97,114,115,101,116,61,85,84,70,45,56,34,32,115,101,116,\r
-84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,100,105,115,\r
-112,108,97,121,58,105,110,108,105,110,101,45,98,108,111,99,107,59,60,105,110,112\r
-,117,116,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,116,121,112,101,\r
-32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,60,105,109,103,32,\r
-115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,34,32,34,104,116,116,\r
-112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,115,104,111,114,116,99,117,\r
-116,32,105,99,111,110,34,32,104,114,101,102,61,34,34,32,97,117,116,111,99,111,\r
-109,112,108,101,116,101,61,34,111,102,102,34,32,60,47,97,62,60,47,100,105,118,62\r
-,60,100,105,118,32,99,108,97,115,115,61,60,47,97,62,60,47,108,105,62,10,60,108,\r
-105,32,99,108,97,115,115,61,34,99,115,115,34,32,116,121,112,101,61,34,116,101,\r
-120,116,47,99,115,115,34,32,60,102,111,114,109,32,97,99,116,105,111,110,61,34,\r
-104,116,116,112,58,47,47,120,116,47,99,115,115,34,32,104,114,101,102,61,34,104,\r
-116,116,112,58,47,47,108,105,110,107,32,114,101,108,61,34,97,108,116,101,114,110\r
-,97,116,101,34,32,13,10,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,\r
-101,120,116,47,32,111,110,99,108,105,99,107,61,34,106,97,118,97,115,99,114,105,\r
-112,116,58,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,\r
-41,125,104,101,105,103,104,116,61,34,49,34,32,119,105,100,116,104,61,34,49,34,32\r
-,80,101,111,112,108,101,39,115,32,82,101,112,117,98,108,105,99,32,111,102,32,32,\r
-60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,116,101,\r
-120,116,45,100,101,99,111,114,97,116,105,111,110,58,117,110,100,101,114,116,104,\r
-101,32,98,101,103,105,110,110,105,110,103,32,111,102,32,116,104,101,32,60,47,100\r
-,105,118,62,10,60,47,100,105,118,62,10,60,47,100,105,118,62,10,101,115,116,97,98\r
-,108,105,115,104,109,101,110,116,32,111,102,32,116,104,101,32,60,47,100,105,118,\r
-62,60,47,100,105,118,62,60,47,100,105,118,62,60,47,100,35,118,105,101,119,112,\r
-111,114,116,123,109,105,110,45,104,101,105,103,104,116,58,10,60,115,99,114,105,\r
-112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,111,112,116,105,111,110,62,\r
-60,111,112,116,105,111,110,32,118,97,108,117,101,61,111,102,116,101,110,32,114,\r
-101,102,101,114,114,101,100,32,116,111,32,97,115,32,47,111,112,116,105,111,110,\r
-62,10,60,111,112,116,105,111,110,32,118,97,108,117,60,33,68,79,67,84,89,80,69,32\r
-,104,116,109,108,62,10,60,33,45,45,91,73,110,116,101,114,110,97,116,105,111,110,\r
-97,108,32,65,105,114,112,111,114,116,62,10,60,97,32,104,114,101,102,61,34,104,\r
-116,116,112,58,47,47,119,119,119,60,47,97,62,60,97,32,104,114,101,102,61,34,104,\r
-116,116,112,58,47,47,119,224,184,160,224,184,178,224,184,169,224,184,178,224,185\r
-,132,224,184,151,224,184,162,225,131,165,225,131,144,225,131,160,225,131,151,225\r
-,131,163,225,131,154,225,131,152,230,173,163,233,171,148,228,184,173,230,150,135\r
-,32,40,231,185,129,233,171,148,41,224,164,168,224,164,191,224,164,176,224,165,\r
-141,224,164,166,224,165,135,224,164,182,224,164,161,224,164,190,224,164,137,224,\r
-164,168,224,164,178,224,165,139,224,164,161,224,164,149,224,165,141,224,164,183,\r
-224,165,135,224,164,164,224,165,141,224,164,176,224,164,156,224,164,190,224,164,\r
-168,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184,224,164,130,224,\r
-164,172,224,164,130,224,164,167,224,164,191,224,164,164,224,164,184,224,165,141,\r
-224,164,165,224,164,190,224,164,170,224,164,168,224,164,190,224,164,184,224,165,\r
-141,224,164,181,224,165,128,224,164,149,224,164,190,224,164,176,224,164,184,224,\r
-164,130,224,164,184,224,165,141,224,164,149,224,164,176,224,164,163,224,164,184,\r
-224,164,190,224,164,174,224,164,151,224,165,141,224,164,176,224,165,128,224,164,\r
-154,224,164,191,224,164,159,224,165,141,224,164,160,224,165,139,224,164,130,224,\r
-164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164,168,\r
-224,164,133,224,164,174,224,165,135,224,164,176,224,164,191,224,164,149,224,164,\r
-190,224,164,181,224,164,191,224,164,173,224,164,191,224,164,168,224,165,141,224,\r
-164,168,224,164,151,224,164,190,224,164,161,224,164,191,224,164,175,224,164,190,\r
-224,164,129,224,164,149,224,165,141,224,164,175,224,165,139,224,164,130,224,164,\r
-149,224,164,191,224,164,184,224,165,129,224,164,176,224,164,149,224,165,141,224,\r
-164,183,224,164,190,224,164,170,224,164,185,224,165,129,224,164,129,224,164,154,\r
-224,164,164,224,165,128,224,164,170,224,165,141,224,164,176,224,164,172,224,164,\r
-130,224,164,167,224,164,168,224,164,159,224,164,191,224,164,170,224,165,141,224,\r
-164,170,224,164,163,224,165,128,224,164,149,224,165,141,224,164,176,224,164,191,\r
-224,164,149,224,165,135,224,164,159,224,164,170,224,165,141,224,164,176,224,164,\r
-190,224,164,176,224,164,130,224,164,173,224,164,170,224,165,141,224,164,176,224,\r
-164,190,224,164,170,224,165,141,224,164,164,224,164,174,224,164,190,224,164,178,\r
-224,164,191,224,164,149,224,165,139,224,164,130,224,164,176,224,164,171,224,164,\r
-188,224,165,141,224,164,164,224,164,190,224,164,176,224,164,168,224,164,191,224,\r
-164,176,224,165,141,224,164,174,224,164,190,224,164,163,224,164,178,224,164,191,\r
-224,164,174,224,164,191,224,164,159,224,165,135,224,164,161,100,101,115,99,114,\r
-105,112,116,105,111,110,34,32,99,111,110,116,101,110,116,61,34,100,111,99,117,\r
-109,101,110,116,46,108,111,99,97,116,105,111,110,46,112,114,111,116,46,103,101,\r
-116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,60,33,68,79\r
-,67,84,89,80,69,32,104,116,109,108,62,10,60,104,116,109,108,32,60,109,101,116,97\r
-,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,58,117,114,108,34,32\r
-,99,111,110,116,101,110,116,61,34,104,116,116,112,58,47,47,46,99,115,115,34,32,\r
-114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,115,116,121,108,101\r
-,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,62,116,121,112,101,61\r
-,34,116,101,120,116,47,99,115,115,34,32,104,114,101,102,61,34,119,51,46,111,114,\r
-103,47,49,57,57,57,47,120,104,116,109,108,34,32,120,109,108,116,121,112,101,61,\r
-34,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,34,32,109,101,116,104\r
-,111,100,61,34,103,101,116,34,32,97,99,116,105,111,110,61,34,108,105,110,107,32,\r
-114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,32,61,32,100,111\r
-,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,116,121,112,\r
-101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,34,32,47,62,99,101,108,108\r
-,112,97,100,100,105,110,103,61,34,48,34,32,99,101,108,108,115,112,46,99,115,115,\r
-34,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,60,47,97,62,60,\r
-47,108,105,62,60,108,105,62,60,97,32,104,114,101,102,61,34,34,32,119,105,100,116\r
-,104,61,34,49,34,32,104,101,105,103,104,116,61,34,49,34,34,62,60,97,32,104,114,\r
-101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,115,116,121,108,101,61,34,\r
-100,105,115,112,108,97,121,58,110,111,110,101,59,34,62,97,108,116,101,114,110,97\r
-,116,101,34,32,116,121,112,101,61,34,97,112,112,108,105,45,47,47,87,51,67,47,47,\r
-68,84,68,32,88,72,84,77,76,32,49,46,48,32,101,108,108,115,112,97,99,105,110,103,\r
-61,34,48,34,32,99,101,108,108,112,97,100,32,116,121,112,101,61,34,104,105,100,\r
-100,101,110,34,32,118,97,108,117,101,61,34,47,97,62,38,110,98,115,112,59,60,115,\r
-112,97,110,32,114,111,108,101,61,34,115,10,60,105,110,112,117,116,32,116,121,112\r
-,101,61,34,104,105,100,100,101,110,34,32,108,97,110,103,117,97,103,101,61,34,74,\r
-97,118,97,83,99,114,105,112,116,34,32,32,100,111,99,117,109,101,110,116,46,103,\r
-101,116,69,108,101,109,101,110,116,115,66,103,61,34,48,34,32,99,101,108,108,115,\r
-112,97,99,105,110,103,61,34,48,34,32,121,112,101,61,34,116,101,120,116,47,99,115\r
-,115,34,32,109,101,100,105,97,61,34,116,121,112,101,61,39,116,101,120,116,47,106\r
-,97,118,97,115,99,114,105,112,116,39,119,105,116,104,32,116,104,101,32,101,120,\r
-99,101,112,116,105,111,110,32,111,102,32,121,112,101,61,34,116,101,120,116,47,99\r
-,115,115,34,32,114,101,108,61,34,115,116,32,104,101,105,103,104,116,61,34,49,34,\r
-32,119,105,100,116,104,61,34,49,34,32,61,39,43,101,110,99,111,100,101,85,82,73,\r
-67,111,109,112,111,110,101,110,116,40,60,108,105,110,107,32,114,101,108,61,34,97\r
-,108,116,101,114,110,97,116,101,34,32,10,98,111,100,121,44,32,116,114,44,32,105,\r
-110,112,117,116,44,32,116,101,120,116,109,101,116,97,32,110,97,109,101,61,34,114\r
-,111,98,111,116,115,34,32,99,111,110,109,101,116,104,111,100,61,34,112,111,115,\r
-116,34,32,97,99,116,105,111,110,61,34,62,10,60,97,32,104,114,101,102,61,34,104,\r
-116,116,112,58,47,47,119,119,119,46,99,115,115,34,32,114,101,108,61,34,115,116,\r
-121,108,101,115,104,101,101,116,34,32,60,47,100,105,118,62,60,47,100,105,118,62,\r
-60,100,105,118,32,99,108,97,115,115,108,97,110,103,117,97,103,101,61,34,106,97,\r
-118,97,115,99,114,105,112,116,34,62,97,114,105,97,45,104,105,100,100,101,110,61,\r
-34,116,114,117,101,34,62,194,183,60,114,105,112,116,34,32,116,121,112,101,61,34,\r
-116,101,120,116,47,106,97,118,97,115,108,61,48,59,125,41,40,41,59,10,40,102,117,\r
-110,99,116,105,111,110,40,41,123,98,97,99,107,103,114,111,117,110,100,45,105,109\r
-,97,103,101,58,32,117,114,108,40,47,97,62,60,47,108,105,62,60,108,105,62,60,97,\r
-32,104,114,101,102,61,34,104,9,9,60,108,105,62,60,97,32,104,114,101,102,61,34,\r
-104,116,116,112,58,47,47,97,116,111,114,34,32,97,114,105,97,45,104,105,100,100,\r
-101,110,61,34,116,114,117,62,32,60,97,32,104,114,101,102,61,34,104,116,116,112,\r
-58,47,47,119,119,119,46,108,97,110,103,117,97,103,101,61,34,106,97,118,97,115,99\r
-,114,105,112,116,34,32,47,111,112,116,105,111,110,62,10,60,111,112,116,105,111,\r
-110,32,118,97,108,117,101,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118,\r
-32,99,108,97,115,115,61,114,97,116,111,114,34,32,97,114,105,97,45,104,105,100,\r
-100,101,110,61,34,116,114,101,61,40,110,101,119,32,68,97,116,101,41,46,103,101,\r
-116,84,105,109,101,40,41,112,111,114,116,117,103,117,195,170,115,32,40,100,111,\r
-32,66,114,97,115,105,108,41,208,190,209,128,208,179,208,176,208,189,208,184,208,\r
-183,208,176,209,134,208,184,208,184,208,178,208,190,208,183,208,188,208,190,208,\r
-182,208,189,208,190,209,129,209,130,209,140,208,190,208,177,209,128,208,176,208,\r
-183,208,190,208,178,208,176,208,189,208,184,209,143,209,128,208,181,208,179,208,\r
-184,209,129,209,130,209,128,208,176,209,134,208,184,208,184,208,178,208,190,208,\r
-183,208,188,208,190,208,182,208,189,208,190,209,129,209,130,208,184,208,190,208,\r
-177,209,143,208,183,208,176,209,130,208,181,208,187,209,140,208,189,208,176,60,\r
-33,68,79,67,84,89,80,69,32,104,116,109,108,32,80,85,66,76,73,67,32,34,110,116,45\r
-,84,121,112,101,34,32,99,111,110,116,101,110,116,61,34,116,101,120,116,47,60,109\r
-,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,116,101,\r
-114,97,110,115,105,116,105,111,110,97,108,47,47,69,78,34,32,34,104,116,116,112,\r
-58,60,104,116,109,108,32,120,109,108,110,115,61,34,104,116,116,112,58,47,47,119,\r
-119,119,45,47,47,87,51,67,47,47,68,84,68,32,88,72,84,77,76,32,49,46,48,32,84,68,\r
-84,68,47,120,104,116,109,108,49,45,116,114,97,110,115,105,116,105,111,110,97,108\r
-,47,47,119,119,119,46,119,51,46,111,114,103,47,84,82,47,120,104,116,109,108,49,\r
-47,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,\r
-39,59,60,109,101,116,97,32,110,97,109,101,61,34,100,101,115,99,114,105,112,116,\r
-105,111,110,112,97,114,101,110,116,78,111,100,101,46,105,110,115,101,114,116,66,\r
-101,102,111,114,101,60,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,\r
-100,101,110,34,32,110,97,106,115,34,32,116,121,112,101,61,34,116,101,120,116,47,\r
-106,97,118,97,115,99,114,105,40,100,111,99,117,109,101,110,116,41,46,114,101,97,\r
-100,121,40,102,117,110,99,116,105,115,99,114,105,112,116,32,116,121,112,101,61,\r
-34,116,101,120,116,47,106,97,118,97,115,105,109,97,103,101,34,32,99,111,110,116,\r
-101,110,116,61,34,104,116,116,112,58,47,47,85,65,45,67,111,109,112,97,116,105,98\r
-,108,101,34,32,99,111,110,116,101,110,116,61,116,109,108,59,32,99,104,97,114,115\r
-,101,116,61,117,116,102,45,56,34,32,47,62,10,108,105,110,107,32,114,101,108,61,\r
-34,115,104,111,114,116,99,117,116,32,105,99,111,110,60,108,105,110,107,32,114,\r
-101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,60,47,115,99,114,105\r
-,112,116,62,10,60,115,99,114,105,112,116,32,116,121,112,101,61,61,32,100,111,99,\r
-117,109,101,110,116,46,99,114,101,97,116,101,69,108,101,109,101,110,60,97,32,116\r
-,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,104,114,101,102,61,32,100,\r
-111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,115,66,105,\r
-110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61\r
-,97,46,116,121,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,\r
-105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110,\r
-97,109,101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56,\r
-34,32,47,62,100,116,100,34,62,10,60,104,116,109,108,32,120,109,108,110,115,61,34\r
-,104,116,116,112,45,47,47,87,51,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49,\r
-32,84,101,110,116,115,66,121,84,97,103,78,97,109,101,40,39,115,99,114,105,112,\r
-116,39,41,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110,\r
-34,32,110,97,109,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,101,120,\r
-116,47,106,97,118,97,115,34,32,115,116,121,108,101,61,34,100,105,115,112,108,97,\r
-121,58,110,111,110,101,59,34,62,100,111,99,117,109,101,110,116,46,103,101,116,69\r
-,108,101,109,101,110,116,66,121,73,100,40,61,100,111,99,117,109,101,110,116,46,\r
-99,114,101,97,116,101,69,108,101,109,101,110,116,40,39,32,116,121,112,101,61,39,\r
-116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,105,110,112,117,116,\r
-32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61,34,100,46,103,\r
-101,116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,115,110\r
-,105,99,97,108,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,\r
-46,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49,32,84,114,97,110,115,105,116,\r
-60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34\r
-,62,10,10,60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,\r
-115,115,34,62,105,111,110,97,108,46,100,116,100,34,62,10,60,104,116,109,108,32,\r
-120,109,108,110,115,61,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,\r
-116,101,110,116,45,84,121,112,101,100,105,110,103,61,34,48,34,32,99,101,108,108,\r
-115,112,97,99,105,110,103,61,34,48,34,104,116,109,108,59,32,99,104,97,114,115,\r
-101,116,61,117,116,102,45,56,34,32,47,62,10,32,115,116,121,108,101,61,34,100,105\r
-,115,112,108,97,121,58,110,111,110,101,59,34,62,60,60,108,105,62,60,97,32,104,\r
-114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,32,116,121,112,101,61,\r
-39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,62,208,180,208,181\r
-,209,143,209,130,208,181,208,187,209,140,208,189,208,190,209,129,209,130,208,184\r
-,209,129,208,190,208,190,209,130,208,178,208,181,209,130,209,129,209,130,208,178\r
-,208,184,208,184,208,191,209,128,208,190,208,184,208,183,208,178,208,190,208,180\r
-,209,129,209,130,208,178,208,176,208,177,208,181,208,183,208,190,208,191,208,176\r
-,209,129,208,189,208,190,209,129,209,130,208,184,224,164,170,224,165,129,224,164\r
-,184,224,165,141,224,164,164,224,164,191,224,164,149,224,164,190,224,164,149,224\r
-,164,190,224,164,130,224,164,151,224,165,141,224,164,176,224,165,135,224,164,184\r
-,224,164,137,224,164,168,224,165,141,224,164,185,224,165,139,224,164,130,224,164\r
-,168,224,165,135,224,164,181,224,164,191,224,164,167,224,164,190,224,164,168,224\r
-,164,184,224,164,173,224,164,190,224,164,171,224,164,191,224,164,149,224,165,141\r
-,224,164,184,224,164,191,224,164,130,224,164,151,224,164,184,224,165,129,224,164\r
-,176,224,164,149,224,165,141,224,164,183,224,164,191,224,164,164,224,164,149,224\r
-,165,137,224,164,170,224,165,128,224,164,176,224,164,190,224,164,135,224,164,159\r
-,224,164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164\r
-,170,224,164,168,224,164,149,224,164,190,224,164,176,224,165,141,224,164,176,224\r
-,164,181,224,164,190,224,164,136,224,164,184,224,164,149,224,165,141,224,164,176\r
-,224,164,191,224,164,175,224,164,164,224,164,190\r
-}\r
-;\r
-#endif  /* !BROTLI_EXTERNAL_DICTIONARY_DATA */\r
-\r
-static BrotliDictionary kBrotliDictionary = {\r
-  /* size_bits_by_length */\r
-  {\r
-    0, 0, 0, 0, 10, 10, 11, 11,\r
-    10, 10, 10, 10, 10, 9, 9, 8,\r
-    7, 7, 8, 7, 7, 6, 6, 5,\r
-    5, 0, 0, 0, 0, 0, 0, 0\r
-  },\r
-\r
-  /* offsets_by_length */\r
-  {\r
-    0, 0, 0, 0, 0, 4096, 9216, 21504,\r
-    35840, 44032, 53248, 63488, 74752, 87040, 93696, 100864,\r
-    104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280,\r
-    122016, 122784, 122784, 122784, 122784, 122784, 122784, 122784\r
-  },\r
-\r
-  /* data_size ==  sizeof(kBrotliDictionaryData) */\r
-  122784,\r
-\r
-  /* data */\r
-#if defined(BROTLI_EXTERNAL_DICTIONARY_DATA)\r
-  NULL\r
-#else\r
-  kBrotliDictionaryData\r
-#endif\r
-};\r
-\r
-const BrotliDictionary* BrotliGetDictionary() {\r
-  return &kBrotliDictionary;\r
-}\r
-\r
-void BrotliSetDictionaryData(const uint8_t* data) {\r
-  if (!!data && !kBrotliDictionary.data) {\r
-    kBrotliDictionary.data = data;\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/common/dictionary.h b/BaseTools/Source/C/BrotliCompress/common/dictionary.h
deleted file mode 100644 (file)
index a68a1c5..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Collection of static dictionary words. */\r
-\r
-#ifndef BROTLI_COMMON_DICTIONARY_H_\r
-#define BROTLI_COMMON_DICTIONARY_H_\r
-\r
-#include <brotli/port.h>\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-typedef struct BrotliDictionary {\r
-  /**\r
-   * Number of bits to encode index of dictionary word in a bucket.\r
-   *\r
-   * Specification: Appendix A. Static Dictionary Data\r
-   *\r
-   * Words in a dictionary are bucketed by length.\r
-   * @c 0 means that there are no words of a given length.\r
-   * Dictionary consists of words with length of [4..24] bytes.\r
-   * Values at [0..3] and [25..31] indices should not be addressed.\r
-   */\r
-  uint8_t size_bits_by_length[32];\r
-\r
-  /* assert(offset[i + 1] == offset[i] + (bits[i] ? (i << bits[i]) : 0)) */\r
-  uint32_t offsets_by_length[32];\r
-\r
-  /* assert(data_size == offsets_by_length[31]) */\r
-  size_t data_size;\r
-\r
-  /* Data array is not bound, and should obey to size_bits_by_length values.\r
-     Specified size matches default (RFC 7932) dictionary. Its size is\r
-     defined by data_size */\r
-  const uint8_t* data;\r
-} BrotliDictionary;\r
-\r
-BROTLI_COMMON_API const BrotliDictionary* BrotliGetDictionary(void);\r
-\r
-/**\r
- * Sets dictionary data.\r
- *\r
- * When dictionary data is already set / present, this method is no-op.\r
- *\r
- * Dictionary data MUST be provided before BrotliGetDictionary is invoked.\r
- * This method is used ONLY in multi-client environment (e.g. C + Java),\r
- * to reduce storage by sharing single dictionary between implementations.\r
- */\r
-BROTLI_COMMON_API void BrotliSetDictionaryData(const uint8_t* data);\r
-\r
-#define BROTLI_MIN_DICTIONARY_WORD_LENGTH 4\r
-#define BROTLI_MAX_DICTIONARY_WORD_LENGTH 24\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_COMMON_DICTIONARY_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/common/platform.h b/BaseTools/Source/C/BrotliCompress/common/platform.h
deleted file mode 100644 (file)
index b83ed6c..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Macros for compiler / platform specific features and build options.\r
-\r
-   Build options are:\r
-    * BROTLI_BUILD_32_BIT disables 64-bit optimizations\r
-    * BROTLI_BUILD_64_BIT forces to use 64-bit optimizations\r
-    * BROTLI_BUILD_BIG_ENDIAN forces to use big-endian optimizations\r
-    * BROTLI_BUILD_ENDIAN_NEUTRAL disables endian-aware optimizations\r
-    * BROTLI_BUILD_LITTLE_ENDIAN forces to use little-endian optimizations\r
-    * BROTLI_BUILD_PORTABLE disables dangerous optimizations, like unaligned\r
-      read and overlapping memcpy; this reduces decompression speed by 5%\r
-    * BROTLI_BUILD_NO_RBIT disables "rbit" optimization for ARM CPUs\r
-    * BROTLI_DEBUG dumps file name and line number when decoder detects stream\r
-      or memory error\r
-    * BROTLI_ENABLE_LOG enables asserts and dumps various state information\r
-*/\r
-\r
-#ifndef BROTLI_COMMON_PLATFORM_H_\r
-#define BROTLI_COMMON_PLATFORM_H_\r
-\r
-#include <string.h>  /* memcpy */\r
-#include <stdlib.h>  /* malloc, free */\r
-\r
-#include <brotli/port.h>\r
-#include <brotli/types.h>\r
-\r
-#if defined(OS_LINUX) || defined(OS_CYGWIN)\r
-#include <endian.h>\r
-#elif defined(OS_FREEBSD)\r
-#include <machine/endian.h>\r
-#elif defined(OS_MACOSX)\r
-#include <machine/endian.h>\r
-/* Let's try and follow the Linux convention */\r
-#define BROTLI_X_BYTE_ORDER BYTE_ORDER\r
-#define BROTLI_X_LITTLE_ENDIAN LITTLE_ENDIAN\r
-#define BROTLI_X_BIG_ENDIAN BIG_ENDIAN\r
-#endif\r
-\r
-#if defined(BROTLI_ENABLE_LOG) || defined(BROTLI_DEBUG)\r
-#include <assert.h>\r
-#include <stdio.h>\r
-#endif\r
-\r
-/* The following macros were borrowed from https://github.com/nemequ/hedley\r
- * with permission of original author - Evan Nemerson <evan@nemerson.com> */\r
-\r
-/* >>> >>> >>> hedley macros */\r
-\r
-/* Define "BROTLI_PREDICT_TRUE" and "BROTLI_PREDICT_FALSE" macros for capable\r
-   compilers.\r
-\r
-To apply compiler hint, enclose the branching condition into macros, like this:\r
-\r
-  if (BROTLI_PREDICT_TRUE(zero == 0)) {\r
-    // main execution path\r
-  } else {\r
-    // compiler should place this code outside of main execution path\r
-  }\r
-\r
-OR:\r
-\r
-  if (BROTLI_PREDICT_FALSE(something_rare_or_unexpected_happens)) {\r
-    // compiler should place this code outside of main execution path\r
-  }\r
-\r
-*/\r
-#if BROTLI_GNUC_HAS_BUILTIN(__builtin_expect, 3, 0, 0) || \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0) ||               \\r
-    BROTLI_SUNPRO_VERSION_CHECK(5, 12, 0) ||              \\r
-    BROTLI_ARM_VERSION_CHECK(4, 1, 0) ||                  \\r
-    BROTLI_IBM_VERSION_CHECK(10, 1, 0) ||                 \\r
-    BROTLI_TI_VERSION_CHECK(7, 3, 0) ||                   \\r
-    BROTLI_TINYC_VERSION_CHECK(0, 9, 27)\r
-#define BROTLI_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))\r
-#define BROTLI_PREDICT_FALSE(x) (__builtin_expect(x, 0))\r
-#else\r
-#define BROTLI_PREDICT_FALSE(x) (x)\r
-#define BROTLI_PREDICT_TRUE(x) (x)\r
-#endif\r
-\r
-#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \\r
-    !defined(__cplusplus)\r
-#define BROTLI_RESTRICT restrict\r
-#elif BROTLI_GNUC_VERSION_CHECK(3, 1, 0) ||                         \\r
-    BROTLI_MSVC_VERSION_CHECK(14, 0, 0) ||                          \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0) ||                         \\r
-    BROTLI_ARM_VERSION_CHECK(4, 1, 0) ||                            \\r
-    BROTLI_IBM_VERSION_CHECK(10, 1, 0) ||                           \\r
-    BROTLI_PGI_VERSION_CHECK(17, 10, 0) ||                          \\r
-    BROTLI_TI_VERSION_CHECK(8, 0, 0) ||                             \\r
-    BROTLI_IAR_VERSION_CHECK(8, 0, 0) ||                            \\r
-    (BROTLI_SUNPRO_VERSION_CHECK(5, 14, 0) && defined(__cplusplus))\r
-#define BROTLI_RESTRICT __restrict\r
-#elif BROTLI_SUNPRO_VERSION_CHECK(5, 3, 0) && !defined(__cplusplus)\r
-#define BROTLI_RESTRICT _Restrict\r
-#else\r
-#define BROTLI_RESTRICT\r
-#endif\r
-\r
-#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \\r
-    (defined(__cplusplus) && (__cplusplus >= 199711L))\r
-#define BROTLI_MAYBE_INLINE inline\r
-#elif defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__) || \\r
-    BROTLI_ARM_VERSION_CHECK(6, 2, 0)\r
-#define BROTLI_MAYBE_INLINE __inline__\r
-#elif BROTLI_MSVC_VERSION_CHECK(12, 0, 0) || \\r
-    BROTLI_ARM_VERSION_CHECK(4, 1, 0) || BROTLI_TI_VERSION_CHECK(8, 0, 0)\r
-#define BROTLI_MAYBE_INLINE __inline\r
-#else\r
-#define BROTLI_MAYBE_INLINE\r
-#endif\r
-\r
-#if BROTLI_GNUC_HAS_ATTRIBUTE(always_inline, 4, 0, 0) ||                       \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0) ||                                    \\r
-    BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) ||                                   \\r
-    BROTLI_ARM_VERSION_CHECK(4, 1, 0) ||                                       \\r
-    BROTLI_IBM_VERSION_CHECK(10, 1, 0) ||                                      \\r
-    BROTLI_TI_VERSION_CHECK(8, 0, 0) ||                                        \\r
-    (BROTLI_TI_VERSION_CHECK(7, 3, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))\r
-#define BROTLI_INLINE BROTLI_MAYBE_INLINE __attribute__((__always_inline__))\r
-#elif BROTLI_MSVC_VERSION_CHECK(12, 0, 0)\r
-#define BROTLI_INLINE BROTLI_MAYBE_INLINE __forceinline\r
-#elif BROTLI_TI_VERSION_CHECK(7, 0, 0) && defined(__cplusplus)\r
-#define BROTLI_INLINE BROTLI_MAYBE_INLINE _Pragma("FUNC_ALWAYS_INLINE;")\r
-#elif BROTLI_IAR_VERSION_CHECK(8, 0, 0)\r
-#define BROTLI_INLINE BROTLI_MAYBE_INLINE _Pragma("inline=forced")\r
-#else\r
-#define BROTLI_INLINE BROTLI_MAYBE_INLINE\r
-#endif\r
-\r
-#if BROTLI_GNUC_HAS_ATTRIBUTE(noinline, 4, 0, 0) ||                            \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0) ||                                    \\r
-    BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) ||                                   \\r
-    BROTLI_ARM_VERSION_CHECK(4, 1, 0) ||                                       \\r
-    BROTLI_IBM_VERSION_CHECK(10, 1, 0) ||                                      \\r
-    BROTLI_TI_VERSION_CHECK(8, 0, 0) ||                                        \\r
-    (BROTLI_TI_VERSION_CHECK(7, 3, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))\r
-#define BROTLI_NOINLINE __attribute__((__noinline__))\r
-#elif BROTLI_MSVC_VERSION_CHECK(13, 10, 0)\r
-#define BROTLI_NOINLINE __declspec(noinline)\r
-#elif BROTLI_PGI_VERSION_CHECK(10, 2, 0)\r
-#define BROTLI_NOINLINE _Pragma("noinline")\r
-#elif BROTLI_TI_VERSION_CHECK(6, 0, 0) && defined(__cplusplus)\r
-#define BROTLI_NOINLINE _Pragma("FUNC_CANNOT_INLINE;")\r
-#elif BROTLI_IAR_VERSION_CHECK(8, 0, 0)\r
-#define BROTLI_NOINLINE _Pragma("inline=never")\r
-#else\r
-#define BROTLI_NOINLINE\r
-#endif\r
-\r
-/* BROTLI_INTERNAL could be defined to override visibility, e.g. for tests. */\r
-#if !defined(BROTLI_INTERNAL)\r
-#if defined(_WIN32) || defined(__CYGWIN__)\r
-#define BROTLI_INTERNAL\r
-#elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) ||                         \\r
-    BROTLI_TI_VERSION_CHECK(8, 0, 0) ||                             \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0) ||                         \\r
-    BROTLI_ARM_VERSION_CHECK(4, 1, 0) ||                            \\r
-    BROTLI_IBM_VERSION_CHECK(13, 1, 0) ||                           \\r
-    BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) ||                        \\r
-    (BROTLI_TI_VERSION_CHECK(7, 3, 0) &&                            \\r
-     defined(__TI_GNU_ATTRIBUTE_SUPPORT__) && defined(__TI_EABI__))\r
-#define BROTLI_INTERNAL __attribute__ ((visibility ("hidden")))\r
-#else\r
-#define BROTLI_INTERNAL\r
-#endif\r
-#endif\r
-\r
-/* <<< <<< <<< end of hedley macros. */\r
-\r
-#if BROTLI_GNUC_HAS_ATTRIBUTE(unused, 2, 7, 0) || \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0)\r
-#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE __attribute__ ((unused))\r
-#else\r
-#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE\r
-#endif\r
-\r
-#if (defined(__ARM_ARCH) && (__ARM_ARCH == 7)) || \\r
-    (defined(M_ARM) && (M_ARM == 7))\r
-#define BROTLI_TARGET_ARMV7\r
-#endif  /* ARMv7 */\r
-\r
-#if (defined(__ARM_ARCH) && (__ARM_ARCH == 8)) || \\r
-    defined(__aarch64__) || defined(__ARM64_ARCH_8__)\r
-#define BROTLI_TARGET_ARMV8_ANY\r
-\r
-#if defined(__ARM_32BIT_STATE)\r
-#define BROTLI_TARGET_ARMV8_32\r
-#elif defined(__ARM_64BIT_STATE)\r
-#define BROTLI_TARGET_ARMV8_64\r
-#endif\r
-\r
-#endif  /* ARMv8 */\r
-\r
-#if defined(__i386) || defined(_M_IX86)\r
-#define BROTLI_TARGET_X86\r
-#endif\r
-\r
-#if defined(__x86_64__) || defined(_M_X64)\r
-#define BROTLI_TARGET_X64\r
-#endif\r
-\r
-#if defined(__PPC64__)\r
-#define BROTLI_TARGET_POWERPC64\r
-#endif\r
-\r
-#if defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64\r
-#define BROTLI_TARGET_RISCV64\r
-#endif\r
-\r
-#if defined(BROTLI_BUILD_64_BIT)\r
-#define BROTLI_64_BITS 1\r
-#elif defined(BROTLI_BUILD_32_BIT)\r
-#define BROTLI_64_BITS 0\r
-#elif defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8_64) || \\r
-    defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64)\r
-#define BROTLI_64_BITS 1\r
-#else\r
-#define BROTLI_64_BITS 0\r
-#endif\r
-\r
-#if (BROTLI_64_BITS)\r
-#define brotli_reg_t uint64_t\r
-#else\r
-#define brotli_reg_t uint32_t\r
-#endif\r
-\r
-#if defined(BROTLI_BUILD_BIG_ENDIAN)\r
-#define BROTLI_BIG_ENDIAN 1\r
-#elif defined(BROTLI_BUILD_LITTLE_ENDIAN)\r
-#define BROTLI_LITTLE_ENDIAN 1\r
-#elif defined(BROTLI_BUILD_ENDIAN_NEUTRAL)\r
-/* Just break elif chain. */\r
-#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)\r
-#define BROTLI_LITTLE_ENDIAN 1\r
-#elif defined(_WIN32) || defined(BROTLI_TARGET_X64)\r
-/* Win32 & x64 can currently always be assumed to be little endian */\r
-#define BROTLI_LITTLE_ENDIAN 1\r
-#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)\r
-#define BROTLI_BIG_ENDIAN 1\r
-#elif defined(BROTLI_X_BYTE_ORDER)\r
-#if BROTLI_X_BYTE_ORDER == BROTLI_X_LITTLE_ENDIAN\r
-#define BROTLI_LITTLE_ENDIAN 1\r
-#elif BROTLI_X_BYTE_ORDER == BROTLI_X_BIG_ENDIAN\r
-#define BROTLI_BIG_ENDIAN 1\r
-#endif\r
-#endif  /* BROTLI_X_BYTE_ORDER */\r
-\r
-#if !defined(BROTLI_LITTLE_ENDIAN)\r
-#define BROTLI_LITTLE_ENDIAN 0\r
-#endif\r
-\r
-#if !defined(BROTLI_BIG_ENDIAN)\r
-#define BROTLI_BIG_ENDIAN 0\r
-#endif\r
-\r
-#if defined(BROTLI_X_BYTE_ORDER)\r
-#undef BROTLI_X_BYTE_ORDER\r
-#undef BROTLI_X_LITTLE_ENDIAN\r
-#undef BROTLI_X_BIG_ENDIAN\r
-#endif\r
-\r
-#if defined(BROTLI_BUILD_PORTABLE)\r
-#define BROTLI_ALIGNED_READ (!!1)\r
-#elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \\r
-    defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_ANY) || \\r
-    defined(BROTLI_TARGET_RISCV64)\r
-/* Allow unaligned read only for white-listed CPUs. */\r
-#define BROTLI_ALIGNED_READ (!!0)\r
-#else\r
-#define BROTLI_ALIGNED_READ (!!1)\r
-#endif\r
-\r
-#if BROTLI_ALIGNED_READ\r
-/* Portable unaligned memory access: read / write values via memcpy. */\r
-static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {\r
-  uint16_t t;\r
-  memcpy(&t, p, sizeof t);\r
-  return t;\r
-}\r
-static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {\r
-  uint32_t t;\r
-  memcpy(&t, p, sizeof t);\r
-  return t;\r
-}\r
-static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {\r
-  uint64_t t;\r
-  memcpy(&t, p, sizeof t);\r
-  return t;\r
-}\r
-static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {\r
-  memcpy(p, &v, sizeof v);\r
-}\r
-#else  /* BROTLI_ALIGNED_READ */\r
-/* Unaligned memory access is allowed: just cast pointer to requested type. */\r
-#if defined(ADDRESS_SANITIZER) || defined(THREAD_SANITIZER) || \\r
-    defined(MEMORY_SANITIZER)\r
-/* Consider we have an unaligned load/store of 4 bytes from address 0x...05.\r
-   AddressSanitizer will treat it as a 3-byte access to the range 05:07 and\r
-   will miss a bug if 08 is the first unaddressable byte.\r
-   ThreadSanitizer will also treat this as a 3-byte access to 05:07 and will\r
-   miss a race between this access and some other accesses to 08.\r
-   MemorySanitizer will correctly propagate the shadow on unaligned stores\r
-   and correctly report bugs on unaligned loads, but it may not properly\r
-   update and report the origin of the uninitialized memory.\r
-   For all three tools, replacing an unaligned access with a tool-specific\r
-   callback solves the problem. */\r
-#if defined(__cplusplus)\r
-extern "C" {\r
-#endif  /* __cplusplus */\r
-  uint16_t __sanitizer_unaligned_load16(const void* p);\r
-  uint32_t __sanitizer_unaligned_load32(const void* p);\r
-  uint64_t __sanitizer_unaligned_load64(const void* p);\r
-  void __sanitizer_unaligned_store64(void* p, uint64_t v);\r
-#if defined(__cplusplus)\r
-}  /* extern "C" */\r
-#endif  /* __cplusplus */\r
-#define BrotliUnalignedRead16 __sanitizer_unaligned_load16\r
-#define BrotliUnalignedRead32 __sanitizer_unaligned_load32\r
-#define BrotliUnalignedRead64 __sanitizer_unaligned_load64\r
-#define BrotliUnalignedWrite64 __sanitizer_unaligned_store64\r
-#else\r
-static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {\r
-  return *(const uint16_t*)p;\r
-}\r
-static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {\r
-  return *(const uint32_t*)p;\r
-}\r
-#if (BROTLI_64_BITS)\r
-static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {\r
-  return *(const uint64_t*)p;\r
-}\r
-static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {\r
-  *(uint64_t*)p = v;\r
-}\r
-#else  /* BROTLI_64_BITS */\r
-/* Avoid emitting LDRD / STRD, which require properly aligned address. */\r
-/* If __attribute__(aligned) is available, use that. Otherwise, memcpy. */\r
-\r
-#if BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0)\r
-typedef  __attribute__((aligned(1))) uint64_t brotli_unaligned_uint64_t;\r
-\r
-static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {\r
-  return (uint64_t) ((brotli_unaligned_uint64_t*) p)[0];\r
-}\r
-static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {\r
-  brotli_unaligned_uint64_t* dwords = (brotli_unaligned_uint64_t*) p;\r
-  dwords[0] = (brotli_unaligned_uint64_t) v;\r
-}\r
-#else /* BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0) */\r
-static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {\r
-  uint64_t v;\r
-  memcpy(&v, p, sizeof(uint64_t));\r
-  return v;\r
-}\r
-\r
-static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {\r
-  memcpy(p, &v, sizeof(uint64_t));\r
-}\r
-#endif  /* BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0) */\r
-#endif  /* BROTLI_64_BITS */\r
-#endif  /* ASAN / TSAN / MSAN */\r
-#endif  /* BROTLI_ALIGNED_READ */\r
-\r
-#if BROTLI_LITTLE_ENDIAN\r
-/* Straight endianness. Just read / write values. */\r
-#define BROTLI_UNALIGNED_LOAD16LE BrotliUnalignedRead16\r
-#define BROTLI_UNALIGNED_LOAD32LE BrotliUnalignedRead32\r
-#define BROTLI_UNALIGNED_LOAD64LE BrotliUnalignedRead64\r
-#define BROTLI_UNALIGNED_STORE64LE BrotliUnalignedWrite64\r
-#elif BROTLI_BIG_ENDIAN  /* BROTLI_LITTLE_ENDIAN */\r
-/* Explain compiler to byte-swap values. */\r
-#define BROTLI_BSWAP16_(V) ((uint16_t)( \\r
-  (((V) & 0xFFU) << 8) | \\r
-  (((V) >> 8) & 0xFFU)))\r
-static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {\r
-  uint16_t value = BrotliUnalignedRead16(p);\r
-  return BROTLI_BSWAP16_(value);\r
-}\r
-#define BROTLI_BSWAP32_(V) ( \\r
-  (((V) & 0xFFU) << 24) | (((V) & 0xFF00U) << 8) | \\r
-  (((V) >> 8) & 0xFF00U) | (((V) >> 24) & 0xFFU))\r
-static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {\r
-  uint32_t value = BrotliUnalignedRead32(p);\r
-  return BROTLI_BSWAP32_(value);\r
-}\r
-#define BROTLI_BSWAP64_(V) ( \\r
-  (((V) & 0xFFU) << 56) | (((V) & 0xFF00U) << 40) | \\r
-  (((V) & 0xFF0000U) << 24) | (((V) & 0xFF000000U) << 8) | \\r
-  (((V) >> 8) & 0xFF000000U) | (((V) >> 24) & 0xFF0000U) | \\r
-  (((V) >> 40) & 0xFF00U) | (((V) >> 56) & 0xFFU))\r
-static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) {\r
-  uint64_t value = BrotliUnalignedRead64(p);\r
-  return BROTLI_BSWAP64_(value);\r
-}\r
-static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) {\r
-  uint64_t value = BROTLI_BSWAP64_(v);\r
-  BrotliUnalignedWrite64(p, value);\r
-}\r
-#else  /* BROTLI_LITTLE_ENDIAN */\r
-/* Read / store values byte-wise; hopefully compiler will understand. */\r
-static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {\r
-  const uint8_t* in = (const uint8_t*)p;\r
-  return (uint16_t)(in[0] | (in[1] << 8));\r
-}\r
-static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {\r
-  const uint8_t* in = (const uint8_t*)p;\r
-  uint32_t value = (uint32_t)(in[0]);\r
-  value |= (uint32_t)(in[1]) << 8;\r
-  value |= (uint32_t)(in[2]) << 16;\r
-  value |= (uint32_t)(in[3]) << 24;\r
-  return value;\r
-}\r
-static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) {\r
-  const uint8_t* in = (const uint8_t*)p;\r
-  uint64_t value = (uint64_t)(in[0]);\r
-  value |= (uint64_t)(in[1]) << 8;\r
-  value |= (uint64_t)(in[2]) << 16;\r
-  value |= (uint64_t)(in[3]) << 24;\r
-  value |= (uint64_t)(in[4]) << 32;\r
-  value |= (uint64_t)(in[5]) << 40;\r
-  value |= (uint64_t)(in[6]) << 48;\r
-  value |= (uint64_t)(in[7]) << 56;\r
-  return value;\r
-}\r
-static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) {\r
-  uint8_t* out = (uint8_t*)p;\r
-  out[0] = (uint8_t)v;\r
-  out[1] = (uint8_t)(v >> 8);\r
-  out[2] = (uint8_t)(v >> 16);\r
-  out[3] = (uint8_t)(v >> 24);\r
-  out[4] = (uint8_t)(v >> 32);\r
-  out[5] = (uint8_t)(v >> 40);\r
-  out[6] = (uint8_t)(v >> 48);\r
-  out[7] = (uint8_t)(v >> 56);\r
-}\r
-#endif  /* BROTLI_LITTLE_ENDIAN */\r
-\r
-/* BROTLI_IS_CONSTANT macros returns true for compile-time constants. */\r
-#if BROTLI_GNUC_HAS_BUILTIN(__builtin_constant_p, 3, 0, 1) || \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0)\r
-#define BROTLI_IS_CONSTANT(x) (!!__builtin_constant_p(x))\r
-#else\r
-#define BROTLI_IS_CONSTANT(x) (!!0)\r
-#endif\r
-\r
-#if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_ANY)\r
-#define BROTLI_HAS_UBFX (!!1)\r
-#else\r
-#define BROTLI_HAS_UBFX (!!0)\r
-#endif\r
-\r
-#if defined(BROTLI_ENABLE_LOG)\r
-#define BROTLI_DCHECK(x) assert(x)\r
-#define BROTLI_LOG(x) printf x\r
-#else\r
-#define BROTLI_DCHECK(x)\r
-#define BROTLI_LOG(x)\r
-#endif\r
-\r
-#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG)\r
-static BROTLI_INLINE void BrotliDump(const char* f, int l, const char* fn) {\r
-  fprintf(stderr, "%s:%d (%s)\n", f, l, fn);\r
-  fflush(stderr);\r
-}\r
-#define BROTLI_DUMP() BrotliDump(__FILE__, __LINE__, __FUNCTION__)\r
-#else\r
-#define BROTLI_DUMP() (void)(0)\r
-#endif\r
-\r
-/* TODO: add appropriate icc/sunpro/arm/ibm/ti checks. */\r
-#if (BROTLI_GNUC_VERSION_CHECK(3, 0, 0) || defined(__llvm__)) && \\r
-    !defined(BROTLI_BUILD_NO_RBIT)\r
-#if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_ANY)\r
-/* TODO: detect ARMv6T2 and enable this code for it. */\r
-static BROTLI_INLINE brotli_reg_t BrotliRBit(brotli_reg_t input) {\r
-  brotli_reg_t output;\r
-  __asm__("rbit %0, %1\n" : "=r"(output) : "r"(input));\r
-  return output;\r
-}\r
-#define BROTLI_RBIT(x) BrotliRBit(x)\r
-#endif  /* armv7 / armv8 */\r
-#endif  /* gcc || clang */\r
-#if !defined(BROTLI_RBIT)\r
-static BROTLI_INLINE void BrotliRBit(void) { /* Should break build if used. */ }\r
-#endif  /* BROTLI_RBIT */\r
-\r
-#define BROTLI_REPEAT(N, X) {     \\r
-  if ((N & 1) != 0) {X;}          \\r
-  if ((N & 2) != 0) {X; X;}       \\r
-  if ((N & 4) != 0) {X; X; X; X;} \\r
-}\r
-\r
-#define BROTLI_UNUSED(X) (void)(X)\r
-\r
-#define BROTLI_MIN_MAX(T)                                                      \\r
-  static BROTLI_INLINE T brotli_min_ ## T (T a, T b) { return a < b ? a : b; } \\r
-  static BROTLI_INLINE T brotli_max_ ## T (T a, T b) { return a > b ? a : b; }\r
-BROTLI_MIN_MAX(double) BROTLI_MIN_MAX(float) BROTLI_MIN_MAX(int)\r
-BROTLI_MIN_MAX(size_t) BROTLI_MIN_MAX(uint32_t) BROTLI_MIN_MAX(uint8_t)\r
-#undef BROTLI_MIN_MAX\r
-#define BROTLI_MIN(T, A, B) (brotli_min_ ## T((A), (B)))\r
-#define BROTLI_MAX(T, A, B) (brotli_max_ ## T((A), (B)))\r
-\r
-#define BROTLI_SWAP(T, A, I, J) { \\r
-  T __brotli_swap_tmp = (A)[(I)]; \\r
-  (A)[(I)] = (A)[(J)];            \\r
-  (A)[(J)] = __brotli_swap_tmp;   \\r
-}\r
-\r
-/* Default brotli_alloc_func */\r
-static void* BrotliDefaultAllocFunc(void* opaque, size_t size) {\r
-  BROTLI_UNUSED(opaque);\r
-  return malloc(size);\r
-}\r
-\r
-/* Default brotli_free_func */\r
-static void BrotliDefaultFreeFunc(void* opaque, void* address) {\r
-  BROTLI_UNUSED(opaque);\r
-  free(address);\r
-}\r
-\r
-BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) {\r
-  BROTLI_UNUSED(&BrotliSuppressUnusedFunctions);\r
-  BROTLI_UNUSED(&BrotliUnalignedRead16);\r
-  BROTLI_UNUSED(&BrotliUnalignedRead32);\r
-  BROTLI_UNUSED(&BrotliUnalignedRead64);\r
-  BROTLI_UNUSED(&BrotliUnalignedWrite64);\r
-  BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD16LE);\r
-  BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD32LE);\r
-  BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD64LE);\r
-  BROTLI_UNUSED(&BROTLI_UNALIGNED_STORE64LE);\r
-  BROTLI_UNUSED(&BrotliRBit);\r
-  BROTLI_UNUSED(&brotli_min_double);\r
-  BROTLI_UNUSED(&brotli_max_double);\r
-  BROTLI_UNUSED(&brotli_min_float);\r
-  BROTLI_UNUSED(&brotli_max_float);\r
-  BROTLI_UNUSED(&brotli_min_int);\r
-  BROTLI_UNUSED(&brotli_max_int);\r
-  BROTLI_UNUSED(&brotli_min_size_t);\r
-  BROTLI_UNUSED(&brotli_max_size_t);\r
-  BROTLI_UNUSED(&brotli_min_uint32_t);\r
-  BROTLI_UNUSED(&brotli_max_uint32_t);\r
-  BROTLI_UNUSED(&brotli_min_uint8_t);\r
-  BROTLI_UNUSED(&brotli_max_uint8_t);\r
-  BROTLI_UNUSED(&BrotliDefaultAllocFunc);\r
-  BROTLI_UNUSED(&BrotliDefaultFreeFunc);\r
-#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG)\r
-  BROTLI_UNUSED(&BrotliDump);\r
-#endif\r
-}\r
-\r
-#endif  /* BROTLI_COMMON_PLATFORM_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/common/transform.c b/BaseTools/Source/C/BrotliCompress/common/transform.c
deleted file mode 100644 (file)
index aaac74b..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#include "./transform.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* RFC 7932 transforms string data */\r
-static const char kPrefixSuffix[217] =\r
-      "\1 \2, \10 of the \4 of \2s \1.\5 and \4 "\r
-/* 0x  _0 _2  __5        _E    _3  _6 _8     _E */\r
-      "in \1\"\4 to \2\">\1\n\2. \1]\5 for \3 a \6 "\r
-/* 2x     _3_ _5    _A_  _D_ _F  _2 _4     _A   _E */\r
-      "that \1\'\6 with \6 from \4 by \1(\6. T"\r
-/* 4x       _5_ _7      _E      _5    _A _C */\r
-      "he \4 on \4 as \4 is \4ing \2\n\t\1:\3ed "\r
-/* 6x     _3    _8    _D    _2    _7_ _ _A _C */\r
-      "\2=\"\4 at \3ly \1,\2=\'\5.com/\7. This \5"\r
-/* 8x  _0 _ _3    _8   _C _E _ _1     _7       _F */\r
-      " not \3er \3al \4ful \4ive \5less \4es"\r
-/* Ax       _5   _9   _D    _2    _7     _D */\r
-      "t \4ize \2\xc2\xa0\4ous \5 the \2e \0";\r
-/* Cx    _2    _7___ ___ _A    _F     _5  _8 */\r
-\r
-static const uint16_t kPrefixSuffixMap[50] = {\r
-  0x00, 0x02, 0x05, 0x0E, 0x13, 0x16, 0x18, 0x1E, 0x23, 0x25,\r
-  0x2A, 0x2D, 0x2F, 0x32, 0x34, 0x3A, 0x3E, 0x45, 0x47, 0x4E,\r
-  0x55, 0x5A, 0x5C, 0x63, 0x68, 0x6D, 0x72, 0x77, 0x7A, 0x7C,\r
-  0x80, 0x83, 0x88, 0x8C, 0x8E, 0x91, 0x97, 0x9F, 0xA5, 0xA9,\r
-  0xAD, 0xB2, 0xB7, 0xBD, 0xC2, 0xC7, 0xCA, 0xCF, 0xD5, 0xD8\r
-};\r
-\r
-/* RFC 7932 transforms */\r
-static const uint8_t kTransformsData[] = {\r
-  49, BROTLI_TRANSFORM_IDENTITY, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 0,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 0,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_1, 49,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 0,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 47,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 49,\r
-   4, BROTLI_TRANSFORM_IDENTITY, 0,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 3,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 6,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_2, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_1, 49,\r
-   1, BROTLI_TRANSFORM_IDENTITY, 0,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 1,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 0,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 7,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 9,\r
-  48, BROTLI_TRANSFORM_IDENTITY, 0,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 8,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 5,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 10,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 11,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_3, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 13,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 14,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_3, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_2, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 15,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 16,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 12,\r
-   5, BROTLI_TRANSFORM_IDENTITY, 49,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 1,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_4, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 18,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 17,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 19,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 20,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_5, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_6, 49,\r
-  47, BROTLI_TRANSFORM_IDENTITY, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_4, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 22,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 23,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 24,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 25,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_7, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_1, 26,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 27,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 28,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 12,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 29,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_9, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_FIRST_7, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_6, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 21,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 1,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_8, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 31,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 32,\r
-  47, BROTLI_TRANSFORM_IDENTITY, 3,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_5, 49,\r
-  49, BROTLI_TRANSFORM_OMIT_LAST_9, 49,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 1,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 8,\r
-   5, BROTLI_TRANSFORM_IDENTITY, 21,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 0,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 10,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 30,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 5,\r
-  35, BROTLI_TRANSFORM_IDENTITY, 49,\r
-  47, BROTLI_TRANSFORM_IDENTITY, 2,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 17,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 36,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 33,\r
-   5, BROTLI_TRANSFORM_IDENTITY, 0,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 21,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 5,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 37,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 30,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 38,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_ALL, 0,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 39,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_ALL, 49,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 34,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 8,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 12,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 21,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 40,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 12,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 41,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 42,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 17,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 43,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 5,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 10,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 34,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 33,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 44,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 5,\r
-  45, BROTLI_TRANSFORM_IDENTITY, 49,\r
-   0, BROTLI_TRANSFORM_IDENTITY, 33,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 30,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 30,\r
-  49, BROTLI_TRANSFORM_IDENTITY, 46,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 1,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 34,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 33,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_ALL, 30,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_ALL, 1,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 33,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 21,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 12,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_ALL, 5,\r
-  49, BROTLI_TRANSFORM_UPPERCASE_ALL, 34,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_ALL, 12,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 30,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_ALL, 34,\r
-   0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 34,\r
-};\r
-\r
-static BrotliTransforms kBrotliTransforms = {\r
-  sizeof(kPrefixSuffix),\r
-  (const uint8_t*)kPrefixSuffix,\r
-  kPrefixSuffixMap,\r
-  sizeof(kTransformsData) / (3 * sizeof(kTransformsData[0])),\r
-  kTransformsData,\r
-  {0, 12, 27, 23, 42, 63, 56, 48, 59, 64}\r
-};\r
-\r
-const BrotliTransforms* BrotliGetTransforms(void) {\r
-  return &kBrotliTransforms;\r
-}\r
-\r
-static int ToUpperCase(uint8_t* p) {\r
-  if (p[0] < 0xC0) {\r
-    if (p[0] >= 'a' && p[0] <= 'z') {\r
-      p[0] ^= 32;\r
-    }\r
-    return 1;\r
-  }\r
-  /* An overly simplified uppercasing model for UTF-8. */\r
-  if (p[0] < 0xE0) {\r
-    p[1] ^= 32;\r
-    return 2;\r
-  }\r
-  /* An arbitrary transform for three byte characters. */\r
-  p[2] ^= 5;\r
-  return 3;\r
-}\r
-\r
-int BrotliTransformDictionaryWord(uint8_t* dst, const uint8_t* word, int len,\r
-    const BrotliTransforms* transforms, int transfom_idx) {\r
-  int idx = 0;\r
-  const uint8_t* prefix = BROTLI_TRANSFORM_PREFIX(transforms, transfom_idx);\r
-  uint8_t type = BROTLI_TRANSFORM_TYPE(transforms, transfom_idx);\r
-  const uint8_t* suffix = BROTLI_TRANSFORM_SUFFIX(transforms, transfom_idx);\r
-  {\r
-    int prefix_len = *prefix++;\r
-    while (prefix_len--) { dst[idx++] = *prefix++; }\r
-  }\r
-  {\r
-    const int t = type;\r
-    int i = 0;\r
-    if (t <= BROTLI_TRANSFORM_OMIT_LAST_9) {\r
-      len -= t;\r
-    } else if (t >= BROTLI_TRANSFORM_OMIT_FIRST_1\r
-        && t <= BROTLI_TRANSFORM_OMIT_FIRST_9) {\r
-      int skip = t - (BROTLI_TRANSFORM_OMIT_FIRST_1 - 1);\r
-      word += skip;\r
-      len -= skip;\r
-    }\r
-    while (i < len) { dst[idx++] = word[i++]; }\r
-    if (t == BROTLI_TRANSFORM_UPPERCASE_FIRST) {\r
-      ToUpperCase(&dst[idx - len]);\r
-    } else if (t == BROTLI_TRANSFORM_UPPERCASE_ALL) {\r
-      uint8_t* uppercase = &dst[idx - len];\r
-      while (len > 0) {\r
-        int step = ToUpperCase(uppercase);\r
-        uppercase += step;\r
-        len -= step;\r
-      }\r
-    }\r
-  }\r
-  {\r
-    int suffix_len = *suffix++;\r
-    while (suffix_len--) { dst[idx++] = *suffix++; }\r
-    return idx;\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/common/transform.h b/BaseTools/Source/C/BrotliCompress/common/transform.h
deleted file mode 100644 (file)
index 8b42cd1..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/* transforms is a part of ABI, but not API.\r
-\r
-   It means that there are some functions that are supposed to be in "common"\r
-   library, but header itself is not placed into include/brotli. This way,\r
-   aforementioned functions will be available only to brotli internals.\r
- */\r
-\r
-#ifndef BROTLI_COMMON_TRANSFORM_H_\r
-#define BROTLI_COMMON_TRANSFORM_H_\r
-\r
-#include <brotli/port.h>\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-enum BrotliWordTransformType {\r
-  BROTLI_TRANSFORM_IDENTITY = 0,\r
-  BROTLI_TRANSFORM_OMIT_LAST_1 = 1,\r
-  BROTLI_TRANSFORM_OMIT_LAST_2 = 2,\r
-  BROTLI_TRANSFORM_OMIT_LAST_3 = 3,\r
-  BROTLI_TRANSFORM_OMIT_LAST_4 = 4,\r
-  BROTLI_TRANSFORM_OMIT_LAST_5 = 5,\r
-  BROTLI_TRANSFORM_OMIT_LAST_6 = 6,\r
-  BROTLI_TRANSFORM_OMIT_LAST_7 = 7,\r
-  BROTLI_TRANSFORM_OMIT_LAST_8 = 8,\r
-  BROTLI_TRANSFORM_OMIT_LAST_9 = 9,\r
-  BROTLI_TRANSFORM_UPPERCASE_FIRST = 10,\r
-  BROTLI_TRANSFORM_UPPERCASE_ALL = 11,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_1 = 12,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_2 = 13,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_3 = 14,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_4 = 15,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_5 = 16,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_6 = 17,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_7 = 18,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_8 = 19,\r
-  BROTLI_TRANSFORM_OMIT_FIRST_9 = 20,\r
-  BROTLI_NUM_TRANSFORM_TYPES  /* Counts transforms, not a transform itself. */\r
-};\r
-\r
-#define BROTLI_TRANSFORMS_MAX_CUT_OFF BROTLI_TRANSFORM_OMIT_LAST_9\r
-\r
-typedef struct BrotliTransforms {\r
-  uint16_t prefix_suffix_size;\r
-  /* Last character must be null, so prefix_suffix_size must be at least 1. */\r
-  const uint8_t* prefix_suffix;\r
-  const uint16_t* prefix_suffix_map;\r
-  uint32_t num_transforms;\r
-  /* Each entry is a [prefix_id, transform, suffix_id] triplet. */\r
-  const uint8_t* transforms;\r
-  /* Indices of transforms like ["", BROTLI_TRANSFORM_OMIT_LAST_#, ""].\r
-     0-th element corresponds to ["", BROTLI_TRANSFORM_IDENTITY, ""].\r
-     -1, if cut-off transform does not exist. */\r
-  int16_t cutOffTransforms[BROTLI_TRANSFORMS_MAX_CUT_OFF + 1];\r
-} BrotliTransforms;\r
-\r
-/* T is BrotliTransforms*; result is uint8_t. */\r
-#define BROTLI_TRANSFORM_PREFIX_ID(T, I) ((T)->transforms[((I) * 3) + 0])\r
-#define BROTLI_TRANSFORM_TYPE(T, I)      ((T)->transforms[((I) * 3) + 1])\r
-#define BROTLI_TRANSFORM_SUFFIX_ID(T, I) ((T)->transforms[((I) * 3) + 2])\r
-\r
-/* T is BrotliTransforms*; result is const uint8_t*. */\r
-#define BROTLI_TRANSFORM_PREFIX(T, I) (&(T)->prefix_suffix[ \\r
-    (T)->prefix_suffix_map[BROTLI_TRANSFORM_PREFIX_ID(T, I)]])\r
-#define BROTLI_TRANSFORM_SUFFIX(T, I) (&(T)->prefix_suffix[ \\r
-    (T)->prefix_suffix_map[BROTLI_TRANSFORM_SUFFIX_ID(T, I)]])\r
-\r
-BROTLI_COMMON_API const BrotliTransforms* BrotliGetTransforms(void);\r
-\r
-BROTLI_COMMON_API int BrotliTransformDictionaryWord(\r
-    uint8_t* dst, const uint8_t* word, int len,\r
-    const BrotliTransforms* transforms, int transform_idx);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_COMMON_TRANSFORM_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/common/version.h b/BaseTools/Source/C/BrotliCompress/common/version.h
deleted file mode 100644 (file)
index 8e94f4f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Version definition. */\r
-\r
-#ifndef BROTLI_COMMON_VERSION_H_\r
-#define BROTLI_COMMON_VERSION_H_\r
-\r
-/* This macro should only be used when library is compiled together with client.\r
-   If library is dynamically linked, use BrotliDecoderVersion and\r
-   BrotliEncoderVersion methods. */\r
-\r
-/* Semantic version, calculated as (MAJOR << 24) | (MINOR << 12) | PATCH */\r
-#define BROTLI_VERSION 0x1000006\r
-\r
-/* This macro is used by build system to produce Libtool-friendly soname. See\r
-   https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html\r
- */\r
-\r
-/* ABI version, calculated as (CURRENT << 24) | (REVISION << 12) | AGE */\r
-#define BROTLI_ABI_VERSION 0x1006000\r
-\r
-#endif  /* BROTLI_COMMON_VERSION_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/bit_reader.c b/BaseTools/Source/C/BrotliCompress/dec/bit_reader.c
deleted file mode 100644 (file)
index 4d8bd8b..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Bit reading helpers */\r
-\r
-#include "./bit_reader.h"\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-void BrotliInitBitReader(BrotliBitReader* const br) {\r
-  br->val_ = 0;\r
-  br->bit_pos_ = sizeof(br->val_) << 3;\r
-}\r
-\r
-BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br) {\r
-  size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1;\r
-  /* Fixing alignment after unaligned BrotliFillWindow would result accumulator\r
-     overflow. If unalignment is caused by BrotliSafeReadBits, then there is\r
-     enough space in accumulator to fix alignment. */\r
-  if (!BROTLI_ALIGNED_READ) {\r
-    aligned_read_mask = 0;\r
-  }\r
-  if (BrotliGetAvailableBits(br) == 0) {\r
-    if (!BrotliPullByte(br)) {\r
-      return BROTLI_FALSE;\r
-    }\r
-  }\r
-\r
-  while ((((size_t)br->next_in) & aligned_read_mask) != 0) {\r
-    if (!BrotliPullByte(br)) {\r
-      /* If we consumed all the input, we don't care about the alignment. */\r
-      return BROTLI_TRUE;\r
-    }\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/bit_reader.h b/BaseTools/Source/C/BrotliCompress/dec/bit_reader.h
deleted file mode 100644 (file)
index b13e33f..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Bit reading helpers */\r
-\r
-#ifndef BROTLI_DEC_BIT_READER_H_\r
-#define BROTLI_DEC_BIT_READER_H_\r
-\r
-#include <string.h>  /* memcpy */\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define BROTLI_SHORT_FILL_BIT_WINDOW_READ (sizeof(brotli_reg_t) >> 1)\r
-\r
-static const uint32_t kBitMask[33] = {  0x00000000,\r
-    0x00000001, 0x00000003, 0x00000007, 0x0000000F,\r
-    0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF,\r
-    0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF,\r
-    0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF,\r
-    0x0001FFFF, 0x0003FFFF, 0x0007FFFF, 0x000FFFFF,\r
-    0x001FFFFF, 0x003FFFFF, 0x007FFFFF, 0x00FFFFFF,\r
-    0x01FFFFFF, 0x03FFFFFF, 0x07FFFFFF, 0x0FFFFFFF,\r
-    0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF\r
-};\r
-\r
-static BROTLI_INLINE uint32_t BitMask(uint32_t n) {\r
-  if (BROTLI_IS_CONSTANT(n) || BROTLI_HAS_UBFX) {\r
-    /* Masking with this expression turns to a single\r
-       "Unsigned Bit Field Extract" UBFX instruction on ARM. */\r
-    return ~((0xFFFFFFFFu) << n);\r
-  } else {\r
-    return kBitMask[n];\r
-  }\r
-}\r
-\r
-typedef struct {\r
-  brotli_reg_t val_;       /* pre-fetched bits */\r
-  uint32_t bit_pos_;       /* current bit-reading position in val_ */\r
-  const uint8_t* next_in;  /* the byte we're reading from */\r
-  size_t avail_in;\r
-} BrotliBitReader;\r
-\r
-typedef struct {\r
-  brotli_reg_t val_;\r
-  uint32_t bit_pos_;\r
-  const uint8_t* next_in;\r
-  size_t avail_in;\r
-} BrotliBitReaderState;\r
-\r
-/* Initializes the BrotliBitReader fields. */\r
-BROTLI_INTERNAL void BrotliInitBitReader(BrotliBitReader* const br);\r
-\r
-/* Ensures that accumulator is not empty.\r
-   May consume up to sizeof(brotli_reg_t) - 1 bytes of input.\r
-   Returns BROTLI_FALSE if data is required but there is no input available.\r
-   For BROTLI_ALIGNED_READ this function also prepares bit reader for aligned\r
-   reading. */\r
-BROTLI_INTERNAL BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br);\r
-\r
-static BROTLI_INLINE void BrotliBitReaderSaveState(\r
-    BrotliBitReader* const from, BrotliBitReaderState* to) {\r
-  to->val_ = from->val_;\r
-  to->bit_pos_ = from->bit_pos_;\r
-  to->next_in = from->next_in;\r
-  to->avail_in = from->avail_in;\r
-}\r
-\r
-static BROTLI_INLINE void BrotliBitReaderRestoreState(\r
-    BrotliBitReader* const to, BrotliBitReaderState* from) {\r
-  to->val_ = from->val_;\r
-  to->bit_pos_ = from->bit_pos_;\r
-  to->next_in = from->next_in;\r
-  to->avail_in = from->avail_in;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t BrotliGetAvailableBits(\r
-    const BrotliBitReader* br) {\r
-  return (BROTLI_64_BITS ? 64 : 32) - br->bit_pos_;\r
-}\r
-\r
-/* Returns amount of unread bytes the bit reader still has buffered from the\r
-   BrotliInput, including whole bytes in br->val_. */\r
-static BROTLI_INLINE size_t BrotliGetRemainingBytes(BrotliBitReader* br) {\r
-  return br->avail_in + (BrotliGetAvailableBits(br) >> 3);\r
-}\r
-\r
-/* Checks if there is at least |num| bytes left in the input ring-buffer\r
-   (excluding the bits remaining in br->val_). */\r
-static BROTLI_INLINE BROTLI_BOOL BrotliCheckInputAmount(\r
-    BrotliBitReader* const br, size_t num) {\r
-  return TO_BROTLI_BOOL(br->avail_in >= num);\r
-}\r
-\r
-/* Guarantees that there are at least |n_bits| + 1 bits in accumulator.\r
-   Precondition: accumulator contains at least 1 bit.\r
-   |n_bits| should be in the range [1..24] for regular build. For portable\r
-   non-64-bit little-endian build only 16 bits are safe to request. */\r
-static BROTLI_INLINE void BrotliFillBitWindow(\r
-    BrotliBitReader* const br, uint32_t n_bits) {\r
-#if (BROTLI_64_BITS)\r
-  if (!BROTLI_ALIGNED_READ && BROTLI_IS_CONSTANT(n_bits) && (n_bits <= 8)) {\r
-    if (br->bit_pos_ >= 56) {\r
-      br->val_ >>= 56;\r
-      br->bit_pos_ ^= 56;  /* here same as -= 56 because of the if condition */\r
-      br->val_ |= BROTLI_UNALIGNED_LOAD64LE(br->next_in) << 8;\r
-      br->avail_in -= 7;\r
-      br->next_in += 7;\r
-    }\r
-  } else if (\r
-      !BROTLI_ALIGNED_READ && BROTLI_IS_CONSTANT(n_bits) && (n_bits <= 16)) {\r
-    if (br->bit_pos_ >= 48) {\r
-      br->val_ >>= 48;\r
-      br->bit_pos_ ^= 48;  /* here same as -= 48 because of the if condition */\r
-      br->val_ |= BROTLI_UNALIGNED_LOAD64LE(br->next_in) << 16;\r
-      br->avail_in -= 6;\r
-      br->next_in += 6;\r
-    }\r
-  } else {\r
-    if (br->bit_pos_ >= 32) {\r
-      br->val_ >>= 32;\r
-      br->bit_pos_ ^= 32;  /* here same as -= 32 because of the if condition */\r
-      br->val_ |= ((uint64_t)BROTLI_UNALIGNED_LOAD32LE(br->next_in)) << 32;\r
-      br->avail_in -= BROTLI_SHORT_FILL_BIT_WINDOW_READ;\r
-      br->next_in += BROTLI_SHORT_FILL_BIT_WINDOW_READ;\r
-    }\r
-  }\r
-#else\r
-  if (!BROTLI_ALIGNED_READ && BROTLI_IS_CONSTANT(n_bits) && (n_bits <= 8)) {\r
-    if (br->bit_pos_ >= 24) {\r
-      br->val_ >>= 24;\r
-      br->bit_pos_ ^= 24;  /* here same as -= 24 because of the if condition */\r
-      br->val_ |= BROTLI_UNALIGNED_LOAD32LE(br->next_in) << 8;\r
-      br->avail_in -= 3;\r
-      br->next_in += 3;\r
-    }\r
-  } else {\r
-    if (br->bit_pos_ >= 16) {\r
-      br->val_ >>= 16;\r
-      br->bit_pos_ ^= 16;  /* here same as -= 16 because of the if condition */\r
-      br->val_ |= ((uint32_t)BROTLI_UNALIGNED_LOAD16LE(br->next_in)) << 16;\r
-      br->avail_in -= BROTLI_SHORT_FILL_BIT_WINDOW_READ;\r
-      br->next_in += BROTLI_SHORT_FILL_BIT_WINDOW_READ;\r
-    }\r
-  }\r
-#endif\r
-}\r
-\r
-/* Mostly like BrotliFillBitWindow, but guarantees only 16 bits and reads no\r
-   more than BROTLI_SHORT_FILL_BIT_WINDOW_READ bytes of input. */\r
-static BROTLI_INLINE void BrotliFillBitWindow16(BrotliBitReader* const br) {\r
-  BrotliFillBitWindow(br, 17);\r
-}\r
-\r
-/* Tries to pull one byte of input to accumulator.\r
-   Returns BROTLI_FALSE if there is no input available. */\r
-static BROTLI_INLINE BROTLI_BOOL BrotliPullByte(BrotliBitReader* const br) {\r
-  if (br->avail_in == 0) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  br->val_ >>= 8;\r
-#if (BROTLI_64_BITS)\r
-  br->val_ |= ((uint64_t)*br->next_in) << 56;\r
-#else\r
-  br->val_ |= ((uint32_t)*br->next_in) << 24;\r
-#endif\r
-  br->bit_pos_ -= 8;\r
-  --br->avail_in;\r
-  ++br->next_in;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-/* Returns currently available bits.\r
-   The number of valid bits could be calculated by BrotliGetAvailableBits. */\r
-static BROTLI_INLINE brotli_reg_t BrotliGetBitsUnmasked(\r
-    BrotliBitReader* const br) {\r
-  return br->val_ >> br->bit_pos_;\r
-}\r
-\r
-/* Like BrotliGetBits, but does not mask the result.\r
-   The result contains at least 16 valid bits. */\r
-static BROTLI_INLINE uint32_t BrotliGet16BitsUnmasked(\r
-    BrotliBitReader* const br) {\r
-  BrotliFillBitWindow(br, 16);\r
-  return (uint32_t)BrotliGetBitsUnmasked(br);\r
-}\r
-\r
-/* Returns the specified number of bits from |br| without advancing bit\r
-   position. */\r
-static BROTLI_INLINE uint32_t BrotliGetBits(\r
-    BrotliBitReader* const br, uint32_t n_bits) {\r
-  BrotliFillBitWindow(br, n_bits);\r
-  return (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(n_bits);\r
-}\r
-\r
-/* Tries to peek the specified amount of bits. Returns BROTLI_FALSE, if there\r
-   is not enough input. */\r
-static BROTLI_INLINE BROTLI_BOOL BrotliSafeGetBits(\r
-    BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {\r
-  while (BrotliGetAvailableBits(br) < n_bits) {\r
-    if (!BrotliPullByte(br)) {\r
-      return BROTLI_FALSE;\r
-    }\r
-  }\r
-  *val = (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(n_bits);\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-/* Advances the bit pos by |n_bits|. */\r
-static BROTLI_INLINE void BrotliDropBits(\r
-    BrotliBitReader* const br, uint32_t n_bits) {\r
-  br->bit_pos_ += n_bits;\r
-}\r
-\r
-static BROTLI_INLINE void BrotliBitReaderUnload(BrotliBitReader* br) {\r
-  uint32_t unused_bytes = BrotliGetAvailableBits(br) >> 3;\r
-  uint32_t unused_bits = unused_bytes << 3;\r
-  br->avail_in += unused_bytes;\r
-  br->next_in -= unused_bytes;\r
-  if (unused_bits == sizeof(br->val_) << 3) {\r
-    br->val_ = 0;\r
-  } else {\r
-    br->val_ <<= unused_bits;\r
-  }\r
-  br->bit_pos_ += unused_bits;\r
-}\r
-\r
-/* Reads the specified number of bits from |br| and advances the bit pos.\r
-   Precondition: accumulator MUST contain at least |n_bits|. */\r
-static BROTLI_INLINE void BrotliTakeBits(\r
-  BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {\r
-  *val = (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(n_bits);\r
-  BROTLI_LOG(("[BrotliReadBits]  %d %d %d val: %6x\n",\r
-      (int)br->avail_in, (int)br->bit_pos_, (int)n_bits, (int)*val));\r
-  BrotliDropBits(br, n_bits);\r
-}\r
-\r
-/* Reads the specified number of bits from |br| and advances the bit pos.\r
-   Assumes that there is enough input to perform BrotliFillBitWindow. */\r
-static BROTLI_INLINE uint32_t BrotliReadBits(\r
-    BrotliBitReader* const br, uint32_t n_bits) {\r
-  if (BROTLI_64_BITS || (n_bits <= 16)) {\r
-    uint32_t val;\r
-    BrotliFillBitWindow(br, n_bits);\r
-    BrotliTakeBits(br, n_bits, &val);\r
-    return val;\r
-  } else {\r
-    uint32_t low_val;\r
-    uint32_t high_val;\r
-    BrotliFillBitWindow(br, 16);\r
-    BrotliTakeBits(br, 16, &low_val);\r
-    BrotliFillBitWindow(br, 8);\r
-    BrotliTakeBits(br, n_bits - 16, &high_val);\r
-    return low_val | (high_val << 16);\r
-  }\r
-}\r
-\r
-/* Tries to read the specified amount of bits. Returns BROTLI_FALSE, if there\r
-   is not enough input. |n_bits| MUST be positive. */\r
-static BROTLI_INLINE BROTLI_BOOL BrotliSafeReadBits(\r
-    BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {\r
-  while (BrotliGetAvailableBits(br) < n_bits) {\r
-    if (!BrotliPullByte(br)) {\r
-      return BROTLI_FALSE;\r
-    }\r
-  }\r
-  BrotliTakeBits(br, n_bits, val);\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-/* Advances the bit reader position to the next byte boundary and verifies\r
-   that any skipped bits are set to zero. */\r
-static BROTLI_INLINE BROTLI_BOOL BrotliJumpToByteBoundary(BrotliBitReader* br) {\r
-  uint32_t pad_bits_count = BrotliGetAvailableBits(br) & 0x7;\r
-  uint32_t pad_bits = 0;\r
-  if (pad_bits_count != 0) {\r
-    BrotliTakeBits(br, pad_bits_count, &pad_bits);\r
-  }\r
-  return TO_BROTLI_BOOL(pad_bits == 0);\r
-}\r
-\r
-/* Copies remaining input bytes stored in the bit reader to the output. Value\r
-   |num| may not be larger than BrotliGetRemainingBytes. The bit reader must be\r
-   warmed up again after this. */\r
-static BROTLI_INLINE void BrotliCopyBytes(uint8_t* dest,\r
-                                          BrotliBitReader* br, size_t num) {\r
-  while (BrotliGetAvailableBits(br) >= 8 && num > 0) {\r
-    *dest = (uint8_t)BrotliGetBitsUnmasked(br);\r
-    BrotliDropBits(br, 8);\r
-    ++dest;\r
-    --num;\r
-  }\r
-  memcpy(dest, br->next_in, num);\r
-  br->avail_in -= num;\r
-  br->next_in += num;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_DEC_BIT_READER_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/decode.c b/BaseTools/Source/C/BrotliCompress/dec/decode.c
deleted file mode 100644 (file)
index eb67d8b..0000000
+++ /dev/null
@@ -1,2497 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#include <brotli/decode.h>\r
-\r
-#if defined(__ARM_NEON__)\r
-#include <arm_neon.h>\r
-#endif\r
-\r
-#include <stdlib.h>  /* free, malloc */\r
-#include <string.h>  /* memcpy, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/context.h"\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include "../common/transform.h"\r
-#include "../common/version.h"\r
-#include "./bit_reader.h"\r
-#include "./huffman.h"\r
-#include "./prefix.h"\r
-#include "./state.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define BROTLI_FAILURE(CODE) (BROTLI_DUMP(), CODE)\r
-\r
-#define BROTLI_LOG_UINT(name)                                       \\r
-  BROTLI_LOG(("[%s] %s = %lu\n", __func__, #name, (unsigned long)(name)))\r
-#define BROTLI_LOG_ARRAY_INDEX(array_name, idx)                     \\r
-  BROTLI_LOG(("[%s] %s[%lu] = %lu\n", __func__, #array_name,        \\r
-         (unsigned long)(idx), (unsigned long)array_name[idx]))\r
-\r
-#define HUFFMAN_TABLE_BITS 8U\r
-#define HUFFMAN_TABLE_MASK 0xFF\r
-\r
-/* We need the slack region for the following reasons:\r
-    - doing up to two 16-byte copies for fast backward copying\r
-    - inserting transformed dictionary word (5 prefix + 24 base + 8 suffix) */\r
-static const uint32_t kRingBufferWriteAheadSlack = 42;\r
-\r
-static const uint8_t kCodeLengthCodeOrder[BROTLI_CODE_LENGTH_CODES] = {\r
-  1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\r
-};\r
-\r
-/* Static prefix code for the complex code length code lengths. */\r
-static const uint8_t kCodeLengthPrefixLength[16] = {\r
-  2, 2, 2, 3, 2, 2, 2, 4, 2, 2, 2, 3, 2, 2, 2, 4,\r
-};\r
-\r
-static const uint8_t kCodeLengthPrefixValue[16] = {\r
-  0, 4, 3, 2, 0, 4, 3, 1, 0, 4, 3, 2, 0, 4, 3, 5,\r
-};\r
-\r
-BROTLI_BOOL BrotliDecoderSetParameter(\r
-    BrotliDecoderState* state, BrotliDecoderParameter p, uint32_t value) {\r
-  if (state->state != BROTLI_STATE_UNINITED) return BROTLI_FALSE;\r
-  switch (p) {\r
-    case BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:\r
-      state->canny_ringbuffer_allocation = !!value ? 0 : 1;\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_DECODER_PARAM_LARGE_WINDOW:\r
-      state->large_window = TO_BROTLI_BOOL(!!value);\r
-      return BROTLI_TRUE;\r
-\r
-    default: return BROTLI_FALSE;\r
-  }\r
-}\r
-\r
-BrotliDecoderState* BrotliDecoderCreateInstance(\r
-    brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {\r
-  BrotliDecoderState* state = 0;\r
-  if (!alloc_func && !free_func) {\r
-    state = (BrotliDecoderState*)malloc(sizeof(BrotliDecoderState));\r
-  } else if (alloc_func && free_func) {\r
-    state = (BrotliDecoderState*)alloc_func(opaque, sizeof(BrotliDecoderState));\r
-  }\r
-  if (state == 0) {\r
-    BROTLI_DUMP();\r
-    return 0;\r
-  }\r
-  if (!BrotliDecoderStateInit(state, alloc_func, free_func, opaque)) {\r
-    BROTLI_DUMP();\r
-    if (!alloc_func && !free_func) {\r
-      free(state);\r
-    } else if (alloc_func && free_func) {\r
-      free_func(opaque, state);\r
-    }\r
-    return 0;\r
-  }\r
-  return state;\r
-}\r
-\r
-/* Deinitializes and frees BrotliDecoderState instance. */\r
-void BrotliDecoderDestroyInstance(BrotliDecoderState* state) {\r
-  if (!state) {\r
-    return;\r
-  } else {\r
-    brotli_free_func free_func = state->free_func;\r
-    void* opaque = state->memory_manager_opaque;\r
-    BrotliDecoderStateCleanup(state);\r
-    free_func(opaque, state);\r
-  }\r
-}\r
-\r
-/* Saves error code and converts it to BrotliDecoderResult. */\r
-static BROTLI_NOINLINE BrotliDecoderResult SaveErrorCode(\r
-    BrotliDecoderState* s, BrotliDecoderErrorCode e) {\r
-  s->error_code = (int)e;\r
-  switch (e) {\r
-    case BROTLI_DECODER_SUCCESS:\r
-      return BROTLI_DECODER_RESULT_SUCCESS;\r
-\r
-    case BROTLI_DECODER_NEEDS_MORE_INPUT:\r
-      return BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT;\r
-\r
-    case BROTLI_DECODER_NEEDS_MORE_OUTPUT:\r
-      return BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT;\r
-\r
-    default:\r
-      return BROTLI_DECODER_RESULT_ERROR;\r
-  }\r
-}\r
-\r
-/* Decodes WBITS by reading 1 - 7 bits, or 0x11 for "Large Window Brotli".\r
-   Precondition: bit-reader accumulator has at least 8 bits. */\r
-static BrotliDecoderErrorCode DecodeWindowBits(BrotliDecoderState* s,\r
-                                               BrotliBitReader* br) {\r
-  uint32_t n;\r
-  BROTLI_BOOL large_window = s->large_window;\r
-  s->large_window = BROTLI_FALSE;\r
-  BrotliTakeBits(br, 1, &n);\r
-  if (n == 0) {\r
-    s->window_bits = 16;\r
-    return BROTLI_DECODER_SUCCESS;\r
-  }\r
-  BrotliTakeBits(br, 3, &n);\r
-  if (n != 0) {\r
-    s->window_bits = 17 + n;\r
-    return BROTLI_DECODER_SUCCESS;\r
-  }\r
-  BrotliTakeBits(br, 3, &n);\r
-  if (n == 1) {\r
-    if (large_window) {\r
-      BrotliTakeBits(br, 1, &n);\r
-      if (n == 1) {\r
-        return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);\r
-      }\r
-      s->large_window = BROTLI_TRUE;\r
-      return BROTLI_DECODER_SUCCESS;\r
-    } else {\r
-      return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);\r
-    }\r
-  }\r
-  if (n != 0) {\r
-    s->window_bits = 8 + n;\r
-    return BROTLI_DECODER_SUCCESS;\r
-  }\r
-  s->window_bits = 17;\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-static BROTLI_INLINE void memmove16(uint8_t* dst, uint8_t* src) {\r
-#if defined(__ARM_NEON__)\r
-  vst1q_u8(dst, vld1q_u8(src));\r
-#else\r
-  uint32_t buffer[4];\r
-  memcpy(buffer, src, 16);\r
-  memcpy(dst, buffer, 16);\r
-#endif\r
-}\r
-\r
-/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */\r
-static BROTLI_NOINLINE BrotliDecoderErrorCode DecodeVarLenUint8(\r
-    BrotliDecoderState* s, BrotliBitReader* br, uint32_t* value) {\r
-  uint32_t bits;\r
-  switch (s->substate_decode_uint8) {\r
-    case BROTLI_STATE_DECODE_UINT8_NONE:\r
-      if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, 1, &bits))) {\r
-        return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-      }\r
-      if (bits == 0) {\r
-        *value = 0;\r
-        return BROTLI_DECODER_SUCCESS;\r
-      }\r
-    /* Fall through. */\r
-\r
-    case BROTLI_STATE_DECODE_UINT8_SHORT:\r
-      if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, 3, &bits))) {\r
-        s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_SHORT;\r
-        return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-      }\r
-      if (bits == 0) {\r
-        *value = 1;\r
-        s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE;\r
-        return BROTLI_DECODER_SUCCESS;\r
-      }\r
-      /* Use output value as a temporary storage. It MUST be persisted. */\r
-      *value = bits;\r
-    /* Fall through. */\r
-\r
-    case BROTLI_STATE_DECODE_UINT8_LONG:\r
-      if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, *value, &bits))) {\r
-        s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_LONG;\r
-        return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-      }\r
-      *value = (1U << *value) + bits;\r
-      s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE;\r
-      return BROTLI_DECODER_SUCCESS;\r
-\r
-    default:\r
-      return\r
-          BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE);\r
-  }\r
-}\r
-\r
-/* Decodes a metablock length and flags by reading 2 - 31 bits. */\r
-static BrotliDecoderErrorCode BROTLI_NOINLINE DecodeMetaBlockLength(\r
-    BrotliDecoderState* s, BrotliBitReader* br) {\r
-  uint32_t bits;\r
-  int i;\r
-  for (;;) {\r
-    switch (s->substate_metablock_header) {\r
-      case BROTLI_STATE_METABLOCK_HEADER_NONE:\r
-        if (!BrotliSafeReadBits(br, 1, &bits)) {\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        s->is_last_metablock = bits ? 1 : 0;\r
-        s->meta_block_remaining_len = 0;\r
-        s->is_uncompressed = 0;\r
-        s->is_metadata = 0;\r
-        if (!s->is_last_metablock) {\r
-          s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NIBBLES;\r
-          break;\r
-        }\r
-        s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_EMPTY;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_EMPTY:\r
-        if (!BrotliSafeReadBits(br, 1, &bits)) {\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        if (bits) {\r
-          s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;\r
-          return BROTLI_DECODER_SUCCESS;\r
-        }\r
-        s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NIBBLES;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_NIBBLES:\r
-        if (!BrotliSafeReadBits(br, 2, &bits)) {\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        s->size_nibbles = (uint8_t)(bits + 4);\r
-        s->loop_counter = 0;\r
-        if (bits == 3) {\r
-          s->is_metadata = 1;\r
-          s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_RESERVED;\r
-          break;\r
-        }\r
-        s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_SIZE;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_SIZE:\r
-        i = s->loop_counter;\r
-        for (; i < (int)s->size_nibbles; ++i) {\r
-          if (!BrotliSafeReadBits(br, 4, &bits)) {\r
-            s->loop_counter = i;\r
-            return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          }\r
-          if (i + 1 == s->size_nibbles && s->size_nibbles > 4 && bits == 0) {\r
-            return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE);\r
-          }\r
-          s->meta_block_remaining_len |= (int)(bits << (i * 4));\r
-        }\r
-        s->substate_metablock_header =\r
-            BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED:\r
-        if (!s->is_last_metablock) {\r
-          if (!BrotliSafeReadBits(br, 1, &bits)) {\r
-            return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          }\r
-          s->is_uncompressed = bits ? 1 : 0;\r
-        }\r
-        ++s->meta_block_remaining_len;\r
-        s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;\r
-        return BROTLI_DECODER_SUCCESS;\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_RESERVED:\r
-        if (!BrotliSafeReadBits(br, 1, &bits)) {\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        if (bits != 0) {\r
-          return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_RESERVED);\r
-        }\r
-        s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_BYTES;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_BYTES:\r
-        if (!BrotliSafeReadBits(br, 2, &bits)) {\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        if (bits == 0) {\r
-          s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;\r
-          return BROTLI_DECODER_SUCCESS;\r
-        }\r
-        s->size_nibbles = (uint8_t)bits;\r
-        s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_METADATA;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_METADATA:\r
-        i = s->loop_counter;\r
-        for (; i < (int)s->size_nibbles; ++i) {\r
-          if (!BrotliSafeReadBits(br, 8, &bits)) {\r
-            s->loop_counter = i;\r
-            return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          }\r
-          if (i + 1 == s->size_nibbles && s->size_nibbles > 1 && bits == 0) {\r
-            return BROTLI_FAILURE(\r
-                BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE);\r
-          }\r
-          s->meta_block_remaining_len |= (int)(bits << (i * 8));\r
-        }\r
-        ++s->meta_block_remaining_len;\r
-        s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;\r
-        return BROTLI_DECODER_SUCCESS;\r
-\r
-      default:\r
-        return\r
-            BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE);\r
-    }\r
-  }\r
-}\r
-\r
-/* Decodes the Huffman code.\r
-   This method doesn't read data from the bit reader, BUT drops the amount of\r
-   bits that correspond to the decoded symbol.\r
-   bits MUST contain at least 15 (BROTLI_HUFFMAN_MAX_CODE_LENGTH) valid bits. */\r
-static BROTLI_INLINE uint32_t DecodeSymbol(uint32_t bits,\r
-                                           const HuffmanCode* table,\r
-                                           BrotliBitReader* br) {\r
-  table += bits & HUFFMAN_TABLE_MASK;\r
-  if (table->bits > HUFFMAN_TABLE_BITS) {\r
-    uint32_t nbits = table->bits - HUFFMAN_TABLE_BITS;\r
-    BrotliDropBits(br, HUFFMAN_TABLE_BITS);\r
-    table += table->value;\r
-    table += (bits >> HUFFMAN_TABLE_BITS) & BitMask(nbits);\r
-  }\r
-  BrotliDropBits(br, table->bits);\r
-  return table->value;\r
-}\r
-\r
-/* Reads and decodes the next Huffman code from bit-stream.\r
-   This method peeks 16 bits of input and drops 0 - 15 of them. */\r
-static BROTLI_INLINE uint32_t ReadSymbol(const HuffmanCode* table,\r
-                                         BrotliBitReader* br) {\r
-  return DecodeSymbol(BrotliGet16BitsUnmasked(br), table, br);\r
-}\r
-\r
-/* Same as DecodeSymbol, but it is known that there is less than 15 bits of\r
-   input are currently available. */\r
-static BROTLI_NOINLINE BROTLI_BOOL SafeDecodeSymbol(\r
-    const HuffmanCode* table, BrotliBitReader* br, uint32_t* result) {\r
-  uint32_t val;\r
-  uint32_t available_bits = BrotliGetAvailableBits(br);\r
-  if (available_bits == 0) {\r
-    if (table->bits == 0) {\r
-      *result = table->value;\r
-      return BROTLI_TRUE;\r
-    }\r
-    return BROTLI_FALSE;  /* No valid bits at all. */\r
-  }\r
-  val = (uint32_t)BrotliGetBitsUnmasked(br);\r
-  table += val & HUFFMAN_TABLE_MASK;\r
-  if (table->bits <= HUFFMAN_TABLE_BITS) {\r
-    if (table->bits <= available_bits) {\r
-      BrotliDropBits(br, table->bits);\r
-      *result = table->value;\r
-      return BROTLI_TRUE;\r
-    } else {\r
-      return BROTLI_FALSE;  /* Not enough bits for the first level. */\r
-    }\r
-  }\r
-  if (available_bits <= HUFFMAN_TABLE_BITS) {\r
-    return BROTLI_FALSE;  /* Not enough bits to move to the second level. */\r
-  }\r
-\r
-  /* Speculatively drop HUFFMAN_TABLE_BITS. */\r
-  val = (val & BitMask(table->bits)) >> HUFFMAN_TABLE_BITS;\r
-  available_bits -= HUFFMAN_TABLE_BITS;\r
-  table += table->value + val;\r
-  if (available_bits < table->bits) {\r
-    return BROTLI_FALSE;  /* Not enough bits for the second level. */\r
-  }\r
-\r
-  BrotliDropBits(br, HUFFMAN_TABLE_BITS + table->bits);\r
-  *result = table->value;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL SafeReadSymbol(\r
-    const HuffmanCode* table, BrotliBitReader* br, uint32_t* result) {\r
-  uint32_t val;\r
-  if (BROTLI_PREDICT_TRUE(BrotliSafeGetBits(br, 15, &val))) {\r
-    *result = DecodeSymbol(val, table, br);\r
-    return BROTLI_TRUE;\r
-  }\r
-  return SafeDecodeSymbol(table, br, result);\r
-}\r
-\r
-/* Makes a look-up in first level Huffman table. Peeks 8 bits. */\r
-static BROTLI_INLINE void PreloadSymbol(int safe,\r
-                                        const HuffmanCode* table,\r
-                                        BrotliBitReader* br,\r
-                                        uint32_t* bits,\r
-                                        uint32_t* value) {\r
-  if (safe) {\r
-    return;\r
-  }\r
-  table += BrotliGetBits(br, HUFFMAN_TABLE_BITS);\r
-  *bits = table->bits;\r
-  *value = table->value;\r
-}\r
-\r
-/* Decodes the next Huffman code using data prepared by PreloadSymbol.\r
-   Reads 0 - 15 bits. Also peeks 8 following bits. */\r
-static BROTLI_INLINE uint32_t ReadPreloadedSymbol(const HuffmanCode* table,\r
-                                                  BrotliBitReader* br,\r
-                                                  uint32_t* bits,\r
-                                                  uint32_t* value) {\r
-  uint32_t result = *value;\r
-  if (BROTLI_PREDICT_FALSE(*bits > HUFFMAN_TABLE_BITS)) {\r
-    uint32_t val = BrotliGet16BitsUnmasked(br);\r
-    const HuffmanCode* ext = table + (val & HUFFMAN_TABLE_MASK) + *value;\r
-    uint32_t mask = BitMask((*bits - HUFFMAN_TABLE_BITS));\r
-    BrotliDropBits(br, HUFFMAN_TABLE_BITS);\r
-    ext += (val >> HUFFMAN_TABLE_BITS) & mask;\r
-    BrotliDropBits(br, ext->bits);\r
-    result = ext->value;\r
-  } else {\r
-    BrotliDropBits(br, *bits);\r
-  }\r
-  PreloadSymbol(0, table, br, bits, value);\r
-  return result;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t Log2Floor(uint32_t x) {\r
-  uint32_t result = 0;\r
-  while (x) {\r
-    x >>= 1;\r
-    ++result;\r
-  }\r
-  return result;\r
-}\r
-\r
-/* Reads (s->symbol + 1) symbols.\r
-   Totally 1..4 symbols are read, 1..11 bits each.\r
-   The list of symbols MUST NOT contain duplicates. */\r
-static BrotliDecoderErrorCode ReadSimpleHuffmanSymbols(\r
-    uint32_t alphabet_size, uint32_t max_symbol, BrotliDecoderState* s) {\r
-  /* max_bits == 1..11; symbol == 0..3; 1..44 bits will be read. */\r
-  BrotliBitReader* br = &s->br;\r
-  uint32_t max_bits = Log2Floor(alphabet_size - 1);\r
-  uint32_t i = s->sub_loop_counter;\r
-  uint32_t num_symbols = s->symbol;\r
-  while (i <= num_symbols) {\r
-    uint32_t v;\r
-    if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, max_bits, &v))) {\r
-      s->sub_loop_counter = i;\r
-      s->substate_huffman = BROTLI_STATE_HUFFMAN_SIMPLE_READ;\r
-      return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-    }\r
-    if (v >= max_symbol) {\r
-      return\r
-          BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET);\r
-    }\r
-    s->symbols_lists_array[i] = (uint16_t)v;\r
-    BROTLI_LOG_UINT(s->symbols_lists_array[i]);\r
-    ++i;\r
-  }\r
-\r
-  for (i = 0; i < num_symbols; ++i) {\r
-    uint32_t k = i + 1;\r
-    for (; k <= num_symbols; ++k) {\r
-      if (s->symbols_lists_array[i] == s->symbols_lists_array[k]) {\r
-        return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME);\r
-      }\r
-    }\r
-  }\r
-\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-/* Process single decoded symbol code length:\r
-    A) reset the repeat variable\r
-    B) remember code length (if it is not 0)\r
-    C) extend corresponding index-chain\r
-    D) reduce the Huffman space\r
-    E) update the histogram */\r
-static BROTLI_INLINE void ProcessSingleCodeLength(uint32_t code_len,\r
-    uint32_t* symbol, uint32_t* repeat, uint32_t* space,\r
-    uint32_t* prev_code_len, uint16_t* symbol_lists,\r
-    uint16_t* code_length_histo, int* next_symbol) {\r
-  *repeat = 0;\r
-  if (code_len != 0) {  /* code_len == 1..15 */\r
-    symbol_lists[next_symbol[code_len]] = (uint16_t)(*symbol);\r
-    next_symbol[code_len] = (int)(*symbol);\r
-    *prev_code_len = code_len;\r
-    *space -= 32768U >> code_len;\r
-    code_length_histo[code_len]++;\r
-    BROTLI_LOG(("[ReadHuffmanCode] code_length[%d] = %d\n",\r
-        (int)*symbol, (int)code_len));\r
-  }\r
-  (*symbol)++;\r
-}\r
-\r
-/* Process repeated symbol code length.\r
-    A) Check if it is the extension of previous repeat sequence; if the decoded\r
-       value is not BROTLI_REPEAT_PREVIOUS_CODE_LENGTH, then it is a new\r
-       symbol-skip\r
-    B) Update repeat variable\r
-    C) Check if operation is feasible (fits alphabet)\r
-    D) For each symbol do the same operations as in ProcessSingleCodeLength\r
-\r
-   PRECONDITION: code_len == BROTLI_REPEAT_PREVIOUS_CODE_LENGTH or\r
-                 code_len == BROTLI_REPEAT_ZERO_CODE_LENGTH */\r
-static BROTLI_INLINE void ProcessRepeatedCodeLength(uint32_t code_len,\r
-    uint32_t repeat_delta, uint32_t alphabet_size, uint32_t* symbol,\r
-    uint32_t* repeat, uint32_t* space, uint32_t* prev_code_len,\r
-    uint32_t* repeat_code_len, uint16_t* symbol_lists,\r
-    uint16_t* code_length_histo, int* next_symbol) {\r
-  uint32_t old_repeat;\r
-  uint32_t extra_bits = 3;  /* for BROTLI_REPEAT_ZERO_CODE_LENGTH */\r
-  uint32_t new_len = 0;  /* for BROTLI_REPEAT_ZERO_CODE_LENGTH */\r
-  if (code_len == BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) {\r
-    new_len = *prev_code_len;\r
-    extra_bits = 2;\r
-  }\r
-  if (*repeat_code_len != new_len) {\r
-    *repeat = 0;\r
-    *repeat_code_len = new_len;\r
-  }\r
-  old_repeat = *repeat;\r
-  if (*repeat > 0) {\r
-    *repeat -= 2;\r
-    *repeat <<= extra_bits;\r
-  }\r
-  *repeat += repeat_delta + 3U;\r
-  repeat_delta = *repeat - old_repeat;\r
-  if (*symbol + repeat_delta > alphabet_size) {\r
-    BROTLI_DUMP();\r
-    *symbol = alphabet_size;\r
-    *space = 0xFFFFF;\r
-    return;\r
-  }\r
-  BROTLI_LOG(("[ReadHuffmanCode] code_length[%d..%d] = %d\n",\r
-      (int)*symbol, (int)(*symbol + repeat_delta - 1), (int)*repeat_code_len));\r
-  if (*repeat_code_len != 0) {\r
-    unsigned last = *symbol + repeat_delta;\r
-    int next = next_symbol[*repeat_code_len];\r
-    do {\r
-      symbol_lists[next] = (uint16_t)*symbol;\r
-      next = (int)*symbol;\r
-    } while (++(*symbol) != last);\r
-    next_symbol[*repeat_code_len] = next;\r
-    *space -= repeat_delta << (15 - *repeat_code_len);\r
-    code_length_histo[*repeat_code_len] =\r
-        (uint16_t)(code_length_histo[*repeat_code_len] + repeat_delta);\r
-  } else {\r
-    *symbol += repeat_delta;\r
-  }\r
-}\r
-\r
-/* Reads and decodes symbol codelengths. */\r
-static BrotliDecoderErrorCode ReadSymbolCodeLengths(\r
-    uint32_t alphabet_size, BrotliDecoderState* s) {\r
-  BrotliBitReader* br = &s->br;\r
-  uint32_t symbol = s->symbol;\r
-  uint32_t repeat = s->repeat;\r
-  uint32_t space = s->space;\r
-  uint32_t prev_code_len = s->prev_code_len;\r
-  uint32_t repeat_code_len = s->repeat_code_len;\r
-  uint16_t* symbol_lists = s->symbol_lists;\r
-  uint16_t* code_length_histo = s->code_length_histo;\r
-  int* next_symbol = s->next_symbol;\r
-  if (!BrotliWarmupBitReader(br)) {\r
-    return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-  }\r
-  while (symbol < alphabet_size && space > 0) {\r
-    const HuffmanCode* p = s->table;\r
-    uint32_t code_len;\r
-    if (!BrotliCheckInputAmount(br, BROTLI_SHORT_FILL_BIT_WINDOW_READ)) {\r
-      s->symbol = symbol;\r
-      s->repeat = repeat;\r
-      s->prev_code_len = prev_code_len;\r
-      s->repeat_code_len = repeat_code_len;\r
-      s->space = space;\r
-      return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-    }\r
-    BrotliFillBitWindow16(br);\r
-    p += BrotliGetBitsUnmasked(br) &\r
-        BitMask(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH);\r
-    BrotliDropBits(br, p->bits);  /* Use 1..5 bits. */\r
-    code_len = p->value;  /* code_len == 0..17 */\r
-    if (code_len < BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) {\r
-      ProcessSingleCodeLength(code_len, &symbol, &repeat, &space,\r
-          &prev_code_len, symbol_lists, code_length_histo, next_symbol);\r
-    } else {  /* code_len == 16..17, extra_bits == 2..3 */\r
-      uint32_t extra_bits =\r
-          (code_len == BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) ? 2 : 3;\r
-      uint32_t repeat_delta =\r
-          (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(extra_bits);\r
-      BrotliDropBits(br, extra_bits);\r
-      ProcessRepeatedCodeLength(code_len, repeat_delta, alphabet_size,\r
-          &symbol, &repeat, &space, &prev_code_len, &repeat_code_len,\r
-          symbol_lists, code_length_histo, next_symbol);\r
-    }\r
-  }\r
-  s->space = space;\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-static BrotliDecoderErrorCode SafeReadSymbolCodeLengths(\r
-    uint32_t alphabet_size, BrotliDecoderState* s) {\r
-  BrotliBitReader* br = &s->br;\r
-  BROTLI_BOOL get_byte = BROTLI_FALSE;\r
-  while (s->symbol < alphabet_size && s->space > 0) {\r
-    const HuffmanCode* p = s->table;\r
-    uint32_t code_len;\r
-    uint32_t available_bits;\r
-    uint32_t bits = 0;\r
-    if (get_byte && !BrotliPullByte(br)) return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-    get_byte = BROTLI_FALSE;\r
-    available_bits = BrotliGetAvailableBits(br);\r
-    if (available_bits != 0) {\r
-      bits = (uint32_t)BrotliGetBitsUnmasked(br);\r
-    }\r
-    p += bits & BitMask(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH);\r
-    if (p->bits > available_bits) {\r
-      get_byte = BROTLI_TRUE;\r
-      continue;\r
-    }\r
-    code_len = p->value;  /* code_len == 0..17 */\r
-    if (code_len < BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) {\r
-      BrotliDropBits(br, p->bits);\r
-      ProcessSingleCodeLength(code_len, &s->symbol, &s->repeat, &s->space,\r
-          &s->prev_code_len, s->symbol_lists, s->code_length_histo,\r
-          s->next_symbol);\r
-    } else {  /* code_len == 16..17, extra_bits == 2..3 */\r
-      uint32_t extra_bits = code_len - 14U;\r
-      uint32_t repeat_delta = (bits >> p->bits) & BitMask(extra_bits);\r
-      if (available_bits < p->bits + extra_bits) {\r
-        get_byte = BROTLI_TRUE;\r
-        continue;\r
-      }\r
-      BrotliDropBits(br, p->bits + extra_bits);\r
-      ProcessRepeatedCodeLength(code_len, repeat_delta, alphabet_size,\r
-          &s->symbol, &s->repeat, &s->space, &s->prev_code_len,\r
-          &s->repeat_code_len, s->symbol_lists, s->code_length_histo,\r
-          s->next_symbol);\r
-    }\r
-  }\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-/* Reads and decodes 15..18 codes using static prefix code.\r
-   Each code is 2..4 bits long. In total 30..72 bits are used. */\r
-static BrotliDecoderErrorCode ReadCodeLengthCodeLengths(BrotliDecoderState* s) {\r
-  BrotliBitReader* br = &s->br;\r
-  uint32_t num_codes = s->repeat;\r
-  unsigned space = s->space;\r
-  uint32_t i = s->sub_loop_counter;\r
-  for (; i < BROTLI_CODE_LENGTH_CODES; ++i) {\r
-    const uint8_t code_len_idx = kCodeLengthCodeOrder[i];\r
-    uint32_t ix;\r
-    uint32_t v;\r
-    if (BROTLI_PREDICT_FALSE(!BrotliSafeGetBits(br, 4, &ix))) {\r
-      uint32_t available_bits = BrotliGetAvailableBits(br);\r
-      if (available_bits != 0) {\r
-        ix = BrotliGetBitsUnmasked(br) & 0xF;\r
-      } else {\r
-        ix = 0;\r
-      }\r
-      if (kCodeLengthPrefixLength[ix] > available_bits) {\r
-        s->sub_loop_counter = i;\r
-        s->repeat = num_codes;\r
-        s->space = space;\r
-        s->substate_huffman = BROTLI_STATE_HUFFMAN_COMPLEX;\r
-        return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-      }\r
-    }\r
-    v = kCodeLengthPrefixValue[ix];\r
-    BrotliDropBits(br, kCodeLengthPrefixLength[ix]);\r
-    s->code_length_code_lengths[code_len_idx] = (uint8_t)v;\r
-    BROTLI_LOG_ARRAY_INDEX(s->code_length_code_lengths, code_len_idx);\r
-    if (v != 0) {\r
-      space = space - (32U >> v);\r
-      ++num_codes;\r
-      ++s->code_length_histo[v];\r
-      if (space - 1U >= 32U) {\r
-        /* space is 0 or wrapped around. */\r
-        break;\r
-      }\r
-    }\r
-  }\r
-  if (!(num_codes == 1 || space == 0)) {\r
-    return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_CL_SPACE);\r
-  }\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-/* Decodes the Huffman tables.\r
-   There are 2 scenarios:\r
-    A) Huffman code contains only few symbols (1..4). Those symbols are read\r
-       directly; their code lengths are defined by the number of symbols.\r
-       For this scenario 4 - 49 bits will be read.\r
-\r
-    B) 2-phase decoding:\r
-    B.1) Small Huffman table is decoded; it is specified with code lengths\r
-         encoded with predefined entropy code. 32 - 74 bits are used.\r
-    B.2) Decoded table is used to decode code lengths of symbols in resulting\r
-         Huffman table. In worst case 3520 bits are read. */\r
-static BrotliDecoderErrorCode ReadHuffmanCode(uint32_t alphabet_size,\r
-                                              uint32_t max_symbol,\r
-                                              HuffmanCode* table,\r
-                                              uint32_t* opt_table_size,\r
-                                              BrotliDecoderState* s) {\r
-  BrotliBitReader* br = &s->br;\r
-  /* Unnecessary masking, but might be good for safety. */\r
-  alphabet_size &= 0x7FF;\r
-  /* State machine. */\r
-  for (;;) {\r
-    switch (s->substate_huffman) {\r
-      case BROTLI_STATE_HUFFMAN_NONE:\r
-        if (!BrotliSafeReadBits(br, 2, &s->sub_loop_counter)) {\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        BROTLI_LOG_UINT(s->sub_loop_counter);\r
-        /* The value is used as follows:\r
-           1 for simple code;\r
-           0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\r
-        if (s->sub_loop_counter != 1) {\r
-          s->space = 32;\r
-          s->repeat = 0;  /* num_codes */\r
-          memset(&s->code_length_histo[0], 0, sizeof(s->code_length_histo[0]) *\r
-              (BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH + 1));\r
-          memset(&s->code_length_code_lengths[0], 0,\r
-              sizeof(s->code_length_code_lengths));\r
-          s->substate_huffman = BROTLI_STATE_HUFFMAN_COMPLEX;\r
-          continue;\r
-        }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_HUFFMAN_SIMPLE_SIZE:\r
-        /* Read symbols, codes & code lengths directly. */\r
-        if (!BrotliSafeReadBits(br, 2, &s->symbol)) {  /* num_symbols */\r
-          s->substate_huffman = BROTLI_STATE_HUFFMAN_SIMPLE_SIZE;\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        s->sub_loop_counter = 0;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_HUFFMAN_SIMPLE_READ: {\r
-        BrotliDecoderErrorCode result =\r
-            ReadSimpleHuffmanSymbols(alphabet_size, max_symbol, s);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          return result;\r
-        }\r
-      }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_HUFFMAN_SIMPLE_BUILD: {\r
-        uint32_t table_size;\r
-        if (s->symbol == 3) {\r
-          uint32_t bits;\r
-          if (!BrotliSafeReadBits(br, 1, &bits)) {\r
-            s->substate_huffman = BROTLI_STATE_HUFFMAN_SIMPLE_BUILD;\r
-            return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          }\r
-          s->symbol += bits;\r
-        }\r
-        BROTLI_LOG_UINT(s->symbol);\r
-        table_size = BrotliBuildSimpleHuffmanTable(\r
-            table, HUFFMAN_TABLE_BITS, s->symbols_lists_array, s->symbol);\r
-        if (opt_table_size) {\r
-          *opt_table_size = table_size;\r
-        }\r
-        s->substate_huffman = BROTLI_STATE_HUFFMAN_NONE;\r
-        return BROTLI_DECODER_SUCCESS;\r
-      }\r
-\r
-      /* Decode Huffman-coded code lengths. */\r
-      case BROTLI_STATE_HUFFMAN_COMPLEX: {\r
-        uint32_t i;\r
-        BrotliDecoderErrorCode result = ReadCodeLengthCodeLengths(s);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          return result;\r
-        }\r
-        BrotliBuildCodeLengthsHuffmanTable(s->table,\r
-                                           s->code_length_code_lengths,\r
-                                           s->code_length_histo);\r
-        memset(&s->code_length_histo[0], 0, sizeof(s->code_length_histo));\r
-        for (i = 0; i <= BROTLI_HUFFMAN_MAX_CODE_LENGTH; ++i) {\r
-          s->next_symbol[i] = (int)i - (BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1);\r
-          s->symbol_lists[s->next_symbol[i]] = 0xFFFF;\r
-        }\r
-\r
-        s->symbol = 0;\r
-        s->prev_code_len = BROTLI_INITIAL_REPEATED_CODE_LENGTH;\r
-        s->repeat = 0;\r
-        s->repeat_code_len = 0;\r
-        s->space = 32768;\r
-        s->substate_huffman = BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS;\r
-      }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS: {\r
-        uint32_t table_size;\r
-        BrotliDecoderErrorCode result = ReadSymbolCodeLengths(max_symbol, s);\r
-        if (result == BROTLI_DECODER_NEEDS_MORE_INPUT) {\r
-          result = SafeReadSymbolCodeLengths(max_symbol, s);\r
-        }\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          return result;\r
-        }\r
-\r
-        if (s->space != 0) {\r
-          BROTLI_LOG(("[ReadHuffmanCode] space = %d\n", (int)s->space));\r
-          return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE);\r
-        }\r
-        table_size = BrotliBuildHuffmanTable(\r
-            table, HUFFMAN_TABLE_BITS, s->symbol_lists, s->code_length_histo);\r
-        if (opt_table_size) {\r
-          *opt_table_size = table_size;\r
-        }\r
-        s->substate_huffman = BROTLI_STATE_HUFFMAN_NONE;\r
-        return BROTLI_DECODER_SUCCESS;\r
-      }\r
-\r
-      default:\r
-        return\r
-            BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE);\r
-    }\r
-  }\r
-}\r
-\r
-/* Decodes a block length by reading 3..39 bits. */\r
-static BROTLI_INLINE uint32_t ReadBlockLength(const HuffmanCode* table,\r
-                                              BrotliBitReader* br) {\r
-  uint32_t code;\r
-  uint32_t nbits;\r
-  code = ReadSymbol(table, br);\r
-  nbits = kBlockLengthPrefixCode[code].nbits;  /* nbits == 2..24 */\r
-  return kBlockLengthPrefixCode[code].offset + BrotliReadBits(br, nbits);\r
-}\r
-\r
-/* WARNING: if state is not BROTLI_STATE_READ_BLOCK_LENGTH_NONE, then\r
-   reading can't be continued with ReadBlockLength. */\r
-static BROTLI_INLINE BROTLI_BOOL SafeReadBlockLength(\r
-    BrotliDecoderState* s, uint32_t* result, const HuffmanCode* table,\r
-    BrotliBitReader* br) {\r
-  uint32_t index;\r
-  if (s->substate_read_block_length == BROTLI_STATE_READ_BLOCK_LENGTH_NONE) {\r
-    if (!SafeReadSymbol(table, br, &index)) {\r
-      return BROTLI_FALSE;\r
-    }\r
-  } else {\r
-    index = s->block_length_index;\r
-  }\r
-  {\r
-    uint32_t bits;\r
-    uint32_t nbits = kBlockLengthPrefixCode[index].nbits;  /* nbits == 2..24 */\r
-    if (!BrotliSafeReadBits(br, nbits, &bits)) {\r
-      s->block_length_index = index;\r
-      s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_SUFFIX;\r
-      return BROTLI_FALSE;\r
-    }\r
-    *result = kBlockLengthPrefixCode[index].offset + bits;\r
-    s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE;\r
-    return BROTLI_TRUE;\r
-  }\r
-}\r
-\r
-/* Transform:\r
-    1) initialize list L with values 0, 1,... 255\r
-    2) For each input element X:\r
-    2.1) let Y = L[X]\r
-    2.2) remove X-th element from L\r
-    2.3) prepend Y to L\r
-    2.4) append Y to output\r
-\r
-   In most cases max(Y) <= 7, so most of L remains intact.\r
-   To reduce the cost of initialization, we reuse L, remember the upper bound\r
-   of Y values, and reinitialize only first elements in L.\r
-\r
-   Most of input values are 0 and 1. To reduce number of branches, we replace\r
-   inner for loop with do-while. */\r
-static BROTLI_NOINLINE void InverseMoveToFrontTransform(\r
-    uint8_t* v, uint32_t v_len, BrotliDecoderState* state) {\r
-  /* Reinitialize elements that could have been changed. */\r
-  uint32_t i = 1;\r
-  uint32_t upper_bound = state->mtf_upper_bound;\r
-  uint32_t* mtf = &state->mtf[1];  /* Make mtf[-1] addressable. */\r
-  uint8_t* mtf_u8 = (uint8_t*)mtf;\r
-  /* Load endian-aware constant. */\r
-  const uint8_t b0123[4] = {0, 1, 2, 3};\r
-  uint32_t pattern;\r
-  memcpy(&pattern, &b0123, 4);\r
-\r
-  /* Initialize list using 4 consequent values pattern. */\r
-  mtf[0] = pattern;\r
-  do {\r
-    pattern += 0x04040404;  /* Advance all 4 values by 4. */\r
-    mtf[i] = pattern;\r
-    i++;\r
-  } while (i <= upper_bound);\r
-\r
-  /* Transform the input. */\r
-  upper_bound = 0;\r
-  for (i = 0; i < v_len; ++i) {\r
-    int index = v[i];\r
-    uint8_t value = mtf_u8[index];\r
-    upper_bound |= v[i];\r
-    v[i] = value;\r
-    mtf_u8[-1] = value;\r
-    do {\r
-      index--;\r
-      mtf_u8[index + 1] = mtf_u8[index];\r
-    } while (index >= 0);\r
-  }\r
-  /* Remember amount of elements to be reinitialized. */\r
-  state->mtf_upper_bound = upper_bound >> 2;\r
-}\r
-\r
-/* Decodes a series of Huffman table using ReadHuffmanCode function. */\r
-static BrotliDecoderErrorCode HuffmanTreeGroupDecode(\r
-    HuffmanTreeGroup* group, BrotliDecoderState* s) {\r
-  if (s->substate_tree_group != BROTLI_STATE_TREE_GROUP_LOOP) {\r
-    s->next = group->codes;\r
-    s->htree_index = 0;\r
-    s->substate_tree_group = BROTLI_STATE_TREE_GROUP_LOOP;\r
-  }\r
-  while (s->htree_index < group->num_htrees) {\r
-    uint32_t table_size;\r
-    BrotliDecoderErrorCode result =\r
-        ReadHuffmanCode(group->alphabet_size, group->max_symbol,\r
-                        s->next, &table_size, s);\r
-    if (result != BROTLI_DECODER_SUCCESS) return result;\r
-    group->htrees[s->htree_index] = s->next;\r
-    s->next += table_size;\r
-    ++s->htree_index;\r
-  }\r
-  s->substate_tree_group = BROTLI_STATE_TREE_GROUP_NONE;\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-/* Decodes a context map.\r
-   Decoding is done in 4 phases:\r
-    1) Read auxiliary information (6..16 bits) and allocate memory.\r
-       In case of trivial context map, decoding is finished at this phase.\r
-    2) Decode Huffman table using ReadHuffmanCode function.\r
-       This table will be used for reading context map items.\r
-    3) Read context map items; "0" values could be run-length encoded.\r
-    4) Optionally, apply InverseMoveToFront transform to the resulting map. */\r
-static BrotliDecoderErrorCode DecodeContextMap(uint32_t context_map_size,\r
-                                               uint32_t* num_htrees,\r
-                                               uint8_t** context_map_arg,\r
-                                               BrotliDecoderState* s) {\r
-  BrotliBitReader* br = &s->br;\r
-  BrotliDecoderErrorCode result = BROTLI_DECODER_SUCCESS;\r
-\r
-  switch ((int)s->substate_context_map) {\r
-    case BROTLI_STATE_CONTEXT_MAP_NONE:\r
-      result = DecodeVarLenUint8(s, br, num_htrees);\r
-      if (result != BROTLI_DECODER_SUCCESS) {\r
-        return result;\r
-      }\r
-      (*num_htrees)++;\r
-      s->context_index = 0;\r
-      BROTLI_LOG_UINT(context_map_size);\r
-      BROTLI_LOG_UINT(*num_htrees);\r
-      *context_map_arg =\r
-          (uint8_t*)BROTLI_DECODER_ALLOC(s, (size_t)context_map_size);\r
-      if (*context_map_arg == 0) {\r
-        return BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP);\r
-      }\r
-      if (*num_htrees <= 1) {\r
-        memset(*context_map_arg, 0, (size_t)context_map_size);\r
-        return BROTLI_DECODER_SUCCESS;\r
-      }\r
-      s->substate_context_map = BROTLI_STATE_CONTEXT_MAP_READ_PREFIX;\r
-    /* Fall through. */\r
-\r
-    case BROTLI_STATE_CONTEXT_MAP_READ_PREFIX: {\r
-      uint32_t bits;\r
-      /* In next stage ReadHuffmanCode uses at least 4 bits, so it is safe\r
-         to peek 4 bits ahead. */\r
-      if (!BrotliSafeGetBits(br, 5, &bits)) {\r
-        return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-      }\r
-      if ((bits & 1) != 0) { /* Use RLE for zeros. */\r
-        s->max_run_length_prefix = (bits >> 1) + 1;\r
-        BrotliDropBits(br, 5);\r
-      } else {\r
-        s->max_run_length_prefix = 0;\r
-        BrotliDropBits(br, 1);\r
-      }\r
-      BROTLI_LOG_UINT(s->max_run_length_prefix);\r
-      s->substate_context_map = BROTLI_STATE_CONTEXT_MAP_HUFFMAN;\r
-    }\r
-    /* Fall through. */\r
-\r
-    case BROTLI_STATE_CONTEXT_MAP_HUFFMAN: {\r
-      uint32_t alphabet_size = *num_htrees + s->max_run_length_prefix;\r
-      result = ReadHuffmanCode(alphabet_size, alphabet_size,\r
-                               s->context_map_table, NULL, s);\r
-      if (result != BROTLI_DECODER_SUCCESS) return result;\r
-      s->code = 0xFFFF;\r
-      s->substate_context_map = BROTLI_STATE_CONTEXT_MAP_DECODE;\r
-    }\r
-    /* Fall through. */\r
-\r
-    case BROTLI_STATE_CONTEXT_MAP_DECODE: {\r
-      uint32_t context_index = s->context_index;\r
-      uint32_t max_run_length_prefix = s->max_run_length_prefix;\r
-      uint8_t* context_map = *context_map_arg;\r
-      uint32_t code = s->code;\r
-      BROTLI_BOOL skip_preamble = (code != 0xFFFF);\r
-      while (context_index < context_map_size || skip_preamble) {\r
-        if (!skip_preamble) {\r
-          if (!SafeReadSymbol(s->context_map_table, br, &code)) {\r
-            s->code = 0xFFFF;\r
-            s->context_index = context_index;\r
-            return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          }\r
-          BROTLI_LOG_UINT(code);\r
-\r
-          if (code == 0) {\r
-            context_map[context_index++] = 0;\r
-            continue;\r
-          }\r
-          if (code > max_run_length_prefix) {\r
-            context_map[context_index++] =\r
-                (uint8_t)(code - max_run_length_prefix);\r
-            continue;\r
-          }\r
-        } else {\r
-          skip_preamble = BROTLI_FALSE;\r
-        }\r
-        /* RLE sub-stage. */\r
-        {\r
-          uint32_t reps;\r
-          if (!BrotliSafeReadBits(br, code, &reps)) {\r
-            s->code = code;\r
-            s->context_index = context_index;\r
-            return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          }\r
-          reps += 1U << code;\r
-          BROTLI_LOG_UINT(reps);\r
-          if (context_index + reps > context_map_size) {\r
-            return\r
-                BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT);\r
-          }\r
-          do {\r
-            context_map[context_index++] = 0;\r
-          } while (--reps);\r
-        }\r
-      }\r
-    }\r
-    /* Fall through. */\r
-\r
-    case BROTLI_STATE_CONTEXT_MAP_TRANSFORM: {\r
-      uint32_t bits;\r
-      if (!BrotliSafeReadBits(br, 1, &bits)) {\r
-        s->substate_context_map = BROTLI_STATE_CONTEXT_MAP_TRANSFORM;\r
-        return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-      }\r
-      if (bits != 0) {\r
-        InverseMoveToFrontTransform(*context_map_arg, context_map_size, s);\r
-      }\r
-      s->substate_context_map = BROTLI_STATE_CONTEXT_MAP_NONE;\r
-      return BROTLI_DECODER_SUCCESS;\r
-    }\r
-\r
-    default:\r
-      return\r
-          BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE);\r
-  }\r
-}\r
-\r
-/* Decodes a command or literal and updates block type ring-buffer.\r
-   Reads 3..54 bits. */\r
-static BROTLI_INLINE BROTLI_BOOL DecodeBlockTypeAndLength(\r
-    int safe, BrotliDecoderState* s, int tree_type) {\r
-  uint32_t max_block_type = s->num_block_types[tree_type];\r
-  const HuffmanCode* type_tree = &s->block_type_trees[\r
-      tree_type * BROTLI_HUFFMAN_MAX_SIZE_258];\r
-  const HuffmanCode* len_tree = &s->block_len_trees[\r
-      tree_type * BROTLI_HUFFMAN_MAX_SIZE_26];\r
-  BrotliBitReader* br = &s->br;\r
-  uint32_t* ringbuffer = &s->block_type_rb[tree_type * 2];\r
-  uint32_t block_type;\r
-  if (max_block_type <= 1) {\r
-    return BROTLI_FALSE;\r
-  }\r
-\r
-  /* Read 0..15 + 3..39 bits. */\r
-  if (!safe) {\r
-    block_type = ReadSymbol(type_tree, br);\r
-    s->block_length[tree_type] = ReadBlockLength(len_tree, br);\r
-  } else {\r
-    BrotliBitReaderState memento;\r
-    BrotliBitReaderSaveState(br, &memento);\r
-    if (!SafeReadSymbol(type_tree, br, &block_type)) return BROTLI_FALSE;\r
-    if (!SafeReadBlockLength(s, &s->block_length[tree_type], len_tree, br)) {\r
-      s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE;\r
-      BrotliBitReaderRestoreState(br, &memento);\r
-      return BROTLI_FALSE;\r
-    }\r
-  }\r
-\r
-  if (block_type == 1) {\r
-    block_type = ringbuffer[1] + 1;\r
-  } else if (block_type == 0) {\r
-    block_type = ringbuffer[0];\r
-  } else {\r
-    block_type -= 2;\r
-  }\r
-  if (block_type >= max_block_type) {\r
-    block_type -= max_block_type;\r
-  }\r
-  ringbuffer[0] = ringbuffer[1];\r
-  ringbuffer[1] = block_type;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_INLINE void DetectTrivialLiteralBlockTypes(\r
-    BrotliDecoderState* s) {\r
-  size_t i;\r
-  for (i = 0; i < 8; ++i) s->trivial_literal_contexts[i] = 0;\r
-  for (i = 0; i < s->num_block_types[0]; i++) {\r
-    size_t offset = i << BROTLI_LITERAL_CONTEXT_BITS;\r
-    size_t error = 0;\r
-    size_t sample = s->context_map[offset];\r
-    size_t j;\r
-    for (j = 0; j < (1u << BROTLI_LITERAL_CONTEXT_BITS);) {\r
-      BROTLI_REPEAT(4, error |= s->context_map[offset + j++] ^ sample;)\r
-    }\r
-    if (error == 0) {\r
-      s->trivial_literal_contexts[i >> 5] |= 1u << (i & 31);\r
-    }\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void PrepareLiteralDecoding(BrotliDecoderState* s) {\r
-  uint8_t context_mode;\r
-  size_t trivial;\r
-  uint32_t block_type = s->block_type_rb[1];\r
-  uint32_t context_offset = block_type << BROTLI_LITERAL_CONTEXT_BITS;\r
-  s->context_map_slice = s->context_map + context_offset;\r
-  trivial = s->trivial_literal_contexts[block_type >> 5];\r
-  s->trivial_literal_context = (trivial >> (block_type & 31)) & 1;\r
-  s->literal_htree = s->literal_hgroup.htrees[s->context_map_slice[0]];\r
-  context_mode = s->context_modes[block_type] & 3;\r
-  s->context_lookup = BROTLI_CONTEXT_LUT(context_mode);\r
-}\r
-\r
-/* Decodes the block type and updates the state for literal context.\r
-   Reads 3..54 bits. */\r
-static BROTLI_INLINE BROTLI_BOOL DecodeLiteralBlockSwitchInternal(\r
-    int safe, BrotliDecoderState* s) {\r
-  if (!DecodeBlockTypeAndLength(safe, s, 0)) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  PrepareLiteralDecoding(s);\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static void BROTLI_NOINLINE DecodeLiteralBlockSwitch(BrotliDecoderState* s) {\r
-  DecodeLiteralBlockSwitchInternal(0, s);\r
-}\r
-\r
-static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeLiteralBlockSwitch(\r
-    BrotliDecoderState* s) {\r
-  return DecodeLiteralBlockSwitchInternal(1, s);\r
-}\r
-\r
-/* Block switch for insert/copy length.\r
-   Reads 3..54 bits. */\r
-static BROTLI_INLINE BROTLI_BOOL DecodeCommandBlockSwitchInternal(\r
-    int safe, BrotliDecoderState* s) {\r
-  if (!DecodeBlockTypeAndLength(safe, s, 1)) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  s->htree_command = s->insert_copy_hgroup.htrees[s->block_type_rb[3]];\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static void BROTLI_NOINLINE DecodeCommandBlockSwitch(BrotliDecoderState* s) {\r
-  DecodeCommandBlockSwitchInternal(0, s);\r
-}\r
-\r
-static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeCommandBlockSwitch(\r
-    BrotliDecoderState* s) {\r
-  return DecodeCommandBlockSwitchInternal(1, s);\r
-}\r
-\r
-/* Block switch for distance codes.\r
-   Reads 3..54 bits. */\r
-static BROTLI_INLINE BROTLI_BOOL DecodeDistanceBlockSwitchInternal(\r
-    int safe, BrotliDecoderState* s) {\r
-  if (!DecodeBlockTypeAndLength(safe, s, 2)) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  s->dist_context_map_slice = s->dist_context_map +\r
-      (s->block_type_rb[5] << BROTLI_DISTANCE_CONTEXT_BITS);\r
-  s->dist_htree_index = s->dist_context_map_slice[s->distance_context];\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static void BROTLI_NOINLINE DecodeDistanceBlockSwitch(BrotliDecoderState* s) {\r
-  DecodeDistanceBlockSwitchInternal(0, s);\r
-}\r
-\r
-static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeDistanceBlockSwitch(\r
-    BrotliDecoderState* s) {\r
-  return DecodeDistanceBlockSwitchInternal(1, s);\r
-}\r
-\r
-static size_t UnwrittenBytes(const BrotliDecoderState* s, BROTLI_BOOL wrap) {\r
-  size_t pos = wrap && s->pos > s->ringbuffer_size ?\r
-      (size_t)s->ringbuffer_size : (size_t)(s->pos);\r
-  size_t partial_pos_rb = (s->rb_roundtrips * (size_t)s->ringbuffer_size) + pos;\r
-  return partial_pos_rb - s->partial_pos_out;\r
-}\r
-\r
-/* Dumps output.\r
-   Returns BROTLI_DECODER_NEEDS_MORE_OUTPUT only if there is more output to push\r
-   and either ring-buffer is as big as window size, or |force| is true. */\r
-static BrotliDecoderErrorCode BROTLI_NOINLINE WriteRingBuffer(\r
-    BrotliDecoderState* s, size_t* available_out, uint8_t** next_out,\r
-    size_t* total_out, BROTLI_BOOL force) {\r
-  uint8_t* start =\r
-      s->ringbuffer + (s->partial_pos_out & (size_t)s->ringbuffer_mask);\r
-  size_t to_write = UnwrittenBytes(s, BROTLI_TRUE);\r
-  size_t num_written = *available_out;\r
-  if (num_written > to_write) {\r
-    num_written = to_write;\r
-  }\r
-  if (s->meta_block_remaining_len < 0) {\r
-    return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1);\r
-  }\r
-  if (next_out && !*next_out) {\r
-    *next_out = start;\r
-  } else {\r
-    if (next_out) {\r
-      memcpy(*next_out, start, num_written);\r
-      *next_out += num_written;\r
-    }\r
-  }\r
-  *available_out -= num_written;\r
-  BROTLI_LOG_UINT(to_write);\r
-  BROTLI_LOG_UINT(num_written);\r
-  s->partial_pos_out += num_written;\r
-  if (total_out) {\r
-    *total_out = s->partial_pos_out;\r
-  }\r
-  if (num_written < to_write) {\r
-    if (s->ringbuffer_size == (1 << s->window_bits) || force) {\r
-      return BROTLI_DECODER_NEEDS_MORE_OUTPUT;\r
-    } else {\r
-      return BROTLI_DECODER_SUCCESS;\r
-    }\r
-  }\r
-  /* Wrap ring buffer only if it has reached its maximal size. */\r
-  if (s->ringbuffer_size == (1 << s->window_bits) &&\r
-      s->pos >= s->ringbuffer_size) {\r
-    s->pos -= s->ringbuffer_size;\r
-    s->rb_roundtrips++;\r
-    s->should_wrap_ringbuffer = (size_t)s->pos != 0 ? 1 : 0;\r
-  }\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-static void BROTLI_NOINLINE WrapRingBuffer(BrotliDecoderState* s) {\r
-  if (s->should_wrap_ringbuffer) {\r
-    memcpy(s->ringbuffer, s->ringbuffer_end, (size_t)s->pos);\r
-    s->should_wrap_ringbuffer = 0;\r
-  }\r
-}\r
-\r
-/* Allocates ring-buffer.\r
-\r
-   s->ringbuffer_size MUST be updated by BrotliCalculateRingBufferSize before\r
-   this function is called.\r
-\r
-   Last two bytes of ring-buffer are initialized to 0, so context calculation\r
-   could be done uniformly for the first two and all other positions. */\r
-static BROTLI_BOOL BROTLI_NOINLINE BrotliEnsureRingBuffer(\r
-    BrotliDecoderState* s) {\r
-  uint8_t* old_ringbuffer = s->ringbuffer;\r
-  if (s->ringbuffer_size == s->new_ringbuffer_size) {\r
-    return BROTLI_TRUE;\r
-  }\r
-\r
-  s->ringbuffer = (uint8_t*)BROTLI_DECODER_ALLOC(s,\r
-      (size_t)(s->new_ringbuffer_size) + kRingBufferWriteAheadSlack);\r
-  if (s->ringbuffer == 0) {\r
-    /* Restore previous value. */\r
-    s->ringbuffer = old_ringbuffer;\r
-    return BROTLI_FALSE;\r
-  }\r
-  s->ringbuffer[s->new_ringbuffer_size - 2] = 0;\r
-  s->ringbuffer[s->new_ringbuffer_size - 1] = 0;\r
-\r
-  if (!!old_ringbuffer) {\r
-    memcpy(s->ringbuffer, old_ringbuffer, (size_t)s->pos);\r
-    BROTLI_DECODER_FREE(s, old_ringbuffer);\r
-  }\r
-\r
-  s->ringbuffer_size = s->new_ringbuffer_size;\r
-  s->ringbuffer_mask = s->new_ringbuffer_size - 1;\r
-  s->ringbuffer_end = s->ringbuffer + s->ringbuffer_size;\r
-\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BrotliDecoderErrorCode BROTLI_NOINLINE CopyUncompressedBlockToOutput(\r
-    size_t* available_out, uint8_t** next_out, size_t* total_out,\r
-    BrotliDecoderState* s) {\r
-  /* TODO: avoid allocation for single uncompressed block. */\r
-  if (!BrotliEnsureRingBuffer(s)) {\r
-    return BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1);\r
-  }\r
-\r
-  /* State machine */\r
-  for (;;) {\r
-    switch (s->substate_uncompressed) {\r
-      case BROTLI_STATE_UNCOMPRESSED_NONE: {\r
-        int nbytes = (int)BrotliGetRemainingBytes(&s->br);\r
-        if (nbytes > s->meta_block_remaining_len) {\r
-          nbytes = s->meta_block_remaining_len;\r
-        }\r
-        if (s->pos + nbytes > s->ringbuffer_size) {\r
-          nbytes = s->ringbuffer_size - s->pos;\r
-        }\r
-        /* Copy remaining bytes from s->br.buf_ to ring-buffer. */\r
-        BrotliCopyBytes(&s->ringbuffer[s->pos], &s->br, (size_t)nbytes);\r
-        s->pos += nbytes;\r
-        s->meta_block_remaining_len -= nbytes;\r
-        if (s->pos < 1 << s->window_bits) {\r
-          if (s->meta_block_remaining_len == 0) {\r
-            return BROTLI_DECODER_SUCCESS;\r
-          }\r
-          return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        }\r
-        s->substate_uncompressed = BROTLI_STATE_UNCOMPRESSED_WRITE;\r
-      }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_UNCOMPRESSED_WRITE: {\r
-        BrotliDecoderErrorCode result;\r
-        result = WriteRingBuffer(\r
-            s, available_out, next_out, total_out, BROTLI_FALSE);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          return result;\r
-        }\r
-        if (s->ringbuffer_size == 1 << s->window_bits) {\r
-          s->max_distance = s->max_backward_distance;\r
-        }\r
-        s->substate_uncompressed = BROTLI_STATE_UNCOMPRESSED_NONE;\r
-        break;\r
-      }\r
-    }\r
-  }\r
-  BROTLI_DCHECK(0);  /* Unreachable */\r
-}\r
-\r
-/* Calculates the smallest feasible ring buffer.\r
-\r
-   If we know the data size is small, do not allocate more ring buffer\r
-   size than needed to reduce memory usage.\r
-\r
-   When this method is called, metablock size and flags MUST be decoded. */\r
-static void BROTLI_NOINLINE BrotliCalculateRingBufferSize(\r
-    BrotliDecoderState* s) {\r
-  int window_size = 1 << s->window_bits;\r
-  int new_ringbuffer_size = window_size;\r
-  /* We need at least 2 bytes of ring buffer size to get the last two\r
-     bytes for context from there */\r
-  int min_size = s->ringbuffer_size ? s->ringbuffer_size : 1024;\r
-  int output_size;\r
-\r
-  /* If maximum is already reached, no further extension is retired. */\r
-  if (s->ringbuffer_size == window_size) {\r
-    return;\r
-  }\r
-\r
-  /* Metadata blocks does not touch ring buffer. */\r
-  if (s->is_metadata) {\r
-    return;\r
-  }\r
-\r
-  if (!s->ringbuffer) {\r
-    output_size = 0;\r
-  } else {\r
-    output_size = s->pos;\r
-  }\r
-  output_size += s->meta_block_remaining_len;\r
-  min_size = min_size < output_size ? output_size : min_size;\r
-\r
-  if (!!s->canny_ringbuffer_allocation) {\r
-    /* Reduce ring buffer size to save memory when server is unscrupulous.\r
-       In worst case memory usage might be 1.5x bigger for a short period of\r
-       ring buffer reallocation. */\r
-    while ((new_ringbuffer_size >> 1) >= min_size) {\r
-      new_ringbuffer_size >>= 1;\r
-    }\r
-  }\r
-\r
-  s->new_ringbuffer_size = new_ringbuffer_size;\r
-}\r
-\r
-/* Reads 1..256 2-bit context modes. */\r
-static BrotliDecoderErrorCode ReadContextModes(BrotliDecoderState* s) {\r
-  BrotliBitReader* br = &s->br;\r
-  int i = s->loop_counter;\r
-\r
-  while (i < (int)s->num_block_types[0]) {\r
-    uint32_t bits;\r
-    if (!BrotliSafeReadBits(br, 2, &bits)) {\r
-      s->loop_counter = i;\r
-      return BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-    }\r
-    s->context_modes[i] = (uint8_t)bits;\r
-    BROTLI_LOG_ARRAY_INDEX(s->context_modes, i);\r
-    i++;\r
-  }\r
-  return BROTLI_DECODER_SUCCESS;\r
-}\r
-\r
-static BROTLI_INLINE void TakeDistanceFromRingBuffer(BrotliDecoderState* s) {\r
-  if (s->distance_code == 0) {\r
-    --s->dist_rb_idx;\r
-    s->distance_code = s->dist_rb[s->dist_rb_idx & 3];\r
-    /* Compensate double distance-ring-buffer roll for dictionary items. */\r
-    s->distance_context = 1;\r
-  } else {\r
-    int distance_code = s->distance_code << 1;\r
-    /* kDistanceShortCodeIndexOffset has 2-bit values from LSB:\r
-        3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2 */\r
-    const uint32_t kDistanceShortCodeIndexOffset = 0xAAAFFF1B;\r
-    /* kDistanceShortCodeValueOffset has 2-bit values from LSB:\r
-       -0, 0,-0, 0,-1, 1,-2, 2,-3, 3,-1, 1,-2, 2,-3, 3 */\r
-    const uint32_t kDistanceShortCodeValueOffset = 0xFA5FA500;\r
-    int v = (s->dist_rb_idx +\r
-        (int)(kDistanceShortCodeIndexOffset >> distance_code)) & 0x3;\r
-    s->distance_code = s->dist_rb[v];\r
-    v = (int)(kDistanceShortCodeValueOffset >> distance_code) & 0x3;\r
-    if ((distance_code & 0x3) != 0) {\r
-      s->distance_code += v;\r
-    } else {\r
-      s->distance_code -= v;\r
-      if (s->distance_code <= 0) {\r
-        /* A huge distance will cause a BROTLI_FAILURE() soon.\r
-           This is a little faster than failing here. */\r
-        s->distance_code = 0x7FFFFFFF;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL SafeReadBits(\r
-    BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {\r
-  if (n_bits != 0) {\r
-    return BrotliSafeReadBits(br, n_bits, val);\r
-  } else {\r
-    *val = 0;\r
-    return BROTLI_TRUE;\r
-  }\r
-}\r
-\r
-/* Precondition: s->distance_code < 0. */\r
-static BROTLI_INLINE BROTLI_BOOL ReadDistanceInternal(\r
-    int safe, BrotliDecoderState* s, BrotliBitReader* br) {\r
-  int distval;\r
-  BrotliBitReaderState memento;\r
-  HuffmanCode* distance_tree = s->distance_hgroup.htrees[s->dist_htree_index];\r
-  if (!safe) {\r
-    s->distance_code = (int)ReadSymbol(distance_tree, br);\r
-  } else {\r
-    uint32_t code;\r
-    BrotliBitReaderSaveState(br, &memento);\r
-    if (!SafeReadSymbol(distance_tree, br, &code)) {\r
-      return BROTLI_FALSE;\r
-    }\r
-    s->distance_code = (int)code;\r
-  }\r
-  /* Convert the distance code to the actual distance by possibly\r
-     looking up past distances from the s->ringbuffer. */\r
-  s->distance_context = 0;\r
-  if ((s->distance_code & ~0xF) == 0) {\r
-    TakeDistanceFromRingBuffer(s);\r
-    --s->block_length[2];\r
-    return BROTLI_TRUE;\r
-  }\r
-  distval = s->distance_code - (int)s->num_direct_distance_codes;\r
-  if (distval >= 0) {\r
-    uint32_t nbits;\r
-    int postfix;\r
-    int offset;\r
-    if (!safe && (s->distance_postfix_bits == 0)) {\r
-      nbits = ((uint32_t)distval >> 1) + 1;\r
-      offset = ((2 + (distval & 1)) << nbits) - 4;\r
-      s->distance_code = (int)s->num_direct_distance_codes + offset +\r
-                         (int)BrotliReadBits(br, nbits);\r
-    } else {\r
-      /* This branch also works well when s->distance_postfix_bits == 0. */\r
-      uint32_t bits;\r
-      postfix = distval & s->distance_postfix_mask;\r
-      distval >>= s->distance_postfix_bits;\r
-      nbits = ((uint32_t)distval >> 1) + 1;\r
-      if (safe) {\r
-        if (!SafeReadBits(br, nbits, &bits)) {\r
-          s->distance_code = -1;  /* Restore precondition. */\r
-          BrotliBitReaderRestoreState(br, &memento);\r
-          return BROTLI_FALSE;\r
-        }\r
-      } else {\r
-        bits = BrotliReadBits(br, nbits);\r
-      }\r
-      offset = ((2 + (distval & 1)) << nbits) - 4;\r
-      s->distance_code = (int)s->num_direct_distance_codes +\r
-          ((offset + (int)bits) << s->distance_postfix_bits) + postfix;\r
-    }\r
-  }\r
-  s->distance_code = s->distance_code - BROTLI_NUM_DISTANCE_SHORT_CODES + 1;\r
-  --s->block_length[2];\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_INLINE void ReadDistance(\r
-    BrotliDecoderState* s, BrotliBitReader* br) {\r
-  ReadDistanceInternal(0, s, br);\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL SafeReadDistance(\r
-    BrotliDecoderState* s, BrotliBitReader* br) {\r
-  return ReadDistanceInternal(1, s, br);\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL ReadCommandInternal(\r
-    int safe, BrotliDecoderState* s, BrotliBitReader* br, int* insert_length) {\r
-  uint32_t cmd_code;\r
-  uint32_t insert_len_extra = 0;\r
-  uint32_t copy_length;\r
-  CmdLutElement v;\r
-  BrotliBitReaderState memento;\r
-  if (!safe) {\r
-    cmd_code = ReadSymbol(s->htree_command, br);\r
-  } else {\r
-    BrotliBitReaderSaveState(br, &memento);\r
-    if (!SafeReadSymbol(s->htree_command, br, &cmd_code)) {\r
-      return BROTLI_FALSE;\r
-    }\r
-  }\r
-  v = kCmdLut[cmd_code];\r
-  s->distance_code = v.distance_code;\r
-  s->distance_context = v.context;\r
-  s->dist_htree_index = s->dist_context_map_slice[s->distance_context];\r
-  *insert_length = v.insert_len_offset;\r
-  if (!safe) {\r
-    if (BROTLI_PREDICT_FALSE(v.insert_len_extra_bits != 0)) {\r
-      insert_len_extra = BrotliReadBits(br, v.insert_len_extra_bits);\r
-    }\r
-    copy_length = BrotliReadBits(br, v.copy_len_extra_bits);\r
-  } else {\r
-    if (!SafeReadBits(br, v.insert_len_extra_bits, &insert_len_extra) ||\r
-        !SafeReadBits(br, v.copy_len_extra_bits, &copy_length)) {\r
-      BrotliBitReaderRestoreState(br, &memento);\r
-      return BROTLI_FALSE;\r
-    }\r
-  }\r
-  s->copy_length = (int)copy_length + v.copy_len_offset;\r
-  --s->block_length[1];\r
-  *insert_length += (int)insert_len_extra;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_INLINE void ReadCommand(\r
-    BrotliDecoderState* s, BrotliBitReader* br, int* insert_length) {\r
-  ReadCommandInternal(0, s, br, insert_length);\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL SafeReadCommand(\r
-    BrotliDecoderState* s, BrotliBitReader* br, int* insert_length) {\r
-  return ReadCommandInternal(1, s, br, insert_length);\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL CheckInputAmount(\r
-    int safe, BrotliBitReader* const br, size_t num) {\r
-  if (safe) {\r
-    return BROTLI_TRUE;\r
-  }\r
-  return BrotliCheckInputAmount(br, num);\r
-}\r
-\r
-#define BROTLI_SAFE(METHOD)                       \\r
-  {                                               \\r
-    if (safe) {                                   \\r
-      if (!Safe##METHOD) {                        \\r
-        result = BROTLI_DECODER_NEEDS_MORE_INPUT; \\r
-        goto saveStateAndReturn;                  \\r
-      }                                           \\r
-    } else {                                      \\r
-      METHOD;                                     \\r
-    }                                             \\r
-  }\r
-\r
-static BROTLI_INLINE BrotliDecoderErrorCode ProcessCommandsInternal(\r
-    int safe, BrotliDecoderState* s) {\r
-  int pos = s->pos;\r
-  int i = s->loop_counter;\r
-  BrotliDecoderErrorCode result = BROTLI_DECODER_SUCCESS;\r
-  BrotliBitReader* br = &s->br;\r
-\r
-  if (!CheckInputAmount(safe, br, 28)) {\r
-    result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-    goto saveStateAndReturn;\r
-  }\r
-  if (!safe) {\r
-    BROTLI_UNUSED(BrotliWarmupBitReader(br));\r
-  }\r
-\r
-  /* Jump into state machine. */\r
-  if (s->state == BROTLI_STATE_COMMAND_BEGIN) {\r
-    goto CommandBegin;\r
-  } else if (s->state == BROTLI_STATE_COMMAND_INNER) {\r
-    goto CommandInner;\r
-  } else if (s->state == BROTLI_STATE_COMMAND_POST_DECODE_LITERALS) {\r
-    goto CommandPostDecodeLiterals;\r
-  } else if (s->state == BROTLI_STATE_COMMAND_POST_WRAP_COPY) {\r
-    goto CommandPostWrapCopy;\r
-  } else {\r
-    return BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE);\r
-  }\r
-\r
-CommandBegin:\r
-  if (safe) {\r
-    s->state = BROTLI_STATE_COMMAND_BEGIN;\r
-  }\r
-  if (!CheckInputAmount(safe, br, 28)) {  /* 156 bits + 7 bytes */\r
-    s->state = BROTLI_STATE_COMMAND_BEGIN;\r
-    result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-    goto saveStateAndReturn;\r
-  }\r
-  if (BROTLI_PREDICT_FALSE(s->block_length[1] == 0)) {\r
-    BROTLI_SAFE(DecodeCommandBlockSwitch(s));\r
-    goto CommandBegin;\r
-  }\r
-  /* Read the insert/copy length in the command. */\r
-  BROTLI_SAFE(ReadCommand(s, br, &i));\r
-  BROTLI_LOG(("[ProcessCommandsInternal] pos = %d insert = %d copy = %d\n",\r
-              pos, i, s->copy_length));\r
-  if (i == 0) {\r
-    goto CommandPostDecodeLiterals;\r
-  }\r
-  s->meta_block_remaining_len -= i;\r
-\r
-CommandInner:\r
-  if (safe) {\r
-    s->state = BROTLI_STATE_COMMAND_INNER;\r
-  }\r
-  /* Read the literals in the command. */\r
-  if (s->trivial_literal_context) {\r
-    uint32_t bits;\r
-    uint32_t value;\r
-    PreloadSymbol(safe, s->literal_htree, br, &bits, &value);\r
-    do {\r
-      if (!CheckInputAmount(safe, br, 28)) {  /* 162 bits + 7 bytes */\r
-        s->state = BROTLI_STATE_COMMAND_INNER;\r
-        result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        goto saveStateAndReturn;\r
-      }\r
-      if (BROTLI_PREDICT_FALSE(s->block_length[0] == 0)) {\r
-        BROTLI_SAFE(DecodeLiteralBlockSwitch(s));\r
-        PreloadSymbol(safe, s->literal_htree, br, &bits, &value);\r
-        if (!s->trivial_literal_context) goto CommandInner;\r
-      }\r
-      if (!safe) {\r
-        s->ringbuffer[pos] =\r
-            (uint8_t)ReadPreloadedSymbol(s->literal_htree, br, &bits, &value);\r
-      } else {\r
-        uint32_t literal;\r
-        if (!SafeReadSymbol(s->literal_htree, br, &literal)) {\r
-          result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          goto saveStateAndReturn;\r
-        }\r
-        s->ringbuffer[pos] = (uint8_t)literal;\r
-      }\r
-      --s->block_length[0];\r
-      BROTLI_LOG_ARRAY_INDEX(s->ringbuffer, pos);\r
-      ++pos;\r
-      if (BROTLI_PREDICT_FALSE(pos == s->ringbuffer_size)) {\r
-        s->state = BROTLI_STATE_COMMAND_INNER_WRITE;\r
-        --i;\r
-        goto saveStateAndReturn;\r
-      }\r
-    } while (--i != 0);\r
-  } else {\r
-    uint8_t p1 = s->ringbuffer[(pos - 1) & s->ringbuffer_mask];\r
-    uint8_t p2 = s->ringbuffer[(pos - 2) & s->ringbuffer_mask];\r
-    do {\r
-      const HuffmanCode* hc;\r
-      uint8_t context;\r
-      if (!CheckInputAmount(safe, br, 28)) {  /* 162 bits + 7 bytes */\r
-        s->state = BROTLI_STATE_COMMAND_INNER;\r
-        result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-        goto saveStateAndReturn;\r
-      }\r
-      if (BROTLI_PREDICT_FALSE(s->block_length[0] == 0)) {\r
-        BROTLI_SAFE(DecodeLiteralBlockSwitch(s));\r
-        if (s->trivial_literal_context) goto CommandInner;\r
-      }\r
-      context = BROTLI_CONTEXT(p1, p2, s->context_lookup);\r
-      BROTLI_LOG_UINT(context);\r
-      hc = s->literal_hgroup.htrees[s->context_map_slice[context]];\r
-      p2 = p1;\r
-      if (!safe) {\r
-        p1 = (uint8_t)ReadSymbol(hc, br);\r
-      } else {\r
-        uint32_t literal;\r
-        if (!SafeReadSymbol(hc, br, &literal)) {\r
-          result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          goto saveStateAndReturn;\r
-        }\r
-        p1 = (uint8_t)literal;\r
-      }\r
-      s->ringbuffer[pos] = p1;\r
-      --s->block_length[0];\r
-      BROTLI_LOG_UINT(s->context_map_slice[context]);\r
-      BROTLI_LOG_ARRAY_INDEX(s->ringbuffer, pos & s->ringbuffer_mask);\r
-      ++pos;\r
-      if (BROTLI_PREDICT_FALSE(pos == s->ringbuffer_size)) {\r
-        s->state = BROTLI_STATE_COMMAND_INNER_WRITE;\r
-        --i;\r
-        goto saveStateAndReturn;\r
-      }\r
-    } while (--i != 0);\r
-  }\r
-  BROTLI_LOG_UINT(s->meta_block_remaining_len);\r
-  if (BROTLI_PREDICT_FALSE(s->meta_block_remaining_len <= 0)) {\r
-    s->state = BROTLI_STATE_METABLOCK_DONE;\r
-    goto saveStateAndReturn;\r
-  }\r
-\r
-CommandPostDecodeLiterals:\r
-  if (safe) {\r
-    s->state = BROTLI_STATE_COMMAND_POST_DECODE_LITERALS;\r
-  }\r
-  if (s->distance_code >= 0) {\r
-    /* Implicit distance case. */\r
-    s->distance_context = s->distance_code ? 0 : 1;\r
-    --s->dist_rb_idx;\r
-    s->distance_code = s->dist_rb[s->dist_rb_idx & 3];\r
-  } else {\r
-    /* Read distance code in the command, unless it was implicitly zero. */\r
-    if (BROTLI_PREDICT_FALSE(s->block_length[2] == 0)) {\r
-      BROTLI_SAFE(DecodeDistanceBlockSwitch(s));\r
-    }\r
-    BROTLI_SAFE(ReadDistance(s, br));\r
-  }\r
-  BROTLI_LOG(("[ProcessCommandsInternal] pos = %d distance = %d\n",\r
-              pos, s->distance_code));\r
-  if (s->max_distance != s->max_backward_distance) {\r
-    s->max_distance =\r
-        (pos < s->max_backward_distance) ? pos : s->max_backward_distance;\r
-  }\r
-  i = s->copy_length;\r
-  /* Apply copy of LZ77 back-reference, or static dictionary reference if\r
-     the distance is larger than the max LZ77 distance */\r
-  if (s->distance_code > s->max_distance) {\r
-    /* The maximum allowed distance is BROTLI_MAX_ALLOWED_DISTANCE = 0x7FFFFFFC.\r
-       With this choice, no signed overflow can occur after decoding\r
-       a special distance code (e.g., after adding 3 to the last distance). */\r
-    if (s->distance_code > BROTLI_MAX_ALLOWED_DISTANCE) {\r
-      BROTLI_LOG(("Invalid backward reference. pos: %d distance: %d "\r
-          "len: %d bytes left: %d\n",\r
-          pos, s->distance_code, i, s->meta_block_remaining_len));\r
-      return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_DISTANCE);\r
-    }\r
-    if (i >= BROTLI_MIN_DICTIONARY_WORD_LENGTH &&\r
-        i <= BROTLI_MAX_DICTIONARY_WORD_LENGTH) {\r
-      int address = s->distance_code - s->max_distance - 1;\r
-      const BrotliDictionary* words = s->dictionary;\r
-      const BrotliTransforms* transforms = s->transforms;\r
-      int offset = (int)s->dictionary->offsets_by_length[i];\r
-      uint32_t shift = s->dictionary->size_bits_by_length[i];\r
-\r
-      int mask = (int)BitMask(shift);\r
-      int word_idx = address & mask;\r
-      int transform_idx = address >> shift;\r
-      /* Compensate double distance-ring-buffer roll. */\r
-      s->dist_rb_idx += s->distance_context;\r
-      offset += word_idx * i;\r
-      if (BROTLI_PREDICT_FALSE(!words->data)) {\r
-        return BROTLI_FAILURE(BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET);\r
-      }\r
-      if (transform_idx < (int)transforms->num_transforms) {\r
-        const uint8_t* word = &words->data[offset];\r
-        int len = i;\r
-        if (transform_idx == transforms->cutOffTransforms[0]) {\r
-          memcpy(&s->ringbuffer[pos], word, (size_t)len);\r
-          BROTLI_LOG(("[ProcessCommandsInternal] dictionary word: [%.*s]\n",\r
-                      len, word));\r
-        } else {\r
-          len = BrotliTransformDictionaryWord(&s->ringbuffer[pos], word, len,\r
-              transforms, transform_idx);\r
-          BROTLI_LOG(("[ProcessCommandsInternal] dictionary word: [%.*s],"\r
-                      " transform_idx = %d, transformed: [%.*s]\n",\r
-                      i, word, transform_idx, len, &s->ringbuffer[pos]));\r
-        }\r
-        pos += len;\r
-        s->meta_block_remaining_len -= len;\r
-        if (pos >= s->ringbuffer_size) {\r
-          s->state = BROTLI_STATE_COMMAND_POST_WRITE_1;\r
-          goto saveStateAndReturn;\r
-        }\r
-      } else {\r
-        BROTLI_LOG(("Invalid backward reference. pos: %d distance: %d "\r
-            "len: %d bytes left: %d\n",\r
-            pos, s->distance_code, i, s->meta_block_remaining_len));\r
-        return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_TRANSFORM);\r
-      }\r
-    } else {\r
-      BROTLI_LOG(("Invalid backward reference. pos: %d distance: %d "\r
-          "len: %d bytes left: %d\n",\r
-          pos, s->distance_code, i, s->meta_block_remaining_len));\r
-      return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_DICTIONARY);\r
-    }\r
-  } else {\r
-    int src_start = (pos - s->distance_code) & s->ringbuffer_mask;\r
-    uint8_t* copy_dst = &s->ringbuffer[pos];\r
-    uint8_t* copy_src = &s->ringbuffer[src_start];\r
-    int dst_end = pos + i;\r
-    int src_end = src_start + i;\r
-    /* Update the recent distances cache. */\r
-    s->dist_rb[s->dist_rb_idx & 3] = s->distance_code;\r
-    ++s->dist_rb_idx;\r
-    s->meta_block_remaining_len -= i;\r
-    /* There are 32+ bytes of slack in the ring-buffer allocation.\r
-       Also, we have 16 short codes, that make these 16 bytes irrelevant\r
-       in the ring-buffer. Let's copy over them as a first guess. */\r
-    memmove16(copy_dst, copy_src);\r
-    if (src_end > pos && dst_end > src_start) {\r
-      /* Regions intersect. */\r
-      goto CommandPostWrapCopy;\r
-    }\r
-    if (dst_end >= s->ringbuffer_size || src_end >= s->ringbuffer_size) {\r
-      /* At least one region wraps. */\r
-      goto CommandPostWrapCopy;\r
-    }\r
-    pos += i;\r
-    if (i > 16) {\r
-      if (i > 32) {\r
-        memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16));\r
-      } else {\r
-        /* This branch covers about 45% cases.\r
-           Fixed size short copy allows more compiler optimizations. */\r
-        memmove16(copy_dst + 16, copy_src + 16);\r
-      }\r
-    }\r
-  }\r
-  BROTLI_LOG_UINT(s->meta_block_remaining_len);\r
-  if (s->meta_block_remaining_len <= 0) {\r
-    /* Next metablock, if any. */\r
-    s->state = BROTLI_STATE_METABLOCK_DONE;\r
-    goto saveStateAndReturn;\r
-  } else {\r
-    goto CommandBegin;\r
-  }\r
-CommandPostWrapCopy:\r
-  {\r
-    int wrap_guard = s->ringbuffer_size - pos;\r
-    while (--i >= 0) {\r
-      s->ringbuffer[pos] =\r
-          s->ringbuffer[(pos - s->distance_code) & s->ringbuffer_mask];\r
-      ++pos;\r
-      if (BROTLI_PREDICT_FALSE(--wrap_guard == 0)) {\r
-        s->state = BROTLI_STATE_COMMAND_POST_WRITE_2;\r
-        goto saveStateAndReturn;\r
-      }\r
-    }\r
-  }\r
-  if (s->meta_block_remaining_len <= 0) {\r
-    /* Next metablock, if any. */\r
-    s->state = BROTLI_STATE_METABLOCK_DONE;\r
-    goto saveStateAndReturn;\r
-  } else {\r
-    goto CommandBegin;\r
-  }\r
-\r
-saveStateAndReturn:\r
-  s->pos = pos;\r
-  s->loop_counter = i;\r
-  return result;\r
-}\r
-\r
-#undef BROTLI_SAFE\r
-\r
-static BROTLI_NOINLINE BrotliDecoderErrorCode ProcessCommands(\r
-    BrotliDecoderState* s) {\r
-  return ProcessCommandsInternal(0, s);\r
-}\r
-\r
-static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands(\r
-    BrotliDecoderState* s) {\r
-  return ProcessCommandsInternal(1, s);\r
-}\r
-\r
-/* Returns the maximum number of distance symbols which can only represent\r
-   distances not exceeding BROTLI_MAX_ALLOWED_DISTANCE. */\r
-static uint32_t BrotliMaxDistanceSymbol(uint32_t ndirect, uint32_t npostfix) {\r
-  static const uint32_t bound[BROTLI_MAX_NPOSTFIX + 1] = {0, 4, 12, 28};\r
-  static const uint32_t diff[BROTLI_MAX_NPOSTFIX + 1] = {73, 126, 228, 424};\r
-  uint32_t postfix = 1U << npostfix;\r
-  if (ndirect < bound[npostfix]) {\r
-    return ndirect + diff[npostfix] + postfix;\r
-  } else if (ndirect > bound[npostfix] + postfix) {\r
-    return ndirect + diff[npostfix];\r
-  } else {\r
-    return bound[npostfix] + diff[npostfix] + postfix;\r
-  }\r
-}\r
-\r
-BrotliDecoderResult BrotliDecoderDecompress(\r
-    size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size,\r
-    uint8_t* decoded_buffer) {\r
-  BrotliDecoderState s;\r
-  BrotliDecoderResult result;\r
-  size_t total_out = 0;\r
-  size_t available_in = encoded_size;\r
-  const uint8_t* next_in = encoded_buffer;\r
-  size_t available_out = *decoded_size;\r
-  uint8_t* next_out = decoded_buffer;\r
-  if (!BrotliDecoderStateInit(&s, 0, 0, 0)) {\r
-    return BROTLI_DECODER_RESULT_ERROR;\r
-  }\r
-  result = BrotliDecoderDecompressStream(\r
-      &s, &available_in, &next_in, &available_out, &next_out, &total_out);\r
-  *decoded_size = total_out;\r
-  BrotliDecoderStateCleanup(&s);\r
-  if (result != BROTLI_DECODER_RESULT_SUCCESS) {\r
-    result = BROTLI_DECODER_RESULT_ERROR;\r
-  }\r
-  return result;\r
-}\r
-\r
-/* Invariant: input stream is never overconsumed:\r
-    - invalid input implies that the whole stream is invalid -> any amount of\r
-      input could be read and discarded\r
-    - when result is "needs more input", then at least one more byte is REQUIRED\r
-      to complete decoding; all input data MUST be consumed by decoder, so\r
-      client could swap the input buffer\r
-    - when result is "needs more output" decoder MUST ensure that it doesn't\r
-      hold more than 7 bits in bit reader; this saves client from swapping input\r
-      buffer ahead of time\r
-    - when result is "success" decoder MUST return all unused data back to input\r
-      buffer; this is possible because the invariant is held on enter */\r
-BrotliDecoderResult BrotliDecoderDecompressStream(\r
-    BrotliDecoderState* s, size_t* available_in, const uint8_t** next_in,\r
-    size_t* available_out, uint8_t** next_out, size_t* total_out) {\r
-  BrotliDecoderErrorCode result = BROTLI_DECODER_SUCCESS;\r
-  BrotliBitReader* br = &s->br;\r
-  /* Ensure that |total_out| is set, even if no data will ever be pushed out. */\r
-  if (total_out) {\r
-    *total_out = s->partial_pos_out;\r
-  }\r
-  /* Do not try to process further in a case of unrecoverable error. */\r
-  if ((int)s->error_code < 0) {\r
-    return BROTLI_DECODER_RESULT_ERROR;\r
-  }\r
-  if (*available_out && (!next_out || !*next_out)) {\r
-    return SaveErrorCode(\r
-        s, BROTLI_FAILURE(BROTLI_DECODER_ERROR_INVALID_ARGUMENTS));\r
-  }\r
-  if (!*available_out) next_out = 0;\r
-  if (s->buffer_length == 0) {  /* Just connect bit reader to input stream. */\r
-    br->avail_in = *available_in;\r
-    br->next_in = *next_in;\r
-  } else {\r
-    /* At least one byte of input is required. More than one byte of input may\r
-       be required to complete the transaction -> reading more data must be\r
-       done in a loop -> do it in a main loop. */\r
-    result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-    br->next_in = &s->buffer.u8[0];\r
-  }\r
-  /* State machine */\r
-  for (;;) {\r
-    if (result != BROTLI_DECODER_SUCCESS) {\r
-      /* Error, needs more input/output. */\r
-      if (result == BROTLI_DECODER_NEEDS_MORE_INPUT) {\r
-        if (s->ringbuffer != 0) {  /* Pro-actively push output. */\r
-          BrotliDecoderErrorCode intermediate_result = WriteRingBuffer(s,\r
-              available_out, next_out, total_out, BROTLI_TRUE);\r
-          /* WriteRingBuffer checks s->meta_block_remaining_len validity. */\r
-          if ((int)intermediate_result < 0) {\r
-            result = intermediate_result;\r
-            break;\r
-          }\r
-        }\r
-        if (s->buffer_length != 0) {  /* Used with internal buffer. */\r
-          if (br->avail_in == 0) {\r
-            /* Successfully finished read transaction.\r
-               Accumulator contains less than 8 bits, because internal buffer\r
-               is expanded byte-by-byte until it is enough to complete read. */\r
-            s->buffer_length = 0;\r
-            /* Switch to input stream and restart. */\r
-            result = BROTLI_DECODER_SUCCESS;\r
-            br->avail_in = *available_in;\r
-            br->next_in = *next_in;\r
-            continue;\r
-          } else if (*available_in != 0) {\r
-            /* Not enough data in buffer, but can take one more byte from\r
-               input stream. */\r
-            result = BROTLI_DECODER_SUCCESS;\r
-            s->buffer.u8[s->buffer_length] = **next_in;\r
-            s->buffer_length++;\r
-            br->avail_in = s->buffer_length;\r
-            (*next_in)++;\r
-            (*available_in)--;\r
-            /* Retry with more data in buffer. */\r
-            continue;\r
-          }\r
-          /* Can't finish reading and no more input. */\r
-          break;\r
-        } else {  /* Input stream doesn't contain enough input. */\r
-          /* Copy tail to internal buffer and return. */\r
-          *next_in = br->next_in;\r
-          *available_in = br->avail_in;\r
-          while (*available_in) {\r
-            s->buffer.u8[s->buffer_length] = **next_in;\r
-            s->buffer_length++;\r
-            (*next_in)++;\r
-            (*available_in)--;\r
-          }\r
-          break;\r
-        }\r
-        /* Unreachable. */\r
-      }\r
-\r
-      /* Fail or needs more output. */\r
-\r
-      if (s->buffer_length != 0) {\r
-        /* Just consumed the buffered input and produced some output. Otherwise\r
-           it would result in "needs more input". Reset internal buffer. */\r
-        s->buffer_length = 0;\r
-      } else {\r
-        /* Using input stream in last iteration. When decoder switches to input\r
-           stream it has less than 8 bits in accumulator, so it is safe to\r
-           return unused accumulator bits there. */\r
-        BrotliBitReaderUnload(br);\r
-        *available_in = br->avail_in;\r
-        *next_in = br->next_in;\r
-      }\r
-      break;\r
-    }\r
-    switch (s->state) {\r
-      case BROTLI_STATE_UNINITED:\r
-        /* Prepare to the first read. */\r
-        if (!BrotliWarmupBitReader(br)) {\r
-          result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          break;\r
-        }\r
-        /* Decode window size. */\r
-        result = DecodeWindowBits(s, br);  /* Reads 1..8 bits. */\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        if (s->large_window) {\r
-          s->state = BROTLI_STATE_LARGE_WINDOW_BITS;\r
-          break;\r
-        }\r
-        s->state = BROTLI_STATE_INITIALIZE;\r
-        break;\r
-\r
-      case BROTLI_STATE_LARGE_WINDOW_BITS:\r
-        if (!BrotliSafeReadBits(br, 6, &s->window_bits)) {\r
-          result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          break;\r
-        }\r
-        if (s->window_bits < BROTLI_LARGE_MIN_WBITS ||\r
-            s->window_bits > BROTLI_LARGE_MAX_WBITS) {\r
-          result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);\r
-          break;\r
-        }\r
-        s->state = BROTLI_STATE_INITIALIZE;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_INITIALIZE:\r
-        BROTLI_LOG_UINT(s->window_bits);\r
-        /* Maximum distance, see section 9.1. of the spec. */\r
-        s->max_backward_distance = (1 << s->window_bits) - BROTLI_WINDOW_GAP;\r
-\r
-        /* Allocate memory for both block_type_trees and block_len_trees. */\r
-        s->block_type_trees = (HuffmanCode*)BROTLI_DECODER_ALLOC(s,\r
-            sizeof(HuffmanCode) * 3 *\r
-                (BROTLI_HUFFMAN_MAX_SIZE_258 + BROTLI_HUFFMAN_MAX_SIZE_26));\r
-        if (s->block_type_trees == 0) {\r
-          result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES);\r
-          break;\r
-        }\r
-        s->block_len_trees =\r
-            s->block_type_trees + 3 * BROTLI_HUFFMAN_MAX_SIZE_258;\r
-\r
-        s->state = BROTLI_STATE_METABLOCK_BEGIN;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_BEGIN:\r
-        BrotliDecoderStateMetablockBegin(s);\r
-        BROTLI_LOG_UINT(s->pos);\r
-        s->state = BROTLI_STATE_METABLOCK_HEADER;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER:\r
-        result = DecodeMetaBlockLength(s, br);  /* Reads 2 - 31 bits. */\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        BROTLI_LOG_UINT(s->is_last_metablock);\r
-        BROTLI_LOG_UINT(s->meta_block_remaining_len);\r
-        BROTLI_LOG_UINT(s->is_metadata);\r
-        BROTLI_LOG_UINT(s->is_uncompressed);\r
-        if (s->is_metadata || s->is_uncompressed) {\r
-          if (!BrotliJumpToByteBoundary(br)) {\r
-            result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_PADDING_1);\r
-            break;\r
-          }\r
-        }\r
-        if (s->is_metadata) {\r
-          s->state = BROTLI_STATE_METADATA;\r
-          break;\r
-        }\r
-        if (s->meta_block_remaining_len == 0) {\r
-          s->state = BROTLI_STATE_METABLOCK_DONE;\r
-          break;\r
-        }\r
-        BrotliCalculateRingBufferSize(s);\r
-        if (s->is_uncompressed) {\r
-          s->state = BROTLI_STATE_UNCOMPRESSED;\r
-          break;\r
-        }\r
-        s->loop_counter = 0;\r
-        s->state = BROTLI_STATE_HUFFMAN_CODE_0;\r
-        break;\r
-\r
-      case BROTLI_STATE_UNCOMPRESSED: {\r
-        result = CopyUncompressedBlockToOutput(\r
-            available_out, next_out, total_out, s);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        s->state = BROTLI_STATE_METABLOCK_DONE;\r
-        break;\r
-      }\r
-\r
-      case BROTLI_STATE_METADATA:\r
-        for (; s->meta_block_remaining_len > 0; --s->meta_block_remaining_len) {\r
-          uint32_t bits;\r
-          /* Read one byte and ignore it. */\r
-          if (!BrotliSafeReadBits(br, 8, &bits)) {\r
-            result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-            break;\r
-          }\r
-        }\r
-        if (result == BROTLI_DECODER_SUCCESS) {\r
-          s->state = BROTLI_STATE_METABLOCK_DONE;\r
-        }\r
-        break;\r
-\r
-      case BROTLI_STATE_HUFFMAN_CODE_0:\r
-        if (s->loop_counter >= 3) {\r
-          s->state = BROTLI_STATE_METABLOCK_HEADER_2;\r
-          break;\r
-        }\r
-        /* Reads 1..11 bits. */\r
-        result = DecodeVarLenUint8(s, br, &s->num_block_types[s->loop_counter]);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        s->num_block_types[s->loop_counter]++;\r
-        BROTLI_LOG_UINT(s->num_block_types[s->loop_counter]);\r
-        if (s->num_block_types[s->loop_counter] < 2) {\r
-          s->loop_counter++;\r
-          break;\r
-        }\r
-        s->state = BROTLI_STATE_HUFFMAN_CODE_1;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_HUFFMAN_CODE_1: {\r
-        uint32_t alphabet_size = s->num_block_types[s->loop_counter] + 2;\r
-        int tree_offset = s->loop_counter * BROTLI_HUFFMAN_MAX_SIZE_258;\r
-        result = ReadHuffmanCode(alphabet_size, alphabet_size,\r
-            &s->block_type_trees[tree_offset], NULL, s);\r
-        if (result != BROTLI_DECODER_SUCCESS) break;\r
-        s->state = BROTLI_STATE_HUFFMAN_CODE_2;\r
-      }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_HUFFMAN_CODE_2: {\r
-        uint32_t alphabet_size = BROTLI_NUM_BLOCK_LEN_SYMBOLS;\r
-        int tree_offset = s->loop_counter * BROTLI_HUFFMAN_MAX_SIZE_26;\r
-        result = ReadHuffmanCode(alphabet_size, alphabet_size,\r
-            &s->block_len_trees[tree_offset], NULL, s);\r
-        if (result != BROTLI_DECODER_SUCCESS) break;\r
-        s->state = BROTLI_STATE_HUFFMAN_CODE_3;\r
-      }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_HUFFMAN_CODE_3: {\r
-        int tree_offset = s->loop_counter * BROTLI_HUFFMAN_MAX_SIZE_26;\r
-        if (!SafeReadBlockLength(s, &s->block_length[s->loop_counter],\r
-            &s->block_len_trees[tree_offset], br)) {\r
-          result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          break;\r
-        }\r
-        BROTLI_LOG_UINT(s->block_length[s->loop_counter]);\r
-        s->loop_counter++;\r
-        s->state = BROTLI_STATE_HUFFMAN_CODE_0;\r
-        break;\r
-      }\r
-\r
-      case BROTLI_STATE_METABLOCK_HEADER_2: {\r
-        uint32_t bits;\r
-        if (!BrotliSafeReadBits(br, 6, &bits)) {\r
-          result = BROTLI_DECODER_NEEDS_MORE_INPUT;\r
-          break;\r
-        }\r
-        s->distance_postfix_bits = bits & BitMask(2);\r
-        bits >>= 2;\r
-        s->num_direct_distance_codes = BROTLI_NUM_DISTANCE_SHORT_CODES +\r
-            (bits << s->distance_postfix_bits);\r
-        BROTLI_LOG_UINT(s->num_direct_distance_codes);\r
-        BROTLI_LOG_UINT(s->distance_postfix_bits);\r
-        s->distance_postfix_mask = (int)BitMask(s->distance_postfix_bits);\r
-        s->context_modes =\r
-            (uint8_t*)BROTLI_DECODER_ALLOC(s, (size_t)s->num_block_types[0]);\r
-        if (s->context_modes == 0) {\r
-          result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES);\r
-          break;\r
-        }\r
-        s->loop_counter = 0;\r
-        s->state = BROTLI_STATE_CONTEXT_MODES;\r
-      }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_CONTEXT_MODES:\r
-        result = ReadContextModes(s);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        s->state = BROTLI_STATE_CONTEXT_MAP_1;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_CONTEXT_MAP_1:\r
-        result = DecodeContextMap(\r
-            s->num_block_types[0] << BROTLI_LITERAL_CONTEXT_BITS,\r
-            &s->num_literal_htrees, &s->context_map, s);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        DetectTrivialLiteralBlockTypes(s);\r
-        s->state = BROTLI_STATE_CONTEXT_MAP_2;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_CONTEXT_MAP_2: {\r
-        uint32_t num_direct_codes =\r
-            s->num_direct_distance_codes - BROTLI_NUM_DISTANCE_SHORT_CODES;\r
-        uint32_t num_distance_codes = BROTLI_DISTANCE_ALPHABET_SIZE(\r
-            s->distance_postfix_bits, num_direct_codes,\r
-            (s->large_window ? BROTLI_LARGE_MAX_DISTANCE_BITS :\r
-                               BROTLI_MAX_DISTANCE_BITS));\r
-        uint32_t max_distance_symbol = (s->large_window ?\r
-            BrotliMaxDistanceSymbol(\r
-                num_direct_codes, s->distance_postfix_bits) :\r
-            num_distance_codes);\r
-        BROTLI_BOOL allocation_success = BROTLI_TRUE;\r
-        result = DecodeContextMap(\r
-            s->num_block_types[2] << BROTLI_DISTANCE_CONTEXT_BITS,\r
-            &s->num_dist_htrees, &s->dist_context_map, s);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        allocation_success &= BrotliDecoderHuffmanTreeGroupInit(\r
-            s, &s->literal_hgroup, BROTLI_NUM_LITERAL_SYMBOLS,\r
-            BROTLI_NUM_LITERAL_SYMBOLS, s->num_literal_htrees);\r
-        allocation_success &= BrotliDecoderHuffmanTreeGroupInit(\r
-            s, &s->insert_copy_hgroup, BROTLI_NUM_COMMAND_SYMBOLS,\r
-            BROTLI_NUM_COMMAND_SYMBOLS, s->num_block_types[1]);\r
-        allocation_success &= BrotliDecoderHuffmanTreeGroupInit(\r
-            s, &s->distance_hgroup, num_distance_codes,\r
-            max_distance_symbol, s->num_dist_htrees);\r
-        if (!allocation_success) {\r
-          return SaveErrorCode(s,\r
-              BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS));\r
-        }\r
-        s->loop_counter = 0;\r
-        s->state = BROTLI_STATE_TREE_GROUP;\r
-      }\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_TREE_GROUP: {\r
-        HuffmanTreeGroup* hgroup = NULL;\r
-        switch (s->loop_counter) {\r
-          case 0: hgroup = &s->literal_hgroup; break;\r
-          case 1: hgroup = &s->insert_copy_hgroup; break;\r
-          case 2: hgroup = &s->distance_hgroup; break;\r
-          default: return SaveErrorCode(s, BROTLI_FAILURE(\r
-              BROTLI_DECODER_ERROR_UNREACHABLE));\r
-        }\r
-        result = HuffmanTreeGroupDecode(hgroup, s);\r
-        if (result != BROTLI_DECODER_SUCCESS) break;\r
-        s->loop_counter++;\r
-        if (s->loop_counter >= 3) {\r
-          PrepareLiteralDecoding(s);\r
-          s->dist_context_map_slice = s->dist_context_map;\r
-          s->htree_command = s->insert_copy_hgroup.htrees[0];\r
-          if (!BrotliEnsureRingBuffer(s)) {\r
-            result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2);\r
-            break;\r
-          }\r
-          s->state = BROTLI_STATE_COMMAND_BEGIN;\r
-        }\r
-        break;\r
-      }\r
-\r
-      case BROTLI_STATE_COMMAND_BEGIN:\r
-      /* Fall through. */\r
-      case BROTLI_STATE_COMMAND_INNER:\r
-      /* Fall through. */\r
-      case BROTLI_STATE_COMMAND_POST_DECODE_LITERALS:\r
-      /* Fall through. */\r
-      case BROTLI_STATE_COMMAND_POST_WRAP_COPY:\r
-        result = ProcessCommands(s);\r
-        if (result == BROTLI_DECODER_NEEDS_MORE_INPUT) {\r
-          result = SafeProcessCommands(s);\r
-        }\r
-        break;\r
-\r
-      case BROTLI_STATE_COMMAND_INNER_WRITE:\r
-      /* Fall through. */\r
-      case BROTLI_STATE_COMMAND_POST_WRITE_1:\r
-      /* Fall through. */\r
-      case BROTLI_STATE_COMMAND_POST_WRITE_2:\r
-        result = WriteRingBuffer(\r
-            s, available_out, next_out, total_out, BROTLI_FALSE);\r
-        if (result != BROTLI_DECODER_SUCCESS) {\r
-          break;\r
-        }\r
-        WrapRingBuffer(s);\r
-        if (s->ringbuffer_size == 1 << s->window_bits) {\r
-          s->max_distance = s->max_backward_distance;\r
-        }\r
-        if (s->state == BROTLI_STATE_COMMAND_POST_WRITE_1) {\r
-          if (s->meta_block_remaining_len == 0) {\r
-            /* Next metablock, if any. */\r
-            s->state = BROTLI_STATE_METABLOCK_DONE;\r
-          } else {\r
-            s->state = BROTLI_STATE_COMMAND_BEGIN;\r
-          }\r
-          break;\r
-        } else if (s->state == BROTLI_STATE_COMMAND_POST_WRITE_2) {\r
-          s->state = BROTLI_STATE_COMMAND_POST_WRAP_COPY;\r
-        } else {  /* BROTLI_STATE_COMMAND_INNER_WRITE */\r
-          if (s->loop_counter == 0) {\r
-            if (s->meta_block_remaining_len == 0) {\r
-              s->state = BROTLI_STATE_METABLOCK_DONE;\r
-            } else {\r
-              s->state = BROTLI_STATE_COMMAND_POST_DECODE_LITERALS;\r
-            }\r
-            break;\r
-          }\r
-          s->state = BROTLI_STATE_COMMAND_INNER;\r
-        }\r
-        break;\r
-\r
-      case BROTLI_STATE_METABLOCK_DONE:\r
-        if (s->meta_block_remaining_len < 0) {\r
-          result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2);\r
-          break;\r
-        }\r
-        BrotliDecoderStateCleanupAfterMetablock(s);\r
-        if (!s->is_last_metablock) {\r
-          s->state = BROTLI_STATE_METABLOCK_BEGIN;\r
-          break;\r
-        }\r
-        if (!BrotliJumpToByteBoundary(br)) {\r
-          result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_PADDING_2);\r
-          break;\r
-        }\r
-        if (s->buffer_length == 0) {\r
-          BrotliBitReaderUnload(br);\r
-          *available_in = br->avail_in;\r
-          *next_in = br->next_in;\r
-        }\r
-        s->state = BROTLI_STATE_DONE;\r
-      /* Fall through. */\r
-\r
-      case BROTLI_STATE_DONE:\r
-        if (s->ringbuffer != 0) {\r
-          result = WriteRingBuffer(\r
-              s, available_out, next_out, total_out, BROTLI_TRUE);\r
-          if (result != BROTLI_DECODER_SUCCESS) {\r
-            break;\r
-          }\r
-        }\r
-        return SaveErrorCode(s, result);\r
-    }\r
-  }\r
-  return SaveErrorCode(s, result);\r
-}\r
-\r
-BROTLI_BOOL BrotliDecoderHasMoreOutput(const BrotliDecoderState* s) {\r
-  /* After unrecoverable error remaining output is considered nonsensical. */\r
-  if ((int)s->error_code < 0) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  return TO_BROTLI_BOOL(\r
-      s->ringbuffer != 0 && UnwrittenBytes(s, BROTLI_FALSE) != 0);\r
-}\r
-\r
-const uint8_t* BrotliDecoderTakeOutput(BrotliDecoderState* s, size_t* size) {\r
-  uint8_t* result = 0;\r
-  size_t available_out = *size ? *size : 1u << 24;\r
-  size_t requested_out = available_out;\r
-  BrotliDecoderErrorCode status;\r
-  if ((s->ringbuffer == 0) || ((int)s->error_code < 0)) {\r
-    *size = 0;\r
-    return 0;\r
-  }\r
-  WrapRingBuffer(s);\r
-  status = WriteRingBuffer(s, &available_out, &result, 0, BROTLI_TRUE);\r
-  /* Either WriteRingBuffer returns those "success" codes... */\r
-  if (status == BROTLI_DECODER_SUCCESS ||\r
-      status == BROTLI_DECODER_NEEDS_MORE_OUTPUT) {\r
-    *size = requested_out - available_out;\r
-  } else {\r
-    /* ... or stream is broken. Normally this should be caught by\r
-       BrotliDecoderDecompressStream, this is just a safeguard. */\r
-    if ((int)status < 0) SaveErrorCode(s, status);\r
-    *size = 0;\r
-    result = 0;\r
-  }\r
-  return result;\r
-}\r
-\r
-BROTLI_BOOL BrotliDecoderIsUsed(const BrotliDecoderState* s) {\r
-  return TO_BROTLI_BOOL(s->state != BROTLI_STATE_UNINITED ||\r
-      BrotliGetAvailableBits(&s->br) != 0);\r
-}\r
-\r
-BROTLI_BOOL BrotliDecoderIsFinished(const BrotliDecoderState* s) {\r
-  return TO_BROTLI_BOOL(s->state == BROTLI_STATE_DONE) &&\r
-      !BrotliDecoderHasMoreOutput(s);\r
-}\r
-\r
-BrotliDecoderErrorCode BrotliDecoderGetErrorCode(const BrotliDecoderState* s) {\r
-  return (BrotliDecoderErrorCode)s->error_code;\r
-}\r
-\r
-const char* BrotliDecoderErrorString(BrotliDecoderErrorCode c) {\r
-  switch (c) {\r
-#define BROTLI_ERROR_CODE_CASE_(PREFIX, NAME, CODE) \\r
-    case BROTLI_DECODER ## PREFIX ## NAME: return #NAME;\r
-#define BROTLI_NOTHING_\r
-    BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE_CASE_, BROTLI_NOTHING_)\r
-#undef BROTLI_ERROR_CODE_CASE_\r
-#undef BROTLI_NOTHING_\r
-    default: return "INVALID";\r
-  }\r
-}\r
-\r
-uint32_t BrotliDecoderVersion() {\r
-  return BROTLI_VERSION;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/huffman.c b/BaseTools/Source/C/BrotliCompress/dec/huffman.c
deleted file mode 100644 (file)
index 4ad0dc6..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Utilities for building Huffman decoding tables. */\r
-\r
-#include "./huffman.h"\r
-\r
-#include <string.h>  /* memcpy, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define BROTLI_REVERSE_BITS_MAX 8\r
-\r
-#if defined(BROTLI_RBIT)\r
-#define BROTLI_REVERSE_BITS_BASE \\r
-  ((sizeof(brotli_reg_t) << 3) - BROTLI_REVERSE_BITS_MAX)\r
-#else\r
-#define BROTLI_REVERSE_BITS_BASE 0\r
-static uint8_t kReverseBits[1 << BROTLI_REVERSE_BITS_MAX] = {\r
-  0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,\r
-  0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,\r
-  0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,\r
-  0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,\r
-  0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,\r
-  0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,\r
-  0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,\r
-  0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,\r
-  0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,\r
-  0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,\r
-  0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,\r
-  0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,\r
-  0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,\r
-  0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,\r
-  0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,\r
-  0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,\r
-  0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,\r
-  0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,\r
-  0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,\r
-  0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,\r
-  0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,\r
-  0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,\r
-  0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,\r
-  0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,\r
-  0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,\r
-  0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,\r
-  0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,\r
-  0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,\r
-  0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,\r
-  0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,\r
-  0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,\r
-  0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF\r
-};\r
-#endif  /* BROTLI_RBIT */\r
-\r
-#define BROTLI_REVERSE_BITS_LOWEST \\r
-  ((brotli_reg_t)1 << (BROTLI_REVERSE_BITS_MAX - 1 + BROTLI_REVERSE_BITS_BASE))\r
-\r
-/* Returns reverse(num >> BROTLI_REVERSE_BITS_BASE, BROTLI_REVERSE_BITS_MAX),\r
-   where reverse(value, len) is the bit-wise reversal of the len least\r
-   significant bits of value. */\r
-static BROTLI_INLINE brotli_reg_t BrotliReverseBits(brotli_reg_t num) {\r
-#if defined(BROTLI_RBIT)\r
-  return BROTLI_RBIT(num);\r
-#else\r
-  return kReverseBits[num];\r
-#endif\r
-}\r
-\r
-/* Stores code in table[0], table[step], table[2*step], ..., table[end] */\r
-/* Assumes that end is an integer multiple of step */\r
-static BROTLI_INLINE void ReplicateValue(HuffmanCode* table,\r
-                                         int step, int end,\r
-                                         HuffmanCode code) {\r
-  do {\r
-    end -= step;\r
-    table[end] = code;\r
-  } while (end > 0);\r
-}\r
-\r
-/* Returns the table width of the next 2nd level table. |count| is the histogram\r
-   of bit lengths for the remaining symbols, |len| is the code length of the\r
-   next processed symbol. */\r
-static BROTLI_INLINE int NextTableBitSize(const uint16_t* const count,\r
-                                          int len, int root_bits) {\r
-  int left = 1 << (len - root_bits);\r
-  while (len < BROTLI_HUFFMAN_MAX_CODE_LENGTH) {\r
-    left -= count[len];\r
-    if (left <= 0) break;\r
-    ++len;\r
-    left <<= 1;\r
-  }\r
-  return len - root_bits;\r
-}\r
-\r
-void BrotliBuildCodeLengthsHuffmanTable(HuffmanCode* table,\r
-                                        const uint8_t* const code_lengths,\r
-                                        uint16_t* count) {\r
-  HuffmanCode code;       /* current table entry */\r
-  int symbol;             /* symbol index in original or sorted table */\r
-  brotli_reg_t key;       /* prefix code */\r
-  brotli_reg_t key_step;  /* prefix code addend */\r
-  int step;               /* step size to replicate values in current table */\r
-  int table_size;         /* size of current table */\r
-  int sorted[BROTLI_CODE_LENGTH_CODES];  /* symbols sorted by code length */\r
-  /* offsets in sorted table for each length */\r
-  int offset[BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH + 1];\r
-  int bits;\r
-  int bits_count;\r
-  BROTLI_DCHECK(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH <=\r
-                BROTLI_REVERSE_BITS_MAX);\r
-\r
-  /* Generate offsets into sorted symbol table by code length. */\r
-  symbol = -1;\r
-  bits = 1;\r
-  BROTLI_REPEAT(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH, {\r
-    symbol += count[bits];\r
-    offset[bits] = symbol;\r
-    bits++;\r
-  });\r
-  /* Symbols with code length 0 are placed after all other symbols. */\r
-  offset[0] = BROTLI_CODE_LENGTH_CODES - 1;\r
-\r
-  /* Sort symbols by length, by symbol order within each length. */\r
-  symbol = BROTLI_CODE_LENGTH_CODES;\r
-  do {\r
-    BROTLI_REPEAT(6, {\r
-      symbol--;\r
-      sorted[offset[code_lengths[symbol]]--] = symbol;\r
-    });\r
-  } while (symbol != 0);\r
-\r
-  table_size = 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH;\r
-\r
-  /* Special case: all symbols but one have 0 code length. */\r
-  if (offset[0] == 0) {\r
-    code.bits = 0;\r
-    code.value = (uint16_t)sorted[0];\r
-    for (key = 0; key < (brotli_reg_t)table_size; ++key) {\r
-      table[key] = code;\r
-    }\r
-    return;\r
-  }\r
-\r
-  /* Fill in table. */\r
-  key = 0;\r
-  key_step = BROTLI_REVERSE_BITS_LOWEST;\r
-  symbol = 0;\r
-  bits = 1;\r
-  step = 2;\r
-  do {\r
-    code.bits = (uint8_t)bits;\r
-    for (bits_count = count[bits]; bits_count != 0; --bits_count) {\r
-      code.value = (uint16_t)sorted[symbol++];\r
-      ReplicateValue(&table[BrotliReverseBits(key)], step, table_size, code);\r
-      key += key_step;\r
-    }\r
-    step <<= 1;\r
-    key_step >>= 1;\r
-  } while (++bits <= BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH);\r
-}\r
-\r
-uint32_t BrotliBuildHuffmanTable(HuffmanCode* root_table,\r
-                                 int root_bits,\r
-                                 const uint16_t* const symbol_lists,\r
-                                 uint16_t* count) {\r
-  HuffmanCode code;       /* current table entry */\r
-  HuffmanCode* table;     /* next available space in table */\r
-  int len;                /* current code length */\r
-  int symbol;             /* symbol index in original or sorted table */\r
-  brotli_reg_t key;       /* prefix code */\r
-  brotli_reg_t key_step;  /* prefix code addend */\r
-  brotli_reg_t sub_key;   /* 2nd level table prefix code */\r
-  brotli_reg_t sub_key_step;  /* 2nd level table prefix code addend */\r
-  int step;               /* step size to replicate values in current table */\r
-  int table_bits;         /* key length of current table */\r
-  int table_size;         /* size of current table */\r
-  int total_size;         /* sum of root table size and 2nd level table sizes */\r
-  int max_length = -1;\r
-  int bits;\r
-  int bits_count;\r
-\r
-  BROTLI_DCHECK(root_bits <= BROTLI_REVERSE_BITS_MAX);\r
-  BROTLI_DCHECK(BROTLI_HUFFMAN_MAX_CODE_LENGTH - root_bits <=\r
-                BROTLI_REVERSE_BITS_MAX);\r
-\r
-  while (symbol_lists[max_length] == 0xFFFF) max_length--;\r
-  max_length += BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1;\r
-\r
-  table = root_table;\r
-  table_bits = root_bits;\r
-  table_size = 1 << table_bits;\r
-  total_size = table_size;\r
-\r
-  /* Fill in the root table. Reduce the table size to if possible,\r
-     and create the repetitions by memcpy. */\r
-  if (table_bits > max_length) {\r
-    table_bits = max_length;\r
-    table_size = 1 << table_bits;\r
-  }\r
-  key = 0;\r
-  key_step = BROTLI_REVERSE_BITS_LOWEST;\r
-  bits = 1;\r
-  step = 2;\r
-  do {\r
-    code.bits = (uint8_t)bits;\r
-    symbol = bits - (BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1);\r
-    for (bits_count = count[bits]; bits_count != 0; --bits_count) {\r
-      symbol = symbol_lists[symbol];\r
-      code.value = (uint16_t)symbol;\r
-      ReplicateValue(&table[BrotliReverseBits(key)], step, table_size, code);\r
-      key += key_step;\r
-    }\r
-    step <<= 1;\r
-    key_step >>= 1;\r
-  } while (++bits <= table_bits);\r
-\r
-  /* If root_bits != table_bits then replicate to fill the remaining slots. */\r
-  while (total_size != table_size) {\r
-    memcpy(&table[table_size], &table[0],\r
-           (size_t)table_size * sizeof(table[0]));\r
-    table_size <<= 1;\r
-  }\r
-\r
-  /* Fill in 2nd level tables and add pointers to root table. */\r
-  key_step = BROTLI_REVERSE_BITS_LOWEST >> (root_bits - 1);\r
-  sub_key = (BROTLI_REVERSE_BITS_LOWEST << 1);\r
-  sub_key_step = BROTLI_REVERSE_BITS_LOWEST;\r
-  for (len = root_bits + 1, step = 2; len <= max_length; ++len) {\r
-    symbol = len - (BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1);\r
-    for (; count[len] != 0; --count[len]) {\r
-      if (sub_key == (BROTLI_REVERSE_BITS_LOWEST << 1U)) {\r
-        table += table_size;\r
-        table_bits = NextTableBitSize(count, len, root_bits);\r
-        table_size = 1 << table_bits;\r
-        total_size += table_size;\r
-        sub_key = BrotliReverseBits(key);\r
-        key += key_step;\r
-        root_table[sub_key].bits = (uint8_t)(table_bits + root_bits);\r
-        root_table[sub_key].value =\r
-            (uint16_t)(((size_t)(table - root_table)) - sub_key);\r
-        sub_key = 0;\r
-      }\r
-      code.bits = (uint8_t)(len - root_bits);\r
-      symbol = symbol_lists[symbol];\r
-      code.value = (uint16_t)symbol;\r
-      ReplicateValue(\r
-          &table[BrotliReverseBits(sub_key)], step, table_size, code);\r
-      sub_key += sub_key_step;\r
-    }\r
-    step <<= 1;\r
-    sub_key_step >>= 1;\r
-  }\r
-  return (uint32_t)total_size;\r
-}\r
-\r
-uint32_t BrotliBuildSimpleHuffmanTable(HuffmanCode* table,\r
-                                       int root_bits,\r
-                                       uint16_t* val,\r
-                                       uint32_t num_symbols) {\r
-  uint32_t table_size = 1;\r
-  const uint32_t goal_size = 1U << root_bits;\r
-  switch (num_symbols) {\r
-    case 0:\r
-      table[0].bits = 0;\r
-      table[0].value = val[0];\r
-      break;\r
-    case 1:\r
-      table[0].bits = 1;\r
-      table[1].bits = 1;\r
-      if (val[1] > val[0]) {\r
-        table[0].value = val[0];\r
-        table[1].value = val[1];\r
-      } else {\r
-        table[0].value = val[1];\r
-        table[1].value = val[0];\r
-      }\r
-      table_size = 2;\r
-      break;\r
-    case 2:\r
-      table[0].bits = 1;\r
-      table[0].value = val[0];\r
-      table[2].bits = 1;\r
-      table[2].value = val[0];\r
-      if (val[2] > val[1]) {\r
-        table[1].value = val[1];\r
-        table[3].value = val[2];\r
-      } else {\r
-        table[1].value = val[2];\r
-        table[3].value = val[1];\r
-      }\r
-      table[1].bits = 2;\r
-      table[3].bits = 2;\r
-      table_size = 4;\r
-      break;\r
-    case 3: {\r
-      int i, k;\r
-      for (i = 0; i < 3; ++i) {\r
-        for (k = i + 1; k < 4; ++k) {\r
-          if (val[k] < val[i]) {\r
-            uint16_t t = val[k];\r
-            val[k] = val[i];\r
-            val[i] = t;\r
-          }\r
-        }\r
-      }\r
-      for (i = 0; i < 4; ++i) {\r
-        table[i].bits = 2;\r
-      }\r
-      table[0].value = val[0];\r
-      table[2].value = val[1];\r
-      table[1].value = val[2];\r
-      table[3].value = val[3];\r
-      table_size = 4;\r
-      break;\r
-    }\r
-    case 4: {\r
-      int i;\r
-      if (val[3] < val[2]) {\r
-        uint16_t t = val[3];\r
-        val[3] = val[2];\r
-        val[2] = t;\r
-      }\r
-      for (i = 0; i < 7; ++i) {\r
-        table[i].value = val[0];\r
-        table[i].bits = (uint8_t)(1 + (i & 1));\r
-      }\r
-      table[1].value = val[1];\r
-      table[3].value = val[2];\r
-      table[5].value = val[1];\r
-      table[7].value = val[3];\r
-      table[3].bits = 3;\r
-      table[7].bits = 3;\r
-      table_size = 8;\r
-      break;\r
-    }\r
-  }\r
-  while (table_size != goal_size) {\r
-    memcpy(&table[table_size], &table[0],\r
-           (size_t)table_size * sizeof(table[0]));\r
-    table_size <<= 1;\r
-  }\r
-  return goal_size;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/huffman.h b/BaseTools/Source/C/BrotliCompress/dec/huffman.h
deleted file mode 100644 (file)
index 5fc8c02..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Utilities for building Huffman decoding tables. */\r
-\r
-#ifndef BROTLI_DEC_HUFFMAN_H_\r
-#define BROTLI_DEC_HUFFMAN_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define BROTLI_HUFFMAN_MAX_CODE_LENGTH 15\r
-\r
-/* Maximum possible Huffman table size for an alphabet size of (index * 32),\r
-   max code length 15 and root table bits 8. */\r
-static const uint16_t kMaxHuffmanTableSize[] = {\r
-  256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\r
-  854, 886, 920, 952, 984, 1016, 1048, 1080, 1112, 1144, 1176, 1208, 1240, 1272,\r
-  1304, 1336, 1368, 1400, 1432, 1464, 1496, 1528};\r
-/* BROTLI_NUM_BLOCK_LEN_SYMBOLS == 26 */\r
-#define BROTLI_HUFFMAN_MAX_SIZE_26 396\r
-/* BROTLI_MAX_BLOCK_TYPE_SYMBOLS == 258 */\r
-#define BROTLI_HUFFMAN_MAX_SIZE_258 632\r
-/* BROTLI_MAX_CONTEXT_MAP_SYMBOLS == 272 */\r
-#define BROTLI_HUFFMAN_MAX_SIZE_272 646\r
-\r
-#define BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH 5\r
-\r
-typedef struct {\r
-  uint8_t bits;    /* number of bits used for this symbol */\r
-  uint16_t value;  /* symbol value or table offset */\r
-} HuffmanCode;\r
-\r
-/* Builds Huffman lookup table assuming code lengths are in symbol order. */\r
-BROTLI_INTERNAL void BrotliBuildCodeLengthsHuffmanTable(HuffmanCode* root_table,\r
-    const uint8_t* const code_lengths, uint16_t* count);\r
-\r
-/* Builds Huffman lookup table assuming code lengths are in symbol order.\r
-   Returns size of resulting table. */\r
-BROTLI_INTERNAL uint32_t BrotliBuildHuffmanTable(HuffmanCode* root_table,\r
-    int root_bits, const uint16_t* const symbol_lists, uint16_t* count_arg);\r
-\r
-/* Builds a simple Huffman table. The |num_symbols| parameter is to be\r
-   interpreted as follows: 0 means 1 symbol, 1 means 2 symbols,\r
-   2 means 3 symbols, 3 means 4 symbols with lengths [2, 2, 2, 2],\r
-   4 means 4 symbols with lengths [1, 2, 3, 3]. */\r
-BROTLI_INTERNAL uint32_t BrotliBuildSimpleHuffmanTable(HuffmanCode* table,\r
-    int root_bits, uint16_t* symbols, uint32_t num_symbols);\r
-\r
-/* Contains a collection of Huffman trees with the same alphabet size. */\r
-/* max_symbol is needed due to simple codes since log2(alphabet_size) could be\r
-   greater than log2(max_symbol). */\r
-typedef struct {\r
-  HuffmanCode** htrees;\r
-  HuffmanCode* codes;\r
-  uint16_t alphabet_size;\r
-  uint16_t max_symbol;\r
-  uint16_t num_htrees;\r
-} HuffmanTreeGroup;\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_DEC_HUFFMAN_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/prefix.h b/BaseTools/Source/C/BrotliCompress/dec/prefix.h
deleted file mode 100644 (file)
index 39cb459..0000000
+++ /dev/null
@@ -1,750 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Lookup tables to map prefix codes to value ranges. This is used during\r
-   decoding of the block lengths, literal insertion lengths and copy lengths. */\r
-\r
-#ifndef BROTLI_DEC_PREFIX_H_\r
-#define BROTLI_DEC_PREFIX_H_\r
-\r
-#include "../common/constants.h"\r
-#include <brotli/types.h>\r
-\r
-/* Represents the range of values belonging to a prefix code:\r
-   [offset, offset + 2^nbits) */\r
-struct PrefixCodeRange {\r
-  uint16_t offset;\r
-  uint8_t nbits;\r
-};\r
-\r
-static const struct PrefixCodeRange\r
-    kBlockLengthPrefixCode[BROTLI_NUM_BLOCK_LEN_SYMBOLS] = {\r
-  {   1,  2}, {    5,  2}, {  9,   2}, {  13,  2},\r
-  {  17,  3}, {   25,  3}, {  33,  3}, {  41,  3},\r
-  {  49,  4}, {   65,  4}, {  81,  4}, {  97,  4},\r
-  { 113,  5}, {  145,  5}, { 177,  5}, { 209,  5},\r
-  { 241,  6}, {  305,  6}, { 369,  7}, { 497,  8},\r
-  { 753,  9}, { 1265, 10}, {2289, 11}, {4337, 12},\r
-  {8433, 13}, {16625, 24}\r
-};\r
-\r
-typedef struct CmdLutElement {\r
-  uint8_t insert_len_extra_bits;\r
-  uint8_t copy_len_extra_bits;\r
-  int8_t distance_code;\r
-  uint8_t context;\r
-  uint16_t insert_len_offset;\r
-  uint16_t copy_len_offset;\r
-} CmdLutElement;\r
-\r
-static const CmdLutElement kCmdLut[BROTLI_NUM_COMMAND_SYMBOLS] = {\r
-  { 0x00, 0x00, 0, 0x00, 0x0000, 0x0002 },\r
-  { 0x00, 0x00, 0, 0x01, 0x0000, 0x0003 },\r
-  { 0x00, 0x00, 0, 0x02, 0x0000, 0x0004 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0000, 0x0005 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0000, 0x0006 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0000, 0x0007 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0000, 0x0008 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0000, 0x0009 },\r
-  { 0x00, 0x00, 0, 0x00, 0x0001, 0x0002 },\r
-  { 0x00, 0x00, 0, 0x01, 0x0001, 0x0003 },\r
-  { 0x00, 0x00, 0, 0x02, 0x0001, 0x0004 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0001, 0x0005 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0001, 0x0006 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0001, 0x0007 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0001, 0x0008 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0001, 0x0009 },\r
-  { 0x00, 0x00, 0, 0x00, 0x0002, 0x0002 },\r
-  { 0x00, 0x00, 0, 0x01, 0x0002, 0x0003 },\r
-  { 0x00, 0x00, 0, 0x02, 0x0002, 0x0004 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0002, 0x0005 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0002, 0x0006 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0002, 0x0007 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0002, 0x0008 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0002, 0x0009 },\r
-  { 0x00, 0x00, 0, 0x00, 0x0003, 0x0002 },\r
-  { 0x00, 0x00, 0, 0x01, 0x0003, 0x0003 },\r
-  { 0x00, 0x00, 0, 0x02, 0x0003, 0x0004 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0003, 0x0005 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0003, 0x0006 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0003, 0x0007 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0003, 0x0008 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0003, 0x0009 },\r
-  { 0x00, 0x00, 0, 0x00, 0x0004, 0x0002 },\r
-  { 0x00, 0x00, 0, 0x01, 0x0004, 0x0003 },\r
-  { 0x00, 0x00, 0, 0x02, 0x0004, 0x0004 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0004, 0x0005 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0004, 0x0006 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0004, 0x0007 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0004, 0x0008 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0004, 0x0009 },\r
-  { 0x00, 0x00, 0, 0x00, 0x0005, 0x0002 },\r
-  { 0x00, 0x00, 0, 0x01, 0x0005, 0x0003 },\r
-  { 0x00, 0x00, 0, 0x02, 0x0005, 0x0004 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0005, 0x0005 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0005, 0x0006 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0005, 0x0007 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0005, 0x0008 },\r
-  { 0x00, 0x00, 0, 0x03, 0x0005, 0x0009 },\r
-  { 0x01, 0x00, 0, 0x00, 0x0006, 0x0002 },\r
-  { 0x01, 0x00, 0, 0x01, 0x0006, 0x0003 },\r
-  { 0x01, 0x00, 0, 0x02, 0x0006, 0x0004 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0006, 0x0005 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0006, 0x0006 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0006, 0x0007 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0006, 0x0008 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0006, 0x0009 },\r
-  { 0x01, 0x00, 0, 0x00, 0x0008, 0x0002 },\r
-  { 0x01, 0x00, 0, 0x01, 0x0008, 0x0003 },\r
-  { 0x01, 0x00, 0, 0x02, 0x0008, 0x0004 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0008, 0x0005 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0008, 0x0006 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0008, 0x0007 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0008, 0x0008 },\r
-  { 0x01, 0x00, 0, 0x03, 0x0008, 0x0009 },\r
-  { 0x00, 0x01, 0, 0x03, 0x0000, 0x000a },\r
-  { 0x00, 0x01, 0, 0x03, 0x0000, 0x000c },\r
-  { 0x00, 0x02, 0, 0x03, 0x0000, 0x000e },\r
-  { 0x00, 0x02, 0, 0x03, 0x0000, 0x0012 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0000, 0x0016 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0000, 0x001e },\r
-  { 0x00, 0x04, 0, 0x03, 0x0000, 0x0026 },\r
-  { 0x00, 0x04, 0, 0x03, 0x0000, 0x0036 },\r
-  { 0x00, 0x01, 0, 0x03, 0x0001, 0x000a },\r
-  { 0x00, 0x01, 0, 0x03, 0x0001, 0x000c },\r
-  { 0x00, 0x02, 0, 0x03, 0x0001, 0x000e },\r
-  { 0x00, 0x02, 0, 0x03, 0x0001, 0x0012 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0001, 0x0016 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0001, 0x001e },\r
-  { 0x00, 0x04, 0, 0x03, 0x0001, 0x0026 },\r
-  { 0x00, 0x04, 0, 0x03, 0x0001, 0x0036 },\r
-  { 0x00, 0x01, 0, 0x03, 0x0002, 0x000a },\r
-  { 0x00, 0x01, 0, 0x03, 0x0002, 0x000c },\r
-  { 0x00, 0x02, 0, 0x03, 0x0002, 0x000e },\r
-  { 0x00, 0x02, 0, 0x03, 0x0002, 0x0012 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0002, 0x0016 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0002, 0x001e },\r
-  { 0x00, 0x04, 0, 0x03, 0x0002, 0x0026 },\r
-  { 0x00, 0x04, 0, 0x03, 0x0002, 0x0036 },\r
-  { 0x00, 0x01, 0, 0x03, 0x0003, 0x000a },\r
-  { 0x00, 0x01, 0, 0x03, 0x0003, 0x000c },\r
-  { 0x00, 0x02, 0, 0x03, 0x0003, 0x000e },\r
-  { 0x00, 0x02, 0, 0x03, 0x0003, 0x0012 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0003, 0x0016 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0003, 0x001e },\r
-  { 0x00, 0x04, 0, 0x03, 0x0003, 0x0026 },\r
-  { 0x00, 0x04, 0, 0x03, 0x0003, 0x0036 },\r
-  { 0x00, 0x01, 0, 0x03, 0x0004, 0x000a },\r
-  { 0x00, 0x01, 0, 0x03, 0x0004, 0x000c },\r
-  { 0x00, 0x02, 0, 0x03, 0x0004, 0x000e },\r
-  { 0x00, 0x02, 0, 0x03, 0x0004, 0x0012 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0004, 0x0016 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0004, 0x001e },\r
-  { 0x00, 0x04, 0, 0x03, 0x0004, 0x0026 },\r
-  { 0x00, 0x04, 0, 0x03, 0x0004, 0x0036 },\r
-  { 0x00, 0x01, 0, 0x03, 0x0005, 0x000a },\r
-  { 0x00, 0x01, 0, 0x03, 0x0005, 0x000c },\r
-  { 0x00, 0x02, 0, 0x03, 0x0005, 0x000e },\r
-  { 0x00, 0x02, 0, 0x03, 0x0005, 0x0012 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0005, 0x0016 },\r
-  { 0x00, 0x03, 0, 0x03, 0x0005, 0x001e },\r
-  { 0x00, 0x04, 0, 0x03, 0x0005, 0x0026 },\r
-  { 0x00, 0x04, 0, 0x03, 0x0005, 0x0036 },\r
-  { 0x01, 0x01, 0, 0x03, 0x0006, 0x000a },\r
-  { 0x01, 0x01, 0, 0x03, 0x0006, 0x000c },\r
-  { 0x01, 0x02, 0, 0x03, 0x0006, 0x000e },\r
-  { 0x01, 0x02, 0, 0x03, 0x0006, 0x0012 },\r
-  { 0x01, 0x03, 0, 0x03, 0x0006, 0x0016 },\r
-  { 0x01, 0x03, 0, 0x03, 0x0006, 0x001e },\r
-  { 0x01, 0x04, 0, 0x03, 0x0006, 0x0026 },\r
-  { 0x01, 0x04, 0, 0x03, 0x0006, 0x0036 },\r
-  { 0x01, 0x01, 0, 0x03, 0x0008, 0x000a },\r
-  { 0x01, 0x01, 0, 0x03, 0x0008, 0x000c },\r
-  { 0x01, 0x02, 0, 0x03, 0x0008, 0x000e },\r
-  { 0x01, 0x02, 0, 0x03, 0x0008, 0x0012 },\r
-  { 0x01, 0x03, 0, 0x03, 0x0008, 0x0016 },\r
-  { 0x01, 0x03, 0, 0x03, 0x0008, 0x001e },\r
-  { 0x01, 0x04, 0, 0x03, 0x0008, 0x0026 },\r
-  { 0x01, 0x04, 0, 0x03, 0x0008, 0x0036 },\r
-  { 0x00, 0x00, -1, 0x00, 0x0000, 0x0002 },\r
-  { 0x00, 0x00, -1, 0x01, 0x0000, 0x0003 },\r
-  { 0x00, 0x00, -1, 0x02, 0x0000, 0x0004 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0000, 0x0005 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0000, 0x0006 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0000, 0x0007 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0000, 0x0008 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0000, 0x0009 },\r
-  { 0x00, 0x00, -1, 0x00, 0x0001, 0x0002 },\r
-  { 0x00, 0x00, -1, 0x01, 0x0001, 0x0003 },\r
-  { 0x00, 0x00, -1, 0x02, 0x0001, 0x0004 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0001, 0x0005 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0001, 0x0006 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0001, 0x0007 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0001, 0x0008 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0001, 0x0009 },\r
-  { 0x00, 0x00, -1, 0x00, 0x0002, 0x0002 },\r
-  { 0x00, 0x00, -1, 0x01, 0x0002, 0x0003 },\r
-  { 0x00, 0x00, -1, 0x02, 0x0002, 0x0004 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0002, 0x0005 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0002, 0x0006 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0002, 0x0007 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0002, 0x0008 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0002, 0x0009 },\r
-  { 0x00, 0x00, -1, 0x00, 0x0003, 0x0002 },\r
-  { 0x00, 0x00, -1, 0x01, 0x0003, 0x0003 },\r
-  { 0x00, 0x00, -1, 0x02, 0x0003, 0x0004 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0003, 0x0005 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0003, 0x0006 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0003, 0x0007 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0003, 0x0008 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0003, 0x0009 },\r
-  { 0x00, 0x00, -1, 0x00, 0x0004, 0x0002 },\r
-  { 0x00, 0x00, -1, 0x01, 0x0004, 0x0003 },\r
-  { 0x00, 0x00, -1, 0x02, 0x0004, 0x0004 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0004, 0x0005 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0004, 0x0006 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0004, 0x0007 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0004, 0x0008 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0004, 0x0009 },\r
-  { 0x00, 0x00, -1, 0x00, 0x0005, 0x0002 },\r
-  { 0x00, 0x00, -1, 0x01, 0x0005, 0x0003 },\r
-  { 0x00, 0x00, -1, 0x02, 0x0005, 0x0004 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0005, 0x0005 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0005, 0x0006 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0005, 0x0007 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0005, 0x0008 },\r
-  { 0x00, 0x00, -1, 0x03, 0x0005, 0x0009 },\r
-  { 0x01, 0x00, -1, 0x00, 0x0006, 0x0002 },\r
-  { 0x01, 0x00, -1, 0x01, 0x0006, 0x0003 },\r
-  { 0x01, 0x00, -1, 0x02, 0x0006, 0x0004 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0006, 0x0005 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0006, 0x0006 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0006, 0x0007 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0006, 0x0008 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0006, 0x0009 },\r
-  { 0x01, 0x00, -1, 0x00, 0x0008, 0x0002 },\r
-  { 0x01, 0x00, -1, 0x01, 0x0008, 0x0003 },\r
-  { 0x01, 0x00, -1, 0x02, 0x0008, 0x0004 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0008, 0x0005 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0008, 0x0006 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0008, 0x0007 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0008, 0x0008 },\r
-  { 0x01, 0x00, -1, 0x03, 0x0008, 0x0009 },\r
-  { 0x00, 0x01, -1, 0x03, 0x0000, 0x000a },\r
-  { 0x00, 0x01, -1, 0x03, 0x0000, 0x000c },\r
-  { 0x00, 0x02, -1, 0x03, 0x0000, 0x000e },\r
-  { 0x00, 0x02, -1, 0x03, 0x0000, 0x0012 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0000, 0x0016 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0000, 0x001e },\r
-  { 0x00, 0x04, -1, 0x03, 0x0000, 0x0026 },\r
-  { 0x00, 0x04, -1, 0x03, 0x0000, 0x0036 },\r
-  { 0x00, 0x01, -1, 0x03, 0x0001, 0x000a },\r
-  { 0x00, 0x01, -1, 0x03, 0x0001, 0x000c },\r
-  { 0x00, 0x02, -1, 0x03, 0x0001, 0x000e },\r
-  { 0x00, 0x02, -1, 0x03, 0x0001, 0x0012 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0001, 0x0016 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0001, 0x001e },\r
-  { 0x00, 0x04, -1, 0x03, 0x0001, 0x0026 },\r
-  { 0x00, 0x04, -1, 0x03, 0x0001, 0x0036 },\r
-  { 0x00, 0x01, -1, 0x03, 0x0002, 0x000a },\r
-  { 0x00, 0x01, -1, 0x03, 0x0002, 0x000c },\r
-  { 0x00, 0x02, -1, 0x03, 0x0002, 0x000e },\r
-  { 0x00, 0x02, -1, 0x03, 0x0002, 0x0012 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0002, 0x0016 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0002, 0x001e },\r
-  { 0x00, 0x04, -1, 0x03, 0x0002, 0x0026 },\r
-  { 0x00, 0x04, -1, 0x03, 0x0002, 0x0036 },\r
-  { 0x00, 0x01, -1, 0x03, 0x0003, 0x000a },\r
-  { 0x00, 0x01, -1, 0x03, 0x0003, 0x000c },\r
-  { 0x00, 0x02, -1, 0x03, 0x0003, 0x000e },\r
-  { 0x00, 0x02, -1, 0x03, 0x0003, 0x0012 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0003, 0x0016 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0003, 0x001e },\r
-  { 0x00, 0x04, -1, 0x03, 0x0003, 0x0026 },\r
-  { 0x00, 0x04, -1, 0x03, 0x0003, 0x0036 },\r
-  { 0x00, 0x01, -1, 0x03, 0x0004, 0x000a },\r
-  { 0x00, 0x01, -1, 0x03, 0x0004, 0x000c },\r
-  { 0x00, 0x02, -1, 0x03, 0x0004, 0x000e },\r
-  { 0x00, 0x02, -1, 0x03, 0x0004, 0x0012 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0004, 0x0016 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0004, 0x001e },\r
-  { 0x00, 0x04, -1, 0x03, 0x0004, 0x0026 },\r
-  { 0x00, 0x04, -1, 0x03, 0x0004, 0x0036 },\r
-  { 0x00, 0x01, -1, 0x03, 0x0005, 0x000a },\r
-  { 0x00, 0x01, -1, 0x03, 0x0005, 0x000c },\r
-  { 0x00, 0x02, -1, 0x03, 0x0005, 0x000e },\r
-  { 0x00, 0x02, -1, 0x03, 0x0005, 0x0012 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0005, 0x0016 },\r
-  { 0x00, 0x03, -1, 0x03, 0x0005, 0x001e },\r
-  { 0x00, 0x04, -1, 0x03, 0x0005, 0x0026 },\r
-  { 0x00, 0x04, -1, 0x03, 0x0005, 0x0036 },\r
-  { 0x01, 0x01, -1, 0x03, 0x0006, 0x000a },\r
-  { 0x01, 0x01, -1, 0x03, 0x0006, 0x000c },\r
-  { 0x01, 0x02, -1, 0x03, 0x0006, 0x000e },\r
-  { 0x01, 0x02, -1, 0x03, 0x0006, 0x0012 },\r
-  { 0x01, 0x03, -1, 0x03, 0x0006, 0x0016 },\r
-  { 0x01, 0x03, -1, 0x03, 0x0006, 0x001e },\r
-  { 0x01, 0x04, -1, 0x03, 0x0006, 0x0026 },\r
-  { 0x01, 0x04, -1, 0x03, 0x0006, 0x0036 },\r
-  { 0x01, 0x01, -1, 0x03, 0x0008, 0x000a },\r
-  { 0x01, 0x01, -1, 0x03, 0x0008, 0x000c },\r
-  { 0x01, 0x02, -1, 0x03, 0x0008, 0x000e },\r
-  { 0x01, 0x02, -1, 0x03, 0x0008, 0x0012 },\r
-  { 0x01, 0x03, -1, 0x03, 0x0008, 0x0016 },\r
-  { 0x01, 0x03, -1, 0x03, 0x0008, 0x001e },\r
-  { 0x01, 0x04, -1, 0x03, 0x0008, 0x0026 },\r
-  { 0x01, 0x04, -1, 0x03, 0x0008, 0x0036 },\r
-  { 0x02, 0x00, -1, 0x00, 0x000a, 0x0002 },\r
-  { 0x02, 0x00, -1, 0x01, 0x000a, 0x0003 },\r
-  { 0x02, 0x00, -1, 0x02, 0x000a, 0x0004 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000a, 0x0005 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000a, 0x0006 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000a, 0x0007 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000a, 0x0008 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000a, 0x0009 },\r
-  { 0x02, 0x00, -1, 0x00, 0x000e, 0x0002 },\r
-  { 0x02, 0x00, -1, 0x01, 0x000e, 0x0003 },\r
-  { 0x02, 0x00, -1, 0x02, 0x000e, 0x0004 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000e, 0x0005 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000e, 0x0006 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000e, 0x0007 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000e, 0x0008 },\r
-  { 0x02, 0x00, -1, 0x03, 0x000e, 0x0009 },\r
-  { 0x03, 0x00, -1, 0x00, 0x0012, 0x0002 },\r
-  { 0x03, 0x00, -1, 0x01, 0x0012, 0x0003 },\r
-  { 0x03, 0x00, -1, 0x02, 0x0012, 0x0004 },\r
-  { 0x03, 0x00, -1, 0x03, 0x0012, 0x0005 },\r
-  { 0x03, 0x00, -1, 0x03, 0x0012, 0x0006 },\r
-  { 0x03, 0x00, -1, 0x03, 0x0012, 0x0007 },\r
-  { 0x03, 0x00, -1, 0x03, 0x0012, 0x0008 },\r
-  { 0x03, 0x00, -1, 0x03, 0x0012, 0x0009 },\r
-  { 0x03, 0x00, -1, 0x00, 0x001a, 0x0002 },\r
-  { 0x03, 0x00, -1, 0x01, 0x001a, 0x0003 },\r
-  { 0x03, 0x00, -1, 0x02, 0x001a, 0x0004 },\r
-  { 0x03, 0x00, -1, 0x03, 0x001a, 0x0005 },\r
-  { 0x03, 0x00, -1, 0x03, 0x001a, 0x0006 },\r
-  { 0x03, 0x00, -1, 0x03, 0x001a, 0x0007 },\r
-  { 0x03, 0x00, -1, 0x03, 0x001a, 0x0008 },\r
-  { 0x03, 0x00, -1, 0x03, 0x001a, 0x0009 },\r
-  { 0x04, 0x00, -1, 0x00, 0x0022, 0x0002 },\r
-  { 0x04, 0x00, -1, 0x01, 0x0022, 0x0003 },\r
-  { 0x04, 0x00, -1, 0x02, 0x0022, 0x0004 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0022, 0x0005 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0022, 0x0006 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0022, 0x0007 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0022, 0x0008 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0022, 0x0009 },\r
-  { 0x04, 0x00, -1, 0x00, 0x0032, 0x0002 },\r
-  { 0x04, 0x00, -1, 0x01, 0x0032, 0x0003 },\r
-  { 0x04, 0x00, -1, 0x02, 0x0032, 0x0004 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0032, 0x0005 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0032, 0x0006 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0032, 0x0007 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0032, 0x0008 },\r
-  { 0x04, 0x00, -1, 0x03, 0x0032, 0x0009 },\r
-  { 0x05, 0x00, -1, 0x00, 0x0042, 0x0002 },\r
-  { 0x05, 0x00, -1, 0x01, 0x0042, 0x0003 },\r
-  { 0x05, 0x00, -1, 0x02, 0x0042, 0x0004 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0042, 0x0005 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0042, 0x0006 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0042, 0x0007 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0042, 0x0008 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0042, 0x0009 },\r
-  { 0x05, 0x00, -1, 0x00, 0x0062, 0x0002 },\r
-  { 0x05, 0x00, -1, 0x01, 0x0062, 0x0003 },\r
-  { 0x05, 0x00, -1, 0x02, 0x0062, 0x0004 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0062, 0x0005 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0062, 0x0006 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0062, 0x0007 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0062, 0x0008 },\r
-  { 0x05, 0x00, -1, 0x03, 0x0062, 0x0009 },\r
-  { 0x02, 0x01, -1, 0x03, 0x000a, 0x000a },\r
-  { 0x02, 0x01, -1, 0x03, 0x000a, 0x000c },\r
-  { 0x02, 0x02, -1, 0x03, 0x000a, 0x000e },\r
-  { 0x02, 0x02, -1, 0x03, 0x000a, 0x0012 },\r
-  { 0x02, 0x03, -1, 0x03, 0x000a, 0x0016 },\r
-  { 0x02, 0x03, -1, 0x03, 0x000a, 0x001e },\r
-  { 0x02, 0x04, -1, 0x03, 0x000a, 0x0026 },\r
-  { 0x02, 0x04, -1, 0x03, 0x000a, 0x0036 },\r
-  { 0x02, 0x01, -1, 0x03, 0x000e, 0x000a },\r
-  { 0x02, 0x01, -1, 0x03, 0x000e, 0x000c },\r
-  { 0x02, 0x02, -1, 0x03, 0x000e, 0x000e },\r
-  { 0x02, 0x02, -1, 0x03, 0x000e, 0x0012 },\r
-  { 0x02, 0x03, -1, 0x03, 0x000e, 0x0016 },\r
-  { 0x02, 0x03, -1, 0x03, 0x000e, 0x001e },\r
-  { 0x02, 0x04, -1, 0x03, 0x000e, 0x0026 },\r
-  { 0x02, 0x04, -1, 0x03, 0x000e, 0x0036 },\r
-  { 0x03, 0x01, -1, 0x03, 0x0012, 0x000a },\r
-  { 0x03, 0x01, -1, 0x03, 0x0012, 0x000c },\r
-  { 0x03, 0x02, -1, 0x03, 0x0012, 0x000e },\r
-  { 0x03, 0x02, -1, 0x03, 0x0012, 0x0012 },\r
-  { 0x03, 0x03, -1, 0x03, 0x0012, 0x0016 },\r
-  { 0x03, 0x03, -1, 0x03, 0x0012, 0x001e },\r
-  { 0x03, 0x04, -1, 0x03, 0x0012, 0x0026 },\r
-  { 0x03, 0x04, -1, 0x03, 0x0012, 0x0036 },\r
-  { 0x03, 0x01, -1, 0x03, 0x001a, 0x000a },\r
-  { 0x03, 0x01, -1, 0x03, 0x001a, 0x000c },\r
-  { 0x03, 0x02, -1, 0x03, 0x001a, 0x000e },\r
-  { 0x03, 0x02, -1, 0x03, 0x001a, 0x0012 },\r
-  { 0x03, 0x03, -1, 0x03, 0x001a, 0x0016 },\r
-  { 0x03, 0x03, -1, 0x03, 0x001a, 0x001e },\r
-  { 0x03, 0x04, -1, 0x03, 0x001a, 0x0026 },\r
-  { 0x03, 0x04, -1, 0x03, 0x001a, 0x0036 },\r
-  { 0x04, 0x01, -1, 0x03, 0x0022, 0x000a },\r
-  { 0x04, 0x01, -1, 0x03, 0x0022, 0x000c },\r
-  { 0x04, 0x02, -1, 0x03, 0x0022, 0x000e },\r
-  { 0x04, 0x02, -1, 0x03, 0x0022, 0x0012 },\r
-  { 0x04, 0x03, -1, 0x03, 0x0022, 0x0016 },\r
-  { 0x04, 0x03, -1, 0x03, 0x0022, 0x001e },\r
-  { 0x04, 0x04, -1, 0x03, 0x0022, 0x0026 },\r
-  { 0x04, 0x04, -1, 0x03, 0x0022, 0x0036 },\r
-  { 0x04, 0x01, -1, 0x03, 0x0032, 0x000a },\r
-  { 0x04, 0x01, -1, 0x03, 0x0032, 0x000c },\r
-  { 0x04, 0x02, -1, 0x03, 0x0032, 0x000e },\r
-  { 0x04, 0x02, -1, 0x03, 0x0032, 0x0012 },\r
-  { 0x04, 0x03, -1, 0x03, 0x0032, 0x0016 },\r
-  { 0x04, 0x03, -1, 0x03, 0x0032, 0x001e },\r
-  { 0x04, 0x04, -1, 0x03, 0x0032, 0x0026 },\r
-  { 0x04, 0x04, -1, 0x03, 0x0032, 0x0036 },\r
-  { 0x05, 0x01, -1, 0x03, 0x0042, 0x000a },\r
-  { 0x05, 0x01, -1, 0x03, 0x0042, 0x000c },\r
-  { 0x05, 0x02, -1, 0x03, 0x0042, 0x000e },\r
-  { 0x05, 0x02, -1, 0x03, 0x0042, 0x0012 },\r
-  { 0x05, 0x03, -1, 0x03, 0x0042, 0x0016 },\r
-  { 0x05, 0x03, -1, 0x03, 0x0042, 0x001e },\r
-  { 0x05, 0x04, -1, 0x03, 0x0042, 0x0026 },\r
-  { 0x05, 0x04, -1, 0x03, 0x0042, 0x0036 },\r
-  { 0x05, 0x01, -1, 0x03, 0x0062, 0x000a },\r
-  { 0x05, 0x01, -1, 0x03, 0x0062, 0x000c },\r
-  { 0x05, 0x02, -1, 0x03, 0x0062, 0x000e },\r
-  { 0x05, 0x02, -1, 0x03, 0x0062, 0x0012 },\r
-  { 0x05, 0x03, -1, 0x03, 0x0062, 0x0016 },\r
-  { 0x05, 0x03, -1, 0x03, 0x0062, 0x001e },\r
-  { 0x05, 0x04, -1, 0x03, 0x0062, 0x0026 },\r
-  { 0x05, 0x04, -1, 0x03, 0x0062, 0x0036 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0000, 0x0046 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0000, 0x0066 },\r
-  { 0x00, 0x06, -1, 0x03, 0x0000, 0x0086 },\r
-  { 0x00, 0x07, -1, 0x03, 0x0000, 0x00c6 },\r
-  { 0x00, 0x08, -1, 0x03, 0x0000, 0x0146 },\r
-  { 0x00, 0x09, -1, 0x03, 0x0000, 0x0246 },\r
-  { 0x00, 0x0a, -1, 0x03, 0x0000, 0x0446 },\r
-  { 0x00, 0x18, -1, 0x03, 0x0000, 0x0846 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0001, 0x0046 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0001, 0x0066 },\r
-  { 0x00, 0x06, -1, 0x03, 0x0001, 0x0086 },\r
-  { 0x00, 0x07, -1, 0x03, 0x0001, 0x00c6 },\r
-  { 0x00, 0x08, -1, 0x03, 0x0001, 0x0146 },\r
-  { 0x00, 0x09, -1, 0x03, 0x0001, 0x0246 },\r
-  { 0x00, 0x0a, -1, 0x03, 0x0001, 0x0446 },\r
-  { 0x00, 0x18, -1, 0x03, 0x0001, 0x0846 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0002, 0x0046 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0002, 0x0066 },\r
-  { 0x00, 0x06, -1, 0x03, 0x0002, 0x0086 },\r
-  { 0x00, 0x07, -1, 0x03, 0x0002, 0x00c6 },\r
-  { 0x00, 0x08, -1, 0x03, 0x0002, 0x0146 },\r
-  { 0x00, 0x09, -1, 0x03, 0x0002, 0x0246 },\r
-  { 0x00, 0x0a, -1, 0x03, 0x0002, 0x0446 },\r
-  { 0x00, 0x18, -1, 0x03, 0x0002, 0x0846 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0003, 0x0046 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0003, 0x0066 },\r
-  { 0x00, 0x06, -1, 0x03, 0x0003, 0x0086 },\r
-  { 0x00, 0x07, -1, 0x03, 0x0003, 0x00c6 },\r
-  { 0x00, 0x08, -1, 0x03, 0x0003, 0x0146 },\r
-  { 0x00, 0x09, -1, 0x03, 0x0003, 0x0246 },\r
-  { 0x00, 0x0a, -1, 0x03, 0x0003, 0x0446 },\r
-  { 0x00, 0x18, -1, 0x03, 0x0003, 0x0846 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0004, 0x0046 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0004, 0x0066 },\r
-  { 0x00, 0x06, -1, 0x03, 0x0004, 0x0086 },\r
-  { 0x00, 0x07, -1, 0x03, 0x0004, 0x00c6 },\r
-  { 0x00, 0x08, -1, 0x03, 0x0004, 0x0146 },\r
-  { 0x00, 0x09, -1, 0x03, 0x0004, 0x0246 },\r
-  { 0x00, 0x0a, -1, 0x03, 0x0004, 0x0446 },\r
-  { 0x00, 0x18, -1, 0x03, 0x0004, 0x0846 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0005, 0x0046 },\r
-  { 0x00, 0x05, -1, 0x03, 0x0005, 0x0066 },\r
-  { 0x00, 0x06, -1, 0x03, 0x0005, 0x0086 },\r
-  { 0x00, 0x07, -1, 0x03, 0x0005, 0x00c6 },\r
-  { 0x00, 0x08, -1, 0x03, 0x0005, 0x0146 },\r
-  { 0x00, 0x09, -1, 0x03, 0x0005, 0x0246 },\r
-  { 0x00, 0x0a, -1, 0x03, 0x0005, 0x0446 },\r
-  { 0x00, 0x18, -1, 0x03, 0x0005, 0x0846 },\r
-  { 0x01, 0x05, -1, 0x03, 0x0006, 0x0046 },\r
-  { 0x01, 0x05, -1, 0x03, 0x0006, 0x0066 },\r
-  { 0x01, 0x06, -1, 0x03, 0x0006, 0x0086 },\r
-  { 0x01, 0x07, -1, 0x03, 0x0006, 0x00c6 },\r
-  { 0x01, 0x08, -1, 0x03, 0x0006, 0x0146 },\r
-  { 0x01, 0x09, -1, 0x03, 0x0006, 0x0246 },\r
-  { 0x01, 0x0a, -1, 0x03, 0x0006, 0x0446 },\r
-  { 0x01, 0x18, -1, 0x03, 0x0006, 0x0846 },\r
-  { 0x01, 0x05, -1, 0x03, 0x0008, 0x0046 },\r
-  { 0x01, 0x05, -1, 0x03, 0x0008, 0x0066 },\r
-  { 0x01, 0x06, -1, 0x03, 0x0008, 0x0086 },\r
-  { 0x01, 0x07, -1, 0x03, 0x0008, 0x00c6 },\r
-  { 0x01, 0x08, -1, 0x03, 0x0008, 0x0146 },\r
-  { 0x01, 0x09, -1, 0x03, 0x0008, 0x0246 },\r
-  { 0x01, 0x0a, -1, 0x03, 0x0008, 0x0446 },\r
-  { 0x01, 0x18, -1, 0x03, 0x0008, 0x0846 },\r
-  { 0x06, 0x00, -1, 0x00, 0x0082, 0x0002 },\r
-  { 0x06, 0x00, -1, 0x01, 0x0082, 0x0003 },\r
-  { 0x06, 0x00, -1, 0x02, 0x0082, 0x0004 },\r
-  { 0x06, 0x00, -1, 0x03, 0x0082, 0x0005 },\r
-  { 0x06, 0x00, -1, 0x03, 0x0082, 0x0006 },\r
-  { 0x06, 0x00, -1, 0x03, 0x0082, 0x0007 },\r
-  { 0x06, 0x00, -1, 0x03, 0x0082, 0x0008 },\r
-  { 0x06, 0x00, -1, 0x03, 0x0082, 0x0009 },\r
-  { 0x07, 0x00, -1, 0x00, 0x00c2, 0x0002 },\r
-  { 0x07, 0x00, -1, 0x01, 0x00c2, 0x0003 },\r
-  { 0x07, 0x00, -1, 0x02, 0x00c2, 0x0004 },\r
-  { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0005 },\r
-  { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0006 },\r
-  { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0007 },\r
-  { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0008 },\r
-  { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0009 },\r
-  { 0x08, 0x00, -1, 0x00, 0x0142, 0x0002 },\r
-  { 0x08, 0x00, -1, 0x01, 0x0142, 0x0003 },\r
-  { 0x08, 0x00, -1, 0x02, 0x0142, 0x0004 },\r
-  { 0x08, 0x00, -1, 0x03, 0x0142, 0x0005 },\r
-  { 0x08, 0x00, -1, 0x03, 0x0142, 0x0006 },\r
-  { 0x08, 0x00, -1, 0x03, 0x0142, 0x0007 },\r
-  { 0x08, 0x00, -1, 0x03, 0x0142, 0x0008 },\r
-  { 0x08, 0x00, -1, 0x03, 0x0142, 0x0009 },\r
-  { 0x09, 0x00, -1, 0x00, 0x0242, 0x0002 },\r
-  { 0x09, 0x00, -1, 0x01, 0x0242, 0x0003 },\r
-  { 0x09, 0x00, -1, 0x02, 0x0242, 0x0004 },\r
-  { 0x09, 0x00, -1, 0x03, 0x0242, 0x0005 },\r
-  { 0x09, 0x00, -1, 0x03, 0x0242, 0x0006 },\r
-  { 0x09, 0x00, -1, 0x03, 0x0242, 0x0007 },\r
-  { 0x09, 0x00, -1, 0x03, 0x0242, 0x0008 },\r
-  { 0x09, 0x00, -1, 0x03, 0x0242, 0x0009 },\r
-  { 0x0a, 0x00, -1, 0x00, 0x0442, 0x0002 },\r
-  { 0x0a, 0x00, -1, 0x01, 0x0442, 0x0003 },\r
-  { 0x0a, 0x00, -1, 0x02, 0x0442, 0x0004 },\r
-  { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0005 },\r
-  { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0006 },\r
-  { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0007 },\r
-  { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0008 },\r
-  { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0009 },\r
-  { 0x0c, 0x00, -1, 0x00, 0x0842, 0x0002 },\r
-  { 0x0c, 0x00, -1, 0x01, 0x0842, 0x0003 },\r
-  { 0x0c, 0x00, -1, 0x02, 0x0842, 0x0004 },\r
-  { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0005 },\r
-  { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0006 },\r
-  { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0007 },\r
-  { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0008 },\r
-  { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0009 },\r
-  { 0x0e, 0x00, -1, 0x00, 0x1842, 0x0002 },\r
-  { 0x0e, 0x00, -1, 0x01, 0x1842, 0x0003 },\r
-  { 0x0e, 0x00, -1, 0x02, 0x1842, 0x0004 },\r
-  { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0005 },\r
-  { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0006 },\r
-  { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0007 },\r
-  { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0008 },\r
-  { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0009 },\r
-  { 0x18, 0x00, -1, 0x00, 0x5842, 0x0002 },\r
-  { 0x18, 0x00, -1, 0x01, 0x5842, 0x0003 },\r
-  { 0x18, 0x00, -1, 0x02, 0x5842, 0x0004 },\r
-  { 0x18, 0x00, -1, 0x03, 0x5842, 0x0005 },\r
-  { 0x18, 0x00, -1, 0x03, 0x5842, 0x0006 },\r
-  { 0x18, 0x00, -1, 0x03, 0x5842, 0x0007 },\r
-  { 0x18, 0x00, -1, 0x03, 0x5842, 0x0008 },\r
-  { 0x18, 0x00, -1, 0x03, 0x5842, 0x0009 },\r
-  { 0x02, 0x05, -1, 0x03, 0x000a, 0x0046 },\r
-  { 0x02, 0x05, -1, 0x03, 0x000a, 0x0066 },\r
-  { 0x02, 0x06, -1, 0x03, 0x000a, 0x0086 },\r
-  { 0x02, 0x07, -1, 0x03, 0x000a, 0x00c6 },\r
-  { 0x02, 0x08, -1, 0x03, 0x000a, 0x0146 },\r
-  { 0x02, 0x09, -1, 0x03, 0x000a, 0x0246 },\r
-  { 0x02, 0x0a, -1, 0x03, 0x000a, 0x0446 },\r
-  { 0x02, 0x18, -1, 0x03, 0x000a, 0x0846 },\r
-  { 0x02, 0x05, -1, 0x03, 0x000e, 0x0046 },\r
-  { 0x02, 0x05, -1, 0x03, 0x000e, 0x0066 },\r
-  { 0x02, 0x06, -1, 0x03, 0x000e, 0x0086 },\r
-  { 0x02, 0x07, -1, 0x03, 0x000e, 0x00c6 },\r
-  { 0x02, 0x08, -1, 0x03, 0x000e, 0x0146 },\r
-  { 0x02, 0x09, -1, 0x03, 0x000e, 0x0246 },\r
-  { 0x02, 0x0a, -1, 0x03, 0x000e, 0x0446 },\r
-  { 0x02, 0x18, -1, 0x03, 0x000e, 0x0846 },\r
-  { 0x03, 0x05, -1, 0x03, 0x0012, 0x0046 },\r
-  { 0x03, 0x05, -1, 0x03, 0x0012, 0x0066 },\r
-  { 0x03, 0x06, -1, 0x03, 0x0012, 0x0086 },\r
-  { 0x03, 0x07, -1, 0x03, 0x0012, 0x00c6 },\r
-  { 0x03, 0x08, -1, 0x03, 0x0012, 0x0146 },\r
-  { 0x03, 0x09, -1, 0x03, 0x0012, 0x0246 },\r
-  { 0x03, 0x0a, -1, 0x03, 0x0012, 0x0446 },\r
-  { 0x03, 0x18, -1, 0x03, 0x0012, 0x0846 },\r
-  { 0x03, 0x05, -1, 0x03, 0x001a, 0x0046 },\r
-  { 0x03, 0x05, -1, 0x03, 0x001a, 0x0066 },\r
-  { 0x03, 0x06, -1, 0x03, 0x001a, 0x0086 },\r
-  { 0x03, 0x07, -1, 0x03, 0x001a, 0x00c6 },\r
-  { 0x03, 0x08, -1, 0x03, 0x001a, 0x0146 },\r
-  { 0x03, 0x09, -1, 0x03, 0x001a, 0x0246 },\r
-  { 0x03, 0x0a, -1, 0x03, 0x001a, 0x0446 },\r
-  { 0x03, 0x18, -1, 0x03, 0x001a, 0x0846 },\r
-  { 0x04, 0x05, -1, 0x03, 0x0022, 0x0046 },\r
-  { 0x04, 0x05, -1, 0x03, 0x0022, 0x0066 },\r
-  { 0x04, 0x06, -1, 0x03, 0x0022, 0x0086 },\r
-  { 0x04, 0x07, -1, 0x03, 0x0022, 0x00c6 },\r
-  { 0x04, 0x08, -1, 0x03, 0x0022, 0x0146 },\r
-  { 0x04, 0x09, -1, 0x03, 0x0022, 0x0246 },\r
-  { 0x04, 0x0a, -1, 0x03, 0x0022, 0x0446 },\r
-  { 0x04, 0x18, -1, 0x03, 0x0022, 0x0846 },\r
-  { 0x04, 0x05, -1, 0x03, 0x0032, 0x0046 },\r
-  { 0x04, 0x05, -1, 0x03, 0x0032, 0x0066 },\r
-  { 0x04, 0x06, -1, 0x03, 0x0032, 0x0086 },\r
-  { 0x04, 0x07, -1, 0x03, 0x0032, 0x00c6 },\r
-  { 0x04, 0x08, -1, 0x03, 0x0032, 0x0146 },\r
-  { 0x04, 0x09, -1, 0x03, 0x0032, 0x0246 },\r
-  { 0x04, 0x0a, -1, 0x03, 0x0032, 0x0446 },\r
-  { 0x04, 0x18, -1, 0x03, 0x0032, 0x0846 },\r
-  { 0x05, 0x05, -1, 0x03, 0x0042, 0x0046 },\r
-  { 0x05, 0x05, -1, 0x03, 0x0042, 0x0066 },\r
-  { 0x05, 0x06, -1, 0x03, 0x0042, 0x0086 },\r
-  { 0x05, 0x07, -1, 0x03, 0x0042, 0x00c6 },\r
-  { 0x05, 0x08, -1, 0x03, 0x0042, 0x0146 },\r
-  { 0x05, 0x09, -1, 0x03, 0x0042, 0x0246 },\r
-  { 0x05, 0x0a, -1, 0x03, 0x0042, 0x0446 },\r
-  { 0x05, 0x18, -1, 0x03, 0x0042, 0x0846 },\r
-  { 0x05, 0x05, -1, 0x03, 0x0062, 0x0046 },\r
-  { 0x05, 0x05, -1, 0x03, 0x0062, 0x0066 },\r
-  { 0x05, 0x06, -1, 0x03, 0x0062, 0x0086 },\r
-  { 0x05, 0x07, -1, 0x03, 0x0062, 0x00c6 },\r
-  { 0x05, 0x08, -1, 0x03, 0x0062, 0x0146 },\r
-  { 0x05, 0x09, -1, 0x03, 0x0062, 0x0246 },\r
-  { 0x05, 0x0a, -1, 0x03, 0x0062, 0x0446 },\r
-  { 0x05, 0x18, -1, 0x03, 0x0062, 0x0846 },\r
-  { 0x06, 0x01, -1, 0x03, 0x0082, 0x000a },\r
-  { 0x06, 0x01, -1, 0x03, 0x0082, 0x000c },\r
-  { 0x06, 0x02, -1, 0x03, 0x0082, 0x000e },\r
-  { 0x06, 0x02, -1, 0x03, 0x0082, 0x0012 },\r
-  { 0x06, 0x03, -1, 0x03, 0x0082, 0x0016 },\r
-  { 0x06, 0x03, -1, 0x03, 0x0082, 0x001e },\r
-  { 0x06, 0x04, -1, 0x03, 0x0082, 0x0026 },\r
-  { 0x06, 0x04, -1, 0x03, 0x0082, 0x0036 },\r
-  { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000a },\r
-  { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000c },\r
-  { 0x07, 0x02, -1, 0x03, 0x00c2, 0x000e },\r
-  { 0x07, 0x02, -1, 0x03, 0x00c2, 0x0012 },\r
-  { 0x07, 0x03, -1, 0x03, 0x00c2, 0x0016 },\r
-  { 0x07, 0x03, -1, 0x03, 0x00c2, 0x001e },\r
-  { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0026 },\r
-  { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0036 },\r
-  { 0x08, 0x01, -1, 0x03, 0x0142, 0x000a },\r
-  { 0x08, 0x01, -1, 0x03, 0x0142, 0x000c },\r
-  { 0x08, 0x02, -1, 0x03, 0x0142, 0x000e },\r
-  { 0x08, 0x02, -1, 0x03, 0x0142, 0x0012 },\r
-  { 0x08, 0x03, -1, 0x03, 0x0142, 0x0016 },\r
-  { 0x08, 0x03, -1, 0x03, 0x0142, 0x001e },\r
-  { 0x08, 0x04, -1, 0x03, 0x0142, 0x0026 },\r
-  { 0x08, 0x04, -1, 0x03, 0x0142, 0x0036 },\r
-  { 0x09, 0x01, -1, 0x03, 0x0242, 0x000a },\r
-  { 0x09, 0x01, -1, 0x03, 0x0242, 0x000c },\r
-  { 0x09, 0x02, -1, 0x03, 0x0242, 0x000e },\r
-  { 0x09, 0x02, -1, 0x03, 0x0242, 0x0012 },\r
-  { 0x09, 0x03, -1, 0x03, 0x0242, 0x0016 },\r
-  { 0x09, 0x03, -1, 0x03, 0x0242, 0x001e },\r
-  { 0x09, 0x04, -1, 0x03, 0x0242, 0x0026 },\r
-  { 0x09, 0x04, -1, 0x03, 0x0242, 0x0036 },\r
-  { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000a },\r
-  { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000c },\r
-  { 0x0a, 0x02, -1, 0x03, 0x0442, 0x000e },\r
-  { 0x0a, 0x02, -1, 0x03, 0x0442, 0x0012 },\r
-  { 0x0a, 0x03, -1, 0x03, 0x0442, 0x0016 },\r
-  { 0x0a, 0x03, -1, 0x03, 0x0442, 0x001e },\r
-  { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0026 },\r
-  { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0036 },\r
-  { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000a },\r
-  { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000c },\r
-  { 0x0c, 0x02, -1, 0x03, 0x0842, 0x000e },\r
-  { 0x0c, 0x02, -1, 0x03, 0x0842, 0x0012 },\r
-  { 0x0c, 0x03, -1, 0x03, 0x0842, 0x0016 },\r
-  { 0x0c, 0x03, -1, 0x03, 0x0842, 0x001e },\r
-  { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0026 },\r
-  { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0036 },\r
-  { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000a },\r
-  { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000c },\r
-  { 0x0e, 0x02, -1, 0x03, 0x1842, 0x000e },\r
-  { 0x0e, 0x02, -1, 0x03, 0x1842, 0x0012 },\r
-  { 0x0e, 0x03, -1, 0x03, 0x1842, 0x0016 },\r
-  { 0x0e, 0x03, -1, 0x03, 0x1842, 0x001e },\r
-  { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0026 },\r
-  { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0036 },\r
-  { 0x18, 0x01, -1, 0x03, 0x5842, 0x000a },\r
-  { 0x18, 0x01, -1, 0x03, 0x5842, 0x000c },\r
-  { 0x18, 0x02, -1, 0x03, 0x5842, 0x000e },\r
-  { 0x18, 0x02, -1, 0x03, 0x5842, 0x0012 },\r
-  { 0x18, 0x03, -1, 0x03, 0x5842, 0x0016 },\r
-  { 0x18, 0x03, -1, 0x03, 0x5842, 0x001e },\r
-  { 0x18, 0x04, -1, 0x03, 0x5842, 0x0026 },\r
-  { 0x18, 0x04, -1, 0x03, 0x5842, 0x0036 },\r
-  { 0x06, 0x05, -1, 0x03, 0x0082, 0x0046 },\r
-  { 0x06, 0x05, -1, 0x03, 0x0082, 0x0066 },\r
-  { 0x06, 0x06, -1, 0x03, 0x0082, 0x0086 },\r
-  { 0x06, 0x07, -1, 0x03, 0x0082, 0x00c6 },\r
-  { 0x06, 0x08, -1, 0x03, 0x0082, 0x0146 },\r
-  { 0x06, 0x09, -1, 0x03, 0x0082, 0x0246 },\r
-  { 0x06, 0x0a, -1, 0x03, 0x0082, 0x0446 },\r
-  { 0x06, 0x18, -1, 0x03, 0x0082, 0x0846 },\r
-  { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0046 },\r
-  { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0066 },\r
-  { 0x07, 0x06, -1, 0x03, 0x00c2, 0x0086 },\r
-  { 0x07, 0x07, -1, 0x03, 0x00c2, 0x00c6 },\r
-  { 0x07, 0x08, -1, 0x03, 0x00c2, 0x0146 },\r
-  { 0x07, 0x09, -1, 0x03, 0x00c2, 0x0246 },\r
-  { 0x07, 0x0a, -1, 0x03, 0x00c2, 0x0446 },\r
-  { 0x07, 0x18, -1, 0x03, 0x00c2, 0x0846 },\r
-  { 0x08, 0x05, -1, 0x03, 0x0142, 0x0046 },\r
-  { 0x08, 0x05, -1, 0x03, 0x0142, 0x0066 },\r
-  { 0x08, 0x06, -1, 0x03, 0x0142, 0x0086 },\r
-  { 0x08, 0x07, -1, 0x03, 0x0142, 0x00c6 },\r
-  { 0x08, 0x08, -1, 0x03, 0x0142, 0x0146 },\r
-  { 0x08, 0x09, -1, 0x03, 0x0142, 0x0246 },\r
-  { 0x08, 0x0a, -1, 0x03, 0x0142, 0x0446 },\r
-  { 0x08, 0x18, -1, 0x03, 0x0142, 0x0846 },\r
-  { 0x09, 0x05, -1, 0x03, 0x0242, 0x0046 },\r
-  { 0x09, 0x05, -1, 0x03, 0x0242, 0x0066 },\r
-  { 0x09, 0x06, -1, 0x03, 0x0242, 0x0086 },\r
-  { 0x09, 0x07, -1, 0x03, 0x0242, 0x00c6 },\r
-  { 0x09, 0x08, -1, 0x03, 0x0242, 0x0146 },\r
-  { 0x09, 0x09, -1, 0x03, 0x0242, 0x0246 },\r
-  { 0x09, 0x0a, -1, 0x03, 0x0242, 0x0446 },\r
-  { 0x09, 0x18, -1, 0x03, 0x0242, 0x0846 },\r
-  { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0046 },\r
-  { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0066 },\r
-  { 0x0a, 0x06, -1, 0x03, 0x0442, 0x0086 },\r
-  { 0x0a, 0x07, -1, 0x03, 0x0442, 0x00c6 },\r
-  { 0x0a, 0x08, -1, 0x03, 0x0442, 0x0146 },\r
-  { 0x0a, 0x09, -1, 0x03, 0x0442, 0x0246 },\r
-  { 0x0a, 0x0a, -1, 0x03, 0x0442, 0x0446 },\r
-  { 0x0a, 0x18, -1, 0x03, 0x0442, 0x0846 },\r
-  { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0046 },\r
-  { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0066 },\r
-  { 0x0c, 0x06, -1, 0x03, 0x0842, 0x0086 },\r
-  { 0x0c, 0x07, -1, 0x03, 0x0842, 0x00c6 },\r
-  { 0x0c, 0x08, -1, 0x03, 0x0842, 0x0146 },\r
-  { 0x0c, 0x09, -1, 0x03, 0x0842, 0x0246 },\r
-  { 0x0c, 0x0a, -1, 0x03, 0x0842, 0x0446 },\r
-  { 0x0c, 0x18, -1, 0x03, 0x0842, 0x0846 },\r
-  { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0046 },\r
-  { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0066 },\r
-  { 0x0e, 0x06, -1, 0x03, 0x1842, 0x0086 },\r
-  { 0x0e, 0x07, -1, 0x03, 0x1842, 0x00c6 },\r
-  { 0x0e, 0x08, -1, 0x03, 0x1842, 0x0146 },\r
-  { 0x0e, 0x09, -1, 0x03, 0x1842, 0x0246 },\r
-  { 0x0e, 0x0a, -1, 0x03, 0x1842, 0x0446 },\r
-  { 0x0e, 0x18, -1, 0x03, 0x1842, 0x0846 },\r
-  { 0x18, 0x05, -1, 0x03, 0x5842, 0x0046 },\r
-  { 0x18, 0x05, -1, 0x03, 0x5842, 0x0066 },\r
-  { 0x18, 0x06, -1, 0x03, 0x5842, 0x0086 },\r
-  { 0x18, 0x07, -1, 0x03, 0x5842, 0x00c6 },\r
-  { 0x18, 0x08, -1, 0x03, 0x5842, 0x0146 },\r
-  { 0x18, 0x09, -1, 0x03, 0x5842, 0x0246 },\r
-  { 0x18, 0x0a, -1, 0x03, 0x5842, 0x0446 },\r
-  { 0x18, 0x18, -1, 0x03, 0x5842, 0x0846 },\r
-};\r
-\r
-#endif  /* BROTLI_DEC_PREFIX_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/state.c b/BaseTools/Source/C/BrotliCompress/dec/state.c
deleted file mode 100644 (file)
index 88ecfb6..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#include "./state.h"\r
-\r
-#include <stdlib.h>  /* free, malloc */\r
-\r
-#include <brotli/types.h>\r
-#include "./huffman.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-BROTLI_BOOL BrotliDecoderStateInit(BrotliDecoderState* s,\r
-    brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {\r
-  if (!alloc_func) {\r
-    s->alloc_func = BrotliDefaultAllocFunc;\r
-    s->free_func = BrotliDefaultFreeFunc;\r
-    s->memory_manager_opaque = 0;\r
-  } else {\r
-    s->alloc_func = alloc_func;\r
-    s->free_func = free_func;\r
-    s->memory_manager_opaque = opaque;\r
-  }\r
-\r
-  s->error_code = 0; /* BROTLI_DECODER_NO_ERROR */\r
-\r
-  BrotliInitBitReader(&s->br);\r
-  s->state = BROTLI_STATE_UNINITED;\r
-  s->large_window = 0;\r
-  s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;\r
-  s->substate_tree_group = BROTLI_STATE_TREE_GROUP_NONE;\r
-  s->substate_context_map = BROTLI_STATE_CONTEXT_MAP_NONE;\r
-  s->substate_uncompressed = BROTLI_STATE_UNCOMPRESSED_NONE;\r
-  s->substate_huffman = BROTLI_STATE_HUFFMAN_NONE;\r
-  s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE;\r
-  s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE;\r
-\r
-  s->buffer_length = 0;\r
-  s->loop_counter = 0;\r
-  s->pos = 0;\r
-  s->rb_roundtrips = 0;\r
-  s->partial_pos_out = 0;\r
-\r
-  s->block_type_trees = NULL;\r
-  s->block_len_trees = NULL;\r
-  s->ringbuffer = NULL;\r
-  s->ringbuffer_size = 0;\r
-  s->new_ringbuffer_size = 0;\r
-  s->ringbuffer_mask = 0;\r
-\r
-  s->context_map = NULL;\r
-  s->context_modes = NULL;\r
-  s->dist_context_map = NULL;\r
-  s->context_map_slice = NULL;\r
-  s->dist_context_map_slice = NULL;\r
-\r
-  s->sub_loop_counter = 0;\r
-\r
-  s->literal_hgroup.codes = NULL;\r
-  s->literal_hgroup.htrees = NULL;\r
-  s->insert_copy_hgroup.codes = NULL;\r
-  s->insert_copy_hgroup.htrees = NULL;\r
-  s->distance_hgroup.codes = NULL;\r
-  s->distance_hgroup.htrees = NULL;\r
-\r
-  s->is_last_metablock = 0;\r
-  s->is_uncompressed = 0;\r
-  s->is_metadata = 0;\r
-  s->should_wrap_ringbuffer = 0;\r
-  s->canny_ringbuffer_allocation = 1;\r
-\r
-  s->window_bits = 0;\r
-  s->max_distance = 0;\r
-  s->dist_rb[0] = 16;\r
-  s->dist_rb[1] = 15;\r
-  s->dist_rb[2] = 11;\r
-  s->dist_rb[3] = 4;\r
-  s->dist_rb_idx = 0;\r
-  s->block_type_trees = NULL;\r
-  s->block_len_trees = NULL;\r
-\r
-  /* Make small negative indexes addressable. */\r
-  s->symbol_lists = &s->symbols_lists_array[BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1];\r
-\r
-  s->mtf_upper_bound = 63;\r
-\r
-  s->dictionary = BrotliGetDictionary();\r
-  s->transforms = BrotliGetTransforms();\r
-\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-void BrotliDecoderStateMetablockBegin(BrotliDecoderState* s) {\r
-  s->meta_block_remaining_len = 0;\r
-  s->block_length[0] = 1U << 24;\r
-  s->block_length[1] = 1U << 24;\r
-  s->block_length[2] = 1U << 24;\r
-  s->num_block_types[0] = 1;\r
-  s->num_block_types[1] = 1;\r
-  s->num_block_types[2] = 1;\r
-  s->block_type_rb[0] = 1;\r
-  s->block_type_rb[1] = 0;\r
-  s->block_type_rb[2] = 1;\r
-  s->block_type_rb[3] = 0;\r
-  s->block_type_rb[4] = 1;\r
-  s->block_type_rb[5] = 0;\r
-  s->context_map = NULL;\r
-  s->context_modes = NULL;\r
-  s->dist_context_map = NULL;\r
-  s->context_map_slice = NULL;\r
-  s->literal_htree = NULL;\r
-  s->dist_context_map_slice = NULL;\r
-  s->dist_htree_index = 0;\r
-  s->context_lookup = NULL;\r
-  s->literal_hgroup.codes = NULL;\r
-  s->literal_hgroup.htrees = NULL;\r
-  s->insert_copy_hgroup.codes = NULL;\r
-  s->insert_copy_hgroup.htrees = NULL;\r
-  s->distance_hgroup.codes = NULL;\r
-  s->distance_hgroup.htrees = NULL;\r
-}\r
-\r
-void BrotliDecoderStateCleanupAfterMetablock(BrotliDecoderState* s) {\r
-  BROTLI_DECODER_FREE(s, s->context_modes);\r
-  BROTLI_DECODER_FREE(s, s->context_map);\r
-  BROTLI_DECODER_FREE(s, s->dist_context_map);\r
-  BROTLI_DECODER_FREE(s, s->literal_hgroup.htrees);\r
-  BROTLI_DECODER_FREE(s, s->insert_copy_hgroup.htrees);\r
-  BROTLI_DECODER_FREE(s, s->distance_hgroup.htrees);\r
-}\r
-\r
-void BrotliDecoderStateCleanup(BrotliDecoderState* s) {\r
-  BrotliDecoderStateCleanupAfterMetablock(s);\r
-\r
-  BROTLI_DECODER_FREE(s, s->ringbuffer);\r
-  BROTLI_DECODER_FREE(s, s->block_type_trees);\r
-}\r
-\r
-BROTLI_BOOL BrotliDecoderHuffmanTreeGroupInit(BrotliDecoderState* s,\r
-    HuffmanTreeGroup* group, uint32_t alphabet_size, uint32_t max_symbol,\r
-    uint32_t ntrees) {\r
-  /* Pack two allocations into one */\r
-  const size_t max_table_size = kMaxHuffmanTableSize[(alphabet_size + 31) >> 5];\r
-  const size_t code_size = sizeof(HuffmanCode) * ntrees * max_table_size;\r
-  const size_t htree_size = sizeof(HuffmanCode*) * ntrees;\r
-  /* Pointer alignment is, hopefully, wider than sizeof(HuffmanCode). */\r
-  HuffmanCode** p = (HuffmanCode**)BROTLI_DECODER_ALLOC(s,\r
-      code_size + htree_size);\r
-  group->alphabet_size = (uint16_t)alphabet_size;\r
-  group->max_symbol = (uint16_t)max_symbol;\r
-  group->num_htrees = (uint16_t)ntrees;\r
-  group->htrees = p;\r
-  group->codes = (HuffmanCode*)(&p[ntrees]);\r
-  return !!p;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/dec/state.h b/BaseTools/Source/C/BrotliCompress/dec/state.h
deleted file mode 100644 (file)
index 814f95e..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Brotli state for partial streaming decoding. */\r
-\r
-#ifndef BROTLI_DEC_STATE_H_\r
-#define BROTLI_DEC_STATE_H_\r
-\r
-#include "../common/constants.h"\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include "../common/transform.h"\r
-#include <brotli/types.h>\r
-#include "./bit_reader.h"\r
-#include "./huffman.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-typedef enum {\r
-  BROTLI_STATE_UNINITED,\r
-  BROTLI_STATE_LARGE_WINDOW_BITS,\r
-  BROTLI_STATE_INITIALIZE,\r
-  BROTLI_STATE_METABLOCK_BEGIN,\r
-  BROTLI_STATE_METABLOCK_HEADER,\r
-  BROTLI_STATE_METABLOCK_HEADER_2,\r
-  BROTLI_STATE_CONTEXT_MODES,\r
-  BROTLI_STATE_COMMAND_BEGIN,\r
-  BROTLI_STATE_COMMAND_INNER,\r
-  BROTLI_STATE_COMMAND_POST_DECODE_LITERALS,\r
-  BROTLI_STATE_COMMAND_POST_WRAP_COPY,\r
-  BROTLI_STATE_UNCOMPRESSED,\r
-  BROTLI_STATE_METADATA,\r
-  BROTLI_STATE_COMMAND_INNER_WRITE,\r
-  BROTLI_STATE_METABLOCK_DONE,\r
-  BROTLI_STATE_COMMAND_POST_WRITE_1,\r
-  BROTLI_STATE_COMMAND_POST_WRITE_2,\r
-  BROTLI_STATE_HUFFMAN_CODE_0,\r
-  BROTLI_STATE_HUFFMAN_CODE_1,\r
-  BROTLI_STATE_HUFFMAN_CODE_2,\r
-  BROTLI_STATE_HUFFMAN_CODE_3,\r
-  BROTLI_STATE_CONTEXT_MAP_1,\r
-  BROTLI_STATE_CONTEXT_MAP_2,\r
-  BROTLI_STATE_TREE_GROUP,\r
-  BROTLI_STATE_DONE\r
-} BrotliRunningState;\r
-\r
-typedef enum {\r
-  BROTLI_STATE_METABLOCK_HEADER_NONE,\r
-  BROTLI_STATE_METABLOCK_HEADER_EMPTY,\r
-  BROTLI_STATE_METABLOCK_HEADER_NIBBLES,\r
-  BROTLI_STATE_METABLOCK_HEADER_SIZE,\r
-  BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED,\r
-  BROTLI_STATE_METABLOCK_HEADER_RESERVED,\r
-  BROTLI_STATE_METABLOCK_HEADER_BYTES,\r
-  BROTLI_STATE_METABLOCK_HEADER_METADATA\r
-} BrotliRunningMetablockHeaderState;\r
-\r
-typedef enum {\r
-  BROTLI_STATE_UNCOMPRESSED_NONE,\r
-  BROTLI_STATE_UNCOMPRESSED_WRITE\r
-} BrotliRunningUncompressedState;\r
-\r
-typedef enum {\r
-  BROTLI_STATE_TREE_GROUP_NONE,\r
-  BROTLI_STATE_TREE_GROUP_LOOP\r
-} BrotliRunningTreeGroupState;\r
-\r
-typedef enum {\r
-  BROTLI_STATE_CONTEXT_MAP_NONE,\r
-  BROTLI_STATE_CONTEXT_MAP_READ_PREFIX,\r
-  BROTLI_STATE_CONTEXT_MAP_HUFFMAN,\r
-  BROTLI_STATE_CONTEXT_MAP_DECODE,\r
-  BROTLI_STATE_CONTEXT_MAP_TRANSFORM\r
-} BrotliRunningContextMapState;\r
-\r
-typedef enum {\r
-  BROTLI_STATE_HUFFMAN_NONE,\r
-  BROTLI_STATE_HUFFMAN_SIMPLE_SIZE,\r
-  BROTLI_STATE_HUFFMAN_SIMPLE_READ,\r
-  BROTLI_STATE_HUFFMAN_SIMPLE_BUILD,\r
-  BROTLI_STATE_HUFFMAN_COMPLEX,\r
-  BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS\r
-} BrotliRunningHuffmanState;\r
-\r
-typedef enum {\r
-  BROTLI_STATE_DECODE_UINT8_NONE,\r
-  BROTLI_STATE_DECODE_UINT8_SHORT,\r
-  BROTLI_STATE_DECODE_UINT8_LONG\r
-} BrotliRunningDecodeUint8State;\r
-\r
-typedef enum {\r
-  BROTLI_STATE_READ_BLOCK_LENGTH_NONE,\r
-  BROTLI_STATE_READ_BLOCK_LENGTH_SUFFIX\r
-} BrotliRunningReadBlockLengthState;\r
-\r
-struct BrotliDecoderStateStruct {\r
-  BrotliRunningState state;\r
-\r
-  /* This counter is reused for several disjoint loops. */\r
-  int loop_counter;\r
-\r
-  BrotliBitReader br;\r
-\r
-  brotli_alloc_func alloc_func;\r
-  brotli_free_func free_func;\r
-  void* memory_manager_opaque;\r
-\r
-  /* Temporary storage for remaining input. */\r
-  union {\r
-    uint64_t u64;\r
-    uint8_t u8[8];\r
-  } buffer;\r
-  uint32_t buffer_length;\r
-\r
-  int pos;\r
-  int max_backward_distance;\r
-  int max_distance;\r
-  int ringbuffer_size;\r
-  int ringbuffer_mask;\r
-  int dist_rb_idx;\r
-  int dist_rb[4];\r
-  int error_code;\r
-  uint32_t sub_loop_counter;\r
-  uint8_t* ringbuffer;\r
-  uint8_t* ringbuffer_end;\r
-  HuffmanCode* htree_command;\r
-  const uint8_t* context_lookup;\r
-  uint8_t* context_map_slice;\r
-  uint8_t* dist_context_map_slice;\r
-\r
-  /* This ring buffer holds a few past copy distances that will be used by\r
-     some special distance codes. */\r
-  HuffmanTreeGroup literal_hgroup;\r
-  HuffmanTreeGroup insert_copy_hgroup;\r
-  HuffmanTreeGroup distance_hgroup;\r
-  HuffmanCode* block_type_trees;\r
-  HuffmanCode* block_len_trees;\r
-  /* This is true if the literal context map histogram type always matches the\r
-     block type. It is then not needed to keep the context (faster decoding). */\r
-  int trivial_literal_context;\r
-  /* Distance context is actual after command is decoded and before distance is\r
-     computed. After distance computation it is used as a temporary variable. */\r
-  int distance_context;\r
-  int meta_block_remaining_len;\r
-  uint32_t block_length_index;\r
-  uint32_t block_length[3];\r
-  uint32_t num_block_types[3];\r
-  uint32_t block_type_rb[6];\r
-  uint32_t distance_postfix_bits;\r
-  uint32_t num_direct_distance_codes;\r
-  int distance_postfix_mask;\r
-  uint32_t num_dist_htrees;\r
-  uint8_t* dist_context_map;\r
-  HuffmanCode* literal_htree;\r
-  uint8_t dist_htree_index;\r
-  uint32_t repeat_code_len;\r
-  uint32_t prev_code_len;\r
-\r
-  int copy_length;\r
-  int distance_code;\r
-\r
-  /* For partial write operations. */\r
-  size_t rb_roundtrips;  /* how many times we went around the ring-buffer */\r
-  size_t partial_pos_out;  /* how much output to the user in total */\r
-\r
-  /* For ReadHuffmanCode. */\r
-  uint32_t symbol;\r
-  uint32_t repeat;\r
-  uint32_t space;\r
-\r
-  HuffmanCode table[32];\r
-  /* List of heads of symbol chains. */\r
-  uint16_t* symbol_lists;\r
-  /* Storage from symbol_lists. */\r
-  uint16_t symbols_lists_array[BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +\r
-                               BROTLI_NUM_COMMAND_SYMBOLS];\r
-  /* Tails of symbol chains. */\r
-  int next_symbol[32];\r
-  uint8_t code_length_code_lengths[BROTLI_CODE_LENGTH_CODES];\r
-  /* Population counts for the code lengths. */\r
-  uint16_t code_length_histo[16];\r
-\r
-  /* For HuffmanTreeGroupDecode. */\r
-  int htree_index;\r
-  HuffmanCode* next;\r
-\r
-  /* For DecodeContextMap. */\r
-  uint32_t context_index;\r
-  uint32_t max_run_length_prefix;\r
-  uint32_t code;\r
-  HuffmanCode context_map_table[BROTLI_HUFFMAN_MAX_SIZE_272];\r
-\r
-  /* For InverseMoveToFrontTransform. */\r
-  uint32_t mtf_upper_bound;\r
-  uint32_t mtf[64 + 1];\r
-\r
-  /* Less used attributes are at the end of this struct. */\r
-\r
-  /* States inside function calls. */\r
-  BrotliRunningMetablockHeaderState substate_metablock_header;\r
-  BrotliRunningTreeGroupState substate_tree_group;\r
-  BrotliRunningContextMapState substate_context_map;\r
-  BrotliRunningUncompressedState substate_uncompressed;\r
-  BrotliRunningHuffmanState substate_huffman;\r
-  BrotliRunningDecodeUint8State substate_decode_uint8;\r
-  BrotliRunningReadBlockLengthState substate_read_block_length;\r
-\r
-  unsigned int is_last_metablock : 1;\r
-  unsigned int is_uncompressed : 1;\r
-  unsigned int is_metadata : 1;\r
-  unsigned int should_wrap_ringbuffer : 1;\r
-  unsigned int canny_ringbuffer_allocation : 1;\r
-  unsigned int large_window : 1;\r
-  unsigned int size_nibbles : 8;\r
-  uint32_t window_bits;\r
-\r
-  int new_ringbuffer_size;\r
-\r
-  uint32_t num_literal_htrees;\r
-  uint8_t* context_map;\r
-  uint8_t* context_modes;\r
-\r
-  const BrotliDictionary* dictionary;\r
-  const BrotliTransforms* transforms;\r
-\r
-  uint32_t trivial_literal_contexts[8];  /* 256 bits */\r
-};\r
-\r
-typedef struct BrotliDecoderStateStruct BrotliDecoderStateInternal;\r
-#define BrotliDecoderState BrotliDecoderStateInternal\r
-\r
-BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderStateInit(BrotliDecoderState* s,\r
-    brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);\r
-BROTLI_INTERNAL void BrotliDecoderStateCleanup(BrotliDecoderState* s);\r
-BROTLI_INTERNAL void BrotliDecoderStateMetablockBegin(BrotliDecoderState* s);\r
-BROTLI_INTERNAL void BrotliDecoderStateCleanupAfterMetablock(\r
-    BrotliDecoderState* s);\r
-BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderHuffmanTreeGroupInit(\r
-    BrotliDecoderState* s, HuffmanTreeGroup* group, uint32_t alphabet_size,\r
-    uint32_t max_symbol, uint32_t ntrees);\r
-\r
-#define BROTLI_DECODER_ALLOC(S, L) S->alloc_func(S->memory_manager_opaque, L)\r
-\r
-#define BROTLI_DECODER_FREE(S, X) {          \\r
-  S->free_func(S->memory_manager_opaque, X); \\r
-  X = NULL;                                  \\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_DEC_STATE_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/docs/brotli-comparison-study-2015-09-22.pdf b/BaseTools/Source/C/BrotliCompress/docs/brotli-comparison-study-2015-09-22.pdf
deleted file mode 100644 (file)
index 040f179..0000000
Binary files a/BaseTools/Source/C/BrotliCompress/docs/brotli-comparison-study-2015-09-22.pdf and /dev/null differ
diff --git a/BaseTools/Source/C/BrotliCompress/enc/backward_references.c b/BaseTools/Source/C/BrotliCompress/enc/backward_references.c
deleted file mode 100644 (file)
index d14679a..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function to find backward reference copies. */\r
-\r
-#include "./backward_references.h"\r
-\r
-#include "../common/constants.h"\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./command.h"\r
-#include "./dictionary_hash.h"\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static BROTLI_INLINE size_t ComputeDistanceCode(size_t distance,\r
-                                                size_t max_distance,\r
-                                                const int* dist_cache) {\r
-  if (distance <= max_distance) {\r
-    size_t distance_plus_3 = distance + 3;\r
-    size_t offset0 = distance_plus_3 - (size_t)dist_cache[0];\r
-    size_t offset1 = distance_plus_3 - (size_t)dist_cache[1];\r
-    if (distance == (size_t)dist_cache[0]) {\r
-      return 0;\r
-    } else if (distance == (size_t)dist_cache[1]) {\r
-      return 1;\r
-    } else if (offset0 < 7) {\r
-      return (0x9750468 >> (4 * offset0)) & 0xF;\r
-    } else if (offset1 < 7) {\r
-      return (0xFDB1ACE >> (4 * offset1)) & 0xF;\r
-    } else if (distance == (size_t)dist_cache[2]) {\r
-      return 2;\r
-    } else if (distance == (size_t)dist_cache[3]) {\r
-      return 3;\r
-    }\r
-  }\r
-  return distance + BROTLI_NUM_DISTANCE_SHORT_CODES - 1;\r
-}\r
-\r
-#define EXPAND_CAT(a, b) CAT(a, b)\r
-#define CAT(a, b) a ## b\r
-#define FN(X) EXPAND_CAT(X, HASHER())\r
-#define EXPORT_FN(X) EXPAND_CAT(X, EXPAND_CAT(PREFIX(), HASHER()))\r
-\r
-#define PREFIX() N\r
-\r
-#define HASHER() H2\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H3\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H4\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H5\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H6\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H40\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H41\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H42\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H54\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H35\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H55\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#define HASHER() H65\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./backward_references_inc.h"\r
-#undef HASHER\r
-\r
-#undef PREFIX\r
-\r
-#undef EXPORT_FN\r
-#undef FN\r
-#undef CAT\r
-#undef EXPAND_CAT\r
-\r
-void BrotliCreateBackwardReferences(\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,\r
-    Command* commands, size_t* num_commands, size_t* num_literals) {\r
-  switch (params->hasher.type) {\r
-#define CASE_(N)                                                  \\r
-    case N:                                                       \\r
-      CreateBackwardReferencesNH ## N(                            \\r
-          num_bytes, position, ringbuffer,                        \\r
-          ringbuffer_mask, params, hasher, dist_cache,            \\r
-          last_insert_len, commands, num_commands, num_literals); \\r
-      return;\r
-    FOR_GENERIC_HASHERS(CASE_)\r
-#undef CASE_\r
-    default:\r
-      break;\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/backward_references.h b/BaseTools/Source/C/BrotliCompress/enc/backward_references.h
deleted file mode 100644 (file)
index fcef6bd..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function to find backward reference copies. */\r
-\r
-#ifndef BROTLI_ENC_BACKWARD_REFERENCES_H_\r
-#define BROTLI_ENC_BACKWARD_REFERENCES_H_\r
-\r
-#include "../common/constants.h"\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./command.h"\r
-#include "./hash.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* "commands" points to the next output command to write to, "*num_commands" is\r
-   initially the total amount of commands output by previous\r
-   CreateBackwardReferences calls, and must be incremented by the amount written\r
-   by this call. */\r
-BROTLI_INTERNAL void BrotliCreateBackwardReferences(\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,\r
-    Command* commands, size_t* num_commands, size_t* num_literals);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_BACKWARD_REFERENCES_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.c b/BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.c
deleted file mode 100644 (file)
index 8932033..0000000
+++ /dev/null
@@ -1,830 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function to find backward reference copies. */\r
-\r
-#include "./backward_references_hq.h"\r
-\r
-#include <string.h>  /* memcpy, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./command.h"\r
-#include "./fast_log.h"\r
-#include "./find_match_length.h"\r
-#include "./literal_cost.h"\r
-#include "./memory.h"\r
-#include "./params.h"\r
-#include "./prefix.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE 544\r
-\r
-static const float kInfinity = 1.7e38f;  /* ~= 2 ^ 127 */\r
-\r
-static const uint32_t kDistanceCacheIndex[] = {\r
-  0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,\r
-};\r
-static const int kDistanceCacheOffset[] = {\r
-  0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3\r
-};\r
-\r
-void BrotliInitZopfliNodes(ZopfliNode* array, size_t length) {\r
-  ZopfliNode stub;\r
-  size_t i;\r
-  stub.length = 1;\r
-  stub.distance = 0;\r
-  stub.dcode_insert_length = 0;\r
-  stub.u.cost = kInfinity;\r
-  for (i = 0; i < length; ++i) array[i] = stub;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t ZopfliNodeCopyLength(const ZopfliNode* self) {\r
-  return self->length & 0x1FFFFFF;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t ZopfliNodeLengthCode(const ZopfliNode* self) {\r
-  const uint32_t modifier = self->length >> 25;\r
-  return ZopfliNodeCopyLength(self) + 9u - modifier;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t ZopfliNodeCopyDistance(const ZopfliNode* self) {\r
-  return self->distance;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t ZopfliNodeDistanceCode(const ZopfliNode* self) {\r
-  const uint32_t short_code = self->dcode_insert_length >> 27;\r
-  return short_code == 0 ?\r
-      ZopfliNodeCopyDistance(self) + BROTLI_NUM_DISTANCE_SHORT_CODES - 1 :\r
-      short_code - 1;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t ZopfliNodeCommandLength(const ZopfliNode* self) {\r
-  return ZopfliNodeCopyLength(self) + (self->dcode_insert_length & 0x7FFFFFF);\r
-}\r
-\r
-/* Histogram based cost model for zopflification. */\r
-typedef struct ZopfliCostModel {\r
-  /* The insert and copy length symbols. */\r
-  float cost_cmd_[BROTLI_NUM_COMMAND_SYMBOLS];\r
-  float* cost_dist_;\r
-  uint32_t distance_histogram_size;\r
-  /* Cumulative costs of literals per position in the stream. */\r
-  float* literal_costs_;\r
-  float min_cost_cmd_;\r
-  size_t num_bytes_;\r
-} ZopfliCostModel;\r
-\r
-static void InitZopfliCostModel(\r
-    MemoryManager* m, ZopfliCostModel* self, const BrotliDistanceParams* dist,\r
-    size_t num_bytes) {\r
-  uint32_t distance_histogram_size = dist->alphabet_size;\r
-  if (distance_histogram_size > BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE) {\r
-    distance_histogram_size = BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE;\r
-  }\r
-  self->num_bytes_ = num_bytes;\r
-  self->literal_costs_ = BROTLI_ALLOC(m, float, num_bytes + 2);\r
-  self->cost_dist_ = BROTLI_ALLOC(m, float, dist->alphabet_size);\r
-  self->distance_histogram_size = distance_histogram_size;\r
-  if (BROTLI_IS_OOM(m)) return;\r
-}\r
-\r
-static void CleanupZopfliCostModel(MemoryManager* m, ZopfliCostModel* self) {\r
-  BROTLI_FREE(m, self->literal_costs_);\r
-  BROTLI_FREE(m, self->cost_dist_);\r
-}\r
-\r
-static void SetCost(const uint32_t* histogram, size_t histogram_size,\r
-                    BROTLI_BOOL literal_histogram, float* cost) {\r
-  size_t sum = 0;\r
-  size_t missing_symbol_sum;\r
-  float log2sum;\r
-  float missing_symbol_cost;\r
-  size_t i;\r
-  for (i = 0; i < histogram_size; i++) {\r
-    sum += histogram[i];\r
-  }\r
-  log2sum = (float)FastLog2(sum);\r
-  missing_symbol_sum = sum;\r
-  if (!literal_histogram) {\r
-    for (i = 0; i < histogram_size; i++) {\r
-      if (histogram[i] == 0) missing_symbol_sum++;\r
-    }\r
-  }\r
-  missing_symbol_cost = (float)FastLog2(missing_symbol_sum) + 2;\r
-  for (i = 0; i < histogram_size; i++) {\r
-    if (histogram[i] == 0) {\r
-      cost[i] = missing_symbol_cost;\r
-      continue;\r
-    }\r
-\r
-    /* Shannon bits for this symbol. */\r
-    cost[i] = log2sum - (float)FastLog2(histogram[i]);\r
-\r
-    /* Cannot be coded with less than 1 bit */\r
-    if (cost[i] < 1) cost[i] = 1;\r
-  }\r
-}\r
-\r
-static void ZopfliCostModelSetFromCommands(ZopfliCostModel* self,\r
-                                           size_t position,\r
-                                           const uint8_t* ringbuffer,\r
-                                           size_t ringbuffer_mask,\r
-                                           const Command* commands,\r
-                                           size_t num_commands,\r
-                                           size_t last_insert_len) {\r
-  uint32_t histogram_literal[BROTLI_NUM_LITERAL_SYMBOLS];\r
-  uint32_t histogram_cmd[BROTLI_NUM_COMMAND_SYMBOLS];\r
-  uint32_t histogram_dist[BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE];\r
-  float cost_literal[BROTLI_NUM_LITERAL_SYMBOLS];\r
-  size_t pos = position - last_insert_len;\r
-  float min_cost_cmd = kInfinity;\r
-  size_t i;\r
-  float* cost_cmd = self->cost_cmd_;\r
-\r
-  memset(histogram_literal, 0, sizeof(histogram_literal));\r
-  memset(histogram_cmd, 0, sizeof(histogram_cmd));\r
-  memset(histogram_dist, 0, sizeof(histogram_dist));\r
-\r
-  for (i = 0; i < num_commands; i++) {\r
-    size_t inslength = commands[i].insert_len_;\r
-    size_t copylength = CommandCopyLen(&commands[i]);\r
-    size_t distcode = commands[i].dist_prefix_ & 0x3FF;\r
-    size_t cmdcode = commands[i].cmd_prefix_;\r
-    size_t j;\r
-\r
-    histogram_cmd[cmdcode]++;\r
-    if (cmdcode >= 128) histogram_dist[distcode]++;\r
-\r
-    for (j = 0; j < inslength; j++) {\r
-      histogram_literal[ringbuffer[(pos + j) & ringbuffer_mask]]++;\r
-    }\r
-\r
-    pos += inslength + copylength;\r
-  }\r
-\r
-  SetCost(histogram_literal, BROTLI_NUM_LITERAL_SYMBOLS, BROTLI_TRUE,\r
-          cost_literal);\r
-  SetCost(histogram_cmd, BROTLI_NUM_COMMAND_SYMBOLS, BROTLI_FALSE,\r
-          cost_cmd);\r
-  SetCost(histogram_dist, self->distance_histogram_size, BROTLI_FALSE,\r
-          self->cost_dist_);\r
-\r
-  for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) {\r
-    min_cost_cmd = BROTLI_MIN(float, min_cost_cmd, cost_cmd[i]);\r
-  }\r
-  self->min_cost_cmd_ = min_cost_cmd;\r
-\r
-  {\r
-    float* literal_costs = self->literal_costs_;\r
-    float literal_carry = 0.0;\r
-    size_t num_bytes = self->num_bytes_;\r
-    literal_costs[0] = 0.0;\r
-    for (i = 0; i < num_bytes; ++i) {\r
-      literal_carry +=\r
-          cost_literal[ringbuffer[(position + i) & ringbuffer_mask]];\r
-      literal_costs[i + 1] = literal_costs[i] + literal_carry;\r
-      literal_carry -= literal_costs[i + 1] - literal_costs[i];\r
-    }\r
-  }\r
-}\r
-\r
-static void ZopfliCostModelSetFromLiteralCosts(ZopfliCostModel* self,\r
-                                               size_t position,\r
-                                               const uint8_t* ringbuffer,\r
-                                               size_t ringbuffer_mask) {\r
-  float* literal_costs = self->literal_costs_;\r
-  float literal_carry = 0.0;\r
-  float* cost_dist = self->cost_dist_;\r
-  float* cost_cmd = self->cost_cmd_;\r
-  size_t num_bytes = self->num_bytes_;\r
-  size_t i;\r
-  BrotliEstimateBitCostsForLiterals(position, num_bytes, ringbuffer_mask,\r
-                                    ringbuffer, &literal_costs[1]);\r
-  literal_costs[0] = 0.0;\r
-  for (i = 0; i < num_bytes; ++i) {\r
-    literal_carry += literal_costs[i + 1];\r
-    literal_costs[i + 1] = literal_costs[i] + literal_carry;\r
-    literal_carry -= literal_costs[i + 1] - literal_costs[i];\r
-  }\r
-  for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) {\r
-    cost_cmd[i] = (float)FastLog2(11 + (uint32_t)i);\r
-  }\r
-  for (i = 0; i < self->distance_histogram_size; ++i) {\r
-    cost_dist[i] = (float)FastLog2(20 + (uint32_t)i);\r
-  }\r
-  self->min_cost_cmd_ = (float)FastLog2(11);\r
-}\r
-\r
-static BROTLI_INLINE float ZopfliCostModelGetCommandCost(\r
-    const ZopfliCostModel* self, uint16_t cmdcode) {\r
-  return self->cost_cmd_[cmdcode];\r
-}\r
-\r
-static BROTLI_INLINE float ZopfliCostModelGetDistanceCost(\r
-    const ZopfliCostModel* self, size_t distcode) {\r
-  return self->cost_dist_[distcode];\r
-}\r
-\r
-static BROTLI_INLINE float ZopfliCostModelGetLiteralCosts(\r
-    const ZopfliCostModel* self, size_t from, size_t to) {\r
-  return self->literal_costs_[to] - self->literal_costs_[from];\r
-}\r
-\r
-static BROTLI_INLINE float ZopfliCostModelGetMinCostCmd(\r
-    const ZopfliCostModel* self) {\r
-  return self->min_cost_cmd_;\r
-}\r
-\r
-/* REQUIRES: len >= 2, start_pos <= pos */\r
-/* REQUIRES: cost < kInfinity, nodes[start_pos].cost < kInfinity */\r
-/* Maintains the "ZopfliNode array invariant". */\r
-static BROTLI_INLINE void UpdateZopfliNode(ZopfliNode* nodes, size_t pos,\r
-    size_t start_pos, size_t len, size_t len_code, size_t dist,\r
-    size_t short_code, float cost) {\r
-  ZopfliNode* next = &nodes[pos + len];\r
-  next->length = (uint32_t)(len | ((len + 9u - len_code) << 25));\r
-  next->distance = (uint32_t)dist;\r
-  next->dcode_insert_length = (uint32_t)(\r
-      (short_code << 27) | (pos - start_pos));\r
-  next->u.cost = cost;\r
-}\r
-\r
-typedef struct PosData {\r
-  size_t pos;\r
-  int distance_cache[4];\r
-  float costdiff;\r
-  float cost;\r
-} PosData;\r
-\r
-/* Maintains the smallest 8 cost difference together with their positions */\r
-typedef struct StartPosQueue {\r
-  PosData q_[8];\r
-  size_t idx_;\r
-} StartPosQueue;\r
-\r
-static BROTLI_INLINE void InitStartPosQueue(StartPosQueue* self) {\r
-  self->idx_ = 0;\r
-}\r
-\r
-static size_t StartPosQueueSize(const StartPosQueue* self) {\r
-  return BROTLI_MIN(size_t, self->idx_, 8);\r
-}\r
-\r
-static void StartPosQueuePush(StartPosQueue* self, const PosData* posdata) {\r
-  size_t offset = ~(self->idx_++) & 7;\r
-  size_t len = StartPosQueueSize(self);\r
-  size_t i;\r
-  PosData* q = self->q_;\r
-  q[offset] = *posdata;\r
-  /* Restore the sorted order. In the list of |len| items at most |len - 1|\r
-     adjacent element comparisons / swaps are required. */\r
-  for (i = 1; i < len; ++i) {\r
-    if (q[offset & 7].costdiff > q[(offset + 1) & 7].costdiff) {\r
-      BROTLI_SWAP(PosData, q, offset & 7, (offset + 1) & 7);\r
-    }\r
-    ++offset;\r
-  }\r
-}\r
-\r
-static const PosData* StartPosQueueAt(const StartPosQueue* self, size_t k) {\r
-  return &self->q_[(k - self->idx_) & 7];\r
-}\r
-\r
-/* Returns the minimum possible copy length that can improve the cost of any */\r
-/* future position. */\r
-static size_t ComputeMinimumCopyLength(const float start_cost,\r
-                                       const ZopfliNode* nodes,\r
-                                       const size_t num_bytes,\r
-                                       const size_t pos) {\r
-  /* Compute the minimum possible cost of reaching any future position. */\r
-  float min_cost = start_cost;\r
-  size_t len = 2;\r
-  size_t next_len_bucket = 4;\r
-  size_t next_len_offset = 10;\r
-  while (pos + len <= num_bytes && nodes[pos + len].u.cost <= min_cost) {\r
-    /* We already reached (pos + len) with no more cost than the minimum\r
-       possible cost of reaching anything from this pos, so there is no point in\r
-       looking for lengths <= len. */\r
-    ++len;\r
-    if (len == next_len_offset) {\r
-      /* We reached the next copy length code bucket, so we add one more\r
-         extra bit to the minimum cost. */\r
-      min_cost += 1.0f;\r
-      next_len_offset += next_len_bucket;\r
-      next_len_bucket *= 2;\r
-    }\r
-  }\r
-  return len;\r
-}\r
-\r
-/* REQUIRES: nodes[pos].cost < kInfinity\r
-   REQUIRES: nodes[0..pos] satisfies that "ZopfliNode array invariant". */\r
-static uint32_t ComputeDistanceShortcut(const size_t block_start,\r
-                                        const size_t pos,\r
-                                        const size_t max_backward,\r
-                                        const size_t gap,\r
-                                        const ZopfliNode* nodes) {\r
-  const size_t clen = ZopfliNodeCopyLength(&nodes[pos]);\r
-  const size_t ilen = nodes[pos].dcode_insert_length & 0x7FFFFFF;\r
-  const size_t dist = ZopfliNodeCopyDistance(&nodes[pos]);\r
-  /* Since |block_start + pos| is the end position of the command, the copy part\r
-     starts from |block_start + pos - clen|. Distances that are greater than\r
-     this or greater than |max_backward| are static dictionary references, and\r
-     do not update the last distances. Also distance code 0 (last distance)\r
-     does not update the last distances. */\r
-  if (pos == 0) {\r
-    return 0;\r
-  } else if (dist + clen <= block_start + pos + gap &&\r
-             dist <= max_backward + gap &&\r
-             ZopfliNodeDistanceCode(&nodes[pos]) > 0) {\r
-    return (uint32_t)pos;\r
-  } else {\r
-    return nodes[pos - clen - ilen].u.shortcut;\r
-  }\r
-}\r
-\r
-/* Fills in dist_cache[0..3] with the last four distances (as defined by\r
-   Section 4. of the Spec) that would be used at (block_start + pos) if we\r
-   used the shortest path of commands from block_start, computed from\r
-   nodes[0..pos]. The last four distances at block_start are in\r
-   starting_dist_cache[0..3].\r
-   REQUIRES: nodes[pos].cost < kInfinity\r
-   REQUIRES: nodes[0..pos] satisfies that "ZopfliNode array invariant". */\r
-static void ComputeDistanceCache(const size_t pos,\r
-                                 const int* starting_dist_cache,\r
-                                 const ZopfliNode* nodes,\r
-                                 int* dist_cache) {\r
-  int idx = 0;\r
-  size_t p = nodes[pos].u.shortcut;\r
-  while (idx < 4 && p > 0) {\r
-    const size_t ilen = nodes[p].dcode_insert_length & 0x7FFFFFF;\r
-    const size_t clen = ZopfliNodeCopyLength(&nodes[p]);\r
-    const size_t dist = ZopfliNodeCopyDistance(&nodes[p]);\r
-    dist_cache[idx++] = (int)dist;\r
-    /* Because of prerequisite, p >= clen + ilen >= 2. */\r
-    p = nodes[p - clen - ilen].u.shortcut;\r
-  }\r
-  for (; idx < 4; ++idx) {\r
-    dist_cache[idx] = *starting_dist_cache++;\r
-  }\r
-}\r
-\r
-/* Maintains "ZopfliNode array invariant" and pushes node to the queue, if it\r
-   is eligible. */\r
-static void EvaluateNode(\r
-    const size_t block_start, const size_t pos, const size_t max_backward_limit,\r
-    const size_t gap, const int* starting_dist_cache,\r
-    const ZopfliCostModel* model, StartPosQueue* queue, ZopfliNode* nodes) {\r
-  /* Save cost, because ComputeDistanceCache invalidates it. */\r
-  float node_cost = nodes[pos].u.cost;\r
-  nodes[pos].u.shortcut = ComputeDistanceShortcut(\r
-      block_start, pos, max_backward_limit, gap, nodes);\r
-  if (node_cost <= ZopfliCostModelGetLiteralCosts(model, 0, pos)) {\r
-    PosData posdata;\r
-    posdata.pos = pos;\r
-    posdata.cost = node_cost;\r
-    posdata.costdiff = node_cost -\r
-        ZopfliCostModelGetLiteralCosts(model, 0, pos);\r
-    ComputeDistanceCache(\r
-        pos, starting_dist_cache, nodes, posdata.distance_cache);\r
-    StartPosQueuePush(queue, &posdata);\r
-  }\r
-}\r
-\r
-/* Returns longest copy length. */\r
-static size_t UpdateNodes(\r
-    const size_t num_bytes, const size_t block_start, const size_t pos,\r
-    const uint8_t* ringbuffer, const size_t ringbuffer_mask,\r
-    const BrotliEncoderParams* params, const size_t max_backward_limit,\r
-    const int* starting_dist_cache, const size_t num_matches,\r
-    const BackwardMatch* matches, const ZopfliCostModel* model,\r
-    StartPosQueue* queue, ZopfliNode* nodes) {\r
-  const size_t cur_ix = block_start + pos;\r
-  const size_t cur_ix_masked = cur_ix & ringbuffer_mask;\r
-  const size_t max_distance = BROTLI_MIN(size_t, cur_ix, max_backward_limit);\r
-  const size_t max_len = num_bytes - pos;\r
-  const size_t max_zopfli_len = MaxZopfliLen(params);\r
-  const size_t max_iters = MaxZopfliCandidates(params);\r
-  size_t min_len;\r
-  size_t result = 0;\r
-  size_t k;\r
-  size_t gap = 0;\r
-\r
-  EvaluateNode(block_start, pos, max_backward_limit, gap, starting_dist_cache,\r
-      model, queue, nodes);\r
-\r
-  {\r
-    const PosData* posdata = StartPosQueueAt(queue, 0);\r
-    float min_cost = (posdata->cost + ZopfliCostModelGetMinCostCmd(model) +\r
-        ZopfliCostModelGetLiteralCosts(model, posdata->pos, pos));\r
-    min_len = ComputeMinimumCopyLength(min_cost, nodes, num_bytes, pos);\r
-  }\r
-\r
-  /* Go over the command starting positions in order of increasing cost\r
-     difference. */\r
-  for (k = 0; k < max_iters && k < StartPosQueueSize(queue); ++k) {\r
-    const PosData* posdata = StartPosQueueAt(queue, k);\r
-    const size_t start = posdata->pos;\r
-    const uint16_t inscode = GetInsertLengthCode(pos - start);\r
-    const float start_costdiff = posdata->costdiff;\r
-    const float base_cost = start_costdiff + (float)GetInsertExtra(inscode) +\r
-        ZopfliCostModelGetLiteralCosts(model, 0, pos);\r
-\r
-    /* Look for last distance matches using the distance cache from this\r
-       starting position. */\r
-    size_t best_len = min_len - 1;\r
-    size_t j = 0;\r
-    for (; j < BROTLI_NUM_DISTANCE_SHORT_CODES && best_len < max_len; ++j) {\r
-      const size_t idx = kDistanceCacheIndex[j];\r
-      const size_t backward =\r
-          (size_t)(posdata->distance_cache[idx] + kDistanceCacheOffset[j]);\r
-      size_t prev_ix = cur_ix - backward;\r
-      size_t len = 0;\r
-      uint8_t continuation = ringbuffer[cur_ix_masked + best_len];\r
-      if (cur_ix_masked + best_len > ringbuffer_mask) {\r
-        break;\r
-      }\r
-      if (BROTLI_PREDICT_FALSE(backward > max_distance + gap)) {\r
-        continue;\r
-      }\r
-      if (backward <= max_distance) {\r
-        if (prev_ix >= cur_ix) {\r
-          continue;\r
-        }\r
-\r
-        prev_ix &= ringbuffer_mask;\r
-        if (prev_ix + best_len > ringbuffer_mask ||\r
-            continuation != ringbuffer[prev_ix + best_len]) {\r
-          continue;\r
-        }\r
-        len = FindMatchLengthWithLimit(&ringbuffer[prev_ix],\r
-                                       &ringbuffer[cur_ix_masked],\r
-                                       max_len);\r
-      } else {\r
-        continue;\r
-      }\r
-      {\r
-        const float dist_cost = base_cost +\r
-            ZopfliCostModelGetDistanceCost(model, j);\r
-        size_t l;\r
-        for (l = best_len + 1; l <= len; ++l) {\r
-          const uint16_t copycode = GetCopyLengthCode(l);\r
-          const uint16_t cmdcode =\r
-              CombineLengthCodes(inscode, copycode, j == 0);\r
-          const float cost = (cmdcode < 128 ? base_cost : dist_cost) +\r
-              (float)GetCopyExtra(copycode) +\r
-              ZopfliCostModelGetCommandCost(model, cmdcode);\r
-          if (cost < nodes[pos + l].u.cost) {\r
-            UpdateZopfliNode(nodes, pos, start, l, l, backward, j + 1, cost);\r
-            result = BROTLI_MAX(size_t, result, l);\r
-          }\r
-          best_len = l;\r
-        }\r
-      }\r
-    }\r
-\r
-    /* At higher iterations look only for new last distance matches, since\r
-       looking only for new command start positions with the same distances\r
-       does not help much. */\r
-    if (k >= 2) continue;\r
-\r
-    {\r
-      /* Loop through all possible copy lengths at this position. */\r
-      size_t len = min_len;\r
-      for (j = 0; j < num_matches; ++j) {\r
-        BackwardMatch match = matches[j];\r
-        size_t dist = match.distance;\r
-        BROTLI_BOOL is_dictionary_match =\r
-            TO_BROTLI_BOOL(dist > max_distance + gap);\r
-        /* We already tried all possible last distance matches, so we can use\r
-           normal distance code here. */\r
-        size_t dist_code = dist + BROTLI_NUM_DISTANCE_SHORT_CODES - 1;\r
-        uint16_t dist_symbol;\r
-        uint32_t distextra;\r
-        uint32_t distnumextra;\r
-        float dist_cost;\r
-        size_t max_match_len;\r
-        PrefixEncodeCopyDistance(\r
-            dist_code, params->dist.num_direct_distance_codes,\r
-            params->dist.distance_postfix_bits, &dist_symbol, &distextra);\r
-        distnumextra = dist_symbol >> 10;\r
-        dist_cost = base_cost + (float)distnumextra +\r
-            ZopfliCostModelGetDistanceCost(model, dist_symbol & 0x3FF);\r
-\r
-        /* Try all copy lengths up until the maximum copy length corresponding\r
-           to this distance. If the distance refers to the static dictionary, or\r
-           the maximum length is long enough, try only one maximum length. */\r
-        max_match_len = BackwardMatchLength(&match);\r
-        if (len < max_match_len &&\r
-            (is_dictionary_match || max_match_len > max_zopfli_len)) {\r
-          len = max_match_len;\r
-        }\r
-        for (; len <= max_match_len; ++len) {\r
-          const size_t len_code =\r
-              is_dictionary_match ? BackwardMatchLengthCode(&match) : len;\r
-          const uint16_t copycode = GetCopyLengthCode(len_code);\r
-          const uint16_t cmdcode = CombineLengthCodes(inscode, copycode, 0);\r
-          const float cost = dist_cost + (float)GetCopyExtra(copycode) +\r
-              ZopfliCostModelGetCommandCost(model, cmdcode);\r
-          if (cost < nodes[pos + len].u.cost) {\r
-            UpdateZopfliNode(nodes, pos, start, len, len_code, dist, 0, cost);\r
-            result = BROTLI_MAX(size_t, result, len);\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  return result;\r
-}\r
-\r
-static size_t ComputeShortestPathFromNodes(size_t num_bytes,\r
-    ZopfliNode* nodes) {\r
-  size_t index = num_bytes;\r
-  size_t num_commands = 0;\r
-  while ((nodes[index].dcode_insert_length & 0x7FFFFFF) == 0 &&\r
-      nodes[index].length == 1) --index;\r
-  nodes[index].u.next = BROTLI_UINT32_MAX;\r
-  while (index != 0) {\r
-    size_t len = ZopfliNodeCommandLength(&nodes[index]);\r
-    index -= len;\r
-    nodes[index].u.next = (uint32_t)len;\r
-    num_commands++;\r
-  }\r
-  return num_commands;\r
-}\r
-\r
-/* REQUIRES: nodes != NULL and len(nodes) >= num_bytes + 1 */\r
-void BrotliZopfliCreateCommands(const size_t num_bytes,\r
-                                const size_t block_start,\r
-                                const size_t max_backward_limit,\r
-                                const ZopfliNode* nodes,\r
-                                int* dist_cache,\r
-                                size_t* last_insert_len,\r
-                                const BrotliEncoderParams* params,\r
-                                Command* commands,\r
-                                size_t* num_literals) {\r
-  size_t pos = 0;\r
-  uint32_t offset = nodes[0].u.next;\r
-  size_t i;\r
-  size_t gap = 0;\r
-  for (i = 0; offset != BROTLI_UINT32_MAX; i++) {\r
-    const ZopfliNode* next = &nodes[pos + offset];\r
-    size_t copy_length = ZopfliNodeCopyLength(next);\r
-    size_t insert_length = next->dcode_insert_length & 0x7FFFFFF;\r
-    pos += insert_length;\r
-    offset = next->u.next;\r
-    if (i == 0) {\r
-      insert_length += *last_insert_len;\r
-      *last_insert_len = 0;\r
-    }\r
-    {\r
-      size_t distance = ZopfliNodeCopyDistance(next);\r
-      size_t len_code = ZopfliNodeLengthCode(next);\r
-      size_t max_distance =\r
-          BROTLI_MIN(size_t, block_start + pos, max_backward_limit);\r
-      BROTLI_BOOL is_dictionary = TO_BROTLI_BOOL(distance > max_distance + gap);\r
-      size_t dist_code = ZopfliNodeDistanceCode(next);\r
-      InitCommand(&commands[i], &params->dist, insert_length,\r
-          copy_length, (int)len_code - (int)copy_length, dist_code);\r
-\r
-      if (!is_dictionary && dist_code > 0) {\r
-        dist_cache[3] = dist_cache[2];\r
-        dist_cache[2] = dist_cache[1];\r
-        dist_cache[1] = dist_cache[0];\r
-        dist_cache[0] = (int)distance;\r
-      }\r
-    }\r
-\r
-    *num_literals += insert_length;\r
-    pos += copy_length;\r
-  }\r
-  *last_insert_len += num_bytes - pos;\r
-}\r
-\r
-static size_t ZopfliIterate(size_t num_bytes,\r
-                            size_t position,\r
-                            const uint8_t* ringbuffer,\r
-                            size_t ringbuffer_mask,\r
-                            const BrotliEncoderParams* params,\r
-                            const size_t max_backward_limit,\r
-                            const size_t gap,\r
-                            const int* dist_cache,\r
-                            const ZopfliCostModel* model,\r
-                            const uint32_t* num_matches,\r
-                            const BackwardMatch* matches,\r
-                            ZopfliNode* nodes) {\r
-  const size_t max_zopfli_len = MaxZopfliLen(params);\r
-  StartPosQueue queue;\r
-  size_t cur_match_pos = 0;\r
-  size_t i;\r
-  nodes[0].length = 0;\r
-  nodes[0].u.cost = 0;\r
-  InitStartPosQueue(&queue);\r
-  for (i = 0; i + 3 < num_bytes; i++) {\r
-    size_t skip = UpdateNodes(num_bytes, position, i, ringbuffer,\r
-        ringbuffer_mask, params, max_backward_limit, dist_cache,\r
-        num_matches[i], &matches[cur_match_pos], model, &queue, nodes);\r
-    if (skip < BROTLI_LONG_COPY_QUICK_STEP) skip = 0;\r
-    cur_match_pos += num_matches[i];\r
-    if (num_matches[i] == 1 &&\r
-        BackwardMatchLength(&matches[cur_match_pos - 1]) > max_zopfli_len) {\r
-      skip = BROTLI_MAX(size_t,\r
-          BackwardMatchLength(&matches[cur_match_pos - 1]), skip);\r
-    }\r
-    if (skip > 1) {\r
-      skip--;\r
-      while (skip) {\r
-        i++;\r
-        if (i + 3 >= num_bytes) break;\r
-        EvaluateNode(position, i, max_backward_limit, gap, dist_cache, model,\r
-            &queue, nodes);\r
-        cur_match_pos += num_matches[i];\r
-        skip--;\r
-      }\r
-    }\r
-  }\r
-  return ComputeShortestPathFromNodes(num_bytes, nodes);\r
-}\r
-\r
-/* REQUIRES: nodes != NULL and len(nodes) >= num_bytes + 1 */\r
-size_t BrotliZopfliComputeShortestPath(MemoryManager* m,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    const size_t max_backward_limit, const int* dist_cache, HasherHandle hasher,\r
-    ZopfliNode* nodes) {\r
-  const size_t max_zopfli_len = MaxZopfliLen(params);\r
-  ZopfliCostModel model;\r
-  StartPosQueue queue;\r
-  BackwardMatch matches[2 * (MAX_NUM_MATCHES_H10 + 64)];\r
-  const size_t store_end = num_bytes >= StoreLookaheadH10() ?\r
-      position + num_bytes - StoreLookaheadH10() + 1 : position;\r
-  size_t i;\r
-  size_t gap = 0;\r
-  size_t lz_matches_offset = 0;\r
-  nodes[0].length = 0;\r
-  nodes[0].u.cost = 0;\r
-  InitZopfliCostModel(m, &model, &params->dist, num_bytes);\r
-  if (BROTLI_IS_OOM(m)) return 0;\r
-  ZopfliCostModelSetFromLiteralCosts(\r
-      &model, position, ringbuffer, ringbuffer_mask);\r
-  InitStartPosQueue(&queue);\r
-  for (i = 0; i + HashTypeLengthH10() - 1 < num_bytes; i++) {\r
-    const size_t pos = position + i;\r
-    const size_t max_distance = BROTLI_MIN(size_t, pos, max_backward_limit);\r
-    size_t skip;\r
-    size_t num_matches = FindAllMatchesH10(hasher, &params->dictionary,\r
-        ringbuffer, ringbuffer_mask, pos, num_bytes - i, max_distance, gap,\r
-        params, &matches[lz_matches_offset]);\r
-    if (num_matches > 0 &&\r
-        BackwardMatchLength(&matches[num_matches - 1]) > max_zopfli_len) {\r
-      matches[0] = matches[num_matches - 1];\r
-      num_matches = 1;\r
-    }\r
-    skip = UpdateNodes(num_bytes, position, i, ringbuffer, ringbuffer_mask,\r
-        params, max_backward_limit, dist_cache, num_matches, matches, &model,\r
-        &queue, nodes);\r
-    if (skip < BROTLI_LONG_COPY_QUICK_STEP) skip = 0;\r
-    if (num_matches == 1 && BackwardMatchLength(&matches[0]) > max_zopfli_len) {\r
-      skip = BROTLI_MAX(size_t, BackwardMatchLength(&matches[0]), skip);\r
-    }\r
-    if (skip > 1) {\r
-      /* Add the tail of the copy to the hasher. */\r
-      StoreRangeH10(hasher, ringbuffer, ringbuffer_mask, pos + 1, BROTLI_MIN(\r
-          size_t, pos + skip, store_end));\r
-      skip--;\r
-      while (skip) {\r
-        i++;\r
-        if (i + HashTypeLengthH10() - 1 >= num_bytes) break;\r
-        EvaluateNode(position, i, max_backward_limit, gap, dist_cache, &model,\r
-            &queue, nodes);\r
-        skip--;\r
-      }\r
-    }\r
-  }\r
-  CleanupZopfliCostModel(m, &model);\r
-  return ComputeShortestPathFromNodes(num_bytes, nodes);\r
-}\r
-\r
-void BrotliCreateZopfliBackwardReferences(MemoryManager* m,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,\r
-    Command* commands, size_t* num_commands, size_t* num_literals) {\r
-  const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(params->lgwin);\r
-  ZopfliNode* nodes;\r
-  nodes = BROTLI_ALLOC(m, ZopfliNode, num_bytes + 1);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BrotliInitZopfliNodes(nodes, num_bytes + 1);\r
-  *num_commands += BrotliZopfliComputeShortestPath(m,\r
-      num_bytes, position, ringbuffer, ringbuffer_mask,\r
-      params, max_backward_limit, dist_cache, hasher, nodes);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BrotliZopfliCreateCommands(num_bytes, position, max_backward_limit, nodes,\r
-      dist_cache, last_insert_len, params, commands, num_literals);\r
-  BROTLI_FREE(m, nodes);\r
-}\r
-\r
-void BrotliCreateHqZopfliBackwardReferences(MemoryManager* m,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,\r
-    Command* commands, size_t* num_commands, size_t* num_literals) {\r
-  const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(params->lgwin);\r
-  uint32_t* num_matches = BROTLI_ALLOC(m, uint32_t, num_bytes);\r
-  size_t matches_size = 4 * num_bytes;\r
-  const size_t store_end = num_bytes >= StoreLookaheadH10() ?\r
-      position + num_bytes - StoreLookaheadH10() + 1 : position;\r
-  size_t cur_match_pos = 0;\r
-  size_t i;\r
-  size_t orig_num_literals;\r
-  size_t orig_last_insert_len;\r
-  int orig_dist_cache[4];\r
-  size_t orig_num_commands;\r
-  ZopfliCostModel model;\r
-  ZopfliNode* nodes;\r
-  BackwardMatch* matches = BROTLI_ALLOC(m, BackwardMatch, matches_size);\r
-  size_t gap = 0;\r
-  size_t shadow_matches = 0;\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  for (i = 0; i + HashTypeLengthH10() - 1 < num_bytes; ++i) {\r
-    const size_t pos = position + i;\r
-    size_t max_distance = BROTLI_MIN(size_t, pos, max_backward_limit);\r
-    size_t max_length = num_bytes - i;\r
-    size_t num_found_matches;\r
-    size_t cur_match_end;\r
-    size_t j;\r
-    /* Ensure that we have enough free slots. */\r
-    BROTLI_ENSURE_CAPACITY(m, BackwardMatch, matches, matches_size,\r
-        cur_match_pos + MAX_NUM_MATCHES_H10 + shadow_matches);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    num_found_matches = FindAllMatchesH10(hasher,\r
-        &params->dictionary, ringbuffer, ringbuffer_mask, pos, max_length,\r
-        max_distance, gap, params, &matches[cur_match_pos + shadow_matches]);\r
-    cur_match_end = cur_match_pos + num_found_matches;\r
-    for (j = cur_match_pos; j + 1 < cur_match_end; ++j) {\r
-      BROTLI_DCHECK(BackwardMatchLength(&matches[j]) <=\r
-          BackwardMatchLength(&matches[j + 1]));\r
-    }\r
-    num_matches[i] = (uint32_t)num_found_matches;\r
-    if (num_found_matches > 0) {\r
-      const size_t match_len = BackwardMatchLength(&matches[cur_match_end - 1]);\r
-      if (match_len > MAX_ZOPFLI_LEN_QUALITY_11) {\r
-        const size_t skip = match_len - 1;\r
-        matches[cur_match_pos++] = matches[cur_match_end - 1];\r
-        num_matches[i] = 1;\r
-        /* Add the tail of the copy to the hasher. */\r
-        StoreRangeH10(hasher, ringbuffer, ringbuffer_mask, pos + 1,\r
-                      BROTLI_MIN(size_t, pos + match_len, store_end));\r
-        memset(&num_matches[i + 1], 0, skip * sizeof(num_matches[0]));\r
-        i += skip;\r
-      } else {\r
-        cur_match_pos = cur_match_end;\r
-      }\r
-    }\r
-  }\r
-  orig_num_literals = *num_literals;\r
-  orig_last_insert_len = *last_insert_len;\r
-  memcpy(orig_dist_cache, dist_cache, 4 * sizeof(dist_cache[0]));\r
-  orig_num_commands = *num_commands;\r
-  nodes = BROTLI_ALLOC(m, ZopfliNode, num_bytes + 1);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  InitZopfliCostModel(m, &model, &params->dist, num_bytes);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  for (i = 0; i < 2; i++) {\r
-    BrotliInitZopfliNodes(nodes, num_bytes + 1);\r
-    if (i == 0) {\r
-      ZopfliCostModelSetFromLiteralCosts(\r
-          &model, position, ringbuffer, ringbuffer_mask);\r
-    } else {\r
-      ZopfliCostModelSetFromCommands(&model, position, ringbuffer,\r
-          ringbuffer_mask, commands, *num_commands - orig_num_commands,\r
-          orig_last_insert_len);\r
-    }\r
-    *num_commands = orig_num_commands;\r
-    *num_literals = orig_num_literals;\r
-    *last_insert_len = orig_last_insert_len;\r
-    memcpy(dist_cache, orig_dist_cache, 4 * sizeof(dist_cache[0]));\r
-    *num_commands += ZopfliIterate(num_bytes, position, ringbuffer,\r
-        ringbuffer_mask, params, max_backward_limit, gap, dist_cache,\r
-        &model, num_matches, matches, nodes);\r
-    BrotliZopfliCreateCommands(num_bytes, position, max_backward_limit,\r
-        nodes, dist_cache, last_insert_len, params, commands, num_literals);\r
-  }\r
-  CleanupZopfliCostModel(m, &model);\r
-  BROTLI_FREE(m, nodes);\r
-  BROTLI_FREE(m, matches);\r
-  BROTLI_FREE(m, num_matches);\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.h b/BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.h
deleted file mode 100644 (file)
index 60b3b34..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function to find backward reference copies. */\r
-\r
-#ifndef BROTLI_ENC_BACKWARD_REFERENCES_HQ_H_\r
-#define BROTLI_ENC_BACKWARD_REFERENCES_HQ_H_\r
-\r
-#include "../common/constants.h"\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./command.h"\r
-#include "./hash.h"\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-BROTLI_INTERNAL void BrotliCreateZopfliBackwardReferences(MemoryManager* m,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,\r
-    Command* commands, size_t* num_commands, size_t* num_literals);\r
-\r
-BROTLI_INTERNAL void BrotliCreateHqZopfliBackwardReferences(MemoryManager* m,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,\r
-    Command* commands, size_t* num_commands, size_t* num_literals);\r
-\r
-typedef struct ZopfliNode {\r
-  /* Best length to get up to this byte (not including this byte itself)\r
-     highest 7 bit is used to reconstruct the length code. */\r
-  uint32_t length;\r
-  /* Distance associated with the length. */\r
-  uint32_t distance;\r
-  /* Number of literal inserts before this copy; highest 5 bits contain\r
-     distance short code + 1 (or zero if no short code). */\r
-  uint32_t dcode_insert_length;\r
-\r
-  /* This union holds information used by dynamic-programming. During forward\r
-     pass |cost| it used to store the goal function. When node is processed its\r
-     |cost| is invalidated in favor of |shortcut|. On path back-tracing pass\r
-     |next| is assigned the offset to next node on the path. */\r
-  union {\r
-    /* Smallest cost to get to this byte from the beginning, as found so far. */\r
-    float cost;\r
-    /* Offset to the next node on the path. Equals to command_length() of the\r
-       next node on the path. For last node equals to BROTLI_UINT32_MAX */\r
-    uint32_t next;\r
-    /* Node position that provides next distance for distance cache. */\r
-    uint32_t shortcut;\r
-  } u;\r
-} ZopfliNode;\r
-\r
-BROTLI_INTERNAL void BrotliInitZopfliNodes(ZopfliNode* array, size_t length);\r
-\r
-/* Computes the shortest path of commands from position to at most\r
-   position + num_bytes.\r
-\r
-   On return, path->size() is the number of commands found and path[i] is the\r
-   length of the i-th command (copy length plus insert length).\r
-   Note that the sum of the lengths of all commands can be less than num_bytes.\r
-\r
-   On return, the nodes[0..num_bytes] array will have the following\r
-   "ZopfliNode array invariant":\r
-   For each i in [1..num_bytes], if nodes[i].cost < kInfinity, then\r
-     (1) nodes[i].copy_length() >= 2\r
-     (2) nodes[i].command_length() <= i and\r
-     (3) nodes[i - nodes[i].command_length()].cost < kInfinity */\r
-BROTLI_INTERNAL size_t BrotliZopfliComputeShortestPath(MemoryManager* m,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask, const BrotliEncoderParams* params,\r
-    const size_t max_backward_limit, const int* dist_cache, HasherHandle hasher,\r
-    ZopfliNode* nodes);\r
-\r
-BROTLI_INTERNAL void BrotliZopfliCreateCommands(\r
-    const size_t num_bytes, const size_t block_start,\r
-    const size_t max_backward_limit, const ZopfliNode* nodes,\r
-    int* dist_cache, size_t* last_insert_len, const BrotliEncoderParams* params,\r
-    Command* commands, size_t* num_literals);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_BACKWARD_REFERENCES_HQ_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/backward_references_inc.h b/BaseTools/Source/C/BrotliCompress/enc/backward_references_inc.h
deleted file mode 100644 (file)
index 39c6f82..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: EXPORT_FN, FN */\r
-\r
-static BROTLI_NOINLINE void EXPORT_FN(CreateBackwardReferences)(\r
-    size_t num_bytes, size_t position,\r
-    const uint8_t* ringbuffer, size_t ringbuffer_mask,\r
-    const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache,\r
-    size_t* last_insert_len, Command* commands, size_t* num_commands,\r
-    size_t* num_literals) {\r
-  /* Set maximum distance, see section 9.1. of the spec. */\r
-  const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(params->lgwin);\r
-\r
-  const Command* const orig_commands = commands;\r
-  size_t insert_length = *last_insert_len;\r
-  const size_t pos_end = position + num_bytes;\r
-  const size_t store_end = num_bytes >= FN(StoreLookahead)() ?\r
-      position + num_bytes - FN(StoreLookahead)() + 1 : position;\r
-\r
-  /* For speed up heuristics for random data. */\r
-  const size_t random_heuristics_window_size =\r
-      LiteralSpreeLengthForSparseSearch(params);\r
-  size_t apply_random_heuristics = position + random_heuristics_window_size;\r
-  const size_t gap = 0;\r
-\r
-  /* Minimum score to accept a backward reference. */\r
-  const score_t kMinScore = BROTLI_SCORE_BASE + 100;\r
-\r
-  FN(PrepareDistanceCache)(hasher, dist_cache);\r
-\r
-  while (position + FN(HashTypeLength)() < pos_end) {\r
-    size_t max_length = pos_end - position;\r
-    size_t max_distance = BROTLI_MIN(size_t, position, max_backward_limit);\r
-    HasherSearchResult sr;\r
-    sr.len = 0;\r
-    sr.len_code_delta = 0;\r
-    sr.distance = 0;\r
-    sr.score = kMinScore;\r
-    FN(FindLongestMatch)(hasher, &params->dictionary,\r
-                         ringbuffer, ringbuffer_mask, dist_cache, position,\r
-                         max_length, max_distance, gap,\r
-                         params->dist.max_distance, &sr);\r
-    if (sr.score > kMinScore) {\r
-      /* Found a match. Let's look for something even better ahead. */\r
-      int delayed_backward_references_in_row = 0;\r
-      --max_length;\r
-      for (;; --max_length) {\r
-        const score_t cost_diff_lazy = 175;\r
-        HasherSearchResult sr2;\r
-        sr2.len = params->quality < MIN_QUALITY_FOR_EXTENSIVE_REFERENCE_SEARCH ?\r
-            BROTLI_MIN(size_t, sr.len - 1, max_length) : 0;\r
-        sr2.len_code_delta = 0;\r
-        sr2.distance = 0;\r
-        sr2.score = kMinScore;\r
-        max_distance = BROTLI_MIN(size_t, position + 1, max_backward_limit);\r
-        FN(FindLongestMatch)(hasher, &params->dictionary,\r
-            ringbuffer, ringbuffer_mask, dist_cache, position + 1, max_length,\r
-            max_distance, gap, params->dist.max_distance, &sr2);\r
-        if (sr2.score >= sr.score + cost_diff_lazy) {\r
-          /* Ok, let's just write one byte for now and start a match from the\r
-             next byte. */\r
-          ++position;\r
-          ++insert_length;\r
-          sr = sr2;\r
-          if (++delayed_backward_references_in_row < 4 &&\r
-              position + FN(HashTypeLength)() < pos_end) {\r
-            continue;\r
-          }\r
-        }\r
-        break;\r
-      }\r
-      apply_random_heuristics =\r
-          position + 2 * sr.len + random_heuristics_window_size;\r
-      max_distance = BROTLI_MIN(size_t, position, max_backward_limit);\r
-      {\r
-        /* The first 16 codes are special short-codes,\r
-           and the minimum offset is 1. */\r
-        size_t distance_code =\r
-            ComputeDistanceCode(sr.distance, max_distance + gap, dist_cache);\r
-        if ((sr.distance <= (max_distance + gap)) && distance_code > 0) {\r
-          dist_cache[3] = dist_cache[2];\r
-          dist_cache[2] = dist_cache[1];\r
-          dist_cache[1] = dist_cache[0];\r
-          dist_cache[0] = (int)sr.distance;\r
-          FN(PrepareDistanceCache)(hasher, dist_cache);\r
-        }\r
-        InitCommand(commands++, &params->dist, insert_length,\r
-            sr.len, sr.len_code_delta, distance_code);\r
-      }\r
-      *num_literals += insert_length;\r
-      insert_length = 0;\r
-      /* Put the hash keys into the table, if there are enough bytes left.\r
-         Depending on the hasher implementation, it can push all positions\r
-         in the given range or only a subset of them.\r
-         Avoid hash poisoning with RLE data. */\r
-      {\r
-        size_t range_start = position + 2;\r
-        size_t range_end = BROTLI_MIN(size_t, position + sr.len, store_end);\r
-        if (sr.distance < (sr.len >> 2)) {\r
-          range_start = BROTLI_MIN(size_t, range_end, BROTLI_MAX(size_t,\r
-              range_start, position + sr.len - (sr.distance << 2)));\r
-        }\r
-        FN(StoreRange)(hasher, ringbuffer, ringbuffer_mask, range_start,\r
-                       range_end);\r
-      }\r
-      position += sr.len;\r
-    } else {\r
-      ++insert_length;\r
-      ++position;\r
-      /* If we have not seen matches for a long time, we can skip some\r
-         match lookups. Unsuccessful match lookups are very very expensive\r
-         and this kind of a heuristic speeds up compression quite\r
-         a lot. */\r
-      if (position > apply_random_heuristics) {\r
-        /* Going through uncompressible data, jump. */\r
-        if (position >\r
-            apply_random_heuristics + 4 * random_heuristics_window_size) {\r
-          /* It is quite a long time since we saw a copy, so we assume\r
-             that this data is not compressible, and store hashes less\r
-             often. Hashes of non compressible data are less likely to\r
-             turn out to be useful in the future, too, so we store less of\r
-             them to not to flood out the hash table of good compressible\r
-             data. */\r
-          const size_t kMargin =\r
-              BROTLI_MAX(size_t, FN(StoreLookahead)() - 1, 4);\r
-          size_t pos_jump =\r
-              BROTLI_MIN(size_t, position + 16, pos_end - kMargin);\r
-          for (; position < pos_jump; position += 4) {\r
-            FN(Store)(hasher, ringbuffer, ringbuffer_mask, position);\r
-            insert_length += 4;\r
-          }\r
-        } else {\r
-          const size_t kMargin =\r
-              BROTLI_MAX(size_t, FN(StoreLookahead)() - 1, 2);\r
-          size_t pos_jump =\r
-              BROTLI_MIN(size_t, position + 8, pos_end - kMargin);\r
-          for (; position < pos_jump; position += 2) {\r
-            FN(Store)(hasher, ringbuffer, ringbuffer_mask, position);\r
-            insert_length += 2;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  insert_length += pos_end - position;\r
-  *last_insert_len = insert_length;\r
-  *num_commands += (size_t)(commands - orig_commands);\r
-}\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/bit_cost.c b/BaseTools/Source/C/BrotliCompress/enc/bit_cost.c
deleted file mode 100644 (file)
index c8ee842..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Functions to estimate the bit cost of Huffman trees. */\r
-\r
-#include "./bit_cost.h"\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./fast_log.h"\r
-#include "./histogram.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define FN(X) X ## Literal\r
-#include "./bit_cost_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Command\r
-#include "./bit_cost_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Distance\r
-#include "./bit_cost_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/bit_cost.h b/BaseTools/Source/C/BrotliCompress/enc/bit_cost.h
deleted file mode 100644 (file)
index e7ab2ea..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Functions to estimate the bit cost of Huffman trees. */\r
-\r
-#ifndef BROTLI_ENC_BIT_COST_H_\r
-#define BROTLI_ENC_BIT_COST_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./fast_log.h"\r
-#include "./histogram.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static BROTLI_INLINE double ShannonEntropy(\r
-    const uint32_t* population, size_t size, size_t* total) {\r
-  size_t sum = 0;\r
-  double retval = 0;\r
-  const uint32_t* population_end = population + size;\r
-  size_t p;\r
-  if (size & 1) {\r
-    goto odd_number_of_elements_left;\r
-  }\r
-  while (population < population_end) {\r
-    p = *population++;\r
-    sum += p;\r
-    retval -= (double)p * FastLog2(p);\r
- odd_number_of_elements_left:\r
-    p = *population++;\r
-    sum += p;\r
-    retval -= (double)p * FastLog2(p);\r
-  }\r
-  if (sum) retval += (double)sum * FastLog2(sum);\r
-  *total = sum;\r
-  return retval;\r
-}\r
-\r
-static BROTLI_INLINE double BitsEntropy(\r
-    const uint32_t* population, size_t size) {\r
-  size_t sum;\r
-  double retval = ShannonEntropy(population, size, &sum);\r
-  if (retval < sum) {\r
-    /* At least one bit per literal is needed. */\r
-    retval = (double)sum;\r
-  }\r
-  return retval;\r
-}\r
-\r
-BROTLI_INTERNAL double BrotliPopulationCostLiteral(const HistogramLiteral*);\r
-BROTLI_INTERNAL double BrotliPopulationCostCommand(const HistogramCommand*);\r
-BROTLI_INTERNAL double BrotliPopulationCostDistance(const HistogramDistance*);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_BIT_COST_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/bit_cost_inc.h b/BaseTools/Source/C/BrotliCompress/enc/bit_cost_inc.h
deleted file mode 100644 (file)
index c96bdda..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN */\r
-\r
-#define HistogramType FN(Histogram)\r
-\r
-double FN(BrotliPopulationCost)(const HistogramType* histogram) {\r
-  static const double kOneSymbolHistogramCost = 12;\r
-  static const double kTwoSymbolHistogramCost = 20;\r
-  static const double kThreeSymbolHistogramCost = 28;\r
-  static const double kFourSymbolHistogramCost = 37;\r
-  const size_t data_size = FN(HistogramDataSize)();\r
-  int count = 0;\r
-  size_t s[5];\r
-  double bits = 0.0;\r
-  size_t i;\r
-  if (histogram->total_count_ == 0) {\r
-    return kOneSymbolHistogramCost;\r
-  }\r
-  for (i = 0; i < data_size; ++i) {\r
-    if (histogram->data_[i] > 0) {\r
-      s[count] = i;\r
-      ++count;\r
-      if (count > 4) break;\r
-    }\r
-  }\r
-  if (count == 1) {\r
-    return kOneSymbolHistogramCost;\r
-  }\r
-  if (count == 2) {\r
-    return (kTwoSymbolHistogramCost + (double)histogram->total_count_);\r
-  }\r
-  if (count == 3) {\r
-    const uint32_t histo0 = histogram->data_[s[0]];\r
-    const uint32_t histo1 = histogram->data_[s[1]];\r
-    const uint32_t histo2 = histogram->data_[s[2]];\r
-    const uint32_t histomax =\r
-        BROTLI_MAX(uint32_t, histo0, BROTLI_MAX(uint32_t, histo1, histo2));\r
-    return (kThreeSymbolHistogramCost +\r
-            2 * (histo0 + histo1 + histo2) - histomax);\r
-  }\r
-  if (count == 4) {\r
-    uint32_t histo[4];\r
-    uint32_t h23;\r
-    uint32_t histomax;\r
-    for (i = 0; i < 4; ++i) {\r
-      histo[i] = histogram->data_[s[i]];\r
-    }\r
-    /* Sort */\r
-    for (i = 0; i < 4; ++i) {\r
-      size_t j;\r
-      for (j = i + 1; j < 4; ++j) {\r
-        if (histo[j] > histo[i]) {\r
-          BROTLI_SWAP(uint32_t, histo, j, i);\r
-        }\r
-      }\r
-    }\r
-    h23 = histo[2] + histo[3];\r
-    histomax = BROTLI_MAX(uint32_t, h23, histo[0]);\r
-    return (kFourSymbolHistogramCost +\r
-            3 * h23 + 2 * (histo[0] + histo[1]) - histomax);\r
-  }\r
-\r
-  {\r
-    /* In this loop we compute the entropy of the histogram and simultaneously\r
-       build a simplified histogram of the code length codes where we use the\r
-       zero repeat code 17, but we don't use the non-zero repeat code 16. */\r
-    size_t max_depth = 1;\r
-    uint32_t depth_histo[BROTLI_CODE_LENGTH_CODES] = { 0 };\r
-    const double log2total = FastLog2(histogram->total_count_);\r
-    for (i = 0; i < data_size;) {\r
-      if (histogram->data_[i] > 0) {\r
-        /* Compute -log2(P(symbol)) = -log2(count(symbol)/total_count) =\r
-                                    = log2(total_count) - log2(count(symbol)) */\r
-        double log2p = log2total - FastLog2(histogram->data_[i]);\r
-        /* Approximate the bit depth by round(-log2(P(symbol))) */\r
-        size_t depth = (size_t)(log2p + 0.5);\r
-        bits += histogram->data_[i] * log2p;\r
-        if (depth > 15) {\r
-          depth = 15;\r
-        }\r
-        if (depth > max_depth) {\r
-          max_depth = depth;\r
-        }\r
-        ++depth_histo[depth];\r
-        ++i;\r
-      } else {\r
-        /* Compute the run length of zeros and add the appropriate number of 0\r
-           and 17 code length codes to the code length code histogram. */\r
-        uint32_t reps = 1;\r
-        size_t k;\r
-        for (k = i + 1; k < data_size && histogram->data_[k] == 0; ++k) {\r
-          ++reps;\r
-        }\r
-        i += reps;\r
-        if (i == data_size) {\r
-          /* Don't add any cost for the last zero run, since these are encoded\r
-             only implicitly. */\r
-          break;\r
-        }\r
-        if (reps < 3) {\r
-          depth_histo[0] += reps;\r
-        } else {\r
-          reps -= 2;\r
-          while (reps > 0) {\r
-            ++depth_histo[BROTLI_REPEAT_ZERO_CODE_LENGTH];\r
-            /* Add the 3 extra bits for the 17 code length code. */\r
-            bits += 3;\r
-            reps >>= 3;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    /* Add the estimated encoding cost of the code length code histogram. */\r
-    bits += (double)(18 + 2 * max_depth);\r
-    /* Add the entropy of the code length code histogram. */\r
-    bits += BitsEntropy(depth_histo, BROTLI_CODE_LENGTH_CODES);\r
-  }\r
-  return bits;\r
-}\r
-\r
-#undef HistogramType\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/block_encoder_inc.h b/BaseTools/Source/C/BrotliCompress/enc/block_encoder_inc.h
deleted file mode 100644 (file)
index ce7fd20..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2014 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN */\r
-\r
-#define HistogramType FN(Histogram)\r
-\r
-/* Creates entropy codes for all block types and stores them to the bit\r
-   stream. */\r
-static void FN(BuildAndStoreEntropyCodes)(MemoryManager* m, BlockEncoder* self,\r
-    const HistogramType* histograms, const size_t histograms_size,\r
-    const size_t alphabet_size, HuffmanTree* tree,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  const size_t table_size = histograms_size * self->histogram_length_;\r
-  self->depths_ = BROTLI_ALLOC(m, uint8_t, table_size);\r
-  self->bits_ = BROTLI_ALLOC(m, uint16_t, table_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  {\r
-    size_t i;\r
-    for (i = 0; i < histograms_size; ++i) {\r
-      size_t ix = i * self->histogram_length_;\r
-      BuildAndStoreHuffmanTree(&histograms[i].data_[0], self->histogram_length_,\r
-          alphabet_size, tree, &self->depths_[ix], &self->bits_[ix],\r
-          storage_ix, storage);\r
-    }\r
-  }\r
-}\r
-\r
-#undef HistogramType\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/block_splitter.c b/BaseTools/Source/C/BrotliCompress/enc/block_splitter.c
deleted file mode 100644 (file)
index 344a629..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Block split point selection utilities. */\r
-\r
-#include "./block_splitter.h"\r
-\r
-#include <string.h>  /* memcpy, memset */\r
-\r
-#include "../common/platform.h"\r
-#include "./bit_cost.h"\r
-#include "./cluster.h"\r
-#include "./command.h"\r
-#include "./fast_log.h"\r
-#include "./histogram.h"\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static const size_t kMaxLiteralHistograms = 100;\r
-static const size_t kMaxCommandHistograms = 50;\r
-static const double kLiteralBlockSwitchCost = 28.1;\r
-static const double kCommandBlockSwitchCost = 13.5;\r
-static const double kDistanceBlockSwitchCost = 14.6;\r
-static const size_t kLiteralStrideLength = 70;\r
-static const size_t kCommandStrideLength = 40;\r
-static const size_t kSymbolsPerLiteralHistogram = 544;\r
-static const size_t kSymbolsPerCommandHistogram = 530;\r
-static const size_t kSymbolsPerDistanceHistogram = 544;\r
-static const size_t kMinLengthForBlockSplitting = 128;\r
-static const size_t kIterMulForRefining = 2;\r
-static const size_t kMinItersForRefining = 100;\r
-\r
-static size_t CountLiterals(const Command* cmds, const size_t num_commands) {\r
-  /* Count how many we have. */\r
-  size_t total_length = 0;\r
-  size_t i;\r
-  for (i = 0; i < num_commands; ++i) {\r
-    total_length += cmds[i].insert_len_;\r
-  }\r
-  return total_length;\r
-}\r
-\r
-static void CopyLiteralsToByteArray(const Command* cmds,\r
-                                    const size_t num_commands,\r
-                                    const uint8_t* data,\r
-                                    const size_t offset,\r
-                                    const size_t mask,\r
-                                    uint8_t* literals) {\r
-  size_t pos = 0;\r
-  size_t from_pos = offset & mask;\r
-  size_t i;\r
-  for (i = 0; i < num_commands; ++i) {\r
-    size_t insert_len = cmds[i].insert_len_;\r
-    if (from_pos + insert_len > mask) {\r
-      size_t head_size = mask + 1 - from_pos;\r
-      memcpy(literals + pos, data + from_pos, head_size);\r
-      from_pos = 0;\r
-      pos += head_size;\r
-      insert_len -= head_size;\r
-    }\r
-    if (insert_len > 0) {\r
-      memcpy(literals + pos, data + from_pos, insert_len);\r
-      pos += insert_len;\r
-    }\r
-    from_pos = (from_pos + insert_len + CommandCopyLen(&cmds[i])) & mask;\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE uint32_t MyRand(uint32_t* seed) {\r
-  /* Initial seed should be 7. In this case, loop length is (1 << 29). */\r
-  *seed *= 16807U;\r
-  return *seed;\r
-}\r
-\r
-static BROTLI_INLINE double BitCost(size_t count) {\r
-  return count == 0 ? -2.0 : FastLog2(count);\r
-}\r
-\r
-#define HISTOGRAMS_PER_BATCH 64\r
-#define CLUSTERS_PER_BATCH 16\r
-\r
-#define FN(X) X ## Literal\r
-#define DataType uint8_t\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./block_splitter_inc.h"\r
-#undef DataType\r
-#undef FN\r
-\r
-#define FN(X) X ## Command\r
-#define DataType uint16_t\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./block_splitter_inc.h"\r
-#undef FN\r
-\r
-#define FN(X) X ## Distance\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./block_splitter_inc.h"\r
-#undef DataType\r
-#undef FN\r
-\r
-void BrotliInitBlockSplit(BlockSplit* self) {\r
-  self->num_types = 0;\r
-  self->num_blocks = 0;\r
-  self->types = 0;\r
-  self->lengths = 0;\r
-  self->types_alloc_size = 0;\r
-  self->lengths_alloc_size = 0;\r
-}\r
-\r
-void BrotliDestroyBlockSplit(MemoryManager* m, BlockSplit* self) {\r
-  BROTLI_FREE(m, self->types);\r
-  BROTLI_FREE(m, self->lengths);\r
-}\r
-\r
-void BrotliSplitBlock(MemoryManager* m,\r
-                      const Command* cmds,\r
-                      const size_t num_commands,\r
-                      const uint8_t* data,\r
-                      const size_t pos,\r
-                      const size_t mask,\r
-                      const BrotliEncoderParams* params,\r
-                      BlockSplit* literal_split,\r
-                      BlockSplit* insert_and_copy_split,\r
-                      BlockSplit* dist_split) {\r
-  {\r
-    size_t literals_count = CountLiterals(cmds, num_commands);\r
-    uint8_t* literals = BROTLI_ALLOC(m, uint8_t, literals_count);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    /* Create a continuous array of literals. */\r
-    CopyLiteralsToByteArray(cmds, num_commands, data, pos, mask, literals);\r
-    /* Create the block split on the array of literals.\r
-       Literal histograms have alphabet size 256. */\r
-    SplitByteVectorLiteral(\r
-        m, literals, literals_count,\r
-        kSymbolsPerLiteralHistogram, kMaxLiteralHistograms,\r
-        kLiteralStrideLength, kLiteralBlockSwitchCost, params,\r
-        literal_split);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    BROTLI_FREE(m, literals);\r
-  }\r
-\r
-  {\r
-    /* Compute prefix codes for commands. */\r
-    uint16_t* insert_and_copy_codes = BROTLI_ALLOC(m, uint16_t, num_commands);\r
-    size_t i;\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    for (i = 0; i < num_commands; ++i) {\r
-      insert_and_copy_codes[i] = cmds[i].cmd_prefix_;\r
-    }\r
-    /* Create the block split on the array of command prefixes. */\r
-    SplitByteVectorCommand(\r
-        m, insert_and_copy_codes, num_commands,\r
-        kSymbolsPerCommandHistogram, kMaxCommandHistograms,\r
-        kCommandStrideLength, kCommandBlockSwitchCost, params,\r
-        insert_and_copy_split);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    /* TODO: reuse for distances? */\r
-    BROTLI_FREE(m, insert_and_copy_codes);\r
-  }\r
-\r
-  {\r
-    /* Create a continuous array of distance prefixes. */\r
-    uint16_t* distance_prefixes = BROTLI_ALLOC(m, uint16_t, num_commands);\r
-    size_t j = 0;\r
-    size_t i;\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    for (i = 0; i < num_commands; ++i) {\r
-      const Command* cmd = &cmds[i];\r
-      if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) {\r
-        distance_prefixes[j++] = cmd->dist_prefix_ & 0x3FF;\r
-      }\r
-    }\r
-    /* Create the block split on the array of distance prefixes. */\r
-    SplitByteVectorDistance(\r
-        m, distance_prefixes, j,\r
-        kSymbolsPerDistanceHistogram, kMaxCommandHistograms,\r
-        kCommandStrideLength, kDistanceBlockSwitchCost, params,\r
-        dist_split);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    BROTLI_FREE(m, distance_prefixes);\r
-  }\r
-}\r
-\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/block_splitter.h b/BaseTools/Source/C/BrotliCompress/enc/block_splitter.h
deleted file mode 100644 (file)
index aa6ebed..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Block split point selection utilities. */\r
-\r
-#ifndef BROTLI_ENC_BLOCK_SPLITTER_H_\r
-#define BROTLI_ENC_BLOCK_SPLITTER_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./command.h"\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-typedef struct BlockSplit {\r
-  size_t num_types;  /* Amount of distinct types */\r
-  size_t num_blocks;  /* Amount of values in types and length */\r
-  uint8_t* types;\r
-  uint32_t* lengths;\r
-\r
-  size_t types_alloc_size;\r
-  size_t lengths_alloc_size;\r
-} BlockSplit;\r
-\r
-BROTLI_INTERNAL void BrotliInitBlockSplit(BlockSplit* self);\r
-BROTLI_INTERNAL void BrotliDestroyBlockSplit(MemoryManager* m,\r
-                                             BlockSplit* self);\r
-\r
-BROTLI_INTERNAL void BrotliSplitBlock(MemoryManager* m,\r
-                                      const Command* cmds,\r
-                                      const size_t num_commands,\r
-                                      const uint8_t* data,\r
-                                      const size_t offset,\r
-                                      const size_t mask,\r
-                                      const BrotliEncoderParams* params,\r
-                                      BlockSplit* literal_split,\r
-                                      BlockSplit* insert_and_copy_split,\r
-                                      BlockSplit* dist_split);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_BLOCK_SPLITTER_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/block_splitter_inc.h b/BaseTools/Source/C/BrotliCompress/enc/block_splitter_inc.h
deleted file mode 100644 (file)
index 63c7ccf..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN, DataType */\r
-\r
-#define HistogramType FN(Histogram)\r
-\r
-static void FN(InitialEntropyCodes)(const DataType* data, size_t length,\r
-                                    size_t stride,\r
-                                    size_t num_histograms,\r
-                                    HistogramType* histograms) {\r
-  uint32_t seed = 7;\r
-  size_t block_length = length / num_histograms;\r
-  size_t i;\r
-  FN(ClearHistograms)(histograms, num_histograms);\r
-  for (i = 0; i < num_histograms; ++i) {\r
-    size_t pos = length * i / num_histograms;\r
-    if (i != 0) {\r
-      pos += MyRand(&seed) % block_length;\r
-    }\r
-    if (pos + stride >= length) {\r
-      pos = length - stride - 1;\r
-    }\r
-    FN(HistogramAddVector)(&histograms[i], data + pos, stride);\r
-  }\r
-}\r
-\r
-static void FN(RandomSample)(uint32_t* seed,\r
-                             const DataType* data,\r
-                             size_t length,\r
-                             size_t stride,\r
-                             HistogramType* sample) {\r
-  size_t pos = 0;\r
-  if (stride >= length) {\r
-    stride = length;\r
-  } else {\r
-    pos = MyRand(seed) % (length - stride + 1);\r
-  }\r
-  FN(HistogramAddVector)(sample, data + pos, stride);\r
-}\r
-\r
-static void FN(RefineEntropyCodes)(const DataType* data, size_t length,\r
-                                   size_t stride,\r
-                                   size_t num_histograms,\r
-                                   HistogramType* histograms) {\r
-  size_t iters =\r
-      kIterMulForRefining * length / stride + kMinItersForRefining;\r
-  uint32_t seed = 7;\r
-  size_t iter;\r
-  iters = ((iters + num_histograms - 1) / num_histograms) * num_histograms;\r
-  for (iter = 0; iter < iters; ++iter) {\r
-    HistogramType sample;\r
-    FN(HistogramClear)(&sample);\r
-    FN(RandomSample)(&seed, data, length, stride, &sample);\r
-    FN(HistogramAddHistogram)(&histograms[iter % num_histograms], &sample);\r
-  }\r
-}\r
-\r
-/* Assigns a block id from the range [0, num_histograms) to each data element\r
-   in data[0..length) and fills in block_id[0..length) with the assigned values.\r
-   Returns the number of blocks, i.e. one plus the number of block switches. */\r
-static size_t FN(FindBlocks)(const DataType* data, const size_t length,\r
-                             const double block_switch_bitcost,\r
-                             const size_t num_histograms,\r
-                             const HistogramType* histograms,\r
-                             double* insert_cost,\r
-                             double* cost,\r
-                             uint8_t* switch_signal,\r
-                             uint8_t* block_id) {\r
-  const size_t data_size = FN(HistogramDataSize)();\r
-  const size_t bitmaplen = (num_histograms + 7) >> 3;\r
-  size_t num_blocks = 1;\r
-  size_t i;\r
-  size_t j;\r
-  BROTLI_DCHECK(num_histograms <= 256);\r
-  if (num_histograms <= 1) {\r
-    for (i = 0; i < length; ++i) {\r
-      block_id[i] = 0;\r
-    }\r
-    return 1;\r
-  }\r
-  memset(insert_cost, 0, sizeof(insert_cost[0]) * data_size * num_histograms);\r
-  for (i = 0; i < num_histograms; ++i) {\r
-    insert_cost[i] = FastLog2((uint32_t)histograms[i].total_count_);\r
-  }\r
-  for (i = data_size; i != 0;) {\r
-    --i;\r
-    for (j = 0; j < num_histograms; ++j) {\r
-      insert_cost[i * num_histograms + j] =\r
-          insert_cost[j] - BitCost(histograms[j].data_[i]);\r
-    }\r
-  }\r
-  memset(cost, 0, sizeof(cost[0]) * num_histograms);\r
-  memset(switch_signal, 0, sizeof(switch_signal[0]) * length * bitmaplen);\r
-  /* After each iteration of this loop, cost[k] will contain the difference\r
-     between the minimum cost of arriving at the current byte position using\r
-     entropy code k, and the minimum cost of arriving at the current byte\r
-     position. This difference is capped at the block switch cost, and if it\r
-     reaches block switch cost, it means that when we trace back from the last\r
-     position, we need to switch here. */\r
-  for (i = 0; i < length; ++i) {\r
-    const size_t byte_ix = i;\r
-    size_t ix = byte_ix * bitmaplen;\r
-    size_t insert_cost_ix = data[byte_ix] * num_histograms;\r
-    double min_cost = 1e99;\r
-    double block_switch_cost = block_switch_bitcost;\r
-    size_t k;\r
-    for (k = 0; k < num_histograms; ++k) {\r
-      /* We are coding the symbol in data[byte_ix] with entropy code k. */\r
-      cost[k] += insert_cost[insert_cost_ix + k];\r
-      if (cost[k] < min_cost) {\r
-        min_cost = cost[k];\r
-        block_id[byte_ix] = (uint8_t)k;\r
-      }\r
-    }\r
-    /* More blocks for the beginning. */\r
-    if (byte_ix < 2000) {\r
-      block_switch_cost *= 0.77 + 0.07 * (double)byte_ix / 2000;\r
-    }\r
-    for (k = 0; k < num_histograms; ++k) {\r
-      cost[k] -= min_cost;\r
-      if (cost[k] >= block_switch_cost) {\r
-        const uint8_t mask = (uint8_t)(1u << (k & 7));\r
-        cost[k] = block_switch_cost;\r
-        BROTLI_DCHECK((k >> 3) < bitmaplen);\r
-        switch_signal[ix + (k >> 3)] |= mask;\r
-      }\r
-    }\r
-  }\r
-  {  /* Trace back from the last position and switch at the marked places. */\r
-    size_t byte_ix = length - 1;\r
-    size_t ix = byte_ix * bitmaplen;\r
-    uint8_t cur_id = block_id[byte_ix];\r
-    while (byte_ix > 0) {\r
-      const uint8_t mask = (uint8_t)(1u << (cur_id & 7));\r
-      BROTLI_DCHECK(((size_t)cur_id >> 3) < bitmaplen);\r
-      --byte_ix;\r
-      ix -= bitmaplen;\r
-      if (switch_signal[ix + (cur_id >> 3)] & mask) {\r
-        if (cur_id != block_id[byte_ix]) {\r
-          cur_id = block_id[byte_ix];\r
-          ++num_blocks;\r
-        }\r
-      }\r
-      block_id[byte_ix] = cur_id;\r
-    }\r
-  }\r
-  return num_blocks;\r
-}\r
-\r
-static size_t FN(RemapBlockIds)(uint8_t* block_ids, const size_t length,\r
-                                uint16_t* new_id, const size_t num_histograms) {\r
-  static const uint16_t kInvalidId = 256;\r
-  uint16_t next_id = 0;\r
-  size_t i;\r
-  for (i = 0; i < num_histograms; ++i) {\r
-    new_id[i] = kInvalidId;\r
-  }\r
-  for (i = 0; i < length; ++i) {\r
-    BROTLI_DCHECK(block_ids[i] < num_histograms);\r
-    if (new_id[block_ids[i]] == kInvalidId) {\r
-      new_id[block_ids[i]] = next_id++;\r
-    }\r
-  }\r
-  for (i = 0; i < length; ++i) {\r
-    block_ids[i] = (uint8_t)new_id[block_ids[i]];\r
-    BROTLI_DCHECK(block_ids[i] < num_histograms);\r
-  }\r
-  BROTLI_DCHECK(next_id <= num_histograms);\r
-  return next_id;\r
-}\r
-\r
-static void FN(BuildBlockHistograms)(const DataType* data, const size_t length,\r
-                                     const uint8_t* block_ids,\r
-                                     const size_t num_histograms,\r
-                                     HistogramType* histograms) {\r
-  size_t i;\r
-  FN(ClearHistograms)(histograms, num_histograms);\r
-  for (i = 0; i < length; ++i) {\r
-    FN(HistogramAdd)(&histograms[block_ids[i]], data[i]);\r
-  }\r
-}\r
-\r
-static void FN(ClusterBlocks)(MemoryManager* m,\r
-                              const DataType* data, const size_t length,\r
-                              const size_t num_blocks,\r
-                              uint8_t* block_ids,\r
-                              BlockSplit* split) {\r
-  uint32_t* histogram_symbols = BROTLI_ALLOC(m, uint32_t, num_blocks);\r
-  uint32_t* block_lengths = BROTLI_ALLOC(m, uint32_t, num_blocks);\r
-  const size_t expected_num_clusters = CLUSTERS_PER_BATCH *\r
-      (num_blocks + HISTOGRAMS_PER_BATCH - 1) / HISTOGRAMS_PER_BATCH;\r
-  size_t all_histograms_size = 0;\r
-  size_t all_histograms_capacity = expected_num_clusters;\r
-  HistogramType* all_histograms =\r
-      BROTLI_ALLOC(m, HistogramType, all_histograms_capacity);\r
-  size_t cluster_size_size = 0;\r
-  size_t cluster_size_capacity = expected_num_clusters;\r
-  uint32_t* cluster_size = BROTLI_ALLOC(m, uint32_t, cluster_size_capacity);\r
-  size_t num_clusters = 0;\r
-  HistogramType* histograms = BROTLI_ALLOC(m, HistogramType,\r
-      BROTLI_MIN(size_t, num_blocks, HISTOGRAMS_PER_BATCH));\r
-  size_t max_num_pairs =\r
-      HISTOGRAMS_PER_BATCH * HISTOGRAMS_PER_BATCH / 2;\r
-  size_t pairs_capacity = max_num_pairs + 1;\r
-  HistogramPair* pairs = BROTLI_ALLOC(m, HistogramPair, pairs_capacity);\r
-  size_t pos = 0;\r
-  uint32_t* clusters;\r
-  size_t num_final_clusters;\r
-  static const uint32_t kInvalidIndex = BROTLI_UINT32_MAX;\r
-  uint32_t* new_index;\r
-  size_t i;\r
-  uint32_t sizes[HISTOGRAMS_PER_BATCH] = { 0 };\r
-  uint32_t new_clusters[HISTOGRAMS_PER_BATCH] = { 0 };\r
-  uint32_t symbols[HISTOGRAMS_PER_BATCH] = { 0 };\r
-  uint32_t remap[HISTOGRAMS_PER_BATCH] = { 0 };\r
-\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  memset(block_lengths, 0, num_blocks * sizeof(uint32_t));\r
-\r
-  {\r
-    size_t block_idx = 0;\r
-    for (i = 0; i < length; ++i) {\r
-      BROTLI_DCHECK(block_idx < num_blocks);\r
-      ++block_lengths[block_idx];\r
-      if (i + 1 == length || block_ids[i] != block_ids[i + 1]) {\r
-        ++block_idx;\r
-      }\r
-    }\r
-    BROTLI_DCHECK(block_idx == num_blocks);\r
-  }\r
-\r
-  for (i = 0; i < num_blocks; i += HISTOGRAMS_PER_BATCH) {\r
-    const size_t num_to_combine =\r
-        BROTLI_MIN(size_t, num_blocks - i, HISTOGRAMS_PER_BATCH);\r
-    size_t num_new_clusters;\r
-    size_t j;\r
-    for (j = 0; j < num_to_combine; ++j) {\r
-      size_t k;\r
-      FN(HistogramClear)(&histograms[j]);\r
-      for (k = 0; k < block_lengths[i + j]; ++k) {\r
-        FN(HistogramAdd)(&histograms[j], data[pos++]);\r
-      }\r
-      histograms[j].bit_cost_ = FN(BrotliPopulationCost)(&histograms[j]);\r
-      new_clusters[j] = (uint32_t)j;\r
-      symbols[j] = (uint32_t)j;\r
-      sizes[j] = 1;\r
-    }\r
-    num_new_clusters = FN(BrotliHistogramCombine)(\r
-        histograms, sizes, symbols, new_clusters, pairs, num_to_combine,\r
-        num_to_combine, HISTOGRAMS_PER_BATCH, max_num_pairs);\r
-    BROTLI_ENSURE_CAPACITY(m, HistogramType, all_histograms,\r
-        all_histograms_capacity, all_histograms_size + num_new_clusters);\r
-    BROTLI_ENSURE_CAPACITY(m, uint32_t, cluster_size,\r
-        cluster_size_capacity, cluster_size_size + num_new_clusters);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    for (j = 0; j < num_new_clusters; ++j) {\r
-      all_histograms[all_histograms_size++] = histograms[new_clusters[j]];\r
-      cluster_size[cluster_size_size++] = sizes[new_clusters[j]];\r
-      remap[new_clusters[j]] = (uint32_t)j;\r
-    }\r
-    for (j = 0; j < num_to_combine; ++j) {\r
-      histogram_symbols[i + j] = (uint32_t)num_clusters + remap[symbols[j]];\r
-    }\r
-    num_clusters += num_new_clusters;\r
-    BROTLI_DCHECK(num_clusters == cluster_size_size);\r
-    BROTLI_DCHECK(num_clusters == all_histograms_size);\r
-  }\r
-  BROTLI_FREE(m, histograms);\r
-\r
-  max_num_pairs =\r
-      BROTLI_MIN(size_t, 64 * num_clusters, (num_clusters / 2) * num_clusters);\r
-  if (pairs_capacity < max_num_pairs + 1) {\r
-    BROTLI_FREE(m, pairs);\r
-    pairs = BROTLI_ALLOC(m, HistogramPair, max_num_pairs + 1);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-  }\r
-\r
-  clusters = BROTLI_ALLOC(m, uint32_t, num_clusters);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  for (i = 0; i < num_clusters; ++i) {\r
-    clusters[i] = (uint32_t)i;\r
-  }\r
-  num_final_clusters = FN(BrotliHistogramCombine)(\r
-      all_histograms, cluster_size, histogram_symbols, clusters, pairs,\r
-      num_clusters, num_blocks, BROTLI_MAX_NUMBER_OF_BLOCK_TYPES,\r
-      max_num_pairs);\r
-  BROTLI_FREE(m, pairs);\r
-  BROTLI_FREE(m, cluster_size);\r
-\r
-  new_index = BROTLI_ALLOC(m, uint32_t, num_clusters);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  for (i = 0; i < num_clusters; ++i) new_index[i] = kInvalidIndex;\r
-  pos = 0;\r
-  {\r
-    uint32_t next_index = 0;\r
-    for (i = 0; i < num_blocks; ++i) {\r
-      HistogramType histo;\r
-      size_t j;\r
-      uint32_t best_out;\r
-      double best_bits;\r
-      FN(HistogramClear)(&histo);\r
-      for (j = 0; j < block_lengths[i]; ++j) {\r
-        FN(HistogramAdd)(&histo, data[pos++]);\r
-      }\r
-      best_out = (i == 0) ? histogram_symbols[0] : histogram_symbols[i - 1];\r
-      best_bits =\r
-          FN(BrotliHistogramBitCostDistance)(&histo, &all_histograms[best_out]);\r
-      for (j = 0; j < num_final_clusters; ++j) {\r
-        const double cur_bits = FN(BrotliHistogramBitCostDistance)(\r
-            &histo, &all_histograms[clusters[j]]);\r
-        if (cur_bits < best_bits) {\r
-          best_bits = cur_bits;\r
-          best_out = clusters[j];\r
-        }\r
-      }\r
-      histogram_symbols[i] = best_out;\r
-      if (new_index[best_out] == kInvalidIndex) {\r
-        new_index[best_out] = next_index++;\r
-      }\r
-    }\r
-  }\r
-  BROTLI_FREE(m, clusters);\r
-  BROTLI_FREE(m, all_histograms);\r
-  BROTLI_ENSURE_CAPACITY(\r
-      m, uint8_t, split->types, split->types_alloc_size, num_blocks);\r
-  BROTLI_ENSURE_CAPACITY(\r
-      m, uint32_t, split->lengths, split->lengths_alloc_size, num_blocks);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  {\r
-    uint32_t cur_length = 0;\r
-    size_t block_idx = 0;\r
-    uint8_t max_type = 0;\r
-    for (i = 0; i < num_blocks; ++i) {\r
-      cur_length += block_lengths[i];\r
-      if (i + 1 == num_blocks ||\r
-          histogram_symbols[i] != histogram_symbols[i + 1]) {\r
-        const uint8_t id = (uint8_t)new_index[histogram_symbols[i]];\r
-        split->types[block_idx] = id;\r
-        split->lengths[block_idx] = cur_length;\r
-        max_type = BROTLI_MAX(uint8_t, max_type, id);\r
-        cur_length = 0;\r
-        ++block_idx;\r
-      }\r
-    }\r
-    split->num_blocks = block_idx;\r
-    split->num_types = (size_t)max_type + 1;\r
-  }\r
-  BROTLI_FREE(m, new_index);\r
-  BROTLI_FREE(m, block_lengths);\r
-  BROTLI_FREE(m, histogram_symbols);\r
-}\r
-\r
-static void FN(SplitByteVector)(MemoryManager* m,\r
-                                const DataType* data, const size_t length,\r
-                                const size_t literals_per_histogram,\r
-                                const size_t max_histograms,\r
-                                const size_t sampling_stride_length,\r
-                                const double block_switch_cost,\r
-                                const BrotliEncoderParams* params,\r
-                                BlockSplit* split) {\r
-  const size_t data_size = FN(HistogramDataSize)();\r
-  size_t num_histograms = length / literals_per_histogram + 1;\r
-  HistogramType* histograms;\r
-  if (num_histograms > max_histograms) {\r
-    num_histograms = max_histograms;\r
-  }\r
-  if (length == 0) {\r
-    split->num_types = 1;\r
-    return;\r
-  } else if (length < kMinLengthForBlockSplitting) {\r
-    BROTLI_ENSURE_CAPACITY(m, uint8_t,\r
-        split->types, split->types_alloc_size, split->num_blocks + 1);\r
-    BROTLI_ENSURE_CAPACITY(m, uint32_t,\r
-        split->lengths, split->lengths_alloc_size, split->num_blocks + 1);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    split->num_types = 1;\r
-    split->types[split->num_blocks] = 0;\r
-    split->lengths[split->num_blocks] = (uint32_t)length;\r
-    split->num_blocks++;\r
-    return;\r
-  }\r
-  histograms = BROTLI_ALLOC(m, HistogramType, num_histograms);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  /* Find good entropy codes. */\r
-  FN(InitialEntropyCodes)(data, length,\r
-                          sampling_stride_length,\r
-                          num_histograms, histograms);\r
-  FN(RefineEntropyCodes)(data, length,\r
-                         sampling_stride_length,\r
-                         num_histograms, histograms);\r
-  {\r
-    /* Find a good path through literals with the good entropy codes. */\r
-    uint8_t* block_ids = BROTLI_ALLOC(m, uint8_t, length);\r
-    size_t num_blocks = 0;\r
-    const size_t bitmaplen = (num_histograms + 7) >> 3;\r
-    double* insert_cost = BROTLI_ALLOC(m, double, data_size * num_histograms);\r
-    double* cost = BROTLI_ALLOC(m, double, num_histograms);\r
-    uint8_t* switch_signal = BROTLI_ALLOC(m, uint8_t, length * bitmaplen);\r
-    uint16_t* new_id = BROTLI_ALLOC(m, uint16_t, num_histograms);\r
-    const size_t iters = params->quality < HQ_ZOPFLIFICATION_QUALITY ? 3 : 10;\r
-    size_t i;\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    for (i = 0; i < iters; ++i) {\r
-      num_blocks = FN(FindBlocks)(data, length,\r
-                                  block_switch_cost,\r
-                                  num_histograms, histograms,\r
-                                  insert_cost, cost, switch_signal,\r
-                                  block_ids);\r
-      num_histograms = FN(RemapBlockIds)(block_ids, length,\r
-                                         new_id, num_histograms);\r
-      FN(BuildBlockHistograms)(data, length, block_ids,\r
-                               num_histograms, histograms);\r
-    }\r
-    BROTLI_FREE(m, insert_cost);\r
-    BROTLI_FREE(m, cost);\r
-    BROTLI_FREE(m, switch_signal);\r
-    BROTLI_FREE(m, new_id);\r
-    BROTLI_FREE(m, histograms);\r
-    FN(ClusterBlocks)(m, data, length, num_blocks, block_ids, split);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    BROTLI_FREE(m, block_ids);\r
-  }\r
-}\r
-\r
-#undef HistogramType\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.c b/BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.c
deleted file mode 100644 (file)
index 50b10ed..0000000
+++ /dev/null
@@ -1,1331 +0,0 @@
-/* Copyright 2014 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Brotli bit stream functions to support the low level format. There are no\r
-   compression algorithms here, just the right ordering of bits to match the\r
-   specs. */\r
-\r
-#include "./brotli_bit_stream.h"\r
-\r
-#include <string.h>  /* memcpy, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/context.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./entropy_encode.h"\r
-#include "./entropy_encode_static.h"\r
-#include "./fast_log.h"\r
-#include "./histogram.h"\r
-#include "./memory.h"\r
-#include "./write_bits.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define MAX_HUFFMAN_TREE_SIZE (2 * BROTLI_NUM_COMMAND_SYMBOLS + 1)\r
-/* The maximum size of Huffman dictionary for distances assuming that\r
-   NPOSTFIX = 0 and NDIRECT = 0. */\r
-#define MAX_SIMPLE_DISTANCE_ALPHABET_SIZE \\r
-  BROTLI_DISTANCE_ALPHABET_SIZE(0, 0, BROTLI_LARGE_MAX_DISTANCE_BITS)\r
-/* MAX_SIMPLE_DISTANCE_ALPHABET_SIZE == 140 */\r
-\r
-/* Represents the range of values belonging to a prefix code:\r
-   [offset, offset + 2^nbits) */\r
-typedef struct PrefixCodeRange {\r
-  uint32_t offset;\r
-  uint32_t nbits;\r
-} PrefixCodeRange;\r
-\r
-static const PrefixCodeRange\r
-    kBlockLengthPrefixCode[BROTLI_NUM_BLOCK_LEN_SYMBOLS] = {\r
-  { 1, 2}, { 5, 2}, { 9, 2}, {13, 2}, {17, 3}, { 25, 3}, { 33, 3},\r
-  {41, 3}, {49, 4}, {65, 4}, {81, 4}, {97, 4}, {113, 5}, {145, 5},\r
-  {177, 5}, { 209,  5}, { 241,  6}, { 305,  6}, { 369,  7}, {  497,  8},\r
-  {753, 9}, {1265, 10}, {2289, 11}, {4337, 12}, {8433, 13}, {16625, 24}\r
-};\r
-\r
-static BROTLI_INLINE uint32_t BlockLengthPrefixCode(uint32_t len) {\r
-  uint32_t code = (len >= 177) ? (len >= 753 ? 20 : 14) : (len >= 41 ? 7 : 0);\r
-  while (code < (BROTLI_NUM_BLOCK_LEN_SYMBOLS - 1) &&\r
-      len >= kBlockLengthPrefixCode[code + 1].offset) ++code;\r
-  return code;\r
-}\r
-\r
-static BROTLI_INLINE void GetBlockLengthPrefixCode(uint32_t len, size_t* code,\r
-    uint32_t* n_extra, uint32_t* extra) {\r
-  *code = BlockLengthPrefixCode(len);\r
-  *n_extra = kBlockLengthPrefixCode[*code].nbits;\r
-  *extra = len - kBlockLengthPrefixCode[*code].offset;\r
-}\r
-\r
-typedef struct BlockTypeCodeCalculator {\r
-  size_t last_type;\r
-  size_t second_last_type;\r
-} BlockTypeCodeCalculator;\r
-\r
-static void InitBlockTypeCodeCalculator(BlockTypeCodeCalculator* self) {\r
-  self->last_type = 1;\r
-  self->second_last_type = 0;\r
-}\r
-\r
-static BROTLI_INLINE size_t NextBlockTypeCode(\r
-    BlockTypeCodeCalculator* calculator, uint8_t type) {\r
-  size_t type_code = (type == calculator->last_type + 1) ? 1u :\r
-      (type == calculator->second_last_type) ? 0u : type + 2u;\r
-  calculator->second_last_type = calculator->last_type;\r
-  calculator->last_type = type;\r
-  return type_code;\r
-}\r
-\r
-/* |nibblesbits| represents the 2 bits to encode MNIBBLES (0-3)\r
-   REQUIRES: length > 0\r
-   REQUIRES: length <= (1 << 24) */\r
-static void BrotliEncodeMlen(size_t length, uint64_t* bits,\r
-                             size_t* numbits, uint64_t* nibblesbits) {\r
-  size_t lg = (length == 1) ? 1 : Log2FloorNonZero((uint32_t)(length - 1)) + 1;\r
-  size_t mnibbles = (lg < 16 ? 16 : (lg + 3)) / 4;\r
-  BROTLI_DCHECK(length > 0);\r
-  BROTLI_DCHECK(length <= (1 << 24));\r
-  BROTLI_DCHECK(lg <= 24);\r
-  *nibblesbits = mnibbles - 4;\r
-  *numbits = mnibbles * 4;\r
-  *bits = length - 1;\r
-}\r
-\r
-static BROTLI_INLINE void StoreCommandExtra(\r
-    const Command* cmd, size_t* storage_ix, uint8_t* storage) {\r
-  uint32_t copylen_code = CommandCopyLenCode(cmd);\r
-  uint16_t inscode = GetInsertLengthCode(cmd->insert_len_);\r
-  uint16_t copycode = GetCopyLengthCode(copylen_code);\r
-  uint32_t insnumextra = GetInsertExtra(inscode);\r
-  uint64_t insextraval = cmd->insert_len_ - GetInsertBase(inscode);\r
-  uint64_t copyextraval = copylen_code - GetCopyBase(copycode);\r
-  uint64_t bits = (copyextraval << insnumextra) | insextraval;\r
-  BrotliWriteBits(\r
-      insnumextra + GetCopyExtra(copycode), bits, storage_ix, storage);\r
-}\r
-\r
-/* Data structure that stores almost everything that is needed to encode each\r
-   block switch command. */\r
-typedef struct BlockSplitCode {\r
-  BlockTypeCodeCalculator type_code_calculator;\r
-  uint8_t type_depths[BROTLI_MAX_BLOCK_TYPE_SYMBOLS];\r
-  uint16_t type_bits[BROTLI_MAX_BLOCK_TYPE_SYMBOLS];\r
-  uint8_t length_depths[BROTLI_NUM_BLOCK_LEN_SYMBOLS];\r
-  uint16_t length_bits[BROTLI_NUM_BLOCK_LEN_SYMBOLS];\r
-} BlockSplitCode;\r
-\r
-/* Stores a number between 0 and 255. */\r
-static void StoreVarLenUint8(size_t n, size_t* storage_ix, uint8_t* storage) {\r
-  if (n == 0) {\r
-    BrotliWriteBits(1, 0, storage_ix, storage);\r
-  } else {\r
-    size_t nbits = Log2FloorNonZero(n);\r
-    BrotliWriteBits(1, 1, storage_ix, storage);\r
-    BrotliWriteBits(3, nbits, storage_ix, storage);\r
-    BrotliWriteBits(nbits, n - ((size_t)1 << nbits), storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* Stores the compressed meta-block header.\r
-   REQUIRES: length > 0\r
-   REQUIRES: length <= (1 << 24) */\r
-static void StoreCompressedMetaBlockHeader(BROTLI_BOOL is_final_block,\r
-                                           size_t length,\r
-                                           size_t* storage_ix,\r
-                                           uint8_t* storage) {\r
-  uint64_t lenbits;\r
-  size_t nlenbits;\r
-  uint64_t nibblesbits;\r
-\r
-  /* Write ISLAST bit. */\r
-  BrotliWriteBits(1, (uint64_t)is_final_block, storage_ix, storage);\r
-  /* Write ISEMPTY bit. */\r
-  if (is_final_block) {\r
-    BrotliWriteBits(1, 0, storage_ix, storage);\r
-  }\r
-\r
-  BrotliEncodeMlen(length, &lenbits, &nlenbits, &nibblesbits);\r
-  BrotliWriteBits(2, nibblesbits, storage_ix, storage);\r
-  BrotliWriteBits(nlenbits, lenbits, storage_ix, storage);\r
-\r
-  if (!is_final_block) {\r
-    /* Write ISUNCOMPRESSED bit. */\r
-    BrotliWriteBits(1, 0, storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* Stores the uncompressed meta-block header.\r
-   REQUIRES: length > 0\r
-   REQUIRES: length <= (1 << 24) */\r
-static void BrotliStoreUncompressedMetaBlockHeader(size_t length,\r
-                                                   size_t* storage_ix,\r
-                                                   uint8_t* storage) {\r
-  uint64_t lenbits;\r
-  size_t nlenbits;\r
-  uint64_t nibblesbits;\r
-\r
-  /* Write ISLAST bit.\r
-     Uncompressed block cannot be the last one, so set to 0. */\r
-  BrotliWriteBits(1, 0, storage_ix, storage);\r
-  BrotliEncodeMlen(length, &lenbits, &nlenbits, &nibblesbits);\r
-  BrotliWriteBits(2, nibblesbits, storage_ix, storage);\r
-  BrotliWriteBits(nlenbits, lenbits, storage_ix, storage);\r
-  /* Write ISUNCOMPRESSED bit. */\r
-  BrotliWriteBits(1, 1, storage_ix, storage);\r
-}\r
-\r
-static void BrotliStoreHuffmanTreeOfHuffmanTreeToBitMask(\r
-    const int num_codes, const uint8_t* code_length_bitdepth,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  static const uint8_t kStorageOrder[BROTLI_CODE_LENGTH_CODES] = {\r
-    1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15\r
-  };\r
-  /* The bit lengths of the Huffman code over the code length alphabet\r
-     are compressed with the following static Huffman code:\r
-       Symbol   Code\r
-       ------   ----\r
-       0          00\r
-       1        1110\r
-       2         110\r
-       3          01\r
-       4          10\r
-       5        1111 */\r
-  static const uint8_t kHuffmanBitLengthHuffmanCodeSymbols[6] = {\r
-     0, 7, 3, 2, 1, 15\r
-  };\r
-  static const uint8_t kHuffmanBitLengthHuffmanCodeBitLengths[6] = {\r
-    2, 4, 3, 2, 2, 4\r
-  };\r
-\r
-  size_t skip_some = 0;  /* skips none. */\r
-\r
-  /* Throw away trailing zeros: */\r
-  size_t codes_to_store = BROTLI_CODE_LENGTH_CODES;\r
-  if (num_codes > 1) {\r
-    for (; codes_to_store > 0; --codes_to_store) {\r
-      if (code_length_bitdepth[kStorageOrder[codes_to_store - 1]] != 0) {\r
-        break;\r
-      }\r
-    }\r
-  }\r
-  if (code_length_bitdepth[kStorageOrder[0]] == 0 &&\r
-      code_length_bitdepth[kStorageOrder[1]] == 0) {\r
-    skip_some = 2;  /* skips two. */\r
-    if (code_length_bitdepth[kStorageOrder[2]] == 0) {\r
-      skip_some = 3;  /* skips three. */\r
-    }\r
-  }\r
-  BrotliWriteBits(2, skip_some, storage_ix, storage);\r
-  {\r
-    size_t i;\r
-    for (i = skip_some; i < codes_to_store; ++i) {\r
-      size_t l = code_length_bitdepth[kStorageOrder[i]];\r
-      BrotliWriteBits(kHuffmanBitLengthHuffmanCodeBitLengths[l],\r
-          kHuffmanBitLengthHuffmanCodeSymbols[l], storage_ix, storage);\r
-    }\r
-  }\r
-}\r
-\r
-static void BrotliStoreHuffmanTreeToBitMask(\r
-    const size_t huffman_tree_size, const uint8_t* huffman_tree,\r
-    const uint8_t* huffman_tree_extra_bits, const uint8_t* code_length_bitdepth,\r
-    const uint16_t* code_length_bitdepth_symbols,\r
-    size_t* BROTLI_RESTRICT storage_ix, uint8_t* BROTLI_RESTRICT storage) {\r
-  size_t i;\r
-  for (i = 0; i < huffman_tree_size; ++i) {\r
-    size_t ix = huffman_tree[i];\r
-    BrotliWriteBits(code_length_bitdepth[ix], code_length_bitdepth_symbols[ix],\r
-                    storage_ix, storage);\r
-    /* Extra bits */\r
-    switch (ix) {\r
-      case BROTLI_REPEAT_PREVIOUS_CODE_LENGTH:\r
-        BrotliWriteBits(2, huffman_tree_extra_bits[i], storage_ix, storage);\r
-        break;\r
-      case BROTLI_REPEAT_ZERO_CODE_LENGTH:\r
-        BrotliWriteBits(3, huffman_tree_extra_bits[i], storage_ix, storage);\r
-        break;\r
-    }\r
-  }\r
-}\r
-\r
-static void StoreSimpleHuffmanTree(const uint8_t* depths,\r
-                                   size_t symbols[4],\r
-                                   size_t num_symbols,\r
-                                   size_t max_bits,\r
-                                   size_t* storage_ix, uint8_t* storage) {\r
-  /* value of 1 indicates a simple Huffman code */\r
-  BrotliWriteBits(2, 1, storage_ix, storage);\r
-  BrotliWriteBits(2, num_symbols - 1, storage_ix, storage);  /* NSYM - 1 */\r
-\r
-  {\r
-    /* Sort */\r
-    size_t i;\r
-    for (i = 0; i < num_symbols; i++) {\r
-      size_t j;\r
-      for (j = i + 1; j < num_symbols; j++) {\r
-        if (depths[symbols[j]] < depths[symbols[i]]) {\r
-          BROTLI_SWAP(size_t, symbols, j, i);\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  if (num_symbols == 2) {\r
-    BrotliWriteBits(max_bits, symbols[0], storage_ix, storage);\r
-    BrotliWriteBits(max_bits, symbols[1], storage_ix, storage);\r
-  } else if (num_symbols == 3) {\r
-    BrotliWriteBits(max_bits, symbols[0], storage_ix, storage);\r
-    BrotliWriteBits(max_bits, symbols[1], storage_ix, storage);\r
-    BrotliWriteBits(max_bits, symbols[2], storage_ix, storage);\r
-  } else {\r
-    BrotliWriteBits(max_bits, symbols[0], storage_ix, storage);\r
-    BrotliWriteBits(max_bits, symbols[1], storage_ix, storage);\r
-    BrotliWriteBits(max_bits, symbols[2], storage_ix, storage);\r
-    BrotliWriteBits(max_bits, symbols[3], storage_ix, storage);\r
-    /* tree-select */\r
-    BrotliWriteBits(1, depths[symbols[0]] == 1 ? 1 : 0, storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* num = alphabet size\r
-   depths = symbol depths */\r
-void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num,\r
-                            HuffmanTree* tree,\r
-                            size_t* storage_ix, uint8_t* storage) {\r
-  /* Write the Huffman tree into the brotli-representation.\r
-     The command alphabet is the largest, so this allocation will fit all\r
-     alphabets. */\r
-  uint8_t huffman_tree[BROTLI_NUM_COMMAND_SYMBOLS];\r
-  uint8_t huffman_tree_extra_bits[BROTLI_NUM_COMMAND_SYMBOLS];\r
-  size_t huffman_tree_size = 0;\r
-  uint8_t code_length_bitdepth[BROTLI_CODE_LENGTH_CODES] = { 0 };\r
-  uint16_t code_length_bitdepth_symbols[BROTLI_CODE_LENGTH_CODES];\r
-  uint32_t huffman_tree_histogram[BROTLI_CODE_LENGTH_CODES] = { 0 };\r
-  size_t i;\r
-  int num_codes = 0;\r
-  size_t code = 0;\r
-\r
-  BROTLI_DCHECK(num <= BROTLI_NUM_COMMAND_SYMBOLS);\r
-\r
-  BrotliWriteHuffmanTree(depths, num, &huffman_tree_size, huffman_tree,\r
-                         huffman_tree_extra_bits);\r
-\r
-  /* Calculate the statistics of the Huffman tree in brotli-representation. */\r
-  for (i = 0; i < huffman_tree_size; ++i) {\r
-    ++huffman_tree_histogram[huffman_tree[i]];\r
-  }\r
-\r
-  for (i = 0; i < BROTLI_CODE_LENGTH_CODES; ++i) {\r
-    if (huffman_tree_histogram[i]) {\r
-      if (num_codes == 0) {\r
-        code = i;\r
-        num_codes = 1;\r
-      } else if (num_codes == 1) {\r
-        num_codes = 2;\r
-        break;\r
-      }\r
-    }\r
-  }\r
-\r
-  /* Calculate another Huffman tree to use for compressing both the\r
-     earlier Huffman tree with. */\r
-  BrotliCreateHuffmanTree(huffman_tree_histogram, BROTLI_CODE_LENGTH_CODES,\r
-                          5, tree, code_length_bitdepth);\r
-  BrotliConvertBitDepthsToSymbols(code_length_bitdepth,\r
-                                  BROTLI_CODE_LENGTH_CODES,\r
-                                  code_length_bitdepth_symbols);\r
-\r
-  /* Now, we have all the data, let's start storing it */\r
-  BrotliStoreHuffmanTreeOfHuffmanTreeToBitMask(num_codes, code_length_bitdepth,\r
-                                               storage_ix, storage);\r
-\r
-  if (num_codes == 1) {\r
-    code_length_bitdepth[code] = 0;\r
-  }\r
-\r
-  /* Store the real Huffman tree now. */\r
-  BrotliStoreHuffmanTreeToBitMask(huffman_tree_size,\r
-                                  huffman_tree,\r
-                                  huffman_tree_extra_bits,\r
-                                  code_length_bitdepth,\r
-                                  code_length_bitdepth_symbols,\r
-                                  storage_ix, storage);\r
-}\r
-\r
-/* Builds a Huffman tree from histogram[0:length] into depth[0:length] and\r
-   bits[0:length] and stores the encoded tree to the bit stream. */\r
-static void BuildAndStoreHuffmanTree(const uint32_t* histogram,\r
-                                     const size_t histogram_length,\r
-                                     const size_t alphabet_size,\r
-                                     HuffmanTree* tree,\r
-                                     uint8_t* depth,\r
-                                     uint16_t* bits,\r
-                                     size_t* storage_ix,\r
-                                     uint8_t* storage) {\r
-  size_t count = 0;\r
-  size_t s4[4] = { 0 };\r
-  size_t i;\r
-  size_t max_bits = 0;\r
-  for (i = 0; i < histogram_length; i++) {\r
-    if (histogram[i]) {\r
-      if (count < 4) {\r
-        s4[count] = i;\r
-      } else if (count > 4) {\r
-        break;\r
-      }\r
-      count++;\r
-    }\r
-  }\r
-\r
-  {\r
-    size_t max_bits_counter = alphabet_size - 1;\r
-    while (max_bits_counter) {\r
-      max_bits_counter >>= 1;\r
-      ++max_bits;\r
-    }\r
-  }\r
-\r
-  if (count <= 1) {\r
-    BrotliWriteBits(4, 1, storage_ix, storage);\r
-    BrotliWriteBits(max_bits, s4[0], storage_ix, storage);\r
-    depth[s4[0]] = 0;\r
-    bits[s4[0]] = 0;\r
-    return;\r
-  }\r
-\r
-  memset(depth, 0, histogram_length * sizeof(depth[0]));\r
-  BrotliCreateHuffmanTree(histogram, histogram_length, 15, tree, depth);\r
-  BrotliConvertBitDepthsToSymbols(depth, histogram_length, bits);\r
-\r
-  if (count <= 4) {\r
-    StoreSimpleHuffmanTree(depth, s4, count, max_bits, storage_ix, storage);\r
-  } else {\r
-    BrotliStoreHuffmanTree(depth, histogram_length, tree, storage_ix, storage);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL SortHuffmanTree(\r
-    const HuffmanTree* v0, const HuffmanTree* v1) {\r
-  return TO_BROTLI_BOOL(v0->total_count_ < v1->total_count_);\r
-}\r
-\r
-void BrotliBuildAndStoreHuffmanTreeFast(MemoryManager* m,\r
-                                        const uint32_t* histogram,\r
-                                        const size_t histogram_total,\r
-                                        const size_t max_bits,\r
-                                        uint8_t* depth, uint16_t* bits,\r
-                                        size_t* storage_ix,\r
-                                        uint8_t* storage) {\r
-  size_t count = 0;\r
-  size_t symbols[4] = { 0 };\r
-  size_t length = 0;\r
-  size_t total = histogram_total;\r
-  while (total != 0) {\r
-    if (histogram[length]) {\r
-      if (count < 4) {\r
-        symbols[count] = length;\r
-      }\r
-      ++count;\r
-      total -= histogram[length];\r
-    }\r
-    ++length;\r
-  }\r
-\r
-  if (count <= 1) {\r
-    BrotliWriteBits(4, 1, storage_ix, storage);\r
-    BrotliWriteBits(max_bits, symbols[0], storage_ix, storage);\r
-    depth[symbols[0]] = 0;\r
-    bits[symbols[0]] = 0;\r
-    return;\r
-  }\r
-\r
-  memset(depth, 0, length * sizeof(depth[0]));\r
-  {\r
-    const size_t max_tree_size = 2 * length + 1;\r
-    HuffmanTree* tree = BROTLI_ALLOC(m, HuffmanTree, max_tree_size);\r
-    uint32_t count_limit;\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    for (count_limit = 1; ; count_limit *= 2) {\r
-      HuffmanTree* node = tree;\r
-      size_t l;\r
-      for (l = length; l != 0;) {\r
-        --l;\r
-        if (histogram[l]) {\r
-          if (BROTLI_PREDICT_TRUE(histogram[l] >= count_limit)) {\r
-            InitHuffmanTree(node, histogram[l], -1, (int16_t)l);\r
-          } else {\r
-            InitHuffmanTree(node, count_limit, -1, (int16_t)l);\r
-          }\r
-          ++node;\r
-        }\r
-      }\r
-      {\r
-        const int n = (int)(node - tree);\r
-        HuffmanTree sentinel;\r
-        int i = 0;      /* Points to the next leaf node. */\r
-        int j = n + 1;  /* Points to the next non-leaf node. */\r
-        int k;\r
-\r
-        SortHuffmanTreeItems(tree, (size_t)n, SortHuffmanTree);\r
-        /* The nodes are:\r
-           [0, n): the sorted leaf nodes that we start with.\r
-           [n]: we add a sentinel here.\r
-           [n + 1, 2n): new parent nodes are added here, starting from\r
-                        (n+1). These are naturally in ascending order.\r
-           [2n]: we add a sentinel at the end as well.\r
-           There will be (2n+1) elements at the end. */\r
-        InitHuffmanTree(&sentinel, BROTLI_UINT32_MAX, -1, -1);\r
-        *node++ = sentinel;\r
-        *node++ = sentinel;\r
-\r
-        for (k = n - 1; k > 0; --k) {\r
-          int left, right;\r
-          if (tree[i].total_count_ <= tree[j].total_count_) {\r
-            left = i;\r
-            ++i;\r
-          } else {\r
-            left = j;\r
-            ++j;\r
-          }\r
-          if (tree[i].total_count_ <= tree[j].total_count_) {\r
-            right = i;\r
-            ++i;\r
-          } else {\r
-            right = j;\r
-            ++j;\r
-          }\r
-          /* The sentinel node becomes the parent node. */\r
-          node[-1].total_count_ =\r
-              tree[left].total_count_ + tree[right].total_count_;\r
-          node[-1].index_left_ = (int16_t)left;\r
-          node[-1].index_right_or_value_ = (int16_t)right;\r
-          /* Add back the last sentinel node. */\r
-          *node++ = sentinel;\r
-        }\r
-        if (BrotliSetDepth(2 * n - 1, tree, depth, 14)) {\r
-          /* We need to pack the Huffman tree in 14 bits. If this was not\r
-             successful, add fake entities to the lowest values and retry. */\r
-          break;\r
-        }\r
-      }\r
-    }\r
-    BROTLI_FREE(m, tree);\r
-  }\r
-  BrotliConvertBitDepthsToSymbols(depth, length, bits);\r
-  if (count <= 4) {\r
-    size_t i;\r
-    /* value of 1 indicates a simple Huffman code */\r
-    BrotliWriteBits(2, 1, storage_ix, storage);\r
-    BrotliWriteBits(2, count - 1, storage_ix, storage);  /* NSYM - 1 */\r
-\r
-    /* Sort */\r
-    for (i = 0; i < count; i++) {\r
-      size_t j;\r
-      for (j = i + 1; j < count; j++) {\r
-        if (depth[symbols[j]] < depth[symbols[i]]) {\r
-          BROTLI_SWAP(size_t, symbols, j, i);\r
-        }\r
-      }\r
-    }\r
-\r
-    if (count == 2) {\r
-      BrotliWriteBits(max_bits, symbols[0], storage_ix, storage);\r
-      BrotliWriteBits(max_bits, symbols[1], storage_ix, storage);\r
-    } else if (count == 3) {\r
-      BrotliWriteBits(max_bits, symbols[0], storage_ix, storage);\r
-      BrotliWriteBits(max_bits, symbols[1], storage_ix, storage);\r
-      BrotliWriteBits(max_bits, symbols[2], storage_ix, storage);\r
-    } else {\r
-      BrotliWriteBits(max_bits, symbols[0], storage_ix, storage);\r
-      BrotliWriteBits(max_bits, symbols[1], storage_ix, storage);\r
-      BrotliWriteBits(max_bits, symbols[2], storage_ix, storage);\r
-      BrotliWriteBits(max_bits, symbols[3], storage_ix, storage);\r
-      /* tree-select */\r
-      BrotliWriteBits(1, depth[symbols[0]] == 1 ? 1 : 0, storage_ix, storage);\r
-    }\r
-  } else {\r
-    uint8_t previous_value = 8;\r
-    size_t i;\r
-    /* Complex Huffman Tree */\r
-    StoreStaticCodeLengthCode(storage_ix, storage);\r
-\r
-    /* Actual RLE coding. */\r
-    for (i = 0; i < length;) {\r
-      const uint8_t value = depth[i];\r
-      size_t reps = 1;\r
-      size_t k;\r
-      for (k = i + 1; k < length && depth[k] == value; ++k) {\r
-        ++reps;\r
-      }\r
-      i += reps;\r
-      if (value == 0) {\r
-        BrotliWriteBits(kZeroRepsDepth[reps], kZeroRepsBits[reps],\r
-                        storage_ix, storage);\r
-      } else {\r
-        if (previous_value != value) {\r
-          BrotliWriteBits(kCodeLengthDepth[value], kCodeLengthBits[value],\r
-                          storage_ix, storage);\r
-          --reps;\r
-        }\r
-        if (reps < 3) {\r
-          while (reps != 0) {\r
-            reps--;\r
-            BrotliWriteBits(kCodeLengthDepth[value], kCodeLengthBits[value],\r
-                            storage_ix, storage);\r
-          }\r
-        } else {\r
-          reps -= 3;\r
-          BrotliWriteBits(kNonZeroRepsDepth[reps], kNonZeroRepsBits[reps],\r
-                          storage_ix, storage);\r
-        }\r
-        previous_value = value;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-static size_t IndexOf(const uint8_t* v, size_t v_size, uint8_t value) {\r
-  size_t i = 0;\r
-  for (; i < v_size; ++i) {\r
-    if (v[i] == value) return i;\r
-  }\r
-  return i;\r
-}\r
-\r
-static void MoveToFront(uint8_t* v, size_t index) {\r
-  uint8_t value = v[index];\r
-  size_t i;\r
-  for (i = index; i != 0; --i) {\r
-    v[i] = v[i - 1];\r
-  }\r
-  v[0] = value;\r
-}\r
-\r
-static void MoveToFrontTransform(const uint32_t* BROTLI_RESTRICT v_in,\r
-                                 const size_t v_size,\r
-                                 uint32_t* v_out) {\r
-  size_t i;\r
-  uint8_t mtf[256];\r
-  uint32_t max_value;\r
-  if (v_size == 0) {\r
-    return;\r
-  }\r
-  max_value = v_in[0];\r
-  for (i = 1; i < v_size; ++i) {\r
-    if (v_in[i] > max_value) max_value = v_in[i];\r
-  }\r
-  BROTLI_DCHECK(max_value < 256u);\r
-  for (i = 0; i <= max_value; ++i) {\r
-    mtf[i] = (uint8_t)i;\r
-  }\r
-  {\r
-    size_t mtf_size = max_value + 1;\r
-    for (i = 0; i < v_size; ++i) {\r
-      size_t index = IndexOf(mtf, mtf_size, (uint8_t)v_in[i]);\r
-      BROTLI_DCHECK(index < mtf_size);\r
-      v_out[i] = (uint32_t)index;\r
-      MoveToFront(mtf, index);\r
-    }\r
-  }\r
-}\r
-\r
-/* Finds runs of zeros in v[0..in_size) and replaces them with a prefix code of\r
-   the run length plus extra bits (lower 9 bits is the prefix code and the rest\r
-   are the extra bits). Non-zero values in v[] are shifted by\r
-   *max_length_prefix. Will not create prefix codes bigger than the initial\r
-   value of *max_run_length_prefix. The prefix code of run length L is simply\r
-   Log2Floor(L) and the number of extra bits is the same as the prefix code. */\r
-static void RunLengthCodeZeros(const size_t in_size,\r
-    uint32_t* BROTLI_RESTRICT v, size_t* BROTLI_RESTRICT out_size,\r
-    uint32_t* BROTLI_RESTRICT max_run_length_prefix) {\r
-  uint32_t max_reps = 0;\r
-  size_t i;\r
-  uint32_t max_prefix;\r
-  for (i = 0; i < in_size;) {\r
-    uint32_t reps = 0;\r
-    for (; i < in_size && v[i] != 0; ++i) ;\r
-    for (; i < in_size && v[i] == 0; ++i) {\r
-      ++reps;\r
-    }\r
-    max_reps = BROTLI_MAX(uint32_t, reps, max_reps);\r
-  }\r
-  max_prefix = max_reps > 0 ? Log2FloorNonZero(max_reps) : 0;\r
-  max_prefix = BROTLI_MIN(uint32_t, max_prefix, *max_run_length_prefix);\r
-  *max_run_length_prefix = max_prefix;\r
-  *out_size = 0;\r
-  for (i = 0; i < in_size;) {\r
-    BROTLI_DCHECK(*out_size <= i);\r
-    if (v[i] != 0) {\r
-      v[*out_size] = v[i] + *max_run_length_prefix;\r
-      ++i;\r
-      ++(*out_size);\r
-    } else {\r
-      uint32_t reps = 1;\r
-      size_t k;\r
-      for (k = i + 1; k < in_size && v[k] == 0; ++k) {\r
-        ++reps;\r
-      }\r
-      i += reps;\r
-      while (reps != 0) {\r
-        if (reps < (2u << max_prefix)) {\r
-          uint32_t run_length_prefix = Log2FloorNonZero(reps);\r
-          const uint32_t extra_bits = reps - (1u << run_length_prefix);\r
-          v[*out_size] = run_length_prefix + (extra_bits << 9);\r
-          ++(*out_size);\r
-          break;\r
-        } else {\r
-          const uint32_t extra_bits = (1u << max_prefix) - 1u;\r
-          v[*out_size] = max_prefix + (extra_bits << 9);\r
-          reps -= (2u << max_prefix) - 1u;\r
-          ++(*out_size);\r
-        }\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-#define SYMBOL_BITS 9\r
-\r
-static void EncodeContextMap(MemoryManager* m,\r
-                             const uint32_t* context_map,\r
-                             size_t context_map_size,\r
-                             size_t num_clusters,\r
-                             HuffmanTree* tree,\r
-                             size_t* storage_ix, uint8_t* storage) {\r
-  size_t i;\r
-  uint32_t* rle_symbols;\r
-  uint32_t max_run_length_prefix = 6;\r
-  size_t num_rle_symbols = 0;\r
-  uint32_t histogram[BROTLI_MAX_CONTEXT_MAP_SYMBOLS];\r
-  static const uint32_t kSymbolMask = (1u << SYMBOL_BITS) - 1u;\r
-  uint8_t depths[BROTLI_MAX_CONTEXT_MAP_SYMBOLS];\r
-  uint16_t bits[BROTLI_MAX_CONTEXT_MAP_SYMBOLS];\r
-\r
-  StoreVarLenUint8(num_clusters - 1, storage_ix, storage);\r
-\r
-  if (num_clusters == 1) {\r
-    return;\r
-  }\r
-\r
-  rle_symbols = BROTLI_ALLOC(m, uint32_t, context_map_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  MoveToFrontTransform(context_map, context_map_size, rle_symbols);\r
-  RunLengthCodeZeros(context_map_size, rle_symbols,\r
-                     &num_rle_symbols, &max_run_length_prefix);\r
-  memset(histogram, 0, sizeof(histogram));\r
-  for (i = 0; i < num_rle_symbols; ++i) {\r
-    ++histogram[rle_symbols[i] & kSymbolMask];\r
-  }\r
-  {\r
-    BROTLI_BOOL use_rle = TO_BROTLI_BOOL(max_run_length_prefix > 0);\r
-    BrotliWriteBits(1, (uint64_t)use_rle, storage_ix, storage);\r
-    if (use_rle) {\r
-      BrotliWriteBits(4, max_run_length_prefix - 1, storage_ix, storage);\r
-    }\r
-  }\r
-  BuildAndStoreHuffmanTree(histogram, num_clusters + max_run_length_prefix,\r
-                           num_clusters + max_run_length_prefix,\r
-                           tree, depths, bits, storage_ix, storage);\r
-  for (i = 0; i < num_rle_symbols; ++i) {\r
-    const uint32_t rle_symbol = rle_symbols[i] & kSymbolMask;\r
-    const uint32_t extra_bits_val = rle_symbols[i] >> SYMBOL_BITS;\r
-    BrotliWriteBits(depths[rle_symbol], bits[rle_symbol], storage_ix, storage);\r
-    if (rle_symbol > 0 && rle_symbol <= max_run_length_prefix) {\r
-      BrotliWriteBits(rle_symbol, extra_bits_val, storage_ix, storage);\r
-    }\r
-  }\r
-  BrotliWriteBits(1, 1, storage_ix, storage);  /* use move-to-front */\r
-  BROTLI_FREE(m, rle_symbols);\r
-}\r
-\r
-/* Stores the block switch command with index block_ix to the bit stream. */\r
-static BROTLI_INLINE void StoreBlockSwitch(BlockSplitCode* code,\r
-                                           const uint32_t block_len,\r
-                                           const uint8_t block_type,\r
-                                           BROTLI_BOOL is_first_block,\r
-                                           size_t* storage_ix,\r
-                                           uint8_t* storage) {\r
-  size_t typecode = NextBlockTypeCode(&code->type_code_calculator, block_type);\r
-  size_t lencode;\r
-  uint32_t len_nextra;\r
-  uint32_t len_extra;\r
-  if (!is_first_block) {\r
-    BrotliWriteBits(code->type_depths[typecode], code->type_bits[typecode],\r
-                    storage_ix, storage);\r
-  }\r
-  GetBlockLengthPrefixCode(block_len, &lencode, &len_nextra, &len_extra);\r
-\r
-  BrotliWriteBits(code->length_depths[lencode], code->length_bits[lencode],\r
-                  storage_ix, storage);\r
-  BrotliWriteBits(len_nextra, len_extra, storage_ix, storage);\r
-}\r
-\r
-/* Builds a BlockSplitCode data structure from the block split given by the\r
-   vector of block types and block lengths and stores it to the bit stream. */\r
-static void BuildAndStoreBlockSplitCode(const uint8_t* types,\r
-                                        const uint32_t* lengths,\r
-                                        const size_t num_blocks,\r
-                                        const size_t num_types,\r
-                                        HuffmanTree* tree,\r
-                                        BlockSplitCode* code,\r
-                                        size_t* storage_ix,\r
-                                        uint8_t* storage) {\r
-  uint32_t type_histo[BROTLI_MAX_BLOCK_TYPE_SYMBOLS];\r
-  uint32_t length_histo[BROTLI_NUM_BLOCK_LEN_SYMBOLS];\r
-  size_t i;\r
-  BlockTypeCodeCalculator type_code_calculator;\r
-  memset(type_histo, 0, (num_types + 2) * sizeof(type_histo[0]));\r
-  memset(length_histo, 0, sizeof(length_histo));\r
-  InitBlockTypeCodeCalculator(&type_code_calculator);\r
-  for (i = 0; i < num_blocks; ++i) {\r
-    size_t type_code = NextBlockTypeCode(&type_code_calculator, types[i]);\r
-    if (i != 0) ++type_histo[type_code];\r
-    ++length_histo[BlockLengthPrefixCode(lengths[i])];\r
-  }\r
-  StoreVarLenUint8(num_types - 1, storage_ix, storage);\r
-  if (num_types > 1) {  /* TODO: else? could StoreBlockSwitch occur? */\r
-    BuildAndStoreHuffmanTree(&type_histo[0], num_types + 2, num_types + 2, tree,\r
-                             &code->type_depths[0], &code->type_bits[0],\r
-                             storage_ix, storage);\r
-    BuildAndStoreHuffmanTree(&length_histo[0], BROTLI_NUM_BLOCK_LEN_SYMBOLS,\r
-                             BROTLI_NUM_BLOCK_LEN_SYMBOLS,\r
-                             tree, &code->length_depths[0],\r
-                             &code->length_bits[0], storage_ix, storage);\r
-    StoreBlockSwitch(code, lengths[0], types[0], 1, storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* Stores a context map where the histogram type is always the block type. */\r
-static void StoreTrivialContextMap(size_t num_types,\r
-                                   size_t context_bits,\r
-                                   HuffmanTree* tree,\r
-                                   size_t* storage_ix,\r
-                                   uint8_t* storage) {\r
-  StoreVarLenUint8(num_types - 1, storage_ix, storage);\r
-  if (num_types > 1) {\r
-    size_t repeat_code = context_bits - 1u;\r
-    size_t repeat_bits = (1u << repeat_code) - 1u;\r
-    size_t alphabet_size = num_types + repeat_code;\r
-    uint32_t histogram[BROTLI_MAX_CONTEXT_MAP_SYMBOLS];\r
-    uint8_t depths[BROTLI_MAX_CONTEXT_MAP_SYMBOLS];\r
-    uint16_t bits[BROTLI_MAX_CONTEXT_MAP_SYMBOLS];\r
-    size_t i;\r
-    memset(histogram, 0, alphabet_size * sizeof(histogram[0]));\r
-    /* Write RLEMAX. */\r
-    BrotliWriteBits(1, 1, storage_ix, storage);\r
-    BrotliWriteBits(4, repeat_code - 1, storage_ix, storage);\r
-    histogram[repeat_code] = (uint32_t)num_types;\r
-    histogram[0] = 1;\r
-    for (i = context_bits; i < alphabet_size; ++i) {\r
-      histogram[i] = 1;\r
-    }\r
-    BuildAndStoreHuffmanTree(histogram, alphabet_size, alphabet_size,\r
-                             tree, depths, bits, storage_ix, storage);\r
-    for (i = 0; i < num_types; ++i) {\r
-      size_t code = (i == 0 ? 0 : i + context_bits - 1);\r
-      BrotliWriteBits(depths[code], bits[code], storage_ix, storage);\r
-      BrotliWriteBits(\r
-          depths[repeat_code], bits[repeat_code], storage_ix, storage);\r
-      BrotliWriteBits(repeat_code, repeat_bits, storage_ix, storage);\r
-    }\r
-    /* Write IMTF (inverse-move-to-front) bit. */\r
-    BrotliWriteBits(1, 1, storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* Manages the encoding of one block category (literal, command or distance). */\r
-typedef struct BlockEncoder {\r
-  size_t histogram_length_;\r
-  size_t num_block_types_;\r
-  const uint8_t* block_types_;  /* Not owned. */\r
-  const uint32_t* block_lengths_;  /* Not owned. */\r
-  size_t num_blocks_;\r
-  BlockSplitCode block_split_code_;\r
-  size_t block_ix_;\r
-  size_t block_len_;\r
-  size_t entropy_ix_;\r
-  uint8_t* depths_;\r
-  uint16_t* bits_;\r
-} BlockEncoder;\r
-\r
-static void InitBlockEncoder(BlockEncoder* self, size_t histogram_length,\r
-    size_t num_block_types, const uint8_t* block_types,\r
-    const uint32_t* block_lengths, const size_t num_blocks) {\r
-  self->histogram_length_ = histogram_length;\r
-  self->num_block_types_ = num_block_types;\r
-  self->block_types_ = block_types;\r
-  self->block_lengths_ = block_lengths;\r
-  self->num_blocks_ = num_blocks;\r
-  InitBlockTypeCodeCalculator(&self->block_split_code_.type_code_calculator);\r
-  self->block_ix_ = 0;\r
-  self->block_len_ = num_blocks == 0 ? 0 : block_lengths[0];\r
-  self->entropy_ix_ = 0;\r
-  self->depths_ = 0;\r
-  self->bits_ = 0;\r
-}\r
-\r
-static void CleanupBlockEncoder(MemoryManager* m, BlockEncoder* self) {\r
-  BROTLI_FREE(m, self->depths_);\r
-  BROTLI_FREE(m, self->bits_);\r
-}\r
-\r
-/* Creates entropy codes of block lengths and block types and stores them\r
-   to the bit stream. */\r
-static void BuildAndStoreBlockSwitchEntropyCodes(BlockEncoder* self,\r
-    HuffmanTree* tree, size_t* storage_ix, uint8_t* storage) {\r
-  BuildAndStoreBlockSplitCode(self->block_types_, self->block_lengths_,\r
-      self->num_blocks_, self->num_block_types_, tree, &self->block_split_code_,\r
-      storage_ix, storage);\r
-}\r
-\r
-/* Stores the next symbol with the entropy code of the current block type.\r
-   Updates the block type and block length at block boundaries. */\r
-static void StoreSymbol(BlockEncoder* self, size_t symbol, size_t* storage_ix,\r
-    uint8_t* storage) {\r
-  if (self->block_len_ == 0) {\r
-    size_t block_ix = ++self->block_ix_;\r
-    uint32_t block_len = self->block_lengths_[block_ix];\r
-    uint8_t block_type = self->block_types_[block_ix];\r
-    self->block_len_ = block_len;\r
-    self->entropy_ix_ = block_type * self->histogram_length_;\r
-    StoreBlockSwitch(&self->block_split_code_, block_len, block_type, 0,\r
-        storage_ix, storage);\r
-  }\r
-  --self->block_len_;\r
-  {\r
-    size_t ix = self->entropy_ix_ + symbol;\r
-    BrotliWriteBits(self->depths_[ix], self->bits_[ix], storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* Stores the next symbol with the entropy code of the current block type and\r
-   context value.\r
-   Updates the block type and block length at block boundaries. */\r
-static void StoreSymbolWithContext(BlockEncoder* self, size_t symbol,\r
-    size_t context, const uint32_t* context_map, size_t* storage_ix,\r
-    uint8_t* storage, const size_t context_bits) {\r
-  if (self->block_len_ == 0) {\r
-    size_t block_ix = ++self->block_ix_;\r
-    uint32_t block_len = self->block_lengths_[block_ix];\r
-    uint8_t block_type = self->block_types_[block_ix];\r
-    self->block_len_ = block_len;\r
-    self->entropy_ix_ = (size_t)block_type << context_bits;\r
-    StoreBlockSwitch(&self->block_split_code_, block_len, block_type, 0,\r
-        storage_ix, storage);\r
-  }\r
-  --self->block_len_;\r
-  {\r
-    size_t histo_ix = context_map[self->entropy_ix_ + context];\r
-    size_t ix = histo_ix * self->histogram_length_ + symbol;\r
-    BrotliWriteBits(self->depths_[ix], self->bits_[ix], storage_ix, storage);\r
-  }\r
-}\r
-\r
-#define FN(X) X ## Literal\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./block_encoder_inc.h"\r
-#undef FN\r
-\r
-#define FN(X) X ## Command\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./block_encoder_inc.h"\r
-#undef FN\r
-\r
-#define FN(X) X ## Distance\r
-/* NOLINTNEXTLINE(build/include) */\r
-#include "./block_encoder_inc.h"\r
-#undef FN\r
-\r
-static void JumpToByteBoundary(size_t* storage_ix, uint8_t* storage) {\r
-  *storage_ix = (*storage_ix + 7u) & ~7u;\r
-  storage[*storage_ix >> 3] = 0;\r
-}\r
-\r
-void BrotliStoreMetaBlock(MemoryManager* m,\r
-    const uint8_t* input, size_t start_pos, size_t length, size_t mask,\r
-    uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last,\r
-    const BrotliEncoderParams* params, ContextType literal_context_mode,\r
-    const Command* commands, size_t n_commands, const MetaBlockSplit* mb,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-\r
-  size_t pos = start_pos;\r
-  size_t i;\r
-  uint32_t num_distance_symbols = params->dist.alphabet_size;\r
-  uint32_t num_effective_distance_symbols = num_distance_symbols;\r
-  HuffmanTree* tree;\r
-  ContextLut literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode);\r
-  BlockEncoder literal_enc;\r
-  BlockEncoder command_enc;\r
-  BlockEncoder distance_enc;\r
-  const BrotliDistanceParams* dist = &params->dist;\r
-  if (params->large_window &&\r
-      num_effective_distance_symbols > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) {\r
-    num_effective_distance_symbols = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS;\r
-  }\r
-\r
-  StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);\r
-\r
-  tree = BROTLI_ALLOC(m, HuffmanTree, MAX_HUFFMAN_TREE_SIZE);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  InitBlockEncoder(&literal_enc, BROTLI_NUM_LITERAL_SYMBOLS,\r
-      mb->literal_split.num_types, mb->literal_split.types,\r
-      mb->literal_split.lengths, mb->literal_split.num_blocks);\r
-  InitBlockEncoder(&command_enc, BROTLI_NUM_COMMAND_SYMBOLS,\r
-      mb->command_split.num_types, mb->command_split.types,\r
-      mb->command_split.lengths, mb->command_split.num_blocks);\r
-  InitBlockEncoder(&distance_enc, num_effective_distance_symbols,\r
-      mb->distance_split.num_types, mb->distance_split.types,\r
-      mb->distance_split.lengths, mb->distance_split.num_blocks);\r
-\r
-  BuildAndStoreBlockSwitchEntropyCodes(&literal_enc, tree, storage_ix, storage);\r
-  BuildAndStoreBlockSwitchEntropyCodes(&command_enc, tree, storage_ix, storage);\r
-  BuildAndStoreBlockSwitchEntropyCodes(\r
-      &distance_enc, tree, storage_ix, storage);\r
-\r
-  BrotliWriteBits(2, dist->distance_postfix_bits, storage_ix, storage);\r
-  BrotliWriteBits(\r
-      4, dist->num_direct_distance_codes >> dist->distance_postfix_bits,\r
-      storage_ix, storage);\r
-  for (i = 0; i < mb->literal_split.num_types; ++i) {\r
-    BrotliWriteBits(2, literal_context_mode, storage_ix, storage);\r
-  }\r
-\r
-  if (mb->literal_context_map_size == 0) {\r
-    StoreTrivialContextMap(mb->literal_histograms_size,\r
-        BROTLI_LITERAL_CONTEXT_BITS, tree, storage_ix, storage);\r
-  } else {\r
-    EncodeContextMap(m,\r
-        mb->literal_context_map, mb->literal_context_map_size,\r
-        mb->literal_histograms_size, tree, storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-  }\r
-\r
-  if (mb->distance_context_map_size == 0) {\r
-    StoreTrivialContextMap(mb->distance_histograms_size,\r
-        BROTLI_DISTANCE_CONTEXT_BITS, tree, storage_ix, storage);\r
-  } else {\r
-    EncodeContextMap(m,\r
-        mb->distance_context_map, mb->distance_context_map_size,\r
-        mb->distance_histograms_size, tree, storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-  }\r
-\r
-  BuildAndStoreEntropyCodesLiteral(m, &literal_enc, mb->literal_histograms,\r
-      mb->literal_histograms_size, BROTLI_NUM_LITERAL_SYMBOLS, tree,\r
-      storage_ix, storage);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BuildAndStoreEntropyCodesCommand(m, &command_enc, mb->command_histograms,\r
-      mb->command_histograms_size, BROTLI_NUM_COMMAND_SYMBOLS, tree,\r
-      storage_ix, storage);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BuildAndStoreEntropyCodesDistance(m, &distance_enc, mb->distance_histograms,\r
-      mb->distance_histograms_size, num_distance_symbols, tree,\r
-      storage_ix, storage);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BROTLI_FREE(m, tree);\r
-\r
-  for (i = 0; i < n_commands; ++i) {\r
-    const Command cmd = commands[i];\r
-    size_t cmd_code = cmd.cmd_prefix_;\r
-    StoreSymbol(&command_enc, cmd_code, storage_ix, storage);\r
-    StoreCommandExtra(&cmd, storage_ix, storage);\r
-    if (mb->literal_context_map_size == 0) {\r
-      size_t j;\r
-      for (j = cmd.insert_len_; j != 0; --j) {\r
-        StoreSymbol(&literal_enc, input[pos & mask], storage_ix, storage);\r
-        ++pos;\r
-      }\r
-    } else {\r
-      size_t j;\r
-      for (j = cmd.insert_len_; j != 0; --j) {\r
-        size_t context =\r
-            BROTLI_CONTEXT(prev_byte, prev_byte2, literal_context_lut);\r
-        uint8_t literal = input[pos & mask];\r
-        StoreSymbolWithContext(&literal_enc, literal, context,\r
-            mb->literal_context_map, storage_ix, storage,\r
-            BROTLI_LITERAL_CONTEXT_BITS);\r
-        prev_byte2 = prev_byte;\r
-        prev_byte = literal;\r
-        ++pos;\r
-      }\r
-    }\r
-    pos += CommandCopyLen(&cmd);\r
-    if (CommandCopyLen(&cmd)) {\r
-      prev_byte2 = input[(pos - 2) & mask];\r
-      prev_byte = input[(pos - 1) & mask];\r
-      if (cmd.cmd_prefix_ >= 128) {\r
-        size_t dist_code = cmd.dist_prefix_ & 0x3FF;\r
-        uint32_t distnumextra = cmd.dist_prefix_ >> 10;\r
-        uint64_t distextra = cmd.dist_extra_;\r
-        if (mb->distance_context_map_size == 0) {\r
-          StoreSymbol(&distance_enc, dist_code, storage_ix, storage);\r
-        } else {\r
-          size_t context = CommandDistanceContext(&cmd);\r
-          StoreSymbolWithContext(&distance_enc, dist_code, context,\r
-              mb->distance_context_map, storage_ix, storage,\r
-              BROTLI_DISTANCE_CONTEXT_BITS);\r
-        }\r
-        BrotliWriteBits(distnumextra, distextra, storage_ix, storage);\r
-      }\r
-    }\r
-  }\r
-  CleanupBlockEncoder(m, &distance_enc);\r
-  CleanupBlockEncoder(m, &command_enc);\r
-  CleanupBlockEncoder(m, &literal_enc);\r
-  if (is_last) {\r
-    JumpToByteBoundary(storage_ix, storage);\r
-  }\r
-}\r
-\r
-static void BuildHistograms(const uint8_t* input,\r
-                            size_t start_pos,\r
-                            size_t mask,\r
-                            const Command* commands,\r
-                            size_t n_commands,\r
-                            HistogramLiteral* lit_histo,\r
-                            HistogramCommand* cmd_histo,\r
-                            HistogramDistance* dist_histo) {\r
-  size_t pos = start_pos;\r
-  size_t i;\r
-  for (i = 0; i < n_commands; ++i) {\r
-    const Command cmd = commands[i];\r
-    size_t j;\r
-    HistogramAddCommand(cmd_histo, cmd.cmd_prefix_);\r
-    for (j = cmd.insert_len_; j != 0; --j) {\r
-      HistogramAddLiteral(lit_histo, input[pos & mask]);\r
-      ++pos;\r
-    }\r
-    pos += CommandCopyLen(&cmd);\r
-    if (CommandCopyLen(&cmd) && cmd.cmd_prefix_ >= 128) {\r
-      HistogramAddDistance(dist_histo, cmd.dist_prefix_ & 0x3FF);\r
-    }\r
-  }\r
-}\r
-\r
-static void StoreDataWithHuffmanCodes(const uint8_t* input,\r
-                                      size_t start_pos,\r
-                                      size_t mask,\r
-                                      const Command* commands,\r
-                                      size_t n_commands,\r
-                                      const uint8_t* lit_depth,\r
-                                      const uint16_t* lit_bits,\r
-                                      const uint8_t* cmd_depth,\r
-                                      const uint16_t* cmd_bits,\r
-                                      const uint8_t* dist_depth,\r
-                                      const uint16_t* dist_bits,\r
-                                      size_t* storage_ix,\r
-                                      uint8_t* storage) {\r
-  size_t pos = start_pos;\r
-  size_t i;\r
-  for (i = 0; i < n_commands; ++i) {\r
-    const Command cmd = commands[i];\r
-    const size_t cmd_code = cmd.cmd_prefix_;\r
-    size_t j;\r
-    BrotliWriteBits(\r
-        cmd_depth[cmd_code], cmd_bits[cmd_code], storage_ix, storage);\r
-    StoreCommandExtra(&cmd, storage_ix, storage);\r
-    for (j = cmd.insert_len_; j != 0; --j) {\r
-      const uint8_t literal = input[pos & mask];\r
-      BrotliWriteBits(\r
-          lit_depth[literal], lit_bits[literal], storage_ix, storage);\r
-      ++pos;\r
-    }\r
-    pos += CommandCopyLen(&cmd);\r
-    if (CommandCopyLen(&cmd) && cmd.cmd_prefix_ >= 128) {\r
-      const size_t dist_code = cmd.dist_prefix_ & 0x3FF;\r
-      const uint32_t distnumextra = cmd.dist_prefix_ >> 10;\r
-      const uint32_t distextra = cmd.dist_extra_;\r
-      BrotliWriteBits(dist_depth[dist_code], dist_bits[dist_code],\r
-                      storage_ix, storage);\r
-      BrotliWriteBits(distnumextra, distextra, storage_ix, storage);\r
-    }\r
-  }\r
-}\r
-\r
-void BrotliStoreMetaBlockTrivial(MemoryManager* m,\r
-    const uint8_t* input, size_t start_pos, size_t length, size_t mask,\r
-    BROTLI_BOOL is_last, const BrotliEncoderParams* params,\r
-    const Command* commands, size_t n_commands,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  HistogramLiteral lit_histo;\r
-  HistogramCommand cmd_histo;\r
-  HistogramDistance dist_histo;\r
-  uint8_t lit_depth[BROTLI_NUM_LITERAL_SYMBOLS];\r
-  uint16_t lit_bits[BROTLI_NUM_LITERAL_SYMBOLS];\r
-  uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS];\r
-  uint16_t cmd_bits[BROTLI_NUM_COMMAND_SYMBOLS];\r
-  uint8_t dist_depth[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];\r
-  uint16_t dist_bits[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];\r
-  HuffmanTree* tree;\r
-  uint32_t num_distance_symbols = params->dist.alphabet_size;\r
-\r
-  StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);\r
-\r
-  HistogramClearLiteral(&lit_histo);\r
-  HistogramClearCommand(&cmd_histo);\r
-  HistogramClearDistance(&dist_histo);\r
-\r
-  BuildHistograms(input, start_pos, mask, commands, n_commands,\r
-                  &lit_histo, &cmd_histo, &dist_histo);\r
-\r
-  BrotliWriteBits(13, 0, storage_ix, storage);\r
-\r
-  tree = BROTLI_ALLOC(m, HuffmanTree, MAX_HUFFMAN_TREE_SIZE);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BuildAndStoreHuffmanTree(lit_histo.data_, BROTLI_NUM_LITERAL_SYMBOLS,\r
-                           BROTLI_NUM_LITERAL_SYMBOLS, tree,\r
-                           lit_depth, lit_bits,\r
-                           storage_ix, storage);\r
-  BuildAndStoreHuffmanTree(cmd_histo.data_, BROTLI_NUM_COMMAND_SYMBOLS,\r
-                           BROTLI_NUM_COMMAND_SYMBOLS, tree,\r
-                           cmd_depth, cmd_bits,\r
-                           storage_ix, storage);\r
-  BuildAndStoreHuffmanTree(dist_histo.data_, MAX_SIMPLE_DISTANCE_ALPHABET_SIZE,\r
-                           num_distance_symbols, tree,\r
-                           dist_depth, dist_bits,\r
-                           storage_ix, storage);\r
-  BROTLI_FREE(m, tree);\r
-  StoreDataWithHuffmanCodes(input, start_pos, mask, commands,\r
-                            n_commands, lit_depth, lit_bits,\r
-                            cmd_depth, cmd_bits,\r
-                            dist_depth, dist_bits,\r
-                            storage_ix, storage);\r
-  if (is_last) {\r
-    JumpToByteBoundary(storage_ix, storage);\r
-  }\r
-}\r
-\r
-void BrotliStoreMetaBlockFast(MemoryManager* m,\r
-    const uint8_t* input, size_t start_pos, size_t length, size_t mask,\r
-    BROTLI_BOOL is_last, const BrotliEncoderParams* params,\r
-    const Command* commands, size_t n_commands,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  uint32_t num_distance_symbols = params->dist.alphabet_size;\r
-  uint32_t distance_alphabet_bits =\r
-      Log2FloorNonZero(num_distance_symbols - 1) + 1;\r
-\r
-  StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);\r
-\r
-  BrotliWriteBits(13, 0, storage_ix, storage);\r
-\r
-  if (n_commands <= 128) {\r
-    uint32_t histogram[BROTLI_NUM_LITERAL_SYMBOLS] = { 0 };\r
-    size_t pos = start_pos;\r
-    size_t num_literals = 0;\r
-    size_t i;\r
-    uint8_t lit_depth[BROTLI_NUM_LITERAL_SYMBOLS];\r
-    uint16_t lit_bits[BROTLI_NUM_LITERAL_SYMBOLS];\r
-    for (i = 0; i < n_commands; ++i) {\r
-      const Command cmd = commands[i];\r
-      size_t j;\r
-      for (j = cmd.insert_len_; j != 0; --j) {\r
-        ++histogram[input[pos & mask]];\r
-        ++pos;\r
-      }\r
-      num_literals += cmd.insert_len_;\r
-      pos += CommandCopyLen(&cmd);\r
-    }\r
-    BrotliBuildAndStoreHuffmanTreeFast(m, histogram, num_literals,\r
-                                       /* max_bits = */ 8,\r
-                                       lit_depth, lit_bits,\r
-                                       storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    StoreStaticCommandHuffmanTree(storage_ix, storage);\r
-    StoreStaticDistanceHuffmanTree(storage_ix, storage);\r
-    StoreDataWithHuffmanCodes(input, start_pos, mask, commands,\r
-                              n_commands, lit_depth, lit_bits,\r
-                              kStaticCommandCodeDepth,\r
-                              kStaticCommandCodeBits,\r
-                              kStaticDistanceCodeDepth,\r
-                              kStaticDistanceCodeBits,\r
-                              storage_ix, storage);\r
-  } else {\r
-    HistogramLiteral lit_histo;\r
-    HistogramCommand cmd_histo;\r
-    HistogramDistance dist_histo;\r
-    uint8_t lit_depth[BROTLI_NUM_LITERAL_SYMBOLS];\r
-    uint16_t lit_bits[BROTLI_NUM_LITERAL_SYMBOLS];\r
-    uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS];\r
-    uint16_t cmd_bits[BROTLI_NUM_COMMAND_SYMBOLS];\r
-    uint8_t dist_depth[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];\r
-    uint16_t dist_bits[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];\r
-    HistogramClearLiteral(&lit_histo);\r
-    HistogramClearCommand(&cmd_histo);\r
-    HistogramClearDistance(&dist_histo);\r
-    BuildHistograms(input, start_pos, mask, commands, n_commands,\r
-                    &lit_histo, &cmd_histo, &dist_histo);\r
-    BrotliBuildAndStoreHuffmanTreeFast(m, lit_histo.data_,\r
-                                       lit_histo.total_count_,\r
-                                       /* max_bits = */ 8,\r
-                                       lit_depth, lit_bits,\r
-                                       storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    BrotliBuildAndStoreHuffmanTreeFast(m, cmd_histo.data_,\r
-                                       cmd_histo.total_count_,\r
-                                       /* max_bits = */ 10,\r
-                                       cmd_depth, cmd_bits,\r
-                                       storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    BrotliBuildAndStoreHuffmanTreeFast(m, dist_histo.data_,\r
-                                       dist_histo.total_count_,\r
-                                       /* max_bits = */\r
-                                       distance_alphabet_bits,\r
-                                       dist_depth, dist_bits,\r
-                                       storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    StoreDataWithHuffmanCodes(input, start_pos, mask, commands,\r
-                              n_commands, lit_depth, lit_bits,\r
-                              cmd_depth, cmd_bits,\r
-                              dist_depth, dist_bits,\r
-                              storage_ix, storage);\r
-  }\r
-\r
-  if (is_last) {\r
-    JumpToByteBoundary(storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* This is for storing uncompressed blocks (simple raw storage of\r
-   bytes-as-bytes). */\r
-void BrotliStoreUncompressedMetaBlock(BROTLI_BOOL is_final_block,\r
-                                      const uint8_t* BROTLI_RESTRICT input,\r
-                                      size_t position, size_t mask,\r
-                                      size_t len,\r
-                                      size_t* BROTLI_RESTRICT storage_ix,\r
-                                      uint8_t* BROTLI_RESTRICT storage) {\r
-  size_t masked_pos = position & mask;\r
-  BrotliStoreUncompressedMetaBlockHeader(len, storage_ix, storage);\r
-  JumpToByteBoundary(storage_ix, storage);\r
-\r
-  if (masked_pos + len > mask + 1) {\r
-    size_t len1 = mask + 1 - masked_pos;\r
-    memcpy(&storage[*storage_ix >> 3], &input[masked_pos], len1);\r
-    *storage_ix += len1 << 3;\r
-    len -= len1;\r
-    masked_pos = 0;\r
-  }\r
-  memcpy(&storage[*storage_ix >> 3], &input[masked_pos], len);\r
-  *storage_ix += len << 3;\r
-\r
-  /* We need to clear the next 4 bytes to continue to be\r
-     compatible with BrotliWriteBits. */\r
-  BrotliWriteBitsPrepareStorage(*storage_ix, storage);\r
-\r
-  /* Since the uncompressed block itself may not be the final block, add an\r
-     empty one after this. */\r
-  if (is_final_block) {\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* islast */\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* isempty */\r
-    JumpToByteBoundary(storage_ix, storage);\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.h b/BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.h
deleted file mode 100644 (file)
index 18556dc..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright 2014 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Functions to convert brotli-related data structures into the\r
-   brotli bit stream. The functions here operate under\r
-   assumption that there is enough space in the storage, i.e., there are\r
-   no out-of-range checks anywhere.\r
-\r
-   These functions do bit addressing into a byte array. The byte array\r
-   is called "storage" and the index to the bit is called storage_ix\r
-   in function arguments. */\r
-\r
-#ifndef BROTLI_ENC_BROTLI_BIT_STREAM_H_\r
-#define BROTLI_ENC_BROTLI_BIT_STREAM_H_\r
-\r
-#include "../common/context.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./command.h"\r
-#include "./entropy_encode.h"\r
-#include "./memory.h"\r
-#include "./metablock.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* All Store functions here will use a storage_ix, which is always the bit\r
-   position for the current storage. */\r
-\r
-BROTLI_INTERNAL void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num,\r
-    HuffmanTree* tree, size_t* storage_ix, uint8_t* storage);\r
-\r
-BROTLI_INTERNAL void BrotliBuildAndStoreHuffmanTreeFast(\r
-    MemoryManager* m, const uint32_t* histogram, const size_t histogram_total,\r
-    const size_t max_bits, uint8_t* depth, uint16_t* bits, size_t* storage_ix,\r
-    uint8_t* storage);\r
-\r
-/* REQUIRES: length > 0 */\r
-/* REQUIRES: length <= (1 << 24) */\r
-BROTLI_INTERNAL void BrotliStoreMetaBlock(MemoryManager* m,\r
-    const uint8_t* input, size_t start_pos, size_t length, size_t mask,\r
-    uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last,\r
-    const BrotliEncoderParams* params, ContextType literal_context_mode,\r
-    const Command* commands, size_t n_commands, const MetaBlockSplit* mb,\r
-    size_t* storage_ix, uint8_t* storage);\r
-\r
-/* Stores the meta-block without doing any block splitting, just collects\r
-   one histogram per block category and uses that for entropy coding.\r
-   REQUIRES: length > 0\r
-   REQUIRES: length <= (1 << 24) */\r
-BROTLI_INTERNAL void BrotliStoreMetaBlockTrivial(MemoryManager* m,\r
-    const uint8_t* input, size_t start_pos, size_t length, size_t mask,\r
-    BROTLI_BOOL is_last, const BrotliEncoderParams* params,\r
-    const Command* commands, size_t n_commands,\r
-    size_t* storage_ix, uint8_t* storage);\r
-\r
-/* Same as above, but uses static prefix codes for histograms with a only a few\r
-   symbols, and uses static code length prefix codes for all other histograms.\r
-   REQUIRES: length > 0\r
-   REQUIRES: length <= (1 << 24) */\r
-BROTLI_INTERNAL void BrotliStoreMetaBlockFast(MemoryManager* m,\r
-    const uint8_t* input, size_t start_pos, size_t length, size_t mask,\r
-    BROTLI_BOOL is_last, const BrotliEncoderParams* params,\r
-    const Command* commands, size_t n_commands,\r
-    size_t* storage_ix, uint8_t* storage);\r
-\r
-/* This is for storing uncompressed blocks (simple raw storage of\r
-   bytes-as-bytes).\r
-   REQUIRES: length > 0\r
-   REQUIRES: length <= (1 << 24) */\r
-BROTLI_INTERNAL void BrotliStoreUncompressedMetaBlock(\r
-    BROTLI_BOOL is_final_block, const uint8_t* BROTLI_RESTRICT input,\r
-    size_t position, size_t mask, size_t len,\r
-    size_t* BROTLI_RESTRICT storage_ix, uint8_t* BROTLI_RESTRICT storage);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_BROTLI_BIT_STREAM_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/cluster.c b/BaseTools/Source/C/BrotliCompress/enc/cluster.c
deleted file mode 100644 (file)
index fdb4fa7..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Functions for clustering similar histograms together. */\r
-\r
-#include "./cluster.h"\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./bit_cost.h"  /* BrotliPopulationCost */\r
-#include "./fast_log.h"\r
-#include "./histogram.h"\r
-#include "./memory.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static BROTLI_INLINE BROTLI_BOOL HistogramPairIsLess(\r
-    const HistogramPair* p1, const HistogramPair* p2) {\r
-  if (p1->cost_diff != p2->cost_diff) {\r
-    return TO_BROTLI_BOOL(p1->cost_diff > p2->cost_diff);\r
-  }\r
-  return TO_BROTLI_BOOL((p1->idx2 - p1->idx1) > (p2->idx2 - p2->idx1));\r
-}\r
-\r
-/* Returns entropy reduction of the context map when we combine two clusters. */\r
-static BROTLI_INLINE double ClusterCostDiff(size_t size_a, size_t size_b) {\r
-  size_t size_c = size_a + size_b;\r
-  return (double)size_a * FastLog2(size_a) +\r
-    (double)size_b * FastLog2(size_b) -\r
-    (double)size_c * FastLog2(size_c);\r
-}\r
-\r
-#define CODE(X) X\r
-\r
-#define FN(X) X ## Literal\r
-#include "./cluster_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Command\r
-#include "./cluster_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Distance\r
-#include "./cluster_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#undef CODE\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/cluster.h b/BaseTools/Source/C/BrotliCompress/enc/cluster.h
deleted file mode 100644 (file)
index b7ebec8..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Functions for clustering similar histograms together. */\r
-\r
-#ifndef BROTLI_ENC_CLUSTER_H_\r
-#define BROTLI_ENC_CLUSTER_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./histogram.h"\r
-#include "./memory.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-typedef struct HistogramPair {\r
-  uint32_t idx1;\r
-  uint32_t idx2;\r
-  double cost_combo;\r
-  double cost_diff;\r
-} HistogramPair;\r
-\r
-#define CODE(X) /* Declaration */;\r
-\r
-#define FN(X) X ## Literal\r
-#include "./cluster_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Command\r
-#include "./cluster_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Distance\r
-#include "./cluster_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#undef CODE\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_CLUSTER_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/cluster_inc.h b/BaseTools/Source/C/BrotliCompress/enc/cluster_inc.h
deleted file mode 100644 (file)
index b47e0df..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN, CODE */\r
-\r
-#define HistogramType FN(Histogram)\r
-\r
-/* Computes the bit cost reduction by combining out[idx1] and out[idx2] and if\r
-   it is below a threshold, stores the pair (idx1, idx2) in the *pairs queue. */\r
-BROTLI_INTERNAL void FN(BrotliCompareAndPushToQueue)(\r
-    const HistogramType* out, const uint32_t* cluster_size, uint32_t idx1,\r
-    uint32_t idx2, size_t max_num_pairs, HistogramPair* pairs,\r
-    size_t* num_pairs) CODE({\r
-  BROTLI_BOOL is_good_pair = BROTLI_FALSE;\r
-  HistogramPair p;\r
-  p.idx1 = p.idx2 = 0;\r
-  p.cost_diff = p.cost_combo = 0;\r
-  if (idx1 == idx2) {\r
-    return;\r
-  }\r
-  if (idx2 < idx1) {\r
-    uint32_t t = idx2;\r
-    idx2 = idx1;\r
-    idx1 = t;\r
-  }\r
-  p.idx1 = idx1;\r
-  p.idx2 = idx2;\r
-  p.cost_diff = 0.5 * ClusterCostDiff(cluster_size[idx1], cluster_size[idx2]);\r
-  p.cost_diff -= out[idx1].bit_cost_;\r
-  p.cost_diff -= out[idx2].bit_cost_;\r
-\r
-  if (out[idx1].total_count_ == 0) {\r
-    p.cost_combo = out[idx2].bit_cost_;\r
-    is_good_pair = BROTLI_TRUE;\r
-  } else if (out[idx2].total_count_ == 0) {\r
-    p.cost_combo = out[idx1].bit_cost_;\r
-    is_good_pair = BROTLI_TRUE;\r
-  } else {\r
-    double threshold = *num_pairs == 0 ? 1e99 :\r
-        BROTLI_MAX(double, 0.0, pairs[0].cost_diff);\r
-    HistogramType combo = out[idx1];\r
-    double cost_combo;\r
-    FN(HistogramAddHistogram)(&combo, &out[idx2]);\r
-    cost_combo = FN(BrotliPopulationCost)(&combo);\r
-    if (cost_combo < threshold - p.cost_diff) {\r
-      p.cost_combo = cost_combo;\r
-      is_good_pair = BROTLI_TRUE;\r
-    }\r
-  }\r
-  if (is_good_pair) {\r
-    p.cost_diff += p.cost_combo;\r
-    if (*num_pairs > 0 && HistogramPairIsLess(&pairs[0], &p)) {\r
-      /* Replace the top of the queue if needed. */\r
-      if (*num_pairs < max_num_pairs) {\r
-        pairs[*num_pairs] = pairs[0];\r
-        ++(*num_pairs);\r
-      }\r
-      pairs[0] = p;\r
-    } else if (*num_pairs < max_num_pairs) {\r
-      pairs[*num_pairs] = p;\r
-      ++(*num_pairs);\r
-    }\r
-  }\r
-})\r
-\r
-BROTLI_INTERNAL size_t FN(BrotliHistogramCombine)(HistogramType* out,\r
-                                                  uint32_t* cluster_size,\r
-                                                  uint32_t* symbols,\r
-                                                  uint32_t* clusters,\r
-                                                  HistogramPair* pairs,\r
-                                                  size_t num_clusters,\r
-                                                  size_t symbols_size,\r
-                                                  size_t max_clusters,\r
-                                                  size_t max_num_pairs) CODE({\r
-  double cost_diff_threshold = 0.0;\r
-  size_t min_cluster_size = 1;\r
-  size_t num_pairs = 0;\r
-\r
-  {\r
-    /* We maintain a vector of histogram pairs, with the property that the pair\r
-       with the maximum bit cost reduction is the first. */\r
-    size_t idx1;\r
-    for (idx1 = 0; idx1 < num_clusters; ++idx1) {\r
-      size_t idx2;\r
-      for (idx2 = idx1 + 1; idx2 < num_clusters; ++idx2) {\r
-        FN(BrotliCompareAndPushToQueue)(out, cluster_size, clusters[idx1],\r
-            clusters[idx2], max_num_pairs, &pairs[0], &num_pairs);\r
-      }\r
-    }\r
-  }\r
-\r
-  while (num_clusters > min_cluster_size) {\r
-    uint32_t best_idx1;\r
-    uint32_t best_idx2;\r
-    size_t i;\r
-    if (pairs[0].cost_diff >= cost_diff_threshold) {\r
-      cost_diff_threshold = 1e99;\r
-      min_cluster_size = max_clusters;\r
-      continue;\r
-    }\r
-    /* Take the best pair from the top of heap. */\r
-    best_idx1 = pairs[0].idx1;\r
-    best_idx2 = pairs[0].idx2;\r
-    FN(HistogramAddHistogram)(&out[best_idx1], &out[best_idx2]);\r
-    out[best_idx1].bit_cost_ = pairs[0].cost_combo;\r
-    cluster_size[best_idx1] += cluster_size[best_idx2];\r
-    for (i = 0; i < symbols_size; ++i) {\r
-      if (symbols[i] == best_idx2) {\r
-        symbols[i] = best_idx1;\r
-      }\r
-    }\r
-    for (i = 0; i < num_clusters; ++i) {\r
-      if (clusters[i] == best_idx2) {\r
-        memmove(&clusters[i], &clusters[i + 1],\r
-                (num_clusters - i - 1) * sizeof(clusters[0]));\r
-        break;\r
-      }\r
-    }\r
-    --num_clusters;\r
-    {\r
-      /* Remove pairs intersecting the just combined best pair. */\r
-      size_t copy_to_idx = 0;\r
-      for (i = 0; i < num_pairs; ++i) {\r
-        HistogramPair* p = &pairs[i];\r
-        if (p->idx1 == best_idx1 || p->idx2 == best_idx1 ||\r
-            p->idx1 == best_idx2 || p->idx2 == best_idx2) {\r
-          /* Remove invalid pair from the queue. */\r
-          continue;\r
-        }\r
-        if (HistogramPairIsLess(&pairs[0], p)) {\r
-          /* Replace the top of the queue if needed. */\r
-          HistogramPair front = pairs[0];\r
-          pairs[0] = *p;\r
-          pairs[copy_to_idx] = front;\r
-        } else {\r
-          pairs[copy_to_idx] = *p;\r
-        }\r
-        ++copy_to_idx;\r
-      }\r
-      num_pairs = copy_to_idx;\r
-    }\r
-\r
-    /* Push new pairs formed with the combined histogram to the heap. */\r
-    for (i = 0; i < num_clusters; ++i) {\r
-      FN(BrotliCompareAndPushToQueue)(out, cluster_size, best_idx1, clusters[i],\r
-                                      max_num_pairs, &pairs[0], &num_pairs);\r
-    }\r
-  }\r
-  return num_clusters;\r
-})\r
-\r
-/* What is the bit cost of moving histogram from cur_symbol to candidate. */\r
-BROTLI_INTERNAL double FN(BrotliHistogramBitCostDistance)(\r
-    const HistogramType* histogram, const HistogramType* candidate) CODE({\r
-  if (histogram->total_count_ == 0) {\r
-    return 0.0;\r
-  } else {\r
-    HistogramType tmp = *histogram;\r
-    FN(HistogramAddHistogram)(&tmp, candidate);\r
-    return FN(BrotliPopulationCost)(&tmp) - candidate->bit_cost_;\r
-  }\r
-})\r
-\r
-/* Find the best 'out' histogram for each of the 'in' histograms.\r
-   When called, clusters[0..num_clusters) contains the unique values from\r
-   symbols[0..in_size), but this property is not preserved in this function.\r
-   Note: we assume that out[]->bit_cost_ is already up-to-date. */\r
-BROTLI_INTERNAL void FN(BrotliHistogramRemap)(const HistogramType* in,\r
-    size_t in_size, const uint32_t* clusters, size_t num_clusters,\r
-    HistogramType* out, uint32_t* symbols) CODE({\r
-  size_t i;\r
-  for (i = 0; i < in_size; ++i) {\r
-    uint32_t best_out = i == 0 ? symbols[0] : symbols[i - 1];\r
-    double best_bits =\r
-        FN(BrotliHistogramBitCostDistance)(&in[i], &out[best_out]);\r
-    size_t j;\r
-    for (j = 0; j < num_clusters; ++j) {\r
-      const double cur_bits =\r
-          FN(BrotliHistogramBitCostDistance)(&in[i], &out[clusters[j]]);\r
-      if (cur_bits < best_bits) {\r
-        best_bits = cur_bits;\r
-        best_out = clusters[j];\r
-      }\r
-    }\r
-    symbols[i] = best_out;\r
-  }\r
-\r
-  /* Recompute each out based on raw and symbols. */\r
-  for (i = 0; i < num_clusters; ++i) {\r
-    FN(HistogramClear)(&out[clusters[i]]);\r
-  }\r
-  for (i = 0; i < in_size; ++i) {\r
-    FN(HistogramAddHistogram)(&out[symbols[i]], &in[i]);\r
-  }\r
-})\r
-\r
-/* Reorders elements of the out[0..length) array and changes values in\r
-   symbols[0..length) array in the following way:\r
-     * when called, symbols[] contains indexes into out[], and has N unique\r
-       values (possibly N < length)\r
-     * on return, symbols'[i] = f(symbols[i]) and\r
-                  out'[symbols'[i]] = out[symbols[i]], for each 0 <= i < length,\r
-       where f is a bijection between the range of symbols[] and [0..N), and\r
-       the first occurrences of values in symbols'[i] come in consecutive\r
-       increasing order.\r
-   Returns N, the number of unique values in symbols[]. */\r
-BROTLI_INTERNAL size_t FN(BrotliHistogramReindex)(MemoryManager* m,\r
-    HistogramType* out, uint32_t* symbols, size_t length) CODE({\r
-  static const uint32_t kInvalidIndex = BROTLI_UINT32_MAX;\r
-  uint32_t* new_index = BROTLI_ALLOC(m, uint32_t, length);\r
-  uint32_t next_index;\r
-  HistogramType* tmp;\r
-  size_t i;\r
-  if (BROTLI_IS_OOM(m)) return 0;\r
-  for (i = 0; i < length; ++i) {\r
-      new_index[i] = kInvalidIndex;\r
-  }\r
-  next_index = 0;\r
-  for (i = 0; i < length; ++i) {\r
-    if (new_index[symbols[i]] == kInvalidIndex) {\r
-      new_index[symbols[i]] = next_index;\r
-      ++next_index;\r
-    }\r
-  }\r
-  /* TODO: by using idea of "cycle-sort" we can avoid allocation of\r
-     tmp and reduce the number of copying by the factor of 2. */\r
-  tmp = BROTLI_ALLOC(m, HistogramType, next_index);\r
-  if (BROTLI_IS_OOM(m)) return 0;\r
-  next_index = 0;\r
-  for (i = 0; i < length; ++i) {\r
-    if (new_index[symbols[i]] == next_index) {\r
-      tmp[next_index] = out[symbols[i]];\r
-      ++next_index;\r
-    }\r
-    symbols[i] = new_index[symbols[i]];\r
-  }\r
-  BROTLI_FREE(m, new_index);\r
-  for (i = 0; i < next_index; ++i) {\r
-    out[i] = tmp[i];\r
-  }\r
-  BROTLI_FREE(m, tmp);\r
-  return next_index;\r
-})\r
-\r
-BROTLI_INTERNAL void FN(BrotliClusterHistograms)(\r
-    MemoryManager* m, const HistogramType* in, const size_t in_size,\r
-    size_t max_histograms, HistogramType* out, size_t* out_size,\r
-    uint32_t* histogram_symbols) CODE({\r
-  uint32_t* cluster_size = BROTLI_ALLOC(m, uint32_t, in_size);\r
-  uint32_t* clusters = BROTLI_ALLOC(m, uint32_t, in_size);\r
-  size_t num_clusters = 0;\r
-  const size_t max_input_histograms = 64;\r
-  size_t pairs_capacity = max_input_histograms * max_input_histograms / 2;\r
-  /* For the first pass of clustering, we allow all pairs. */\r
-  HistogramPair* pairs = BROTLI_ALLOC(m, HistogramPair, pairs_capacity + 1);\r
-  size_t i;\r
-\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  for (i = 0; i < in_size; ++i) {\r
-    cluster_size[i] = 1;\r
-  }\r
-\r
-  for (i = 0; i < in_size; ++i) {\r
-    out[i] = in[i];\r
-    out[i].bit_cost_ = FN(BrotliPopulationCost)(&in[i]);\r
-    histogram_symbols[i] = (uint32_t)i;\r
-  }\r
-\r
-  for (i = 0; i < in_size; i += max_input_histograms) {\r
-    size_t num_to_combine =\r
-        BROTLI_MIN(size_t, in_size - i, max_input_histograms);\r
-    size_t num_new_clusters;\r
-    size_t j;\r
-    for (j = 0; j < num_to_combine; ++j) {\r
-      clusters[num_clusters + j] = (uint32_t)(i + j);\r
-    }\r
-    num_new_clusters =\r
-        FN(BrotliHistogramCombine)(out, cluster_size,\r
-                                   &histogram_symbols[i],\r
-                                   &clusters[num_clusters], pairs,\r
-                                   num_to_combine, num_to_combine,\r
-                                   max_histograms, pairs_capacity);\r
-    num_clusters += num_new_clusters;\r
-  }\r
-\r
-  {\r
-    /* For the second pass, we limit the total number of histogram pairs.\r
-       After this limit is reached, we only keep searching for the best pair. */\r
-    size_t max_num_pairs = BROTLI_MIN(size_t,\r
-        64 * num_clusters, (num_clusters / 2) * num_clusters);\r
-    BROTLI_ENSURE_CAPACITY(\r
-        m, HistogramPair, pairs, pairs_capacity, max_num_pairs + 1);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-\r
-    /* Collapse similar histograms. */\r
-    num_clusters = FN(BrotliHistogramCombine)(out, cluster_size,\r
-                                              histogram_symbols, clusters,\r
-                                              pairs, num_clusters, in_size,\r
-                                              max_histograms, max_num_pairs);\r
-  }\r
-  BROTLI_FREE(m, pairs);\r
-  BROTLI_FREE(m, cluster_size);\r
-  /* Find the optimal map from original histograms to the final ones. */\r
-  FN(BrotliHistogramRemap)(in, in_size, clusters, num_clusters,\r
-                           out, histogram_symbols);\r
-  BROTLI_FREE(m, clusters);\r
-  /* Convert the context map to a canonical form. */\r
-  *out_size = FN(BrotliHistogramReindex)(m, out, histogram_symbols, in_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-})\r
-\r
-#undef HistogramType\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/command.h b/BaseTools/Source/C/BrotliCompress/enc/command.h
deleted file mode 100644 (file)
index b8a66a4..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* This class models a sequence of literals and a backward reference copy. */\r
-\r
-#ifndef BROTLI_ENC_COMMAND_H_\r
-#define BROTLI_ENC_COMMAND_H_\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./fast_log.h"\r
-#include "./params.h"\r
-#include "./prefix.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static uint32_t kInsBase[] =   { 0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26, 34, 50,\r
-    66, 98, 130, 194, 322, 578, 1090, 2114, 6210, 22594 };\r
-static uint32_t kInsExtra[] =  { 0, 0, 0, 0, 0, 0, 1, 1,  2,  2,  3,  3,  4,  4,\r
-    5,   5,   6,   7,   8,   9,   10,   12,   14,    24 };\r
-static uint32_t kCopyBase[] =  { 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 18, 22, 30,\r
-    38, 54,  70, 102, 134, 198, 326,   582, 1094,  2118 };\r
-static uint32_t kCopyExtra[] = { 0, 0, 0, 0, 0, 0, 0, 0,  1,  1,  2,  2,  3,  3,\r
-     4,  4,   5,   5,   6,   7,   8,     9,   10,    24 };\r
-\r
-static BROTLI_INLINE uint16_t GetInsertLengthCode(size_t insertlen) {\r
-  if (insertlen < 6) {\r
-    return (uint16_t)insertlen;\r
-  } else if (insertlen < 130) {\r
-    uint32_t nbits = Log2FloorNonZero(insertlen - 2) - 1u;\r
-    return (uint16_t)((nbits << 1) + ((insertlen - 2) >> nbits) + 2);\r
-  } else if (insertlen < 2114) {\r
-    return (uint16_t)(Log2FloorNonZero(insertlen - 66) + 10);\r
-  } else if (insertlen < 6210) {\r
-    return 21u;\r
-  } else if (insertlen < 22594) {\r
-    return 22u;\r
-  } else {\r
-    return 23u;\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE uint16_t GetCopyLengthCode(size_t copylen) {\r
-  if (copylen < 10) {\r
-    return (uint16_t)(copylen - 2);\r
-  } else if (copylen < 134) {\r
-    uint32_t nbits = Log2FloorNonZero(copylen - 6) - 1u;\r
-    return (uint16_t)((nbits << 1) + ((copylen - 6) >> nbits) + 4);\r
-  } else if (copylen < 2118) {\r
-    return (uint16_t)(Log2FloorNonZero(copylen - 70) + 12);\r
-  } else {\r
-    return 23u;\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE uint16_t CombineLengthCodes(\r
-    uint16_t inscode, uint16_t copycode, BROTLI_BOOL use_last_distance) {\r
-  uint16_t bits64 =\r
-      (uint16_t)((copycode & 0x7u) | ((inscode & 0x7u) << 3u));\r
-  if (use_last_distance && inscode < 8u && copycode < 16u) {\r
-    return (copycode < 8u) ? bits64 : (bits64 | 64u);\r
-  } else {\r
-    /* Specification: 5 Encoding of ... (last table) */\r
-    /* offset = 2 * index, where index is in range [0..8] */\r
-    uint32_t offset = 2u * ((copycode >> 3u) + 3u * (inscode >> 3u));\r
-    /* All values in specification are K * 64,\r
-       where   K = [2, 3, 6, 4, 5, 8, 7, 9, 10],\r
-           i + 1 = [1, 2, 3, 4, 5, 6, 7, 8,  9],\r
-       K - i - 1 = [1, 1, 3, 0, 0, 2, 0, 1,  2] = D.\r
-       All values in D require only 2 bits to encode.\r
-       Magic constant is shifted 6 bits left, to avoid final multiplication. */\r
-    offset = (offset << 5u) + 0x40u + ((0x520D40u >> offset) & 0xC0u);\r
-    return (uint16_t)(offset | bits64);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void GetLengthCode(size_t insertlen, size_t copylen,\r
-                                        BROTLI_BOOL use_last_distance,\r
-                                        uint16_t* code) {\r
-  uint16_t inscode = GetInsertLengthCode(insertlen);\r
-  uint16_t copycode = GetCopyLengthCode(copylen);\r
-  *code = CombineLengthCodes(inscode, copycode, use_last_distance);\r
-}\r
-\r
-static BROTLI_INLINE uint32_t GetInsertBase(uint16_t inscode) {\r
-  return kInsBase[inscode];\r
-}\r
-\r
-static BROTLI_INLINE uint32_t GetInsertExtra(uint16_t inscode) {\r
-  return kInsExtra[inscode];\r
-}\r
-\r
-static BROTLI_INLINE uint32_t GetCopyBase(uint16_t copycode) {\r
-  return kCopyBase[copycode];\r
-}\r
-\r
-static BROTLI_INLINE uint32_t GetCopyExtra(uint16_t copycode) {\r
-  return kCopyExtra[copycode];\r
-}\r
-\r
-typedef struct Command {\r
-  uint32_t insert_len_;\r
-  /* Stores copy_len in low 25 bits and copy_code - copy_len in high 7 bit. */\r
-  uint32_t copy_len_;\r
-  /* Stores distance extra bits. */\r
-  uint32_t dist_extra_;\r
-  uint16_t cmd_prefix_;\r
-  /* Stores distance code in low 10 bits\r
-     and number of extra bits in high 6 bits. */\r
-  uint16_t dist_prefix_;\r
-} Command;\r
-\r
-/* distance_code is e.g. 0 for same-as-last short code, or 16 for offset 1. */\r
-static BROTLI_INLINE void InitCommand(Command* self,\r
-    const BrotliDistanceParams* dist, size_t insertlen,\r
-    size_t copylen, int copylen_code_delta, size_t distance_code) {\r
-  /* Don't rely on signed int representation, use honest casts. */\r
-  uint32_t delta = (uint8_t)((int8_t)copylen_code_delta);\r
-  self->insert_len_ = (uint32_t)insertlen;\r
-  self->copy_len_ = (uint32_t)(copylen | (delta << 25));\r
-  /* The distance prefix and extra bits are stored in this Command as if\r
-     npostfix and ndirect were 0, they are only recomputed later after the\r
-     clustering if needed. */\r
-  PrefixEncodeCopyDistance(\r
-      distance_code, dist->num_direct_distance_codes,\r
-      dist->distance_postfix_bits, &self->dist_prefix_, &self->dist_extra_);\r
-  GetLengthCode(\r
-      insertlen, (size_t)((int)copylen + copylen_code_delta),\r
-      TO_BROTLI_BOOL((self->dist_prefix_ & 0x3FF) == 0), &self->cmd_prefix_);\r
-}\r
-\r
-static BROTLI_INLINE void InitInsertCommand(Command* self, size_t insertlen) {\r
-  self->insert_len_ = (uint32_t)insertlen;\r
-  self->copy_len_ = 4 << 25;\r
-  self->dist_extra_ = 0;\r
-  self->dist_prefix_ = BROTLI_NUM_DISTANCE_SHORT_CODES;\r
-  GetLengthCode(insertlen, 4, BROTLI_FALSE, &self->cmd_prefix_);\r
-}\r
-\r
-static BROTLI_INLINE uint32_t CommandRestoreDistanceCode(\r
-    const Command* self, const BrotliDistanceParams* dist) {\r
-  if ((self->dist_prefix_ & 0x3FFu) <\r
-      BROTLI_NUM_DISTANCE_SHORT_CODES + dist->num_direct_distance_codes) {\r
-    return self->dist_prefix_ & 0x3FFu;\r
-  } else {\r
-    uint32_t dcode = self->dist_prefix_ & 0x3FFu;\r
-    uint32_t nbits = self->dist_prefix_ >> 10;\r
-    uint32_t extra = self->dist_extra_;\r
-    uint32_t postfix_mask = (1U << dist->distance_postfix_bits) - 1U;\r
-    uint32_t hcode = (dcode - dist->num_direct_distance_codes -\r
-        BROTLI_NUM_DISTANCE_SHORT_CODES) >>\r
-        dist->distance_postfix_bits;\r
-    uint32_t lcode = (dcode - dist->num_direct_distance_codes -\r
-        BROTLI_NUM_DISTANCE_SHORT_CODES) & postfix_mask;\r
-    uint32_t offset = ((2U + (hcode & 1U)) << nbits) - 4U;\r
-    return ((offset + extra) << dist->distance_postfix_bits) + lcode +\r
-        dist->num_direct_distance_codes + BROTLI_NUM_DISTANCE_SHORT_CODES;\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE uint32_t CommandDistanceContext(const Command* self) {\r
-  uint32_t r = self->cmd_prefix_ >> 6;\r
-  uint32_t c = self->cmd_prefix_ & 7;\r
-  if ((r == 0 || r == 2 || r == 4 || r == 7) && (c <= 2)) {\r
-    return c;\r
-  }\r
-  return 3;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t CommandCopyLen(const Command* self) {\r
-  return self->copy_len_ & 0x1FFFFFF;\r
-}\r
-\r
-static BROTLI_INLINE uint32_t CommandCopyLenCode(const Command* self) {\r
-  uint32_t modifier = self->copy_len_ >> 25;\r
-  int32_t delta = (int8_t)((uint8_t)(modifier | ((modifier & 0x40) << 1)));\r
-  return (uint32_t)((int32_t)(self->copy_len_ & 0x1FFFFFF) + delta);\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_COMMAND_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/compress_fragment.c b/BaseTools/Source/C/BrotliCompress/enc/compress_fragment.c
deleted file mode 100644 (file)
index ca61bc0..0000000
+++ /dev/null
@@ -1,790 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function for fast encoding of an input fragment, independently from the input\r
-   history. This function uses one-pass processing: when we find a backward\r
-   match, we immediately emit the corresponding command and literal codes to\r
-   the bit stream.\r
-\r
-   Adapted from the CompressFragment() function in\r
-   https://github.com/google/snappy/blob/master/snappy.cc */\r
-\r
-#include "./compress_fragment.h"\r
-\r
-#include <string.h>  /* memcmp, memcpy, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./brotli_bit_stream.h"\r
-#include "./entropy_encode.h"\r
-#include "./fast_log.h"\r
-#include "./find_match_length.h"\r
-#include "./memory.h"\r
-#include "./write_bits.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define MAX_DISTANCE (long)BROTLI_MAX_BACKWARD_LIMIT(18)\r
-\r
-/* kHashMul32 multiplier has these properties:\r
-   * The multiplier must be odd. Otherwise we may lose the highest bit.\r
-   * No long streaks of ones or zeros.\r
-   * There is no effort to ensure that it is a prime, the oddity is enough\r
-     for this use.\r
-   * The number has been tuned heuristically against compression benchmarks. */\r
-static const uint32_t kHashMul32 = 0x1E35A7BD;\r
-\r
-static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) {\r
-  const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(p) << 24) * kHashMul32;\r
-  return (uint32_t)(h >> shift);\r
-}\r
-\r
-static BROTLI_INLINE uint32_t HashBytesAtOffset(\r
-    uint64_t v, int offset, size_t shift) {\r
-  BROTLI_DCHECK(offset >= 0);\r
-  BROTLI_DCHECK(offset <= 3);\r
-  {\r
-    const uint64_t h = ((v >> (8 * offset)) << 24) * kHashMul32;\r
-    return (uint32_t)(h >> shift);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_t* p2) {\r
-  return TO_BROTLI_BOOL(\r
-      BrotliUnalignedRead32(p1) == BrotliUnalignedRead32(p2) &&\r
-      p1[4] == p2[4]);\r
-}\r
-\r
-/* Builds a literal prefix code into "depths" and "bits" based on the statistics\r
-   of the "input" string and stores it into the bit stream.\r
-   Note that the prefix code here is built from the pre-LZ77 input, therefore\r
-   we can only approximate the statistics of the actual literal stream.\r
-   Moreover, for long inputs we build a histogram from a sample of the input\r
-   and thus have to assign a non-zero depth for each literal.\r
-   Returns estimated compression ratio millibytes/char for encoding given input\r
-   with generated code. */\r
-static size_t BuildAndStoreLiteralPrefixCode(MemoryManager* m,\r
-                                             const uint8_t* input,\r
-                                             const size_t input_size,\r
-                                             uint8_t depths[256],\r
-                                             uint16_t bits[256],\r
-                                             size_t* storage_ix,\r
-                                             uint8_t* storage) {\r
-  uint32_t histogram[256] = { 0 };\r
-  size_t histogram_total;\r
-  size_t i;\r
-  if (input_size < (1 << 15)) {\r
-    for (i = 0; i < input_size; ++i) {\r
-      ++histogram[input[i]];\r
-    }\r
-    histogram_total = input_size;\r
-    for (i = 0; i < 256; ++i) {\r
-      /* We weigh the first 11 samples with weight 3 to account for the\r
-         balancing effect of the LZ77 phase on the histogram. */\r
-      const uint32_t adjust = 2 * BROTLI_MIN(uint32_t, histogram[i], 11u);\r
-      histogram[i] += adjust;\r
-      histogram_total += adjust;\r
-    }\r
-  } else {\r
-    static const size_t kSampleRate = 29;\r
-    for (i = 0; i < input_size; i += kSampleRate) {\r
-      ++histogram[input[i]];\r
-    }\r
-    histogram_total = (input_size + kSampleRate - 1) / kSampleRate;\r
-    for (i = 0; i < 256; ++i) {\r
-      /* We add 1 to each population count to avoid 0 bit depths (since this is\r
-         only a sample and we don't know if the symbol appears or not), and we\r
-         weigh the first 11 samples with weight 3 to account for the balancing\r
-         effect of the LZ77 phase on the histogram (more frequent symbols are\r
-         more likely to be in backward references instead as literals). */\r
-      const uint32_t adjust = 1 + 2 * BROTLI_MIN(uint32_t, histogram[i], 11u);\r
-      histogram[i] += adjust;\r
-      histogram_total += adjust;\r
-    }\r
-  }\r
-  BrotliBuildAndStoreHuffmanTreeFast(m, histogram, histogram_total,\r
-                                     /* max_bits = */ 8,\r
-                                     depths, bits, storage_ix, storage);\r
-  if (BROTLI_IS_OOM(m)) return 0;\r
-  {\r
-    size_t literal_ratio = 0;\r
-    for (i = 0; i < 256; ++i) {\r
-      if (histogram[i]) literal_ratio += histogram[i] * depths[i];\r
-    }\r
-    /* Estimated encoding ratio, millibytes per symbol. */\r
-    return (literal_ratio * 125) / histogram_total;\r
-  }\r
-}\r
-\r
-/* Builds a command and distance prefix code (each 64 symbols) into "depth" and\r
-   "bits" based on "histogram" and stores it into the bit stream. */\r
-static void BuildAndStoreCommandPrefixCode(const uint32_t histogram[128],\r
-    uint8_t depth[128], uint16_t bits[128], size_t* storage_ix,\r
-    uint8_t* storage) {\r
-  /* Tree size for building a tree over 64 symbols is 2 * 64 + 1. */\r
-  HuffmanTree tree[129];\r
-  uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS] = { 0 };\r
-  uint16_t cmd_bits[64];\r
-\r
-  BrotliCreateHuffmanTree(histogram, 64, 15, tree, depth);\r
-  BrotliCreateHuffmanTree(&histogram[64], 64, 14, tree, &depth[64]);\r
-  /* We have to jump through a few hoops here in order to compute\r
-     the command bits because the symbols are in a different order than in\r
-     the full alphabet. This looks complicated, but having the symbols\r
-     in this order in the command bits saves a few branches in the Emit*\r
-     functions. */\r
-  memcpy(cmd_depth, depth, 24);\r
-  memcpy(cmd_depth + 24, depth + 40, 8);\r
-  memcpy(cmd_depth + 32, depth + 24, 8);\r
-  memcpy(cmd_depth + 40, depth + 48, 8);\r
-  memcpy(cmd_depth + 48, depth + 32, 8);\r
-  memcpy(cmd_depth + 56, depth + 56, 8);\r
-  BrotliConvertBitDepthsToSymbols(cmd_depth, 64, cmd_bits);\r
-  memcpy(bits, cmd_bits, 48);\r
-  memcpy(bits + 24, cmd_bits + 32, 16);\r
-  memcpy(bits + 32, cmd_bits + 48, 16);\r
-  memcpy(bits + 40, cmd_bits + 24, 16);\r
-  memcpy(bits + 48, cmd_bits + 40, 16);\r
-  memcpy(bits + 56, cmd_bits + 56, 16);\r
-  BrotliConvertBitDepthsToSymbols(&depth[64], 64, &bits[64]);\r
-  {\r
-    /* Create the bit length array for the full command alphabet. */\r
-    size_t i;\r
-    memset(cmd_depth, 0, 64);  /* only 64 first values were used */\r
-    memcpy(cmd_depth, depth, 8);\r
-    memcpy(cmd_depth + 64, depth + 8, 8);\r
-    memcpy(cmd_depth + 128, depth + 16, 8);\r
-    memcpy(cmd_depth + 192, depth + 24, 8);\r
-    memcpy(cmd_depth + 384, depth + 32, 8);\r
-    for (i = 0; i < 8; ++i) {\r
-      cmd_depth[128 + 8 * i] = depth[40 + i];\r
-      cmd_depth[256 + 8 * i] = depth[48 + i];\r
-      cmd_depth[448 + 8 * i] = depth[56 + i];\r
-    }\r
-    BrotliStoreHuffmanTree(\r
-        cmd_depth, BROTLI_NUM_COMMAND_SYMBOLS, tree, storage_ix, storage);\r
-  }\r
-  BrotliStoreHuffmanTree(&depth[64], 64, tree, storage_ix, storage);\r
-}\r
-\r
-/* REQUIRES: insertlen < 6210 */\r
-static BROTLI_INLINE void EmitInsertLen(size_t insertlen,\r
-                                        const uint8_t depth[128],\r
-                                        const uint16_t bits[128],\r
-                                        uint32_t histo[128],\r
-                                        size_t* storage_ix,\r
-                                        uint8_t* storage) {\r
-  if (insertlen < 6) {\r
-    const size_t code = insertlen + 40;\r
-    BrotliWriteBits(depth[code], bits[code], storage_ix, storage);\r
-    ++histo[code];\r
-  } else if (insertlen < 130) {\r
-    const size_t tail = insertlen - 2;\r
-    const uint32_t nbits = Log2FloorNonZero(tail) - 1u;\r
-    const size_t prefix = tail >> nbits;\r
-    const size_t inscode = (nbits << 1) + prefix + 42;\r
-    BrotliWriteBits(depth[inscode], bits[inscode], storage_ix, storage);\r
-    BrotliWriteBits(nbits, tail - (prefix << nbits), storage_ix, storage);\r
-    ++histo[inscode];\r
-  } else if (insertlen < 2114) {\r
-    const size_t tail = insertlen - 66;\r
-    const uint32_t nbits = Log2FloorNonZero(tail);\r
-    const size_t code = nbits + 50;\r
-    BrotliWriteBits(depth[code], bits[code], storage_ix, storage);\r
-    BrotliWriteBits(nbits, tail - ((size_t)1 << nbits), storage_ix, storage);\r
-    ++histo[code];\r
-  } else {\r
-    BrotliWriteBits(depth[61], bits[61], storage_ix, storage);\r
-    BrotliWriteBits(12, insertlen - 2114, storage_ix, storage);\r
-    ++histo[61];\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void EmitLongInsertLen(size_t insertlen,\r
-                                            const uint8_t depth[128],\r
-                                            const uint16_t bits[128],\r
-                                            uint32_t histo[128],\r
-                                            size_t* storage_ix,\r
-                                            uint8_t* storage) {\r
-  if (insertlen < 22594) {\r
-    BrotliWriteBits(depth[62], bits[62], storage_ix, storage);\r
-    BrotliWriteBits(14, insertlen - 6210, storage_ix, storage);\r
-    ++histo[62];\r
-  } else {\r
-    BrotliWriteBits(depth[63], bits[63], storage_ix, storage);\r
-    BrotliWriteBits(24, insertlen - 22594, storage_ix, storage);\r
-    ++histo[63];\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void EmitCopyLen(size_t copylen,\r
-                                      const uint8_t depth[128],\r
-                                      const uint16_t bits[128],\r
-                                      uint32_t histo[128],\r
-                                      size_t* storage_ix,\r
-                                      uint8_t* storage) {\r
-  if (copylen < 10) {\r
-    BrotliWriteBits(\r
-        depth[copylen + 14], bits[copylen + 14], storage_ix, storage);\r
-    ++histo[copylen + 14];\r
-  } else if (copylen < 134) {\r
-    const size_t tail = copylen - 6;\r
-    const uint32_t nbits = Log2FloorNonZero(tail) - 1u;\r
-    const size_t prefix = tail >> nbits;\r
-    const size_t code = (nbits << 1) + prefix + 20;\r
-    BrotliWriteBits(depth[code], bits[code], storage_ix, storage);\r
-    BrotliWriteBits(nbits, tail - (prefix << nbits), storage_ix, storage);\r
-    ++histo[code];\r
-  } else if (copylen < 2118) {\r
-    const size_t tail = copylen - 70;\r
-    const uint32_t nbits = Log2FloorNonZero(tail);\r
-    const size_t code = nbits + 28;\r
-    BrotliWriteBits(depth[code], bits[code], storage_ix, storage);\r
-    BrotliWriteBits(nbits, tail - ((size_t)1 << nbits), storage_ix, storage);\r
-    ++histo[code];\r
-  } else {\r
-    BrotliWriteBits(depth[39], bits[39], storage_ix, storage);\r
-    BrotliWriteBits(24, copylen - 2118, storage_ix, storage);\r
-    ++histo[39];\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void EmitCopyLenLastDistance(size_t copylen,\r
-                                                  const uint8_t depth[128],\r
-                                                  const uint16_t bits[128],\r
-                                                  uint32_t histo[128],\r
-                                                  size_t* storage_ix,\r
-                                                  uint8_t* storage) {\r
-  if (copylen < 12) {\r
-    BrotliWriteBits(depth[copylen - 4], bits[copylen - 4], storage_ix, storage);\r
-    ++histo[copylen - 4];\r
-  } else if (copylen < 72) {\r
-    const size_t tail = copylen - 8;\r
-    const uint32_t nbits = Log2FloorNonZero(tail) - 1;\r
-    const size_t prefix = tail >> nbits;\r
-    const size_t code = (nbits << 1) + prefix + 4;\r
-    BrotliWriteBits(depth[code], bits[code], storage_ix, storage);\r
-    BrotliWriteBits(nbits, tail - (prefix << nbits), storage_ix, storage);\r
-    ++histo[code];\r
-  } else if (copylen < 136) {\r
-    const size_t tail = copylen - 8;\r
-    const size_t code = (tail >> 5) + 30;\r
-    BrotliWriteBits(depth[code], bits[code], storage_ix, storage);\r
-    BrotliWriteBits(5, tail & 31, storage_ix, storage);\r
-    BrotliWriteBits(depth[64], bits[64], storage_ix, storage);\r
-    ++histo[code];\r
-    ++histo[64];\r
-  } else if (copylen < 2120) {\r
-    const size_t tail = copylen - 72;\r
-    const uint32_t nbits = Log2FloorNonZero(tail);\r
-    const size_t code = nbits + 28;\r
-    BrotliWriteBits(depth[code], bits[code], storage_ix, storage);\r
-    BrotliWriteBits(nbits, tail - ((size_t)1 << nbits), storage_ix, storage);\r
-    BrotliWriteBits(depth[64], bits[64], storage_ix, storage);\r
-    ++histo[code];\r
-    ++histo[64];\r
-  } else {\r
-    BrotliWriteBits(depth[39], bits[39], storage_ix, storage);\r
-    BrotliWriteBits(24, copylen - 2120, storage_ix, storage);\r
-    BrotliWriteBits(depth[64], bits[64], storage_ix, storage);\r
-    ++histo[39];\r
-    ++histo[64];\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void EmitDistance(size_t distance,\r
-                                       const uint8_t depth[128],\r
-                                       const uint16_t bits[128],\r
-                                       uint32_t histo[128],\r
-                                       size_t* storage_ix, uint8_t* storage) {\r
-  const size_t d = distance + 3;\r
-  const uint32_t nbits = Log2FloorNonZero(d) - 1u;\r
-  const size_t prefix = (d >> nbits) & 1;\r
-  const size_t offset = (2 + prefix) << nbits;\r
-  const size_t distcode = 2 * (nbits - 1) + prefix + 80;\r
-  BrotliWriteBits(depth[distcode], bits[distcode], storage_ix, storage);\r
-  BrotliWriteBits(nbits, d - offset, storage_ix, storage);\r
-  ++histo[distcode];\r
-}\r
-\r
-static BROTLI_INLINE void EmitLiterals(const uint8_t* input, const size_t len,\r
-                                       const uint8_t depth[256],\r
-                                       const uint16_t bits[256],\r
-                                       size_t* storage_ix, uint8_t* storage) {\r
-  size_t j;\r
-  for (j = 0; j < len; j++) {\r
-    const uint8_t lit = input[j];\r
-    BrotliWriteBits(depth[lit], bits[lit], storage_ix, storage);\r
-  }\r
-}\r
-\r
-/* REQUIRES: len <= 1 << 24. */\r
-static void BrotliStoreMetaBlockHeader(\r
-    size_t len, BROTLI_BOOL is_uncompressed, size_t* storage_ix,\r
-    uint8_t* storage) {\r
-  size_t nibbles = 6;\r
-  /* ISLAST */\r
-  BrotliWriteBits(1, 0, storage_ix, storage);\r
-  if (len <= (1U << 16)) {\r
-    nibbles = 4;\r
-  } else if (len <= (1U << 20)) {\r
-    nibbles = 5;\r
-  }\r
-  BrotliWriteBits(2, nibbles - 4, storage_ix, storage);\r
-  BrotliWriteBits(nibbles * 4, len - 1, storage_ix, storage);\r
-  /* ISUNCOMPRESSED */\r
-  BrotliWriteBits(1, (uint64_t)is_uncompressed, storage_ix, storage);\r
-}\r
-\r
-static void UpdateBits(size_t n_bits, uint32_t bits, size_t pos,\r
-    uint8_t* array) {\r
-  while (n_bits > 0) {\r
-    size_t byte_pos = pos >> 3;\r
-    size_t n_unchanged_bits = pos & 7;\r
-    size_t n_changed_bits = BROTLI_MIN(size_t, n_bits, 8 - n_unchanged_bits);\r
-    size_t total_bits = n_unchanged_bits + n_changed_bits;\r
-    uint32_t mask =\r
-        (~((1u << total_bits) - 1u)) | ((1u << n_unchanged_bits) - 1u);\r
-    uint32_t unchanged_bits = array[byte_pos] & mask;\r
-    uint32_t changed_bits = bits & ((1u << n_changed_bits) - 1u);\r
-    array[byte_pos] =\r
-        (uint8_t)((changed_bits << n_unchanged_bits) | unchanged_bits);\r
-    n_bits -= n_changed_bits;\r
-    bits >>= n_changed_bits;\r
-    pos += n_changed_bits;\r
-  }\r
-}\r
-\r
-static void RewindBitPosition(const size_t new_storage_ix,\r
-                              size_t* storage_ix, uint8_t* storage) {\r
-  const size_t bitpos = new_storage_ix & 7;\r
-  const size_t mask = (1u << bitpos) - 1;\r
-  storage[new_storage_ix >> 3] &= (uint8_t)mask;\r
-  *storage_ix = new_storage_ix;\r
-}\r
-\r
-static BROTLI_BOOL ShouldMergeBlock(\r
-    const uint8_t* data, size_t len, const uint8_t* depths) {\r
-  size_t histo[256] = { 0 };\r
-  static const size_t kSampleRate = 43;\r
-  size_t i;\r
-  for (i = 0; i < len; i += kSampleRate) {\r
-    ++histo[data[i]];\r
-  }\r
-  {\r
-    const size_t total = (len + kSampleRate - 1) / kSampleRate;\r
-    double r = (FastLog2(total) + 0.5) * (double)total + 200;\r
-    for (i = 0; i < 256; ++i) {\r
-      r -= (double)histo[i] * (depths[i] + FastLog2(histo[i]));\r
-    }\r
-    return TO_BROTLI_BOOL(r >= 0.0);\r
-  }\r
-}\r
-\r
-/* Acceptable loss for uncompressible speedup is 2% */\r
-#define MIN_RATIO 980\r
-\r
-static BROTLI_INLINE BROTLI_BOOL ShouldUseUncompressedMode(\r
-    const uint8_t* metablock_start, const uint8_t* next_emit,\r
-    const size_t insertlen, const size_t literal_ratio) {\r
-  const size_t compressed = (size_t)(next_emit - metablock_start);\r
-  if (compressed * 50 > insertlen) {\r
-    return BROTLI_FALSE;\r
-  } else {\r
-    return TO_BROTLI_BOOL(literal_ratio > MIN_RATIO);\r
-  }\r
-}\r
-\r
-static void EmitUncompressedMetaBlock(const uint8_t* begin, const uint8_t* end,\r
-                                      const size_t storage_ix_start,\r
-                                      size_t* storage_ix, uint8_t* storage) {\r
-  const size_t len = (size_t)(end - begin);\r
-  RewindBitPosition(storage_ix_start, storage_ix, storage);\r
-  BrotliStoreMetaBlockHeader(len, 1, storage_ix, storage);\r
-  *storage_ix = (*storage_ix + 7u) & ~7u;\r
-  memcpy(&storage[*storage_ix >> 3], begin, len);\r
-  *storage_ix += len << 3;\r
-  storage[*storage_ix >> 3] = 0;\r
-}\r
-\r
-static uint32_t kCmdHistoSeed[128] = {\r
-  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,\r
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\r
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\r
-  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-  1, 1, 1, 1, 0, 0, 0, 0,\r
-};\r
-\r
-static BROTLI_INLINE void BrotliCompressFragmentFastImpl(\r
-    MemoryManager* m, const uint8_t* input, size_t input_size,\r
-    BROTLI_BOOL is_last, int* table, size_t table_bits, uint8_t cmd_depth[128],\r
-    uint16_t cmd_bits[128], size_t* cmd_code_numbits, uint8_t* cmd_code,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  uint32_t cmd_histo[128];\r
-  const uint8_t* ip_end;\r
-\r
-  /* "next_emit" is a pointer to the first byte that is not covered by a\r
-     previous copy. Bytes between "next_emit" and the start of the next copy or\r
-     the end of the input will be emitted as literal bytes. */\r
-  const uint8_t* next_emit = input;\r
-  /* Save the start of the first block for position and distance computations.\r
-  */\r
-  const uint8_t* base_ip = input;\r
-\r
-  static const size_t kFirstBlockSize = 3 << 15;\r
-  static const size_t kMergeBlockSize = 1 << 16;\r
-\r
-  const size_t kInputMarginBytes = BROTLI_WINDOW_GAP;\r
-  const size_t kMinMatchLen = 5;\r
-\r
-  const uint8_t* metablock_start = input;\r
-  size_t block_size = BROTLI_MIN(size_t, input_size, kFirstBlockSize);\r
-  size_t total_block_size = block_size;\r
-  /* Save the bit position of the MLEN field of the meta-block header, so that\r
-     we can update it later if we decide to extend this meta-block. */\r
-  size_t mlen_storage_ix = *storage_ix + 3;\r
-\r
-  uint8_t lit_depth[256];\r
-  uint16_t lit_bits[256];\r
-\r
-  size_t literal_ratio;\r
-\r
-  const uint8_t* ip;\r
-  int last_distance;\r
-\r
-  const size_t shift = 64u - table_bits;\r
-\r
-  BrotliStoreMetaBlockHeader(block_size, 0, storage_ix, storage);\r
-  /* No block splits, no contexts. */\r
-  BrotliWriteBits(13, 0, storage_ix, storage);\r
-\r
-  literal_ratio = BuildAndStoreLiteralPrefixCode(\r
-      m, input, block_size, lit_depth, lit_bits, storage_ix, storage);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  {\r
-    /* Store the pre-compressed command and distance prefix codes. */\r
-    size_t i;\r
-    for (i = 0; i + 7 < *cmd_code_numbits; i += 8) {\r
-      BrotliWriteBits(8, cmd_code[i >> 3], storage_ix, storage);\r
-    }\r
-  }\r
-  BrotliWriteBits(*cmd_code_numbits & 7, cmd_code[*cmd_code_numbits >> 3],\r
-                  storage_ix, storage);\r
-\r
- emit_commands:\r
-  /* Initialize the command and distance histograms. We will gather\r
-     statistics of command and distance codes during the processing\r
-     of this block and use it to update the command and distance\r
-     prefix codes for the next block. */\r
-  memcpy(cmd_histo, kCmdHistoSeed, sizeof(kCmdHistoSeed));\r
-\r
-  /* "ip" is the input pointer. */\r
-  ip = input;\r
-  last_distance = -1;\r
-  ip_end = input + block_size;\r
-\r
-  if (BROTLI_PREDICT_TRUE(block_size >= kInputMarginBytes)) {\r
-    /* For the last block, we need to keep a 16 bytes margin so that we can be\r
-       sure that all distances are at most window size - 16.\r
-       For all other blocks, we only need to keep a margin of 5 bytes so that\r
-       we don't go over the block size with a copy. */\r
-    const size_t len_limit = BROTLI_MIN(size_t, block_size - kMinMatchLen,\r
-                                        input_size - kInputMarginBytes);\r
-    const uint8_t* ip_limit = input + len_limit;\r
-\r
-    uint32_t next_hash;\r
-    for (next_hash = Hash(++ip, shift); ; ) {\r
-      /* Step 1: Scan forward in the input looking for a 5-byte-long match.\r
-         If we get close to exhausting the input then goto emit_remainder.\r
-\r
-         Heuristic match skipping: If 32 bytes are scanned with no matches\r
-         found, start looking only at every other byte. If 32 more bytes are\r
-         scanned, look at every third byte, etc.. When a match is found,\r
-         immediately go back to looking at every byte. This is a small loss\r
-         (~5% performance, ~0.1% density) for compressible data due to more\r
-         bookkeeping, but for non-compressible data (such as JPEG) it's a huge\r
-         win since the compressor quickly "realizes" the data is incompressible\r
-         and doesn't bother looking for matches everywhere.\r
-\r
-         The "skip" variable keeps track of how many bytes there are since the\r
-         last match; dividing it by 32 (i.e. right-shifting by five) gives the\r
-         number of bytes to move ahead for each iteration. */\r
-      uint32_t skip = 32;\r
-\r
-      const uint8_t* next_ip = ip;\r
-      const uint8_t* candidate;\r
-      BROTLI_DCHECK(next_emit < ip);\r
-trawl:\r
-      do {\r
-        uint32_t hash = next_hash;\r
-        uint32_t bytes_between_hash_lookups = skip++ >> 5;\r
-        BROTLI_DCHECK(hash == Hash(next_ip, shift));\r
-        ip = next_ip;\r
-        next_ip = ip + bytes_between_hash_lookups;\r
-        if (BROTLI_PREDICT_FALSE(next_ip > ip_limit)) {\r
-          goto emit_remainder;\r
-        }\r
-        next_hash = Hash(next_ip, shift);\r
-        candidate = ip - last_distance;\r
-        if (IsMatch(ip, candidate)) {\r
-          if (BROTLI_PREDICT_TRUE(candidate < ip)) {\r
-            table[hash] = (int)(ip - base_ip);\r
-            break;\r
-          }\r
-        }\r
-        candidate = base_ip + table[hash];\r
-        BROTLI_DCHECK(candidate >= base_ip);\r
-        BROTLI_DCHECK(candidate < ip);\r
-\r
-        table[hash] = (int)(ip - base_ip);\r
-      } while (BROTLI_PREDICT_TRUE(!IsMatch(ip, candidate)));\r
-\r
-      /* Check copy distance. If candidate is not feasible, continue search.\r
-         Checking is done outside of hot loop to reduce overhead. */\r
-      if (ip - candidate > MAX_DISTANCE) goto trawl;\r
-\r
-      /* Step 2: Emit the found match together with the literal bytes from\r
-         "next_emit" to the bit stream, and then see if we can find a next match\r
-         immediately afterwards. Repeat until we find no match for the input\r
-         without emitting some literal bytes. */\r
-\r
-      {\r
-        /* We have a 5-byte match at ip, and we need to emit bytes in\r
-           [next_emit, ip). */\r
-        const uint8_t* base = ip;\r
-        size_t matched = 5 + FindMatchLengthWithLimit(\r
-            candidate + 5, ip + 5, (size_t)(ip_end - ip) - 5);\r
-        int distance = (int)(base - candidate);  /* > 0 */\r
-        size_t insert = (size_t)(base - next_emit);\r
-        ip += matched;\r
-        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));\r
-        if (BROTLI_PREDICT_TRUE(insert < 6210)) {\r
-          EmitInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,\r
-                        storage_ix, storage);\r
-        } else if (ShouldUseUncompressedMode(metablock_start, next_emit, insert,\r
-                                             literal_ratio)) {\r
-          EmitUncompressedMetaBlock(metablock_start, base, mlen_storage_ix - 3,\r
-                                    storage_ix, storage);\r
-          input_size -= (size_t)(base - input);\r
-          input = base;\r
-          next_emit = input;\r
-          goto next_block;\r
-        } else {\r
-          EmitLongInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,\r
-                            storage_ix, storage);\r
-        }\r
-        EmitLiterals(next_emit, insert, lit_depth, lit_bits,\r
-                     storage_ix, storage);\r
-        if (distance == last_distance) {\r
-          BrotliWriteBits(cmd_depth[64], cmd_bits[64], storage_ix, storage);\r
-          ++cmd_histo[64];\r
-        } else {\r
-          EmitDistance((size_t)distance, cmd_depth, cmd_bits,\r
-                       cmd_histo, storage_ix, storage);\r
-          last_distance = distance;\r
-        }\r
-        EmitCopyLenLastDistance(matched, cmd_depth, cmd_bits, cmd_histo,\r
-                                storage_ix, storage);\r
-\r
-        next_emit = ip;\r
-        if (BROTLI_PREDICT_FALSE(ip >= ip_limit)) {\r
-          goto emit_remainder;\r
-        }\r
-        /* We could immediately start working at ip now, but to improve\r
-           compression we first update "table" with the hashes of some positions\r
-           within the last copy. */\r
-        {\r
-          uint64_t input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 3);\r
-          uint32_t prev_hash = HashBytesAtOffset(input_bytes, 0, shift);\r
-          uint32_t cur_hash = HashBytesAtOffset(input_bytes, 3, shift);\r
-          table[prev_hash] = (int)(ip - base_ip - 3);\r
-          prev_hash = HashBytesAtOffset(input_bytes, 1, shift);\r
-          table[prev_hash] = (int)(ip - base_ip - 2);\r
-          prev_hash = HashBytesAtOffset(input_bytes, 2, shift);\r
-          table[prev_hash] = (int)(ip - base_ip - 1);\r
-\r
-          candidate = base_ip + table[cur_hash];\r
-          table[cur_hash] = (int)(ip - base_ip);\r
-        }\r
-      }\r
-\r
-      while (IsMatch(ip, candidate)) {\r
-        /* We have a 5-byte match at ip, and no need to emit any literal bytes\r
-           prior to ip. */\r
-        const uint8_t* base = ip;\r
-        size_t matched = 5 + FindMatchLengthWithLimit(\r
-            candidate + 5, ip + 5, (size_t)(ip_end - ip) - 5);\r
-        if (ip - candidate > MAX_DISTANCE) break;\r
-        ip += matched;\r
-        last_distance = (int)(base - candidate);  /* > 0 */\r
-        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));\r
-        EmitCopyLen(matched, cmd_depth, cmd_bits, cmd_histo,\r
-                    storage_ix, storage);\r
-        EmitDistance((size_t)last_distance, cmd_depth, cmd_bits,\r
-                     cmd_histo, storage_ix, storage);\r
-\r
-        next_emit = ip;\r
-        if (BROTLI_PREDICT_FALSE(ip >= ip_limit)) {\r
-          goto emit_remainder;\r
-        }\r
-        /* We could immediately start working at ip now, but to improve\r
-           compression we first update "table" with the hashes of some positions\r
-           within the last copy. */\r
-        {\r
-          uint64_t input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 3);\r
-          uint32_t prev_hash = HashBytesAtOffset(input_bytes, 0, shift);\r
-          uint32_t cur_hash = HashBytesAtOffset(input_bytes, 3, shift);\r
-          table[prev_hash] = (int)(ip - base_ip - 3);\r
-          prev_hash = HashBytesAtOffset(input_bytes, 1, shift);\r
-          table[prev_hash] = (int)(ip - base_ip - 2);\r
-          prev_hash = HashBytesAtOffset(input_bytes, 2, shift);\r
-          table[prev_hash] = (int)(ip - base_ip - 1);\r
-\r
-          candidate = base_ip + table[cur_hash];\r
-          table[cur_hash] = (int)(ip - base_ip);\r
-        }\r
-      }\r
-\r
-      next_hash = Hash(++ip, shift);\r
-    }\r
-  }\r
-\r
- emit_remainder:\r
-  BROTLI_DCHECK(next_emit <= ip_end);\r
-  input += block_size;\r
-  input_size -= block_size;\r
-  block_size = BROTLI_MIN(size_t, input_size, kMergeBlockSize);\r
-\r
-  /* Decide if we want to continue this meta-block instead of emitting the\r
-     last insert-only command. */\r
-  if (input_size > 0 &&\r
-      total_block_size + block_size <= (1 << 20) &&\r
-      ShouldMergeBlock(input, block_size, lit_depth)) {\r
-    BROTLI_DCHECK(total_block_size > (1 << 16));\r
-    /* Update the size of the current meta-block and continue emitting commands.\r
-       We can do this because the current size and the new size both have 5\r
-       nibbles. */\r
-    total_block_size += block_size;\r
-    UpdateBits(20, (uint32_t)(total_block_size - 1), mlen_storage_ix, storage);\r
-    goto emit_commands;\r
-  }\r
-\r
-  /* Emit the remaining bytes as literals. */\r
-  if (next_emit < ip_end) {\r
-    const size_t insert = (size_t)(ip_end - next_emit);\r
-    if (BROTLI_PREDICT_TRUE(insert < 6210)) {\r
-      EmitInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,\r
-                    storage_ix, storage);\r
-      EmitLiterals(next_emit, insert, lit_depth, lit_bits, storage_ix, storage);\r
-    } else if (ShouldUseUncompressedMode(metablock_start, next_emit, insert,\r
-                                         literal_ratio)) {\r
-      EmitUncompressedMetaBlock(metablock_start, ip_end, mlen_storage_ix - 3,\r
-                                storage_ix, storage);\r
-    } else {\r
-      EmitLongInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,\r
-                        storage_ix, storage);\r
-      EmitLiterals(next_emit, insert, lit_depth, lit_bits,\r
-                   storage_ix, storage);\r
-    }\r
-  }\r
-  next_emit = ip_end;\r
-\r
-next_block:\r
-  /* If we have more data, write a new meta-block header and prefix codes and\r
-     then continue emitting commands. */\r
-  if (input_size > 0) {\r
-    metablock_start = input;\r
-    block_size = BROTLI_MIN(size_t, input_size, kFirstBlockSize);\r
-    total_block_size = block_size;\r
-    /* Save the bit position of the MLEN field of the meta-block header, so that\r
-       we can update it later if we decide to extend this meta-block. */\r
-    mlen_storage_ix = *storage_ix + 3;\r
-    BrotliStoreMetaBlockHeader(block_size, 0, storage_ix, storage);\r
-    /* No block splits, no contexts. */\r
-    BrotliWriteBits(13, 0, storage_ix, storage);\r
-    literal_ratio = BuildAndStoreLiteralPrefixCode(\r
-        m, input, block_size, lit_depth, lit_bits, storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    BuildAndStoreCommandPrefixCode(cmd_histo, cmd_depth, cmd_bits,\r
-                                   storage_ix, storage);\r
-    goto emit_commands;\r
-  }\r
-\r
-  if (!is_last) {\r
-    /* If this is not the last block, update the command and distance prefix\r
-       codes for the next block and store the compressed forms. */\r
-    cmd_code[0] = 0;\r
-    *cmd_code_numbits = 0;\r
-    BuildAndStoreCommandPrefixCode(cmd_histo, cmd_depth, cmd_bits,\r
-                                   cmd_code_numbits, cmd_code);\r
-  }\r
-}\r
-\r
-#define FOR_TABLE_BITS_(X) X(9) X(11) X(13) X(15)\r
-\r
-#define BAKE_METHOD_PARAM_(B) \\r
-static BROTLI_NOINLINE void BrotliCompressFragmentFastImpl ## B(             \\r
-    MemoryManager* m, const uint8_t* input, size_t input_size,               \\r
-    BROTLI_BOOL is_last, int* table, uint8_t cmd_depth[128],                 \\r
-    uint16_t cmd_bits[128], size_t* cmd_code_numbits, uint8_t* cmd_code,     \\r
-    size_t* storage_ix, uint8_t* storage) {                                  \\r
-  BrotliCompressFragmentFastImpl(m, input, input_size, is_last, table, B,    \\r
-      cmd_depth, cmd_bits, cmd_code_numbits, cmd_code, storage_ix, storage); \\r
-}\r
-FOR_TABLE_BITS_(BAKE_METHOD_PARAM_)\r
-#undef BAKE_METHOD_PARAM_\r
-\r
-void BrotliCompressFragmentFast(\r
-    MemoryManager* m, const uint8_t* input, size_t input_size,\r
-    BROTLI_BOOL is_last, int* table, size_t table_size, uint8_t cmd_depth[128],\r
-    uint16_t cmd_bits[128], size_t* cmd_code_numbits, uint8_t* cmd_code,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  const size_t initial_storage_ix = *storage_ix;\r
-  const size_t table_bits = Log2FloorNonZero(table_size);\r
-\r
-  if (input_size == 0) {\r
-    BROTLI_DCHECK(is_last);\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* islast */\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* isempty */\r
-    *storage_ix = (*storage_ix + 7u) & ~7u;\r
-    return;\r
-  }\r
-\r
-  switch (table_bits) {\r
-#define CASE_(B)                                                     \\r
-    case B:                                                          \\r
-      BrotliCompressFragmentFastImpl ## B(                           \\r
-          m, input, input_size, is_last, table, cmd_depth, cmd_bits, \\r
-          cmd_code_numbits, cmd_code, storage_ix, storage);          \\r
-      break;\r
-    FOR_TABLE_BITS_(CASE_)\r
-#undef CASE_\r
-    default: BROTLI_DCHECK(0); break;\r
-  }\r
-\r
-  /* If output is larger than single uncompressed block, rewrite it. */\r
-  if (*storage_ix - initial_storage_ix > 31 + (input_size << 3)) {\r
-    EmitUncompressedMetaBlock(input, input + input_size, initial_storage_ix,\r
-                              storage_ix, storage);\r
-  }\r
-\r
-  if (is_last) {\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* islast */\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* isempty */\r
-    *storage_ix = (*storage_ix + 7u) & ~7u;\r
-  }\r
-}\r
-\r
-#undef FOR_TABLE_BITS_\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/compress_fragment.h b/BaseTools/Source/C/BrotliCompress/enc/compress_fragment.h
deleted file mode 100644 (file)
index d4c3429..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function for fast encoding of an input fragment, independently from the input\r
-   history. This function uses one-pass processing: when we find a backward\r
-   match, we immediately emit the corresponding command and literal codes to\r
-   the bit stream. */\r
-\r
-#ifndef BROTLI_ENC_COMPRESS_FRAGMENT_H_\r
-#define BROTLI_ENC_COMPRESS_FRAGMENT_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./memory.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* Compresses "input" string to the "*storage" buffer as one or more complete\r
-   meta-blocks, and updates the "*storage_ix" bit position.\r
-\r
-   If "is_last" is 1, emits an additional empty last meta-block.\r
-\r
-   "cmd_depth" and "cmd_bits" contain the command and distance prefix codes\r
-   (see comment in encode.h) used for the encoding of this input fragment.\r
-   If "is_last" is 0, they are updated to reflect the statistics\r
-   of this input fragment, to be used for the encoding of the next fragment.\r
-\r
-   "*cmd_code_numbits" is the number of bits of the compressed representation\r
-   of the command and distance prefix codes, and "cmd_code" is an array of\r
-   at least "(*cmd_code_numbits + 7) >> 3" size that contains the compressed\r
-   command and distance prefix codes. If "is_last" is 0, these are also\r
-   updated to represent the updated "cmd_depth" and "cmd_bits".\r
-\r
-   REQUIRES: "input_size" is greater than zero, or "is_last" is 1.\r
-   REQUIRES: "input_size" is less or equal to maximal metablock size (1 << 24).\r
-   REQUIRES: All elements in "table[0..table_size-1]" are initialized to zero.\r
-   REQUIRES: "table_size" is an odd (9, 11, 13, 15) power of two\r
-   OUTPUT: maximal copy distance <= |input_size|\r
-   OUTPUT: maximal copy distance <= BROTLI_MAX_BACKWARD_LIMIT(18) */\r
-BROTLI_INTERNAL void BrotliCompressFragmentFast(MemoryManager* m,\r
-                                                const uint8_t* input,\r
-                                                size_t input_size,\r
-                                                BROTLI_BOOL is_last,\r
-                                                int* table, size_t table_size,\r
-                                                uint8_t cmd_depth[128],\r
-                                                uint16_t cmd_bits[128],\r
-                                                size_t* cmd_code_numbits,\r
-                                                uint8_t* cmd_code,\r
-                                                size_t* storage_ix,\r
-                                                uint8_t* storage);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_COMPRESS_FRAGMENT_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.c b/BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.c
deleted file mode 100644 (file)
index 0d4d3b5..0000000
+++ /dev/null
@@ -1,645 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function for fast encoding of an input fragment, independently from the input\r
-   history. This function uses two-pass processing: in the first pass we save\r
-   the found backward matches and literal bytes into a buffer, and in the\r
-   second pass we emit them into the bit stream using prefix codes built based\r
-   on the actual command and literal byte histograms. */\r
-\r
-#include "./compress_fragment_two_pass.h"\r
-\r
-#include <string.h>  /* memcmp, memcpy, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./bit_cost.h"\r
-#include "./brotli_bit_stream.h"\r
-#include "./entropy_encode.h"\r
-#include "./fast_log.h"\r
-#include "./find_match_length.h"\r
-#include "./memory.h"\r
-#include "./write_bits.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define MAX_DISTANCE (long)BROTLI_MAX_BACKWARD_LIMIT(18)\r
-\r
-/* kHashMul32 multiplier has these properties:\r
-   * The multiplier must be odd. Otherwise we may lose the highest bit.\r
-   * No long streaks of ones or zeros.\r
-   * There is no effort to ensure that it is a prime, the oddity is enough\r
-     for this use.\r
-   * The number has been tuned heuristically against compression benchmarks. */\r
-static const uint32_t kHashMul32 = 0x1E35A7BD;\r
-\r
-static BROTLI_INLINE uint32_t Hash(const uint8_t* p,\r
-    size_t shift, size_t length) {\r
-  const uint64_t h =\r
-      (BROTLI_UNALIGNED_LOAD64LE(p) << ((8 - length) * 8)) * kHashMul32;\r
-  return (uint32_t)(h >> shift);\r
-}\r
-\r
-static BROTLI_INLINE uint32_t HashBytesAtOffset(uint64_t v, size_t offset,\r
-    size_t shift, size_t length) {\r
-  BROTLI_DCHECK(offset <= 8 - length);\r
-  {\r
-    const uint64_t h = ((v >> (8 * offset)) << ((8 - length) * 8)) * kHashMul32;\r
-    return (uint32_t)(h >> shift);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_t* p2,\r
-    size_t length) {\r
-  if (BrotliUnalignedRead32(p1) == BrotliUnalignedRead32(p2)) {\r
-    if (length == 4) return BROTLI_TRUE;\r
-    return TO_BROTLI_BOOL(p1[4] == p2[4] && p1[5] == p2[5]);\r
-  }\r
-  return BROTLI_FALSE;\r
-}\r
-\r
-/* Builds a command and distance prefix code (each 64 symbols) into "depth" and\r
-   "bits" based on "histogram" and stores it into the bit stream. */\r
-static void BuildAndStoreCommandPrefixCode(\r
-    const uint32_t histogram[128],\r
-    uint8_t depth[128], uint16_t bits[128],\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  /* Tree size for building a tree over 64 symbols is 2 * 64 + 1. */\r
-  HuffmanTree tree[129];\r
-  uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS] = { 0 };\r
-  uint16_t cmd_bits[64];\r
-  BrotliCreateHuffmanTree(histogram, 64, 15, tree, depth);\r
-  BrotliCreateHuffmanTree(&histogram[64], 64, 14, tree, &depth[64]);\r
-  /* We have to jump through a few hoops here in order to compute\r
-     the command bits because the symbols are in a different order than in\r
-     the full alphabet. This looks complicated, but having the symbols\r
-     in this order in the command bits saves a few branches in the Emit*\r
-     functions. */\r
-  memcpy(cmd_depth, depth + 24, 24);\r
-  memcpy(cmd_depth + 24, depth, 8);\r
-  memcpy(cmd_depth + 32, depth + 48, 8);\r
-  memcpy(cmd_depth + 40, depth + 8, 8);\r
-  memcpy(cmd_depth + 48, depth + 56, 8);\r
-  memcpy(cmd_depth + 56, depth + 16, 8);\r
-  BrotliConvertBitDepthsToSymbols(cmd_depth, 64, cmd_bits);\r
-  memcpy(bits, cmd_bits + 24, 16);\r
-  memcpy(bits + 8, cmd_bits + 40, 16);\r
-  memcpy(bits + 16, cmd_bits + 56, 16);\r
-  memcpy(bits + 24, cmd_bits, 48);\r
-  memcpy(bits + 48, cmd_bits + 32, 16);\r
-  memcpy(bits + 56, cmd_bits + 48, 16);\r
-  BrotliConvertBitDepthsToSymbols(&depth[64], 64, &bits[64]);\r
-  {\r
-    /* Create the bit length array for the full command alphabet. */\r
-    size_t i;\r
-    memset(cmd_depth, 0, 64);  /* only 64 first values were used */\r
-    memcpy(cmd_depth, depth + 24, 8);\r
-    memcpy(cmd_depth + 64, depth + 32, 8);\r
-    memcpy(cmd_depth + 128, depth + 40, 8);\r
-    memcpy(cmd_depth + 192, depth + 48, 8);\r
-    memcpy(cmd_depth + 384, depth + 56, 8);\r
-    for (i = 0; i < 8; ++i) {\r
-      cmd_depth[128 + 8 * i] = depth[i];\r
-      cmd_depth[256 + 8 * i] = depth[8 + i];\r
-      cmd_depth[448 + 8 * i] = depth[16 + i];\r
-    }\r
-    BrotliStoreHuffmanTree(\r
-        cmd_depth, BROTLI_NUM_COMMAND_SYMBOLS, tree, storage_ix, storage);\r
-  }\r
-  BrotliStoreHuffmanTree(&depth[64], 64, tree, storage_ix, storage);\r
-}\r
-\r
-static BROTLI_INLINE void EmitInsertLen(\r
-    uint32_t insertlen, uint32_t** commands) {\r
-  if (insertlen < 6) {\r
-    **commands = insertlen;\r
-  } else if (insertlen < 130) {\r
-    const uint32_t tail = insertlen - 2;\r
-    const uint32_t nbits = Log2FloorNonZero(tail) - 1u;\r
-    const uint32_t prefix = tail >> nbits;\r
-    const uint32_t inscode = (nbits << 1) + prefix + 2;\r
-    const uint32_t extra = tail - (prefix << nbits);\r
-    **commands = inscode | (extra << 8);\r
-  } else if (insertlen < 2114) {\r
-    const uint32_t tail = insertlen - 66;\r
-    const uint32_t nbits = Log2FloorNonZero(tail);\r
-    const uint32_t code = nbits + 10;\r
-    const uint32_t extra = tail - (1u << nbits);\r
-    **commands = code | (extra << 8);\r
-  } else if (insertlen < 6210) {\r
-    const uint32_t extra = insertlen - 2114;\r
-    **commands = 21 | (extra << 8);\r
-  } else if (insertlen < 22594) {\r
-    const uint32_t extra = insertlen - 6210;\r
-    **commands = 22 | (extra << 8);\r
-  } else {\r
-    const uint32_t extra = insertlen - 22594;\r
-    **commands = 23 | (extra << 8);\r
-  }\r
-  ++(*commands);\r
-}\r
-\r
-static BROTLI_INLINE void EmitCopyLen(size_t copylen, uint32_t** commands) {\r
-  if (copylen < 10) {\r
-    **commands = (uint32_t)(copylen + 38);\r
-  } else if (copylen < 134) {\r
-    const size_t tail = copylen - 6;\r
-    const size_t nbits = Log2FloorNonZero(tail) - 1;\r
-    const size_t prefix = tail >> nbits;\r
-    const size_t code = (nbits << 1) + prefix + 44;\r
-    const size_t extra = tail - (prefix << nbits);\r
-    **commands = (uint32_t)(code | (extra << 8));\r
-  } else if (copylen < 2118) {\r
-    const size_t tail = copylen - 70;\r
-    const size_t nbits = Log2FloorNonZero(tail);\r
-    const size_t code = nbits + 52;\r
-    const size_t extra = tail - ((size_t)1 << nbits);\r
-    **commands = (uint32_t)(code | (extra << 8));\r
-  } else {\r
-    const size_t extra = copylen - 2118;\r
-    **commands = (uint32_t)(63 | (extra << 8));\r
-  }\r
-  ++(*commands);\r
-}\r
-\r
-static BROTLI_INLINE void EmitCopyLenLastDistance(\r
-    size_t copylen, uint32_t** commands) {\r
-  if (copylen < 12) {\r
-    **commands = (uint32_t)(copylen + 20);\r
-    ++(*commands);\r
-  } else if (copylen < 72) {\r
-    const size_t tail = copylen - 8;\r
-    const size_t nbits = Log2FloorNonZero(tail) - 1;\r
-    const size_t prefix = tail >> nbits;\r
-    const size_t code = (nbits << 1) + prefix + 28;\r
-    const size_t extra = tail - (prefix << nbits);\r
-    **commands = (uint32_t)(code | (extra << 8));\r
-    ++(*commands);\r
-  } else if (copylen < 136) {\r
-    const size_t tail = copylen - 8;\r
-    const size_t code = (tail >> 5) + 54;\r
-    const size_t extra = tail & 31;\r
-    **commands = (uint32_t)(code | (extra << 8));\r
-    ++(*commands);\r
-    **commands = 64;\r
-    ++(*commands);\r
-  } else if (copylen < 2120) {\r
-    const size_t tail = copylen - 72;\r
-    const size_t nbits = Log2FloorNonZero(tail);\r
-    const size_t code = nbits + 52;\r
-    const size_t extra = tail - ((size_t)1 << nbits);\r
-    **commands = (uint32_t)(code | (extra << 8));\r
-    ++(*commands);\r
-    **commands = 64;\r
-    ++(*commands);\r
-  } else {\r
-    const size_t extra = copylen - 2120;\r
-    **commands = (uint32_t)(63 | (extra << 8));\r
-    ++(*commands);\r
-    **commands = 64;\r
-    ++(*commands);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void EmitDistance(uint32_t distance, uint32_t** commands) {\r
-  uint32_t d = distance + 3;\r
-  uint32_t nbits = Log2FloorNonZero(d) - 1;\r
-  const uint32_t prefix = (d >> nbits) & 1;\r
-  const uint32_t offset = (2 + prefix) << nbits;\r
-  const uint32_t distcode = 2 * (nbits - 1) + prefix + 80;\r
-  uint32_t extra = d - offset;\r
-  **commands = distcode | (extra << 8);\r
-  ++(*commands);\r
-}\r
-\r
-/* REQUIRES: len <= 1 << 24. */\r
-static void BrotliStoreMetaBlockHeader(\r
-    size_t len, BROTLI_BOOL is_uncompressed, size_t* storage_ix,\r
-    uint8_t* storage) {\r
-  size_t nibbles = 6;\r
-  /* ISLAST */\r
-  BrotliWriteBits(1, 0, storage_ix, storage);\r
-  if (len <= (1U << 16)) {\r
-    nibbles = 4;\r
-  } else if (len <= (1U << 20)) {\r
-    nibbles = 5;\r
-  }\r
-  BrotliWriteBits(2, nibbles - 4, storage_ix, storage);\r
-  BrotliWriteBits(nibbles * 4, len - 1, storage_ix, storage);\r
-  /* ISUNCOMPRESSED */\r
-  BrotliWriteBits(1, (uint64_t)is_uncompressed, storage_ix, storage);\r
-}\r
-\r
-static BROTLI_INLINE void CreateCommands(const uint8_t* input,\r
-    size_t block_size, size_t input_size, const uint8_t* base_ip, int* table,\r
-    size_t table_bits, size_t min_match,\r
-    uint8_t** literals, uint32_t** commands) {\r
-  /* "ip" is the input pointer. */\r
-  const uint8_t* ip = input;\r
-  const size_t shift = 64u - table_bits;\r
-  const uint8_t* ip_end = input + block_size;\r
-  /* "next_emit" is a pointer to the first byte that is not covered by a\r
-     previous copy. Bytes between "next_emit" and the start of the next copy or\r
-     the end of the input will be emitted as literal bytes. */\r
-  const uint8_t* next_emit = input;\r
-\r
-  int last_distance = -1;\r
-  const size_t kInputMarginBytes = BROTLI_WINDOW_GAP;\r
-\r
-  if (BROTLI_PREDICT_TRUE(block_size >= kInputMarginBytes)) {\r
-    /* For the last block, we need to keep a 16 bytes margin so that we can be\r
-       sure that all distances are at most window size - 16.\r
-       For all other blocks, we only need to keep a margin of 5 bytes so that\r
-       we don't go over the block size with a copy. */\r
-    const size_t len_limit = BROTLI_MIN(size_t, block_size - min_match,\r
-                                        input_size - kInputMarginBytes);\r
-    const uint8_t* ip_limit = input + len_limit;\r
-\r
-    uint32_t next_hash;\r
-    for (next_hash = Hash(++ip, shift, min_match); ; ) {\r
-      /* Step 1: Scan forward in the input looking for a 6-byte-long match.\r
-         If we get close to exhausting the input then goto emit_remainder.\r
-\r
-         Heuristic match skipping: If 32 bytes are scanned with no matches\r
-         found, start looking only at every other byte. If 32 more bytes are\r
-         scanned, look at every third byte, etc.. When a match is found,\r
-         immediately go back to looking at every byte. This is a small loss\r
-         (~5% performance, ~0.1% density) for compressible data due to more\r
-         bookkeeping, but for non-compressible data (such as JPEG) it's a huge\r
-         win since the compressor quickly "realizes" the data is incompressible\r
-         and doesn't bother looking for matches everywhere.\r
-\r
-         The "skip" variable keeps track of how many bytes there are since the\r
-         last match; dividing it by 32 (ie. right-shifting by five) gives the\r
-         number of bytes to move ahead for each iteration. */\r
-      uint32_t skip = 32;\r
-\r
-      const uint8_t* next_ip = ip;\r
-      const uint8_t* candidate;\r
-\r
-      BROTLI_DCHECK(next_emit < ip);\r
-trawl:\r
-      do {\r
-        uint32_t hash = next_hash;\r
-        uint32_t bytes_between_hash_lookups = skip++ >> 5;\r
-        ip = next_ip;\r
-        BROTLI_DCHECK(hash == Hash(ip, shift, min_match));\r
-        next_ip = ip + bytes_between_hash_lookups;\r
-        if (BROTLI_PREDICT_FALSE(next_ip > ip_limit)) {\r
-          goto emit_remainder;\r
-        }\r
-        next_hash = Hash(next_ip, shift, min_match);\r
-        candidate = ip - last_distance;\r
-        if (IsMatch(ip, candidate, min_match)) {\r
-          if (BROTLI_PREDICT_TRUE(candidate < ip)) {\r
-            table[hash] = (int)(ip - base_ip);\r
-            break;\r
-          }\r
-        }\r
-        candidate = base_ip + table[hash];\r
-        BROTLI_DCHECK(candidate >= base_ip);\r
-        BROTLI_DCHECK(candidate < ip);\r
-\r
-        table[hash] = (int)(ip - base_ip);\r
-      } while (BROTLI_PREDICT_TRUE(!IsMatch(ip, candidate, min_match)));\r
-\r
-      /* Check copy distance. If candidate is not feasible, continue search.\r
-         Checking is done outside of hot loop to reduce overhead. */\r
-      if (ip - candidate > MAX_DISTANCE) goto trawl;\r
-\r
-      /* Step 2: Emit the found match together with the literal bytes from\r
-         "next_emit", and then see if we can find a next match immediately\r
-         afterwards. Repeat until we find no match for the input\r
-         without emitting some literal bytes. */\r
-\r
-      {\r
-        /* We have a 6-byte match at ip, and we need to emit bytes in\r
-           [next_emit, ip). */\r
-        const uint8_t* base = ip;\r
-        size_t matched = min_match + FindMatchLengthWithLimit(\r
-            candidate + min_match, ip + min_match,\r
-            (size_t)(ip_end - ip) - min_match);\r
-        int distance = (int)(base - candidate);  /* > 0 */\r
-        int insert = (int)(base - next_emit);\r
-        ip += matched;\r
-        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));\r
-        EmitInsertLen((uint32_t)insert, commands);\r
-        memcpy(*literals, next_emit, (size_t)insert);\r
-        *literals += insert;\r
-        if (distance == last_distance) {\r
-          **commands = 64;\r
-          ++(*commands);\r
-        } else {\r
-          EmitDistance((uint32_t)distance, commands);\r
-          last_distance = distance;\r
-        }\r
-        EmitCopyLenLastDistance(matched, commands);\r
-\r
-        next_emit = ip;\r
-        if (BROTLI_PREDICT_FALSE(ip >= ip_limit)) {\r
-          goto emit_remainder;\r
-        }\r
-        {\r
-          /* We could immediately start working at ip now, but to improve\r
-             compression we first update "table" with the hashes of some\r
-             positions within the last copy. */\r
-          uint64_t input_bytes;\r
-          uint32_t cur_hash;\r
-          uint32_t prev_hash;\r
-          if (min_match == 4) {\r
-            input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 3);\r
-            cur_hash = HashBytesAtOffset(input_bytes, 3, shift, min_match);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 0, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 3);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 1, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 2);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 0, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 1);\r
-          } else {\r
-            input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 5);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 0, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 5);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 1, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 4);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 2, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 3);\r
-            input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 2);\r
-            cur_hash = HashBytesAtOffset(input_bytes, 2, shift, min_match);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 0, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 2);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 1, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 1);\r
-          }\r
-\r
-          candidate = base_ip + table[cur_hash];\r
-          table[cur_hash] = (int)(ip - base_ip);\r
-        }\r
-      }\r
-\r
-      while (ip - candidate <= MAX_DISTANCE &&\r
-          IsMatch(ip, candidate, min_match)) {\r
-        /* We have a 6-byte match at ip, and no need to emit any\r
-           literal bytes prior to ip. */\r
-        const uint8_t* base = ip;\r
-        size_t matched = min_match + FindMatchLengthWithLimit(\r
-            candidate + min_match, ip + min_match,\r
-            (size_t)(ip_end - ip) - min_match);\r
-        ip += matched;\r
-        last_distance = (int)(base - candidate);  /* > 0 */\r
-        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));\r
-        EmitCopyLen(matched, commands);\r
-        EmitDistance((uint32_t)last_distance, commands);\r
-\r
-        next_emit = ip;\r
-        if (BROTLI_PREDICT_FALSE(ip >= ip_limit)) {\r
-          goto emit_remainder;\r
-        }\r
-        {\r
-          /* We could immediately start working at ip now, but to improve\r
-             compression we first update "table" with the hashes of some\r
-             positions within the last copy. */\r
-          uint64_t input_bytes;\r
-          uint32_t cur_hash;\r
-          uint32_t prev_hash;\r
-          if (min_match == 4) {\r
-            input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 3);\r
-            cur_hash = HashBytesAtOffset(input_bytes, 3, shift, min_match);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 0, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 3);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 1, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 2);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 2, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 1);\r
-          } else {\r
-            input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 5);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 0, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 5);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 1, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 4);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 2, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 3);\r
-            input_bytes = BROTLI_UNALIGNED_LOAD64LE(ip - 2);\r
-            cur_hash = HashBytesAtOffset(input_bytes, 2, shift, min_match);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 0, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 2);\r
-            prev_hash = HashBytesAtOffset(input_bytes, 1, shift, min_match);\r
-            table[prev_hash] = (int)(ip - base_ip - 1);\r
-          }\r
-\r
-          candidate = base_ip + table[cur_hash];\r
-          table[cur_hash] = (int)(ip - base_ip);\r
-        }\r
-      }\r
-\r
-      next_hash = Hash(++ip, shift, min_match);\r
-    }\r
-  }\r
-\r
-emit_remainder:\r
-  BROTLI_DCHECK(next_emit <= ip_end);\r
-  /* Emit the remaining bytes as literals. */\r
-  if (next_emit < ip_end) {\r
-    const uint32_t insert = (uint32_t)(ip_end - next_emit);\r
-    EmitInsertLen(insert, commands);\r
-    memcpy(*literals, next_emit, insert);\r
-    *literals += insert;\r
-  }\r
-}\r
-\r
-static void StoreCommands(MemoryManager* m,\r
-                          const uint8_t* literals, const size_t num_literals,\r
-                          const uint32_t* commands, const size_t num_commands,\r
-                          size_t* storage_ix, uint8_t* storage) {\r
-  static const uint32_t kNumExtraBits[128] = {\r
-    0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 12, 14, 24,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 24,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,\r
-    9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16,\r
-    17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24,\r
-  };\r
-  static const uint32_t kInsertOffset[24] = {\r
-    0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26, 34, 50, 66, 98, 130, 194, 322, 578,\r
-    1090, 2114, 6210, 22594,\r
-  };\r
-\r
-  uint8_t lit_depths[256];\r
-  uint16_t lit_bits[256];\r
-  uint32_t lit_histo[256] = { 0 };\r
-  uint8_t cmd_depths[128] = { 0 };\r
-  uint16_t cmd_bits[128] = { 0 };\r
-  uint32_t cmd_histo[128] = { 0 };\r
-  size_t i;\r
-  for (i = 0; i < num_literals; ++i) {\r
-    ++lit_histo[literals[i]];\r
-  }\r
-  BrotliBuildAndStoreHuffmanTreeFast(m, lit_histo, num_literals,\r
-                                     /* max_bits = */ 8,\r
-                                     lit_depths, lit_bits,\r
-                                     storage_ix, storage);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  for (i = 0; i < num_commands; ++i) {\r
-    const uint32_t code = commands[i] & 0xFF;\r
-    BROTLI_DCHECK(code < 128);\r
-    ++cmd_histo[code];\r
-  }\r
-  cmd_histo[1] += 1;\r
-  cmd_histo[2] += 1;\r
-  cmd_histo[64] += 1;\r
-  cmd_histo[84] += 1;\r
-  BuildAndStoreCommandPrefixCode(cmd_histo, cmd_depths, cmd_bits,\r
-                                 storage_ix, storage);\r
-\r
-  for (i = 0; i < num_commands; ++i) {\r
-    const uint32_t cmd = commands[i];\r
-    const uint32_t code = cmd & 0xFF;\r
-    const uint32_t extra = cmd >> 8;\r
-    BROTLI_DCHECK(code < 128);\r
-    BrotliWriteBits(cmd_depths[code], cmd_bits[code], storage_ix, storage);\r
-    BrotliWriteBits(kNumExtraBits[code], extra, storage_ix, storage);\r
-    if (code < 24) {\r
-      const uint32_t insert = kInsertOffset[code] + extra;\r
-      uint32_t j;\r
-      for (j = 0; j < insert; ++j) {\r
-        const uint8_t lit = *literals;\r
-        BrotliWriteBits(lit_depths[lit], lit_bits[lit], storage_ix, storage);\r
-        ++literals;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-/* Acceptable loss for uncompressible speedup is 2% */\r
-#define MIN_RATIO 0.98\r
-#define SAMPLE_RATE 43\r
-\r
-static BROTLI_BOOL ShouldCompress(\r
-    const uint8_t* input, size_t input_size, size_t num_literals) {\r
-  double corpus_size = (double)input_size;\r
-  if (num_literals < MIN_RATIO * corpus_size) {\r
-    return BROTLI_TRUE;\r
-  } else {\r
-    uint32_t literal_histo[256] = { 0 };\r
-    const double max_total_bit_cost = corpus_size * 8 * MIN_RATIO / SAMPLE_RATE;\r
-    size_t i;\r
-    for (i = 0; i < input_size; i += SAMPLE_RATE) {\r
-      ++literal_histo[input[i]];\r
-    }\r
-    return TO_BROTLI_BOOL(BitsEntropy(literal_histo, 256) < max_total_bit_cost);\r
-  }\r
-}\r
-\r
-static void RewindBitPosition(const size_t new_storage_ix,\r
-                              size_t* storage_ix, uint8_t* storage) {\r
-  const size_t bitpos = new_storage_ix & 7;\r
-  const size_t mask = (1u << bitpos) - 1;\r
-  storage[new_storage_ix >> 3] &= (uint8_t)mask;\r
-  *storage_ix = new_storage_ix;\r
-}\r
-\r
-static void EmitUncompressedMetaBlock(const uint8_t* input, size_t input_size,\r
-                                      size_t* storage_ix, uint8_t* storage) {\r
-  BrotliStoreMetaBlockHeader(input_size, 1, storage_ix, storage);\r
-  *storage_ix = (*storage_ix + 7u) & ~7u;\r
-  memcpy(&storage[*storage_ix >> 3], input, input_size);\r
-  *storage_ix += input_size << 3;\r
-  storage[*storage_ix >> 3] = 0;\r
-}\r
-\r
-static BROTLI_INLINE void BrotliCompressFragmentTwoPassImpl(\r
-    MemoryManager* m, const uint8_t* input, size_t input_size,\r
-    BROTLI_BOOL is_last, uint32_t* command_buf, uint8_t* literal_buf,\r
-    int* table, size_t table_bits, size_t min_match,\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  /* Save the start of the first block for position and distance computations.\r
-  */\r
-  const uint8_t* base_ip = input;\r
-  BROTLI_UNUSED(is_last);\r
-\r
-  while (input_size > 0) {\r
-    size_t block_size =\r
-        BROTLI_MIN(size_t, input_size, kCompressFragmentTwoPassBlockSize);\r
-    uint32_t* commands = command_buf;\r
-    uint8_t* literals = literal_buf;\r
-    size_t num_literals;\r
-    CreateCommands(input, block_size, input_size, base_ip, table,\r
-                   table_bits, min_match, &literals, &commands);\r
-    num_literals = (size_t)(literals - literal_buf);\r
-    if (ShouldCompress(input, block_size, num_literals)) {\r
-      const size_t num_commands = (size_t)(commands - command_buf);\r
-      BrotliStoreMetaBlockHeader(block_size, 0, storage_ix, storage);\r
-      /* No block splits, no contexts. */\r
-      BrotliWriteBits(13, 0, storage_ix, storage);\r
-      StoreCommands(m, literal_buf, num_literals, command_buf, num_commands,\r
-                    storage_ix, storage);\r
-      if (BROTLI_IS_OOM(m)) return;\r
-    } else {\r
-      /* Since we did not find many backward references and the entropy of\r
-         the data is close to 8 bits, we can simply emit an uncompressed block.\r
-         This makes compression speed of uncompressible data about 3x faster. */\r
-      EmitUncompressedMetaBlock(input, block_size, storage_ix, storage);\r
-    }\r
-    input += block_size;\r
-    input_size -= block_size;\r
-  }\r
-}\r
-\r
-#define FOR_TABLE_BITS_(X) \\r
-  X(8) X(9) X(10) X(11) X(12) X(13) X(14) X(15) X(16) X(17)\r
-\r
-#define BAKE_METHOD_PARAM_(B)                                                  \\r
-static BROTLI_NOINLINE void BrotliCompressFragmentTwoPassImpl ## B(            \\r
-    MemoryManager* m, const uint8_t* input, size_t input_size,                 \\r
-    BROTLI_BOOL is_last, uint32_t* command_buf, uint8_t* literal_buf,          \\r
-    int* table, size_t* storage_ix, uint8_t* storage) {                        \\r
-  size_t min_match = (B <= 15) ? 4 : 6;                                        \\r
-  BrotliCompressFragmentTwoPassImpl(m, input, input_size, is_last, command_buf,\\r
-      literal_buf, table, B, min_match, storage_ix, storage);                  \\r
-}\r
-FOR_TABLE_BITS_(BAKE_METHOD_PARAM_)\r
-#undef BAKE_METHOD_PARAM_\r
-\r
-void BrotliCompressFragmentTwoPass(\r
-    MemoryManager* m, const uint8_t* input, size_t input_size,\r
-    BROTLI_BOOL is_last, uint32_t* command_buf, uint8_t* literal_buf,\r
-    int* table, size_t table_size, size_t* storage_ix, uint8_t* storage) {\r
-  const size_t initial_storage_ix = *storage_ix;\r
-  const size_t table_bits = Log2FloorNonZero(table_size);\r
-  switch (table_bits) {\r
-#define CASE_(B)                                      \\r
-    case B:                                           \\r
-      BrotliCompressFragmentTwoPassImpl ## B(         \\r
-          m, input, input_size, is_last, command_buf, \\r
-          literal_buf, table, storage_ix, storage);   \\r
-      break;\r
-    FOR_TABLE_BITS_(CASE_)\r
-#undef CASE_\r
-    default: BROTLI_DCHECK(0); break;\r
-  }\r
-\r
-  /* If output is larger than single uncompressed block, rewrite it. */\r
-  if (*storage_ix - initial_storage_ix > 31 + (input_size << 3)) {\r
-    RewindBitPosition(initial_storage_ix, storage_ix, storage);\r
-    EmitUncompressedMetaBlock(input, input_size, storage_ix, storage);\r
-  }\r
-\r
-  if (is_last) {\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* islast */\r
-    BrotliWriteBits(1, 1, storage_ix, storage);  /* isempty */\r
-    *storage_ix = (*storage_ix + 7u) & ~7u;\r
-  }\r
-}\r
-\r
-#undef FOR_TABLE_BITS_\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.h b/BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.h
deleted file mode 100644 (file)
index c97e22c..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function for fast encoding of an input fragment, independently from the input\r
-   history. This function uses two-pass processing: in the first pass we save\r
-   the found backward matches and literal bytes into a buffer, and in the\r
-   second pass we emit them into the bit stream using prefix codes built based\r
-   on the actual command and literal byte histograms. */\r
-\r
-#ifndef BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_\r
-#define BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./memory.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static const size_t kCompressFragmentTwoPassBlockSize = 1 << 17;\r
-\r
-/* Compresses "input" string to the "*storage" buffer as one or more complete\r
-   meta-blocks, and updates the "*storage_ix" bit position.\r
-\r
-   If "is_last" is 1, emits an additional empty last meta-block.\r
-\r
-   REQUIRES: "input_size" is greater than zero, or "is_last" is 1.\r
-   REQUIRES: "input_size" is less or equal to maximal metablock size (1 << 24).\r
-   REQUIRES: "command_buf" and "literal_buf" point to at least\r
-              kCompressFragmentTwoPassBlockSize long arrays.\r
-   REQUIRES: All elements in "table[0..table_size-1]" are initialized to zero.\r
-   REQUIRES: "table_size" is a power of two\r
-   OUTPUT: maximal copy distance <= |input_size|\r
-   OUTPUT: maximal copy distance <= BROTLI_MAX_BACKWARD_LIMIT(18) */\r
-BROTLI_INTERNAL void BrotliCompressFragmentTwoPass(MemoryManager* m,\r
-                                                   const uint8_t* input,\r
-                                                   size_t input_size,\r
-                                                   BROTLI_BOOL is_last,\r
-                                                   uint32_t* command_buf,\r
-                                                   uint8_t* literal_buf,\r
-                                                   int* table,\r
-                                                   size_t table_size,\r
-                                                   size_t* storage_ix,\r
-                                                   uint8_t* storage);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.c b/BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.c
deleted file mode 100644 (file)
index 03355c0..0000000
+++ /dev/null
@@ -1,1120 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Hash table on the 4-byte prefixes of static dictionary words. */\r
-\r
-#include "../common/platform.h"\r
-#include "./dictionary_hash.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-BROTLI_INTERNAL const uint16_t kStaticDictionaryHash[32768] = {\r
-32072,0,0,0,0,0,0,0,0,21860,0,0,0,0,0,0,0,40486,0,0,0,0,0,45798,0,0,0,0,0,0,1292\r
-,0,0,0,0,4964,278,23717,0,19972,0,0,0,0,0,0,0,0,0,0,0,0,2126,16102,0,0,0,14437,0\r
-,0,0,0,0,0,0,26727,2253,0,0,17252,0,0,0,0,0,0,0,0,0,3622,0,0,0,0,22984,0,0,0,0,0\r
-,0,16647,0,34247,0,0,0,0,0,48486,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2511,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19532,0,0,24004,0,0,0,9828,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30853,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,31974,0,0,0,0,0,0,0,0,20650,2404,0,20773,1677,9031,0,6404,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51879,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6761,7206\r
-,0,0,21992,22983,0,0,3529,0,1864,0,0,0,0,0,0,11046,0,0,9641,0,0,0,6507,0,0,36934\r
-,21576,62375,0,0,0,0,0,0,0,0,0,8294,0,0,0,0,0,0,0,40807,0,0,0,39398,8136,0,0,0,0\r
-,0,0,0,8875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7941,0,0,25609,0,0,0,936,\r
-3716,3213,15687,0,0,0,0,0,52519,0,17381,0,0,0,0,1320,5797,0,21029,0,0,6472,807,0\r
-,0,0,0,0,0,0,0,0,0,13545,0,0,0,3624,0,0,0,29674,30820,0,31237,0,6596,0,0,0,0,0,0\r
-,0,0,0,64070,0,0,0,0,0,0,0,0,0,0,0,22278,0,37446,0,0,0,0,7240,423,0,24612,21705,\r
-17636,0,0,0,0,0,0,1833,0,0,0,328,6021,0,0,0,19974,0,0,0,0,0,0,0,0,0,62119,4178,0\r
-,0,0,0,12100,8617,0,0,16900,0,36678,0,0,0,35366,0,51718,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,20998,0,62086,0,0,0,0,0,5542,0,0,0,0,0,0,0,0,0,0,0,14629,10952,25927,0,0,0\r
-,0,19849,0,0,0,0,0,0,0,30952,3046,14314,12998,0,0,0,15268,0,40582,30216,62118,0,\r
-0,0,20132,0,0,0,0,0,12005,0,0,0,52358,0,0,0,0,24778,0,44,33095,0,0,0,0,0,26372,0\r
-,0,0,0,0,3781,0,0,17928,9479,0,0,0,0,0,0,0,0,32297,28613,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,47174,11723,0,0,0,0,0,0,0,0,0,2536,55143,0,0,6410,0,0,0,0,0,0,0,0,56294,11914\r
-,0,529,0,30184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8261,0,0,28808,58854,22633,\r
-965,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64135,0,0,331,3684,0,1605,0,0,0,0,0,0,\r
-0,0,0,0,16650,37,0,23622,3144,15429,0,0,0,0,0,0,0,0,0,0,22443,69,0,0,0,0,0,0,0,0\r
-,17832,0,0,0,0,0,0,0,0,0,11113,0,0,0,0,18309,0,0,0,0,0,0,0,0,0,26630,0,0,25512,\r
-25895,0,0,0,0,0,0,0,0,0,0,0,16901,0,0,0,27558,0,0,9418,0,0,0,3508,0,0,0,0,0,0,0,\r
-0,37990,9289,8517,0,0,0,0,1578,1604,23944,0,0,14916,12781,0,0,0,0,0,0,0,12105,0,\r
-16617,0,0,0,0,0,0,0,0,0,0,0,0,21348,11240,28870,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,5772,0,0,27812,0,0,0,0,0,0,0,8324,0,0,0,0,0,0,0,0,0,0,16748,1157,0,0,18794,\r
-16324,25898,935,8333,0,0,0,0,0,0,0,0,18246,0,18086,0,46854,0,0,0,0,0,0,339,0,0,\r
-25188,12780,12166,6409,0,0,0,0,16516,0,27012,28395,0,0,0,0,0,0,0,1420,0,0,0,9768\r
-,52967,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25163,324,0,0,0,0,0,0,0,0,0,64998,0,0,0,0,0,\r
-21893,0,0,0,0,0,47366,0,0,0,870,0,0,0,12646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,26020,16360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1809,0,0,0,6601,15878,0,0,0,0,0,\r
-29092,0,28516,0,0,0,0,0,0,0,0,0,21988,0,0,0,42950,0,0,0,0,0,0,0,0,0,0,5133,1318,\r
-0,0,0,0,0,0,0,0,0,0,0,54982,24904,0,0,0,0,0,0,0,0,0,0,51526,0,0,0,0,0,3685,0,0,0\r
-,0,10062,9412,0,0,0,31460,5708,6181,0,0,0,0,0,0,0,0,0,5575,0,0,0,0,0,0,0,0,0,0,\r
-27144,57478,0,0,0,0,0,0,7084,0,21993,53126,0,0,0,0,8397,0,0,5733,0,0,0,0,0,2116,\r
-0,24742,0,11271,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1133,0,4873,0,0,38310,0,0,0,0,0,\r
-0,0,0,0,0,0,0,17932,0,0,18053,0,0,0,25510,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17798,0,\r
-26214,0,0,0,0,0,0,0,0,23016,17415,20392,164,0,0,0,0,0,0,0,0,0,0,0,3239,0,46119,0\r
-,0,0,28580,0,0,0,0,0,0,0,0,0,7621,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41478,0,0,31016,\r
-55334,10056,1924,0,0,0,0,0,36614,0,36711,0,0,0,0,0,0,0,0,0,0,13994,59303,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,26501,0,5639,0,0,0,0,0,0,13897,1253,0,0,0,0,0,5095,0,0,0,\r
-28869,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8646,0,0,0,0,25641,17796,0,0,0,0,0,0,0,\r
-13316,620,6309,11819,0,0,0,0,0,0,0,0,0,904,1095,0,24229,0,0,28744,49703,0,23077,\r
-0,0,0,0,32392,0,0,0,0,35271,0,28740,5866,0,0,0,0,0,0,0,4361,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7917,8869,0,0,0,13924,0,0,0,0,\r
-0,41958,0,0,0,0,0,0,6766,13989,0,0,0,903,0,0,24010,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,64390,0,22468,0,25861,0,0,0,0,23656,5317,0,0,0,0,0,0,23017,5445,16009\r
-,0,0,0,0,0,0,0,0,48006,10473,0,0,14404,0,0,0,42183,0,0,0,51270,0,0,10602,24132,0\r
-,0,0,0,0,43782,0,0,17834,0,0,0,25576,27205,0,0,0,0,0,0,0,0,29066,0,0,0,0,0,626,\r
-1988,14700,0,0,0,0,0,0,0,0,0,0,0,0,57670,0,0,0,0,0,0,0,0,0,44710,0,0,0,0,3848,\r
-7623,0,0,0,0,0,0,0,0,0,0,0,42374,0,0,0,0,0,0,0,0,19272,6436,0,0,5256,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,19685,0,0,0,0,0,0,0,0,0,0,0,0,0,39783,0,0,0,0,30984,0,0,0,0,0,0\r
-,28230,0,0,0,29028,10538,3205,0,0,0,0,0,0,0,0,0,0,0,5636,840,295,0,0,8488,8198,0\r
-,0,0,0,0,0,0,0,0,20580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4074,19526,0,0,0,0,\r
-31144,64038,0,0,0,0,0,0,16716,0,0,0,0,0,0,0,0,0,0,0,17706,0,0,0,0,0,0,50630,0,\r
-50503,0,0,0,0,0,0,0,0,0,0,0,25446,0,0,0,13831,0,0,0,0,0,0,2696,4039,0,0,0,0,\r
-25288,0,12076,2054,0,48934,0,0,0,0,16969,59431,17259,35335,0,0,0,0,0,0,0,0,0,0,0\r
-,0,31275,0,0,0,1097,0,0,0,0,0,0,0,0,0,0,0,776,839,0,0,29386,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,5864,12134,0,0,0,0,0,0,0,25349,0,0,0,0,0,0,0,0,0,61447\r
-,0,0,0,0,0,0,0,0,0,24678,0,0,0,63335,0,28836,8142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4494,0,0,0,0,0,14088,1188,0,16260,0,0,0,\r
-16421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,276,0,0,17060,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24076,29445,0,33543,0,4901,0\r
-,0,12522,0,0,62471,0,0,0,0,0,0,0,0,0,0,4046,0,0,0,0,20486,0,15460,2217,51719,0,0\r
-,0,0,0,23495,0,0,0,0,0,0,15370,0,15849,0,15113,0,0,0,0,0,0,0,0,27972,7337,0,0,0,\r
-0,30342,0,0,0,0,0,0,0,0,32299,23940,0,17766,0,0,0,0,0,0,6184,0,20904,0,0,0,0,0,0\r
-,0,0,0,0,31492,0,0,0,5509,0,0,0,0,0,0,0,0,2669,50182,0,0,12299,0,0,0,0,0,0,0,\r
-5257,28167,0,0,0,0,0,0,0,0,0,0,0,11750,3890,0,0,26500,0,0,0,0,0,0,0,49318,0,0,0,\r
-0,0,0,0,10981,0,0,0,0,0,0,0,0,17961,1831,0,0,0,0,0,0,0,29638,0,0,0,0,26473,0,\r
-6216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,711,0,0,0,0,0,0,0,0,0,0,28683,39975\r
-,0,0,0,0,0,51654,0,0,0,27527,0,0,0,0,0,0,0,0,30859,3268,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28772,0,18212,0,0,0,0,25448,65446,0,0,0,0,\r
-0,0,3337,1670,0,0,0,0,0,19332,0,0,0,0,24936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1043,0\r
-,0,0,0,15814,0,21670,0,0,0,0,0,0,0,16263,0,0,0,0,0,0,0,0,0,32454,0,30630,0,0,\r
-20170,9926,0,0,0,18247,0,0,14376,0,2056,17191,0,0,0,0,0,0,0,7812,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,22474,52806,1588,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10825,0,\r
-0,0,0,40934,0,0,0,0,0,0,0,28677,0,0,5714,0,0,0,0,0,0,0,0,0,0,0,0,0,25865,22246,0\r
-,0,0,0,17256,35751,0,0,0,0,0,0,0,0,8236,0,32108,0,0,0,43,14342,0,16517,0,0,30732\r
-,0,4012,133,0,40583,971,23942,0,0,27275,0,0,0,204,0,0,27140,7564,44327,27592,\r
-57958,0,0,0,0,22344,25701,0,0,0,0,0,0,0,19524,31755,0,0,28102,0,59111,0,0,0,0,0,\r
-0,0,12261,0,44934,0,0,0,0,31560,0,11114,0,0,0,0,0,0,0,0,0,0,0,18953,18311,0,\r
-45159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2059,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-19399,0,0,0,0,0,0,0,0,0,0,0,0,0,58534,0,0,0,0,0,0,0,0,0,0,0,0,22411,23943,0,0,0,\r
-0,0,0,11690,0,0,4069,0,0,2668,6342,0,0,0,0,0,0,27658,1766,0,0,0,0,23240,56070,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,34119,0,24453,0,0,0,0,21867,0,17610,9894,0,0,27976,38790\r
-,0,0,0,43654,0,31559,12202,23142,0,0,0,50343,0,0,0,0,0,32806,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,49895,0,0,0,0,15786,4263,0,0,0,0,4746,3814,0,0,0,0,0,0,17192,\r
-453,17323,0,20328,4036,0,0,0,15844,0,0,0,0,27561,31940,32296,0,0,0,0,0,0,0,11499\r
-,11782,0,0,0,0,9738,50471,0,0,0,0,0,35430,0,0,0,0,0,29734,0,0,0,36551,0,0,0,0,\r
-9257,5606,0,13829,0,7015,0,0,0,0,0,25127,0,0,19051,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-2572,0,0,0,0,0,0,29797,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42342,0,0,0,0,9293,\r
-0,17896,56038,4077,0,0,0,29899,37351,0,30823,0,8326,0,0,0,18342,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18569,54054,0,0,0,0,0,0,0,0,0,37254,0,0,31433,\r
-61510,0,2022,0,0,0,0,0,25381,0,0,0,0,0,0,0,0,0,0,0,0,0,2149,25289,0,0,0,0,0,0,0,\r
-0,0,0,12516,14185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8676,0,0,0,0,0\r
-,0,0,0,0,0,0,36486,0,0,0,0,10889,9607,0,28711,0,0,0,0,0,0,0,0,0,0,28490,0,0,0,0,\r
-26181,10283,1701,0,0,0,0,0,0,0,0,0,14980,0,7783,0,27846,0,0,0,56486,3892,0,0,0,\r
-5770,16583,0,26309,13422,20292,0,0,0,0,0,0,0,0,0,28742,0,0,0,0,14536,1158,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25801,0,0,0,0,0,0,0,0,0,0,0,0,42438,0,3332,0,0\r
-,0,0,0,0,0,0,0,8327,0,0,0,0,0,0,0,0,0,0,0,0,17353,1447,0,0,8427,48518,1359,0,0,0\r
-,0,0,14986,0,32168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9230,2791,0,0,0,0,0,0,0,0,\r
-16073,31623,4269,0,0,0,0,0,0,4519,0,0,27912,58950,0,0,0,0,0,0,0,0,8361,19812,0,0\r
-,0,0,6056,7877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21701,0,0,0,0,0,0,0,0,0,0,0\r
-,0,9128,1125,0,16548,0,0,0,0,0,0,0,0,0,0,17292,6854,21352,0,2380,0,0,4007,0,0,0,\r
-0,0,24357,4202,0,0,0,0,0,0,0,0,0,0,0,0,0,10664,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,42823,3022,0,0,0,0,0,0,0,0,0,0,0,0,14373,0,20677,3304,2759,20522,64903,0,\r
-0,0,38,0,0,0,0,0,0,0,0,0,0,0,27814,2802,8870,3758,1255,0,0,0,0,0,0,0,0,30027,\r
-9510,0,0,0,0,17864,14855,0,0,0,0,0,0,0,0,0,0,23404,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-51462,0,0,0,0,0,0,0,45734,0,0,23467,32327,0,0,10826,52999,0,0,0,33222,31336,\r
-64326,0,0,0,0,0,0,0,32166,0,0,3891,0,0,0,7017,645,0,0,0,0,0,0,27915,46087,0,0,0,\r
-21863,0,34246,0,0,16715,0,0,0,0,14052,21416,0,0,0,0,0,0,0,0,39846,0,0,0,0,0,\r
-38982,0,0,17512,7460,0,0,0,0,0,0,0,0,0,15428,0,0,0,0,0,0,0,28356,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,25445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11879,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,19911,0,20007,0,0,0,10855,943,0,0,10821,0,0,0,0,4170,0,0,0,0,0,0,\r
-0,0,0,9836,0,0,0,0,0,0,0,0,0,0,65415,0,0,0,0,0,0,0,0,9865,24646,0,0,0,0,0,40519,\r
-0,0,0,0,0,0,0,0,0,12804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22091,23655,0,0,0,0,0,0,\r
-0,31686,0,0,0,58599,0,0,0,0,0,0,0,0,0,0,0,0,0,19620,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-24421,0,28100,0,0,0,31268,0,3204,0,0,0,0,0,0,0,0,0,14822,0,0,0,0,19947,10182,0,0\r
-,9480,14821,4398,0,0,14532,0,0,0,48871,1873,0,0,0,0,0,0,0,589,1541,0,0,0,0,0,\r
-23333,0,0,0,14149,0,0,0,0,1296,14374,0,27300,0,0,0,0,0,0,7276,0,0,0,0,0,0,47718,\r
-0,0,0,0,0,0,0,0,0,0,5164,1765,0,14405,0,37574,1994,0,6636,0,0,0,0,0,0,0,0,27815,\r
-0,0,0,0,2568,6820,0,0,0,0,0,0,0,0,0,0,11336,26247,0,0,23912,0,0,0,30536,0,0,\r
-34342,0,17799,0,0,0,22149,0,6118,0,25732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,26600,5190,0,0,1142,0,0,0,0,0,0,0,0,39527,0,0,0,0,0,39494,0,0,0,0,0,0,0\r
-,0,0,0,3085,0,0,0,0,0,0,0,4786,0,0,0,28873,6532,0,0,26664,0,9193,11719,0,0,0,0,0\r
-,0,31752,64646,0,0,0,0,0,0,0,0,0,0,0,11397,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25094,0\r
-,0,18153,20167,0,0,0,17254,0,0,878,0,0,0,0,0,0,0,0,0,0,24166,0,0,0,0,0,0,0,0,0,0\r
-,0,0,26059,0,0,0,0,0,0,0,0,0,0,0,0,0,31592,0,0,8167,24362,6212,0,34758,0,0,0,0,0\r
-,0,32520,0,0,44679,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17989,8681,29222,0,0,0,\r
-0,0,0,0,0,10251,4902,1452,15207,0,0,0,0,0,0,0,22822,0,10469,0,0,0,0,0,0,19337,\r
-17670,107,11494,0,0,0,0,27305,2565,0,0,0,0,0,0,0,64518,200,28389,0,0,0,0,31208,0\r
-,30762,0,0,0,0,0,29321,60518,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3209,3237,\r
-12490,22663,0,0,0,18789,31464,16391,0,0,0,0,0,0,0,0,0,0,0,20646,0,0,0,27238,0,0,\r
-0,0,0,15940,4488,6951,0,0,0,46342,0,0,0,0,0,0,0,0,0,28965,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,20584,3367,0,25350,0,0,0,0,0,0,0,0,0,0,0,0,1814,0,0,0,0,0,0,0,0,0,0,17125,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55943,0,0,0,0,0,24133,0,0,0,0,0,0,0,0,0,0,0,0,2929\r
-,0,0,50086,0,2918,25356,30052,115,11846,0,0,0,0,3056,0,0,0,0,17639,239,19815,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36806,0,0,0,0,0,0,0,0,0,0,0,0,0,21479,0,0,0,0,0,\r
-28420,11786,4772,0,0,3368,36295,0,31463,0,0,14665,996,0,20582,0,0,0,9988,0,23685\r
-,0,0,0,52551,0,0,0,0,0,0,0,7556,0,0,0,0,0,0,0,1895,2186,0,0,0,0,0,27755,25447,0,\r
-0,0,0,31052,63270,0,0,0,0,0,0,0,36742,0,24804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,31048,0,0,0,0,0,0,0,0,0,21290,2276,0,0,0,0,26475,0,0,0,0,0,0,0,0,0\r
-,0,15332,0,0,0,0,0,0,0,0,3176,19431,0,0,0,0,0,0,0,62726,0,0,0,25380,0,0,27883,\r
-1316,0,0,7724,3015,0,0,0,0,6697,0,0,47910,0,0,0,0,0,0,0,0,0,3141,0,0,0,14820,0,0\r
-,0,0,9326,0,0,0,0,0,0,0,0,0,0,31493,0,0,0,0,0,6566,0,0,0,0,0,0,6569,1348,0,25638\r
-,0,0,0,0,0,20324,0,0,17067,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11876,0,41030,0,0,0,26405\r
-,0,0,0,0,0,0,0,0,0,11431,28137,14950,0,10151,0,0,0,0,0,0,0,29574,0,0,0,0,27176,\r
-57446,0,0,0,0,28650,57574,1387,0,0,0,0,0,0,0,0,0,0,58247,0,0,0,0,0,0,0,16805,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3526,0,15781,0,5572,13352,0,0,0,0,0,18665\r
-,23463,0,0,0,0,0,0,15405,6885,0,0,0,0,15272,0,0,0,0,0,0,0,0,9861,0,0,0,0,0,0,0,0\r
-,9512,4037,0,0,11563,49639,0,0,0,0,0,0,27880,57830,0,0,0,0,0,41831,0,21924,0,0,0\r
-,0,0,0,0,25509,0,27462,0,18085,0,0,0,0,0,0,0,0,0,0,0,0,13898,8068,26441,0,0,0,0,\r
-0,0,25316,0,0,0,0,16298,7397,5706,19239,0,0,0,0,0,0,0,0,1392,50919,0,0,0,0,0,\r
-53863,0,0,0,0,1451,0,0,0,0,0,0,0,0,0,0,35847,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,17801,15813,0,12740,0,0,0,32967,0,0,0,0,0,0,5389,0,0,0,0,0,0,0,0,0,0,31143,0,\r
-20548,0,0,0,0,0,0,0,0,0,51686,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-12109,19015,0,34983,0,21732,3600,0,0,0,0,47750,17288,43975,22857,47559,0,0,0,0,\r
-26408,48358,0,0,0,0,0,0,0,0,0,0,0,0,0,30470,0,0,23560,4581,0,22404,0,49286,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49831,0,0,0,27525,31691,7,0,0,25835,0,0,0,0,0,\r
-4201,16485,0,20676,0,0,0,0,3753,23303,16264,3878,0,0,0,0,0,0,11434,0,0,0,0,0,0,\r
-7589,0,0,0,0,0,0,0,0,0,57095,0,0,0,0,0,0,0,0,0,0,0,22820,11146,49158,0,23623,0,0\r
-,0,0,0,0,0,13893,0,0,0,0,0,0,11722,60071,1258,0,0,0,0,0,0,18564,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,27945,0,0,0,0,5479,0,20006,17608,3431,10988,30180,0,0,0,0,0,0,0,\r
-24581,14,0,0,0,0,0,0,25572,0,0,0,28612,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53543,0\r
-,0,0,0,0,0,0,0,0,0,0,33670,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8710,0,14116,0,0,116,\r
-292,0,0,0,37831,0,43078,0,0,0,0,0,0,0,0,21832,0,0,32134,783,0,0,30982,0,0,0,68,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5932,0,0,0,18505,\r
-15175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3630,16965,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,17797,0,0,0,0,0,0,520,42150,0,0,3122,0,0,0,22506,0,0,0,0,0,0,0,0,28550,0,\r
-0,0,50278,0,0,13641,5958,0,35238,0,0,0,0,0,0,0,0,29993,18724,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,20619,9319,0,0,0,0,23977,0,5193,0,0,12196,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,24390,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20105,677,0,0,0,0\r
-,0,0,0,0,29419,0,0,0,0,0,0,0,0,0,20266,0,0,0,0,10631,0,0,0,0,0,0,0,0,0,47655,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26628,12744,0,20648,0,0,0,432,0,0\r
-,0,0,0,0,0,0,0,0,646,0,25604,0,0,0,0,0,0,0,0,0,0,0,0,0,63782,0,0,0,0,24616,0,0,0\r
-,21291,0,0,0,0,0,0,0,0,0,0,45638,0,0,0,0,1931,0,0,0,20521,59975,0,20614,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,56231,0,0,0,0,0,29991,0,52871,0,20934,0,0,0,0,0,0,0,16871,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,7237,0,0,0,0,0,47558,0,0,0,0,0,0,0,0,0,0,0,10406,0,0,0\r
-,0,0,0,0,43046,0,0,2930,0,12936,0,0,0,0,0,0,0,0,0,0,0,0,31141,0,0,0,0,0,0,0,\r
-37639,0,17572,0,0,0,0,0,0,0,0,0,0,31240,0,0,0,0,0,688,0,0,0,0,0,1648,0,0,0,0,\r
-10055,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,6345,199,0,34982,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,56839,0,0,0,0,0,48902,0,13412,0,0,0,0,0,0,0,0,2441,4420,0\r
-,0,0,0,20428,933,0,0,0,0,0,0,0,45383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,54726,0,0,0,0,0,0,0,0,0,0,0,0,17036,741,0,0,0,0,0,0,0,27589,0,0,30282\r
-,18950,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2248,0,0,0,0,0,0,0,0,0,25993,0,0,0,\r
-2443,0,0,31622,0,14150,0,0,0,28679,0,0,0,0,0,0,15464,0,0,0,0,54694,0,0,0,0,0,0,\r
-3827,0,0,0,3756,0,9897,0,0,0,0,0,19082,31239,0,0,0,0,0,0,0,0,0,0,0,24580,0,0,0,0\r
-,0,0,0,0,0,16580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27625,0,0,0,784,4647,32652,0,0,\r
-63494,0,0,0,0,0,0,0,21062,0,0,0,0,0,0,0,0,0,0,3404,58470,0,32325,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,18634,2789,0,0,0,0,0,0,0,8548,0,0,0,22501,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,15881,0,0,0,0,35879,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7978,17956,0,0,0,\r
-0,0,0,0,24324,0,0,4937,0,0,0,8168,0,13420,10340,0,0,0,0,0,11780,0,0,0,0,0,0,0,0,\r
-0,0,16712,0,0,0,0,0,0,0,17640,17991,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,2953,0,0,0,0,0,0,0,9100,16806,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30667,0,0,\r
-19013,0,0,0,0,0,0,205,15334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1969,0,0,0,0,0,0,0,26248\r
-,52518,0,49798,0,0,0,0,0,0,0,9668,0,0,0,0,0,4742,0,0,21641,0,0,0,0,0,0,53574,0,0\r
-,0,0,0,0,5707,0,0,0,0,0,0,0,3018,12454,0,0,0,0,2920,262,0,0,0,0,0,0,0,0,0,0,3593\r
-,0,0,0,0,0,0,0,0,0,0,23910,0,0,0,0,0,0,0,55879,0,0,0,0,0,775,0,43270,5066,48967,\r
-0,0,22986,4165,8971,44838,0,0,0,0,0,62279,272,0,0,0,0,51430,0,0,0,0,0,0,28234,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13349,0,0,0,51111,20265,13861,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,585,7494,0,0,0,0,0,0,0,0,21768,62407,0,0,0,0,7979,166,0,\r
-0,0,0,0,0,0,0,0,38918,0,56742,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16296,5767,0,0,0,0,0,0\r
-,0,32068,0,0,0,0,0,0,0,0,0,0,0,0,0,29796,0,0,0,0,0,0,0,0,23916,30183,0,58791,0,0\r
-,0,0,0,0,0,20518,0,0,0,0,8969,0,0,0,183,0,0,0,0,0,2314,17445,0,0,0,0,0,0,0,0,0,\r
-23748,0,0,8139,4839,27914,0,0,0,0,0,0,0,0,0,0,0,0,29478,0,0,16552,26663,0,53767,\r
-0,0,13960,8039,18696,0,0,0,0,0,0,0,0,0,0,0,782,16005,0,0,0,0,0,0,0,0,6258,56806,\r
-16456,12455,0,0,0,0,0,0,0,23780,0,0,0,0,0,0,9355,0,0,0,7273,41063,24780,57766,0,\r
-0,0,0,0,0,0,0,0,0,3820,2597,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29225,61126,0,0,0,58439,\r
-15691,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37190,22408,967,0,0,0,\r
-23078,26858,0,0,0,19753,0,0,0,0,0,0,0,0,0,5416,13702,0,0,0,0,0,52742,20394,38567\r
-,0,0,0,51079,0,0,136,8516,0,0,0,0,0,0,0,0,0,0,0,27588,0,0,0,0,0,0,0,0,0,0,531,0,\r
-0,0,0,0,0,0,0,0,8936,5031,12520,19334,0,0,22827,30247,28074,31140,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,27497,18148,20104,59079,0,0,0,0,0,0,0,0,0,24389,0,0,6125,0,0,0,0,\r
-9541,0,0,24553,29095,0,0,0,0,0,0,0,25444,0,0,9643,0,0,63047,0,0,0,0,0,0,0,0,0,\r
-39558,0,0,0,0,0,0,20620,11815,499,0,5128,2278,0,0,0,0,0,46310,0,0,0,0,0,0,0,0,\r
-23530,40166,2440,0,0,0,0,0,0,0,0,0,0,15174,0,0,0,0,0,0,0,0,0,0,26922,0,0,0,0,0,0\r
-,0,0,0,0,26758,0,0,0,0,0,51911,0,0,23532,0,0,0,0,51238,25737,44486,12622,0,0,0,0\r
-,0,0,3078,0,9253,0,0,1128,22023,0,0,0,21350,0,16420,0,0,0,0,0,0,0,65094,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22532,0,48774,0,34503,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,9797,0,0,0,0,0,0,0,13797,0,38279,0,0,1738,0,489,46343,0,45382,0,0,0,0,0,0,\r
-0,0,0,29030,0,0,0,0,0,0,6220,56550,0,0,0,0,0,26885,0,28806,0,0,0,0,0,0,0,0,0,0,0\r
-,45958,0,0,0,0,20553,49927,0,0,0,0,0,0,3019,12358,0,0,0,0,0,0,0,0,0,0,26571,\r
-13319,0,0,653,23399,0,0,0,0,0,0,0,0,22316,0,0,21188,0,0,0,0,0,0,0,0,0,27556,0,0,\r
-0,0,0,0,0,27878,21483,27653,0,29701,237,0,10632,0,0,0,0,33766,0,0,0,0,0,0,31563,\r
-0,0,0,0,0,1416,2439,0,0,0,0,0,0,0,0,0,0,9611,0,0,0,0,0,0,0,5611,16581,26601,\r
-35462,0,0,0,26756,0,59271,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26984,57734,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,7882,0,0,0,19528,6469,0,0,1161,0,0,0,7688,20935,425,0,\r
-0,0,0,0,0,0,0,12519,0,12902,0,0,0,0,0,0,0,0,0,0,2411,0,11725,26086,0,0,20201,0,0\r
-,0,0,0,0,0,0,11045,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30471,0,0,0,0,0,0,0,0,0,0,0,\r
-21541,1141,21190,0,9188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,1093,0,0,0,0,0,0,0,0,\r
-4842,0,13672,0,0,12230,0,0,0,10532,0,0,8937,0,0,0,0,0,0,0,0,0,0,28996,0,0,11720,\r
-26982,0,46182,0,43911,31754,0,1160,3940,0,20772,0,0,0,0,0,24549,0,32582,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,31845,0,0,0,0,0,0,0,2310,11788,0,0,43047,0,0,0,18853,0\r
-,0,0,0,0,0,0,0,0,63622,0,0,7048,17318,0,0,0,21957,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,1039,6279,0,0,0,0,0,0,0,0,0,0,0,0,0,12197,0,0,0,0,0,0,0,0,0,\r
-46470,0,0,24,19719,0,0,0,0,0,0,0,0,0,39335,0,0,0,0,0,0,0,0,0,0,21353,3846,0,0,0,\r
-0,0,0,0,36679,0,0,0,0,0,0,0,0,0,0,0,11268,0,0,0,0,0,9382,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,29926,0,33606,0,4708,2828,0,0,29543,0,0,0,0,0,29893,0,0,0,0,0,0,0,0,3663,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10920,7111,0,0,0,0,0,0,0,0,0,0\r
-,9384,0,0,0,0,0,0,0,0,0,0,0,0,20388,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37094,0,0,0,\r
-27110,0,0,0,0,0,0,21865,0,27753,30214,0,0,0,0,0,57895,0,0,0,0,0,0,0,0,0,0,12648,\r
-5446,0,0,0,0,0,0,0,0,0,0,19784,17124,0,52007,0,0,0,0,0,0,0,0,758,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,24900,0,0,0,0,0,1476,0,65031,0,0,1205,46663,0,30023,11625,\r
-1094,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10058,0,0,0,0,0,0,28455,0,0,0,0,0,0,0,0,0,0,0,\r
-14788,0,0,0,0,16808,0,0,742,0,0,0,0,0,0,0,0,0,0,0,21636,0,0,0,0,0,0,0,0,0,0,0,0,\r
-15944,23207,0,0,0,0,247,0,0,0,0,24743,0,0,0,5252,0,0,0,0,0,0,0,0,29961,18660,\r
-21099,46791,0,7045,0,0,0,0,25707,0,0,17412,3828,0,0,0,0,0,0,0,0,0,0,0,5803,5637,\r
-0,38151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60103,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,853,0,0,0,0,0,0,30215,0,0,0,0,0,0,0,8741,0,0,0,0,0,27366,0,0,0,0,171,\r
-4070,0,0,0,0,0,0,0,0,24073,7366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2184,5189,0,\r
-20932,1545,4996,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7684,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6313,0,0,0,0,0,0,0,30826,0,0,0,0,0,0,\r
-0,0,0,0,27463,0,0,0,0,0,0,0,0,0,0,21640,63303,0,0,3275,31111,0,0,0,0,0,0,0,11556\r
-,0,14756,0,0,0,15108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23914,28966,0,0,0,4965,0,0,0,0,\r
-0,0,0,0,0,0,10216,5223,0,0,0,0,0,0,0,0,0,27142,0,0,1173,20198,0,0,0,0,0,56614,0,\r
-0,0,0,0,4612,0,0,0,0,0,0,0,0,0,0,11822,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17769,7910,\r
-0,0,31880,0,0,6055,0,0,0,0,0,0,0,0,0,0,8970,0,0,0,0,0,0,0,0,0,0,0,16840,23879,0,\r
-0,11051,0,0,0,32552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20842,13701,0,0,0,37191,7373,\r
-10471,17482,25348,0,0,0,38502,0,0,0,0,0,0,0,0,0,21509,6058,0,0,0,0,0,0,3173,0,0,\r
-0,9543,0,0,0,0,0,0,17768,12708,0,0,0,0,0,37030,0,0,0,0,0,0,0,0,0,0,12748,48743,0\r
-,11718,0,0,25194,0,0,0,9033,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5028,0,30118,0,0,0,0,0,\r
-42759,0,0,3720,0,0,0,0,0,0,25190,0,0,0,0,0,0,0,0,0,0,5450,5125,0,58086,0,0,0,0,0\r
-,27716,0,0,0,0,0,0,0,0,0,22052,0,0,0,0,26249,0,15947,3460,0,0,0,35814,0,0,0,7813\r
-,19500,32167,0,18597,0,0,0,0,0,28644,0,0,0,60743,0,0,0,0,0,29636,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,17220,15885,9414,9642,0,0,0,593,0,0,24228,0,0,0,0,0,40422,0,26244,0,\r
-23109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64902,0,0,0,0,3979,60007,0,0,0,28199\r
-,0,0,0,43142,0,0,0,0,0,0,0,29158,0,30532,0,0,0,0,13256,0,0,0,0,16549,0,0,0,0,0,\r
-26116,0,0,0,0,0,0,0,0,22825,0,0,0,0,0,0,0,1065,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,18985,4805,0,0,0,0,0,17702,0,0,0,0,0,0,0,0,0,0,3468,0,0,0,0,13447,0,0,0\r
-,0,0,0,0,0,0,0,0,56871,0,0,1776,15780,0,0,2603,0,10280,31366,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,11592,3591,0,2372,0,0,0,0,0,0,0,20004,0,0,0,0,0,0,12072,518,0,0,1960,\r
-8999,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7178,32999,0,0,0,0,0,0,1641,0,0,0,0,0,0,0,6764,\r
-9893,490,4005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25258,5541,0,14053,306,20743,0,0,\r
-9422,0,0,0,0,0,0,0,11977,260,0,35175,0,0,0,0,0,0,0,18405,0,0,0,16582,0,0,0,22470\r
-,0,0,0,0,0,0,2792,0,0,0,14026,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14858,3909,0,0,0\r
-,57671,0,0,0,0,0,0,15979,0,0,0,2794,15239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26884,\r
-9070,0,0,0,0,51846,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19499,37127,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,19205,10350,11910,0,0,0,0,15083,23108,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,169,0,0,0,0,0,0,0,0,0,0,0,15274,41735,0,56774,0,0,2825,0,14025,\r
-389,0,0,0,0,0,0,0,0,21482,31910,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20456,710,0,0,25032,\r
-21797,0,0,0,0,0,0,0,0,0,0,32427,21252,0,30150,0,43174,0,0,0,0,0,0,0,0,0,0,0,0,\r
-11403,0,0,1029,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6892,9252,0,63206,\r
-3496,14406,0,0,0,0,0,0,0,0,0,0,22568,0,0,21253,0,0,0,0,0,0,0,39623,0,0,10189,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,30729,59910,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3305,0,0,0,0,0,0,\r
-0,0,0,7660,24871,0,838,0,0,0,0,0,0,0,0,0,0,0,0,12013,13252,0,551,0,0,0,43207,0,\r
-30567,0,0,0,0,0,0,0,0,28394,30724,0,0,0,0,0,0,0,0,0,0,22665,22725,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,29414,0,0,0,0,16074,8966,245,1445,0,0,0,0,24872,0,0,0,0,\r
-13124,0,35527,0,0,0,0,0,0,13259,10917,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-25191,0,0,0,13956,0,0,0,0,0,0,0,54631,19625,12070,3083,0,0,0,0,14436,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,21766,0,15463,29322,0,0,0,0,0,0,29990,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,23653,0,0,0,0,0,0,0,0,2643,0,0,21223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,4114,0,0,0,0,0,0,0,0,34790,0,0,0,0,0,0,0,16103,0,0,0,0,0,0,297,3620,3338,\r
-10372,0,14727,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29924,22473,13895,\r
-15529,32455,30378,13540,0,28807,0,0,0,0,0,0,0,64582,18380,0,0,0,0,0,0,0,0,0,0,0,\r
-0,38598,0,0,0,0,0,0,0,0,1236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32710,0,0,0,0,4590,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64935,0,0,0,0,0,0,0,0,0,0,0,0,16744,0,0,\r
-0,0,0,0,20005,0,0,13608,1191,0,0,0,62183,0,0,0,0,0,24484,0,0,0,0,0,0,0,0,0,0,\r
-17643,0,0,0,0,0,0,0,0,0,0,0,0,5380,0,0,32328,0,0,63814,0,0,0,2919,0,0,0,0,17034,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,60295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,7690,486,0,0,0,39270,0,49094,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12555,0,0,0,0,0,0,0,0\r
-,0,0,0,0,20967,17993,12647,0,0,0,16036,32616,0,0,0,0,16294,8555,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35174,0,0,0,0,0,0,30346,0,0,0,0,0,0,0,\r
-14797,3652,0,0,8268,12934,0,54950,0,0,0,0,2632,33959,0,23175,0,0,0,0,0,36262,0,0\r
-,0,0,0,0,32684,26918,0,32676,0,0,0,0,0,0,0,0,0,0,15625,11943,1206,0,0,0,0,18052,\r
-0,0,0,0,0,16422,0,0,0,26404,0,0,28777,0,0,24902,0,0,408,45351,0,35719,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,3658,17446,0,165,0,0,0,0,0,0,0,6151,0,0,24424,0,0,0,0,0,0,0,\r
-24170,24293,0,0,0,0,0,0,0,0,0,11847,0,39591,0,0,0,0,0,0,9549,2788,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1010,0,0,0,0,0,0,26055,31724,0,24233,\r
-1828,0,0,0,0,0,0,0,0,0,17284,0,0,0,0,19464,0,0,0,0,0,0,0,0,32452,0,0,0,28871,0,0\r
-,0,0,17704,53383,0,0,0,0,0,0,0,0,0,17892,1938,0,0,0,0,0,16362,0,0,21605,0,0,5003\r
-,0,0,0,0,0,0,22693,0,22342,0,0,0,55846,0,0,0,0,0,0,0,0,0,22853,0,0,0,0,0,0,0,0,\r
-6600,263,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24836,0,0,0,0,0,0,0,0,0,\r
-40711,0,0,0,0,0,33894,0,0,0,0,0,0,13000,0,0,0,0,0,0,0,0,0,0,30308,0,0,0,0,0,0,\r
-5386,0,0,0,0,0,0,27844,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17740,0,0,0,0\r
-,25093,29064,0,0,0,0,0,0,0,12680,11462,0,0,0,0,0,0,0,0,84,7303,0,0,0,0,0,0,0,0,0\r
-,0,0,27044,457,0,22924,58246,19016,0,2606,45703,0,5157,0,25028,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,2065,0,0,0,0,0,31946,0,0,0,0,0,0,0,0,0,0,0,0,33382,0,\r
-47878,0,0,0,0,0,0,0,0,25004,0,0,0,0,0,0,0,26153,35654,0,58055,30668,0,0,0,0,\r
-25988,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,7560,20583,0,0,0,0,0,0,0,0,0,37510,0,0,0,0,0,0,0,0,0,42822,0,0,0,0,0,0,0,0,\r
-0,0,0,1733,0,0,0,8196,0,0,11241,0,30572,60326,0,15013,0,0,0,40646,0,23812,0,\r
-10022,0,0,0,0,0,0,0,0,12874,31015,0,0,0,0,0,0,1608,0,0,0,0,18308,0,0,0,0,27114,0\r
-,0,0,0,0,0,0,7944,1382,0,11813,0,0,0,0,0,0,0,0,0,0,0,0,0,24517,0,11621,0,0,0,0,0\r
-,0,0,0,0,0,0,21702,0,0,13100,8262,2644,7973,0,0,0,0,0,0,0,0,0,0,0,0,1033,12581,0\r
-,25221,0,0,0,40998,16301,62983,0,0,0,0,1263,9318,0,0,0,18854,0,0,1741,33895,0,0,\r
-0,0,0,0,26377,0,0,0,0,0,0,0,0,0,0,32165,0,51143,0,0,0,0,0,29412,0,0,0,0,0,0,0,0,\r
-1674,4230,0,0,0,0,0,10502,0,0,0,0,5545,0,0,0,0,0,2099,45158,0,0,0,0,0,0,0,0,0,0,\r
-14157,0,26955,0,0,0,0,0,0,0,0,0,17096,0,0,0,0,0,0,0,0,0,0,0,0,0,27050,6726,0,0,0\r
-,0,0,0,0,0,28554,0,0,7142,0,0,0,0,16936,0,0,0,25833,0,4399,6980,0,46214,0,0,0,0,\r
-0,10630,21164,0,0,0,0,0,0,0,2446,48551,0,0,0,0,0,0,0,0,0,0,0,13381,0,0,0,0,0,0,0\r
-,0,15400,12135,0,0,0,0,0,4774,586,0,0,0,0,0,0,0,0,23751,9736,4548,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25577,29607,6250,1637,0,0,0,0,\r
-22024,0,0,0,0,22308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37414,24044,0,0,0,14474,29735,\r
-0,7077,0,45990,0,0,0,0,30568,40039,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-6150,0,4228,0,0,0,0,0,27687,0,0,0,0,0,0,0,24548,21513,1350,0,0,0,33607,0,0,0,0,0\r
-,0,0,0,11784,1414,0,0,0,0,0,0,0,18244,940,0,0,0,0,0,0,7270,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,16709,0,0,0,0,0,0,0,48935,0,0,0,0,0,0,23660,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,53350,0,0,0,0,0,0,4236,16358,0,4422,6665,32644,0,0,744,18084,0,11014,0,0,0,0,0,\r
-29508,0,0,0,0,0,0,0,7686,0,0,13289,5478,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,12872,0,0,24134,1005,22916,0,31429,23400,0,0,0,0,0,0,0,28424,0,0,0,\r
-25706,27109,0,0,26345,0,0,0,0,0,0,25126,0,0,88,0,0,0,0,0,0,0,17032,0,0,21799,0,0\r
-,10060,0,12296,21892,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20777,14311,0,58182,\r
-32232,0,10282,0,2121,11527,0,0,0,12325,0,0,0,0,0,0,0,28804,2344,8133,0,0,0,0,\r
-21864,62695,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2771,0,0,\r
-23204,0,0,0,0,0,6278,0,0,0,0,0,26597,0,0,0,0,23144,0,0,0,0,0,31816,20070,0,0,0,0\r
-,0,0,0,0,0,0,24456,2118,0,0,0,0,6570,1156,0,0,0,0,0,0,0,30406,0,0,0,28388,3572,0\r
-,0,26599,12426,5286,0,0,0,0,0,4967,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24970,24167,0,0,0\r
-,0,28745,4678,0,0,0,0,0,0,0,1444,236,0,0,0,0,0,0,0,0,19428,0,0,0,0,0,0,2092,0,0,\r
-0,0,0,0,0,0,0,2827,0,0,0,0,0,19881,19204,0,11749,0,0,0,0,0,0,0,17958,0,17894,0,\r
-18726,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,21510,5033,0,0,0,0,22855,0,0,0,0,0,14598,0,29605,0,0,0,0,0,0,0,0,\r
-617,0,0,0,0,47142,0,0,0,0,0,0,0,0,0,0,3627,0,0,0,0,0,0,0,0,0,0,0,0,0,2225,14823,\r
-0,0,2637,6182,78,15078,0,0,0,0,20264,0,0,0,0,0,0,36743,4140,44551,17352,25703,0,\r
-0,0,0,0,0,0,0,0,0,0,0,14024,0,0,0,0,0,0,28004,0,0,0,0,0,7588,0,0,0,0,0,0,0,2087,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18028,0,0,0,300,14212,0,0,1386,40327,0,0,0,0\r
-,0,0,31082,0,0,22374,0,0,0,0,0,35718,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-26532,7756,0,0,18982,0,0,0,0,0,0,0,0,6440,1159,7180,0,0,0,0,0,0,45766,0,57798,0,\r
-16740,0,0,6802,60454,0,0,0,26470,0,0,0,0,0,65382,4362,7750,0,0,0,0,0,0,9096,4743\r
-,334,0,0,0,0,0,0,39974,0,0,0,25828,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3027,0,0,\r
-0,15816,0,0,0,0,0,0,0,0,48327,0,0,0,0,0,0,0,0,0,0,16168,41799,0,0,24458,8581,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12292,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,54503,0,0,0,0,5097,30852,18664,0,0,0,0,0,0,16484,0,0,27337,0,0,0,\r
-0,0,0,0,0,0,0,0,0,35942,0,0,0,0,0,0,0,4356,0,0,0,0,0,57030,0,0,1417,41191,0,0,0,\r
-0,0,23429,0,0,0,0,10024,21735,0,0,10126,0,0,0,0,19046,0,0,0,0,0,0,24105,4710,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4394,0,0,0,0,13253,0,56391,0,0,0,0,0,0,0,0,0,0,\r
-0,19174,0,0,0,0,0,0,0,0,0,55974,0,0,0,52070,0,15620,0,0,0,0,0,2660,0,0,0,0,21644\r
-,0,0,52455,0,0,0,0,0,0,0,0,0,8902,0,0,0,0,0,0,3116,0,464,34726,0,0,0,0,0,0,25003\r
-,12423,0,27172,1896,7335,0,0,0,0,0,35686,0,0,0,0,3472,0,0,0,0,22406,0,0,0,0,0,0,\r
-0,0,0,45254,0,0,0,0,0,0,0,0,0,0,0,0,0,21124,23594,33127,0,0,0,0,0,0,16684,22087,\r
-0,0,0,0,0,0,0,0,0,0,0,0,8714,0,0,0,0,0,0,0,0,0,0,55814,0,0,0,0,0,0,4109,23460,0,\r
-0,8874,0,0,0,0,0,0,0,0,0,147,0,0,0,0,0,0,0,0,0,0,0,0,0,29960,63398,1302,0,0,0,0,\r
-0,0,0,0,24806,0,0,0,0,0,0,0,0,0,9799,0,0,0,0,0,0,0,31333,0,0,0,0,0,19557,0,0,0,0\r
-,0,5701,0,0,0,63014,0,0,0,0,0,0,0,21254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12484,0,0,\r
-0,48326,0,0,0,0,0,0,0,0,0,0,0,15783,0,0,1202,0,0,0,0,23174,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,3086,49191,0,0,5387,15141,0,0,0,3365,0,0,0,0,20076,14021,\r
-0,0,0,0,0,0,0,0,0,0,376,40198,0,0,0,52039,0,24932,0,0,0,0,808,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,9860,0,0,0,0,0,23719,0,21476,0,0,0,0,20776,4807,0,0,3177,16678,0,0,110\r
-,10853,0,0,0,17382,0,0,0,0,0,0,0,0,0,43462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,7500,4966,0,0,0,0,0,0,0,52102,0,24516,0,0,0,0,0,0,0,0,0,0,0,0,0,26535,0,0\r
-,0,46247,0,0,0,15557,0,0,0,0,76,52327,0,0,0,0,17866,0,0,0,0,0,0,0,0,0,0,46758,0,\r
-0,0,0,0,19173,0,0,0,0,0,0,0,0,0,44038,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2985,0\r
-,0,0,0,0,0,14310,0,0,2125,45831,0,0,0,0,0,0,9838,0,13227,19492,0,0,0,29764,0,0,0\r
-,0,686,30053,0,0,0,0,0,30789,139,20837,0,0,0,0,502,18533,0,0,0,0,0,19111,0,0,0,0\r
-,0,31396,0,0,0,17444,0,0,0,0,0,0,0,49862,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25610,550,0\r
-,0,561,0,29034,0,0,0,3528,0,0,0,1715,14661,18,63463,0,0,0,0,0,0,0,0,0,0,14186,0,\r
-0,0,0,0,0,0,0,0,0,0,29578,59014,0,39430,0,0,0,0,2250,16612,0,31780,0,0,0,0,0,0,\r
-462,16967,0,29029,0,0,0,0,0,23462,0,0,0,0,0,0,0,0,1768,0,6025,16998,1804,0,0,\r
-54182,0,0,0,0,0,0,0,0,14124,0,6154,29702,0,0,0,0,0,7716,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,48807,0,8292,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16389,5933,0,\r
-14857,51303,0,0,0,0,0,0,0,0,0,0,0,35623,9097,23047,0,0,23112,0,0,0,0,0,438,0,0,0\r
-,0,0,0,0,151,9254,1390,0,0,0,0,0,0,54215,0,0,0,0,6187,0,0,0,0,13095,0,0,0,0,0,0,\r
-0,0,0,0,0,0,9866,0,0,59622,0,0,0,0,0,0,0,0,0,25286,0,0,23848,32069,0,0,0,0,0,0,0\r
-,0,0,9255,2187,15270,437,0,0,0,0,0,0,0,0,0,0,19493,0,0,0,0,0,0,0,0,0,0,0,11748,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16902,0,0,0,0,0,0,0,0,0,22212,1865,17543,0,\r
-0,0,0,0,0,21996,0,0,0,0,55975,0,0,0,0,0,0,0,0,32138,21156,0,0,0,0,0,0,14249,0,0,\r
-0,2388,0,0,0,0,6823,0,0,0,0,0,0,0,0,0,0,0,0,0,26694,0,0,6059,53511,0,0,0,0,0,0,0\r
-,49542,6159,0,0,0,0,0,0,0,0,0,0,0,0,0,1036,24036,0,2501,0,0,0,0,0,0,17419,51271,\r
-3377,15142,0,0,0,0,0,0,5007,62374,0,56935,0,0,0,0,0,0,0,0,0,0,0,24422,0,0,0,0,0,\r
-0,0,0,942,0,0,0,0,0,0,0,0,0,0,28263,0,0,0,0,0,0,0,15622,0,19749,0,0,1611,0,22219\r
-,48583,25129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17476,0,0,0,0,0,0,0,0,0,0,\r
-721,0,0,0,0,32518,0,0,0,18469,0,0,0,0,0,0,5896,29927,3657,23046,0,0,3214,0,0,0,0\r
-,0,0,0,0,0,112,0,0,0,0,0,3048,455,0,31012,0,0,0,0,0,0,0,23270,0,32677,0,0,0,0,0,\r
-38086,0,0,0,0,0,0,0,0,0,0,0,0,0,4900,0,0,0,0,0,0,0,0,0,25541,0,18788,0,0,22248,\r
-1351,0,61734,4524,30629,0,14887,242,29063,0,0,14408,4741,0,0,0,37318,0,0,0,0,0,0\r
-,0,0,0,0,0,0,8106,0,32107,0,0,0,0,0,0,0,0,0,0,0,1481,0,0,28132,0,25798,0,59783,0\r
-,0,0,0,0,59078,0,0,0,23366,0,0,0,0,0,0,0,30887,0,0,0,0,16200,0,0,0,335,0,0,0,714\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,30730,9478,0,0,0,0,0,0,0,0,0,0,0,18790,0,0,0,0,663,0,\r
-0,0,1034,31431,0,0,0,0,0,0,0,0,0,0,30120,0,0,0,0,13925,0,0,0,0,0,0,2280,13414,0,\r
-0,0,0,0,0,22028,23687,3017,11047,0,0,21738,18630,0,0,0,0,0,0,0,30246,0,0,0,0,0,0\r
-,0,0,0,0,0,0,17257,0,21896,63783,0,0,0,21094,0,18662,0,25700,0,22533,0,0,0,0,0,\r
-6341,5800,11111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15399,\r
-12970,6501,0,0,3179,26438,0,0,0,0,0,0,0,15750,0,13062,0,0,0,0,0,0,0,0,0,0,142,0,\r
-0,0,0,21284,11177,4391,0,0,0,0,19595,40647,0,0,0,0,0,11877,0,0,0,26439,0,0,0,0,\r
-695,49126,27467,11972,0,0,0,0,0,0,9961,0,0,0,31722,62982,0,0,0,0,15817,52710,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24614,0,0,0,0,0,20550,0,0,5034,3942,0,0,0,\r
-45927,0,0,0,0,0,0,0,0,0,0,2548,0,0,0,0,0,0,45606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,3405,12582,15563,54087,0,0,0,0,0,0,0,0,0,0,0,0,24202,5893,0,0,0,\r
-44230,0,0,0,5605,0,47782,0,32230,0,0,0,0,0,0,0,0,0,0,0,7014,0,0,0,0,16488,3175,0\r
-,27237,0,0,0,0,0,40902,0,0,0,0,0,0,0,32004,31434,0,24392,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,29130,58214,0,0,0,0,0,0,29002,0,0,0,0,0,0,0,0,0,0,55366,0,0,0,0,0,0,0\r
-,0,0,0,0,37926,0,0,0,0,0,0,0,0,1290,0,0,0,4713,0,0,0,0,0,0,0,0,0,0,0,0,0,20812,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1803,966,0,17700,0,0,654,19109,0,51655,0,0,0,0,0,\r
-10470,1584,0,0,0,0,0,0,0,2506,0,0,25159,4303,0,0,0,395,15879,0,0,0,0,0,0,0,0,0,0\r
-,1352,6535,0,19652,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4722,7909,0,0,0,0\r
-,30152,0,0,64742,0,0,0,0,0,0,2153,9125,0,0,279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,41894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,1328,17030,0,0,0,0,0,0,0,54151,0,0,0,0,1775,54535,0,0,0,0,31624,0,0,0,\r
-7150,0,0,0,0,0,0,0,1840,35943,0,0,0,0,0,56455,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-64486,0,0,0,51174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4134\r
-,0,0,0,0,0,0,0,0,0,0,0,17092,0,0,0,0,0,0,0,0,0,0,0,0,12,16134,19883,39943,10281,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44711,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-14125,2407,0,0,0,0,0,0,0,0,0,0,26921,0,0,0,0,0,22188,0,20810,10053,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28170,0,15208,0,0\r
-,32517,5736,19271,3562,10534,0,0,0,59655,0,0,0,0,27084,60422,0,0,24969,0,0,0,\r
-2636,0,0,0,0,26277,0,0,0,0,0,0,0,0,0,0,0,30596,3594,0,0,0,8362,14565,0,0,0,0,0,0\r
-,10793,12326,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5906,59686,0,0,23081,517,0,15556,0,0,0,\r
-8486,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19877\r
-,0,0,0,0,0,0,0,0,7497,0,0,26085,0,0,23784,63591,6568,6310,0,0,0,0,0,0,0,0,0,\r
-10054,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7018,14470,18858,0,5641,10660,0,0,0,0,0,0,0,\r
-35526,1515,0,0,0,0,0,0,0,0,0,0,0,27656,0,0,9606,0,39590,0,0,0,0,0,0,0,0,0,0,0,\r
-53926,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,4327,12649,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,20199,0,0,0,0,0,0,26730,0,0,0,19400,14695,0,31334,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19589,0,0,0,0,0,0,0,0,5064,11908,0,27333,0,\r
-0,0,0,0,0,0,47751,0,0,0,26662,0,0,0,0,0,0,0,55655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,6245,0,0,0,0,0,0,0,0,23368,63911,0,0,0,0,0,0,0,0,1974,0,0,0,0,0,0,0,\r
-8520,24037,0,0,0,0,0,0,0,26279,0,0,0,22886,0,0,0,27782,0,30694,0,0,0,0,0,0,0,0,0\r
-,0,0,33703,0,0,0,30405,0,34598,0,51047,0,0,0,0,1908,0,0,0,0,0,0,0,0,0,0,1511,\r
-21897,0,0,0,0,0,0,51398,0,24870,0,32647,0,0,0,35015,0,0,0,0,0,0,0,11204,0,0,0,0,\r
-0,0,7758,57991,0,0,0,30949,0,0,22,15140,9162,0,0,0,0,0,0,25540,20136,7108,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16427,10789,9805,0,0,0,0,0,0,0,0,0,4680,0,0,52679,\r
-0,0,0,0,0,14884,0,0,0,16804,0,0,0,0,0,0,9578,5287,0,0,0,0,0,0,0,34054,0,0,0,0,0,\r
-19076,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7627,55719,0,39463,14446,58374,0,0,0,0,23465,\r
-15845,0,0,0,0,0,38534,0,0,0,17893,10922,0,7176,678,0,0,0,0,0,0,0,0,3113,46279,0,\r
-0,0,0,0,0,0,23334,0,0,18088,23268,0,62342,0,0,0,16613,0,0,0,0,0,0,0,0,0,38182,0,\r
-0,0,0,0,0,25292,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10344,71,6446,0,0,1893,0,0,\r
-1106,0,28680,30756,0,41126,0,0,1492,0,15341,0,0,0,0,17575,0,21220,0,0,0,0,0,\r
-25060,2088,21828,0,0,0,0,0,358,0,0,0,0,0,16708,0,0,0,1668,0,0,0,0,0,12260,0,0,0,\r
-0,0,0,0,0,4078,0,0,0,0,0,12713,6215,0,0,20329,0,0,0,0,0,0,0,0,0,0,31204,0,0,0,0,\r
-0,0,0,0,0,0,3732,0,1646,0,0,27460,0,34406,17128,14341,0,0,0,0,0,19527,0,0,0,0,0,\r
-0,0,0,0,0,6120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8551,21546,10212,3020,\r
-2951,0,17638,0,0,6985,44999,2218,8197,0,0,30472,63366,0,26660,0,0,0,0,0,0,0,0,0,\r
-0,0,0,1265,0,0,0,0,0,0,0,2610,0,0,0,11278,20295,0,0,0,0,0,19780,0,0,0,0,0,0,2353\r
-,10852,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5421,24292,0,0,0,0,0,0,0,0,0,0,0,0,0,34407,0,\r
-0,0,0,0,0,15432,20774,0,0,0,0,0,0,0,0,12360,10757,0,0,0,33126,0,0,0,0,0,0,0,0,0,\r
-0,0,29573,0,2343,0,0,0,0,0,63079,0,0,0,0,0,0,0,0,0,43015,0,16038,0,0,0,0,0,0,0,0\r
-,1480,25573,0,0,0,0,0,0,0,8839,0,0,0,0,0,0,0,24645,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-5063,0,0,0,0,0,45830,0,0,0,0,0,0,0,0,0,0,823,0,0,64039,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,15300,0,0,0,0,0,0,2924,46759,6760,19268,0,0,0,0,0,0,0,0,0,34182,0,0,3977,18149,\r
-0,0,0,32199,0,0,0,0,0,0,0,0,0,23524,25994,0,0,10343,0,0,0,9733,0,0,0,0,0,0,0,0,0\r
-,4740,0,0,0,0,0,0,0,0,0,16741,0,0,4626,23367,0,0,31400,0,0,3557,0,0,4234,0,0,0,0\r
-,0,0,28486,0,0,0,0,0,14213,0,57191,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,65318,29832,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29989,0,31846,0,0,8170,0,0,4421,27626,30884,0\r
-,0,20204,0,0,0,0,44614,534,20868,0,0,0,0,0,0,0,0,0,0,0,0,0,28710,0,10277,0,0,0,0\r
-,0,29511,0,19813,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27020,0,0,0,0,0,0,53094\r
-,0,35207,0,0,0,37542,0,61766,8584,8037,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12488\r
-,22757,0,0,0,0,0,0,0,0,0,0,0,0,0,23814,0,0,0,0,0,0,0,0,0,19973,0,0,0,63943,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36006,0,0,0,19012,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,8580,0,0,0,0,0,0,0,18021,0,0,0,0,0,0,0,0,80,1254,0,0,0,42630,0,0,0,0,0,\r
-0,0,16262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2124,25479,0,0,0,0,16873,0,0,0,0,3142,\r
-0,0,18443,0,0,0,0,0,3917,0,8841,1190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,20645,0,0,0,0,0,0,0,0,0,0,0,9284,0,0,24394,41351,0,0,0,42087,0,62566,0,0,0,0,\r
-0,0,0,0,0,0,6728,4199,0,0,0,0,25515,0,1231,0,374,15623,0,29956,0,14118,0,0,0,0,0\r
-,19047,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31718,0,0,0,0,0,0,0,0,0,0,0,20900,0,16743,0\r
-,0,0,28902,0,0,0,0,0,0,0,0,0,0,0,0,2578,0,0,0,0,0,0,0,0,0,13838,0,0,10052,0,0,0,\r
-0,7432,43783,17097,0,0,0,0,0,873,0,0,0,398,0,0,0,0,0,0,0,0,0,8459,23559,0,53030,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35750,0,4071,0,0,0,38662,0,41414,0,0,0,0,11656,0,0\r
-,0,0,0,4011,42695,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25353,0,0,0,0,0,0,0,27177,22372,0,\r
-0,0,0,0,30980,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46278,3976,12711\r
-,0,0,0,0,0,0,0,0,0,0,0,20517,0,0,0,0,0,0,0,0,0,0,0,0,4072,11078,0,0,16553,2405,0\r
-,0,0,0,0,0,0,0,2670,0,0,0,0,0,0,32998,0,0,0,0,0,0,0,47046,0,30533,0,0,11050,9734\r
-,13129,0,0,0,0,23494,0,0,0,0,0,58310,0,0,0,57543,0,0,0,0,0,0,0,0,0,0,0,0,0,454,0\r
-,0,0,0,0,0,5163,59687,2220,0,0,0,0,0,0,29510,0,0,0,0,0,0,0,0,0,0,0,17316,0,20069\r
-,0,0,0,0,0,0,0,0,0,5319,0,0,0,0,0,0,0,0,0,27174,0,0,0,0,0,0,0,22949,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,19208,0,0,0,0,0,0,20933,0,0,6026,8742,0,0,0,17380,0,13127,2797,0\r
-,0,30116,0,0,5963,8004,0,57126,0,0,0,0,0,42854,14792,30759,0,24964,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,16933,0,0,0,0,0,0,15176,40839,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-788,30341,0,0,0,0,21036,24102,0,0,0,0,30123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-22597,31531,26789,0,59559,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9352,29863,0,0,0,0,0,0,0,0\r
-,0,24551,0,0,0,0,0,0,0,20516,0,0,0,39462,3665,0,28265,0,8778,64262,0,57414,9132,\r
-0,0,18276,0,0,0,0,0,0,0,0,0,0,26344,30725,524,19751,0,13796,0,0,0,0,0,0,0,0,0,0,\r
-18155,0,12841,0,74,24998,13579,1061,0,64199,0,0,8776,0,0,60231,0,25412,0,0,0,\r
-59143,0,0,0,0,0,0,14344,1510,0,0,0,38374,0,0,0,0,0,0,0,0,13353,0,0,0,0,0,0,0,0,0\r
-,0,9446,0,0,0,0,0,0,0,32613,0,0,0,0,0,0,0,0,0,0,0,0,0,19844,0,0,0,0,14859,0,0,0,\r
-0,6662,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14154,0,29770,0,0,0,0,0,\r
-16520,2182,0,0,0,0,0,36102,3340,0,0,0,0,0,0,0,0,25189,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,15720,0,0,0,0,0,0,22758,0,0,304,0,3243,14117,0,0,0,0,0,0,0,0,0,0,5130,\r
-12679,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21733,10441,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,36103,0,0,0,0,0,23590,0,57479,0,0,0,0,0,0,0,0,0,0,0,0,10824,\r
-18372,0,0,0,0,0,35078,15722,12967,0,0,0,0,0,34599,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-53639,0,38630,0,0,0,0,0,0,31017,11333,0,0,0,0,19144,0,9513,0,0,0,0,0,0,0,0,56711\r
-,24042,0,1197,0,0,58502,0,0,0,0,0,0,0,0,0,8230,6121,18628,0,0,0,0,0,0,25290,0,0,\r
-0,0,0,1514,0,0,0,0,0,0,0,14378,9798,32363,0,0,0,0,0,9577,0,0,0,0,0,0,26788,0,0,0\r
-,0,0,0,330,10533,0,0,0,0,0,42246,0,0,0,0,0,0,5074,21028,0,38119,0,0,0,0,0,0,248,\r
-0,31176,62054,0,53287,0,0,0,0,271,0,0,0,0,0,0,0,0,0,0,0,0,0,9224,2117,0,0,0,0,\r
-15818,5607,0,52582,0,0,0,0,0,0,0,0,18248,24005,23018,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-427,0,0,39910,0,0,7080,11399,0,0,0,0,0,0,0,0,0,0,22220,57894,0,0,0,0,0,0,0,13156\r
-,0,1413,1007,0,0,0,0,21415,0,21543,0,0,0,0,0,0,0,0,0,41702,22538,9573,0,0,0,8806\r
-,0,0,6920,56359,0,0,0,0,0,0,0,0,0,0,0,42215,0,0,13708,0,0,0,0,0,0,0,0,0,0,16453,\r
-0,0,0,0,0,0,1582,1764,3282,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11653,0,0,0,0,12139,0,\r
-29482,31076,1673,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40262,0,0,0,33862,0\r
-,0,0,0,0,20996,0,0,0,0,0,4615,0,0,0,0,0,0,0,0,0,0,0,43943,333,19367,0,0,0,0,0,0,\r
-0,26821,0,32389,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4936,11687,0,0,0,0,0,0,0,0,0,10885,0\r
-,0,0,0,0,25926,0,0,0,0,0,0,15851,0,0,0,0,0,0,0,0,0,8360,0,17130,7942,0,11460,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,18150,14248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-22310,0,0,0,42758,0,0,0,0,0,0,0,0,29354,5574,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,31109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11236,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,9156,0,0,1801,14023,0,0,0,0,0,62406,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-23620,0,0,0,0,0,0,0,0,0,0,31018,65510,0,0,0,0,0,0,0,26182,0,0,0,0,0,0,0,27717,0,\r
-0,0,0,0,0,0,46950,0,0,0,0,0,0,0,0,0,0,0,0,0,31108,0,11366,0,0,0,3717,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8552,6054,3339,0,0,0,0,51622,0,\r
-0,0,0,0,0,0,3718,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28358,0,2756,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,1462,0,0,27622,0,0,0,0,0,0,0,62502,14410,56743,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,12206,0,0,0,0,0,0,0,0,0,0,0,0,36550,0,38054,0,0,0,\r
-21221,0,0,0,0,0,0,0,27077,0,0,16906,0,12587,12101,0,0,0,0,0,0,10414,28775,21769,\r
-60167,0,56646,0,0,0,0,0,20740,0,0,0,0,0,0,5931,5351,0,65478,0,0,0,0,0,0,7977,\r
-52647,0,4868,0,0,0,55463,0,0,0,0,0,32197,0,0,0,0,0,13445,0,0,0,26631,0,0,0,0,0,\r
-11237,0,0,0,0,209,1285,0,0,1928,0,0,0,0,43334,23849,23172,0,0,0,0,0,0,0,0,24712,\r
-62439,8811,3463,20457,0,0,0,0,0,0,0,0,0,16008,56263,0,0,0,0,0,0,0,0,0,0,0,60358,\r
-22761,6565,0,0,30888,27686,0,0,0,17093,0,0,0,0,22121,0,0,0,7593,14182,0,28103,0,\r
-0,0,0,0,45126,0,0,0,0,0,0,0,0,0,0,0,0,0,31844,0,0,0,0,0,0,0,0,0,0,0,0,0,18500,0,\r
-0,0,0,28202,0,0,0,0,0,0,0,0,26308,0,29541,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-29572,0,0,0,21285,0,0,0,0,0,60839,0,0,0,0,0,30407,15949,2981,0,0,0,46439,0,0,0,0\r
-,0,23911,26505,25222,12811,5895,0,6343,0,0,0,0,0,0,0,0,0,0,0,31815,0,0,0,0,0,0,0\r
-,0,19688,10245,0,0,0,31301,26985,28964,0,0,0,0,0,0,0,0,27208,31172,0,0,0,0,216,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16292,0,0,0,0,0,8743,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,6438,0,0,0,33319,0,0,0,33286,0,0,0,0,0,0,0,0,0,22181,7499,24774,0,\r
-10756,0,44775,724,0,25768,25669,24873,5349,25257,0,0,54566,0,0,0,0,0,0,0,0,0,0,0\r
-,327,439,357,0,0,6536,8452,0,0,1802,0,0,61350,0,15045,0,0,0,0,0,0,0,0,0,0,0,\r
-38343,0,0,0,0,0,0,0,0,0,0,32491,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-22885,0,0,32073,0,0,0,9546,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27748,0,0,23176,0,0,0\r
-,0,0,0,0,0,0,0,0,0,24583,0,0,0,0,0,34118,0,0,0,0,2158,0,5586,30340,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,24452,0,0,0,0,2409,4390,0,24196,0,0,0,0,0,0,32264,26948,20587,0,0,0\r
-,2155,0,0,0,0,0,0,0,0,0,0,0,4328,26276,0,0,0,0,0,0,0,0,23564,0,12458,11367,0,0,\r
-25162,0,0,0,0,0,0,65414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32966,0,0,0,\r
-34662,0,0,0,0,0,39238,0,0,0,0,11400,10214,266,12452,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,15173,0,0,0,13668,0,13222,0,23364,0,0,0,0,0,11941,0,0,0,0,0,0,0,0,0,\r
-25575,0,0,0,57383,0,0,0,10308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,2865,9287,75,0,0,0,0,0,0,0,0,0,0,21508,22380,59526,0,0,0,23589,0,0,0,51590\r
-,0,0,0,0,0,0,0,0,0,0,0,4645,3980,28295,0,0,0,0,0,12388,0,0,0,0,0,0,0,0,0,0,0,\r
-21734,0,17607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41767,0,0,0,0,0,0,0,18436,0,0,0,0,0,\r
-0,0,21958,0,19430,0,0,1204,0,0,0,0,0,0,0,0,0,3240,55239,0,0,0,0,0,30660,0,0,0,\r
-28901,0,0,0,0,4716,0,0,0,0,0,0,0,0,0,0,0,11754,0,0,0,0,22086,0,22564,8749,0,0,\r
-28391,0,0,0,0,0,0,0,0,0,0,0,2886,0,0,0,0,0,0,0,29062,0,0,0,0,0,0,0,40358,0,0,\r
-15916,39526,0,13735,0,0,0,0,28938,0,407,4006,0,0,0,26916,0,0,0,0,0,27526,30280,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24586,0,24649,5126,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8684,0,0,0,0,0,0,0,23019,0,22377,18599,0\r
-,0,0,0,0,0,0,0,0,0,27593,9735,0,20196,0,0,0,0,28168,48423,0,0,0,0,0,31399,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,13892,0,0,0,0,0,17606,0,0,15242,29767,26378,17701,0,0,\r
-14472,0,4840,0,0,0,0,0,0,24708,0,9349,4330,0,0,0,0,0,0,0,16137,0,0,34854,0,0,0,0\r
-,0,0,0,0,0,0,0,25063,0,0,0,0,0,0,6603,12583,0,0,0,0,0,0,0,0,7433,29188,0,0,0,0,0\r
-,31270,0,0,22920,3143,0,0,0,0,0,23461,0,0,0,0,0,0,0,0,618,0,0,0,0,21381,0,11524,\r
-0,0,0,0,0,0,21004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,23239,0,0,0,0,0,0,0,0,0,0,0,\r
-0,2313,0,0,40614,0,0,14825,0,0,0,0,0,0,46535,0,41190,7853,0,31656,0,0,0,0,0,0,0,\r
-0,0,3433,5255,0,0,0,0,0,0,0,33958,0,0,0,0,72,15493,0,0,0,0,0,0,0,36070,0,0,0,0,0\r
-,0,0,14724,0,0,0,0,0,29828,0,0,0,0,0,0,0,18822,20008,0,0,0,0,2438,2952,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,3342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24420,0,19908,0,0,0,8101,0,\r
-17479,0,0,3530,0,8202,29319,0,0,1132,6789,0,0,23881,0,0,0,4810,0,0,46918,0,0,0,\r
-41574,0,0,0,0,0,0,0,0,0,48582,0,0,0,0,0,0,0,0,0,0,0,0,0,39334,0,0,0,26117,0,0,0,\r
-0,0,0,5100,0,0,0,0,0,23496,27813,4045,54918,0,0,0,0,0,0,6473,7428,0,0,0,0,6792,0\r
-,0,0,0,0,3560,32103,0,0,0,0,0,0,0,0,0,0,0,54790,0,0,6926,0,0,0,0,16518,0,0,0,0,0\r
-,20806,0,0,0,0,1841,3174,0,0,0,0,9612,18374,0,0,0,0,32744,0,0,9671,0,59879,0,\r
-23300,8073,0,0,14758,0,0,0,10342,0,0,0,0,0,0,24808,14759,0,0,0,0,0,0,5515,0,0,\r
-14852,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2354,23271,0,32740,0,0,0,0,0,0,0,0\r
-,0,0,18472,0,0,0,0,0,0,0,0,33190,0,0,0,0,0,0,0,0,8972,21669,0,0,0,0,0,0,0,0,0,0,\r
-0,25574,0,0,0,0,5096,0,14283,55367,0,0,0,0,0,0,0,0,0,12644,0,0,0,0,4651,0,0,0,0,\r
-0,0,0,661,0,0,13638,19466,0,0,0,0,0,31273,0,8010,0,0,0,0,0,3211,0,0,0,0,63430,0,\r
-0,0,0,0,15237,0,0,0,0,0,0,19018,2437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14312,0\r
-,0,0,0,16836,0,0,471,35975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,6023,0,0,0,0,0,0,0,0,11593,9639,0,0,0,55783,0,5700,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27908,0,26598,0,0,6667,6470,0,0,0,0,0,0,0,\r
-62534,0,0,0,0,16522,27911,0,0,10025,7172,0,0,779,0,360,17477,0,0,0,61991,7752,\r
-7717,1494,0,0,0,26569,40742,0,0,0,0,0,0,0,26406,10474,32196,0,0,0,0,0,50567,\r
-16521,11716,0,0,0,0,0,55558,0,0,0,0,0,0,0,0,0,0,0,61926,0,26436,0,0,0,0,4459,\r
-10598,0,0,0,0,0,0,0,0,0,0,0,9223,0,29318,0,0,0,0,0,60423,0,0,0,0,0,0,0,47078,0,\r
-50246,0,12612,0,0,0,0,0,0,0,61799,0,55015,0,21060,7309,0,0,0,0,0,11976,0,0,0,0,\r
-23527,0,0,0,0,0,0,10347,15942,0,34023,0,0,0,0,4969,0,0,0,0,0,0,0,0,28997,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36454,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-3466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19716,\r
-28872,0,0,0,0,0,22152,0,0,0,0,0,0,26342,0,0,0,9764,0,0,0,0,0,0,0,21798,0,0,0,0,\r
-13,6853,32136,0,0,0,0,0,0,0,750,0,0,54502,0,0,0,0,0,0,0,0,0,46183,0,0,625,22854,\r
-0,0,0,0,2061,23588,0,0,11049,56262,0,0,18538,1509,0,0,17258,4453,0,0,0,0,12429,0\r
-,0,0,0,8102,0,0,0,0,0,0,8074,0,23852,0,0,0,0,0,0,0,0,0,0,0,16136,3428,0,27876,0,\r
-0,0,7332,0,0,0,0,0,28900,0,0,2284,0,0,17573,201,1508,0,0,0,0,0,0,0,0,0,31365,\r
-27688,22565,0,0,0,5159,0,0,0,0,4584,42599,0,0,0,44422,1068,23173,0,0,0,613,0,0,0\r
-,12645,0,0,0,0,0,27076,6732,0,0,0,3913,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,22244,29992,15911,0,0,0,0,0,22982,0,0,0,0,0,0,0,50598,0,0\r
-,0,0,0,0,5161,1574,0,0,0,0,0,0,0,0,0,19108,0,0,0,35014,0,0,0,25956,29067,0,0,0,0\r
-,0,0,0,0,0,0,47079,0,0,0,0,0,0,0,0,0,0,1356,61927,0,0,0,64455,2122,64231,0,0,\r
-18763,0,0,0,0,0,0,0,0,0,907,34471,0,0,0,39078,0,0,1995,0,0,0,0,0,0,0,0,0,0,56518\r
-,0,0,0,0,0,0,0,0,0,0,0,0,822,0,15978,44423,0,0,3112,325,0,0,0,0,0,15397,0,0,0,0,\r
-0,0,0,0,0,0,1193,4294,4968,15559,0,46150,0,0,0,0,0,18917,0,0,0,0,0,0,9928,37543,\r
-0,0,0,0,13097,36999,0,0,0,15430,0,0,8424,29639,0,0,0,0,0,0,0,0,0,0,0,0,0,25734,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,40487,0,13284,0,11141,0,0,0,32388,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5298,57702,0,0,0,0,0,0,0,13060,0,0,0,0,0,0,\r
-8233,42278,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36422,0,0,0,7972,0,0,0,\r
-18437,0,0,0,0,7406,0,0,0,9225,0,0,0,0,0,0,0,0,0,13865,47591,18220,53703,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2796,0,0,0,0,0,24940,17223,0,0,0\r
-,13221,0,0,0,0,0,0,0,0,0,0,15848,0,0,0,0,0,6122,1735,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,16968,18151,0,0,0,0,0,47494,0,0,0,0,0,0,26089,19494,0,0,0,0,0,15494,0,0\r
-,0,0,0,0,0,0,0,0,28809,0,0,0,0,42727,0,55174,0,0,0,0,0,0,0,0,0,0,0,20485,0,0,0,0\r
-,0,0,0,0,0,0,0,58598,0,0,0,0,0,0,0,0,0,0,0,0,0,15172,0,0,0,0,0,0,0,0,0,35302,0,\r
-48135,20972,33094,0,0,0,0,0,9765,0,0,0,0,0,0,0,0,0,39559,0,0,13736,6950,0,0,0,0,\r
-23658,8903,0,0,0,0,0,0,0,22662,0,0,0,0,0,58886,7468,0,0,0,0,0,0,0,0,64550,0,0,0,\r
-0,0,47622,0,0,0,50886,0,0,0,0,0,57606,912,0,0,0,0,0,0,0,0,0,1449,0,1169,0,718,\r
-46151,12104,0,0,0,0,0,0,48230,0,0,0,0,0,0,0,0,0,0,1259,0,0,33734,23208,62567,0,\r
-65158,0,0,0,0,0,0,0,0,0,0,28684,59878,0,0,0,0,0,0,0,0,0,0,25769,0,0,0,0,65479,0,\r
-0,0,0,555,22789,0,19748,1769,10246,8680,0,0,0,0,0,0,0,0,0,14250,0,5899,3303,0,0,\r
-0,0,0,0,0,0,21097,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21638,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,10795,0,0,0,16204,0,0,0,0,0,26986,2469,0,14660,0,0,0,0,0,45447,\r
-12234,3494,4555,10566,0,0,0,0,0,0,0,0,0,0,0,0,2801,0,0,0,15755,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,39654,0,0,0,0,0,0,6763,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-33574,0,10279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63527,0,0,3912,0,0,7492,0,0,0,35142,\r
-0,0,0,0,0,0,17576,8103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16713,4198,0,0,4782,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,16228,0,0,0,0,25961,20166,0,0,0,10980,0,0,0,0,0,14340,\r
-18922,14567,0,44199,0,0,0,0,0,0,0,18406,0,0,0,0,0,37606,0,0,0,0,0,0,0,0,0,20902,\r
-0,0,0,56358,0,38342,0,0,0,0,9514,36071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21700,0,0,\r
-5266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1134,0,1453,0,0,0,0,0,3882,0,0,0,\r
-0,0,0,0,0,4004,0,0,0,51910,0,0,0,0,0,23076,4648,0,0,0,31051,25351,0,0,0,22884,0,\r
-0,0,0,0,63975,0,0,2376,16997,0,0,2096,0,0,0,3373,7046,0,0,0,0,0,0,0,30726,0,0,0,\r
-0,20,0,13707,614,0,0,12840,3079,0,0,0,0,0,51046,3729,0,32680,0,0,0,0,0,24008,\r
-62759,0,0,4745,0,0,0,0,0,0,0,0,0,0,0,0,0,2414,0,0,44262,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,24937,0,0,0,0,0,0,0,0,19140,0,13575,0,0,0,0,0,0,0,39110,0,0,0,28036,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,4261,0,0,0,0,5992,0,264,0,0,0,0,0,0,0,13739,0,21928,0,\r
-0,0,0,0,0,0,0,0,0,0,4232,15110,0,0,0,0,0,0,0,0,0,30022,0,0,27977,0,0,0,0,0,24776\r
-,0,0,0,0,0,2962,0,0,0,0,0,0,26564,22441,0,0,0,0,0,13640,11205,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,19305,1894,0,0,0,0,0,0,0,0,0,0,9389,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14119,\r
-5224,135,0,0,0,0,0,0,0,0,0,25796,0,0,0,0,0,0,7470,0,0,0,0,63815,0,55654,0,0,\r
-12584,0,1524,33223,0,0,0,9895,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11624,\r
-0,0,0,5614,0,0,0,0,0,0,0,21320,0,0,53607,0,51206,0,0,0,25863,0,0,0,0,0,0,0,0,0,0\r
-,0,8964,1740,0,0,0,0,0,0,0,0,13476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7975,0,\r
-0,3306,8134,0,8389,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25766,0,0,0,0,0,0,0,0,0,\r
-52166,0,0,0,0,0,0,0,0,0,0,0,0,0,21477,31112,31652,0,0,0,0,0,0,0,28452,0,0,0,\r
-44231,0,0,0,0,0,0,0,24805,0,0,0,0,0,0,0,0,0,0,12428,6471,0,0,0,0,525,17926,0,0,0\r
-,26919,0,0,18120,0,0,0,30024,0,0,0,0,0,0,0,0,0,0,29189,0,0,0,43559,0,0,0,0,0,0,\r
-19787,7557,0,59334,0,0,10184,6085,0,44039,0,0,0,0,0,0,0,11175,0,0,0,0,30440,\r
-63110,0,0,0,0,0,0,11017,0,0,0,0,0,0,0,0,27204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,29126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,622,0,5226,2727,0,15588,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4650,0,2675,0,0,32420,0,0,0,61511,0,0,\r
-5419,17829,2123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38183,2640,0,11274,14533,1842,0,0,\r
-42663,12681,3430,0,11845,0,0,0,0,0,0,0,0,0,6533,0,0,0,0,0,54598,0,0,0,0,0,0,0,0,\r
-0,0,0,0,12616,38535,0,0,0,0,0,32229,0,0,0,54279,0,48614,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,31401,0,0,0,0,34310,0,0,0,22788,0,52134,0,0,0,0,0,0,0,23302,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,40678,0,0,0,51463,535,0,0,0,0,15525,0,0,0,0,0,0,4904,869,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63718,0,0,0,0,0,0,0,0,1678,0,692,0,0,0,\r
-0,0,0,0,0,0,26216,0,0,0,0,0,29355,0,0,0,0,25095,0,0,0,0,4335,0,0,0,0,0,14538,0,0\r
-,0,0,0,0,0,0,0,27273,55014,0,0,0,0,0,27271,0,0,0,0,0,30468,0,0,0,0,18186,0,0,0,0\r
-,0,14345,0,0,0,2152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58438,21034,0,23339,21318,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,21412,0,0,0,0,0,0,0,12869,0,0,4875,0,0,0,0,29191,0,0,0,0\r
-,0,0,1640,10247,0,14244,0,0,0,0,9867,0,0,0,0,0,12363,0,0,7653,0,0,4168,2663,0,\r
-4580,0,11143,0,0,0,0,0,0,0,30662,0,0,0,0,0,6724,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,13764,0,0,0,0,0,0,0,0,0,0,0,0,234,6821,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,25639,0,0,0,0,0,0,0,0,0,29958,0,3461,0,0,0,0,0,0,0,0,0,28324,\r
-18795,7013,12746,11655,0,37287,0,0,10953,7718,9705,0,0,0,0,0,0,0,0,0,0,46534,0,0\r
-,0,0,0,0,0,0,0,0,8137,17988,0,25156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41415,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15784,6918,0,0,0,0,7019,10919,0,0,0,\r
-0,0,0,0,0,0,0,4171,55495,4940,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22440,19333,0,0,\r
-28136,0,6249,21317,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53414,0,0,0,57318,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39303,0,0,0,0,0,19940,0,0,0,0,0,0,0,25543,0,0,0\r
-,0,0,0,0,0,0,0,0,0,2698,3911,0,0,0,26790,0,0,0,0,0,0,32424,0,0,18470,0,0,0,14726\r
-,29834,0,0,0,0,0,0,0,0,0,0,0,1000,4197,0,0,0,19366,0,0,0,39878,0,0,0,0,2185,8901\r
-,5288,9829,25000,0,0,0,0,0,0,1062,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35622,0,\r
-0,23048,62503,6506,0,0,0,0,0,0,0,13609,10438,0,0,0,0,0,0,0,0,0,0,7723,42119,0,0,\r
-0,0,0,13317,0,0,0,41606,0,27111,0,0,21194,11461,0,0,0,0,26856,58342,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,20940,48710,0,0,0,0,0,0,5227,0,0,0,0,0,10061,31300,0,0,0,19236,0\r
-,0,0,0,0,30277,13896,0,0,0,12876,13159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,428,\r
-46951,13134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,21668,0,0,0,0,0,0,0,0,0,0,0,0,2249,0,0,0,0,44967,0,0,0,0\r
-,0,0,3465,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24868,0,0,0,0,0,23909,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,2190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16164,0,\r
-10437,0,0,5263,20102,20938,0,0,0,1192,1030,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,21385,4870,0,0,0,0,0,0,0,0,0,0,0,18596,0,0,0,0,1422,4038,2858,0,0,0,0,0,0,0,0\r
-,48998,0,0,0,0,0,0,0,0,6508,37350,0,0,0,0,0,0,0,0,17001,39431,0,0,0,0,0,30182,0,\r
-21445,7403,28164,0,51750,0,0,0,62631,0,0,0,0,0,0,0,31206,0,0,0,0,0,0,0,0,0,0,0,\r
-7751,0,0,0,0,0,0,0,0,0,13477,0,0,456,26693,0,0,0,0,0,0,0,0,0,0,0,0,14890,0,0,0,0\r
-,0,26697,22022,13225,27364,0,0,0,18884,0,0,0,0,0,0,0,0,3659,0,0,0,0,0,0,0,0,0,0,\r
-0,1448,5413,0,0,0,0,0,0,0,0,0,0,0,6340,0,0,18091,18725,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,22118,0,0,0,18981,0,0,0,0,0,0,0,0,0,29223,3724,0,0,0,0,43526,0,0,0,25668,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21545,9862,0,22692,32201,60646,0,7300,0,0,\r
-0,58887,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19460,0,0,0,0,0,0,0,0,0,50342,0,\r
-65255,4360,17286,0,0,0,0,0,0,0,28708,0,0,30025,60102,0,0,0,0,0,0,0,0,0,47014,0,\r
-31973,0,9572,0,0,0,0,0,0,0,18501,0,0,0,0,0,14597,0,0,0,53735,5228,22183,0,0,0,0,\r
-0,0,1554,24164,0,0,0,0,0,0,0,0,0,0,0,0,10827,0,0,0,0,34918,0,0,0,0,22252,0,0,\r
-46855,0,0,0,0,0,31207,0,0,10733,0,0,63334,0,0,0,0,8616,50119,20169,12678,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58087,20298,5,0,0,30920,0,0,0,0,0,0,0,296,13190,0\r
-,30663,0,0,18536,12228,0,6788,0,0,0,0,30890,21796,0,0,526,0,0,0,0,0,0,0,0,0,0,0,\r
-0,20965,0,0,0,0,2161,0,0,0,0,0,0,24038,0,0,0,0,13544,7398,0,0,32522,9605,0,0,0,0\r
-,3208,7590,0,0,0,43846,0,0,0,38663,0,0,0,0,0,39014,4142,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,6373,0,0,13676,0,0,0,0,30374,21288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22791,0,0,0,0,0,37958,0,0,0,0,0,0,0,0,0,0,9452,\r
-9990,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4841,0,0,0,0,18820,152,0,0,0,0,0,13260,3334,0,0\r
-,24234,8422,0,17957,0,0,0,10244,0,0,0,0,0,0,0,0,0,0,0,7204,0,0,0,0,1201,26151,0,\r
-31173,0,0,0,0,0,0,0,0,0,0,0,0,0,64838,4203,7525,521,0,18888,37031,0,0,0,0,0,0,0,\r
-0,7082,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4490,12487,0,0,0,0,0,0,0,36615,0,0,\r
-0,14854,0,0,0,0,0,0,0,0,0,0,0,0,6539,13029,9704,38983,0,0,0,0,168,10405,0,0,0,0,\r
-394,25607,0,57063,0,0,0,0,0,0,0,0,0,0,16141,19878,0,0,0,0,0,0,0,0,0,29446,0,\r
-12036,0,0,0,0,0,6982,18572,0,24584,14535,0,0,0,0,0,0,0,0,0,0,16,0,21642,0,0,0,0,\r
-0,0,5254,0,0,0,0,0,0,0,0,1622,0,0,0,0,0,0,0,0,0,0,0,0,0,3853,9126,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,7241,10982,0,0,0,0,0,0,0,0,0,0,0,0,0,0,950,0,0,57990,0,0,277,0\r
-,0,0,694,36007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42470,0,0,0,0,18409,\r
-51142,0,0,0,0,0,0,0,0,0,28646,0,0,0,30693,0,0,0,0,0,56295,5544,0,0,0,0,8518,8366\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45670,0,0,\r
-9608,33062,0,0,0,0,0,0,0,0,0,0,0,18694,0,0,0,0,1672,23493,0,0,6955,7655,0,36134,\r
-0,0,0,0,0,0,0,0,23432,647,0,0,0,0,0,0,0,0,0,0,0,13382,0,0,0,19621,0,0,0,0,0,0,0,\r
-0,0,20228,0,0,2728,31495,0,0,0,0,29096,22213,235,35495,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,5348,0,0,0,0,8968,1989,0,0,1066,0,0,11492,5965,31367,0,0,0,0,0,0,0,0,0,0,0,\r
-18727,0,0,0,6757,0,0,10765,4646,0,36166,0,27943,0,0,26888,8420,0,0,0,0,0,0,0,0,0\r
-,29316,0,0,0,0,0,0,0,0,0,0,4975,0,0,0,14762,3111,0,0,0,0,0,43399,0,0,0,0,0,0,0,\r
-18980,0,0,0,0,0,44550,0,0,0,0,4051,0,0,0,0,37734,0,0,0,0,0,5188,0,0,0,0,0,24486,\r
-0,5989,0,41159,0,0,0,0,0,0,0,0,0,20326,0,0,747,6884,0,0,0,41798,0,0,3117,22919,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21032,0,0,0,0,0,0,0,0,9574,0,0,0,0,0,0,\r
-4302,0,0,0,0,0,0,0,0,0,0,0,21068,34630,0,0,0,0,0,64071,0,0,0,0,0,0,26667,7943,0,\r
-0,0,0,0,52934,0,0,17002,0,0,0,0,0,0,20294,0,0,0,0,0,0,0,0,0,27301,18347,7974,0,0\r
-,0,0,0,0,0,0,16874,0,0,0,0,45414,0,0,0,0,0,0,648,1575,0,0,0,31749,0,0,0,23301,0,\r
-0,0,0,0,0,0,0,0,0,0,0,15912,50535,0,0,0,0,1993,8582,0,0,0,0,0,0,0,38438,0,0,0,0,\r
-0,0,0,0,0,0,0,0,15850,6183,0,0,0,0,3402,0,0,27494,0,0,749,0,0,0,0,0,0,0,26025,\r
-29606,0,0,7144,19622,30504,0,0,0,0,0,0,0,0,21316,0,0,0,0,0,0,0,0,0,21444,0,0,\r
-1289,6919,0,0,0,0,0,0,8299,0,0,0,14090,35655,0,0,0,0,0,0,0,0,2377,15206,0,0,6028\r
-,4452,0,25508,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50310,0,0,0,0,1269,0,0,0,0,0,0,0,0,0\r
-,0,0,0,51014,0,0,0,0,0,0,0,9286,0,7429,0,0,28393,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,16680,452,0,0,0,0,0,23718,0,0,0,31750,0,0,0,0,0,0,0,0,3568,0,0,13604,0,0,\r
-0,0,0,25255,0,0,0,50982,0,56582,0,0,7467,0,0,0,0,30181,0,0,0,0,0,0,0,30564,7208,\r
-7845,0,0,0,0,0,0,7726,0,0,0,0,62182,0,0,0,41094,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,22695,0,0,0,0,0,0,17736,0,0,0,0,0,0,0,0,50054,0,0,0,14180,0,0,0,0,\r
-0,0,8974,0,0,0,0,0,0,0,0,23332,0,0,0,11140,0,0,0,0,0,0,0,24262,27145,9540,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,26537,45510,6062,3879,0,0,20233,25991,0,0,17803,0,0,0,0,0,\r
-13962,5508,16971,27013,7437,31494,0,0,0,0,0,0,0,0,0,0,4714,0,0,0,0,0,0,0,0,17189\r
-,0,0,0,0,0,27492,0,0,26953,0,0,0,0,0,0,0,0,0,0,41319,0,0,0,0,0,0,0,0,0,0,0,47430\r
-,19596,12549,0,0,0,8390,1006,0,0,0,0,0,0,0,0,0,0,24100,17577,4,0,0,0,0,0,22277,0\r
-,0,0,0,0,0,0,26692,0,0,0,0,0,24676,0,0,0,0,0,0,0,0,0,0,0,0,0,29477,0,0,0,21573,0\r
-,0,0,0,0,0,0,0,0,0,9864,14214,0,0,0,0,0,0,25771,5766,0,0,8909,8679,0,0,6861,\r
-16166,0,38887,0,0,0,0,0,0,12392,8678,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-52646,1354,2950,0,14692,0,0,10572,49830,0,0,0,0,0,0,0,0,3626,582,0,0,0,55750,0,0\r
-,0,30885,0,0,0,0,0,0,0,0,0,0,0,0,0,5830,0,0,2090,0,0,0,0,0,0,0,0,0,0,0,0,31142,0\r
-,0,0,0,0,10503,0,0,18825,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-57158,0,0,30792,63526,0,0,0,9863,16267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,18824,0,0,0,0,0,0,19653,25388,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9292,0,0,0,0,0,0,0,0,0,0,36358,0,0,0,0,0,0,0,0,\r
-0,0,25480,23015,0,0,10440,6725,0,0,0,22436,24265,15109,0,0,0,62311,8906,34534,0,\r
-0,0,0,0,0,15913,1319,0,0,20296,1477,30760,0,25928,16772,0,0,1069,0,0,0,0,0,0,0,0\r
-,0,0,0,0,17029,0,31909,0,0,0,0,0,0,0,0,0,0,0,41638,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,41542,0,21478,0,0,0,9796,0,0,0,0,0,0,0,0,0,0,22187,58343,0,0,0,24295,0,\r
-0,0,0,0,61831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2833,5829,0,0,0,62855,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,16676,0,0,0,0,0,0,13577,27431,0,0,0,0,21480,10501,0,16932,\r
-0,0,0,0,0,22918,0,48294,2574,2150,0,0,0,0,1897,4518,0,0,0,0,0,0,25064,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47942,0,0,0,0,10990,13767,\r
-25705,37863,21672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43430,1712,0,0,0,0,\r
-18886,0,0,0,0,0,0,0,0,0,0,0,0,0,10535,0,0,0,0,0,0,0,15012,0,0,0,0,0,0,0,0,0,0,\r
-14734,0,0,55782,0,0,30824,10886,0,0,0,0,0,51302,0,0,8012,0,0,0,0,0,20680,6981,0,\r
-57415,11,0,0,18277,0,14564,0,0,0,32390,0,0,0,0,0,0,0,0,0,0,0,0,19113,5158,0,\r
-11172,0,16774,0,0,0,0,0,0,0,0,0,0,0,0,10315,13830,0,0,0,0,0,0,10410,7141,0,0,0,0\r
-,0,18116,0,0,0,44615,15403,13958,0,1540,14632,19525,24201,19781,0,0,0,24165,0,\r
-38951,0,0,0,0,0,6308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17416,15749,3438,13255,0,0,0,0,\r
-0,0,0,0,0,0,0,32228,0,0,0,0,176,0,0,50566,0,0,0,0,0,0,0,0,0,0,0,0,0,21540,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,58982,0,0,0,0,0,0,0,0,0,5284,0,0,0,0,0,0,25897,28326,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15945,0,0,0,9804,293,0,0,0,0,0,0,0,13988,23082,4677\r
-,0,0,0,0,0,0,0,0,0,0,0,5670,0,0,0,0,0,0,0,44070,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,6405,0,30692,0,0,0,61702,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,45926,0,15398,0,0,0,0,0,0,4554,2692,0,0,0,0,0,32485,0,0,0,10084,0,0,0,0,0,0,\r
-24297,0,0,0,0,0,0,0,0,22790,0,0,0,55110,0,0,0,0,0,0,0,0,0,0,0,0,7112,0,31530,\r
-45255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40743,17226,22599,0,\r
-0,0,0,0,0,0,0,3695,0,0,0,0,0,0,0,0,0,0,56999,0,0,0,0,0,13799,3114,21287,1353,\r
-7591,0,0,0,8455,0,0,6824,0,0,0,0,0,0,0,14569,0,0,0,29000,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,19979,0,18376,0,0,0,0,0,0,0,0,0,0,0,0,11332,0,0,0,49863,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,2191,7527,23148,58022,0,0,0,30631,0,26565,0,0,0,0,0,0,0,0,0,0,0,0,754\r
-,0,0,15877,0,0,0,0,0,0,0,17510,7657,2821,0,0,0,0,0,0,0,0,0,41927,0,0,0,0,0,0,0,0\r
-,2569,34439,0,0,3790,0,0,0,15339,8775,0,0,0,0,0,0,0,0,0,0,0,15908,0,0,21419,8359\r
-,0,0,0,0,424,0,0,0,0,0,0,25318,8008,20551,0,0,0,45735,30058,30372,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,26180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31432,10567,0,0,0,0,\r
-17450,0,0,0,0,0,0,30310,0,38022,0,0,0,0,0,28932,0,0,0,0,0,43910,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,22180,12075,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22247,0,0,22826,\r
-12359,0,0,0,0,4105,50407,0,0,0,0,0,0,13581,28583,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,28936,0,0,0,0,0,17673,10310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,905,57862,\r
-1580,0,0,0,0,58630,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13479,0,0,\r
-14153,13286,0,0,9259,0,0,0,0,0,6606,3524,0,0,0,0,0,6567,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,631,49255,0,0,0,0,0,42886,0,38215,0,0,0,0,0,0,0,0,17580,\r
-0,0,0,0,0,0,0,0,55046,0,0,0,0,0,0,0,0,0,10213,0,0,0,0,3604,37767,0,0,0,0,0,0,0,0\r
-,0,0,0,30950,0,0,0,0,0,0,0,0,0,62087,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23528,0\r
-,0,0,0,0,0,0,0,0,28715,4229,0,0,0,0,0,0,0,0,0,0,1226,26820,0,0,0,12133,6984,261,\r
-21130,32548,0,0,0,0,0,0,3565,12390,20713,28071,0,0,1706,25287,0,0,0,0,0,0,0,0,\r
-14670,0,0,0,0,0,0,30534,0,0,0,12615,0,43750,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28228,\r
-0,0,0,0,0,0,0,45095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1224,3975,10954,6375,0,0,0,0\r
-,0,0,0,0,0,0,23180,20100,0,0,0,0,25736,8519,0,0,0,0,0,6663,0,2534,0,0,0,0,0,0,0,\r
-0,23720,0,0,0,0,0,0,0,0,0,0,19398,0,47814,26281,49702,0,0,4332,12965,0,0,5704,\r
-3206,0,0,0,0,0,0,0,0,0,0,0,0,0,15396,0,0,0,44102,0,0,0,0,0,0,0,0,0,0,0,0,0,25317\r
-,1064,39271,27433,0,14952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14308,0,0,0,0,0,0,2763\r
-,4100,0,0,0,0,0,0,18792,0,0,0,22154,32583,0,6244,0,0,0,0,0,0,0,49478,0,0,0,0,0,0\r
-,0,0,0,0,0,21894,0,0,11048,0,0,0,0,0,0,11685,0,53862,0,0,15114,0,13870,0,0,0,0,0\r
-,0,0,919,0,0,0,31916,0,22570,101,0,0,0,0,0,0,0,0,0,7333,0,0,0,0,3272,0,0,0,0,\r
-27718,32712,0,0,0,0,0,0,0,0,0,1782,0,3688,0,0,0,0,29862,0,0,0,0,0,0,0,22469,0,0,\r
-0,0,0,0,0,55302,850,15492,0,0,0,5927,19786,13350,0,25702,0,0,0,0,0,0,0,0,0,0,0,\r
-40390,0,0,0,0,0,0,0,0,0,0,0,0,0,20260,0,0,0,0,0,0,0,0,0,0,0,0,0,15335,8394,0,0,0\r
-,0,0,0,26566,0,0,0,0,843,2245,0,0,0,0,0,0,0,0,6959,0,20488,1638,0,0,11533,50759,\r
-0,0,0,0,0,20871,0,0,0,0,0,24519,0,0,0,0,9544,23591,0,0,0,0,0,0,0,0,0,0,20969,\r
-7109,29001,0,0,32422,31720,64294,0,0,0,0,16106,0,0,0,6930,4933,0,0,0,22917,0,\r
-27015,0,0,0,0,19880,8070,0,0,0,0,23945,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-3310,0,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18439,0,0,0,20742,0,0,0,10597,0,0,0,0,0,0,\r
-0,0,0,0,0,0,20236,0,0,0,16584,3429,0,0,0,0,0,0,0,0,27241,0,0,0,0,16132,0,0,0,0,0\r
-,0,0,0,0,0,0,0,244,28261,0,0,0,0,0,0,0,29509,0,0,0,0,0,0,0,0,2921,31781,0,0,0,0,\r
-0,0,6408,4196,344,0,0,0,0,0,0,0,0,0,0,0,0,0,11689,45863,0,0,0,0,906,3301,0,0,\r
-25544,32421,0,0,0,0,0,0,0,0,1260,61607,0,27302,0,0,8682,16614,0,0,0,0,10830,0,0,\r
-9604,15049,13413,0,0,0,0,0,0,26761,0,0,0,0,0,0,61990,0,0,0,0,0,12580,0,0,11432,0\r
-,0,0,0,0,22507,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12389,0,0,0,0,0,0,\r
-2408,22661,14507,43239,0,9700,0,0,24714,0,0,0,0,0,0,0,0,23972,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,34086,0,0,22955,7238,0,0,0,0,0,28485,13806,20038,0,0,0,0,22602,0,0,0,\r
-1645,22340,0,0,0,0,0,0,0,0,0,0,0,26502,0,0,554,0,0,0,0,61735,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,2694,0,0,0,0,0,0,0,0,0,0,0,0,0,0,883,27879,15948,0,3242,57382,0,0\r
-,0,0,0,0,13930,0,0,0,0,0,30922,0,4137,52615,0,0,0,0,0,0,0,0,0,0,0,0,0,31911,\r
-16072,0,0,0,0,0,0,0,0,0,0,0,0,26340,0,61671,0,0,0,0,3145,56199,0,0,0,0,0,0,0,0,0\r
-,0,0,0,280,0,5131,33479,0,15751,0,0,0,0,0,0,4136,1446,0,0,0,0,0,0,11304,17863,0,\r
-0,0,0,0,25125,0,0,0,36646,6057,0,0,0,855,11301,0,0,0,0,0,64774,0,0,0,19397,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,1040,27367,0,0,0,0,0,0,0,0,0,0,0,0,0,64358,0,0,178,\r
-132,0,0,14763,24455,0,0,0,46374,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46246,0,0,0,37382,\r
-0,0,0,7462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8166,0,0,6921,0,0,0,9163,0,0,0,119,\r
-0,0,0,23146,17156,0,0,0,0,0,9127,0,0,0,17927,0,0,0,0,0,22084,0,0,0,0,0,39879,0,0\r
-,2035,0,1067,0,0,0,0,0,16652,59591,0,0,0,0,0,0,0,0,0,0,0,0,20171,0,0,0,0,17733,0\r
-,0,0,0,0,32037,0,0,0,0,0,14277,0,0,0,0,0,0,0,42022,0,0,26793,20358,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,8907,0,0,0,0,0,0,0,0,27780,0,0,0,0,32330,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,39399,0,9732,0,16199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,854,0,2984,45063,25418,26980,22539,0,9133,3653,15528,28743,4649,0,616,\r
-65127,0,0,0,61863,0,0,0,0,0,0,0,55303,0,0,0,0,0,0,0,0,23880,0,0,0,0,0,0,0,31848,\r
-62854,0,0,0,0,0,0,0,0,0,0,0,49606,0,27974,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,32580,0,0,0,26052,4043,0,0,40454,0,0,26056,30565,0,0,0,0,0,0,0,31398,0,0,0,0\r
-,0,0,0,0,29288,1797,0,0,3220,0,0,0,0,0,0,0,0,0,20427,0,0,0,0,23621,0,0,0,0,0,0,0\r
-,0,0,24261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35591,0,0,6862,0,0,0,4265,0,6285,\r
-5383,0,0,0,0,0,36870,0,39847,0,0,17224,5414,27882,58118,0,0,13224,4262,0,0,0,\r
-31302,0,0,1388,2982,11881,0,0,0,0,0,0,16837,809,0,24140,10724,0,0,0,0,5835,0,0,0\r
-,0,0,0,0,0,0,0,0,1256,19237,0,0,0,0,0,0,0,5796,11848,0,0,52870,11464,0,0,0,0,0,0\r
-,0,0,0,5645,9158,0,25223,0,0,0,0,0,39142,24968,8135,32104,28678,0,0,0,46311,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23820,0,0,0,0,0,4050,0,1323,25220,0,0,0,20133,0,\r
-0,0,0,0,0,0,0,0,0,0,9381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,13444,1198,60806,0,0,0,0,17356,50247,30632,0,0,0,0,0,0,0,11944,\r
-999,0,0,0,0,4010,10404,0,0,0,0,0,0,10346,0,0,49510,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-38919,0,0,0,0,0,0,6351,60966,20137,487,0,0,0,0,0,0,655,2406,17387,43303,0,0,0,\r
-17063,0,0,213,0,0,0,0,0,0,17221,0,0,0,0,0,0,0,0,0,0,0,10820,0,0,0,0,369,6,0,0,\r
-9098,21093,0,31653,0,0,0,0,0,0,0,0,0,27143,0,0,16234,0,0,0,0,0,0,0,0,6020,31723,\r
-28293,0,0,0,0,1936,30695,0,0,0,0,0,52902,0,0,29512,10791,0,20420,0,0,16010,0,0,0\r
-,0,0,0,0,0,0,0,0,5324,0,0,0,0,0,0,0,0,0,0,0,0,13383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,24328,0,0,0,0,0,0,40870,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,24648,0,0,0,0,0,0,0,7786,2852,0,0,0,0,0,0,0,0,0,44678,0,17925,0,0,105,53062,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18762,0,0,40679,0,0,0,16165,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,20390,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62310,1322,\r
-14247,0,0,0,0,0,0,0,0,1832,6052,0,0,11882,0,0,0,0,17668,0,28262,0,29542,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28007,0,0,0,57223,\r
-1585,0,0,0,0,0,0,0,0,0,0,0,21162,0,0,62247,0,0,0,0,0,25414,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,36326,0,0,0,23845,0,0,0,0,0,0,0,2693,0,0,0,0,0,0,0,\r
-13125,0,31236,0,0,0,0,0,22502,0,0,0,0,0,0,5994,10309,0,0,0,7269,0,0,0,0,17929,0,\r
-1011,44647,0,0,0,0,0,14919,0,0,0,0,20586,5350,0,0,0,45702,0,13189,0,0,0,0,0,0,0,\r
-0,0,35782,17992,0,0,0,0,0,8203,0,0,0,0,0,0,56678,0,0,0,0,0,38087,4233,0,2127,0,0\r
-,0,0,0,0,0,0,0,0,10148,0,0,0,2021,0,0,0,0,0,0,0,47206,0,0,0,0,0,0,0,9220,0,0,0,0\r
-,19465,0,0,0,0,0,0,0,0,39206,0,38055,0,0,0,0,0,0,0,46982,0,0,0,0,0,22054,3850,0,\r
-0,0,0,0,0,0,55,0,10542,0,0,0,0,7239,0,0,0,0,0,59367,0,0,14761,0,0,0,0,43079,0,0,\r
-0,0,0,2726,0,0,9582,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37478,0,\r
-0,0,31364,0,0,0,0,0,0,0,0,20393,8933,0,0,0,0,0,9380,0,0,0,0,16905,549,0,0,0,0,\r
-182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1558,0,0,0,0,0,0,0,19242,0\r
-,0,0,0,0,0,24933,0,6276,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42310,23595,\r
-24068,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13191,6158,2567,0,0,268,47047,0,0,0,0,0,0,0,\r
-0,0,27940,0,0,0,0,0,26726,0,0,0,0,8200,1222,31562,0,0,0,0,0,0,0,0,0,2922,8231,\r
-8904,29157,0,0,0,0,0,0,0,0,23976,4836,0,0,0,0,0,0,0,0,0,0,0,0,31658,0,0,31685,0,\r
-0,2889,6213,0,0,0,0,0,13605,0,0,0,0,0,24772,0,0,0,0,0,0,0,0,0,0,20684,26468,\r
-24075,0,0,0,21193,0,715,679,0,0,0,0,0,0,3050,7654,0,0,0,13798,0,0,0,0,15,27973,0\r
-,0,8491,2086,0,0,0,43206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60391,0,0,0,0,0,0\r
-,0,25892,0,22276,0,34374,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20165,0,0,25672,0\r
-,0,0,1811,24839,0,31044,0,0,25513,0,0,0,0,0,12810,0,0,62438,0,0,1325,0,364,3782,\r
-0,0,0,0,0,0,0,0,8042,19687,0,0,0,33415,0,0,0,0,0,0,0,0,0,0,0,7205,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,11844,0,0,0,0,3341,1543,6698,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,29766,0,0,0,0,0,0,0,0,0,0,0,41158,0,24294,0,3844,12329,\r
-0,0,0,13738,0,0,0,0,0,0,0,0,26245,0,0,0,0,0,0,6378,0,343,4838,0,0,0,24358,11688,\r
-0,0,0,0,0,0,0,0,0,1489,34759,0,0,0,0,363,51974,1878,11013,0,0,32265,59782,0,0,0,\r
-28421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22756,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14089,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,29257,61222,0,30661,0,28327,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-27108,8843,0,9673,2084,0,0,0,16327,0,48455,0,0,0,0,0,0,4876,9316,0,0,0,0,0,0,0,0\r
-,0,0,0,0,9035,18852,0,0,0,0,0,0,0,0,0,0,0,0,0,4164,0,0,14827,1349,0,0,0,0,0,\r
-11909,0,0,0,0,0,0,0,0,0,21765,0,0,0,0,0,0,0,0,31272,63910,0,0,0,25924,0,0,0,0,0,\r
-0,0,0,0,44487,0,0,0,20612,0,0,27754,31428,0,0,0,0,0,0,0,17287,0,3943,0,0,0,63302\r
-,0,0,0,0,25256,19942,0,55142,0,39046,0,0,0,0,0,0,0,15367,0,0,0,0,0,0,0,0,0,0,0,\r
-28422,0,0,0,0,0,0,0,0,0,0,0,0,9576,63847,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,25226,5734,0,0,0,0,0,0,13801,4997,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,43942,1270,2566,6284,0,0,16230,0,0,0,20678,0,0,0,0,0,38855,0,0,0,0,\r
-29643,0,0,0,41,3655,0,0,0,0,0,14276,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,15686,0,0,0,15718,0,50694,0,0,16232,8007,0,0,0,5060,\r
-329,11591,51,0,0,0,0,0,0,0,0,0,13065,7302,27530,15366,0,24934,0,0,0,17828,0,0,\r
-4552,6311,0,0,0,0,0,0,0,0,0,0,0,47686,368,12103,10122,33830,0,0,599,18534,9579,\r
-49479,0,5668,0,0,0,0,0,0,0,0,0,13157,0,0,0,0,23274,14055,0,0,0,0,0,48903,0,0,0,0\r
-,0,0,1871,0,15434,0,0,0,16174,62470,0,0,0,0,0,0,0,0,0,0,0,7749,0,0,0,0,0,0,0,\r
-30501,0,0,0,0,25675,0,0,0,0,0,0,0,0,0,0,9285,0,0,25323,1669,0,0,0,0,0,0,0,0,0,0,\r
-0,3588,0,0,0,0,0,32902,0,0,4426,0,0,0,0,57959,0,0,0,0,0,0,29898,58278,0,0,0,0,\r
-11880,1220,0,0,0,41479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23141,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,42566,0,0,0,0,0,0,0,40167,9484,3493,0,0,0,0,0,21126,0,0,0,0,8649,18918,0,0,\r
-0,0,0,0,0,34886,2601,0,0,0,0,12518,0,0,0,0,7976,10311,0,0,0,0,0,0,0,45190,0,0,0,\r
-0,0,0,0,0,0,0,16842,20229,0,0,0,0,0,0,7528,4614,0,0,0,0,0,30086,0,0,0,1671,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,9896,6277,0,0,0,0,0,61191,0,41287,0,21956,0,0,20010,0,0,0\r
-,0,0,0,0,0,0,0,0,13195,0,0,0,0,1381,0,0,0,0,365,30951,24268,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,7044,0,0,0,0,0,0,0,0,0,0,27944,359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,28487,0,0,77,0,0,0,0,0,0,0,0,56775,12586,8421,0,0,0,0,0,0,26185,14599,0,0,\r
-8040,5702,12585,3109,0,0,0,0,0,21574,5388,0,0,0,0,0,0,0,5106,52454,0,0,0,0,0,0,0\r
-,0,1907,29895,0,6116,0,0,0,0,11081,5285,0,28069,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4104\r
-,0,0,0,0,0,0,41511,0,0,0,0,0,0,5262,0,0,0,503,4231,7720,34343,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7304,10374,1718,0,0,29127,0,0,0,0,0,0,0,0,23497,\r
-22567,6952,2340,0,0,0,0,0,0,0,0,20360,12453,0,45094,0,0,0,0,0,28582,0,0,0,0,680,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,23084,0,0,0,30696,0,0,0,0,45862,0,0,0,0,0,0,0,0,0,0,0,\r
-0,5580,6053,0,0,0,0,0,0,0,0,0,0,712,70,0,0,26091,11335,0,0,0,0,13612,0,13160,\r
-1926,435,51559,0,0,0,0,0,0,0,0,0,0,0,0,0,47302,19083,0,0,12742,0,1607,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,6155,37095,0,0,0,0,0,18948,7146,0,0,0,0,0,0,0,7848,\r
-2055,0,0,0,0,8910,0,19336,0,0,48070,8490,0,0,0,0,0,0,0,9932,56423,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,4133,0,0,0,0,0,0,0,0,0,43398,0,0,0,0,0,0,0,0,16173,0,0,0,0,0\r
-,0,0,32011,0,0,30918,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26854,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,20389,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18889,0,0,0,0,8965,0,0,0,44358,0,0,0,8997,0\r
-,34055,0,0,0,0,0,29350,0,0,501,17767,0,0,32457,60262,0,0,0,30886,0,0,3757,1063,0\r
-,0,0,25637,0,0,0,0,0,28068,0,26374,0,0,0,0,0,0,0,0,0,0,0,11684,0,0,0,0,0,0,24779\r
-,229,0,13766,0,0,7402,11525,0,0,0,0,0,0,0,0,26313,23686,0,0,29736,47527,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27268,0,0,0,0,553,0,0,0,0,0,0,32038,0,0,0,0,1135,\r
-26596,0,0,12300,14631,0,0,0,43238,0,871,0,0,31496,0,8457,17669,0,12836,0,0,0,\r
-22726,0,38758,0,0,375,6564,0,0,0,0,0,0,0,0,0,0,0,0,170,18535,0,22948,0,0,32360,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,25764,0,0,0,0,0,0,0,0,0,0,0,15652,0,0,0,32774,0,0,0,0\r
-,0,0,0,0,0,28551,0,0,0,0,0,0,0,0,0,0,0,0,15145,0,0,0,21100,27654,0,0,0,0,0,0,\r
-4874,26215,0,1639,0,0,0,0,0,0,0,0,0,0,4169,0,0,0,0,0,7336,0,0,0,0,21572,0,0,0,0,\r
-0,0,0,0,0,24644,1675,2533,0,0,0,53318,0,13094,0,0,0,0,0,0,0,6246,0,22020,0,0,0,0\r
-,0,0,0,0,0,0,0,28453,5576,5124,0,0,0,0,0,0,0,0,0,0,0,0,0,27910,0,29382,18216,\r
-8583,0,0,0,39174,0,43558,0,0,0,0,0,0,0,0,0,11973,0,0,0,0,0,23397,0,0,0,0,6091,0,\r
-0,0,0,0,0,0,6474,16197,14217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,26728,0,567,48839,0,0,0,0,0,15271,0,0,31818,43974,2450,0,0,0,0,0,0,0,\r
-11368,9191,0,44454,0,0,0,0,0,0,14568,12293,0,0,0,8453,0,0,0,0,0,0,0,0,0,0,0,0,\r
-32040,0,0,0,0,0,0,0,0,0,0,0,0,902,0,0,0,27236,5612,11495,0,0,0,0,0,0,0,0,9194,\r
-23684,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27430,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-26217,44870,0,0,0,0,0,0,5581,7173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-52775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20968,18340,0,0,0,0,0,0,0,0,4107,11239\r
-,0,0,0,0,0,0,0,0,0,0,0,29381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21990,0,0,0,0\r
-,0,0,0,0,0,48806,0,0,0,32292,0,0,0,0,0,0,0,10884,0,0,0,0,0,0,0,0,0,0,27562,0,\r
-5643,0,0,0,0,0,0,0,0,0,3089,31525,0,19684,0,0,0,0,0,0,0,61415,0,0,0,0,0,36198,0,\r
-0,0,0,0,0,0,7908,0,0,0,0,872,743,0,0,0,0,0,0,0,0,1229,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,32484,0,0,0,0,0,34822,0,0,0,0,0,50726,0,0,0,0,7274,0,0,0,15304,\r
-11526,0,0,0,3047,0,0,0,0,0,0,22376,0,0,0,846,0,0,0,0,35815,0,0,0,23652,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,23721,2148,0,0,0,0,0,0,14856,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,1358,0,3082,0,0,0,848,10949,0,0,0,0,0,0,6504,0,0,14372,0,0,0,0,0,0\r
-,0,0,0,0,8201,9958,0,0,0,0,0,0,24266,0,0,0,0,0,0,0,0,26469,0,0,0,0,18604,2053,0,\r
-33511,0,0,0,0,0,9222,0,0,0,0,0,44006,0,0,0,0,0,0,0,0,0,0,0,41895,0,0,0,0,0,0,0,0\r
-,12044,390,0,0,0,0,0,4935,0,48646,0,56102,3052,16070,0,0,0,0,0,0,0,8612,9320,\r
-38311,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,0,0,0,0,42918,0,\r
-32550,0,0,0,0,0,0,0,0,27434,57926,17064,0,0,46502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,26760,6756,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,624,0,5000,0,0,0,0,32293,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,26246,0,0,0,0,0,0,0,0,23,7301,0,0,0,36199,0,40838,0,0,0,\r
-0,0,0,0,0,0,0,0,0,27178,57350,0,0,12457,9317,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16810,0,0,0,14510,0,0,0,0,21319,0,0,0,13508,17,\r
-11365,0,0,0,0,5291,0,8329,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27685,0,0,0,0,0,0,0,\r
-52006,0,0,0,7493,0,44263,0,0,0,0,0,0,0,0,9800,0,0,0,25676,61478,0,0,0,0,0,0,5773\r
-,0,0,0,0,41991,26057,0,0,0,0,0,0,0,0,0,0,22629,0,0,0,47783,362,1959,23468,0,0,0,\r
-10921,0,0,0,3150,0,0,0,0,0,0,0,0,0,0,0,32456,0,0,0,0,0,0,0,4559,3270,0,0,983,0,0\r
-,26343,0,33446,0,0,0,61767,0,48390,0,0,0,0,0,0,0,2790,0,39782,7849,0,0,0,0,0,0,0\r
-,1544,2183,0,0,0,0,0,0,0,0,4040,2471,20009,30020,0,0,11242,0,0,0,5578,53382,0,\r
-22631,0,0,0,0,0,0,0,0,0,0,0,12901,0,0,0,0,0,0,0,0,0,0,0,0,215,0,0,9030,0,0,0,0,0\r
-,0,265,1412,0,0,11626,3687,0,0,0,0,0,0,0,0,0,0,0,0,17449,24359,0,0,26729,40134,0\r
-,0,0,0,29768,61958,0,0,0,0,0,0,0,0,20908,0,0,0,0,0,11016,0,0,47462,21547,5926,0,\r
-0,14728,2983,24104,15301,0,0,0,0,0,32645,0,0,0,0,0,0,0,3300,0,0,0,15972,0,0,0,0,\r
-0,0,6634,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3076,0,30983,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,106,0,0,0,0,12775,0,0,0,0,7177,18022,0,0,0,0,0,22534,0,0,0,0,0,0,0,0,0,0,0,\r
-49894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27560,0,0,0,0,30278,10668,23877,0,\r
-0,0,0,0,0,0,29124,0,0,0,0,0,0,0,0,0,0,0,0,0,20870,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,44582,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48454,0,0,0,0,6442,0,16330,22951,0,0\r
-,16904,0,0,0,0,644,0,0,0,40038,0,0,0,37222,0,0,0,9830,0,0,0,0,0,34919,0,0,0,0,0,\r
-0,0,0,0,0,0,13733,0,0,0,28196,0,0,0,0,0,19876,0,0,0,0,0,0,0,23558,0,11142,0,\r
-27781,0,0,0,0,13864,0,0,0,24682,47847,0,0,0,0,6890,0,0,0,0,0,3981,0,0,0,0,0,0,0,\r
-0,0,0,0,1772,0,0,0,0,0,0,0,3603,1991,0,27396,8652,0,18312,0,0,0,0,30054,0,0,0,0,\r
-0,0,0,11270,0,0,0,0,0,0,0,0,0,20708,0,0,0,0,338,0,0,0,0,0,0,0,7050,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,14862,0,0,3492,0,0,0,55878,0,0,0,16486,0,0,0,18119,0,0,0,0,0,0,2154\r
-,1284,0,0,23113,31751,0,0,29547,0,0,0,0,0,0,36647,0,0,0,0,0,0,0,0,0,0,0,18183,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,7913,0,0,0,0,20644,0,0,10508,0,0,0,0,0,0,0,0,0,0,0,0,\r
-43622,0,0,0,0,0,40966,0,0,0,0,0,0,0,0,0,0,246,901,11529,5191,0,0,0,0,0,0,0,0,0,0\r
-,0,24454,0,0,26665,27590,0,27397,0,0,0,0,0,0,23562,2949,0,0,30344,62214,0,47334,\r
-2026,18885,0,0,0,48678,0,0,0,22694,0,0,1972,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,15465,0,0,0,0,38822,0,0,0,0,945,32708,0,54791,0,14918,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,23396,0,0,0,0,0,0,5486,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7722,0,0,\r
-0,0,0,0,0,0,0,0,0,30856,64166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35206,0,0,0,30535,0,\r
-0,0,0,0,0,0,0,0,62663,0,0,1096,17574,31820,0,0,14375,4402,27207,0,0,21448,4676,0\r
-,0,0,0,16585,5094,0,0,0,0,0,0,0,0,4845,0,0,32870,0,0,0,0,0,0,0,0,0,0,31466,0,0,0\r
-,0,31783,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4522,16039,0,0,0,0,0,0,0,0,\r
-0,14469,0,0,0,0,0,0,0,0,0,0,7464,4773,0,0,0,0,0,0,0,0,18636,0,0,0,25640,0,0,0,0,\r
-0,0,2244,0,0,11818,0,1168,0,0,0,0,0,0,0,6540,23079,13770,7719,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58150,528,\r
-34502,32682,0,0,12997,0,0,0,0,0,2214,0,0,0,0,0,58567,0,0,0,26375,0,0,0,0,0,0,0,0\r
-,0,26437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,32005,22952,59047,0,13543,0,0,0,0,0,0,0,0,16328,0,0,33542,0,0,0,19782,0,0,0,\r
-16644,0,0,0,0,31688,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10276,0,0,0,\r
-0,0,0,0,36327,0,0,29480,0,0,0,777,12709,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27398,0,0,\r
-0,4455,9037,31397,0,9221,0,0,0,60487,20840,1796,0,0,0,0,0,0,0,0,8364,0,0,0,0,0,0\r
-,0,0,0,0,0,19752,44902,0,38566,0,0,18027,0,0,0,0,0,0,0,0,10662,0,0,0,0,0,11812,0\r
-,0,0,0,0,0,0,0,0,19910,0,0,0,45030,0,0,0,0,0,0,0,0,0,0,0,0,19978,5127,0,11620,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,19817,0,5579,9350,0,0,21002,19718,0,0,0,21926,0,0,0,0,0,0,0,0,0,0,0,0,0,20711,\r
-0,0,0,20197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40550,0,0,0,57510,0,0,0,53895,\r
-0,0,15017,0,17000,39367,2347,0,0,0,0,0,0,0,0,0,8588,0,0,0,0,0,3273,17862,3498,\r
-2085,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19048,0,0,0,0,0,11978,58631,0,0,0,0\r
-,0,0,523,0,12969,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28197,0,47846,0,0,0,0,0,0\r
-,0,0,0,4549,0,0,0,0,0,0,0,0,0,0,687,14917,748,8229,0,0,0,0,0,0,2476,12935,0,0,0,\r
-0,0,0,22792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27528,59142,0,0,20876,20134,0,0,0,\r
-0,440,12068,0,58951,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48038,0,0,0,60999,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,15716,7498,5476,0,0,0,0,20202,37959,0,0,0,0,0,0,0,0,0,0,0,0,\r
-29801,0,5451,0,0,0,0,0,0,0,0,0,0,50790,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24485,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13573,0,0,22856,0,0,0,0,21927,0,0,0,0,0\r
-,0,9130,0,0,0,0,0,0,13732,0,0,0,0,0,0,0,0,0,0,2282,583,0,0,0,0,0,0,0,0,0,0,3726,\r
-26503,0,0,0,0,0,0,9258,0,0,0,0,0,0,0,0,21604,0,0,0,45574,0,0,0,0,0,20710,0,0,0,\r
-42694,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1163,6694,0,0,0,0,0,0,0,10948,0,0,0,29700,0,0,\r
-0,0,0,58823,3796,27399,20939,10180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-19,29287,28649,14534,0,0,16428,45607,0,0,0,0,0,0,25322,0,4908,0,0,0,0,0,0,25476,\r
-29097,14246,11053,0,0,0,0,0,0,0,0,18502,0,0,0,44390,0,0,0,17765,0,0,0,0,0,0,\r
-24520,0,0,0,0,0,0,0,0,0,0,17319,0,0,0,0,0,0,0,0,0,0,0,0,0,28166,0,0,0,0,0,48198,\r
-0,0,31467,0,24585,0,0,0,0,18692,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23596,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,7236,968,13637,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-3763,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14791,0,0,0,12324,0,12741,0,0,0\r
-,0,0,0,0,0,0,11108,0,0,0,0,4009,40295,20616,4357,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-15015,0,0,0,0,0,43751,0,0,0,0,0,0,0,0,0,0,0,23013,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-45542,0,0,0,0,0,0,0,0,0,23974,0,0,0,0,17480,20647,0,0,0,0,0,0,8876,0,0,40806,0,0\r
-,0,0,0,0,0,14502,17160,17764,0,0,31594,35431,0,0,2890,0,0,0,0,0,0,0,0,27524,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8228,0,56583,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,34278,0,0,0,0,0,0,0,0,0,0,0,0,0,2662,0,26724,0,0,0,0,0,0,0,64198,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22281,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3049,\r
-54983,0,0,0,0,0,0,0,837,0,17604,0,0,0,0,0,28838,0,0,0,0,0,0,26312,0,0,3910,0,0,0\r
-,25830,0,0,0,0,0,8391,0,19845,19240,1092,0,0,5449,0,0,0,0,17188,0,0,0,0,0,0,0,0,\r
-0,10629,0,0,6671,61094,5832,8358,0,0,0,55078,0,0,0,0,0,29860,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,51494,0,28647,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25989,0,0,30153,61318\r
-,0,0,0,0,0,0,0,24903,0,0,0,4388,0,42054,0,0,0,0,0,0,0,53158,0,0,0,0,0,0,0,50918,\r
-0,0,0,0,0,0,26251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5929,2853,0,37126,\r
-7372,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2027,934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,55686,0,0,5672,5447,0,62758,0,0,0,0,0,0,0,0,0,0,0,0,2923,0,556,1415,\r
-0,0,0,0,0,0,0,0,0,8645,0,9477,0,0,0,0,0,0,0,48742,0,0,0,0,0,0,0,0,0,0,24235,228,\r
-0,0,0,0,0,0,0,0,0,0,16970,18823,0,0,0,0,0,0,0,0,0,25158,0,0,0,0,0,18567,20072,\r
-2823,14313,1830,0,0,0,0,0,0,0,0,27048,23526,0,0,0,0,0,997,492,0,14730,16677,396,\r
-13574,0,0,0,41671,0,0,0,0,0,0,0,19045,0,0,0,421,17545,3110,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,47111,14475,56551,0,0,0,0,0,0,0,0,0,0,3697,0,0,0,0,0,0,49382,0,35559,0,\r
-0,0,0,40,0,11496,15621,0,8550,0,0,0,63462,0,0,0,0,0,0,0,36966,0,50406,0,46022,\r
-1001,0,0,12069,3249,0,0,0,0,0,0,0,0,0,0,0,0,0,15241,0,0,0,0,0,0,0,0,64743,0,0,0,\r
-0,0,58759,0,0,0,0,1136,26981,0,0,0,0,0,0,0,17732,0,0,0,17157,20011,6629,0,43879,\r
-0,0,0,13572,25128,10759,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28676,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,875,24007,0,0,0,0,7628,0,0,0,0,0,12268,0,0,0,0,0,0,0,0,19300\r
-,23210,356,0,0,0,0,0,0,0,0,0,15236,0,0,0,0,0,49670,0,0,0,0,0,0,0,21764,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,13931,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45799,0,0,436,3589,\r
-0,0,11402,0,0,0,0,0,0,0,0,0,0,62822,0,0,0,39814,588,0,0,0,0,0,0,27750,0,0,0,0,0,\r
-0,1609,22660,2346,18951,0,16068,0,0,0,0,0,0,5162,11110,0,0,0,0,15048,1060,0,7879\r
-,18280,326,0,14886,19656,0,7594,0,0,0,0,0,781,581,0,16198,0,0,0,0,0,0,1078,9892,\r
-0,0,0,0,0,0,0,0,0,0,4489,0,0,0,0,33798,0,0,0,54534,0,0,0,0,0,0,0,33158,0,0,0,0,0\r
-,0,0,0,0,42086,13834,2757,8456,16773,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3434,0,0,0,\r
-0,0,3946,29668,0,0,30634,36775,0,0,0,0,0,24901,0,16069,6280,0,0,0,0,41990,0,0,0,\r
-0,0,0,0,27365,0,0,0,0,0,0,0,0,0,0,1450,44807,0,0,0,32100,0,0,0,0,0,35110,0,0,0,0\r
-,0,0,0,0,17448,19591,0,0,0,0,0,0,0,0,0,0,0,0,1739,0,0,0,0,5511,0,0,0,32934,0,0,0\r
-,0,0,0,0,0,0,18180,0,0,0,23428,19754,0,0,31174,3021,31655,23464,0,0,0,0,0,0,\r
-57255,0,0,21292,64487,0,0,0,0,0,0,25802,9189,0,0,0,0,0,49254,0,0,0,0,0,0,0,0,0,0\r
-,5837,50023,0,0,0,0,0,0,0,0,0,15495,0,0,0,0,0,51942,0,0,0,0,0,0,0,0,28104,58662,\r
-0,50214,0,0,0,0,0,0,0,0,2988,0,22888,31812,0,0,0,0,0,2020,0,18916,0,0,0,0,0,0,0,\r
-23973,0,0,0,0,17516,11717,0,0,0,55911,0,0,0,0,0,0,0,2855,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,46822,0,24710,28586,0,0,0,1556,0,0,30117,0,0,22090,57127,3403,14087,0\r
-,0,0,0,0,0,0,0,0,0,1041,0,10633,6916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27269,0,0,13322,18055,0,29380,0,56454,0,0,120\r
-,0,0,8773,0,0,0,0,16040,0,0,0,0,0,0,0,27242,23781,0,1572,0,28134,0,0,1512,0,0,0,\r
-0,0,0,27684,0,38470,0,0,0,0,0,0,1513,8709,0,0,0,0,0,0,0,0,0,0,0,46566,0,0,0,0,\r
-28521,61159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24356,0,0,0,0,0,0,0,0,0,13028,0,\r
-5863,0,0,15693,0,0,0,0,0,0,0,1131,23398,0,0,0,0,0,0,0,26212,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,18404,0,0,0,0,1457,26183,0,0,2475,7110,0,0,0,0,27180,60166,0,0,0,20262,0,\r
-41862,0,0,0,0,0,0,0,0,0,0,2762,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26148,0,0,0,0,0,0,0,0\r
-,0,28229,0,0,0,29254,0,0,0,0,0,0,0,0,0,0,27690,0,0,13636,12776,1862,0,0,0,0,0,0,\r
-17225,3271,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28039,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,4457,18117,0,2023,402,0,0,0,0,0,0,0,0,0,0,0,0,0,104,3654,0,0,\r
-0,0,0,0,0,0,18440,0,0,0,0,0,0,0,0,29861,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,22150,0,0,0,0,0,0,0,0,0,0,0,0,24074,0,0,0,0,0,0,0,0,12004,0,32358,\r
-0,0,3081,0,0,0,0,0,0,0,0,0,4749,0,0,0,0,0,0,0,0,0,0,0,10792,1799,21322,0,7880,\r
-12613,0,0,0,0,0,0,0,0,13993,0,0,0,16202,0,0,0,0,32102,0,37223,0,10500,0,0,0,0,0,\r
-0,0,0,32008,0,0,0,0,0,23816,3236,0,0,0,0,0,23237,0,0,5642,0,4684,294,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,26852,0,0,0,0,0,0,7148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,7890,61798,939,0,0,56679,0,0,0,0,0,27078,202,5029,0,0,0,0,0,\r
-0,0,0,0,28005,0,0,15273,24741,5676,20452,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55910,0,0\r
-,0,0,5069,27942,0,21092,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12517,0,0,0,0,0,0,\r
-0,0,0,0,0,0,21384,28260,0,2502,20108,0,0,0,0,0,0,0,0,0,0,0,0,46726,0,30790,0,0,0\r
-,0,0,14725,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1099,6372,0,0,0,12422,15182,0,8683,0,\r
-10665,19462,0,0,0,0,0,0,1590,0,31628,0,22632,19750,0,0,0,0,0,0,0,24198,0,0,0,0,0\r
-,50662,0,0,0,0,0,0,0,0,0,0,9131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11015,0,0,0,0,0,0,0,\r
-0,16490,54695,0,0,0,0,0,0,0,0,12937,0,0,0,0,16004,0,0,0,0,0,0,0,0,0,2181,6923,0,\r
-0,0,0,0,0,0,15624,11302,0,0,5673,7559,0,0,14668,15684,0,0,0,0,0,0,24204,48134,0,\r
-24230,0,55527,0,0,3464,19141,0,0,0,0};\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.h b/BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.h
deleted file mode 100644 (file)
index ab31827..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Hash table on the 4-byte prefixes of static dictionary words. */\r
-\r
-#ifndef BROTLI_ENC_DICTIONARY_HASH_H_\r
-#define BROTLI_ENC_DICTIONARY_HASH_H_\r
-\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-extern const uint16_t kStaticDictionaryHash[32768];\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_DICTIONARY_HASH_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/encode.c b/BaseTools/Source/C/BrotliCompress/enc/encode.c
deleted file mode 100644 (file)
index 93824d6..0000000
+++ /dev/null
@@ -1,1864 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Implementation of Brotli compressor. */\r
-\r
-#include <brotli/encode.h>\r
-\r
-#include <stdlib.h>  /* free, malloc */\r
-#include <string.h>  /* memcpy, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/context.h"\r
-#include "../common/platform.h"\r
-#include "../common/version.h"\r
-#include "./backward_references.h"\r
-#include "./backward_references_hq.h"\r
-#include "./bit_cost.h"\r
-#include "./brotli_bit_stream.h"\r
-#include "./compress_fragment.h"\r
-#include "./compress_fragment_two_pass.h"\r
-#include "./encoder_dict.h"\r
-#include "./entropy_encode.h"\r
-#include "./fast_log.h"\r
-#include "./hash.h"\r
-#include "./histogram.h"\r
-#include "./memory.h"\r
-#include "./metablock.h"\r
-#include "./prefix.h"\r
-#include "./quality.h"\r
-#include "./ringbuffer.h"\r
-#include "./utf8_util.h"\r
-#include "./write_bits.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define COPY_ARRAY(dst, src) memcpy(dst, src, sizeof(src));\r
-\r
-typedef enum BrotliEncoderStreamState {\r
-  /* Default state. */\r
-  BROTLI_STREAM_PROCESSING = 0,\r
-  /* Intermediate state; after next block is emitted, byte-padding should be\r
-     performed before getting back to default state. */\r
-  BROTLI_STREAM_FLUSH_REQUESTED = 1,\r
-  /* Last metablock was produced; no more input is acceptable. */\r
-  BROTLI_STREAM_FINISHED = 2,\r
-  /* Flushing compressed block and writing meta-data block header. */\r
-  BROTLI_STREAM_METADATA_HEAD = 3,\r
-  /* Writing metadata block body. */\r
-  BROTLI_STREAM_METADATA_BODY = 4\r
-} BrotliEncoderStreamState;\r
-\r
-typedef struct BrotliEncoderStateStruct {\r
-  BrotliEncoderParams params;\r
-\r
-  MemoryManager memory_manager_;\r
-\r
-  HasherHandle hasher_;\r
-  uint64_t input_pos_;\r
-  RingBuffer ringbuffer_;\r
-  size_t cmd_alloc_size_;\r
-  Command* commands_;\r
-  size_t num_commands_;\r
-  size_t num_literals_;\r
-  size_t last_insert_len_;\r
-  uint64_t last_flush_pos_;\r
-  uint64_t last_processed_pos_;\r
-  int dist_cache_[BROTLI_NUM_DISTANCE_SHORT_CODES];\r
-  int saved_dist_cache_[4];\r
-  uint16_t last_bytes_;\r
-  uint8_t last_bytes_bits_;\r
-  uint8_t prev_byte_;\r
-  uint8_t prev_byte2_;\r
-  size_t storage_size_;\r
-  uint8_t* storage_;\r
-  /* Hash table for FAST_ONE_PASS_COMPRESSION_QUALITY mode. */\r
-  int small_table_[1 << 10];  /* 4KiB */\r
-  int* large_table_;          /* Allocated only when needed */\r
-  size_t large_table_size_;\r
-  /* Command and distance prefix codes (each 64 symbols, stored back-to-back)\r
-     used for the next block in FAST_ONE_PASS_COMPRESSION_QUALITY. The command\r
-     prefix code is over a smaller alphabet with the following 64 symbols:\r
-        0 - 15: insert length code 0, copy length code 0 - 15, same distance\r
-       16 - 39: insert length code 0, copy length code 0 - 23\r
-       40 - 63: insert length code 0 - 23, copy length code 0\r
-     Note that symbols 16 and 40 represent the same code in the full alphabet,\r
-     but we do not use either of them in FAST_ONE_PASS_COMPRESSION_QUALITY. */\r
-  uint8_t cmd_depths_[128];\r
-  uint16_t cmd_bits_[128];\r
-  /* The compressed form of the command and distance prefix codes for the next\r
-     block in FAST_ONE_PASS_COMPRESSION_QUALITY. */\r
-  uint8_t cmd_code_[512];\r
-  size_t cmd_code_numbits_;\r
-  /* Command and literal buffers for FAST_TWO_PASS_COMPRESSION_QUALITY. */\r
-  uint32_t* command_buf_;\r
-  uint8_t* literal_buf_;\r
-\r
-  uint8_t* next_out_;\r
-  size_t available_out_;\r
-  size_t total_out_;\r
-  /* Temporary buffer for padding flush bits or metadata block header / body. */\r
-  union {\r
-    uint64_t u64[2];\r
-    uint8_t u8[16];\r
-  } tiny_buf_;\r
-  uint32_t remaining_metadata_bytes_;\r
-  BrotliEncoderStreamState stream_state_;\r
-\r
-  BROTLI_BOOL is_last_block_emitted_;\r
-  BROTLI_BOOL is_initialized_;\r
-} BrotliEncoderStateStruct;\r
-\r
-static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s);\r
-\r
-static size_t InputBlockSize(BrotliEncoderState* s) {\r
-  return (size_t)1 << s->params.lgblock;\r
-}\r
-\r
-static uint64_t UnprocessedInputSize(BrotliEncoderState* s) {\r
-  return s->input_pos_ - s->last_processed_pos_;\r
-}\r
-\r
-static size_t RemainingInputBlockSize(BrotliEncoderState* s) {\r
-  const uint64_t delta = UnprocessedInputSize(s);\r
-  size_t block_size = InputBlockSize(s);\r
-  if (delta >= block_size) return 0;\r
-  return block_size - (size_t)delta;\r
-}\r
-\r
-BROTLI_BOOL BrotliEncoderSetParameter(\r
-    BrotliEncoderState* state, BrotliEncoderParameter p, uint32_t value) {\r
-  /* Changing parameters on the fly is not implemented yet. */\r
-  if (state->is_initialized_) return BROTLI_FALSE;\r
-  /* TODO: Validate/clamp parameters here. */\r
-  switch (p) {\r
-    case BROTLI_PARAM_MODE:\r
-      state->params.mode = (BrotliEncoderMode)value;\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_QUALITY:\r
-      state->params.quality = (int)value;\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_LGWIN:\r
-      state->params.lgwin = (int)value;\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_LGBLOCK:\r
-      state->params.lgblock = (int)value;\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:\r
-      if ((value != 0) && (value != 1)) return BROTLI_FALSE;\r
-      state->params.disable_literal_context_modeling = TO_BROTLI_BOOL(!!value);\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_SIZE_HINT:\r
-      state->params.size_hint = value;\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_LARGE_WINDOW:\r
-      state->params.large_window = TO_BROTLI_BOOL(!!value);\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_NPOSTFIX:\r
-      state->params.dist.distance_postfix_bits = value;\r
-      return BROTLI_TRUE;\r
-\r
-    case BROTLI_PARAM_NDIRECT:\r
-      state->params.dist.num_direct_distance_codes = value;\r
-      return BROTLI_TRUE;\r
-\r
-    default: return BROTLI_FALSE;\r
-  }\r
-}\r
-\r
-/* Wraps 64-bit input position to 32-bit ring-buffer position preserving\r
-   "not-a-first-lap" feature. */\r
-static uint32_t WrapPosition(uint64_t position) {\r
-  uint32_t result = (uint32_t)position;\r
-  uint64_t gb = position >> 30;\r
-  if (gb > 2) {\r
-    /* Wrap every 2GiB; The first 3GB are continuous. */\r
-    result = (result & ((1u << 30) - 1)) | ((uint32_t)((gb - 1) & 1) + 1) << 30;\r
-  }\r
-  return result;\r
-}\r
-\r
-static uint8_t* GetBrotliStorage(BrotliEncoderState* s, size_t size) {\r
-  MemoryManager* m = &s->memory_manager_;\r
-  if (s->storage_size_ < size) {\r
-    BROTLI_FREE(m, s->storage_);\r
-    s->storage_ = BROTLI_ALLOC(m, uint8_t, size);\r
-    if (BROTLI_IS_OOM(m)) return NULL;\r
-    s->storage_size_ = size;\r
-  }\r
-  return s->storage_;\r
-}\r
-\r
-static size_t HashTableSize(size_t max_table_size, size_t input_size) {\r
-  size_t htsize = 256;\r
-  while (htsize < max_table_size && htsize < input_size) {\r
-    htsize <<= 1;\r
-  }\r
-  return htsize;\r
-}\r
-\r
-static int* GetHashTable(BrotliEncoderState* s, int quality,\r
-                         size_t input_size, size_t* table_size) {\r
-  /* Use smaller hash table when input.size() is smaller, since we\r
-     fill the table, incurring O(hash table size) overhead for\r
-     compression, and if the input is short, we won't need that\r
-     many hash table entries anyway. */\r
-  MemoryManager* m = &s->memory_manager_;\r
-  const size_t max_table_size = MaxHashTableSize(quality);\r
-  size_t htsize = HashTableSize(max_table_size, input_size);\r
-  int* table;\r
-  BROTLI_DCHECK(max_table_size >= 256);\r
-  if (quality == FAST_ONE_PASS_COMPRESSION_QUALITY) {\r
-    /* Only odd shifts are supported by fast-one-pass. */\r
-    if ((htsize & 0xAAAAA) == 0) {\r
-      htsize <<= 1;\r
-    }\r
-  }\r
-\r
-  if (htsize <= sizeof(s->small_table_) / sizeof(s->small_table_[0])) {\r
-    table = s->small_table_;\r
-  } else {\r
-    if (htsize > s->large_table_size_) {\r
-      s->large_table_size_ = htsize;\r
-      BROTLI_FREE(m, s->large_table_);\r
-      s->large_table_ = BROTLI_ALLOC(m, int, htsize);\r
-      if (BROTLI_IS_OOM(m)) return 0;\r
-    }\r
-    table = s->large_table_;\r
-  }\r
-\r
-  *table_size = htsize;\r
-  memset(table, 0, htsize * sizeof(*table));\r
-  return table;\r
-}\r
-\r
-static void EncodeWindowBits(int lgwin, BROTLI_BOOL large_window,\r
-    uint16_t* last_bytes, uint8_t* last_bytes_bits) {\r
-  if (large_window) {\r
-    *last_bytes = (uint16_t)(((lgwin & 0x3F) << 8) | 0x11);\r
-    *last_bytes_bits = 14;\r
-  } else {\r
-    if (lgwin == 16) {\r
-      *last_bytes = 0;\r
-      *last_bytes_bits = 1;\r
-    } else if (lgwin == 17) {\r
-      *last_bytes = 1;\r
-      *last_bytes_bits = 7;\r
-    } else if (lgwin > 17) {\r
-      *last_bytes = (uint16_t)(((lgwin - 17) << 1) | 0x01);\r
-      *last_bytes_bits = 4;\r
-    } else {\r
-      *last_bytes = (uint16_t)(((lgwin - 8) << 4) | 0x01);\r
-      *last_bytes_bits = 7;\r
-    }\r
-  }\r
-}\r
-\r
-/* Initializes the command and distance prefix codes for the first block. */\r
-static void InitCommandPrefixCodes(uint8_t cmd_depths[128],\r
-                                   uint16_t cmd_bits[128],\r
-                                   uint8_t cmd_code[512],\r
-                                   size_t* cmd_code_numbits) {\r
-  static const uint8_t kDefaultCommandDepths[128] = {\r
-    0, 4, 4, 5, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,\r
-    0, 0, 0, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7,\r
-    7, 7, 10, 10, 10, 10, 10, 10, 0, 4, 4, 5, 5, 5, 6, 6,\r
-    7, 8, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,\r
-    5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4,\r
-    4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 10,\r
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\r
-  };\r
-  static const uint16_t kDefaultCommandBits[128] = {\r
-    0,   0,   8,   9,   3,  35,   7,   71,\r
-    39, 103,  23,  47, 175, 111, 239,   31,\r
-    0,   0,   0,   4,  12,   2,  10,    6,\r
-    13,  29,  11,  43,  27,  59,  87,   55,\r
-    15,  79, 319, 831, 191, 703, 447,  959,\r
-    0,  14,   1,  25,   5,  21,  19,   51,\r
-    119, 159,  95, 223, 479, 991,  63,  575,\r
-    127, 639, 383, 895, 255, 767, 511, 1023,\r
-    14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    27, 59, 7, 39, 23, 55, 30, 1, 17, 9, 25, 5, 0, 8, 4, 12,\r
-    2, 10, 6, 21, 13, 29, 3, 19, 11, 15, 47, 31, 95, 63, 127, 255,\r
-    767, 2815, 1791, 3839, 511, 2559, 1535, 3583, 1023, 3071, 2047, 4095,\r
-  };\r
-  static const uint8_t kDefaultCommandCode[] = {\r
-    0xff, 0x77, 0xd5, 0xbf, 0xe7, 0xde, 0xea, 0x9e, 0x51, 0x5d, 0xde, 0xc6,\r
-    0x70, 0x57, 0xbc, 0x58, 0x58, 0x58, 0xd8, 0xd8, 0x58, 0xd5, 0xcb, 0x8c,\r
-    0xea, 0xe0, 0xc3, 0x87, 0x1f, 0x83, 0xc1, 0x60, 0x1c, 0x67, 0xb2, 0xaa,\r
-    0x06, 0x83, 0xc1, 0x60, 0x30, 0x18, 0xcc, 0xa1, 0xce, 0x88, 0x54, 0x94,\r
-    0x46, 0xe1, 0xb0, 0xd0, 0x4e, 0xb2, 0xf7, 0x04, 0x00,\r
-  };\r
-  static const size_t kDefaultCommandCodeNumBits = 448;\r
-  COPY_ARRAY(cmd_depths, kDefaultCommandDepths);\r
-  COPY_ARRAY(cmd_bits, kDefaultCommandBits);\r
-\r
-  /* Initialize the pre-compressed form of the command and distance prefix\r
-     codes. */\r
-  COPY_ARRAY(cmd_code, kDefaultCommandCode);\r
-  *cmd_code_numbits = kDefaultCommandCodeNumBits;\r
-}\r
-\r
-/* Decide about the context map based on the ability of the prediction\r
-   ability of the previous byte UTF8-prefix on the next byte. The\r
-   prediction ability is calculated as Shannon entropy. Here we need\r
-   Shannon entropy instead of 'BitsEntropy' since the prefix will be\r
-   encoded with the remaining 6 bits of the following byte, and\r
-   BitsEntropy will assume that symbol to be stored alone using Huffman\r
-   coding. */\r
-static void ChooseContextMap(int quality,\r
-                             uint32_t* bigram_histo,\r
-                             size_t* num_literal_contexts,\r
-                             const uint32_t** literal_context_map) {\r
-  static const uint32_t kStaticContextMapContinuation[64] = {\r
-    1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  };\r
-  static const uint32_t kStaticContextMapSimpleUTF8[64] = {\r
-    0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-  };\r
-\r
-  uint32_t monogram_histo[3] = { 0 };\r
-  uint32_t two_prefix_histo[6] = { 0 };\r
-  size_t total;\r
-  size_t i;\r
-  size_t dummy;\r
-  double entropy[4];\r
-  for (i = 0; i < 9; ++i) {\r
-    monogram_histo[i % 3] += bigram_histo[i];\r
-    two_prefix_histo[i % 6] += bigram_histo[i];\r
-  }\r
-  entropy[1] = ShannonEntropy(monogram_histo, 3, &dummy);\r
-  entropy[2] = (ShannonEntropy(two_prefix_histo, 3, &dummy) +\r
-                ShannonEntropy(two_prefix_histo + 3, 3, &dummy));\r
-  entropy[3] = 0;\r
-  for (i = 0; i < 3; ++i) {\r
-    entropy[3] += ShannonEntropy(bigram_histo + 3 * i, 3, &dummy);\r
-  }\r
-\r
-  total = monogram_histo[0] + monogram_histo[1] + monogram_histo[2];\r
-  BROTLI_DCHECK(total != 0);\r
-  entropy[0] = 1.0 / (double)total;\r
-  entropy[1] *= entropy[0];\r
-  entropy[2] *= entropy[0];\r
-  entropy[3] *= entropy[0];\r
-\r
-  if (quality < MIN_QUALITY_FOR_HQ_CONTEXT_MODELING) {\r
-    /* 3 context models is a bit slower, don't use it at lower qualities. */\r
-    entropy[3] = entropy[1] * 10;\r
-  }\r
-  /* If expected savings by symbol are less than 0.2 bits, skip the\r
-     context modeling -- in exchange for faster decoding speed. */\r
-  if (entropy[1] - entropy[2] < 0.2 &&\r
-      entropy[1] - entropy[3] < 0.2) {\r
-    *num_literal_contexts = 1;\r
-  } else if (entropy[2] - entropy[3] < 0.02) {\r
-    *num_literal_contexts = 2;\r
-    *literal_context_map = kStaticContextMapSimpleUTF8;\r
-  } else {\r
-    *num_literal_contexts = 3;\r
-    *literal_context_map = kStaticContextMapContinuation;\r
-  }\r
-}\r
-\r
-/* Decide if we want to use a more complex static context map containing 13\r
-   context values, based on the entropy reduction of histograms over the\r
-   first 5 bits of literals. */\r
-static BROTLI_BOOL ShouldUseComplexStaticContextMap(const uint8_t* input,\r
-    size_t start_pos, size_t length, size_t mask, int quality, size_t size_hint,\r
-    size_t* num_literal_contexts, const uint32_t** literal_context_map) {\r
-  static const uint32_t kStaticContextMapComplexUTF8[64] = {\r
-    11, 11, 12, 12, /* 0 special */\r
-    0, 0, 0, 0, /* 4 lf */\r
-    1, 1, 9, 9, /* 8 space */\r
-    2, 2, 2, 2, /* !, first after space/lf and after something else. */\r
-    1, 1, 1, 1, /* " */\r
-    8, 3, 3, 3, /* % */\r
-    1, 1, 1, 1, /* ({[ */\r
-    2, 2, 2, 2, /* }]) */\r
-    8, 4, 4, 4, /* :; */\r
-    8, 7, 4, 4, /* . */\r
-    8, 0, 0, 0, /* > */\r
-    3, 3, 3, 3, /* [0..9] */\r
-    5, 5, 10, 5, /* [A-Z] */\r
-    5, 5, 10, 5,\r
-    6, 6, 6, 6, /* [a-z] */\r
-    6, 6, 6, 6,\r
-  };\r
-  BROTLI_UNUSED(quality);\r
-  /* Try the more complex static context map only for long data. */\r
-  if (size_hint < (1 << 20)) {\r
-    return BROTLI_FALSE;\r
-  } else {\r
-    const size_t end_pos = start_pos + length;\r
-    /* To make entropy calculations faster and to fit on the stack, we collect\r
-       histograms over the 5 most significant bits of literals. One histogram\r
-       without context and 13 additional histograms for each context value. */\r
-    uint32_t combined_histo[32] = { 0 };\r
-    uint32_t context_histo[13][32] = { { 0 } };\r
-    uint32_t total = 0;\r
-    double entropy[3];\r
-    size_t dummy;\r
-    size_t i;\r
-    ContextLut utf8_lut = BROTLI_CONTEXT_LUT(CONTEXT_UTF8);\r
-    for (; start_pos + 64 <= end_pos; start_pos += 4096) {\r
-      const size_t stride_end_pos = start_pos + 64;\r
-      uint8_t prev2 = input[start_pos & mask];\r
-      uint8_t prev1 = input[(start_pos + 1) & mask];\r
-      size_t pos;\r
-      /* To make the analysis of the data faster we only examine 64 byte long\r
-         strides at every 4kB intervals. */\r
-      for (pos = start_pos + 2; pos < stride_end_pos; ++pos) {\r
-        const uint8_t literal = input[pos & mask];\r
-        const uint8_t context = (uint8_t)kStaticContextMapComplexUTF8[\r
-            BROTLI_CONTEXT(prev1, prev2, utf8_lut)];\r
-        ++total;\r
-        ++combined_histo[literal >> 3];\r
-        ++context_histo[context][literal >> 3];\r
-        prev2 = prev1;\r
-        prev1 = literal;\r
-      }\r
-    }\r
-    entropy[1] = ShannonEntropy(combined_histo, 32, &dummy);\r
-    entropy[2] = 0;\r
-    for (i = 0; i < 13; ++i) {\r
-      entropy[2] += ShannonEntropy(&context_histo[i][0], 32, &dummy);\r
-    }\r
-    entropy[0] = 1.0 / (double)total;\r
-    entropy[1] *= entropy[0];\r
-    entropy[2] *= entropy[0];\r
-    /* The triggering heuristics below were tuned by compressing the individual\r
-       files of the silesia corpus. If we skip this kind of context modeling\r
-       for not very well compressible input (i.e. entropy using context modeling\r
-       is 60% of maximal entropy) or if expected savings by symbol are less\r
-       than 0.2 bits, then in every case when it triggers, the final compression\r
-       ratio is improved. Note however that this heuristics might be too strict\r
-       for some cases and could be tuned further. */\r
-    if (entropy[2] > 3.0 || entropy[1] - entropy[2] < 0.2) {\r
-      return BROTLI_FALSE;\r
-    } else {\r
-      *num_literal_contexts = 13;\r
-      *literal_context_map = kStaticContextMapComplexUTF8;\r
-      return BROTLI_TRUE;\r
-    }\r
-  }\r
-}\r
-\r
-static void DecideOverLiteralContextModeling(const uint8_t* input,\r
-    size_t start_pos, size_t length, size_t mask, int quality, size_t size_hint,\r
-    size_t* num_literal_contexts, const uint32_t** literal_context_map) {\r
-  if (quality < MIN_QUALITY_FOR_CONTEXT_MODELING || length < 64) {\r
-    return;\r
-  } else if (ShouldUseComplexStaticContextMap(\r
-      input, start_pos, length, mask, quality, size_hint,\r
-      num_literal_contexts, literal_context_map)) {\r
-    /* Context map was already set, nothing else to do. */\r
-  } else {\r
-    /* Gather bi-gram data of the UTF8 byte prefixes. To make the analysis of\r
-       UTF8 data faster we only examine 64 byte long strides at every 4kB\r
-       intervals. */\r
-    const size_t end_pos = start_pos + length;\r
-    uint32_t bigram_prefix_histo[9] = { 0 };\r
-    for (; start_pos + 64 <= end_pos; start_pos += 4096) {\r
-      static const int lut[4] = { 0, 0, 1, 2 };\r
-      const size_t stride_end_pos = start_pos + 64;\r
-      int prev = lut[input[start_pos & mask] >> 6] * 3;\r
-      size_t pos;\r
-      for (pos = start_pos + 1; pos < stride_end_pos; ++pos) {\r
-        const uint8_t literal = input[pos & mask];\r
-        ++bigram_prefix_histo[prev + lut[literal >> 6]];\r
-        prev = lut[literal >> 6] * 3;\r
-      }\r
-    }\r
-    ChooseContextMap(quality, &bigram_prefix_histo[0], num_literal_contexts,\r
-                     literal_context_map);\r
-  }\r
-}\r
-\r
-static BROTLI_BOOL ShouldCompress(\r
-    const uint8_t* data, const size_t mask, const uint64_t last_flush_pos,\r
-    const size_t bytes, const size_t num_literals, const size_t num_commands) {\r
-  if (num_commands < (bytes >> 8) + 2) {\r
-    if (num_literals > 0.99 * (double)bytes) {\r
-      uint32_t literal_histo[256] = { 0 };\r
-      static const uint32_t kSampleRate = 13;\r
-      static const double kMinEntropy = 7.92;\r
-      const double bit_cost_threshold =\r
-          (double)bytes * kMinEntropy / kSampleRate;\r
-      size_t t = (bytes + kSampleRate - 1) / kSampleRate;\r
-      uint32_t pos = (uint32_t)last_flush_pos;\r
-      size_t i;\r
-      for (i = 0; i < t; i++) {\r
-        ++literal_histo[data[pos & mask]];\r
-        pos += kSampleRate;\r
-      }\r
-      if (BitsEntropy(literal_histo, 256) > bit_cost_threshold) {\r
-        return BROTLI_FALSE;\r
-      }\r
-    }\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-/* Chooses the literal context mode for a metablock */\r
-static ContextType ChooseContextMode(const BrotliEncoderParams* params,\r
-    const uint8_t* data, const size_t pos, const size_t mask,\r
-    const size_t length) {\r
-  /* We only do the computation for the option of something else than\r
-     CONTEXT_UTF8 for the highest qualities */\r
-  if (params->quality >= MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING &&\r
-      !BrotliIsMostlyUTF8(data, pos, mask, length, kMinUTF8Ratio)) {\r
-    return CONTEXT_SIGNED;\r
-  }\r
-  return CONTEXT_UTF8;\r
-}\r
-\r
-static void WriteMetaBlockInternal(MemoryManager* m,\r
-                                   const uint8_t* data,\r
-                                   const size_t mask,\r
-                                   const uint64_t last_flush_pos,\r
-                                   const size_t bytes,\r
-                                   const BROTLI_BOOL is_last,\r
-                                   ContextType literal_context_mode,\r
-                                   const BrotliEncoderParams* params,\r
-                                   const uint8_t prev_byte,\r
-                                   const uint8_t prev_byte2,\r
-                                   const size_t num_literals,\r
-                                   const size_t num_commands,\r
-                                   Command* commands,\r
-                                   const int* saved_dist_cache,\r
-                                   int* dist_cache,\r
-                                   size_t* storage_ix,\r
-                                   uint8_t* storage) {\r
-  const uint32_t wrapped_last_flush_pos = WrapPosition(last_flush_pos);\r
-  uint16_t last_bytes;\r
-  uint8_t last_bytes_bits;\r
-  ContextLut literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode);\r
-  BrotliEncoderParams block_params = *params;\r
-\r
-  if (bytes == 0) {\r
-    /* Write the ISLAST and ISEMPTY bits. */\r
-    BrotliWriteBits(2, 3, storage_ix, storage);\r
-    *storage_ix = (*storage_ix + 7u) & ~7u;\r
-    return;\r
-  }\r
-\r
-  if (!ShouldCompress(data, mask, last_flush_pos, bytes,\r
-                      num_literals, num_commands)) {\r
-    /* Restore the distance cache, as its last update by\r
-       CreateBackwardReferences is now unused. */\r
-    memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));\r
-    BrotliStoreUncompressedMetaBlock(is_last, data,\r
-                                     wrapped_last_flush_pos, mask, bytes,\r
-                                     storage_ix, storage);\r
-    return;\r
-  }\r
-\r
-  BROTLI_DCHECK(*storage_ix <= 14);\r
-  last_bytes = (uint16_t)((storage[1] << 8) | storage[0]);\r
-  last_bytes_bits = (uint8_t)(*storage_ix);\r
-  if (params->quality <= MAX_QUALITY_FOR_STATIC_ENTROPY_CODES) {\r
-    BrotliStoreMetaBlockFast(m, data, wrapped_last_flush_pos,\r
-                             bytes, mask, is_last, params,\r
-                             commands, num_commands,\r
-                             storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-  } else if (params->quality < MIN_QUALITY_FOR_BLOCK_SPLIT) {\r
-    BrotliStoreMetaBlockTrivial(m, data, wrapped_last_flush_pos,\r
-                                bytes, mask, is_last, params,\r
-                                commands, num_commands,\r
-                                storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-  } else {\r
-    MetaBlockSplit mb;\r
-    InitMetaBlockSplit(&mb);\r
-    if (params->quality < MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING) {\r
-      size_t num_literal_contexts = 1;\r
-      const uint32_t* literal_context_map = NULL;\r
-      if (!params->disable_literal_context_modeling) {\r
-        DecideOverLiteralContextModeling(\r
-            data, wrapped_last_flush_pos, bytes, mask, params->quality,\r
-            params->size_hint, &num_literal_contexts,\r
-            &literal_context_map);\r
-      }\r
-      BrotliBuildMetaBlockGreedy(m, data, wrapped_last_flush_pos, mask,\r
-          prev_byte, prev_byte2, literal_context_lut, num_literal_contexts,\r
-          literal_context_map, commands, num_commands, &mb);\r
-      if (BROTLI_IS_OOM(m)) return;\r
-    } else {\r
-      BrotliBuildMetaBlock(m, data, wrapped_last_flush_pos, mask, &block_params,\r
-                           prev_byte, prev_byte2,\r
-                           commands, num_commands,\r
-                           literal_context_mode,\r
-                           &mb);\r
-      if (BROTLI_IS_OOM(m)) return;\r
-    }\r
-    if (params->quality >= MIN_QUALITY_FOR_OPTIMIZE_HISTOGRAMS) {\r
-      /* The number of distance symbols effectively used for distance\r
-         histograms. It might be less than distance alphabet size\r
-         for "Large Window Brotli" (32-bit). */\r
-      uint32_t num_effective_dist_codes = block_params.dist.alphabet_size;\r
-      if (num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) {\r
-        num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS;\r
-      }\r
-      BrotliOptimizeHistograms(num_effective_dist_codes, &mb);\r
-    }\r
-    BrotliStoreMetaBlock(m, data, wrapped_last_flush_pos, bytes, mask,\r
-                         prev_byte, prev_byte2,\r
-                         is_last,\r
-                         &block_params,\r
-                         literal_context_mode,\r
-                         commands, num_commands,\r
-                         &mb,\r
-                         storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    DestroyMetaBlockSplit(m, &mb);\r
-  }\r
-  if (bytes + 4 < (*storage_ix >> 3)) {\r
-    /* Restore the distance cache and last byte. */\r
-    memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));\r
-    storage[0] = (uint8_t)last_bytes;\r
-    storage[1] = (uint8_t)(last_bytes >> 8);\r
-    *storage_ix = last_bytes_bits;\r
-    BrotliStoreUncompressedMetaBlock(is_last, data,\r
-                                     wrapped_last_flush_pos, mask,\r
-                                     bytes, storage_ix, storage);\r
-  }\r
-}\r
-\r
-static void ChooseDistanceParams(BrotliEncoderParams* params) {\r
-  uint32_t distance_postfix_bits = 0;\r
-  uint32_t num_direct_distance_codes = 0;\r
-\r
-  if (params->quality >= MIN_QUALITY_FOR_NONZERO_DISTANCE_PARAMS) {\r
-    uint32_t ndirect_msb;\r
-    if (params->mode == BROTLI_MODE_FONT) {\r
-      distance_postfix_bits = 1;\r
-      num_direct_distance_codes = 12;\r
-    } else {\r
-      distance_postfix_bits = params->dist.distance_postfix_bits;\r
-      num_direct_distance_codes = params->dist.num_direct_distance_codes;\r
-    }\r
-    ndirect_msb = (num_direct_distance_codes >> distance_postfix_bits) & 0x0F;\r
-    if (distance_postfix_bits > BROTLI_MAX_NPOSTFIX ||\r
-        num_direct_distance_codes > BROTLI_MAX_NDIRECT ||\r
-        (ndirect_msb << distance_postfix_bits) != num_direct_distance_codes) {\r
-      distance_postfix_bits = 0;\r
-      num_direct_distance_codes = 0;\r
-    }\r
-  }\r
-\r
-  BrotliInitDistanceParams(\r
-      params, distance_postfix_bits, num_direct_distance_codes);\r
-}\r
-\r
-static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s) {\r
-  if (BROTLI_IS_OOM(&s->memory_manager_)) return BROTLI_FALSE;\r
-  if (s->is_initialized_) return BROTLI_TRUE;\r
-\r
-  SanitizeParams(&s->params);\r
-  s->params.lgblock = ComputeLgBlock(&s->params);\r
-  ChooseDistanceParams(&s->params);\r
-\r
-  s->remaining_metadata_bytes_ = BROTLI_UINT32_MAX;\r
-\r
-  RingBufferSetup(&s->params, &s->ringbuffer_);\r
-\r
-  /* Initialize last byte with stream header. */\r
-  {\r
-    int lgwin = s->params.lgwin;\r
-    if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY ||\r
-        s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) {\r
-      lgwin = BROTLI_MAX(int, lgwin, 18);\r
-    }\r
-    EncodeWindowBits(lgwin, s->params.large_window,\r
-                     &s->last_bytes_, &s->last_bytes_bits_);\r
-  }\r
-\r
-  if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY) {\r
-    InitCommandPrefixCodes(s->cmd_depths_, s->cmd_bits_,\r
-                           s->cmd_code_, &s->cmd_code_numbits_);\r
-  }\r
-\r
-  s->is_initialized_ = BROTLI_TRUE;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static void BrotliEncoderInitParams(BrotliEncoderParams* params) {\r
-  params->mode = BROTLI_DEFAULT_MODE;\r
-  params->large_window = BROTLI_FALSE;\r
-  params->quality = BROTLI_DEFAULT_QUALITY;\r
-  params->lgwin = BROTLI_DEFAULT_WINDOW;\r
-  params->lgblock = 0;\r
-  params->size_hint = 0;\r
-  params->disable_literal_context_modeling = BROTLI_FALSE;\r
-  BrotliInitEncoderDictionary(&params->dictionary);\r
-  params->dist.distance_postfix_bits = 0;\r
-  params->dist.num_direct_distance_codes = 0;\r
-  params->dist.alphabet_size =\r
-      BROTLI_DISTANCE_ALPHABET_SIZE(0, 0, BROTLI_MAX_DISTANCE_BITS);\r
-  params->dist.max_distance = BROTLI_MAX_DISTANCE;\r
-}\r
-\r
-static void BrotliEncoderInitState(BrotliEncoderState* s) {\r
-  BrotliEncoderInitParams(&s->params);\r
-  s->input_pos_ = 0;\r
-  s->num_commands_ = 0;\r
-  s->num_literals_ = 0;\r
-  s->last_insert_len_ = 0;\r
-  s->last_flush_pos_ = 0;\r
-  s->last_processed_pos_ = 0;\r
-  s->prev_byte_ = 0;\r
-  s->prev_byte2_ = 0;\r
-  s->storage_size_ = 0;\r
-  s->storage_ = 0;\r
-  s->hasher_ = NULL;\r
-  s->large_table_ = NULL;\r
-  s->large_table_size_ = 0;\r
-  s->cmd_code_numbits_ = 0;\r
-  s->command_buf_ = NULL;\r
-  s->literal_buf_ = NULL;\r
-  s->next_out_ = NULL;\r
-  s->available_out_ = 0;\r
-  s->total_out_ = 0;\r
-  s->stream_state_ = BROTLI_STREAM_PROCESSING;\r
-  s->is_last_block_emitted_ = BROTLI_FALSE;\r
-  s->is_initialized_ = BROTLI_FALSE;\r
-\r
-  RingBufferInit(&s->ringbuffer_);\r
-\r
-  s->commands_ = 0;\r
-  s->cmd_alloc_size_ = 0;\r
-\r
-  /* Initialize distance cache. */\r
-  s->dist_cache_[0] = 4;\r
-  s->dist_cache_[1] = 11;\r
-  s->dist_cache_[2] = 15;\r
-  s->dist_cache_[3] = 16;\r
-  /* Save the state of the distance cache in case we need to restore it for\r
-     emitting an uncompressed block. */\r
-  memcpy(s->saved_dist_cache_, s->dist_cache_, sizeof(s->saved_dist_cache_));\r
-}\r
-\r
-BrotliEncoderState* BrotliEncoderCreateInstance(\r
-    brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {\r
-  BrotliEncoderState* state = 0;\r
-  if (!alloc_func && !free_func) {\r
-    state = (BrotliEncoderState*)malloc(sizeof(BrotliEncoderState));\r
-  } else if (alloc_func && free_func) {\r
-    state = (BrotliEncoderState*)alloc_func(opaque, sizeof(BrotliEncoderState));\r
-  }\r
-  if (state == 0) {\r
-    /* BROTLI_DUMP(); */\r
-    return 0;\r
-  }\r
-  BrotliInitMemoryManager(\r
-      &state->memory_manager_, alloc_func, free_func, opaque);\r
-  BrotliEncoderInitState(state);\r
-  return state;\r
-}\r
-\r
-static void BrotliEncoderCleanupState(BrotliEncoderState* s) {\r
-  MemoryManager* m = &s->memory_manager_;\r
-  if (BROTLI_IS_OOM(m)) {\r
-    BrotliWipeOutMemoryManager(m);\r
-    return;\r
-  }\r
-  BROTLI_FREE(m, s->storage_);\r
-  BROTLI_FREE(m, s->commands_);\r
-  RingBufferFree(m, &s->ringbuffer_);\r
-  DestroyHasher(m, &s->hasher_);\r
-  BROTLI_FREE(m, s->large_table_);\r
-  BROTLI_FREE(m, s->command_buf_);\r
-  BROTLI_FREE(m, s->literal_buf_);\r
-}\r
-\r
-/* Deinitializes and frees BrotliEncoderState instance. */\r
-void BrotliEncoderDestroyInstance(BrotliEncoderState* state) {\r
-  if (!state) {\r
-    return;\r
-  } else {\r
-    MemoryManager* m = &state->memory_manager_;\r
-    brotli_free_func free_func = m->free_func;\r
-    void* opaque = m->opaque;\r
-    BrotliEncoderCleanupState(state);\r
-    free_func(opaque, state);\r
-  }\r
-}\r
-\r
-/*\r
-   Copies the given input data to the internal ring buffer of the compressor.\r
-   No processing of the data occurs at this time and this function can be\r
-   called multiple times before calling WriteBrotliData() to process the\r
-   accumulated input. At most input_block_size() bytes of input data can be\r
-   copied to the ring buffer, otherwise the next WriteBrotliData() will fail.\r
- */\r
-static void CopyInputToRingBuffer(BrotliEncoderState* s,\r
-                                  const size_t input_size,\r
-                                  const uint8_t* input_buffer) {\r
-  RingBuffer* ringbuffer_ = &s->ringbuffer_;\r
-  MemoryManager* m = &s->memory_manager_;\r
-  RingBufferWrite(m, input_buffer, input_size, ringbuffer_);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  s->input_pos_ += input_size;\r
-\r
-  /* TL;DR: If needed, initialize 7 more bytes in the ring buffer to make the\r
-     hashing not depend on uninitialized data. This makes compression\r
-     deterministic and it prevents uninitialized memory warnings in Valgrind.\r
-     Even without erasing, the output would be valid (but nondeterministic).\r
-\r
-     Background information: The compressor stores short (at most 8 bytes)\r
-     substrings of the input already read in a hash table, and detects\r
-     repetitions by looking up such substrings in the hash table. If it\r
-     can find a substring, it checks whether the substring is really there\r
-     in the ring buffer (or it's just a hash collision). Should the hash\r
-     table become corrupt, this check makes sure that the output is\r
-     still valid, albeit the compression ratio would be bad.\r
-\r
-     The compressor populates the hash table from the ring buffer as it's\r
-     reading new bytes from the input. However, at the last few indexes of\r
-     the ring buffer, there are not enough bytes to build full-length\r
-     substrings from. Since the hash table always contains full-length\r
-     substrings, we erase with dummy zeros here to make sure that those\r
-     substrings will contain zeros at the end instead of uninitialized\r
-     data.\r
-\r
-     Please note that erasing is not necessary (because the\r
-     memory region is already initialized since he ring buffer\r
-     has a `tail' that holds a copy of the beginning,) so we\r
-     skip erasing if we have already gone around at least once in\r
-     the ring buffer.\r
-\r
-     Only clear during the first round of ring-buffer writes. On\r
-     subsequent rounds data in the ring-buffer would be affected. */\r
-  if (ringbuffer_->pos_ <= ringbuffer_->mask_) {\r
-    /* This is the first time when the ring buffer is being written.\r
-       We clear 7 bytes just after the bytes that have been copied from\r
-       the input buffer.\r
-\r
-       The ring-buffer has a "tail" that holds a copy of the beginning,\r
-       but only once the ring buffer has been fully written once, i.e.,\r
-       pos <= mask. For the first time, we need to write values\r
-       in this tail (where index may be larger than mask), so that\r
-       we have exactly defined behavior and don't read uninitialized\r
-       memory. Due to performance reasons, hashing reads data using a\r
-       LOAD64, which can go 7 bytes beyond the bytes written in the\r
-       ring-buffer. */\r
-    memset(ringbuffer_->buffer_ + ringbuffer_->pos_, 0, 7);\r
-  }\r
-}\r
-\r
-/* Marks all input as processed.\r
-   Returns true if position wrapping occurs. */\r
-static BROTLI_BOOL UpdateLastProcessedPos(BrotliEncoderState* s) {\r
-  uint32_t wrapped_last_processed_pos = WrapPosition(s->last_processed_pos_);\r
-  uint32_t wrapped_input_pos = WrapPosition(s->input_pos_);\r
-  s->last_processed_pos_ = s->input_pos_;\r
-  return TO_BROTLI_BOOL(wrapped_input_pos < wrapped_last_processed_pos);\r
-}\r
-\r
-static void ExtendLastCommand(BrotliEncoderState* s, uint32_t* bytes,\r
-                              uint32_t* wrapped_last_processed_pos) {\r
-  Command* last_command = &s->commands_[s->num_commands_ - 1];\r
-  const uint8_t* data = s->ringbuffer_.buffer_;\r
-  const uint32_t mask = s->ringbuffer_.mask_;\r
-  uint64_t max_backward_distance =\r
-      (((uint64_t)1) << s->params.lgwin) - BROTLI_WINDOW_GAP;\r
-  uint64_t last_copy_len = last_command->copy_len_ & 0x1FFFFFF;\r
-  uint64_t last_processed_pos = s->last_processed_pos_ - last_copy_len;\r
-  uint64_t max_distance = last_processed_pos < max_backward_distance ?\r
-      last_processed_pos : max_backward_distance;\r
-  uint64_t cmd_dist = (uint64_t)s->dist_cache_[0];\r
-  uint32_t distance_code = CommandRestoreDistanceCode(last_command,\r
-                                                      &s->params.dist);\r
-  if (distance_code < BROTLI_NUM_DISTANCE_SHORT_CODES ||\r
-      distance_code - (BROTLI_NUM_DISTANCE_SHORT_CODES - 1) == cmd_dist) {\r
-    if (cmd_dist <= max_distance) {\r
-      while (*bytes != 0 && data[*wrapped_last_processed_pos & mask] ==\r
-             data[(*wrapped_last_processed_pos - cmd_dist) & mask]) {\r
-        last_command->copy_len_++;\r
-        (*bytes)--;\r
-        (*wrapped_last_processed_pos)++;\r
-      }\r
-    }\r
-    /* The copy length is at most the metablock size, and thus expressible. */\r
-    GetLengthCode(last_command->insert_len_,\r
-                  (size_t)((int)(last_command->copy_len_ & 0x1FFFFFF) +\r
-                           (int)(last_command->copy_len_ >> 25)),\r
-                  TO_BROTLI_BOOL((last_command->dist_prefix_ & 0x3FF) == 0),\r
-                  &last_command->cmd_prefix_);\r
-  }\r
-}\r
-\r
-/*\r
-   Processes the accumulated input data and sets |*out_size| to the length of\r
-   the new output meta-block, or to zero if no new output meta-block has been\r
-   created (in this case the processed input data is buffered internally).\r
-   If |*out_size| is positive, |*output| points to the start of the output\r
-   data. If |is_last| or |force_flush| is BROTLI_TRUE, an output meta-block is\r
-   always created. However, until |is_last| is BROTLI_TRUE encoder may retain up\r
-   to 7 bits of the last byte of output. To force encoder to dump the remaining\r
-   bits use WriteMetadata() to append an empty meta-data block.\r
-   Returns BROTLI_FALSE if the size of the input data is larger than\r
-   input_block_size().\r
- */\r
-static BROTLI_BOOL EncodeData(\r
-    BrotliEncoderState* s, const BROTLI_BOOL is_last,\r
-    const BROTLI_BOOL force_flush, size_t* out_size, uint8_t** output) {\r
-  const uint64_t delta = UnprocessedInputSize(s);\r
-  uint32_t bytes = (uint32_t)delta;\r
-  uint32_t wrapped_last_processed_pos = WrapPosition(s->last_processed_pos_);\r
-  uint8_t* data;\r
-  uint32_t mask;\r
-  MemoryManager* m = &s->memory_manager_;\r
-  ContextType literal_context_mode;\r
-\r
-  data = s->ringbuffer_.buffer_;\r
-  mask = s->ringbuffer_.mask_;\r
-\r
-  /* Adding more blocks after "last" block is forbidden. */\r
-  if (s->is_last_block_emitted_) return BROTLI_FALSE;\r
-  if (is_last) s->is_last_block_emitted_ = BROTLI_TRUE;\r
-\r
-  if (delta > InputBlockSize(s)) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  if (s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY &&\r
-      !s->command_buf_) {\r
-    s->command_buf_ =\r
-        BROTLI_ALLOC(m, uint32_t, kCompressFragmentTwoPassBlockSize);\r
-    s->literal_buf_ =\r
-        BROTLI_ALLOC(m, uint8_t, kCompressFragmentTwoPassBlockSize);\r
-    if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-  }\r
-\r
-  if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY ||\r
-      s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) {\r
-    uint8_t* storage;\r
-    size_t storage_ix = s->last_bytes_bits_;\r
-    size_t table_size;\r
-    int* table;\r
-\r
-    if (delta == 0 && !is_last) {\r
-      /* We have no new input data and we don't have to finish the stream, so\r
-         nothing to do. */\r
-      *out_size = 0;\r
-      return BROTLI_TRUE;\r
-    }\r
-    storage = GetBrotliStorage(s, 2 * bytes + 503);\r
-    if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-    storage[0] = (uint8_t)s->last_bytes_;\r
-    storage[1] = (uint8_t)(s->last_bytes_ >> 8);\r
-    table = GetHashTable(s, s->params.quality, bytes, &table_size);\r
-    if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-    if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY) {\r
-      BrotliCompressFragmentFast(\r
-          m, &data[wrapped_last_processed_pos & mask],\r
-          bytes, is_last,\r
-          table, table_size,\r
-          s->cmd_depths_, s->cmd_bits_,\r
-          &s->cmd_code_numbits_, s->cmd_code_,\r
-          &storage_ix, storage);\r
-      if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-    } else {\r
-      BrotliCompressFragmentTwoPass(\r
-          m, &data[wrapped_last_processed_pos & mask],\r
-          bytes, is_last,\r
-          s->command_buf_, s->literal_buf_,\r
-          table, table_size,\r
-          &storage_ix, storage);\r
-      if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-    }\r
-    s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]);\r
-    s->last_bytes_bits_ = storage_ix & 7u;\r
-    UpdateLastProcessedPos(s);\r
-    *output = &storage[0];\r
-    *out_size = storage_ix >> 3;\r
-    return BROTLI_TRUE;\r
-  }\r
-\r
-  {\r
-    /* Theoretical max number of commands is 1 per 2 bytes. */\r
-    size_t newsize = s->num_commands_ + bytes / 2 + 1;\r
-    if (newsize > s->cmd_alloc_size_) {\r
-      Command* new_commands;\r
-      /* Reserve a bit more memory to allow merging with a next block\r
-         without reallocation: that would impact speed. */\r
-      newsize += (bytes / 4) + 16;\r
-      s->cmd_alloc_size_ = newsize;\r
-      new_commands = BROTLI_ALLOC(m, Command, newsize);\r
-      if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-      if (s->commands_) {\r
-        memcpy(new_commands, s->commands_, sizeof(Command) * s->num_commands_);\r
-        BROTLI_FREE(m, s->commands_);\r
-      }\r
-      s->commands_ = new_commands;\r
-    }\r
-  }\r
-\r
-  InitOrStitchToPreviousBlock(m, &s->hasher_, data, mask, &s->params,\r
-      wrapped_last_processed_pos, bytes, is_last);\r
-\r
-  literal_context_mode = ChooseContextMode(\r
-      &s->params, data, WrapPosition(s->last_flush_pos_),\r
-      mask, (size_t)(s->input_pos_ - s->last_flush_pos_));\r
-\r
-  if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-\r
-  if (s->num_commands_ && s->last_insert_len_ == 0) {\r
-    ExtendLastCommand(s, &bytes, &wrapped_last_processed_pos);\r
-  }\r
-\r
-  if (s->params.quality == ZOPFLIFICATION_QUALITY) {\r
-    BROTLI_DCHECK(s->params.hasher.type == 10);\r
-    BrotliCreateZopfliBackwardReferences(m,\r
-        bytes, wrapped_last_processed_pos,\r
-        data, mask, &s->params, s->hasher_, s->dist_cache_,\r
-        &s->last_insert_len_, &s->commands_[s->num_commands_],\r
-        &s->num_commands_, &s->num_literals_);\r
-    if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-  } else if (s->params.quality == HQ_ZOPFLIFICATION_QUALITY) {\r
-    BROTLI_DCHECK(s->params.hasher.type == 10);\r
-    BrotliCreateHqZopfliBackwardReferences(m,\r
-        bytes, wrapped_last_processed_pos,\r
-        data, mask, &s->params, s->hasher_, s->dist_cache_,\r
-        &s->last_insert_len_, &s->commands_[s->num_commands_],\r
-        &s->num_commands_, &s->num_literals_);\r
-    if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-  } else {\r
-    BrotliCreateBackwardReferences(\r
-        bytes, wrapped_last_processed_pos,\r
-        data, mask, &s->params, s->hasher_, s->dist_cache_,\r
-        &s->last_insert_len_, &s->commands_[s->num_commands_],\r
-        &s->num_commands_, &s->num_literals_);\r
-  }\r
-\r
-  {\r
-    const size_t max_length = MaxMetablockSize(&s->params);\r
-    const size_t max_literals = max_length / 8;\r
-    const size_t max_commands = max_length / 8;\r
-    const size_t processed_bytes = (size_t)(s->input_pos_ - s->last_flush_pos_);\r
-    /* If maximal possible additional block doesn't fit metablock, flush now. */\r
-    /* TODO: Postpone decision until next block arrives? */\r
-    const BROTLI_BOOL next_input_fits_metablock = TO_BROTLI_BOOL(\r
-        processed_bytes + InputBlockSize(s) <= max_length);\r
-    /* If block splitting is not used, then flush as soon as there is some\r
-       amount of commands / literals produced. */\r
-    const BROTLI_BOOL should_flush = TO_BROTLI_BOOL(\r
-        s->params.quality < MIN_QUALITY_FOR_BLOCK_SPLIT &&\r
-        s->num_literals_ + s->num_commands_ >= MAX_NUM_DELAYED_SYMBOLS);\r
-    if (!is_last && !force_flush && !should_flush &&\r
-        next_input_fits_metablock &&\r
-        s->num_literals_ < max_literals &&\r
-        s->num_commands_ < max_commands) {\r
-      /* Merge with next input block. Everything will happen later. */\r
-      if (UpdateLastProcessedPos(s)) {\r
-        HasherReset(s->hasher_);\r
-      }\r
-      *out_size = 0;\r
-      return BROTLI_TRUE;\r
-    }\r
-  }\r
-\r
-  /* Create the last insert-only command. */\r
-  if (s->last_insert_len_ > 0) {\r
-    InitInsertCommand(&s->commands_[s->num_commands_++], s->last_insert_len_);\r
-    s->num_literals_ += s->last_insert_len_;\r
-    s->last_insert_len_ = 0;\r
-  }\r
-\r
-  if (!is_last && s->input_pos_ == s->last_flush_pos_) {\r
-    /* We have no new input data and we don't have to finish the stream, so\r
-       nothing to do. */\r
-    *out_size = 0;\r
-    return BROTLI_TRUE;\r
-  }\r
-  BROTLI_DCHECK(s->input_pos_ >= s->last_flush_pos_);\r
-  BROTLI_DCHECK(s->input_pos_ > s->last_flush_pos_ || is_last);\r
-  BROTLI_DCHECK(s->input_pos_ - s->last_flush_pos_ <= 1u << 24);\r
-  {\r
-    const uint32_t metablock_size =\r
-        (uint32_t)(s->input_pos_ - s->last_flush_pos_);\r
-    uint8_t* storage = GetBrotliStorage(s, 2 * metablock_size + 503);\r
-    size_t storage_ix = s->last_bytes_bits_;\r
-    if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-    storage[0] = (uint8_t)s->last_bytes_;\r
-    storage[1] = (uint8_t)(s->last_bytes_ >> 8);\r
-    WriteMetaBlockInternal(\r
-        m, data, mask, s->last_flush_pos_, metablock_size, is_last,\r
-        literal_context_mode, &s->params, s->prev_byte_, s->prev_byte2_,\r
-        s->num_literals_, s->num_commands_, s->commands_, s->saved_dist_cache_,\r
-        s->dist_cache_, &storage_ix, storage);\r
-    if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-    s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]);\r
-    s->last_bytes_bits_ = storage_ix & 7u;\r
-    s->last_flush_pos_ = s->input_pos_;\r
-    if (UpdateLastProcessedPos(s)) {\r
-      HasherReset(s->hasher_);\r
-    }\r
-    if (s->last_flush_pos_ > 0) {\r
-      s->prev_byte_ = data[((uint32_t)s->last_flush_pos_ - 1) & mask];\r
-    }\r
-    if (s->last_flush_pos_ > 1) {\r
-      s->prev_byte2_ = data[(uint32_t)(s->last_flush_pos_ - 2) & mask];\r
-    }\r
-    s->num_commands_ = 0;\r
-    s->num_literals_ = 0;\r
-    /* Save the state of the distance cache in case we need to restore it for\r
-       emitting an uncompressed block. */\r
-    memcpy(s->saved_dist_cache_, s->dist_cache_, sizeof(s->saved_dist_cache_));\r
-    *output = &storage[0];\r
-    *out_size = storage_ix >> 3;\r
-    return BROTLI_TRUE;\r
-  }\r
-}\r
-\r
-/* Dumps remaining output bits and metadata header to |header|.\r
-   Returns number of produced bytes.\r
-   REQUIRED: |header| should be 8-byte aligned and at least 16 bytes long.\r
-   REQUIRED: |block_size| <= (1 << 24). */\r
-static size_t WriteMetadataHeader(\r
-    BrotliEncoderState* s, const size_t block_size, uint8_t* header) {\r
-  size_t storage_ix;\r
-  storage_ix = s->last_bytes_bits_;\r
-  header[0] = (uint8_t)s->last_bytes_;\r
-  header[1] = (uint8_t)(s->last_bytes_ >> 8);\r
-  s->last_bytes_ = 0;\r
-  s->last_bytes_bits_ = 0;\r
-\r
-  BrotliWriteBits(1, 0, &storage_ix, header);\r
-  BrotliWriteBits(2, 3, &storage_ix, header);\r
-  BrotliWriteBits(1, 0, &storage_ix, header);\r
-  if (block_size == 0) {\r
-    BrotliWriteBits(2, 0, &storage_ix, header);\r
-  } else {\r
-    uint32_t nbits = (block_size == 1) ? 0 :\r
-        (Log2FloorNonZero((uint32_t)block_size - 1) + 1);\r
-    uint32_t nbytes = (nbits + 7) / 8;\r
-    BrotliWriteBits(2, nbytes, &storage_ix, header);\r
-    BrotliWriteBits(8 * nbytes, block_size - 1, &storage_ix, header);\r
-  }\r
-  return (storage_ix + 7u) >> 3;\r
-}\r
-\r
-static BROTLI_BOOL BrotliCompressBufferQuality10(\r
-    int lgwin, size_t input_size, const uint8_t* input_buffer,\r
-    size_t* encoded_size, uint8_t* encoded_buffer) {\r
-  MemoryManager memory_manager;\r
-  MemoryManager* m = &memory_manager;\r
-\r
-  const size_t mask = BROTLI_SIZE_MAX >> 1;\r
-  const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(lgwin);\r
-  int dist_cache[4] = { 4, 11, 15, 16 };\r
-  int saved_dist_cache[4] = { 4, 11, 15, 16 };\r
-  BROTLI_BOOL ok = BROTLI_TRUE;\r
-  const size_t max_out_size = *encoded_size;\r
-  size_t total_out_size = 0;\r
-  uint16_t last_bytes;\r
-  uint8_t last_bytes_bits;\r
-  HasherHandle hasher = NULL;\r
-\r
-  const size_t hasher_eff_size =\r
-      BROTLI_MIN(size_t, input_size, max_backward_limit + BROTLI_WINDOW_GAP);\r
-\r
-  BrotliEncoderParams params;\r
-\r
-  const int lgmetablock = BROTLI_MIN(int, 24, lgwin + 1);\r
-  size_t max_block_size;\r
-  const size_t max_metablock_size = (size_t)1 << lgmetablock;\r
-  const size_t max_literals_per_metablock = max_metablock_size / 8;\r
-  const size_t max_commands_per_metablock = max_metablock_size / 8;\r
-  size_t metablock_start = 0;\r
-  uint8_t prev_byte = 0;\r
-  uint8_t prev_byte2 = 0;\r
-\r
-  BrotliEncoderInitParams(&params);\r
-  params.quality = 10;\r
-  params.lgwin = lgwin;\r
-  if (lgwin > BROTLI_MAX_WINDOW_BITS) {\r
-    params.large_window = BROTLI_TRUE;\r
-  }\r
-  SanitizeParams(&params);\r
-  params.lgblock = ComputeLgBlock(&params);\r
-  ChooseDistanceParams(&params);\r
-  max_block_size = (size_t)1 << params.lgblock;\r
-\r
-  BrotliInitMemoryManager(m, 0, 0, 0);\r
-\r
-  BROTLI_DCHECK(input_size <= mask + 1);\r
-  EncodeWindowBits(lgwin, params.large_window, &last_bytes, &last_bytes_bits);\r
-  InitOrStitchToPreviousBlock(m, &hasher, input_buffer, mask, &params,\r
-      0, hasher_eff_size, BROTLI_TRUE);\r
-  if (BROTLI_IS_OOM(m)) goto oom;\r
-\r
-  while (ok && metablock_start < input_size) {\r
-    const size_t metablock_end =\r
-        BROTLI_MIN(size_t, input_size, metablock_start + max_metablock_size);\r
-    const size_t expected_num_commands =\r
-        (metablock_end - metablock_start) / 12 + 16;\r
-    Command* commands = 0;\r
-    size_t num_commands = 0;\r
-    size_t last_insert_len = 0;\r
-    size_t num_literals = 0;\r
-    size_t metablock_size = 0;\r
-    size_t cmd_alloc_size = 0;\r
-    BROTLI_BOOL is_last;\r
-    uint8_t* storage;\r
-    size_t storage_ix;\r
-\r
-    ContextType literal_context_mode = ChooseContextMode(&params,\r
-        input_buffer, metablock_start, mask, metablock_end - metablock_start);\r
-\r
-    size_t block_start;\r
-    for (block_start = metablock_start; block_start < metablock_end; ) {\r
-      size_t block_size =\r
-          BROTLI_MIN(size_t, metablock_end - block_start, max_block_size);\r
-      ZopfliNode* nodes = BROTLI_ALLOC(m, ZopfliNode, block_size + 1);\r
-      size_t path_size;\r
-      size_t new_cmd_alloc_size;\r
-      if (BROTLI_IS_OOM(m)) goto oom;\r
-      BrotliInitZopfliNodes(nodes, block_size + 1);\r
-      StitchToPreviousBlockH10(hasher, block_size, block_start,\r
-                               input_buffer, mask);\r
-      path_size = BrotliZopfliComputeShortestPath(m,\r
-          block_size, block_start, input_buffer, mask, &params,\r
-          max_backward_limit, dist_cache, hasher, nodes);\r
-      if (BROTLI_IS_OOM(m)) goto oom;\r
-      /* We allocate a command buffer in the first iteration of this loop that\r
-         will be likely big enough for the whole metablock, so that for most\r
-         inputs we will not have to reallocate in later iterations. We do the\r
-         allocation here and not before the loop, because if the input is small,\r
-         this will be allocated after the Zopfli cost model is freed, so this\r
-         will not increase peak memory usage.\r
-         TODO: If the first allocation is too small, increase command\r
-         buffer size exponentially. */\r
-      new_cmd_alloc_size = BROTLI_MAX(size_t, expected_num_commands,\r
-                                      num_commands + path_size + 1);\r
-      if (cmd_alloc_size != new_cmd_alloc_size) {\r
-        Command* new_commands = BROTLI_ALLOC(m, Command, new_cmd_alloc_size);\r
-        if (BROTLI_IS_OOM(m)) goto oom;\r
-        cmd_alloc_size = new_cmd_alloc_size;\r
-        if (commands) {\r
-          memcpy(new_commands, commands, sizeof(Command) * num_commands);\r
-          BROTLI_FREE(m, commands);\r
-        }\r
-        commands = new_commands;\r
-      }\r
-      BrotliZopfliCreateCommands(block_size, block_start, max_backward_limit,\r
-                                 &nodes[0], dist_cache, &last_insert_len,\r
-                                 &params, &commands[num_commands],\r
-                                 &num_literals);\r
-      num_commands += path_size;\r
-      block_start += block_size;\r
-      metablock_size += block_size;\r
-      BROTLI_FREE(m, nodes);\r
-      if (num_literals > max_literals_per_metablock ||\r
-          num_commands > max_commands_per_metablock) {\r
-        break;\r
-      }\r
-    }\r
-\r
-    if (last_insert_len > 0) {\r
-      InitInsertCommand(&commands[num_commands++], last_insert_len);\r
-      num_literals += last_insert_len;\r
-    }\r
-\r
-    is_last = TO_BROTLI_BOOL(metablock_start + metablock_size == input_size);\r
-    storage = NULL;\r
-    storage_ix = last_bytes_bits;\r
-\r
-    if (metablock_size == 0) {\r
-      /* Write the ISLAST and ISEMPTY bits. */\r
-      storage = BROTLI_ALLOC(m, uint8_t, 16);\r
-      if (BROTLI_IS_OOM(m)) goto oom;\r
-      storage[0] = (uint8_t)last_bytes;\r
-      storage[1] = (uint8_t)(last_bytes >> 8);\r
-      BrotliWriteBits(2, 3, &storage_ix, storage);\r
-      storage_ix = (storage_ix + 7u) & ~7u;\r
-    } else if (!ShouldCompress(input_buffer, mask, metablock_start,\r
-                               metablock_size, num_literals, num_commands)) {\r
-      /* Restore the distance cache, as its last update by\r
-         CreateBackwardReferences is now unused. */\r
-      memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));\r
-      storage = BROTLI_ALLOC(m, uint8_t, metablock_size + 16);\r
-      if (BROTLI_IS_OOM(m)) goto oom;\r
-      storage[0] = (uint8_t)last_bytes;\r
-      storage[1] = (uint8_t)(last_bytes >> 8);\r
-      BrotliStoreUncompressedMetaBlock(is_last, input_buffer,\r
-                                       metablock_start, mask, metablock_size,\r
-                                       &storage_ix, storage);\r
-    } else {\r
-      MetaBlockSplit mb;\r
-      BrotliEncoderParams block_params = params;\r
-      InitMetaBlockSplit(&mb);\r
-      BrotliBuildMetaBlock(m, input_buffer, metablock_start, mask,\r
-                           &block_params,\r
-                           prev_byte, prev_byte2,\r
-                           commands, num_commands,\r
-                           literal_context_mode,\r
-                           &mb);\r
-      if (BROTLI_IS_OOM(m)) goto oom;\r
-      {\r
-        /* The number of distance symbols effectively used for distance\r
-           histograms. It might be less than distance alphabet size\r
-           for "Large Window Brotli" (32-bit). */\r
-        uint32_t num_effective_dist_codes = block_params.dist.alphabet_size;\r
-        if (num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) {\r
-          num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS;\r
-        }\r
-        BrotliOptimizeHistograms(num_effective_dist_codes, &mb);\r
-      }\r
-      storage = BROTLI_ALLOC(m, uint8_t, 2 * metablock_size + 503);\r
-      if (BROTLI_IS_OOM(m)) goto oom;\r
-      storage[0] = (uint8_t)last_bytes;\r
-      storage[1] = (uint8_t)(last_bytes >> 8);\r
-      BrotliStoreMetaBlock(m, input_buffer, metablock_start, metablock_size,\r
-                           mask, prev_byte, prev_byte2,\r
-                           is_last,\r
-                           &block_params,\r
-                           literal_context_mode,\r
-                           commands, num_commands,\r
-                           &mb,\r
-                           &storage_ix, storage);\r
-      if (BROTLI_IS_OOM(m)) goto oom;\r
-      if (metablock_size + 4 < (storage_ix >> 3)) {\r
-        /* Restore the distance cache and last byte. */\r
-        memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));\r
-        storage[0] = (uint8_t)last_bytes;\r
-        storage[1] = (uint8_t)(last_bytes >> 8);\r
-        storage_ix = last_bytes_bits;\r
-        BrotliStoreUncompressedMetaBlock(is_last, input_buffer,\r
-                                         metablock_start, mask,\r
-                                         metablock_size, &storage_ix, storage);\r
-      }\r
-      DestroyMetaBlockSplit(m, &mb);\r
-    }\r
-    last_bytes = (uint16_t)(storage[storage_ix >> 3]);\r
-    last_bytes_bits = storage_ix & 7u;\r
-    metablock_start += metablock_size;\r
-    if (metablock_start < input_size) {\r
-      prev_byte = input_buffer[metablock_start - 1];\r
-      prev_byte2 = input_buffer[metablock_start - 2];\r
-    }\r
-    /* Save the state of the distance cache in case we need to restore it for\r
-       emitting an uncompressed block. */\r
-    memcpy(saved_dist_cache, dist_cache, 4 * sizeof(dist_cache[0]));\r
-\r
-    {\r
-      const size_t out_size = storage_ix >> 3;\r
-      total_out_size += out_size;\r
-      if (total_out_size <= max_out_size) {\r
-        memcpy(encoded_buffer, storage, out_size);\r
-        encoded_buffer += out_size;\r
-      } else {\r
-        ok = BROTLI_FALSE;\r
-      }\r
-    }\r
-    BROTLI_FREE(m, storage);\r
-    BROTLI_FREE(m, commands);\r
-  }\r
-\r
-  *encoded_size = total_out_size;\r
-  DestroyHasher(m, &hasher);\r
-  return ok;\r
-\r
-oom:\r
-  BrotliWipeOutMemoryManager(m);\r
-  return BROTLI_FALSE;\r
-}\r
-\r
-size_t BrotliEncoderMaxCompressedSize(size_t input_size) {\r
-  /* [window bits / empty metadata] + N * [uncompressed] + [last empty] */\r
-  size_t num_large_blocks = input_size >> 14;\r
-  size_t overhead = 2 + (4 * num_large_blocks) + 3 + 1;\r
-  size_t result = input_size + overhead;\r
-  if (input_size == 0) return 2;\r
-  return (result < input_size) ? 0 : result;\r
-}\r
-\r
-/* Wraps data to uncompressed brotli stream with minimal window size.\r
-   |output| should point at region with at least BrotliEncoderMaxCompressedSize\r
-   addressable bytes.\r
-   Returns the length of stream. */\r
-static size_t MakeUncompressedStream(\r
-    const uint8_t* input, size_t input_size, uint8_t* output) {\r
-  size_t size = input_size;\r
-  size_t result = 0;\r
-  size_t offset = 0;\r
-  if (input_size == 0) {\r
-    output[0] = 6;\r
-    return 1;\r
-  }\r
-  output[result++] = 0x21;  /* window bits = 10, is_last = false */\r
-  output[result++] = 0x03;  /* empty metadata, padding */\r
-  while (size > 0) {\r
-    uint32_t nibbles = 0;\r
-    uint32_t chunk_size;\r
-    uint32_t bits;\r
-    chunk_size = (size > (1u << 24)) ? (1u << 24) : (uint32_t)size;\r
-    if (chunk_size > (1u << 16)) nibbles = (chunk_size > (1u << 20)) ? 2 : 1;\r
-    bits =\r
-        (nibbles << 1) | ((chunk_size - 1) << 3) | (1u << (19 + 4 * nibbles));\r
-    output[result++] = (uint8_t)bits;\r
-    output[result++] = (uint8_t)(bits >> 8);\r
-    output[result++] = (uint8_t)(bits >> 16);\r
-    if (nibbles == 2) output[result++] = (uint8_t)(bits >> 24);\r
-    memcpy(&output[result], &input[offset], chunk_size);\r
-    result += chunk_size;\r
-    offset += chunk_size;\r
-    size -= chunk_size;\r
-  }\r
-  output[result++] = 3;\r
-  return result;\r
-}\r
-\r
-BROTLI_BOOL BrotliEncoderCompress(\r
-    int quality, int lgwin, BrotliEncoderMode mode, size_t input_size,\r
-    const uint8_t* input_buffer, size_t* encoded_size,\r
-    uint8_t* encoded_buffer) {\r
-  BrotliEncoderState* s;\r
-  size_t out_size = *encoded_size;\r
-  const uint8_t* input_start = input_buffer;\r
-  uint8_t* output_start = encoded_buffer;\r
-  size_t max_out_size = BrotliEncoderMaxCompressedSize(input_size);\r
-  if (out_size == 0) {\r
-    /* Output buffer needs at least one byte. */\r
-    return BROTLI_FALSE;\r
-  }\r
-  if (input_size == 0) {\r
-    /* Handle the special case of empty input. */\r
-    *encoded_size = 1;\r
-    *encoded_buffer = 6;\r
-    return BROTLI_TRUE;\r
-  }\r
-  if (quality == 10) {\r
-    /* TODO: Implement this direct path for all quality levels. */\r
-    const int lg_win = BROTLI_MIN(int, BROTLI_LARGE_MAX_WINDOW_BITS,\r
-                                       BROTLI_MAX(int, 16, lgwin));\r
-    int ok = BrotliCompressBufferQuality10(lg_win, input_size, input_buffer,\r
-                                           encoded_size, encoded_buffer);\r
-    if (!ok || (max_out_size && *encoded_size > max_out_size)) {\r
-      goto fallback;\r
-    }\r
-    return BROTLI_TRUE;\r
-  }\r
-\r
-  s = BrotliEncoderCreateInstance(0, 0, 0);\r
-  if (!s) {\r
-    return BROTLI_FALSE;\r
-  } else {\r
-    size_t available_in = input_size;\r
-    const uint8_t* next_in = input_buffer;\r
-    size_t available_out = *encoded_size;\r
-    uint8_t* next_out = encoded_buffer;\r
-    size_t total_out = 0;\r
-    BROTLI_BOOL result = BROTLI_FALSE;\r
-    BrotliEncoderSetParameter(s, BROTLI_PARAM_QUALITY, (uint32_t)quality);\r
-    BrotliEncoderSetParameter(s, BROTLI_PARAM_LGWIN, (uint32_t)lgwin);\r
-    BrotliEncoderSetParameter(s, BROTLI_PARAM_MODE, (uint32_t)mode);\r
-    BrotliEncoderSetParameter(s, BROTLI_PARAM_SIZE_HINT, (uint32_t)input_size);\r
-    if (lgwin > BROTLI_MAX_WINDOW_BITS) {\r
-      BrotliEncoderSetParameter(s, BROTLI_PARAM_LARGE_WINDOW, BROTLI_TRUE);\r
-    }\r
-    result = BrotliEncoderCompressStream(s, BROTLI_OPERATION_FINISH,\r
-        &available_in, &next_in, &available_out, &next_out, &total_out);\r
-    if (!BrotliEncoderIsFinished(s)) result = 0;\r
-    *encoded_size = total_out;\r
-    BrotliEncoderDestroyInstance(s);\r
-    if (!result || (max_out_size && *encoded_size > max_out_size)) {\r
-      goto fallback;\r
-    }\r
-    return BROTLI_TRUE;\r
-  }\r
-fallback:\r
-  *encoded_size = 0;\r
-  if (!max_out_size) return BROTLI_FALSE;\r
-  if (out_size >= max_out_size) {\r
-    *encoded_size =\r
-        MakeUncompressedStream(input_start, input_size, output_start);\r
-    return BROTLI_TRUE;\r
-  }\r
-  return BROTLI_FALSE;\r
-}\r
-\r
-static void InjectBytePaddingBlock(BrotliEncoderState* s) {\r
-  uint32_t seal = s->last_bytes_;\r
-  size_t seal_bits = s->last_bytes_bits_;\r
-  uint8_t* destination;\r
-  s->last_bytes_ = 0;\r
-  s->last_bytes_bits_ = 0;\r
-  /* is_last = 0, data_nibbles = 11, reserved = 0, meta_nibbles = 00 */\r
-  seal |= 0x6u << seal_bits;\r
-  seal_bits += 6;\r
-  /* If we have already created storage, then append to it.\r
-     Storage is valid until next block is being compressed. */\r
-  if (s->next_out_) {\r
-    destination = s->next_out_ + s->available_out_;\r
-  } else {\r
-    destination = s->tiny_buf_.u8;\r
-    s->next_out_ = destination;\r
-  }\r
-  destination[0] = (uint8_t)seal;\r
-  if (seal_bits > 8) destination[1] = (uint8_t)(seal >> 8);\r
-  if (seal_bits > 16) destination[2] = (uint8_t)(seal >> 16);\r
-  s->available_out_ += (seal_bits + 7) >> 3;\r
-}\r
-\r
-/* Injects padding bits or pushes compressed data to output.\r
-   Returns false if nothing is done. */\r
-static BROTLI_BOOL InjectFlushOrPushOutput(BrotliEncoderState* s,\r
-    size_t* available_out, uint8_t** next_out, size_t* total_out) {\r
-  if (s->stream_state_ == BROTLI_STREAM_FLUSH_REQUESTED &&\r
-      s->last_bytes_bits_ != 0) {\r
-    InjectBytePaddingBlock(s);\r
-    return BROTLI_TRUE;\r
-  }\r
-\r
-  if (s->available_out_ != 0 && *available_out != 0) {\r
-    size_t copy_output_size =\r
-        BROTLI_MIN(size_t, s->available_out_, *available_out);\r
-    memcpy(*next_out, s->next_out_, copy_output_size);\r
-    *next_out += copy_output_size;\r
-    *available_out -= copy_output_size;\r
-    s->next_out_ += copy_output_size;\r
-    s->available_out_ -= copy_output_size;\r
-    s->total_out_ += copy_output_size;\r
-    if (total_out) *total_out = s->total_out_;\r
-    return BROTLI_TRUE;\r
-  }\r
-\r
-  return BROTLI_FALSE;\r
-}\r
-\r
-static void CheckFlushComplete(BrotliEncoderState* s) {\r
-  if (s->stream_state_ == BROTLI_STREAM_FLUSH_REQUESTED &&\r
-      s->available_out_ == 0) {\r
-    s->stream_state_ = BROTLI_STREAM_PROCESSING;\r
-    s->next_out_ = 0;\r
-  }\r
-}\r
-\r
-static BROTLI_BOOL BrotliEncoderCompressStreamFast(\r
-    BrotliEncoderState* s, BrotliEncoderOperation op, size_t* available_in,\r
-    const uint8_t** next_in, size_t* available_out, uint8_t** next_out,\r
-    size_t* total_out) {\r
-  const size_t block_size_limit = (size_t)1 << s->params.lgwin;\r
-  const size_t buf_size = BROTLI_MIN(size_t, kCompressFragmentTwoPassBlockSize,\r
-      BROTLI_MIN(size_t, *available_in, block_size_limit));\r
-  uint32_t* tmp_command_buf = NULL;\r
-  uint32_t* command_buf = NULL;\r
-  uint8_t* tmp_literal_buf = NULL;\r
-  uint8_t* literal_buf = NULL;\r
-  MemoryManager* m = &s->memory_manager_;\r
-  if (s->params.quality != FAST_ONE_PASS_COMPRESSION_QUALITY &&\r
-      s->params.quality != FAST_TWO_PASS_COMPRESSION_QUALITY) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  if (s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) {\r
-    if (!s->command_buf_ && buf_size == kCompressFragmentTwoPassBlockSize) {\r
-      s->command_buf_ =\r
-          BROTLI_ALLOC(m, uint32_t, kCompressFragmentTwoPassBlockSize);\r
-      s->literal_buf_ =\r
-          BROTLI_ALLOC(m, uint8_t, kCompressFragmentTwoPassBlockSize);\r
-      if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-    }\r
-    if (s->command_buf_) {\r
-      command_buf = s->command_buf_;\r
-      literal_buf = s->literal_buf_;\r
-    } else {\r
-      tmp_command_buf = BROTLI_ALLOC(m, uint32_t, buf_size);\r
-      tmp_literal_buf = BROTLI_ALLOC(m, uint8_t, buf_size);\r
-      if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-      command_buf = tmp_command_buf;\r
-      literal_buf = tmp_literal_buf;\r
-    }\r
-  }\r
-\r
-  while (BROTLI_TRUE) {\r
-    if (InjectFlushOrPushOutput(s, available_out, next_out, total_out)) {\r
-      continue;\r
-    }\r
-\r
-    /* Compress block only when internal output buffer is empty, stream is not\r
-       finished, there is no pending flush request, and there is either\r
-       additional input or pending operation. */\r
-    if (s->available_out_ == 0 &&\r
-        s->stream_state_ == BROTLI_STREAM_PROCESSING &&\r
-        (*available_in != 0 || op != BROTLI_OPERATION_PROCESS)) {\r
-      size_t block_size = BROTLI_MIN(size_t, block_size_limit, *available_in);\r
-      BROTLI_BOOL is_last =\r
-          (*available_in == block_size) && (op == BROTLI_OPERATION_FINISH);\r
-      BROTLI_BOOL force_flush =\r
-          (*available_in == block_size) && (op == BROTLI_OPERATION_FLUSH);\r
-      size_t max_out_size = 2 * block_size + 503;\r
-      BROTLI_BOOL inplace = BROTLI_TRUE;\r
-      uint8_t* storage = NULL;\r
-      size_t storage_ix = s->last_bytes_bits_;\r
-      size_t table_size;\r
-      int* table;\r
-\r
-      if (force_flush && block_size == 0) {\r
-        s->stream_state_ = BROTLI_STREAM_FLUSH_REQUESTED;\r
-        continue;\r
-      }\r
-      if (max_out_size <= *available_out) {\r
-        storage = *next_out;\r
-      } else {\r
-        inplace = BROTLI_FALSE;\r
-        storage = GetBrotliStorage(s, max_out_size);\r
-        if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-      }\r
-      storage[0] = (uint8_t)s->last_bytes_;\r
-      storage[1] = (uint8_t)(s->last_bytes_ >> 8);\r
-      table = GetHashTable(s, s->params.quality, block_size, &table_size);\r
-      if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-\r
-      if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY) {\r
-        BrotliCompressFragmentFast(m, *next_in, block_size, is_last, table,\r
-            table_size, s->cmd_depths_, s->cmd_bits_, &s->cmd_code_numbits_,\r
-            s->cmd_code_, &storage_ix, storage);\r
-        if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-      } else {\r
-        BrotliCompressFragmentTwoPass(m, *next_in, block_size, is_last,\r
-            command_buf, literal_buf, table, table_size,\r
-            &storage_ix, storage);\r
-        if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;\r
-      }\r
-      *next_in += block_size;\r
-      *available_in -= block_size;\r
-      if (inplace) {\r
-        size_t out_bytes = storage_ix >> 3;\r
-        BROTLI_DCHECK(out_bytes <= *available_out);\r
-        BROTLI_DCHECK((storage_ix & 7) == 0 || out_bytes < *available_out);\r
-        *next_out += out_bytes;\r
-        *available_out -= out_bytes;\r
-        s->total_out_ += out_bytes;\r
-        if (total_out) *total_out = s->total_out_;\r
-      } else {\r
-        size_t out_bytes = storage_ix >> 3;\r
-        s->next_out_ = storage;\r
-        s->available_out_ = out_bytes;\r
-      }\r
-      s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]);\r
-      s->last_bytes_bits_ = storage_ix & 7u;\r
-\r
-      if (force_flush) s->stream_state_ = BROTLI_STREAM_FLUSH_REQUESTED;\r
-      if (is_last) s->stream_state_ = BROTLI_STREAM_FINISHED;\r
-      continue;\r
-    }\r
-    break;\r
-  }\r
-  BROTLI_FREE(m, tmp_command_buf);\r
-  BROTLI_FREE(m, tmp_literal_buf);\r
-  CheckFlushComplete(s);\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_BOOL ProcessMetadata(\r
-    BrotliEncoderState* s, size_t* available_in, const uint8_t** next_in,\r
-    size_t* available_out, uint8_t** next_out, size_t* total_out) {\r
-  if (*available_in > (1u << 24)) return BROTLI_FALSE;\r
-  /* Switch to metadata block workflow, if required. */\r
-  if (s->stream_state_ == BROTLI_STREAM_PROCESSING) {\r
-    s->remaining_metadata_bytes_ = (uint32_t)*available_in;\r
-    s->stream_state_ = BROTLI_STREAM_METADATA_HEAD;\r
-  }\r
-  if (s->stream_state_ != BROTLI_STREAM_METADATA_HEAD &&\r
-      s->stream_state_ != BROTLI_STREAM_METADATA_BODY) {\r
-    return BROTLI_FALSE;\r
-  }\r
-\r
-  while (BROTLI_TRUE) {\r
-    if (InjectFlushOrPushOutput(s, available_out, next_out, total_out)) {\r
-      continue;\r
-    }\r
-    if (s->available_out_ != 0) break;\r
-\r
-    if (s->input_pos_ != s->last_flush_pos_) {\r
-      BROTLI_BOOL result = EncodeData(s, BROTLI_FALSE, BROTLI_TRUE,\r
-          &s->available_out_, &s->next_out_);\r
-      if (!result) return BROTLI_FALSE;\r
-      continue;\r
-    }\r
-\r
-    if (s->stream_state_ == BROTLI_STREAM_METADATA_HEAD) {\r
-      s->next_out_ = s->tiny_buf_.u8;\r
-      s->available_out_ =\r
-          WriteMetadataHeader(s, s->remaining_metadata_bytes_, s->next_out_);\r
-      s->stream_state_ = BROTLI_STREAM_METADATA_BODY;\r
-      continue;\r
-    } else {\r
-      /* Exit workflow only when there is no more input and no more output.\r
-         Otherwise client may continue producing empty metadata blocks. */\r
-      if (s->remaining_metadata_bytes_ == 0) {\r
-        s->remaining_metadata_bytes_ = BROTLI_UINT32_MAX;\r
-        s->stream_state_ = BROTLI_STREAM_PROCESSING;\r
-        break;\r
-      }\r
-      if (*available_out) {\r
-        /* Directly copy input to output. */\r
-        uint32_t copy = (uint32_t)BROTLI_MIN(\r
-            size_t, s->remaining_metadata_bytes_, *available_out);\r
-        memcpy(*next_out, *next_in, copy);\r
-        *next_in += copy;\r
-        *available_in -= copy;\r
-        s->remaining_metadata_bytes_ -= copy;\r
-        *next_out += copy;\r
-        *available_out -= copy;\r
-      } else {\r
-        /* This guarantees progress in "TakeOutput" workflow. */\r
-        uint32_t copy = BROTLI_MIN(uint32_t, s->remaining_metadata_bytes_, 16);\r
-        s->next_out_ = s->tiny_buf_.u8;\r
-        memcpy(s->next_out_, *next_in, copy);\r
-        *next_in += copy;\r
-        *available_in -= copy;\r
-        s->remaining_metadata_bytes_ -= copy;\r
-        s->available_out_ = copy;\r
-      }\r
-      continue;\r
-    }\r
-  }\r
-\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static void UpdateSizeHint(BrotliEncoderState* s, size_t available_in) {\r
-  if (s->params.size_hint == 0) {\r
-    uint64_t delta = UnprocessedInputSize(s);\r
-    uint64_t tail = available_in;\r
-    uint32_t limit = 1u << 30;\r
-    uint32_t total;\r
-    if ((delta >= limit) || (tail >= limit) || ((delta + tail) >= limit)) {\r
-      total = limit;\r
-    } else {\r
-      total = (uint32_t)(delta + tail);\r
-    }\r
-    s->params.size_hint = total;\r
-  }\r
-}\r
-\r
-BROTLI_BOOL BrotliEncoderCompressStream(\r
-    BrotliEncoderState* s, BrotliEncoderOperation op, size_t* available_in,\r
-    const uint8_t** next_in, size_t* available_out,uint8_t** next_out,\r
-    size_t* total_out) {\r
-  if (!EnsureInitialized(s)) return BROTLI_FALSE;\r
-\r
-  /* Unfinished metadata block; check requirements. */\r
-  if (s->remaining_metadata_bytes_ != BROTLI_UINT32_MAX) {\r
-    if (*available_in != s->remaining_metadata_bytes_) return BROTLI_FALSE;\r
-    if (op != BROTLI_OPERATION_EMIT_METADATA) return BROTLI_FALSE;\r
-  }\r
-\r
-  if (op == BROTLI_OPERATION_EMIT_METADATA) {\r
-    UpdateSizeHint(s, 0);  /* First data metablock might be emitted here. */\r
-    return ProcessMetadata(\r
-        s, available_in, next_in, available_out, next_out, total_out);\r
-  }\r
-\r
-  if (s->stream_state_ == BROTLI_STREAM_METADATA_HEAD ||\r
-      s->stream_state_ == BROTLI_STREAM_METADATA_BODY) {\r
-    return BROTLI_FALSE;\r
-  }\r
-\r
-  if (s->stream_state_ != BROTLI_STREAM_PROCESSING && *available_in != 0) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY ||\r
-      s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) {\r
-    return BrotliEncoderCompressStreamFast(s, op, available_in, next_in,\r
-        available_out, next_out, total_out);\r
-  }\r
-  while (BROTLI_TRUE) {\r
-    size_t remaining_block_size = RemainingInputBlockSize(s);\r
-\r
-    if (remaining_block_size != 0 && *available_in != 0) {\r
-      size_t copy_input_size =\r
-          BROTLI_MIN(size_t, remaining_block_size, *available_in);\r
-      CopyInputToRingBuffer(s, copy_input_size, *next_in);\r
-      *next_in += copy_input_size;\r
-      *available_in -= copy_input_size;\r
-      continue;\r
-    }\r
-\r
-    if (InjectFlushOrPushOutput(s, available_out, next_out, total_out)) {\r
-      continue;\r
-    }\r
-\r
-    /* Compress data only when internal output buffer is empty, stream is not\r
-       finished and there is no pending flush request. */\r
-    if (s->available_out_ == 0 &&\r
-        s->stream_state_ == BROTLI_STREAM_PROCESSING) {\r
-      if (remaining_block_size == 0 || op != BROTLI_OPERATION_PROCESS) {\r
-        BROTLI_BOOL is_last = TO_BROTLI_BOOL(\r
-            (*available_in == 0) && op == BROTLI_OPERATION_FINISH);\r
-        BROTLI_BOOL force_flush = TO_BROTLI_BOOL(\r
-            (*available_in == 0) && op == BROTLI_OPERATION_FLUSH);\r
-        BROTLI_BOOL result;\r
-        UpdateSizeHint(s, *available_in);\r
-        result = EncodeData(s, is_last, force_flush,\r
-            &s->available_out_, &s->next_out_);\r
-        if (!result) return BROTLI_FALSE;\r
-        if (force_flush) s->stream_state_ = BROTLI_STREAM_FLUSH_REQUESTED;\r
-        if (is_last) s->stream_state_ = BROTLI_STREAM_FINISHED;\r
-        continue;\r
-      }\r
-    }\r
-    break;\r
-  }\r
-  CheckFlushComplete(s);\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-BROTLI_BOOL BrotliEncoderIsFinished(BrotliEncoderState* s) {\r
-  return TO_BROTLI_BOOL(s->stream_state_ == BROTLI_STREAM_FINISHED &&\r
-      !BrotliEncoderHasMoreOutput(s));\r
-}\r
-\r
-BROTLI_BOOL BrotliEncoderHasMoreOutput(BrotliEncoderState* s) {\r
-  return TO_BROTLI_BOOL(s->available_out_ != 0);\r
-}\r
-\r
-const uint8_t* BrotliEncoderTakeOutput(BrotliEncoderState* s, size_t* size) {\r
-  size_t consumed_size = s->available_out_;\r
-  uint8_t* result = s->next_out_;\r
-  if (*size) {\r
-    consumed_size = BROTLI_MIN(size_t, *size, s->available_out_);\r
-  }\r
-  if (consumed_size) {\r
-    s->next_out_ += consumed_size;\r
-    s->available_out_ -= consumed_size;\r
-    s->total_out_ += consumed_size;\r
-    CheckFlushComplete(s);\r
-    *size = consumed_size;\r
-  } else {\r
-    *size = 0;\r
-    result = 0;\r
-  }\r
-  return result;\r
-}\r
-\r
-uint32_t BrotliEncoderVersion(void) {\r
-  return BROTLI_VERSION;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/encoder_dict.c b/BaseTools/Source/C/BrotliCompress/enc/encoder_dict.c
deleted file mode 100644 (file)
index 956d50c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright 2017 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#include "./encoder_dict.h"\r
-\r
-#include "../common/dictionary.h"\r
-#include "../common/transform.h"\r
-#include "./dictionary_hash.h"\r
-#include "./hash.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-void BrotliInitEncoderDictionary(BrotliEncoderDictionary* dict) {\r
-  dict->words = BrotliGetDictionary();\r
-\r
-  dict->hash_table = kStaticDictionaryHash;\r
-  dict->buckets = kStaticDictionaryBuckets;\r
-  dict->dict_words = kStaticDictionaryWords;\r
-\r
-  dict->cutoffTransformsCount = kCutoffTransformsCount;\r
-  dict->cutoffTransforms = kCutoffTransforms;\r
-\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/encoder_dict.h b/BaseTools/Source/C/BrotliCompress/enc/encoder_dict.h
deleted file mode 100644 (file)
index 7c41ea0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright 2017 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#ifndef BROTLI_ENC_ENCODER_DICT_H_\r
-#define BROTLI_ENC_ENCODER_DICT_H_\r
-\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./static_dict_lut.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* Dictionary data (words and transforms) for 1 possible context */\r
-typedef struct BrotliEncoderDictionary {\r
-  const BrotliDictionary* words;\r
-\r
-  /* cut off for fast encoder */\r
-  uint32_t cutoffTransformsCount;\r
-  uint64_t cutoffTransforms;\r
-\r
-  /* from dictionary_hash.h, for fast encoder */\r
-  const uint16_t* hash_table;\r
-\r
-  /* from static_dict_lut.h, for slow encoder */\r
-  const uint16_t* buckets;\r
-  const DictWord* dict_words;\r
-} BrotliEncoderDictionary;\r
-\r
-BROTLI_INTERNAL void BrotliInitEncoderDictionary(BrotliEncoderDictionary* dict);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_ENCODER_DICT_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/entropy_encode.c b/BaseTools/Source/C/BrotliCompress/enc/entropy_encode.c
deleted file mode 100644 (file)
index e3f0d2e..0000000
+++ /dev/null
@@ -1,501 +0,0 @@
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Entropy encoding (Huffman) utilities. */\r
-\r
-#include "./entropy_encode.h"\r
-\r
-#include <string.h>  /* memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-BROTLI_BOOL BrotliSetDepth(\r
-    int p0, HuffmanTree* pool, uint8_t* depth, int max_depth) {\r
-  int stack[16];\r
-  int level = 0;\r
-  int p = p0;\r
-  BROTLI_DCHECK(max_depth <= 15);\r
-  stack[0] = -1;\r
-  while (BROTLI_TRUE) {\r
-    if (pool[p].index_left_ >= 0) {\r
-      level++;\r
-      if (level > max_depth) return BROTLI_FALSE;\r
-      stack[level] = pool[p].index_right_or_value_;\r
-      p = pool[p].index_left_;\r
-      continue;\r
-    } else {\r
-      depth[pool[p].index_right_or_value_] = (uint8_t)level;\r
-    }\r
-    while (level >= 0 && stack[level] == -1) level--;\r
-    if (level < 0) return BROTLI_TRUE;\r
-    p = stack[level];\r
-    stack[level] = -1;\r
-  }\r
-}\r
-\r
-/* Sort the root nodes, least popular first. */\r
-static BROTLI_INLINE BROTLI_BOOL SortHuffmanTree(\r
-    const HuffmanTree* v0, const HuffmanTree* v1) {\r
-  if (v0->total_count_ != v1->total_count_) {\r
-    return TO_BROTLI_BOOL(v0->total_count_ < v1->total_count_);\r
-  }\r
-  return TO_BROTLI_BOOL(v0->index_right_or_value_ > v1->index_right_or_value_);\r
-}\r
-\r
-/* This function will create a Huffman tree.\r
-\r
-   The catch here is that the tree cannot be arbitrarily deep.\r
-   Brotli specifies a maximum depth of 15 bits for "code trees"\r
-   and 7 bits for "code length code trees."\r
-\r
-   count_limit is the value that is to be faked as the minimum value\r
-   and this minimum value is raised until the tree matches the\r
-   maximum length requirement.\r
-\r
-   This algorithm is not of excellent performance for very long data blocks,\r
-   especially when population counts are longer than 2**tree_limit, but\r
-   we are not planning to use this with extremely long blocks.\r
-\r
-   See http://en.wikipedia.org/wiki/Huffman_coding */\r
-void BrotliCreateHuffmanTree(const uint32_t* data,\r
-                             const size_t length,\r
-                             const int tree_limit,\r
-                             HuffmanTree* tree,\r
-                             uint8_t* depth) {\r
-  uint32_t count_limit;\r
-  HuffmanTree sentinel;\r
-  InitHuffmanTree(&sentinel, BROTLI_UINT32_MAX, -1, -1);\r
-  /* For block sizes below 64 kB, we never need to do a second iteration\r
-     of this loop. Probably all of our block sizes will be smaller than\r
-     that, so this loop is mostly of academic interest. If we actually\r
-     would need this, we would be better off with the Katajainen algorithm. */\r
-  for (count_limit = 1; ; count_limit *= 2) {\r
-    size_t n = 0;\r
-    size_t i;\r
-    size_t j;\r
-    size_t k;\r
-    for (i = length; i != 0;) {\r
-      --i;\r
-      if (data[i]) {\r
-        const uint32_t count = BROTLI_MAX(uint32_t, data[i], count_limit);\r
-        InitHuffmanTree(&tree[n++], count, -1, (int16_t)i);\r
-      }\r
-    }\r
-\r
-    if (n == 1) {\r
-      depth[tree[0].index_right_or_value_] = 1;  /* Only one element. */\r
-      break;\r
-    }\r
-\r
-    SortHuffmanTreeItems(tree, n, SortHuffmanTree);\r
-\r
-    /* The nodes are:\r
-       [0, n): the sorted leaf nodes that we start with.\r
-       [n]: we add a sentinel here.\r
-       [n + 1, 2n): new parent nodes are added here, starting from\r
-                    (n+1). These are naturally in ascending order.\r
-       [2n]: we add a sentinel at the end as well.\r
-       There will be (2n+1) elements at the end. */\r
-    tree[n] = sentinel;\r
-    tree[n + 1] = sentinel;\r
-\r
-    i = 0;      /* Points to the next leaf node. */\r
-    j = n + 1;  /* Points to the next non-leaf node. */\r
-    for (k = n - 1; k != 0; --k) {\r
-      size_t left, right;\r
-      if (tree[i].total_count_ <= tree[j].total_count_) {\r
-        left = i;\r
-        ++i;\r
-      } else {\r
-        left = j;\r
-        ++j;\r
-      }\r
-      if (tree[i].total_count_ <= tree[j].total_count_) {\r
-        right = i;\r
-        ++i;\r
-      } else {\r
-        right = j;\r
-        ++j;\r
-      }\r
-\r
-      {\r
-        /* The sentinel node becomes the parent node. */\r
-        size_t j_end = 2 * n - k;\r
-        tree[j_end].total_count_ =\r
-            tree[left].total_count_ + tree[right].total_count_;\r
-        tree[j_end].index_left_ = (int16_t)left;\r
-        tree[j_end].index_right_or_value_ = (int16_t)right;\r
-\r
-        /* Add back the last sentinel node. */\r
-        tree[j_end + 1] = sentinel;\r
-      }\r
-    }\r
-    if (BrotliSetDepth((int)(2 * n - 1), &tree[0], depth, tree_limit)) {\r
-      /* We need to pack the Huffman tree in tree_limit bits. If this was not\r
-         successful, add fake entities to the lowest values and retry. */\r
-      break;\r
-    }\r
-  }\r
-}\r
-\r
-static void Reverse(uint8_t* v, size_t start, size_t end) {\r
-  --end;\r
-  while (start < end) {\r
-    uint8_t tmp = v[start];\r
-    v[start] = v[end];\r
-    v[end] = tmp;\r
-    ++start;\r
-    --end;\r
-  }\r
-}\r
-\r
-static void BrotliWriteHuffmanTreeRepetitions(\r
-    const uint8_t previous_value,\r
-    const uint8_t value,\r
-    size_t repetitions,\r
-    size_t* tree_size,\r
-    uint8_t* tree,\r
-    uint8_t* extra_bits_data) {\r
-  BROTLI_DCHECK(repetitions > 0);\r
-  if (previous_value != value) {\r
-    tree[*tree_size] = value;\r
-    extra_bits_data[*tree_size] = 0;\r
-    ++(*tree_size);\r
-    --repetitions;\r
-  }\r
-  if (repetitions == 7) {\r
-    tree[*tree_size] = value;\r
-    extra_bits_data[*tree_size] = 0;\r
-    ++(*tree_size);\r
-    --repetitions;\r
-  }\r
-  if (repetitions < 3) {\r
-    size_t i;\r
-    for (i = 0; i < repetitions; ++i) {\r
-      tree[*tree_size] = value;\r
-      extra_bits_data[*tree_size] = 0;\r
-      ++(*tree_size);\r
-    }\r
-  } else {\r
-    size_t start = *tree_size;\r
-    repetitions -= 3;\r
-    while (BROTLI_TRUE) {\r
-      tree[*tree_size] = BROTLI_REPEAT_PREVIOUS_CODE_LENGTH;\r
-      extra_bits_data[*tree_size] = repetitions & 0x3;\r
-      ++(*tree_size);\r
-      repetitions >>= 2;\r
-      if (repetitions == 0) {\r
-        break;\r
-      }\r
-      --repetitions;\r
-    }\r
-    Reverse(tree, start, *tree_size);\r
-    Reverse(extra_bits_data, start, *tree_size);\r
-  }\r
-}\r
-\r
-static void BrotliWriteHuffmanTreeRepetitionsZeros(\r
-    size_t repetitions,\r
-    size_t* tree_size,\r
-    uint8_t* tree,\r
-    uint8_t* extra_bits_data) {\r
-  if (repetitions == 11) {\r
-    tree[*tree_size] = 0;\r
-    extra_bits_data[*tree_size] = 0;\r
-    ++(*tree_size);\r
-    --repetitions;\r
-  }\r
-  if (repetitions < 3) {\r
-    size_t i;\r
-    for (i = 0; i < repetitions; ++i) {\r
-      tree[*tree_size] = 0;\r
-      extra_bits_data[*tree_size] = 0;\r
-      ++(*tree_size);\r
-    }\r
-  } else {\r
-    size_t start = *tree_size;\r
-    repetitions -= 3;\r
-    while (BROTLI_TRUE) {\r
-      tree[*tree_size] = BROTLI_REPEAT_ZERO_CODE_LENGTH;\r
-      extra_bits_data[*tree_size] = repetitions & 0x7;\r
-      ++(*tree_size);\r
-      repetitions >>= 3;\r
-      if (repetitions == 0) {\r
-        break;\r
-      }\r
-      --repetitions;\r
-    }\r
-    Reverse(tree, start, *tree_size);\r
-    Reverse(extra_bits_data, start, *tree_size);\r
-  }\r
-}\r
-\r
-void BrotliOptimizeHuffmanCountsForRle(size_t length, uint32_t* counts,\r
-                                       uint8_t* good_for_rle) {\r
-  size_t nonzero_count = 0;\r
-  size_t stride;\r
-  size_t limit;\r
-  size_t sum;\r
-  const size_t streak_limit = 1240;\r
-  /* Let's make the Huffman code more compatible with RLE encoding. */\r
-  size_t i;\r
-  for (i = 0; i < length; i++) {\r
-    if (counts[i]) {\r
-      ++nonzero_count;\r
-    }\r
-  }\r
-  if (nonzero_count < 16) {\r
-    return;\r
-  }\r
-  while (length != 0 && counts[length - 1] == 0) {\r
-    --length;\r
-  }\r
-  if (length == 0) {\r
-    return;  /* All zeros. */\r
-  }\r
-  /* Now counts[0..length - 1] does not have trailing zeros. */\r
-  {\r
-    size_t nonzeros = 0;\r
-    uint32_t smallest_nonzero = 1 << 30;\r
-    for (i = 0; i < length; ++i) {\r
-      if (counts[i] != 0) {\r
-        ++nonzeros;\r
-        if (smallest_nonzero > counts[i]) {\r
-          smallest_nonzero = counts[i];\r
-        }\r
-      }\r
-    }\r
-    if (nonzeros < 5) {\r
-      /* Small histogram will model it well. */\r
-      return;\r
-    }\r
-    if (smallest_nonzero < 4) {\r
-      size_t zeros = length - nonzeros;\r
-      if (zeros < 6) {\r
-        for (i = 1; i < length - 1; ++i) {\r
-          if (counts[i - 1] != 0 && counts[i] == 0 && counts[i + 1] != 0) {\r
-            counts[i] = 1;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    if (nonzeros < 28) {\r
-      return;\r
-    }\r
-  }\r
-  /* 2) Let's mark all population counts that already can be encoded\r
-     with an RLE code. */\r
-  memset(good_for_rle, 0, length);\r
-  {\r
-    /* Let's not spoil any of the existing good RLE codes.\r
-       Mark any seq of 0's that is longer as 5 as a good_for_rle.\r
-       Mark any seq of non-0's that is longer as 7 as a good_for_rle. */\r
-    uint32_t symbol = counts[0];\r
-    size_t step = 0;\r
-    for (i = 0; i <= length; ++i) {\r
-      if (i == length || counts[i] != symbol) {\r
-        if ((symbol == 0 && step >= 5) ||\r
-            (symbol != 0 && step >= 7)) {\r
-          size_t k;\r
-          for (k = 0; k < step; ++k) {\r
-            good_for_rle[i - k - 1] = 1;\r
-          }\r
-        }\r
-        step = 1;\r
-        if (i != length) {\r
-          symbol = counts[i];\r
-        }\r
-      } else {\r
-        ++step;\r
-      }\r
-    }\r
-  }\r
-  /* 3) Let's replace those population counts that lead to more RLE codes.\r
-     Math here is in 24.8 fixed point representation. */\r
-  stride = 0;\r
-  limit = 256 * (counts[0] + counts[1] + counts[2]) / 3 + 420;\r
-  sum = 0;\r
-  for (i = 0; i <= length; ++i) {\r
-    if (i == length || good_for_rle[i] ||\r
-        (i != 0 && good_for_rle[i - 1]) ||\r
-        (256 * counts[i] - limit + streak_limit) >= 2 * streak_limit) {\r
-      if (stride >= 4 || (stride >= 3 && sum == 0)) {\r
-        size_t k;\r
-        /* The stride must end, collapse what we have, if we have enough (4). */\r
-        size_t count = (sum + stride / 2) / stride;\r
-        if (count == 0) {\r
-          count = 1;\r
-        }\r
-        if (sum == 0) {\r
-          /* Don't make an all zeros stride to be upgraded to ones. */\r
-          count = 0;\r
-        }\r
-        for (k = 0; k < stride; ++k) {\r
-          /* We don't want to change value at counts[i],\r
-             that is already belonging to the next stride. Thus - 1. */\r
-          counts[i - k - 1] = (uint32_t)count;\r
-        }\r
-      }\r
-      stride = 0;\r
-      sum = 0;\r
-      if (i < length - 2) {\r
-        /* All interesting strides have a count of at least 4, */\r
-        /* at least when non-zeros. */\r
-        limit = 256 * (counts[i] + counts[i + 1] + counts[i + 2]) / 3 + 420;\r
-      } else if (i < length) {\r
-        limit = 256 * counts[i];\r
-      } else {\r
-        limit = 0;\r
-      }\r
-    }\r
-    ++stride;\r
-    if (i != length) {\r
-      sum += counts[i];\r
-      if (stride >= 4) {\r
-        limit = (256 * sum + stride / 2) / stride;\r
-      }\r
-      if (stride == 4) {\r
-        limit += 120;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-static void DecideOverRleUse(const uint8_t* depth, const size_t length,\r
-                             BROTLI_BOOL* use_rle_for_non_zero,\r
-                             BROTLI_BOOL* use_rle_for_zero) {\r
-  size_t total_reps_zero = 0;\r
-  size_t total_reps_non_zero = 0;\r
-  size_t count_reps_zero = 1;\r
-  size_t count_reps_non_zero = 1;\r
-  size_t i;\r
-  for (i = 0; i < length;) {\r
-    const uint8_t value = depth[i];\r
-    size_t reps = 1;\r
-    size_t k;\r
-    for (k = i + 1; k < length && depth[k] == value; ++k) {\r
-      ++reps;\r
-    }\r
-    if (reps >= 3 && value == 0) {\r
-      total_reps_zero += reps;\r
-      ++count_reps_zero;\r
-    }\r
-    if (reps >= 4 && value != 0) {\r
-      total_reps_non_zero += reps;\r
-      ++count_reps_non_zero;\r
-    }\r
-    i += reps;\r
-  }\r
-  *use_rle_for_non_zero =\r
-      TO_BROTLI_BOOL(total_reps_non_zero > count_reps_non_zero * 2);\r
-  *use_rle_for_zero = TO_BROTLI_BOOL(total_reps_zero > count_reps_zero * 2);\r
-}\r
-\r
-void BrotliWriteHuffmanTree(const uint8_t* depth,\r
-                            size_t length,\r
-                            size_t* tree_size,\r
-                            uint8_t* tree,\r
-                            uint8_t* extra_bits_data) {\r
-  uint8_t previous_value = BROTLI_INITIAL_REPEATED_CODE_LENGTH;\r
-  size_t i;\r
-  BROTLI_BOOL use_rle_for_non_zero = BROTLI_FALSE;\r
-  BROTLI_BOOL use_rle_for_zero = BROTLI_FALSE;\r
-\r
-  /* Throw away trailing zeros. */\r
-  size_t new_length = length;\r
-  for (i = 0; i < length; ++i) {\r
-    if (depth[length - i - 1] == 0) {\r
-      --new_length;\r
-    } else {\r
-      break;\r
-    }\r
-  }\r
-\r
-  /* First gather statistics on if it is a good idea to do RLE. */\r
-  if (length > 50) {\r
-    /* Find RLE coding for longer codes.\r
-       Shorter codes seem not to benefit from RLE. */\r
-    DecideOverRleUse(depth, new_length,\r
-                     &use_rle_for_non_zero, &use_rle_for_zero);\r
-  }\r
-\r
-  /* Actual RLE coding. */\r
-  for (i = 0; i < new_length;) {\r
-    const uint8_t value = depth[i];\r
-    size_t reps = 1;\r
-    if ((value != 0 && use_rle_for_non_zero) ||\r
-        (value == 0 && use_rle_for_zero)) {\r
-      size_t k;\r
-      for (k = i + 1; k < new_length && depth[k] == value; ++k) {\r
-        ++reps;\r
-      }\r
-    }\r
-    if (value == 0) {\r
-      BrotliWriteHuffmanTreeRepetitionsZeros(\r
-          reps, tree_size, tree, extra_bits_data);\r
-    } else {\r
-      BrotliWriteHuffmanTreeRepetitions(previous_value,\r
-                                        value, reps, tree_size,\r
-                                        tree, extra_bits_data);\r
-      previous_value = value;\r
-    }\r
-    i += reps;\r
-  }\r
-}\r
-\r
-static uint16_t BrotliReverseBits(size_t num_bits, uint16_t bits) {\r
-  static const size_t kLut[16] = {  /* Pre-reversed 4-bit values. */\r
-    0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E,\r
-    0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F\r
-  };\r
-  size_t retval = kLut[bits & 0x0F];\r
-  size_t i;\r
-  for (i = 4; i < num_bits; i += 4) {\r
-    retval <<= 4;\r
-    bits = (uint16_t)(bits >> 4);\r
-    retval |= kLut[bits & 0x0F];\r
-  }\r
-  retval >>= ((0 - num_bits) & 0x03);\r
-  return (uint16_t)retval;\r
-}\r
-\r
-/* 0..15 are values for bits */\r
-#define MAX_HUFFMAN_BITS 16\r
-\r
-void BrotliConvertBitDepthsToSymbols(const uint8_t* depth,\r
-                                     size_t len,\r
-                                     uint16_t* bits) {\r
-  /* In Brotli, all bit depths are [1..15]\r
-     0 bit depth means that the symbol does not exist. */\r
-  uint16_t bl_count[MAX_HUFFMAN_BITS] = { 0 };\r
-  uint16_t next_code[MAX_HUFFMAN_BITS];\r
-  size_t i;\r
-  int code = 0;\r
-  for (i = 0; i < len; ++i) {\r
-    ++bl_count[depth[i]];\r
-  }\r
-  bl_count[0] = 0;\r
-  next_code[0] = 0;\r
-  for (i = 1; i < MAX_HUFFMAN_BITS; ++i) {\r
-    code = (code + bl_count[i - 1]) << 1;\r
-    next_code[i] = (uint16_t)code;\r
-  }\r
-  for (i = 0; i < len; ++i) {\r
-    if (depth[i]) {\r
-      bits[i] = BrotliReverseBits(depth[i], next_code[depth[i]]++);\r
-    }\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/entropy_encode.h b/BaseTools/Source/C/BrotliCompress/enc/entropy_encode.h
deleted file mode 100644 (file)
index 173d983..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Entropy encoding (Huffman) utilities. */\r
-\r
-#ifndef BROTLI_ENC_ENTROPY_ENCODE_H_\r
-#define BROTLI_ENC_ENTROPY_ENCODE_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* A node of a Huffman tree. */\r
-typedef struct HuffmanTree {\r
-  uint32_t total_count_;\r
-  int16_t index_left_;\r
-  int16_t index_right_or_value_;\r
-} HuffmanTree;\r
-\r
-static BROTLI_INLINE void InitHuffmanTree(HuffmanTree* self, uint32_t count,\r
-    int16_t left, int16_t right) {\r
-  self->total_count_ = count;\r
-  self->index_left_ = left;\r
-  self->index_right_or_value_ = right;\r
-}\r
-\r
-/* Returns 1 is assignment of depths succeeded, otherwise 0. */\r
-BROTLI_INTERNAL BROTLI_BOOL BrotliSetDepth(\r
-    int p, HuffmanTree* pool, uint8_t* depth, int max_depth);\r
-\r
-/* This function will create a Huffman tree.\r
-\r
-   The (data,length) contains the population counts.\r
-   The tree_limit is the maximum bit depth of the Huffman codes.\r
-\r
-   The depth contains the tree, i.e., how many bits are used for\r
-   the symbol.\r
-\r
-   The actual Huffman tree is constructed in the tree[] array, which has to\r
-   be at least 2 * length + 1 long.\r
-\r
-   See http://en.wikipedia.org/wiki/Huffman_coding */\r
-BROTLI_INTERNAL void BrotliCreateHuffmanTree(const uint32_t* data,\r
-                                             const size_t length,\r
-                                             const int tree_limit,\r
-                                             HuffmanTree* tree,\r
-                                             uint8_t* depth);\r
-\r
-/* Change the population counts in a way that the consequent\r
-   Huffman tree compression, especially its RLE-part will be more\r
-   likely to compress this data more efficiently.\r
-\r
-   length contains the size of the histogram.\r
-   counts contains the population counts.\r
-   good_for_rle is a buffer of at least length size */\r
-BROTLI_INTERNAL void BrotliOptimizeHuffmanCountsForRle(\r
-    size_t length, uint32_t* counts, uint8_t* good_for_rle);\r
-\r
-/* Write a Huffman tree from bit depths into the bit-stream representation\r
-   of a Huffman tree. The generated Huffman tree is to be compressed once\r
-   more using a Huffman tree */\r
-BROTLI_INTERNAL void BrotliWriteHuffmanTree(const uint8_t* depth,\r
-                                            size_t num,\r
-                                            size_t* tree_size,\r
-                                            uint8_t* tree,\r
-                                            uint8_t* extra_bits_data);\r
-\r
-/* Get the actual bit values for a tree of bit depths. */\r
-BROTLI_INTERNAL void BrotliConvertBitDepthsToSymbols(const uint8_t* depth,\r
-                                                     size_t len,\r
-                                                     uint16_t* bits);\r
-\r
-/* Input size optimized Shell sort. */\r
-typedef BROTLI_BOOL (*HuffmanTreeComparator)(\r
-    const HuffmanTree*, const HuffmanTree*);\r
-static BROTLI_INLINE void SortHuffmanTreeItems(HuffmanTree* items,\r
-    const size_t n, HuffmanTreeComparator comparator) {\r
-  static const size_t gaps[] = {132, 57, 23, 10, 4, 1};\r
-  if (n < 13) {\r
-    /* Insertion sort. */\r
-    size_t i;\r
-    for (i = 1; i < n; ++i) {\r
-      HuffmanTree tmp = items[i];\r
-      size_t k = i;\r
-      size_t j = i - 1;\r
-      while (comparator(&tmp, &items[j])) {\r
-        items[k] = items[j];\r
-        k = j;\r
-        if (!j--) break;\r
-      }\r
-      items[k] = tmp;\r
-    }\r
-    return;\r
-  } else {\r
-    /* Shell sort. */\r
-    int g = n < 57 ? 2 : 0;\r
-    for (; g < 6; ++g) {\r
-      size_t gap = gaps[g];\r
-      size_t i;\r
-      for (i = gap; i < n; ++i) {\r
-        size_t j = i;\r
-        HuffmanTree tmp = items[i];\r
-        for (; j >= gap && comparator(&tmp, &items[j - gap]); j -= gap) {\r
-          items[j] = items[j - gap];\r
-        }\r
-        items[j] = tmp;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_ENTROPY_ENCODE_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/entropy_encode_static.h b/BaseTools/Source/C/BrotliCompress/enc/entropy_encode_static.h
deleted file mode 100644 (file)
index 3910af9..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Static entropy codes used for faster meta-block encoding. */\r
-\r
-#ifndef BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_\r
-#define BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./write_bits.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static const uint8_t kCodeLengthDepth[18] = {\r
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 0, 4, 4,\r
-};\r
-\r
-static const uint8_t kStaticCommandCodeDepth[BROTLI_NUM_COMMAND_SYMBOLS] = {\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-   9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,\r
-};\r
-\r
-static const uint8_t kStaticDistanceCodeDepth[64] = {\r
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\r
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\r
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\r
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\r
-};\r
-\r
-static const uint32_t kCodeLengthBits[18] = {\r
-  0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 15, 31, 0, 11, 7,\r
-};\r
-\r
-static BROTLI_INLINE void StoreStaticCodeLengthCode(\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  BrotliWriteBits(\r
-      40, BROTLI_MAKE_UINT64_T(0x0000FFu, 0x55555554u), storage_ix, storage);\r
-}\r
-\r
-static const uint64_t kZeroRepsBits[BROTLI_NUM_COMMAND_SYMBOLS] = {\r
-  0x00000000, 0x00000000, 0x00000000, 0x00000007, 0x00000017, 0x00000027,\r
-  0x00000037, 0x00000047, 0x00000057, 0x00000067, 0x00000077, 0x00000770,\r
-  0x00000b87, 0x00001387, 0x00001b87, 0x00002387, 0x00002b87, 0x00003387,\r
-  0x00003b87, 0x00000397, 0x00000b97, 0x00001397, 0x00001b97, 0x00002397,\r
-  0x00002b97, 0x00003397, 0x00003b97, 0x000003a7, 0x00000ba7, 0x000013a7,\r
-  0x00001ba7, 0x000023a7, 0x00002ba7, 0x000033a7, 0x00003ba7, 0x000003b7,\r
-  0x00000bb7, 0x000013b7, 0x00001bb7, 0x000023b7, 0x00002bb7, 0x000033b7,\r
-  0x00003bb7, 0x000003c7, 0x00000bc7, 0x000013c7, 0x00001bc7, 0x000023c7,\r
-  0x00002bc7, 0x000033c7, 0x00003bc7, 0x000003d7, 0x00000bd7, 0x000013d7,\r
-  0x00001bd7, 0x000023d7, 0x00002bd7, 0x000033d7, 0x00003bd7, 0x000003e7,\r
-  0x00000be7, 0x000013e7, 0x00001be7, 0x000023e7, 0x00002be7, 0x000033e7,\r
-  0x00003be7, 0x000003f7, 0x00000bf7, 0x000013f7, 0x00001bf7, 0x000023f7,\r
-  0x00002bf7, 0x000033f7, 0x00003bf7, 0x0001c387, 0x0005c387, 0x0009c387,\r
-  0x000dc387, 0x0011c387, 0x0015c387, 0x0019c387, 0x001dc387, 0x0001cb87,\r
-  0x0005cb87, 0x0009cb87, 0x000dcb87, 0x0011cb87, 0x0015cb87, 0x0019cb87,\r
-  0x001dcb87, 0x0001d387, 0x0005d387, 0x0009d387, 0x000dd387, 0x0011d387,\r
-  0x0015d387, 0x0019d387, 0x001dd387, 0x0001db87, 0x0005db87, 0x0009db87,\r
-  0x000ddb87, 0x0011db87, 0x0015db87, 0x0019db87, 0x001ddb87, 0x0001e387,\r
-  0x0005e387, 0x0009e387, 0x000de387, 0x0011e387, 0x0015e387, 0x0019e387,\r
-  0x001de387, 0x0001eb87, 0x0005eb87, 0x0009eb87, 0x000deb87, 0x0011eb87,\r
-  0x0015eb87, 0x0019eb87, 0x001deb87, 0x0001f387, 0x0005f387, 0x0009f387,\r
-  0x000df387, 0x0011f387, 0x0015f387, 0x0019f387, 0x001df387, 0x0001fb87,\r
-  0x0005fb87, 0x0009fb87, 0x000dfb87, 0x0011fb87, 0x0015fb87, 0x0019fb87,\r
-  0x001dfb87, 0x0001c397, 0x0005c397, 0x0009c397, 0x000dc397, 0x0011c397,\r
-  0x0015c397, 0x0019c397, 0x001dc397, 0x0001cb97, 0x0005cb97, 0x0009cb97,\r
-  0x000dcb97, 0x0011cb97, 0x0015cb97, 0x0019cb97, 0x001dcb97, 0x0001d397,\r
-  0x0005d397, 0x0009d397, 0x000dd397, 0x0011d397, 0x0015d397, 0x0019d397,\r
-  0x001dd397, 0x0001db97, 0x0005db97, 0x0009db97, 0x000ddb97, 0x0011db97,\r
-  0x0015db97, 0x0019db97, 0x001ddb97, 0x0001e397, 0x0005e397, 0x0009e397,\r
-  0x000de397, 0x0011e397, 0x0015e397, 0x0019e397, 0x001de397, 0x0001eb97,\r
-  0x0005eb97, 0x0009eb97, 0x000deb97, 0x0011eb97, 0x0015eb97, 0x0019eb97,\r
-  0x001deb97, 0x0001f397, 0x0005f397, 0x0009f397, 0x000df397, 0x0011f397,\r
-  0x0015f397, 0x0019f397, 0x001df397, 0x0001fb97, 0x0005fb97, 0x0009fb97,\r
-  0x000dfb97, 0x0011fb97, 0x0015fb97, 0x0019fb97, 0x001dfb97, 0x0001c3a7,\r
-  0x0005c3a7, 0x0009c3a7, 0x000dc3a7, 0x0011c3a7, 0x0015c3a7, 0x0019c3a7,\r
-  0x001dc3a7, 0x0001cba7, 0x0005cba7, 0x0009cba7, 0x000dcba7, 0x0011cba7,\r
-  0x0015cba7, 0x0019cba7, 0x001dcba7, 0x0001d3a7, 0x0005d3a7, 0x0009d3a7,\r
-  0x000dd3a7, 0x0011d3a7, 0x0015d3a7, 0x0019d3a7, 0x001dd3a7, 0x0001dba7,\r
-  0x0005dba7, 0x0009dba7, 0x000ddba7, 0x0011dba7, 0x0015dba7, 0x0019dba7,\r
-  0x001ddba7, 0x0001e3a7, 0x0005e3a7, 0x0009e3a7, 0x000de3a7, 0x0011e3a7,\r
-  0x0015e3a7, 0x0019e3a7, 0x001de3a7, 0x0001eba7, 0x0005eba7, 0x0009eba7,\r
-  0x000deba7, 0x0011eba7, 0x0015eba7, 0x0019eba7, 0x001deba7, 0x0001f3a7,\r
-  0x0005f3a7, 0x0009f3a7, 0x000df3a7, 0x0011f3a7, 0x0015f3a7, 0x0019f3a7,\r
-  0x001df3a7, 0x0001fba7, 0x0005fba7, 0x0009fba7, 0x000dfba7, 0x0011fba7,\r
-  0x0015fba7, 0x0019fba7, 0x001dfba7, 0x0001c3b7, 0x0005c3b7, 0x0009c3b7,\r
-  0x000dc3b7, 0x0011c3b7, 0x0015c3b7, 0x0019c3b7, 0x001dc3b7, 0x0001cbb7,\r
-  0x0005cbb7, 0x0009cbb7, 0x000dcbb7, 0x0011cbb7, 0x0015cbb7, 0x0019cbb7,\r
-  0x001dcbb7, 0x0001d3b7, 0x0005d3b7, 0x0009d3b7, 0x000dd3b7, 0x0011d3b7,\r
-  0x0015d3b7, 0x0019d3b7, 0x001dd3b7, 0x0001dbb7, 0x0005dbb7, 0x0009dbb7,\r
-  0x000ddbb7, 0x0011dbb7, 0x0015dbb7, 0x0019dbb7, 0x001ddbb7, 0x0001e3b7,\r
-  0x0005e3b7, 0x0009e3b7, 0x000de3b7, 0x0011e3b7, 0x0015e3b7, 0x0019e3b7,\r
-  0x001de3b7, 0x0001ebb7, 0x0005ebb7, 0x0009ebb7, 0x000debb7, 0x0011ebb7,\r
-  0x0015ebb7, 0x0019ebb7, 0x001debb7, 0x0001f3b7, 0x0005f3b7, 0x0009f3b7,\r
-  0x000df3b7, 0x0011f3b7, 0x0015f3b7, 0x0019f3b7, 0x001df3b7, 0x0001fbb7,\r
-  0x0005fbb7, 0x0009fbb7, 0x000dfbb7, 0x0011fbb7, 0x0015fbb7, 0x0019fbb7,\r
-  0x001dfbb7, 0x0001c3c7, 0x0005c3c7, 0x0009c3c7, 0x000dc3c7, 0x0011c3c7,\r
-  0x0015c3c7, 0x0019c3c7, 0x001dc3c7, 0x0001cbc7, 0x0005cbc7, 0x0009cbc7,\r
-  0x000dcbc7, 0x0011cbc7, 0x0015cbc7, 0x0019cbc7, 0x001dcbc7, 0x0001d3c7,\r
-  0x0005d3c7, 0x0009d3c7, 0x000dd3c7, 0x0011d3c7, 0x0015d3c7, 0x0019d3c7,\r
-  0x001dd3c7, 0x0001dbc7, 0x0005dbc7, 0x0009dbc7, 0x000ddbc7, 0x0011dbc7,\r
-  0x0015dbc7, 0x0019dbc7, 0x001ddbc7, 0x0001e3c7, 0x0005e3c7, 0x0009e3c7,\r
-  0x000de3c7, 0x0011e3c7, 0x0015e3c7, 0x0019e3c7, 0x001de3c7, 0x0001ebc7,\r
-  0x0005ebc7, 0x0009ebc7, 0x000debc7, 0x0011ebc7, 0x0015ebc7, 0x0019ebc7,\r
-  0x001debc7, 0x0001f3c7, 0x0005f3c7, 0x0009f3c7, 0x000df3c7, 0x0011f3c7,\r
-  0x0015f3c7, 0x0019f3c7, 0x001df3c7, 0x0001fbc7, 0x0005fbc7, 0x0009fbc7,\r
-  0x000dfbc7, 0x0011fbc7, 0x0015fbc7, 0x0019fbc7, 0x001dfbc7, 0x0001c3d7,\r
-  0x0005c3d7, 0x0009c3d7, 0x000dc3d7, 0x0011c3d7, 0x0015c3d7, 0x0019c3d7,\r
-  0x001dc3d7, 0x0001cbd7, 0x0005cbd7, 0x0009cbd7, 0x000dcbd7, 0x0011cbd7,\r
-  0x0015cbd7, 0x0019cbd7, 0x001dcbd7, 0x0001d3d7, 0x0005d3d7, 0x0009d3d7,\r
-  0x000dd3d7, 0x0011d3d7, 0x0015d3d7, 0x0019d3d7, 0x001dd3d7, 0x0001dbd7,\r
-  0x0005dbd7, 0x0009dbd7, 0x000ddbd7, 0x0011dbd7, 0x0015dbd7, 0x0019dbd7,\r
-  0x001ddbd7, 0x0001e3d7, 0x0005e3d7, 0x0009e3d7, 0x000de3d7, 0x0011e3d7,\r
-  0x0015e3d7, 0x0019e3d7, 0x001de3d7, 0x0001ebd7, 0x0005ebd7, 0x0009ebd7,\r
-  0x000debd7, 0x0011ebd7, 0x0015ebd7, 0x0019ebd7, 0x001debd7, 0x0001f3d7,\r
-  0x0005f3d7, 0x0009f3d7, 0x000df3d7, 0x0011f3d7, 0x0015f3d7, 0x0019f3d7,\r
-  0x001df3d7, 0x0001fbd7, 0x0005fbd7, 0x0009fbd7, 0x000dfbd7, 0x0011fbd7,\r
-  0x0015fbd7, 0x0019fbd7, 0x001dfbd7, 0x0001c3e7, 0x0005c3e7, 0x0009c3e7,\r
-  0x000dc3e7, 0x0011c3e7, 0x0015c3e7, 0x0019c3e7, 0x001dc3e7, 0x0001cbe7,\r
-  0x0005cbe7, 0x0009cbe7, 0x000dcbe7, 0x0011cbe7, 0x0015cbe7, 0x0019cbe7,\r
-  0x001dcbe7, 0x0001d3e7, 0x0005d3e7, 0x0009d3e7, 0x000dd3e7, 0x0011d3e7,\r
-  0x0015d3e7, 0x0019d3e7, 0x001dd3e7, 0x0001dbe7, 0x0005dbe7, 0x0009dbe7,\r
-  0x000ddbe7, 0x0011dbe7, 0x0015dbe7, 0x0019dbe7, 0x001ddbe7, 0x0001e3e7,\r
-  0x0005e3e7, 0x0009e3e7, 0x000de3e7, 0x0011e3e7, 0x0015e3e7, 0x0019e3e7,\r
-  0x001de3e7, 0x0001ebe7, 0x0005ebe7, 0x0009ebe7, 0x000debe7, 0x0011ebe7,\r
-  0x0015ebe7, 0x0019ebe7, 0x001debe7, 0x0001f3e7, 0x0005f3e7, 0x0009f3e7,\r
-  0x000df3e7, 0x0011f3e7, 0x0015f3e7, 0x0019f3e7, 0x001df3e7, 0x0001fbe7,\r
-  0x0005fbe7, 0x0009fbe7, 0x000dfbe7, 0x0011fbe7, 0x0015fbe7, 0x0019fbe7,\r
-  0x001dfbe7, 0x0001c3f7, 0x0005c3f7, 0x0009c3f7, 0x000dc3f7, 0x0011c3f7,\r
-  0x0015c3f7, 0x0019c3f7, 0x001dc3f7, 0x0001cbf7, 0x0005cbf7, 0x0009cbf7,\r
-  0x000dcbf7, 0x0011cbf7, 0x0015cbf7, 0x0019cbf7, 0x001dcbf7, 0x0001d3f7,\r
-  0x0005d3f7, 0x0009d3f7, 0x000dd3f7, 0x0011d3f7, 0x0015d3f7, 0x0019d3f7,\r
-  0x001dd3f7, 0x0001dbf7, 0x0005dbf7, 0x0009dbf7, 0x000ddbf7, 0x0011dbf7,\r
-  0x0015dbf7, 0x0019dbf7, 0x001ddbf7, 0x0001e3f7, 0x0005e3f7, 0x0009e3f7,\r
-  0x000de3f7, 0x0011e3f7, 0x0015e3f7, 0x0019e3f7, 0x001de3f7, 0x0001ebf7,\r
-  0x0005ebf7, 0x0009ebf7, 0x000debf7, 0x0011ebf7, 0x0015ebf7, 0x0019ebf7,\r
-  0x001debf7, 0x0001f3f7, 0x0005f3f7, 0x0009f3f7, 0x000df3f7, 0x0011f3f7,\r
-  0x0015f3f7, 0x0019f3f7, 0x001df3f7, 0x0001fbf7, 0x0005fbf7, 0x0009fbf7,\r
-  0x000dfbf7, 0x0011fbf7, 0x0015fbf7, 0x0019fbf7, 0x001dfbf7, 0x00e1c387,\r
-  0x02e1c387, 0x04e1c387, 0x06e1c387, 0x08e1c387, 0x0ae1c387, 0x0ce1c387,\r
-  0x0ee1c387, 0x00e5c387, 0x02e5c387, 0x04e5c387, 0x06e5c387, 0x08e5c387,\r
-  0x0ae5c387, 0x0ce5c387, 0x0ee5c387, 0x00e9c387, 0x02e9c387, 0x04e9c387,\r
-  0x06e9c387, 0x08e9c387, 0x0ae9c387, 0x0ce9c387, 0x0ee9c387, 0x00edc387,\r
-  0x02edc387, 0x04edc387, 0x06edc387, 0x08edc387, 0x0aedc387, 0x0cedc387,\r
-  0x0eedc387, 0x00f1c387, 0x02f1c387, 0x04f1c387, 0x06f1c387, 0x08f1c387,\r
-  0x0af1c387, 0x0cf1c387, 0x0ef1c387, 0x00f5c387, 0x02f5c387, 0x04f5c387,\r
-  0x06f5c387, 0x08f5c387, 0x0af5c387, 0x0cf5c387, 0x0ef5c387, 0x00f9c387,\r
-  0x02f9c387, 0x04f9c387, 0x06f9c387, 0x08f9c387, 0x0af9c387, 0x0cf9c387,\r
-  0x0ef9c387, 0x00fdc387, 0x02fdc387, 0x04fdc387, 0x06fdc387, 0x08fdc387,\r
-  0x0afdc387, 0x0cfdc387, 0x0efdc387, 0x00e1cb87, 0x02e1cb87, 0x04e1cb87,\r
-  0x06e1cb87, 0x08e1cb87, 0x0ae1cb87, 0x0ce1cb87, 0x0ee1cb87, 0x00e5cb87,\r
-  0x02e5cb87, 0x04e5cb87, 0x06e5cb87, 0x08e5cb87, 0x0ae5cb87, 0x0ce5cb87,\r
-  0x0ee5cb87, 0x00e9cb87, 0x02e9cb87, 0x04e9cb87, 0x06e9cb87, 0x08e9cb87,\r
-  0x0ae9cb87, 0x0ce9cb87, 0x0ee9cb87, 0x00edcb87, 0x02edcb87, 0x04edcb87,\r
-  0x06edcb87, 0x08edcb87, 0x0aedcb87, 0x0cedcb87, 0x0eedcb87, 0x00f1cb87,\r
-  0x02f1cb87, 0x04f1cb87, 0x06f1cb87, 0x08f1cb87, 0x0af1cb87, 0x0cf1cb87,\r
-  0x0ef1cb87, 0x00f5cb87, 0x02f5cb87, 0x04f5cb87, 0x06f5cb87, 0x08f5cb87,\r
-  0x0af5cb87, 0x0cf5cb87, 0x0ef5cb87, 0x00f9cb87, 0x02f9cb87, 0x04f9cb87,\r
-  0x06f9cb87, 0x08f9cb87,\r
-};\r
-\r
-static const uint32_t kZeroRepsDepth[BROTLI_NUM_COMMAND_SYMBOLS] = {\r
-   0,  4,  8,  7,  7,  7,  7,  7,  7,  7,  7, 11, 14, 14, 14, 14,\r
-  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,\r
-  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,\r
-  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,\r
-  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r
-  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 28, 28, 28, 28, 28,\r
-  28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\r
-  28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\r
-  28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\r
-  28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\r
-  28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\r
-  28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\r
-  28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\r
-};\r
-\r
-static const uint64_t kNonZeroRepsBits[BROTLI_NUM_COMMAND_SYMBOLS] = {\r
-  0x0000000b, 0x0000001b, 0x0000002b, 0x0000003b, 0x000002cb, 0x000006cb,\r
-  0x00000acb, 0x00000ecb, 0x000002db, 0x000006db, 0x00000adb, 0x00000edb,\r
-  0x000002eb, 0x000006eb, 0x00000aeb, 0x00000eeb, 0x000002fb, 0x000006fb,\r
-  0x00000afb, 0x00000efb, 0x0000b2cb, 0x0001b2cb, 0x0002b2cb, 0x0003b2cb,\r
-  0x0000b6cb, 0x0001b6cb, 0x0002b6cb, 0x0003b6cb, 0x0000bacb, 0x0001bacb,\r
-  0x0002bacb, 0x0003bacb, 0x0000becb, 0x0001becb, 0x0002becb, 0x0003becb,\r
-  0x0000b2db, 0x0001b2db, 0x0002b2db, 0x0003b2db, 0x0000b6db, 0x0001b6db,\r
-  0x0002b6db, 0x0003b6db, 0x0000badb, 0x0001badb, 0x0002badb, 0x0003badb,\r
-  0x0000bedb, 0x0001bedb, 0x0002bedb, 0x0003bedb, 0x0000b2eb, 0x0001b2eb,\r
-  0x0002b2eb, 0x0003b2eb, 0x0000b6eb, 0x0001b6eb, 0x0002b6eb, 0x0003b6eb,\r
-  0x0000baeb, 0x0001baeb, 0x0002baeb, 0x0003baeb, 0x0000beeb, 0x0001beeb,\r
-  0x0002beeb, 0x0003beeb, 0x0000b2fb, 0x0001b2fb, 0x0002b2fb, 0x0003b2fb,\r
-  0x0000b6fb, 0x0001b6fb, 0x0002b6fb, 0x0003b6fb, 0x0000bafb, 0x0001bafb,\r
-  0x0002bafb, 0x0003bafb, 0x0000befb, 0x0001befb, 0x0002befb, 0x0003befb,\r
-  0x002cb2cb, 0x006cb2cb, 0x00acb2cb, 0x00ecb2cb, 0x002db2cb, 0x006db2cb,\r
-  0x00adb2cb, 0x00edb2cb, 0x002eb2cb, 0x006eb2cb, 0x00aeb2cb, 0x00eeb2cb,\r
-  0x002fb2cb, 0x006fb2cb, 0x00afb2cb, 0x00efb2cb, 0x002cb6cb, 0x006cb6cb,\r
-  0x00acb6cb, 0x00ecb6cb, 0x002db6cb, 0x006db6cb, 0x00adb6cb, 0x00edb6cb,\r
-  0x002eb6cb, 0x006eb6cb, 0x00aeb6cb, 0x00eeb6cb, 0x002fb6cb, 0x006fb6cb,\r
-  0x00afb6cb, 0x00efb6cb, 0x002cbacb, 0x006cbacb, 0x00acbacb, 0x00ecbacb,\r
-  0x002dbacb, 0x006dbacb, 0x00adbacb, 0x00edbacb, 0x002ebacb, 0x006ebacb,\r
-  0x00aebacb, 0x00eebacb, 0x002fbacb, 0x006fbacb, 0x00afbacb, 0x00efbacb,\r
-  0x002cbecb, 0x006cbecb, 0x00acbecb, 0x00ecbecb, 0x002dbecb, 0x006dbecb,\r
-  0x00adbecb, 0x00edbecb, 0x002ebecb, 0x006ebecb, 0x00aebecb, 0x00eebecb,\r
-  0x002fbecb, 0x006fbecb, 0x00afbecb, 0x00efbecb, 0x002cb2db, 0x006cb2db,\r
-  0x00acb2db, 0x00ecb2db, 0x002db2db, 0x006db2db, 0x00adb2db, 0x00edb2db,\r
-  0x002eb2db, 0x006eb2db, 0x00aeb2db, 0x00eeb2db, 0x002fb2db, 0x006fb2db,\r
-  0x00afb2db, 0x00efb2db, 0x002cb6db, 0x006cb6db, 0x00acb6db, 0x00ecb6db,\r
-  0x002db6db, 0x006db6db, 0x00adb6db, 0x00edb6db, 0x002eb6db, 0x006eb6db,\r
-  0x00aeb6db, 0x00eeb6db, 0x002fb6db, 0x006fb6db, 0x00afb6db, 0x00efb6db,\r
-  0x002cbadb, 0x006cbadb, 0x00acbadb, 0x00ecbadb, 0x002dbadb, 0x006dbadb,\r
-  0x00adbadb, 0x00edbadb, 0x002ebadb, 0x006ebadb, 0x00aebadb, 0x00eebadb,\r
-  0x002fbadb, 0x006fbadb, 0x00afbadb, 0x00efbadb, 0x002cbedb, 0x006cbedb,\r
-  0x00acbedb, 0x00ecbedb, 0x002dbedb, 0x006dbedb, 0x00adbedb, 0x00edbedb,\r
-  0x002ebedb, 0x006ebedb, 0x00aebedb, 0x00eebedb, 0x002fbedb, 0x006fbedb,\r
-  0x00afbedb, 0x00efbedb, 0x002cb2eb, 0x006cb2eb, 0x00acb2eb, 0x00ecb2eb,\r
-  0x002db2eb, 0x006db2eb, 0x00adb2eb, 0x00edb2eb, 0x002eb2eb, 0x006eb2eb,\r
-  0x00aeb2eb, 0x00eeb2eb, 0x002fb2eb, 0x006fb2eb, 0x00afb2eb, 0x00efb2eb,\r
-  0x002cb6eb, 0x006cb6eb, 0x00acb6eb, 0x00ecb6eb, 0x002db6eb, 0x006db6eb,\r
-  0x00adb6eb, 0x00edb6eb, 0x002eb6eb, 0x006eb6eb, 0x00aeb6eb, 0x00eeb6eb,\r
-  0x002fb6eb, 0x006fb6eb, 0x00afb6eb, 0x00efb6eb, 0x002cbaeb, 0x006cbaeb,\r
-  0x00acbaeb, 0x00ecbaeb, 0x002dbaeb, 0x006dbaeb, 0x00adbaeb, 0x00edbaeb,\r
-  0x002ebaeb, 0x006ebaeb, 0x00aebaeb, 0x00eebaeb, 0x002fbaeb, 0x006fbaeb,\r
-  0x00afbaeb, 0x00efbaeb, 0x002cbeeb, 0x006cbeeb, 0x00acbeeb, 0x00ecbeeb,\r
-  0x002dbeeb, 0x006dbeeb, 0x00adbeeb, 0x00edbeeb, 0x002ebeeb, 0x006ebeeb,\r
-  0x00aebeeb, 0x00eebeeb, 0x002fbeeb, 0x006fbeeb, 0x00afbeeb, 0x00efbeeb,\r
-  0x002cb2fb, 0x006cb2fb, 0x00acb2fb, 0x00ecb2fb, 0x002db2fb, 0x006db2fb,\r
-  0x00adb2fb, 0x00edb2fb, 0x002eb2fb, 0x006eb2fb, 0x00aeb2fb, 0x00eeb2fb,\r
-  0x002fb2fb, 0x006fb2fb, 0x00afb2fb, 0x00efb2fb, 0x002cb6fb, 0x006cb6fb,\r
-  0x00acb6fb, 0x00ecb6fb, 0x002db6fb, 0x006db6fb, 0x00adb6fb, 0x00edb6fb,\r
-  0x002eb6fb, 0x006eb6fb, 0x00aeb6fb, 0x00eeb6fb, 0x002fb6fb, 0x006fb6fb,\r
-  0x00afb6fb, 0x00efb6fb, 0x002cbafb, 0x006cbafb, 0x00acbafb, 0x00ecbafb,\r
-  0x002dbafb, 0x006dbafb, 0x00adbafb, 0x00edbafb, 0x002ebafb, 0x006ebafb,\r
-  0x00aebafb, 0x00eebafb, 0x002fbafb, 0x006fbafb, 0x00afbafb, 0x00efbafb,\r
-  0x002cbefb, 0x006cbefb, 0x00acbefb, 0x00ecbefb, 0x002dbefb, 0x006dbefb,\r
-  0x00adbefb, 0x00edbefb, 0x002ebefb, 0x006ebefb, 0x00aebefb, 0x00eebefb,\r
-  0x002fbefb, 0x006fbefb, 0x00afbefb, 0x00efbefb, 0x0b2cb2cb, 0x1b2cb2cb,\r
-  0x2b2cb2cb, 0x3b2cb2cb, 0x0b6cb2cb, 0x1b6cb2cb, 0x2b6cb2cb, 0x3b6cb2cb,\r
-  0x0bacb2cb, 0x1bacb2cb, 0x2bacb2cb, 0x3bacb2cb, 0x0becb2cb, 0x1becb2cb,\r
-  0x2becb2cb, 0x3becb2cb, 0x0b2db2cb, 0x1b2db2cb, 0x2b2db2cb, 0x3b2db2cb,\r
-  0x0b6db2cb, 0x1b6db2cb, 0x2b6db2cb, 0x3b6db2cb, 0x0badb2cb, 0x1badb2cb,\r
-  0x2badb2cb, 0x3badb2cb, 0x0bedb2cb, 0x1bedb2cb, 0x2bedb2cb, 0x3bedb2cb,\r
-  0x0b2eb2cb, 0x1b2eb2cb, 0x2b2eb2cb, 0x3b2eb2cb, 0x0b6eb2cb, 0x1b6eb2cb,\r
-  0x2b6eb2cb, 0x3b6eb2cb, 0x0baeb2cb, 0x1baeb2cb, 0x2baeb2cb, 0x3baeb2cb,\r
-  0x0beeb2cb, 0x1beeb2cb, 0x2beeb2cb, 0x3beeb2cb, 0x0b2fb2cb, 0x1b2fb2cb,\r
-  0x2b2fb2cb, 0x3b2fb2cb, 0x0b6fb2cb, 0x1b6fb2cb, 0x2b6fb2cb, 0x3b6fb2cb,\r
-  0x0bafb2cb, 0x1bafb2cb, 0x2bafb2cb, 0x3bafb2cb, 0x0befb2cb, 0x1befb2cb,\r
-  0x2befb2cb, 0x3befb2cb, 0x0b2cb6cb, 0x1b2cb6cb, 0x2b2cb6cb, 0x3b2cb6cb,\r
-  0x0b6cb6cb, 0x1b6cb6cb, 0x2b6cb6cb, 0x3b6cb6cb, 0x0bacb6cb, 0x1bacb6cb,\r
-  0x2bacb6cb, 0x3bacb6cb, 0x0becb6cb, 0x1becb6cb, 0x2becb6cb, 0x3becb6cb,\r
-  0x0b2db6cb, 0x1b2db6cb, 0x2b2db6cb, 0x3b2db6cb, 0x0b6db6cb, 0x1b6db6cb,\r
-  0x2b6db6cb, 0x3b6db6cb, 0x0badb6cb, 0x1badb6cb, 0x2badb6cb, 0x3badb6cb,\r
-  0x0bedb6cb, 0x1bedb6cb, 0x2bedb6cb, 0x3bedb6cb, 0x0b2eb6cb, 0x1b2eb6cb,\r
-  0x2b2eb6cb, 0x3b2eb6cb, 0x0b6eb6cb, 0x1b6eb6cb, 0x2b6eb6cb, 0x3b6eb6cb,\r
-  0x0baeb6cb, 0x1baeb6cb, 0x2baeb6cb, 0x3baeb6cb, 0x0beeb6cb, 0x1beeb6cb,\r
-  0x2beeb6cb, 0x3beeb6cb, 0x0b2fb6cb, 0x1b2fb6cb, 0x2b2fb6cb, 0x3b2fb6cb,\r
-  0x0b6fb6cb, 0x1b6fb6cb, 0x2b6fb6cb, 0x3b6fb6cb, 0x0bafb6cb, 0x1bafb6cb,\r
-  0x2bafb6cb, 0x3bafb6cb, 0x0befb6cb, 0x1befb6cb, 0x2befb6cb, 0x3befb6cb,\r
-  0x0b2cbacb, 0x1b2cbacb, 0x2b2cbacb, 0x3b2cbacb, 0x0b6cbacb, 0x1b6cbacb,\r
-  0x2b6cbacb, 0x3b6cbacb, 0x0bacbacb, 0x1bacbacb, 0x2bacbacb, 0x3bacbacb,\r
-  0x0becbacb, 0x1becbacb, 0x2becbacb, 0x3becbacb, 0x0b2dbacb, 0x1b2dbacb,\r
-  0x2b2dbacb, 0x3b2dbacb, 0x0b6dbacb, 0x1b6dbacb, 0x2b6dbacb, 0x3b6dbacb,\r
-  0x0badbacb, 0x1badbacb, 0x2badbacb, 0x3badbacb, 0x0bedbacb, 0x1bedbacb,\r
-  0x2bedbacb, 0x3bedbacb, 0x0b2ebacb, 0x1b2ebacb, 0x2b2ebacb, 0x3b2ebacb,\r
-  0x0b6ebacb, 0x1b6ebacb, 0x2b6ebacb, 0x3b6ebacb, 0x0baebacb, 0x1baebacb,\r
-  0x2baebacb, 0x3baebacb, 0x0beebacb, 0x1beebacb, 0x2beebacb, 0x3beebacb,\r
-  0x0b2fbacb, 0x1b2fbacb, 0x2b2fbacb, 0x3b2fbacb, 0x0b6fbacb, 0x1b6fbacb,\r
-  0x2b6fbacb, 0x3b6fbacb, 0x0bafbacb, 0x1bafbacb, 0x2bafbacb, 0x3bafbacb,\r
-  0x0befbacb, 0x1befbacb, 0x2befbacb, 0x3befbacb, 0x0b2cbecb, 0x1b2cbecb,\r
-  0x2b2cbecb, 0x3b2cbecb, 0x0b6cbecb, 0x1b6cbecb, 0x2b6cbecb, 0x3b6cbecb,\r
-  0x0bacbecb, 0x1bacbecb, 0x2bacbecb, 0x3bacbecb, 0x0becbecb, 0x1becbecb,\r
-  0x2becbecb, 0x3becbecb, 0x0b2dbecb, 0x1b2dbecb, 0x2b2dbecb, 0x3b2dbecb,\r
-  0x0b6dbecb, 0x1b6dbecb, 0x2b6dbecb, 0x3b6dbecb, 0x0badbecb, 0x1badbecb,\r
-  0x2badbecb, 0x3badbecb, 0x0bedbecb, 0x1bedbecb, 0x2bedbecb, 0x3bedbecb,\r
-  0x0b2ebecb, 0x1b2ebecb, 0x2b2ebecb, 0x3b2ebecb, 0x0b6ebecb, 0x1b6ebecb,\r
-  0x2b6ebecb, 0x3b6ebecb, 0x0baebecb, 0x1baebecb, 0x2baebecb, 0x3baebecb,\r
-  0x0beebecb, 0x1beebecb, 0x2beebecb, 0x3beebecb, 0x0b2fbecb, 0x1b2fbecb,\r
-  0x2b2fbecb, 0x3b2fbecb, 0x0b6fbecb, 0x1b6fbecb, 0x2b6fbecb, 0x3b6fbecb,\r
-  0x0bafbecb, 0x1bafbecb, 0x2bafbecb, 0x3bafbecb, 0x0befbecb, 0x1befbecb,\r
-  0x2befbecb, 0x3befbecb, 0x0b2cb2db, 0x1b2cb2db, 0x2b2cb2db, 0x3b2cb2db,\r
-  0x0b6cb2db, 0x1b6cb2db, 0x2b6cb2db, 0x3b6cb2db, 0x0bacb2db, 0x1bacb2db,\r
-  0x2bacb2db, 0x3bacb2db, 0x0becb2db, 0x1becb2db, 0x2becb2db, 0x3becb2db,\r
-  0x0b2db2db, 0x1b2db2db, 0x2b2db2db, 0x3b2db2db, 0x0b6db2db, 0x1b6db2db,\r
-  0x2b6db2db, 0x3b6db2db, 0x0badb2db, 0x1badb2db, 0x2badb2db, 0x3badb2db,\r
-  0x0bedb2db, 0x1bedb2db, 0x2bedb2db, 0x3bedb2db, 0x0b2eb2db, 0x1b2eb2db,\r
-  0x2b2eb2db, 0x3b2eb2db, 0x0b6eb2db, 0x1b6eb2db, 0x2b6eb2db, 0x3b6eb2db,\r
-  0x0baeb2db, 0x1baeb2db, 0x2baeb2db, 0x3baeb2db, 0x0beeb2db, 0x1beeb2db,\r
-  0x2beeb2db, 0x3beeb2db, 0x0b2fb2db, 0x1b2fb2db, 0x2b2fb2db, 0x3b2fb2db,\r
-  0x0b6fb2db, 0x1b6fb2db, 0x2b6fb2db, 0x3b6fb2db, 0x0bafb2db, 0x1bafb2db,\r
-  0x2bafb2db, 0x3bafb2db, 0x0befb2db, 0x1befb2db, 0x2befb2db, 0x3befb2db,\r
-  0x0b2cb6db, 0x1b2cb6db, 0x2b2cb6db, 0x3b2cb6db, 0x0b6cb6db, 0x1b6cb6db,\r
-  0x2b6cb6db, 0x3b6cb6db, 0x0bacb6db, 0x1bacb6db, 0x2bacb6db, 0x3bacb6db,\r
-  0x0becb6db, 0x1becb6db, 0x2becb6db, 0x3becb6db, 0x0b2db6db, 0x1b2db6db,\r
-  0x2b2db6db, 0x3b2db6db, 0x0b6db6db, 0x1b6db6db, 0x2b6db6db, 0x3b6db6db,\r
-  0x0badb6db, 0x1badb6db, 0x2badb6db, 0x3badb6db, 0x0bedb6db, 0x1bedb6db,\r
-  0x2bedb6db, 0x3bedb6db, 0x0b2eb6db, 0x1b2eb6db, 0x2b2eb6db, 0x3b2eb6db,\r
-  0x0b6eb6db, 0x1b6eb6db, 0x2b6eb6db, 0x3b6eb6db, 0x0baeb6db, 0x1baeb6db,\r
-  0x2baeb6db, 0x3baeb6db,\r
-};\r
-\r
-static const uint32_t kNonZeroRepsDepth[BROTLI_NUM_COMMAND_SYMBOLS] = {\r
-   6,  6,  6,  6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\r
-  12, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,\r
-  18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,\r
-  18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,\r
-  18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,\r
-  18, 18, 18, 18, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r
-  24, 24, 24, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-  30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\r
-};\r
-\r
-static const uint16_t kStaticCommandCodeBits[BROTLI_NUM_COMMAND_SYMBOLS] = {\r
-    0,  256,  128,  384,   64,  320,  192,  448,\r
-   32,  288,  160,  416,   96,  352,  224,  480,\r
-   16,  272,  144,  400,   80,  336,  208,  464,\r
-   48,  304,  176,  432,  112,  368,  240,  496,\r
-    8,  264,  136,  392,   72,  328,  200,  456,\r
-   40,  296,  168,  424,  104,  360,  232,  488,\r
-   24,  280,  152,  408,   88,  344,  216,  472,\r
-   56,  312,  184,  440,  120,  376,  248,  504,\r
-    4,  260,  132,  388,   68,  324,  196,  452,\r
-   36,  292,  164,  420,  100,  356,  228,  484,\r
-   20,  276,  148,  404,   84,  340,  212,  468,\r
-   52,  308,  180,  436,  116,  372,  244,  500,\r
-   12,  268,  140,  396,   76,  332,  204,  460,\r
-   44,  300,  172,  428,  108,  364,  236,  492,\r
-   28,  284,  156,  412,   92,  348,  220,  476,\r
-   60,  316,  188,  444,  124,  380,  252,  508,\r
-    2,  258,  130,  386,   66,  322,  194,  450,\r
-   34,  290,  162,  418,   98,  354,  226,  482,\r
-   18,  274,  146,  402,   82,  338,  210,  466,\r
-   50,  306,  178,  434,  114,  370,  242,  498,\r
-   10,  266,  138,  394,   74,  330,  202,  458,\r
-   42,  298,  170,  426,  106,  362,  234,  490,\r
-   26,  282,  154,  410,   90,  346,  218,  474,\r
-   58,  314,  186,  442,  122,  378,  250,  506,\r
-    6,  262,  134,  390,   70,  326,  198,  454,\r
-   38,  294,  166,  422,  102,  358,  230,  486,\r
-   22,  278,  150,  406,   86,  342,  214,  470,\r
-   54,  310,  182,  438,  118,  374,  246,  502,\r
-   14,  270,  142,  398,   78,  334,  206,  462,\r
-   46,  302,  174,  430,  110,  366,  238,  494,\r
-   30,  286,  158,  414,   94,  350,  222,  478,\r
-   62,  318,  190,  446,  126,  382,  254,  510,\r
-    1,  257,  129,  385,   65,  321,  193,  449,\r
-   33,  289,  161,  417,   97,  353,  225,  481,\r
-   17,  273,  145,  401,   81,  337,  209,  465,\r
-   49,  305,  177,  433,  113,  369,  241,  497,\r
-    9,  265,  137,  393,   73,  329,  201,  457,\r
-   41,  297,  169,  425,  105,  361,  233,  489,\r
-   25,  281,  153,  409,   89,  345,  217,  473,\r
-   57,  313,  185,  441,  121,  377,  249,  505,\r
-    5,  261,  133,  389,   69,  325,  197,  453,\r
-   37,  293,  165,  421,  101,  357,  229,  485,\r
-   21,  277,  149,  405,   85,  341,  213,  469,\r
-   53,  309,  181,  437,  117,  373,  245,  501,\r
-   13,  269,  141,  397,   77,  333,  205,  461,\r
-   45,  301,  173,  429,  109,  365,  237,  493,\r
-   29,  285,  157,  413,   93,  349,  221,  477,\r
-   61,  317,  189,  445,  125,  381,  253,  509,\r
-    3,  259,  131,  387,   67,  323,  195,  451,\r
-   35,  291,  163,  419,   99,  355,  227,  483,\r
-   19,  275,  147,  403,   83,  339,  211,  467,\r
-   51,  307,  179,  435,  115,  371,  243,  499,\r
-   11,  267,  139,  395,   75,  331,  203,  459,\r
-   43,  299,  171,  427,  107,  363,  235,  491,\r
-   27,  283,  155,  411,   91,  347,  219,  475,\r
-   59,  315,  187,  443,  123,  379,  251,  507,\r
-    7, 1031,  519, 1543,  263, 1287,  775, 1799,\r
-  135, 1159,  647, 1671,  391, 1415,  903, 1927,\r
-   71, 1095,  583, 1607,  327, 1351,  839, 1863,\r
-  199, 1223,  711, 1735,  455, 1479,  967, 1991,\r
-   39, 1063,  551, 1575,  295, 1319,  807, 1831,\r
-  167, 1191,  679, 1703,  423, 1447,  935, 1959,\r
-  103, 1127,  615, 1639,  359, 1383,  871, 1895,\r
-  231, 1255,  743, 1767,  487, 1511,  999, 2023,\r
-   23, 1047,  535, 1559,  279, 1303,  791, 1815,\r
-  151, 1175,  663, 1687,  407, 1431,  919, 1943,\r
-   87, 1111,  599, 1623,  343, 1367,  855, 1879,\r
-  215, 1239,  727, 1751,  471, 1495,  983, 2007,\r
-   55, 1079,  567, 1591,  311, 1335,  823, 1847,\r
-  183, 1207,  695, 1719,  439, 1463,  951, 1975,\r
-  119, 1143,  631, 1655,  375, 1399,  887, 1911,\r
-  247, 1271,  759, 1783,  503, 1527, 1015, 2039,\r
-   15, 1039,  527, 1551,  271, 1295,  783, 1807,\r
-  143, 1167,  655, 1679,  399, 1423,  911, 1935,\r
-   79, 1103,  591, 1615,  335, 1359,  847, 1871,\r
-  207, 1231,  719, 1743,  463, 1487,  975, 1999,\r
-   47, 1071,  559, 1583,  303, 1327,  815, 1839,\r
-  175, 1199,  687, 1711,  431, 1455,  943, 1967,\r
-  111, 1135,  623, 1647,  367, 1391,  879, 1903,\r
-  239, 1263,  751, 1775,  495, 1519, 1007, 2031,\r
-   31, 1055,  543, 1567,  287, 1311,  799, 1823,\r
-  159, 1183,  671, 1695,  415, 1439,  927, 1951,\r
-   95, 1119,  607, 1631,  351, 1375,  863, 1887,\r
-  223, 1247,  735, 1759,  479, 1503,  991, 2015,\r
-   63, 1087,  575, 1599,  319, 1343,  831, 1855,\r
-  191, 1215,  703, 1727,  447, 1471,  959, 1983,\r
-  127, 1151,  639, 1663,  383, 1407,  895, 1919,\r
-  255, 1279,  767, 1791,  511, 1535, 1023, 2047,\r
-};\r
-\r
-static BROTLI_INLINE void StoreStaticCommandHuffmanTree(\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  BrotliWriteBits(\r
-      56, BROTLI_MAKE_UINT64_T(0x926244U, 0x16307003U), storage_ix, storage);\r
-  BrotliWriteBits(3, 0x00000000U, storage_ix, storage);\r
-}\r
-\r
-static const uint16_t kStaticDistanceCodeBits[64] = {\r
-   0, 32, 16, 48,  8, 40, 24, 56,  4, 36, 20, 52, 12, 44, 28, 60,\r
-   2, 34, 18, 50, 10, 42, 26, 58,  6, 38, 22, 54, 14, 46, 30, 62,\r
-   1, 33, 17, 49,  9, 41, 25, 57,  5, 37, 21, 53, 13, 45, 29, 61,\r
-   3, 35, 19, 51, 11, 43, 27, 59,  7, 39, 23, 55, 15, 47, 31, 63,\r
-};\r
-\r
-static BROTLI_INLINE void StoreStaticDistanceHuffmanTree(\r
-    size_t* storage_ix, uint8_t* storage) {\r
-  BrotliWriteBits(28, 0x0369DC03u, storage_ix, storage);\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/fast_log.h b/BaseTools/Source/C/BrotliCompress/enc/fast_log.h
deleted file mode 100644 (file)
index dabc45e..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Utilities for fast computation of logarithms. */\r
-\r
-#ifndef BROTLI_ENC_FAST_LOG_H_\r
-#define BROTLI_ENC_FAST_LOG_H_\r
-\r
-#include <math.h>\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static BROTLI_INLINE uint32_t Log2FloorNonZero(size_t n) {\r
-  /* TODO: generalize and move to platform.h */\r
-#if BROTLI_GNUC_HAS_BUILTIN(__builtin_clz, 3, 4, 0) || \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0)\r
-  return 31u ^ (uint32_t)__builtin_clz((uint32_t)n);\r
-#else\r
-  uint32_t result = 0;\r
-  while (n >>= 1) result++;\r
-  return result;\r
-#endif\r
-}\r
-\r
-/* A lookup table for small values of log2(int) to be used in entropy\r
-   computation.\r
-\r
-   ", ".join(["%.16ff" % x for x in [0.0]+[log2(x) for x in range(1, 256)]]) */\r
-static const float kLog2Table[] = {\r
-  0.0000000000000000f, 0.0000000000000000f, 1.0000000000000000f,\r
-  1.5849625007211563f, 2.0000000000000000f, 2.3219280948873622f,\r
-  2.5849625007211561f, 2.8073549220576042f, 3.0000000000000000f,\r
-  3.1699250014423126f, 3.3219280948873626f, 3.4594316186372978f,\r
-  3.5849625007211565f, 3.7004397181410922f, 3.8073549220576037f,\r
-  3.9068905956085187f, 4.0000000000000000f, 4.0874628412503400f,\r
-  4.1699250014423122f, 4.2479275134435852f, 4.3219280948873626f,\r
-  4.3923174227787607f, 4.4594316186372973f, 4.5235619560570131f,\r
-  4.5849625007211570f, 4.6438561897747244f, 4.7004397181410926f,\r
-  4.7548875021634691f, 4.8073549220576037f, 4.8579809951275728f,\r
-  4.9068905956085187f, 4.9541963103868758f, 5.0000000000000000f,\r
-  5.0443941193584534f, 5.0874628412503400f, 5.1292830169449664f,\r
-  5.1699250014423122f, 5.2094533656289501f, 5.2479275134435852f,\r
-  5.2854022188622487f, 5.3219280948873626f, 5.3575520046180838f,\r
-  5.3923174227787607f, 5.4262647547020979f, 5.4594316186372973f,\r
-  5.4918530963296748f, 5.5235619560570131f, 5.5545888516776376f,\r
-  5.5849625007211570f, 5.6147098441152083f, 5.6438561897747244f,\r
-  5.6724253419714961f, 5.7004397181410926f, 5.7279204545631996f,\r
-  5.7548875021634691f, 5.7813597135246599f, 5.8073549220576046f,\r
-  5.8328900141647422f, 5.8579809951275719f, 5.8826430493618416f,\r
-  5.9068905956085187f, 5.9307373375628867f, 5.9541963103868758f,\r
-  5.9772799234999168f, 6.0000000000000000f, 6.0223678130284544f,\r
-  6.0443941193584534f, 6.0660891904577721f, 6.0874628412503400f,\r
-  6.1085244567781700f, 6.1292830169449672f, 6.1497471195046822f,\r
-  6.1699250014423122f, 6.1898245588800176f, 6.2094533656289510f,\r
-  6.2288186904958804f, 6.2479275134435861f, 6.2667865406949019f,\r
-  6.2854022188622487f, 6.3037807481771031f, 6.3219280948873617f,\r
-  6.3398500028846252f, 6.3575520046180847f, 6.3750394313469254f,\r
-  6.3923174227787598f, 6.4093909361377026f, 6.4262647547020979f,\r
-  6.4429434958487288f, 6.4594316186372982f, 6.4757334309663976f,\r
-  6.4918530963296748f, 6.5077946401986964f, 6.5235619560570131f,\r
-  6.5391588111080319f, 6.5545888516776376f, 6.5698556083309478f,\r
-  6.5849625007211561f, 6.5999128421871278f, 6.6147098441152092f,\r
-  6.6293566200796095f, 6.6438561897747253f, 6.6582114827517955f,\r
-  6.6724253419714952f, 6.6865005271832185f, 6.7004397181410917f,\r
-  6.7142455176661224f, 6.7279204545631988f, 6.7414669864011465f,\r
-  6.7548875021634691f, 6.7681843247769260f, 6.7813597135246599f,\r
-  6.7944158663501062f, 6.8073549220576037f, 6.8201789624151887f,\r
-  6.8328900141647422f, 6.8454900509443757f, 6.8579809951275719f,\r
-  6.8703647195834048f, 6.8826430493618416f, 6.8948177633079437f,\r
-  6.9068905956085187f, 6.9188632372745955f, 6.9307373375628867f,\r
-  6.9425145053392399f, 6.9541963103868758f, 6.9657842846620879f,\r
-  6.9772799234999168f, 6.9886846867721664f, 7.0000000000000000f,\r
-  7.0112272554232540f, 7.0223678130284544f, 7.0334230015374501f,\r
-  7.0443941193584534f, 7.0552824355011898f, 7.0660891904577721f,\r
-  7.0768155970508317f, 7.0874628412503400f, 7.0980320829605272f,\r
-  7.1085244567781700f, 7.1189410727235076f, 7.1292830169449664f,\r
-  7.1395513523987937f, 7.1497471195046822f, 7.1598713367783891f,\r
-  7.1699250014423130f, 7.1799090900149345f, 7.1898245588800176f,\r
-  7.1996723448363644f, 7.2094533656289492f, 7.2191685204621621f,\r
-  7.2288186904958804f, 7.2384047393250794f, 7.2479275134435861f,\r
-  7.2573878426926521f, 7.2667865406949019f, 7.2761244052742384f,\r
-  7.2854022188622487f, 7.2946207488916270f, 7.3037807481771031f,\r
-  7.3128829552843557f, 7.3219280948873617f, 7.3309168781146177f,\r
-  7.3398500028846243f, 7.3487281542310781f, 7.3575520046180847f,\r
-  7.3663222142458151f, 7.3750394313469254f, 7.3837042924740528f,\r
-  7.3923174227787607f, 7.4008794362821844f, 7.4093909361377026f,\r
-  7.4178525148858991f, 7.4262647547020979f, 7.4346282276367255f,\r
-  7.4429434958487288f, 7.4512111118323299f, 7.4594316186372973f,\r
-  7.4676055500829976f, 7.4757334309663976f, 7.4838157772642564f,\r
-  7.4918530963296748f, 7.4998458870832057f, 7.5077946401986964f,\r
-  7.5156998382840436f, 7.5235619560570131f, 7.5313814605163119f,\r
-  7.5391588111080319f, 7.5468944598876373f, 7.5545888516776376f,\r
-  7.5622424242210728f, 7.5698556083309478f, 7.5774288280357487f,\r
-  7.5849625007211561f, 7.5924570372680806f, 7.5999128421871278f,\r
-  7.6073303137496113f, 7.6147098441152075f, 7.6220518194563764f,\r
-  7.6293566200796095f, 7.6366246205436488f, 7.6438561897747244f,\r
-  7.6510516911789290f, 7.6582114827517955f, 7.6653359171851765f,\r
-  7.6724253419714952f, 7.6794800995054464f, 7.6865005271832185f,\r
-  7.6934869574993252f, 7.7004397181410926f, 7.7073591320808825f,\r
-  7.7142455176661224f, 7.7210991887071856f, 7.7279204545631996f,\r
-  7.7347096202258392f, 7.7414669864011465f, 7.7481928495894596f,\r
-  7.7548875021634691f, 7.7615512324444795f, 7.7681843247769260f,\r
-  7.7747870596011737f, 7.7813597135246608f, 7.7879025593914317f,\r
-  7.7944158663501062f, 7.8008998999203047f, 7.8073549220576037f,\r
-  7.8137811912170374f, 7.8201789624151887f, 7.8265484872909159f,\r
-  7.8328900141647422f, 7.8392037880969445f, 7.8454900509443757f,\r
-  7.8517490414160571f, 7.8579809951275719f, 7.8641861446542798f,\r
-  7.8703647195834048f, 7.8765169465650002f, 7.8826430493618425f,\r
-  7.8887432488982601f, 7.8948177633079446f, 7.9008668079807496f,\r
-  7.9068905956085187f, 7.9128893362299619f, 7.9188632372745955f,\r
-  7.9248125036057813f, 7.9307373375628867f, 7.9366379390025719f,\r
-  7.9425145053392399f, 7.9483672315846778f, 7.9541963103868758f,\r
-  7.9600019320680806f, 7.9657842846620870f, 7.9715435539507720f,\r
-  7.9772799234999168f, 7.9829935746943104f, 7.9886846867721664f,\r
-  7.9943534368588578f\r
-};\r
-\r
-#define LOG_2_INV 1.4426950408889634\r
-\r
-/* Faster logarithm for small integers, with the property of log2(0) == 0. */\r
-static BROTLI_INLINE double FastLog2(size_t v) {\r
-  if (v < sizeof(kLog2Table) / sizeof(kLog2Table[0])) {\r
-    return kLog2Table[v];\r
-  }\r
-#if (defined(_MSC_VER) && _MSC_VER <= 1700) || \\r
-    (defined(__ANDROID_API__) && __ANDROID_API__ < 18)\r
-  /* Visual Studio 2012 and Android API levels < 18 do not have the log2()\r
-   * function defined, so we use log() and a multiplication instead. */\r
-  return log((double)v) * LOG_2_INV;\r
-#else\r
-  return log2((double)v);\r
-#endif\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_FAST_LOG_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/find_match_length.h b/BaseTools/Source/C/BrotliCompress/enc/find_match_length.h
deleted file mode 100644 (file)
index 6e1f444..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Function to find maximal matching prefixes of strings. */\r
-\r
-#ifndef BROTLI_ENC_FIND_MATCH_LENGTH_H_\r
-#define BROTLI_ENC_FIND_MATCH_LENGTH_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* Separate implementation for little-endian 64-bit targets, for speed. */\r
-#if defined(__GNUC__) && defined(_LP64) && defined(BROTLI_LITTLE_ENDIAN)\r
-\r
-static BROTLI_INLINE size_t FindMatchLengthWithLimit(const uint8_t* s1,\r
-                                                     const uint8_t* s2,\r
-                                                     size_t limit) {\r
-  size_t matched = 0;\r
-  size_t limit2 = (limit >> 3) + 1;  /* + 1 is for pre-decrement in while */\r
-  while (BROTLI_PREDICT_TRUE(--limit2)) {\r
-    if (BROTLI_PREDICT_FALSE(BROTLI_UNALIGNED_LOAD64LE(s2) ==\r
-                      BROTLI_UNALIGNED_LOAD64LE(s1 + matched))) {\r
-      s2 += 8;\r
-      matched += 8;\r
-    } else {\r
-      uint64_t x = BROTLI_UNALIGNED_LOAD64LE(s2) ^\r
-          BROTLI_UNALIGNED_LOAD64LE(s1 + matched);\r
-      size_t matching_bits = (size_t)__builtin_ctzll(x);\r
-      matched += matching_bits >> 3;\r
-      return matched;\r
-    }\r
-  }\r
-  limit = (limit & 7) + 1;  /* + 1 is for pre-decrement in while */\r
-  while (--limit) {\r
-    if (BROTLI_PREDICT_TRUE(s1[matched] == *s2)) {\r
-      ++s2;\r
-      ++matched;\r
-    } else {\r
-      return matched;\r
-    }\r
-  }\r
-  return matched;\r
-}\r
-#else\r
-static BROTLI_INLINE size_t FindMatchLengthWithLimit(const uint8_t* s1,\r
-                                                     const uint8_t* s2,\r
-                                                     size_t limit) {\r
-  size_t matched = 0;\r
-  const uint8_t* s2_limit = s2 + limit;\r
-  const uint8_t* s2_ptr = s2;\r
-  /* Find out how long the match is. We loop over the data 32 bits at a\r
-     time until we find a 32-bit block that doesn't match; then we find\r
-     the first non-matching bit and use that to calculate the total\r
-     length of the match. */\r
-  while (s2_ptr <= s2_limit - 4 &&\r
-         BrotliUnalignedRead32(s2_ptr) ==\r
-         BrotliUnalignedRead32(s1 + matched)) {\r
-    s2_ptr += 4;\r
-    matched += 4;\r
-  }\r
-  while ((s2_ptr < s2_limit) && (s1[matched] == *s2_ptr)) {\r
-    ++s2_ptr;\r
-    ++matched;\r
-  }\r
-  return matched;\r
-}\r
-#endif\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_FIND_MATCH_LENGTH_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash.h b/BaseTools/Source/C/BrotliCompress/enc/hash.h
deleted file mode 100644 (file)
index 9225d12..0000000
+++ /dev/null
@@ -1,497 +0,0 @@
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* A (forgetful) hash table to the data seen by the compressor, to\r
-   help create backward references to previous data. */\r
-\r
-#ifndef BROTLI_ENC_HASH_H_\r
-#define BROTLI_ENC_HASH_H_\r
-\r
-#include <string.h>  /* memcmp, memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./encoder_dict.h"\r
-#include "./fast_log.h"\r
-#include "./find_match_length.h"\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-#include "./static_dict.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* Pointer to hasher data.\r
- *\r
- * Excluding initialization and destruction, hasher can be passed as\r
- * HasherHandle by value.\r
- *\r
- * Typically hasher data consists of 3 sections:\r
- * * HasherCommon structure\r
- * * private structured hasher data, depending on hasher type\r
- * * private dynamic hasher data, depending on hasher type and parameters\r
- *\r
- * Using "define" instead of "typedef", because on MSVC __restrict does not work\r
- * on typedef pointer types. */\r
-#define HasherHandle uint8_t*\r
-\r
-typedef struct {\r
-  BrotliHasherParams params;\r
-\r
-  /* False if hasher needs to be "prepared" before use. */\r
-  BROTLI_BOOL is_prepared_;\r
-\r
-  size_t dict_num_lookups;\r
-  size_t dict_num_matches;\r
-} HasherCommon;\r
-\r
-static BROTLI_INLINE HasherCommon* GetHasherCommon(HasherHandle handle) {\r
-  return (HasherCommon*)handle;\r
-}\r
-\r
-#define score_t size_t\r
-\r
-static const uint32_t kCutoffTransformsCount = 10;\r
-/*   0,  12,   27,    23,    42,    63,    56,    48,    59,    64 */\r
-/* 0+0, 4+8, 8+19, 12+11, 16+26, 20+43, 24+32, 28+20, 32+27, 36+28 */\r
-static const uint64_t kCutoffTransforms =\r
-    BROTLI_MAKE_UINT64_T(0x071B520A, 0xDA2D3200);\r
-\r
-typedef struct HasherSearchResult {\r
-  size_t len;\r
-  size_t distance;\r
-  score_t score;\r
-  int len_code_delta; /* == len_code - len */\r
-} HasherSearchResult;\r
-\r
-/* kHashMul32 multiplier has these properties:\r
-   * The multiplier must be odd. Otherwise we may lose the highest bit.\r
-   * No long streaks of ones or zeros.\r
-   * There is no effort to ensure that it is a prime, the oddity is enough\r
-     for this use.\r
-   * The number has been tuned heuristically against compression benchmarks. */\r
-static const uint32_t kHashMul32 = 0x1E35A7BD;\r
-static const uint64_t kHashMul64 = BROTLI_MAKE_UINT64_T(0x1E35A7BD, 0x1E35A7BD);\r
-static const uint64_t kHashMul64Long =\r
-    BROTLI_MAKE_UINT64_T(0x1FE35A7Bu, 0xD3579BD3u);\r
-\r
-static BROTLI_INLINE uint32_t Hash14(const uint8_t* data) {\r
-  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;\r
-  /* The higher bits contain more mixture from the multiplication,\r
-     so we take our results from there. */\r
-  return h >> (32 - 14);\r
-}\r
-\r
-static BROTLI_INLINE void PrepareDistanceCache(\r
-    int* BROTLI_RESTRICT distance_cache, const int num_distances) {\r
-  if (num_distances > 4) {\r
-    int last_distance = distance_cache[0];\r
-    distance_cache[4] = last_distance - 1;\r
-    distance_cache[5] = last_distance + 1;\r
-    distance_cache[6] = last_distance - 2;\r
-    distance_cache[7] = last_distance + 2;\r
-    distance_cache[8] = last_distance - 3;\r
-    distance_cache[9] = last_distance + 3;\r
-    if (num_distances > 10) {\r
-      int next_last_distance = distance_cache[1];\r
-      distance_cache[10] = next_last_distance - 1;\r
-      distance_cache[11] = next_last_distance + 1;\r
-      distance_cache[12] = next_last_distance - 2;\r
-      distance_cache[13] = next_last_distance + 2;\r
-      distance_cache[14] = next_last_distance - 3;\r
-      distance_cache[15] = next_last_distance + 3;\r
-    }\r
-  }\r
-}\r
-\r
-#define BROTLI_LITERAL_BYTE_SCORE 135\r
-#define BROTLI_DISTANCE_BIT_PENALTY 30\r
-/* Score must be positive after applying maximal penalty. */\r
-#define BROTLI_SCORE_BASE (BROTLI_DISTANCE_BIT_PENALTY * 8 * sizeof(size_t))\r
-\r
-/* Usually, we always choose the longest backward reference. This function\r
-   allows for the exception of that rule.\r
-\r
-   If we choose a backward reference that is further away, it will\r
-   usually be coded with more bits. We approximate this by assuming\r
-   log2(distance). If the distance can be expressed in terms of the\r
-   last four distances, we use some heuristic constants to estimate\r
-   the bits cost. For the first up to four literals we use the bit\r
-   cost of the literals from the literal cost model, after that we\r
-   use the average bit cost of the cost model.\r
-\r
-   This function is used to sometimes discard a longer backward reference\r
-   when it is not much longer and the bit cost for encoding it is more\r
-   than the saved literals.\r
-\r
-   backward_reference_offset MUST be positive. */\r
-static BROTLI_INLINE score_t BackwardReferenceScore(\r
-    size_t copy_length, size_t backward_reference_offset) {\r
-  return BROTLI_SCORE_BASE + BROTLI_LITERAL_BYTE_SCORE * (score_t)copy_length -\r
-      BROTLI_DISTANCE_BIT_PENALTY * Log2FloorNonZero(backward_reference_offset);\r
-}\r
-\r
-static BROTLI_INLINE score_t BackwardReferenceScoreUsingLastDistance(\r
-    size_t copy_length) {\r
-  return BROTLI_LITERAL_BYTE_SCORE * (score_t)copy_length +\r
-      BROTLI_SCORE_BASE + 15;\r
-}\r
-\r
-static BROTLI_INLINE score_t BackwardReferencePenaltyUsingLastDistance(\r
-    size_t distance_short_code) {\r
-  return (score_t)39 + ((0x1CA10 >> (distance_short_code & 0xE)) & 0xE);\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL TestStaticDictionaryItem(\r
-    const BrotliEncoderDictionary* dictionary, size_t item, const uint8_t* data,\r
-    size_t max_length, size_t max_backward, size_t max_distance,\r
-    HasherSearchResult* out) {\r
-  size_t len;\r
-  size_t word_idx;\r
-  size_t offset;\r
-  size_t matchlen;\r
-  size_t backward;\r
-  score_t score;\r
-  len = item & 0x1F;\r
-  word_idx = item >> 5;\r
-  offset = dictionary->words->offsets_by_length[len] + len * word_idx;\r
-  if (len > max_length) {\r
-    return BROTLI_FALSE;\r
-  }\r
-\r
-  matchlen =\r
-      FindMatchLengthWithLimit(data, &dictionary->words->data[offset], len);\r
-  if (matchlen + dictionary->cutoffTransformsCount <= len || matchlen == 0) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  {\r
-    size_t cut = len - matchlen;\r
-    size_t transform_id = (cut << 2) +\r
-        (size_t)((dictionary->cutoffTransforms >> (cut * 6)) & 0x3F);\r
-    backward = max_backward + 1 + word_idx +\r
-        (transform_id << dictionary->words->size_bits_by_length[len]);\r
-  }\r
-  if (backward > max_distance) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  score = BackwardReferenceScore(matchlen, backward);\r
-  if (score < out->score) {\r
-    return BROTLI_FALSE;\r
-  }\r
-  out->len = matchlen;\r
-  out->len_code_delta = (int)len - (int)matchlen;\r
-  out->distance = backward;\r
-  out->score = score;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_INLINE void SearchInStaticDictionary(\r
-    const BrotliEncoderDictionary* dictionary,\r
-    HasherHandle handle, const uint8_t* data, size_t max_length,\r
-    size_t max_backward, size_t max_distance,\r
-    HasherSearchResult* out, BROTLI_BOOL shallow) {\r
-  size_t key;\r
-  size_t i;\r
-  HasherCommon* self = GetHasherCommon(handle);\r
-  if (self->dict_num_matches < (self->dict_num_lookups >> 7)) {\r
-    return;\r
-  }\r
-  key = Hash14(data) << 1;\r
-  for (i = 0; i < (shallow ? 1u : 2u); ++i, ++key) {\r
-    size_t item = dictionary->hash_table[key];\r
-    self->dict_num_lookups++;\r
-    if (item != 0) {\r
-      BROTLI_BOOL item_matches = TestStaticDictionaryItem(\r
-          dictionary, item, data, max_length, max_backward, max_distance, out);\r
-      if (item_matches) {\r
-        self->dict_num_matches++;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-typedef struct BackwardMatch {\r
-  uint32_t distance;\r
-  uint32_t length_and_code;\r
-} BackwardMatch;\r
-\r
-static BROTLI_INLINE void InitBackwardMatch(BackwardMatch* self,\r
-    size_t dist, size_t len) {\r
-  self->distance = (uint32_t)dist;\r
-  self->length_and_code = (uint32_t)(len << 5);\r
-}\r
-\r
-static BROTLI_INLINE void InitDictionaryBackwardMatch(BackwardMatch* self,\r
-    size_t dist, size_t len, size_t len_code) {\r
-  self->distance = (uint32_t)dist;\r
-  self->length_and_code =\r
-      (uint32_t)((len << 5) | (len == len_code ? 0 : len_code));\r
-}\r
-\r
-static BROTLI_INLINE size_t BackwardMatchLength(const BackwardMatch* self) {\r
-  return self->length_and_code >> 5;\r
-}\r
-\r
-static BROTLI_INLINE size_t BackwardMatchLengthCode(const BackwardMatch* self) {\r
-  size_t code = self->length_and_code & 31;\r
-  return code ? code : BackwardMatchLength(self);\r
-}\r
-\r
-#define EXPAND_CAT(a, b) CAT(a, b)\r
-#define CAT(a, b) a ## b\r
-#define FN(X) EXPAND_CAT(X, HASHER())\r
-\r
-#define HASHER() H10\r
-#define BUCKET_BITS 17\r
-#define MAX_TREE_SEARCH_DEPTH 64\r
-#define MAX_TREE_COMP_LENGTH 128\r
-#include "./hash_to_binary_tree_inc.h"  /* NOLINT(build/include) */\r
-#undef MAX_TREE_SEARCH_DEPTH\r
-#undef MAX_TREE_COMP_LENGTH\r
-#undef BUCKET_BITS\r
-#undef HASHER\r
-/* MAX_NUM_MATCHES == 64 + MAX_TREE_SEARCH_DEPTH */\r
-#define MAX_NUM_MATCHES_H10 128\r
-\r
-/* For BUCKET_SWEEP == 1, enabling the dictionary lookup makes compression\r
-   a little faster (0.5% - 1%) and it compresses 0.15% better on small text\r
-   and HTML inputs. */\r
-\r
-#define HASHER() H2\r
-#define BUCKET_BITS 16\r
-#define BUCKET_SWEEP 1\r
-#define HASH_LEN 5\r
-#define USE_DICTIONARY 1\r
-#include "./hash_longest_match_quickly_inc.h"  /* NOLINT(build/include) */\r
-#undef BUCKET_SWEEP\r
-#undef USE_DICTIONARY\r
-#undef HASHER\r
-\r
-#define HASHER() H3\r
-#define BUCKET_SWEEP 2\r
-#define USE_DICTIONARY 0\r
-#include "./hash_longest_match_quickly_inc.h"  /* NOLINT(build/include) */\r
-#undef USE_DICTIONARY\r
-#undef BUCKET_SWEEP\r
-#undef BUCKET_BITS\r
-#undef HASHER\r
-\r
-#define HASHER() H4\r
-#define BUCKET_BITS 17\r
-#define BUCKET_SWEEP 4\r
-#define USE_DICTIONARY 1\r
-#include "./hash_longest_match_quickly_inc.h"  /* NOLINT(build/include) */\r
-#undef USE_DICTIONARY\r
-#undef HASH_LEN\r
-#undef BUCKET_SWEEP\r
-#undef BUCKET_BITS\r
-#undef HASHER\r
-\r
-#define HASHER() H5\r
-#include "./hash_longest_match_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER\r
-\r
-#define HASHER() H6\r
-#include "./hash_longest_match64_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER\r
-\r
-#define BUCKET_BITS 15\r
-\r
-#define NUM_LAST_DISTANCES_TO_CHECK 4\r
-#define NUM_BANKS 1\r
-#define BANK_BITS 16\r
-#define HASHER() H40\r
-#include "./hash_forgetful_chain_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER\r
-#undef NUM_LAST_DISTANCES_TO_CHECK\r
-\r
-#define NUM_LAST_DISTANCES_TO_CHECK 10\r
-#define HASHER() H41\r
-#include "./hash_forgetful_chain_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER\r
-#undef NUM_LAST_DISTANCES_TO_CHECK\r
-#undef NUM_BANKS\r
-#undef BANK_BITS\r
-\r
-#define NUM_LAST_DISTANCES_TO_CHECK 16\r
-#define NUM_BANKS 512\r
-#define BANK_BITS 9\r
-#define HASHER() H42\r
-#include "./hash_forgetful_chain_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER\r
-#undef NUM_LAST_DISTANCES_TO_CHECK\r
-#undef NUM_BANKS\r
-#undef BANK_BITS\r
-\r
-#undef BUCKET_BITS\r
-\r
-#define HASHER() H54\r
-#define BUCKET_BITS 20\r
-#define BUCKET_SWEEP 4\r
-#define HASH_LEN 7\r
-#define USE_DICTIONARY 0\r
-#include "./hash_longest_match_quickly_inc.h"  /* NOLINT(build/include) */\r
-#undef USE_DICTIONARY\r
-#undef HASH_LEN\r
-#undef BUCKET_SWEEP\r
-#undef BUCKET_BITS\r
-#undef HASHER\r
-\r
-/* fast large window hashers */\r
-\r
-#define HASHER() HROLLING_FAST\r
-#define CHUNKLEN 32\r
-#define JUMP 4\r
-#define NUMBUCKETS 16777216\r
-#define MASK ((NUMBUCKETS * 64) - 1)\r
-#include "./hash_rolling_inc.h"  /* NOLINT(build/include) */\r
-#undef JUMP\r
-#undef HASHER\r
-\r
-\r
-#define HASHER() HROLLING\r
-#define JUMP 1\r
-#include "./hash_rolling_inc.h"  /* NOLINT(build/include) */\r
-#undef MASK\r
-#undef NUMBUCKETS\r
-#undef JUMP\r
-#undef CHUNKLEN\r
-#undef HASHER\r
-\r
-#define HASHER() H35\r
-#define HASHER_A H3\r
-#define HASHER_B HROLLING_FAST\r
-#include "./hash_composite_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER_A\r
-#undef HASHER_B\r
-#undef HASHER\r
-\r
-#define HASHER() H55\r
-#define HASHER_A H54\r
-#define HASHER_B HROLLING_FAST\r
-#include "./hash_composite_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER_A\r
-#undef HASHER_B\r
-#undef HASHER\r
-\r
-#define HASHER() H65\r
-#define HASHER_A H6\r
-#define HASHER_B HROLLING\r
-#include "./hash_composite_inc.h"  /* NOLINT(build/include) */\r
-#undef HASHER_A\r
-#undef HASHER_B\r
-#undef HASHER\r
-\r
-#undef FN\r
-#undef CAT\r
-#undef EXPAND_CAT\r
-\r
-#define FOR_GENERIC_HASHERS(H) H(2) H(3) H(4) H(5) H(6) H(40) H(41) H(42) H(54)\\r
-                               H(35) H(55) H(65)\r
-#define FOR_ALL_HASHERS(H) FOR_GENERIC_HASHERS(H) H(10)\r
-\r
-static BROTLI_INLINE void DestroyHasher(\r
-    MemoryManager* m, HasherHandle* handle) {\r
-  if (*handle == NULL) return;\r
-  BROTLI_FREE(m, *handle);\r
-}\r
-\r
-static BROTLI_INLINE void HasherReset(HasherHandle handle) {\r
-  if (handle == NULL) return;\r
-  GetHasherCommon(handle)->is_prepared_ = BROTLI_FALSE;\r
-}\r
-\r
-static BROTLI_INLINE size_t HasherSize(const BrotliEncoderParams* params,\r
-    BROTLI_BOOL one_shot, const size_t input_size) {\r
-  size_t result = sizeof(HasherCommon);\r
-  switch (params->hasher.type) {\r
-#define SIZE_(N)                                                         \\r
-    case N:                                                              \\r
-      result += HashMemAllocInBytesH ## N(params, one_shot, input_size); \\r
-      break;\r
-    FOR_ALL_HASHERS(SIZE_)\r
-#undef SIZE_\r
-    default:\r
-      break;\r
-  }\r
-  return result;\r
-}\r
-\r
-static BROTLI_INLINE void HasherSetup(MemoryManager* m, HasherHandle* handle,\r
-    BrotliEncoderParams* params, const uint8_t* data, size_t position,\r
-    size_t input_size, BROTLI_BOOL is_last) {\r
-  HasherHandle self = NULL;\r
-  HasherCommon* common = NULL;\r
-  BROTLI_BOOL one_shot = (position == 0 && is_last);\r
-  if (*handle == NULL) {\r
-    size_t alloc_size;\r
-    ChooseHasher(params, &params->hasher);\r
-    alloc_size = HasherSize(params, one_shot, input_size);\r
-    self = BROTLI_ALLOC(m, uint8_t, alloc_size);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    *handle = self;\r
-    common = GetHasherCommon(self);\r
-    common->params = params->hasher;\r
-    switch (common->params.type) {\r
-#define INITIALIZE_(N)                     \\r
-      case N:                              \\r
-        InitializeH ## N(*handle, params); \\r
-        break;\r
-      FOR_ALL_HASHERS(INITIALIZE_);\r
-#undef INITIALIZE_\r
-      default:\r
-        break;\r
-    }\r
-    HasherReset(*handle);\r
-  }\r
-\r
-  self = *handle;\r
-  common = GetHasherCommon(self);\r
-  if (!common->is_prepared_) {\r
-    switch (common->params.type) {\r
-#define PREPARE_(N)                                      \\r
-      case N:                                            \\r
-        PrepareH ## N(self, one_shot, input_size, data); \\r
-        break;\r
-      FOR_ALL_HASHERS(PREPARE_)\r
-#undef PREPARE_\r
-      default: break;\r
-    }\r
-    if (position == 0) {\r
-        common->dict_num_lookups = 0;\r
-        common->dict_num_matches = 0;\r
-    }\r
-    common->is_prepared_ = BROTLI_TRUE;\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void InitOrStitchToPreviousBlock(\r
-    MemoryManager* m, HasherHandle* handle, const uint8_t* data, size_t mask,\r
-    BrotliEncoderParams* params, size_t position, size_t input_size,\r
-    BROTLI_BOOL is_last) {\r
-  HasherHandle self;\r
-  HasherSetup(m, handle, params, data, position, input_size, is_last);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  self = *handle;\r
-  switch (GetHasherCommon(self)->params.type) {\r
-#define INIT_(N)                                                           \\r
-    case N:                                                                \\r
-      StitchToPreviousBlockH ## N(self, input_size, position, data, mask); \\r
-    break;\r
-    FOR_ALL_HASHERS(INIT_)\r
-#undef INIT_\r
-    default: break;\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_HASH_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash_composite_inc.h b/BaseTools/Source/C/BrotliCompress/enc/hash_composite_inc.h
deleted file mode 100644 (file)
index ec3e39c..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2018 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN, HASHER_A, HASHER_B */\r
-\r
-/* Composite hasher: This hasher allows to combine two other hashers, HASHER_A\r
-   and HASHER_B. */\r
-\r
-#define HashComposite HASHER()\r
-\r
-#define FN_A(X) EXPAND_CAT(X, HASHER_A)\r
-#define FN_B(X) EXPAND_CAT(X, HASHER_B)\r
-\r
-static BROTLI_INLINE size_t FN(HashTypeLength)(void) {\r
-  size_t a =  FN_A(HashTypeLength)();\r
-  size_t b =  FN_B(HashTypeLength)();\r
-  return a > b ? a : b;\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(StoreLookahead)(void) {\r
-  size_t a =  FN_A(StoreLookahead)();\r
-  size_t b =  FN_B(StoreLookahead)();\r
-  return a > b ? a : b;\r
-}\r
-\r
-typedef struct HashComposite {\r
-  HasherHandle ha;\r
-  HasherHandle hb;\r
-  const BrotliEncoderParams* params;\r
-} HashComposite;\r
-\r
-static BROTLI_INLINE HashComposite* FN(Self)(HasherHandle handle) {\r
-  return (HashComposite*)&(GetHasherCommon(handle)[1]);\r
-}\r
-\r
-static void FN(Initialize)(\r
-    HasherHandle handle, const BrotliEncoderParams* params) {\r
-  HashComposite* self = FN(Self)(handle);\r
-  self->ha = 0;\r
-  self->hb = 0;\r
-  self->params = params;\r
-  /* TODO: Initialize of the hashers is defered to Prepare (and params\r
-     remembered here) because we don't get the one_shot and input_size params\r
-     here that are needed to know the memory size of them. Instead provide\r
-     those params to all hashers FN(Initialize) */\r
-}\r
-\r
-static void FN(Prepare)(HasherHandle handle, BROTLI_BOOL one_shot,\r
-    size_t input_size, const uint8_t* data) {\r
-  HashComposite* self = FN(Self)(handle);\r
-  if (!self->ha) {\r
-    HasherCommon* common_a;\r
-    HasherCommon* common_b;\r
-\r
-    self->ha = handle + sizeof(HasherCommon) + sizeof(HashComposite);\r
-    common_a = (HasherCommon*)self->ha;\r
-    common_a->params = self->params->hasher;\r
-    common_a->is_prepared_ = BROTLI_FALSE;\r
-    common_a->dict_num_lookups = 0;\r
-    common_a->dict_num_matches = 0;\r
-    FN_A(Initialize)(self->ha, self->params);\r
-\r
-    self->hb = self->ha + sizeof(HasherCommon) + FN_A(HashMemAllocInBytes)(\r
-        self->params, one_shot, input_size);\r
-    common_b = (HasherCommon*)self->hb;\r
-    common_b->params = self->params->hasher;\r
-    common_b->is_prepared_ = BROTLI_FALSE;\r
-    common_b->dict_num_lookups = 0;\r
-    common_b->dict_num_matches = 0;\r
-    FN_B(Initialize)(self->hb, self->params);\r
-  }\r
-  FN_A(Prepare)(self->ha, one_shot, input_size, data);\r
-  FN_B(Prepare)(self->hb, one_shot, input_size, data);\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HashMemAllocInBytes)(\r
-    const BrotliEncoderParams* params, BROTLI_BOOL one_shot,\r
-    size_t input_size) {\r
-  return sizeof(HashComposite) + 2 * sizeof(HasherCommon) +\r
-      FN_A(HashMemAllocInBytes)(params, one_shot, input_size) +\r
-      FN_B(HashMemAllocInBytes)(params, one_shot, input_size);\r
-}\r
-\r
-static BROTLI_INLINE void FN(Store)(HasherHandle BROTLI_RESTRICT handle,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t mask, const size_t ix) {\r
-  HashComposite* self = FN(Self)(handle);\r
-  FN_A(Store)(self->ha, data, mask, ix);\r
-  FN_B(Store)(self->hb, data, mask, ix);\r
-}\r
-\r
-static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix_start,\r
-    const size_t ix_end) {\r
-  HashComposite* self = FN(Self)(handle);\r
-  FN_A(StoreRange)(self->ha, data, mask, ix_start, ix_end);\r
-  FN_B(StoreRange)(self->hb, data, mask, ix_start, ix_end);\r
-}\r
-\r
-static BROTLI_INLINE void FN(StitchToPreviousBlock)(HasherHandle handle,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ring_buffer_mask) {\r
-  HashComposite* self = FN(Self)(handle);\r
-  FN_A(StitchToPreviousBlock)(self->ha, num_bytes, position, ringbuffer,\r
-      ring_buffer_mask);\r
-  FN_B(StitchToPreviousBlock)(self->hb, num_bytes, position, ringbuffer,\r
-      ring_buffer_mask);\r
-}\r
-\r
-static BROTLI_INLINE void FN(PrepareDistanceCache)(\r
-    HasherHandle handle, int* BROTLI_RESTRICT distance_cache) {\r
-  HashComposite* self = FN(Self)(handle);\r
-  FN_A(PrepareDistanceCache)(self->ha, distance_cache);\r
-  FN_B(PrepareDistanceCache)(self->hb, distance_cache);\r
-}\r
-\r
-static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,\r
-    const BrotliEncoderDictionary* dictionary,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,\r
-    const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix,\r
-    const size_t max_length, const size_t max_backward, const size_t gap,\r
-    const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) {\r
-  HashComposite* self = FN(Self)(handle);\r
-  FN_A(FindLongestMatch)(self->ha, dictionary, data, ring_buffer_mask,\r
-      distance_cache, cur_ix, max_length, max_backward, gap, max_distance, out);\r
-  FN_B(FindLongestMatch)(self->hb, dictionary, data, ring_buffer_mask,\r
-      distance_cache, cur_ix, max_length, max_backward, gap, max_distance, out);\r
-}\r
-\r
-#undef HashComposite\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash_forgetful_chain_inc.h b/BaseTools/Source/C/BrotliCompress/enc/hash_forgetful_chain_inc.h
deleted file mode 100644 (file)
index 9caf429..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN, BUCKET_BITS, NUM_BANKS, BANK_BITS,\r
-                        NUM_LAST_DISTANCES_TO_CHECK */\r
-\r
-/* A (forgetful) hash table to the data seen by the compressor, to\r
-   help create backward references to previous data.\r
-\r
-   Hashes are stored in chains which are bucketed to groups. Group of chains\r
-   share a storage "bank". When more than "bank size" chain nodes are added,\r
-   oldest nodes are replaced; this way several chains may share a tail. */\r
-\r
-#define HashForgetfulChain HASHER()\r
-\r
-#define BANK_SIZE (1 << BANK_BITS)\r
-\r
-/* Number of hash buckets. */\r
-#define BUCKET_SIZE (1 << BUCKET_BITS)\r
-\r
-#define CAPPED_CHAINS 0\r
-\r
-static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }\r
-static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }\r
-\r
-/* HashBytes is the function that chooses the bucket to place the address in.*/\r
-static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t* data) {\r
-  const uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;\r
-  /* The higher bits contain more mixture from the multiplication,\r
-     so we take our results from there. */\r
-  return h >> (32 - BUCKET_BITS);\r
-}\r
-\r
-typedef struct FN(Slot) {\r
-  uint16_t delta;\r
-  uint16_t next;\r
-} FN(Slot);\r
-\r
-typedef struct FN(Bank) {\r
-  FN(Slot) slots[BANK_SIZE];\r
-} FN(Bank);\r
-\r
-typedef struct HashForgetfulChain {\r
-  uint32_t addr[BUCKET_SIZE];\r
-  uint16_t head[BUCKET_SIZE];\r
-  /* Truncated hash used for quick rejection of "distance cache" candidates. */\r
-  uint8_t tiny_hash[65536];\r
-  FN(Bank) banks[NUM_BANKS];\r
-  uint16_t free_slot_idx[NUM_BANKS];\r
-  size_t max_hops;\r
-} HashForgetfulChain;\r
-\r
-static BROTLI_INLINE HashForgetfulChain* FN(Self)(HasherHandle handle) {\r
-  return (HashForgetfulChain*)&(GetHasherCommon(handle)[1]);\r
-}\r
-\r
-static void FN(Initialize)(\r
-    HasherHandle handle, const BrotliEncoderParams* params) {\r
-  FN(Self)(handle)->max_hops =\r
-      (params->quality > 6 ? 7u : 8u) << (params->quality - 4);\r
-}\r
-\r
-static void FN(Prepare)(HasherHandle handle, BROTLI_BOOL one_shot,\r
-    size_t input_size, const uint8_t* data) {\r
-  HashForgetfulChain* self = FN(Self)(handle);\r
-  /* Partial preparation is 100 times slower (per socket). */\r
-  size_t partial_prepare_threshold = BUCKET_SIZE >> 6;\r
-  if (one_shot && input_size <= partial_prepare_threshold) {\r
-    size_t i;\r
-    for (i = 0; i < input_size; ++i) {\r
-      size_t bucket = FN(HashBytes)(&data[i]);\r
-      /* See InitEmpty comment. */\r
-      self->addr[bucket] = 0xCCCCCCCC;\r
-      self->head[bucket] = 0xCCCC;\r
-    }\r
-  } else {\r
-    /* Fill |addr| array with 0xCCCCCCCC value. Because of wrapping, position\r
-       processed by hasher never reaches 3GB + 64M; this makes all new chains\r
-       to be terminated after the first node. */\r
-    memset(self->addr, 0xCC, sizeof(self->addr));\r
-    memset(self->head, 0, sizeof(self->head));\r
-  }\r
-  memset(self->tiny_hash, 0, sizeof(self->tiny_hash));\r
-  memset(self->free_slot_idx, 0, sizeof(self->free_slot_idx));\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HashMemAllocInBytes)(\r
-    const BrotliEncoderParams* params, BROTLI_BOOL one_shot,\r
-    size_t input_size) {\r
-  BROTLI_UNUSED(params);\r
-  BROTLI_UNUSED(one_shot);\r
-  BROTLI_UNUSED(input_size);\r
-  return sizeof(HashForgetfulChain);\r
-}\r
-\r
-/* Look at 4 bytes at &data[ix & mask]. Compute a hash from these, and prepend\r
-   node to corresponding chain; also update tiny_hash for current position. */\r
-static BROTLI_INLINE void FN(Store)(HasherHandle BROTLI_RESTRICT handle,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t mask, const size_t ix) {\r
-  HashForgetfulChain* self = FN(Self)(handle);\r
-  const size_t key = FN(HashBytes)(&data[ix & mask]);\r
-  const size_t bank = key & (NUM_BANKS - 1);\r
-  const size_t idx = self->free_slot_idx[bank]++ & (BANK_SIZE - 1);\r
-  size_t delta = ix - self->addr[key];\r
-  self->tiny_hash[(uint16_t)ix] = (uint8_t)key;\r
-  if (delta > 0xFFFF) delta = CAPPED_CHAINS ? 0 : 0xFFFF;\r
-  self->banks[bank].slots[idx].delta = (uint16_t)delta;\r
-  self->banks[bank].slots[idx].next = self->head[key];\r
-  self->addr[key] = (uint32_t)ix;\r
-  self->head[key] = (uint16_t)idx;\r
-}\r
-\r
-static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix_start,\r
-    const size_t ix_end) {\r
-  size_t i;\r
-  for (i = ix_start; i < ix_end; ++i) {\r
-    FN(Store)(handle, data, mask, i);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(StitchToPreviousBlock)(HasherHandle handle,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ring_buffer_mask) {\r
-  if (num_bytes >= FN(HashTypeLength)() - 1 && position >= 3) {\r
-    /* Prepare the hashes for three last bytes of the last write.\r
-       These could not be calculated before, since they require knowledge\r
-       of both the previous and the current block. */\r
-    FN(Store)(handle, ringbuffer, ring_buffer_mask, position - 3);\r
-    FN(Store)(handle, ringbuffer, ring_buffer_mask, position - 2);\r
-    FN(Store)(handle, ringbuffer, ring_buffer_mask, position - 1);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(PrepareDistanceCache)(\r
-    HasherHandle handle, int* BROTLI_RESTRICT distance_cache) {\r
-  BROTLI_UNUSED(handle);\r
-  PrepareDistanceCache(distance_cache, NUM_LAST_DISTANCES_TO_CHECK);\r
-}\r
-\r
-/* Find a longest backward match of &data[cur_ix] up to the length of\r
-   max_length and stores the position cur_ix in the hash table.\r
-\r
-   REQUIRES: FN(PrepareDistanceCache) must be invoked for current distance cache\r
-             values; if this method is invoked repeatedly with the same distance\r
-             cache values, it is enough to invoke FN(PrepareDistanceCache) once.\r
-\r
-   Does not look for matches longer than max_length.\r
-   Does not look for matches further away than max_backward.\r
-   Writes the best match into |out|.\r
-   |out|->score is updated only if a better match is found. */\r
-static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,\r
-    const BrotliEncoderDictionary* dictionary,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,\r
-    const int* BROTLI_RESTRICT distance_cache,\r
-    const size_t cur_ix, const size_t max_length, const size_t max_backward,\r
-    const size_t gap, const size_t max_distance,\r
-    HasherSearchResult* BROTLI_RESTRICT out) {\r
-  HashForgetfulChain* self = FN(Self)(handle);\r
-  const size_t cur_ix_masked = cur_ix & ring_buffer_mask;\r
-  /* Don't accept a short copy from far away. */\r
-  score_t min_score = out->score;\r
-  score_t best_score = out->score;\r
-  size_t best_len = out->len;\r
-  size_t i;\r
-  const size_t key = FN(HashBytes)(&data[cur_ix_masked]);\r
-  const uint8_t tiny_hash = (uint8_t)(key);\r
-  out->len = 0;\r
-  out->len_code_delta = 0;\r
-  /* Try last distance first. */\r
-  for (i = 0; i < NUM_LAST_DISTANCES_TO_CHECK; ++i) {\r
-    const size_t backward = (size_t)distance_cache[i];\r
-    size_t prev_ix = (cur_ix - backward);\r
-    /* For distance code 0 we want to consider 2-byte matches. */\r
-    if (i > 0 && self->tiny_hash[(uint16_t)prev_ix] != tiny_hash) continue;\r
-    if (prev_ix >= cur_ix || backward > max_backward) {\r
-      continue;\r
-    }\r
-    prev_ix &= ring_buffer_mask;\r
-    {\r
-      const size_t len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                                  &data[cur_ix_masked],\r
-                                                  max_length);\r
-      if (len >= 2) {\r
-        score_t score = BackwardReferenceScoreUsingLastDistance(len);\r
-        if (best_score < score) {\r
-          if (i != 0) score -= BackwardReferencePenaltyUsingLastDistance(i);\r
-          if (best_score < score) {\r
-            best_score = score;\r
-            best_len = len;\r
-            out->len = best_len;\r
-            out->distance = backward;\r
-            out->score = best_score;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  {\r
-    const size_t bank = key & (NUM_BANKS - 1);\r
-    size_t backward = 0;\r
-    size_t hops = self->max_hops;\r
-    size_t delta = cur_ix - self->addr[key];\r
-    size_t slot = self->head[key];\r
-    while (hops--) {\r
-      size_t prev_ix;\r
-      size_t last = slot;\r
-      backward += delta;\r
-      if (backward > max_backward || (CAPPED_CHAINS && !delta)) break;\r
-      prev_ix = (cur_ix - backward) & ring_buffer_mask;\r
-      slot = self->banks[bank].slots[last].next;\r
-      delta = self->banks[bank].slots[last].delta;\r
-      if (cur_ix_masked + best_len > ring_buffer_mask ||\r
-          prev_ix + best_len > ring_buffer_mask ||\r
-          data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {\r
-        continue;\r
-      }\r
-      {\r
-        const size_t len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                                    &data[cur_ix_masked],\r
-                                                    max_length);\r
-        if (len >= 4) {\r
-          /* Comparing for >= 3 does not change the semantics, but just saves\r
-             for a few unnecessary binary logarithms in backward reference\r
-             score, since we are not interested in such short matches. */\r
-          score_t score = BackwardReferenceScore(len, backward);\r
-          if (best_score < score) {\r
-            best_score = score;\r
-            best_len = len;\r
-            out->len = best_len;\r
-            out->distance = backward;\r
-            out->score = best_score;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    FN(Store)(handle, data, ring_buffer_mask, cur_ix);\r
-  }\r
-  if (out->score == min_score) {\r
-    SearchInStaticDictionary(dictionary,\r
-        handle, &data[cur_ix_masked], max_length, max_backward + gap,\r
-        max_distance, out, BROTLI_FALSE);\r
-  }\r
-}\r
-\r
-#undef BANK_SIZE\r
-#undef BUCKET_SIZE\r
-#undef CAPPED_CHAINS\r
-\r
-#undef HashForgetfulChain\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash_longest_match64_inc.h b/BaseTools/Source/C/BrotliCompress/enc/hash_longest_match64_inc.h
deleted file mode 100644 (file)
index 3a01f0d..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN */\r
-\r
-/* A (forgetful) hash table to the data seen by the compressor, to\r
-   help create backward references to previous data.\r
-\r
-   This is a hash map of fixed size (bucket_size_) to a ring buffer of\r
-   fixed size (block_size_). The ring buffer contains the last block_size_\r
-   index positions of the given hash key in the compressed data. */\r
-\r
-#define HashLongestMatch HASHER()\r
-\r
-static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 8; }\r
-static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 8; }\r
-\r
-/* HashBytes is the function that chooses the bucket to place the address in. */\r
-static BROTLI_INLINE uint32_t FN(HashBytes)(const uint8_t* data,\r
-                                            const uint64_t mask,\r
-                                            const int shift) {\r
-  const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(data) & mask) * kHashMul64Long;\r
-  /* The higher bits contain more mixture from the multiplication,\r
-     so we take our results from there. */\r
-  return (uint32_t)(h >> shift);\r
-}\r
-\r
-typedef struct HashLongestMatch {\r
-  /* Number of hash buckets. */\r
-  size_t bucket_size_;\r
-  /* Only block_size_ newest backward references are kept,\r
-     and the older are forgotten. */\r
-  size_t block_size_;\r
-  /* Left-shift for computing hash bucket index from hash value. */\r
-  int hash_shift_;\r
-  /* Mask for selecting the next 4-8 bytes of input */\r
-  uint64_t hash_mask_;\r
-  /* Mask for accessing entries in a block (in a ring-buffer manner). */\r
-  uint32_t block_mask_;\r
-\r
-  /* --- Dynamic size members --- */\r
-\r
-  /* Number of entries in a particular bucket. */\r
-  /* uint16_t num[bucket_size]; */\r
-\r
-  /* Buckets containing block_size_ of backward references. */\r
-  /* uint32_t* buckets[bucket_size * block_size]; */\r
-} HashLongestMatch;\r
-\r
-static BROTLI_INLINE HashLongestMatch* FN(Self)(HasherHandle handle) {\r
-  return (HashLongestMatch*)&(GetHasherCommon(handle)[1]);\r
-}\r
-\r
-static BROTLI_INLINE uint16_t* FN(Num)(HashLongestMatch* self) {\r
-  return (uint16_t*)(&self[1]);\r
-}\r
-\r
-static BROTLI_INLINE uint32_t* FN(Buckets)(HashLongestMatch* self) {\r
-  return (uint32_t*)(&FN(Num)(self)[self->bucket_size_]);\r
-}\r
-\r
-static void FN(Initialize)(\r
-    HasherHandle handle, const BrotliEncoderParams* params) {\r
-  HasherCommon* common = GetHasherCommon(handle);\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  BROTLI_UNUSED(params);\r
-  self->hash_shift_ = 64 - common->params.bucket_bits;\r
-  self->hash_mask_ = (~((uint64_t)0U)) >> (64 - 8 * common->params.hash_len);\r
-  self->bucket_size_ = (size_t)1 << common->params.bucket_bits;\r
-  self->block_size_ = (size_t)1 << common->params.block_bits;\r
-  self->block_mask_ = (uint32_t)(self->block_size_ - 1);\r
-}\r
-\r
-static void FN(Prepare)(HasherHandle handle, BROTLI_BOOL one_shot,\r
-    size_t input_size, const uint8_t* data) {\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  uint16_t* num = FN(Num)(self);\r
-  /* Partial preparation is 100 times slower (per socket). */\r
-  size_t partial_prepare_threshold = self->bucket_size_ >> 6;\r
-  if (one_shot && input_size <= partial_prepare_threshold) {\r
-    size_t i;\r
-    for (i = 0; i < input_size; ++i) {\r
-      const uint32_t key = FN(HashBytes)(&data[i], self->hash_mask_,\r
-                                         self->hash_shift_);\r
-      num[key] = 0;\r
-    }\r
-  } else {\r
-    memset(num, 0, self->bucket_size_ * sizeof(num[0]));\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HashMemAllocInBytes)(\r
-    const BrotliEncoderParams* params, BROTLI_BOOL one_shot,\r
-    size_t input_size) {\r
-  size_t bucket_size = (size_t)1 << params->hasher.bucket_bits;\r
-  size_t block_size = (size_t)1 << params->hasher.block_bits;\r
-  BROTLI_UNUSED(one_shot);\r
-  BROTLI_UNUSED(input_size);\r
-  return sizeof(HashLongestMatch) + bucket_size * (2 + 4 * block_size);\r
-}\r
-\r
-/* Look at 4 bytes at &data[ix & mask].\r
-   Compute a hash from these, and store the value of ix at that position. */\r
-static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data,\r
-    const size_t mask, const size_t ix) {\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  uint16_t* num = FN(Num)(self);\r
-  const uint32_t key = FN(HashBytes)(&data[ix & mask], self->hash_mask_,\r
-                                     self->hash_shift_);\r
-  const size_t minor_ix = num[key] & self->block_mask_;\r
-  const size_t offset =\r
-      minor_ix + (key << GetHasherCommon(handle)->params.block_bits);\r
-  FN(Buckets)(self)[offset] = (uint32_t)ix;\r
-  ++num[key];\r
-}\r
-\r
-static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix_start,\r
-    const size_t ix_end) {\r
-  size_t i;\r
-  for (i = ix_start; i < ix_end; ++i) {\r
-    FN(Store)(handle, data, mask, i);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(StitchToPreviousBlock)(HasherHandle handle,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask) {\r
-  if (num_bytes >= FN(HashTypeLength)() - 1 && position >= 3) {\r
-    /* Prepare the hashes for three last bytes of the last write.\r
-       These could not be calculated before, since they require knowledge\r
-       of both the previous and the current block. */\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 3);\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 2);\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 1);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(PrepareDistanceCache)(\r
-    HasherHandle handle, int* BROTLI_RESTRICT distance_cache) {\r
-  PrepareDistanceCache(distance_cache,\r
-      GetHasherCommon(handle)->params.num_last_distances_to_check);\r
-}\r
-\r
-/* Find a longest backward match of &data[cur_ix] up to the length of\r
-   max_length and stores the position cur_ix in the hash table.\r
-\r
-   REQUIRES: FN(PrepareDistanceCache) must be invoked for current distance cache\r
-             values; if this method is invoked repeatedly with the same distance\r
-             cache values, it is enough to invoke FN(PrepareDistanceCache) once.\r
-\r
-   Does not look for matches longer than max_length.\r
-   Does not look for matches further away than max_backward.\r
-   Writes the best match into |out|.\r
-   |out|->score is updated only if a better match is found. */\r
-static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,\r
-    const BrotliEncoderDictionary* dictionary,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,\r
-    const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix,\r
-    const size_t max_length, const size_t max_backward, const size_t gap,\r
-    const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) {\r
-  HasherCommon* common = GetHasherCommon(handle);\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  uint16_t* num = FN(Num)(self);\r
-  uint32_t* buckets = FN(Buckets)(self);\r
-  const size_t cur_ix_masked = cur_ix & ring_buffer_mask;\r
-  /* Don't accept a short copy from far away. */\r
-  score_t min_score = out->score;\r
-  score_t best_score = out->score;\r
-  size_t best_len = out->len;\r
-  size_t i;\r
-  out->len = 0;\r
-  out->len_code_delta = 0;\r
-  /* Try last distance first. */\r
-  for (i = 0; i < (size_t)common->params.num_last_distances_to_check; ++i) {\r
-    const size_t backward = (size_t)distance_cache[i];\r
-    size_t prev_ix = (size_t)(cur_ix - backward);\r
-    if (prev_ix >= cur_ix) {\r
-      continue;\r
-    }\r
-    if (BROTLI_PREDICT_FALSE(backward > max_backward)) {\r
-      continue;\r
-    }\r
-    prev_ix &= ring_buffer_mask;\r
-\r
-    if (cur_ix_masked + best_len > ring_buffer_mask ||\r
-        prev_ix + best_len > ring_buffer_mask ||\r
-        data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {\r
-      continue;\r
-    }\r
-    {\r
-      const size_t len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                                  &data[cur_ix_masked],\r
-                                                  max_length);\r
-      if (len >= 3 || (len == 2 && i < 2)) {\r
-        /* Comparing for >= 2 does not change the semantics, but just saves for\r
-           a few unnecessary binary logarithms in backward reference score,\r
-           since we are not interested in such short matches. */\r
-        score_t score = BackwardReferenceScoreUsingLastDistance(len);\r
-        if (best_score < score) {\r
-          if (i != 0) score -= BackwardReferencePenaltyUsingLastDistance(i);\r
-          if (best_score < score) {\r
-            best_score = score;\r
-            best_len = len;\r
-            out->len = best_len;\r
-            out->distance = backward;\r
-            out->score = best_score;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  {\r
-    const uint32_t key = FN(HashBytes)(\r
-        &data[cur_ix_masked], self->hash_mask_, self->hash_shift_);\r
-    uint32_t* BROTLI_RESTRICT bucket =\r
-        &buckets[key << common->params.block_bits];\r
-    const size_t down =\r
-        (num[key] > self->block_size_) ?\r
-        (num[key] - self->block_size_) : 0u;\r
-    for (i = num[key]; i > down;) {\r
-      size_t prev_ix = bucket[--i & self->block_mask_];\r
-      const size_t backward = cur_ix - prev_ix;\r
-      if (BROTLI_PREDICT_FALSE(backward > max_backward)) {\r
-        break;\r
-      }\r
-      prev_ix &= ring_buffer_mask;\r
-      if (cur_ix_masked + best_len > ring_buffer_mask ||\r
-          prev_ix + best_len > ring_buffer_mask ||\r
-          data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {\r
-        continue;\r
-      }\r
-      {\r
-        const size_t len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                                    &data[cur_ix_masked],\r
-                                                    max_length);\r
-        if (len >= 4) {\r
-          /* Comparing for >= 3 does not change the semantics, but just saves\r
-             for a few unnecessary binary logarithms in backward reference\r
-             score, since we are not interested in such short matches. */\r
-          score_t score = BackwardReferenceScore(len, backward);\r
-          if (best_score < score) {\r
-            best_score = score;\r
-            best_len = len;\r
-            out->len = best_len;\r
-            out->distance = backward;\r
-            out->score = best_score;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    bucket[num[key] & self->block_mask_] = (uint32_t)cur_ix;\r
-    ++num[key];\r
-  }\r
-  if (min_score == out->score) {\r
-    SearchInStaticDictionary(dictionary,\r
-        handle, &data[cur_ix_masked], max_length, max_backward + gap,\r
-        max_distance, out, BROTLI_FALSE);\r
-  }\r
-}\r
-\r
-#undef HashLongestMatch\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_inc.h b/BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_inc.h
deleted file mode 100644 (file)
index 108a7fa..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN */\r
-\r
-/* A (forgetful) hash table to the data seen by the compressor, to\r
-   help create backward references to previous data.\r
-\r
-   This is a hash map of fixed size (bucket_size_) to a ring buffer of\r
-   fixed size (block_size_). The ring buffer contains the last block_size_\r
-   index positions of the given hash key in the compressed data. */\r
-\r
-#define HashLongestMatch HASHER()\r
-\r
-static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }\r
-static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }\r
-\r
-/* HashBytes is the function that chooses the bucket to place the address in. */\r
-static uint32_t FN(HashBytes)(const uint8_t* data, const int shift) {\r
-  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;\r
-  /* The higher bits contain more mixture from the multiplication,\r
-     so we take our results from there. */\r
-  return (uint32_t)(h >> shift);\r
-}\r
-\r
-typedef struct HashLongestMatch {\r
-  /* Number of hash buckets. */\r
-  size_t bucket_size_;\r
-  /* Only block_size_ newest backward references are kept,\r
-     and the older are forgotten. */\r
-  size_t block_size_;\r
-  /* Left-shift for computing hash bucket index from hash value. */\r
-  int hash_shift_;\r
-  /* Mask for accessing entries in a block (in a ring-buffer manner). */\r
-  uint32_t block_mask_;\r
-\r
-  /* --- Dynamic size members --- */\r
-\r
-  /* Number of entries in a particular bucket. */\r
-  /* uint16_t num[bucket_size]; */\r
-\r
-  /* Buckets containing block_size_ of backward references. */\r
-  /* uint32_t* buckets[bucket_size * block_size]; */\r
-} HashLongestMatch;\r
-\r
-static BROTLI_INLINE HashLongestMatch* FN(Self)(HasherHandle handle) {\r
-  return (HashLongestMatch*)&(GetHasherCommon(handle)[1]);\r
-}\r
-\r
-static BROTLI_INLINE uint16_t* FN(Num)(HashLongestMatch* self) {\r
-  return (uint16_t*)(&self[1]);\r
-}\r
-\r
-static BROTLI_INLINE uint32_t* FN(Buckets)(HashLongestMatch* self) {\r
-  return (uint32_t*)(&FN(Num)(self)[self->bucket_size_]);\r
-}\r
-\r
-static void FN(Initialize)(\r
-    HasherHandle handle, const BrotliEncoderParams* params) {\r
-  HasherCommon* common = GetHasherCommon(handle);\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  BROTLI_UNUSED(params);\r
-  self->hash_shift_ = 32 - common->params.bucket_bits;\r
-  self->bucket_size_ = (size_t)1 << common->params.bucket_bits;\r
-  self->block_size_ = (size_t)1 << common->params.block_bits;\r
-  self->block_mask_ = (uint32_t)(self->block_size_ - 1);\r
-}\r
-\r
-static void FN(Prepare)(HasherHandle handle, BROTLI_BOOL one_shot,\r
-    size_t input_size, const uint8_t* data) {\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  uint16_t* num = FN(Num)(self);\r
-  /* Partial preparation is 100 times slower (per socket). */\r
-  size_t partial_prepare_threshold = self->bucket_size_ >> 6;\r
-  if (one_shot && input_size <= partial_prepare_threshold) {\r
-    size_t i;\r
-    for (i = 0; i < input_size; ++i) {\r
-      const uint32_t key = FN(HashBytes)(&data[i], self->hash_shift_);\r
-      num[key] = 0;\r
-    }\r
-  } else {\r
-    memset(num, 0, self->bucket_size_ * sizeof(num[0]));\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HashMemAllocInBytes)(\r
-    const BrotliEncoderParams* params, BROTLI_BOOL one_shot,\r
-    size_t input_size) {\r
-  size_t bucket_size = (size_t)1 << params->hasher.bucket_bits;\r
-  size_t block_size = (size_t)1 << params->hasher.block_bits;\r
-  BROTLI_UNUSED(one_shot);\r
-  BROTLI_UNUSED(input_size);\r
-  return sizeof(HashLongestMatch) + bucket_size * (2 + 4 * block_size);\r
-}\r
-\r
-/* Look at 4 bytes at &data[ix & mask].\r
-   Compute a hash from these, and store the value of ix at that position. */\r
-static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data,\r
-    const size_t mask, const size_t ix) {\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  uint16_t* num = FN(Num)(self);\r
-  const uint32_t key = FN(HashBytes)(&data[ix & mask], self->hash_shift_);\r
-  const size_t minor_ix = num[key] & self->block_mask_;\r
-  const size_t offset =\r
-      minor_ix + (key << GetHasherCommon(handle)->params.block_bits);\r
-  FN(Buckets)(self)[offset] = (uint32_t)ix;\r
-  ++num[key];\r
-}\r
-\r
-static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix_start,\r
-    const size_t ix_end) {\r
-  size_t i;\r
-  for (i = ix_start; i < ix_end; ++i) {\r
-    FN(Store)(handle, data, mask, i);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(StitchToPreviousBlock)(HasherHandle handle,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask) {\r
-  if (num_bytes >= FN(HashTypeLength)() - 1 && position >= 3) {\r
-    /* Prepare the hashes for three last bytes of the last write.\r
-       These could not be calculated before, since they require knowledge\r
-       of both the previous and the current block. */\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 3);\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 2);\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 1);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(PrepareDistanceCache)(\r
-    HasherHandle handle, int* BROTLI_RESTRICT distance_cache) {\r
-  PrepareDistanceCache(distance_cache,\r
-      GetHasherCommon(handle)->params.num_last_distances_to_check);\r
-}\r
-\r
-/* Find a longest backward match of &data[cur_ix] up to the length of\r
-   max_length and stores the position cur_ix in the hash table.\r
-\r
-   REQUIRES: FN(PrepareDistanceCache) must be invoked for current distance cache\r
-             values; if this method is invoked repeatedly with the same distance\r
-             cache values, it is enough to invoke FN(PrepareDistanceCache) once.\r
-\r
-   Does not look for matches longer than max_length.\r
-   Does not look for matches further away than max_backward.\r
-   Writes the best match into |out|.\r
-   |out|->score is updated only if a better match is found. */\r
-static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,\r
-    const BrotliEncoderDictionary* dictionary,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,\r
-    const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix,\r
-    const size_t max_length, const size_t max_backward, const size_t gap,\r
-    const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) {\r
-  HasherCommon* common = GetHasherCommon(handle);\r
-  HashLongestMatch* self = FN(Self)(handle);\r
-  uint16_t* num = FN(Num)(self);\r
-  uint32_t* buckets = FN(Buckets)(self);\r
-  const size_t cur_ix_masked = cur_ix & ring_buffer_mask;\r
-  /* Don't accept a short copy from far away. */\r
-  score_t min_score = out->score;\r
-  score_t best_score = out->score;\r
-  size_t best_len = out->len;\r
-  size_t i;\r
-  out->len = 0;\r
-  out->len_code_delta = 0;\r
-  /* Try last distance first. */\r
-  for (i = 0; i < (size_t)common->params.num_last_distances_to_check; ++i) {\r
-    const size_t backward = (size_t)distance_cache[i];\r
-    size_t prev_ix = (size_t)(cur_ix - backward);\r
-    if (prev_ix >= cur_ix) {\r
-      continue;\r
-    }\r
-    if (BROTLI_PREDICT_FALSE(backward > max_backward)) {\r
-      continue;\r
-    }\r
-    prev_ix &= ring_buffer_mask;\r
-\r
-    if (cur_ix_masked + best_len > ring_buffer_mask ||\r
-        prev_ix + best_len > ring_buffer_mask ||\r
-        data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {\r
-      continue;\r
-    }\r
-    {\r
-      const size_t len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                                  &data[cur_ix_masked],\r
-                                                  max_length);\r
-      if (len >= 3 || (len == 2 && i < 2)) {\r
-        /* Comparing for >= 2 does not change the semantics, but just saves for\r
-           a few unnecessary binary logarithms in backward reference score,\r
-           since we are not interested in such short matches. */\r
-        score_t score = BackwardReferenceScoreUsingLastDistance(len);\r
-        if (best_score < score) {\r
-          if (i != 0) score -= BackwardReferencePenaltyUsingLastDistance(i);\r
-          if (best_score < score) {\r
-            best_score = score;\r
-            best_len = len;\r
-            out->len = best_len;\r
-            out->distance = backward;\r
-            out->score = best_score;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  {\r
-    const uint32_t key =\r
-        FN(HashBytes)(&data[cur_ix_masked], self->hash_shift_);\r
-    uint32_t* BROTLI_RESTRICT bucket =\r
-        &buckets[key << common->params.block_bits];\r
-    const size_t down =\r
-        (num[key] > self->block_size_) ? (num[key] - self->block_size_) : 0u;\r
-    for (i = num[key]; i > down;) {\r
-      size_t prev_ix = bucket[--i & self->block_mask_];\r
-      const size_t backward = cur_ix - prev_ix;\r
-      if (BROTLI_PREDICT_FALSE(backward > max_backward)) {\r
-        break;\r
-      }\r
-      prev_ix &= ring_buffer_mask;\r
-      if (cur_ix_masked + best_len > ring_buffer_mask ||\r
-          prev_ix + best_len > ring_buffer_mask ||\r
-          data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {\r
-        continue;\r
-      }\r
-      {\r
-        const size_t len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                                    &data[cur_ix_masked],\r
-                                                    max_length);\r
-        if (len >= 4) {\r
-          /* Comparing for >= 3 does not change the semantics, but just saves\r
-             for a few unnecessary binary logarithms in backward reference\r
-             score, since we are not interested in such short matches. */\r
-          score_t score = BackwardReferenceScore(len, backward);\r
-          if (best_score < score) {\r
-            best_score = score;\r
-            best_len = len;\r
-            out->len = best_len;\r
-            out->distance = backward;\r
-            out->score = best_score;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    bucket[num[key] & self->block_mask_] = (uint32_t)cur_ix;\r
-    ++num[key];\r
-  }\r
-  if (min_score == out->score) {\r
-    SearchInStaticDictionary(dictionary,\r
-        handle, &data[cur_ix_masked], max_length, max_backward + gap,\r
-        max_distance, out, BROTLI_FALSE);\r
-  }\r
-}\r
-\r
-#undef HashLongestMatch\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_quickly_inc.h b/BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_quickly_inc.h
deleted file mode 100644 (file)
index 49338f9..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN, BUCKET_BITS, BUCKET_SWEEP, HASH_LEN,\r
-                        USE_DICTIONARY\r
- */\r
-\r
-#define HashLongestMatchQuickly HASHER()\r
-\r
-#define BUCKET_SIZE (1 << BUCKET_BITS)\r
-\r
-#define HASH_MAP_SIZE (4 << BUCKET_BITS)\r
-\r
-static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 8; }\r
-static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 8; }\r
-\r
-/* HashBytes is the function that chooses the bucket to place\r
-   the address in. The HashLongestMatch and HashLongestMatchQuickly\r
-   classes have separate, different implementations of hashing. */\r
-static uint32_t FN(HashBytes)(const uint8_t* data) {\r
-  const uint64_t h = ((BROTLI_UNALIGNED_LOAD64LE(data) << (64 - 8 * HASH_LEN)) *\r
-                      kHashMul64);\r
-  /* The higher bits contain more mixture from the multiplication,\r
-     so we take our results from there. */\r
-  return (uint32_t)(h >> (64 - BUCKET_BITS));\r
-}\r
-\r
-/* A (forgetful) hash table to the data seen by the compressor, to\r
-   help create backward references to previous data.\r
-\r
-   This is a hash map of fixed size (BUCKET_SIZE). Starting from the\r
-   given index, BUCKET_SWEEP buckets are used to store values of a key. */\r
-typedef struct HashLongestMatchQuickly {\r
-  uint32_t buckets_[BUCKET_SIZE + BUCKET_SWEEP];\r
-} HashLongestMatchQuickly;\r
-\r
-static BROTLI_INLINE HashLongestMatchQuickly* FN(Self)(HasherHandle handle) {\r
-  return (HashLongestMatchQuickly*)&(GetHasherCommon(handle)[1]);\r
-}\r
-\r
-static void FN(Initialize)(\r
-    HasherHandle handle, const BrotliEncoderParams* params) {\r
-  BROTLI_UNUSED(handle);\r
-  BROTLI_UNUSED(params);\r
-}\r
-\r
-static void FN(Prepare)(HasherHandle handle, BROTLI_BOOL one_shot,\r
-    size_t input_size, const uint8_t* data) {\r
-  HashLongestMatchQuickly* self = FN(Self)(handle);\r
-  /* Partial preparation is 100 times slower (per socket). */\r
-  size_t partial_prepare_threshold = HASH_MAP_SIZE >> 7;\r
-  if (one_shot && input_size <= partial_prepare_threshold) {\r
-    size_t i;\r
-    for (i = 0; i < input_size; ++i) {\r
-      const uint32_t key = FN(HashBytes)(&data[i]);\r
-      memset(&self->buckets_[key], 0, BUCKET_SWEEP * sizeof(self->buckets_[0]));\r
-    }\r
-  } else {\r
-    /* It is not strictly necessary to fill this buffer here, but\r
-       not filling will make the results of the compression stochastic\r
-       (but correct). This is because random data would cause the\r
-       system to find accidentally good backward references here and there. */\r
-    memset(&self->buckets_[0], 0, sizeof(self->buckets_));\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HashMemAllocInBytes)(\r
-    const BrotliEncoderParams* params, BROTLI_BOOL one_shot,\r
-    size_t input_size) {\r
-  BROTLI_UNUSED(params);\r
-  BROTLI_UNUSED(one_shot);\r
-  BROTLI_UNUSED(input_size);\r
-  return sizeof(HashLongestMatchQuickly);\r
-}\r
-\r
-/* Look at 5 bytes at &data[ix & mask].\r
-   Compute a hash from these, and store the value somewhere within\r
-   [ix .. ix+3]. */\r
-static BROTLI_INLINE void FN(Store)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix) {\r
-  const uint32_t key = FN(HashBytes)(&data[ix & mask]);\r
-  /* Wiggle the value with the bucket sweep range. */\r
-  const uint32_t off = (ix >> 3) % BUCKET_SWEEP;\r
-  FN(Self)(handle)->buckets_[key + off] = (uint32_t)ix;\r
-}\r
-\r
-static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix_start,\r
-    const size_t ix_end) {\r
-  size_t i;\r
-  for (i = ix_start; i < ix_end; ++i) {\r
-    FN(Store)(handle, data, mask, i);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(StitchToPreviousBlock)(\r
-    HasherHandle handle, size_t num_bytes, size_t position,\r
-    const uint8_t* ringbuffer, size_t ringbuffer_mask) {\r
-  if (num_bytes >= FN(HashTypeLength)() - 1 && position >= 3) {\r
-    /* Prepare the hashes for three last bytes of the last write.\r
-       These could not be calculated before, since they require knowledge\r
-       of both the previous and the current block. */\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 3);\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 2);\r
-    FN(Store)(handle, ringbuffer, ringbuffer_mask, position - 1);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(PrepareDistanceCache)(\r
-    HasherHandle handle, int* BROTLI_RESTRICT distance_cache) {\r
-  BROTLI_UNUSED(handle);\r
-  BROTLI_UNUSED(distance_cache);\r
-}\r
-\r
-/* Find a longest backward match of &data[cur_ix & ring_buffer_mask]\r
-   up to the length of max_length and stores the position cur_ix in the\r
-   hash table.\r
-\r
-   Does not look for matches longer than max_length.\r
-   Does not look for matches further away than max_backward.\r
-   Writes the best match into |out|.\r
-   |out|->score is updated only if a better match is found. */\r
-static BROTLI_INLINE void FN(FindLongestMatch)(\r
-    HasherHandle handle, const BrotliEncoderDictionary* dictionary,\r
-    const uint8_t* BROTLI_RESTRICT data,\r
-    const size_t ring_buffer_mask, const int* BROTLI_RESTRICT distance_cache,\r
-    const size_t cur_ix, const size_t max_length, const size_t max_backward,\r
-    const size_t gap, const size_t max_distance,\r
-    HasherSearchResult* BROTLI_RESTRICT out) {\r
-  HashLongestMatchQuickly* self = FN(Self)(handle);\r
-  const size_t best_len_in = out->len;\r
-  const size_t cur_ix_masked = cur_ix & ring_buffer_mask;\r
-  const uint32_t key = FN(HashBytes)(&data[cur_ix_masked]);\r
-  int compare_char = data[cur_ix_masked + best_len_in];\r
-  score_t min_score = out->score;\r
-  score_t best_score = out->score;\r
-  size_t best_len = best_len_in;\r
-  size_t cached_backward = (size_t)distance_cache[0];\r
-  size_t prev_ix = cur_ix - cached_backward;\r
-  out->len_code_delta = 0;\r
-  if (prev_ix < cur_ix) {\r
-    prev_ix &= (uint32_t)ring_buffer_mask;\r
-    if (compare_char == data[prev_ix + best_len]) {\r
-      size_t len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                            &data[cur_ix_masked],\r
-                                            max_length);\r
-      if (len >= 4) {\r
-        const score_t score = BackwardReferenceScoreUsingLastDistance(len);\r
-        if (best_score < score) {\r
-          best_score = score;\r
-          best_len = len;\r
-          out->len = len;\r
-          out->distance = cached_backward;\r
-          out->score = best_score;\r
-          compare_char = data[cur_ix_masked + best_len];\r
-          if (BUCKET_SWEEP == 1) {\r
-            self->buckets_[key] = (uint32_t)cur_ix;\r
-            return;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  if (BUCKET_SWEEP == 1) {\r
-    size_t backward;\r
-    size_t len;\r
-    /* Only one to look for, don't bother to prepare for a loop. */\r
-    prev_ix = self->buckets_[key];\r
-    self->buckets_[key] = (uint32_t)cur_ix;\r
-    backward = cur_ix - prev_ix;\r
-    prev_ix &= (uint32_t)ring_buffer_mask;\r
-    if (compare_char != data[prev_ix + best_len_in]) {\r
-      return;\r
-    }\r
-    if (BROTLI_PREDICT_FALSE(backward == 0 || backward > max_backward)) {\r
-      return;\r
-    }\r
-    len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                   &data[cur_ix_masked],\r
-                                   max_length);\r
-    if (len >= 4) {\r
-      const score_t score = BackwardReferenceScore(len, backward);\r
-      if (best_score < score) {\r
-        out->len = len;\r
-        out->distance = backward;\r
-        out->score = score;\r
-        return;\r
-      }\r
-    }\r
-  } else {\r
-    uint32_t* bucket = self->buckets_ + key;\r
-    int i;\r
-    prev_ix = *bucket++;\r
-    for (i = 0; i < BUCKET_SWEEP; ++i, prev_ix = *bucket++) {\r
-      const size_t backward = cur_ix - prev_ix;\r
-      size_t len;\r
-      prev_ix &= (uint32_t)ring_buffer_mask;\r
-      if (compare_char != data[prev_ix + best_len]) {\r
-        continue;\r
-      }\r
-      if (BROTLI_PREDICT_FALSE(backward == 0 || backward > max_backward)) {\r
-        continue;\r
-      }\r
-      len = FindMatchLengthWithLimit(&data[prev_ix],\r
-                                     &data[cur_ix_masked],\r
-                                     max_length);\r
-      if (len >= 4) {\r
-        const score_t score = BackwardReferenceScore(len, backward);\r
-        if (best_score < score) {\r
-          best_score = score;\r
-          best_len = len;\r
-          out->len = best_len;\r
-          out->distance = backward;\r
-          out->score = score;\r
-          compare_char = data[cur_ix_masked + best_len];\r
-        }\r
-      }\r
-    }\r
-  }\r
-  if (USE_DICTIONARY && min_score == out->score) {\r
-    SearchInStaticDictionary(dictionary,\r
-        handle, &data[cur_ix_masked], max_length, max_backward + gap,\r
-        max_distance, out, BROTLI_TRUE);\r
-  }\r
-  self->buckets_[key + ((cur_ix >> 3) % BUCKET_SWEEP)] = (uint32_t)cur_ix;\r
-}\r
-\r
-#undef HASH_MAP_SIZE\r
-#undef BUCKET_SIZE\r
-\r
-#undef HashLongestMatchQuickly\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash_rolling_inc.h b/BaseTools/Source/C/BrotliCompress/enc/hash_rolling_inc.h
deleted file mode 100644 (file)
index b8e3b21..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2018 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN, JUMP, NUMBUCKETS, MASK, CHUNKLEN */\r
-/* NUMBUCKETS / (MASK + 1) = probability of storing and using hash code. */\r
-/* JUMP = skip bytes for speedup */\r
-\r
-/* Rolling hash for long distance long string matches. Stores one position\r
-   per bucket, bucket key is computed over a long region. */\r
-\r
-#define HashRolling HASHER()\r
-\r
-static const uint32_t FN(kRollingHashMul32) = 69069;\r
-static const uint32_t FN(kInvalidPos) = 0xffffffff;\r
-\r
-/* This hasher uses a longer forward length, but returning a higher value here\r
-   will hurt compression by the main hasher when combined with a composite\r
-   hasher. The hasher tests for forward itself instead. */\r
-static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }\r
-static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }\r
-\r
-/* Computes a code from a single byte. A lookup table of 256 values could be\r
-   used, but simply adding 1 works about as good. */\r
-static uint32_t FN(HashByte)(uint8_t byte) {\r
-  return (uint32_t)byte + 1u;\r
-}\r
-\r
-static uint32_t FN(HashRollingFunctionInitial)(uint32_t state, uint8_t add,\r
-                                               uint32_t factor) {\r
-  return (uint32_t)(factor * state + FN(HashByte)(add));\r
-}\r
-\r
-static uint32_t FN(HashRollingFunction)(uint32_t state, uint8_t add,\r
-                                        uint8_t rem, uint32_t factor,\r
-                                        uint32_t factor_remove) {\r
-  return (uint32_t)(factor * state +\r
-      FN(HashByte)(add) - factor_remove * FN(HashByte)(rem));\r
-}\r
-\r
-typedef struct HashRolling {\r
-  uint32_t state;\r
-  uint32_t* table;\r
-  size_t next_ix;\r
-\r
-  uint32_t chunk_len;\r
-  uint32_t factor;\r
-  uint32_t factor_remove;\r
-} HashRolling;\r
-\r
-static BROTLI_INLINE HashRolling* FN(Self)(HasherHandle handle) {\r
-  return (HashRolling*)&(GetHasherCommon(handle)[1]);\r
-}\r
-\r
-static void FN(Initialize)(\r
-    HasherHandle handle, const BrotliEncoderParams* params) {\r
-  HashRolling* self = FN(Self)(handle);\r
-  size_t i;\r
-  self->state = 0;\r
-  self->next_ix = 0;\r
-\r
-  self->factor = FN(kRollingHashMul32);\r
-\r
-  /* Compute the factor of the oldest byte to remove: factor**steps modulo\r
-     0xffffffff (the multiplications rely on 32-bit overflow) */\r
-  self->factor_remove = 1;\r
-  for (i = 0; i < CHUNKLEN; i += JUMP) {\r
-    self->factor_remove *= self->factor;\r
-  }\r
-\r
-  self->table = (uint32_t*)((HasherHandle)self + sizeof(HashRolling));\r
-  for (i = 0; i < NUMBUCKETS; i++) {\r
-    self->table[i] = FN(kInvalidPos);\r
-  }\r
-\r
-  BROTLI_UNUSED(params);\r
-}\r
-\r
-static void FN(Prepare)(HasherHandle handle, BROTLI_BOOL one_shot,\r
-    size_t input_size, const uint8_t* data) {\r
-  HashRolling* self = FN(Self)(handle);\r
-  size_t i;\r
-  /* Too small size, cannot use this hasher. */\r
-  if (input_size < CHUNKLEN) return;\r
-  self->state = 0;\r
-  for (i = 0; i < CHUNKLEN; i += JUMP) {\r
-    self->state = FN(HashRollingFunctionInitial)(\r
-        self->state, data[i], self->factor);\r
-  }\r
-  BROTLI_UNUSED(one_shot);\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HashMemAllocInBytes)(\r
-    const BrotliEncoderParams* params, BROTLI_BOOL one_shot,\r
-    size_t input_size) {\r
-  return sizeof(HashRolling) + NUMBUCKETS * sizeof(uint32_t);\r
-  BROTLI_UNUSED(params);\r
-  BROTLI_UNUSED(one_shot);\r
-  BROTLI_UNUSED(input_size);\r
-}\r
-\r
-static BROTLI_INLINE void FN(Store)(HasherHandle BROTLI_RESTRICT handle,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t mask, const size_t ix) {\r
-  BROTLI_UNUSED(handle);\r
-  BROTLI_UNUSED(data);\r
-  BROTLI_UNUSED(mask);\r
-  BROTLI_UNUSED(ix);\r
-}\r
-\r
-static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix_start,\r
-    const size_t ix_end) {\r
-  BROTLI_UNUSED(handle);\r
-  BROTLI_UNUSED(data);\r
-  BROTLI_UNUSED(mask);\r
-  BROTLI_UNUSED(ix_start);\r
-  BROTLI_UNUSED(ix_end);\r
-}\r
-\r
-static BROTLI_INLINE void FN(StitchToPreviousBlock)(HasherHandle handle,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ring_buffer_mask) {\r
-  /* In this case we must re-initialize the hasher from scratch from the\r
-     current position. */\r
-  HashRolling* self = FN(Self)(handle);\r
-  size_t position_masked;\r
-  size_t available = num_bytes;\r
-  if ((position & (JUMP - 1)) != 0) {\r
-    size_t diff = JUMP - (position & (JUMP - 1));\r
-    available = (diff > available) ? 0 : (available - diff);\r
-    position += diff;\r
-  }\r
-  position_masked = position & ring_buffer_mask;\r
-  /* wrapping around ringbuffer not handled. */\r
-  if (available > ring_buffer_mask - position_masked) {\r
-    available = ring_buffer_mask - position_masked;\r
-  }\r
-\r
-  FN(Prepare)(handle, BROTLI_FALSE, available,\r
-      ringbuffer + (position & ring_buffer_mask));\r
-  self->next_ix = position;\r
-  BROTLI_UNUSED(num_bytes);\r
-}\r
-\r
-static BROTLI_INLINE void FN(PrepareDistanceCache)(\r
-    HasherHandle handle, int* BROTLI_RESTRICT distance_cache) {\r
-  BROTLI_UNUSED(handle);\r
-  BROTLI_UNUSED(distance_cache);\r
-}\r
-\r
-static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,\r
-    const BrotliEncoderDictionary* dictionary,\r
-    const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,\r
-    const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix,\r
-    const size_t max_length, const size_t max_backward, const size_t gap,\r
-    const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) {\r
-  HashRolling* self = FN(Self)(handle);\r
-  const size_t cur_ix_masked = cur_ix & ring_buffer_mask;\r
-  size_t pos = self->next_ix;\r
-\r
-  if ((cur_ix & (JUMP - 1)) != 0) return;\r
-\r
-  /* Not enough lookahead */\r
-  if (max_length < CHUNKLEN) return;\r
-\r
-  for (pos = self->next_ix; pos <= cur_ix; pos += JUMP) {\r
-    uint32_t code = self->state & MASK;\r
-\r
-    uint8_t rem = data[pos & ring_buffer_mask];\r
-    uint8_t add = data[(pos + CHUNKLEN) & ring_buffer_mask];\r
-    size_t found_ix = FN(kInvalidPos);\r
-\r
-    self->state = FN(HashRollingFunction)(\r
-        self->state, add, rem, self->factor, self->factor_remove);\r
-\r
-    if (code < NUMBUCKETS) {\r
-      found_ix = self->table[code];\r
-      self->table[code] = (uint32_t)pos;\r
-      if (pos == cur_ix && found_ix != FN(kInvalidPos)) {\r
-        /* The cast to 32-bit makes backward distances up to 4GB work even\r
-           if cur_ix is above 4GB, despite using 32-bit values in the table. */\r
-        size_t backward = (uint32_t)(cur_ix - found_ix);\r
-        if (backward <= max_backward) {\r
-          const size_t found_ix_masked = found_ix & ring_buffer_mask;\r
-          const size_t len = FindMatchLengthWithLimit(&data[found_ix_masked],\r
-                                                      &data[cur_ix_masked],\r
-                                                      max_length);\r
-          if (len >= 4 && len > out->len) {\r
-            score_t score = BackwardReferenceScore(len, backward);\r
-            if (score > out->score) {\r
-              out->len = len;\r
-              out->distance = backward;\r
-              out->score = score;\r
-              out->len_code_delta = 0;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  self->next_ix = cur_ix + JUMP;\r
-\r
-  /* NOTE: this hasher does not search in the dictionary. It is used as\r
-     backup-hasher, the main hasher already searches in it. */\r
-  BROTLI_UNUSED(dictionary);\r
-  BROTLI_UNUSED(distance_cache);\r
-  BROTLI_UNUSED(gap);\r
-  BROTLI_UNUSED(max_distance);\r
-}\r
-\r
-#undef HashRolling\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/hash_to_binary_tree_inc.h b/BaseTools/Source/C/BrotliCompress/enc/hash_to_binary_tree_inc.h
deleted file mode 100644 (file)
index 09c2642..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN, BUCKET_BITS, MAX_TREE_COMP_LENGTH,\r
-                        MAX_TREE_SEARCH_DEPTH */\r
-\r
-/* A (forgetful) hash table where each hash bucket contains a binary tree of\r
-   sequences whose first 4 bytes share the same hash code.\r
-   Each sequence is MAX_TREE_COMP_LENGTH long and is identified by its starting\r
-   position in the input data. The binary tree is sorted by the lexicographic\r
-   order of the sequences, and it is also a max-heap with respect to the\r
-   starting positions. */\r
-\r
-#define HashToBinaryTree HASHER()\r
-\r
-#define BUCKET_SIZE (1 << BUCKET_BITS)\r
-\r
-static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; }\r
-static BROTLI_INLINE size_t FN(StoreLookahead)(void) {\r
-  return MAX_TREE_COMP_LENGTH;\r
-}\r
-\r
-static uint32_t FN(HashBytes)(const uint8_t* data) {\r
-  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;\r
-  /* The higher bits contain more mixture from the multiplication,\r
-     so we take our results from there. */\r
-  return h >> (32 - BUCKET_BITS);\r
-}\r
-\r
-typedef struct HashToBinaryTree {\r
-  /* The window size minus 1 */\r
-  size_t window_mask_;\r
-\r
-  /* Hash table that maps the 4-byte hashes of the sequence to the last\r
-     position where this hash was found, which is the root of the binary\r
-     tree of sequences that share this hash bucket. */\r
-  uint32_t buckets_[BUCKET_SIZE];\r
-\r
-  /* A position used to mark a non-existent sequence, i.e. a tree is empty if\r
-     its root is at invalid_pos_ and a node is a leaf if both its children\r
-     are at invalid_pos_. */\r
-  uint32_t invalid_pos_;\r
-\r
-  /* --- Dynamic size members --- */\r
-\r
-  /* The union of the binary trees of each hash bucket. The root of the tree\r
-     corresponding to a hash is a sequence starting at buckets_[hash] and\r
-     the left and right children of a sequence starting at pos are\r
-     forest_[2 * pos] and forest_[2 * pos + 1]. */\r
-  /* uint32_t forest[2 * num_nodes] */\r
-} HashToBinaryTree;\r
-\r
-static BROTLI_INLINE HashToBinaryTree* FN(Self)(HasherHandle handle) {\r
-  return (HashToBinaryTree*)&(GetHasherCommon(handle)[1]);\r
-}\r
-\r
-static BROTLI_INLINE uint32_t* FN(Forest)(HashToBinaryTree* self) {\r
-  return (uint32_t*)(&self[1]);\r
-}\r
-\r
-static void FN(Initialize)(\r
-    HasherHandle handle, const BrotliEncoderParams* params) {\r
-  HashToBinaryTree* self = FN(Self)(handle);\r
-  self->window_mask_ = (1u << params->lgwin) - 1u;\r
-  self->invalid_pos_ = (uint32_t)(0 - self->window_mask_);\r
-}\r
-\r
-static void FN(Prepare)(HasherHandle handle, BROTLI_BOOL one_shot,\r
-    size_t input_size, const uint8_t* data) {\r
-  HashToBinaryTree* self = FN(Self)(handle);\r
-  uint32_t invalid_pos = self->invalid_pos_;\r
-  uint32_t i;\r
-  BROTLI_UNUSED(data);\r
-  BROTLI_UNUSED(one_shot);\r
-  BROTLI_UNUSED(input_size);\r
-  for (i = 0; i < BUCKET_SIZE; i++) {\r
-    self->buckets_[i] = invalid_pos;\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HashMemAllocInBytes)(\r
-    const BrotliEncoderParams* params, BROTLI_BOOL one_shot,\r
-    size_t input_size) {\r
-  size_t num_nodes = (size_t)1 << params->lgwin;\r
-  if (one_shot && input_size < num_nodes) {\r
-    num_nodes = input_size;\r
-  }\r
-  return sizeof(HashToBinaryTree) + 2 * sizeof(uint32_t) * num_nodes;\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(LeftChildIndex)(HashToBinaryTree* self,\r
-    const size_t pos) {\r
-  return 2 * (pos & self->window_mask_);\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(RightChildIndex)(HashToBinaryTree* self,\r
-    const size_t pos) {\r
-  return 2 * (pos & self->window_mask_) + 1;\r
-}\r
-\r
-/* Stores the hash of the next 4 bytes and in a single tree-traversal, the\r
-   hash bucket's binary tree is searched for matches and is re-rooted at the\r
-   current position.\r
-\r
-   If less than MAX_TREE_COMP_LENGTH data is available, the hash bucket of the\r
-   current position is searched for matches, but the state of the hash table\r
-   is not changed, since we can not know the final sorting order of the\r
-   current (incomplete) sequence.\r
-\r
-   This function must be called with increasing cur_ix positions. */\r
-static BROTLI_INLINE BackwardMatch* FN(StoreAndFindMatches)(\r
-    HashToBinaryTree* self, const uint8_t* const BROTLI_RESTRICT data,\r
-    const size_t cur_ix, const size_t ring_buffer_mask, const size_t max_length,\r
-    const size_t max_backward, size_t* const BROTLI_RESTRICT best_len,\r
-    BackwardMatch* BROTLI_RESTRICT matches) {\r
-  const size_t cur_ix_masked = cur_ix & ring_buffer_mask;\r
-  const size_t max_comp_len =\r
-      BROTLI_MIN(size_t, max_length, MAX_TREE_COMP_LENGTH);\r
-  const BROTLI_BOOL should_reroot_tree =\r
-      TO_BROTLI_BOOL(max_length >= MAX_TREE_COMP_LENGTH);\r
-  const uint32_t key = FN(HashBytes)(&data[cur_ix_masked]);\r
-  uint32_t* forest = FN(Forest)(self);\r
-  size_t prev_ix = self->buckets_[key];\r
-  /* The forest index of the rightmost node of the left subtree of the new\r
-     root, updated as we traverse and re-root the tree of the hash bucket. */\r
-  size_t node_left = FN(LeftChildIndex)(self, cur_ix);\r
-  /* The forest index of the leftmost node of the right subtree of the new\r
-     root, updated as we traverse and re-root the tree of the hash bucket. */\r
-  size_t node_right = FN(RightChildIndex)(self, cur_ix);\r
-  /* The match length of the rightmost node of the left subtree of the new\r
-     root, updated as we traverse and re-root the tree of the hash bucket. */\r
-  size_t best_len_left = 0;\r
-  /* The match length of the leftmost node of the right subtree of the new\r
-     root, updated as we traverse and re-root the tree of the hash bucket. */\r
-  size_t best_len_right = 0;\r
-  size_t depth_remaining;\r
-  if (should_reroot_tree) {\r
-    self->buckets_[key] = (uint32_t)cur_ix;\r
-  }\r
-  for (depth_remaining = MAX_TREE_SEARCH_DEPTH; ; --depth_remaining) {\r
-    const size_t backward = cur_ix - prev_ix;\r
-    const size_t prev_ix_masked = prev_ix & ring_buffer_mask;\r
-    if (backward == 0 || backward > max_backward || depth_remaining == 0) {\r
-      if (should_reroot_tree) {\r
-        forest[node_left] = self->invalid_pos_;\r
-        forest[node_right] = self->invalid_pos_;\r
-      }\r
-      break;\r
-    }\r
-    {\r
-      const size_t cur_len = BROTLI_MIN(size_t, best_len_left, best_len_right);\r
-      size_t len;\r
-      BROTLI_DCHECK(cur_len <= MAX_TREE_COMP_LENGTH);\r
-      len = cur_len +\r
-          FindMatchLengthWithLimit(&data[cur_ix_masked + cur_len],\r
-                                   &data[prev_ix_masked + cur_len],\r
-                                   max_length - cur_len);\r
-      BROTLI_DCHECK(\r
-          0 == memcmp(&data[cur_ix_masked], &data[prev_ix_masked], len));\r
-      if (matches && len > *best_len) {\r
-        *best_len = len;\r
-        InitBackwardMatch(matches++, backward, len);\r
-      }\r
-      if (len >= max_comp_len) {\r
-        if (should_reroot_tree) {\r
-          forest[node_left] = forest[FN(LeftChildIndex)(self, prev_ix)];\r
-          forest[node_right] = forest[FN(RightChildIndex)(self, prev_ix)];\r
-        }\r
-        break;\r
-      }\r
-      if (data[cur_ix_masked + len] > data[prev_ix_masked + len]) {\r
-        best_len_left = len;\r
-        if (should_reroot_tree) {\r
-          forest[node_left] = (uint32_t)prev_ix;\r
-        }\r
-        node_left = FN(RightChildIndex)(self, prev_ix);\r
-        prev_ix = forest[node_left];\r
-      } else {\r
-        best_len_right = len;\r
-        if (should_reroot_tree) {\r
-          forest[node_right] = (uint32_t)prev_ix;\r
-        }\r
-        node_right = FN(LeftChildIndex)(self, prev_ix);\r
-        prev_ix = forest[node_right];\r
-      }\r
-    }\r
-  }\r
-  return matches;\r
-}\r
-\r
-/* Finds all backward matches of &data[cur_ix & ring_buffer_mask] up to the\r
-   length of max_length and stores the position cur_ix in the hash table.\r
-\r
-   Sets *num_matches to the number of matches found, and stores the found\r
-   matches in matches[0] to matches[*num_matches - 1]. The matches will be\r
-   sorted by strictly increasing length and (non-strictly) increasing\r
-   distance. */\r
-static BROTLI_INLINE size_t FN(FindAllMatches)(HasherHandle handle,\r
-    const BrotliEncoderDictionary* dictionary, const uint8_t* data,\r
-    const size_t ring_buffer_mask, const size_t cur_ix,\r
-    const size_t max_length, const size_t max_backward, const size_t gap,\r
-    const BrotliEncoderParams* params, BackwardMatch* matches) {\r
-  BackwardMatch* const orig_matches = matches;\r
-  const size_t cur_ix_masked = cur_ix & ring_buffer_mask;\r
-  size_t best_len = 1;\r
-  const size_t short_match_max_backward =\r
-      params->quality != HQ_ZOPFLIFICATION_QUALITY ? 16 : 64;\r
-  size_t stop = cur_ix - short_match_max_backward;\r
-  uint32_t dict_matches[BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN + 1];\r
-  size_t i;\r
-  if (cur_ix < short_match_max_backward) { stop = 0; }\r
-  for (i = cur_ix - 1; i > stop && best_len <= 2; --i) {\r
-    size_t prev_ix = i;\r
-    const size_t backward = cur_ix - prev_ix;\r
-    if (BROTLI_PREDICT_FALSE(backward > max_backward)) {\r
-      break;\r
-    }\r
-    prev_ix &= ring_buffer_mask;\r
-    if (data[cur_ix_masked] != data[prev_ix] ||\r
-        data[cur_ix_masked + 1] != data[prev_ix + 1]) {\r
-      continue;\r
-    }\r
-    {\r
-      const size_t len =\r
-          FindMatchLengthWithLimit(&data[prev_ix], &data[cur_ix_masked],\r
-                                   max_length);\r
-      if (len > best_len) {\r
-        best_len = len;\r
-        InitBackwardMatch(matches++, backward, len);\r
-      }\r
-    }\r
-  }\r
-  if (best_len < max_length) {\r
-    matches = FN(StoreAndFindMatches)(FN(Self)(handle), data, cur_ix,\r
-        ring_buffer_mask, max_length, max_backward, &best_len, matches);\r
-  }\r
-  for (i = 0; i <= BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN; ++i) {\r
-    dict_matches[i] = kInvalidMatch;\r
-  }\r
-  {\r
-    size_t minlen = BROTLI_MAX(size_t, 4, best_len + 1);\r
-    if (BrotliFindAllStaticDictionaryMatches(dictionary,\r
-        &data[cur_ix_masked], minlen, max_length, &dict_matches[0])) {\r
-      size_t maxlen = BROTLI_MIN(\r
-          size_t, BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN, max_length);\r
-      size_t l;\r
-      for (l = minlen; l <= maxlen; ++l) {\r
-        uint32_t dict_id = dict_matches[l];\r
-        if (dict_id < kInvalidMatch) {\r
-          size_t distance = max_backward + gap + (dict_id >> 5) + 1;\r
-          if (distance <= params->dist.max_distance) {\r
-            InitDictionaryBackwardMatch(matches++, distance, l, dict_id & 31);\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  return (size_t)(matches - orig_matches);\r
-}\r
-\r
-/* Stores the hash of the next 4 bytes and re-roots the binary tree at the\r
-   current sequence, without returning any matches.\r
-   REQUIRES: ix + MAX_TREE_COMP_LENGTH <= end-of-current-block */\r
-static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data,\r
-    const size_t mask, const size_t ix) {\r
-  HashToBinaryTree* self = FN(Self)(handle);\r
-  /* Maximum distance is window size - 16, see section 9.1. of the spec. */\r
-  const size_t max_backward = self->window_mask_ - BROTLI_WINDOW_GAP + 1;\r
-  FN(StoreAndFindMatches)(self, data, ix, mask, MAX_TREE_COMP_LENGTH,\r
-      max_backward, NULL, NULL);\r
-}\r
-\r
-static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,\r
-    const uint8_t* data, const size_t mask, const size_t ix_start,\r
-    const size_t ix_end) {\r
-  size_t i = ix_start;\r
-  size_t j = ix_start;\r
-  if (ix_start + 63 <= ix_end) {\r
-    i = ix_end - 63;\r
-  }\r
-  if (ix_start + 512 <= i) {\r
-    for (; j < i; j += 8) {\r
-      FN(Store)(handle, data, mask, j);\r
-    }\r
-  }\r
-  for (; i < ix_end; ++i) {\r
-    FN(Store)(handle, data, mask, i);\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void FN(StitchToPreviousBlock)(HasherHandle handle,\r
-    size_t num_bytes, size_t position, const uint8_t* ringbuffer,\r
-    size_t ringbuffer_mask) {\r
-  HashToBinaryTree* self = FN(Self)(handle);\r
-  if (num_bytes >= FN(HashTypeLength)() - 1 &&\r
-      position >= MAX_TREE_COMP_LENGTH) {\r
-    /* Store the last `MAX_TREE_COMP_LENGTH - 1` positions in the hasher.\r
-       These could not be calculated before, since they require knowledge\r
-       of both the previous and the current block. */\r
-    const size_t i_start = position - MAX_TREE_COMP_LENGTH + 1;\r
-    const size_t i_end = BROTLI_MIN(size_t, position, i_start + num_bytes);\r
-    size_t i;\r
-    for (i = i_start; i < i_end; ++i) {\r
-      /* Maximum distance is window size - 16, see section 9.1. of the spec.\r
-         Furthermore, we have to make sure that we don't look further back\r
-         from the start of the next block than the window size, otherwise we\r
-         could access already overwritten areas of the ring-buffer. */\r
-      const size_t max_backward =\r
-          self->window_mask_ - BROTLI_MAX(size_t,\r
-                                          BROTLI_WINDOW_GAP - 1,\r
-                                          position - i);\r
-      /* We know that i + MAX_TREE_COMP_LENGTH <= position + num_bytes, i.e. the\r
-         end of the current block and that we have at least\r
-         MAX_TREE_COMP_LENGTH tail in the ring-buffer. */\r
-      FN(StoreAndFindMatches)(self, ringbuffer, i, ringbuffer_mask,\r
-          MAX_TREE_COMP_LENGTH, max_backward, NULL, NULL);\r
-    }\r
-  }\r
-}\r
-\r
-#undef BUCKET_SIZE\r
-\r
-#undef HashToBinaryTree\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/histogram.c b/BaseTools/Source/C/BrotliCompress/enc/histogram.c
deleted file mode 100644 (file)
index d3bfa3a..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Build per-context histograms of literals, commands and distance codes. */\r
-\r
-#include "./histogram.h"\r
-\r
-#include "../common/context.h"\r
-#include "./block_splitter.h"\r
-#include "./command.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-typedef struct BlockSplitIterator {\r
-  const BlockSplit* split_;  /* Not owned. */\r
-  size_t idx_;\r
-  size_t type_;\r
-  size_t length_;\r
-} BlockSplitIterator;\r
-\r
-static void InitBlockSplitIterator(BlockSplitIterator* self,\r
-    const BlockSplit* split) {\r
-  self->split_ = split;\r
-  self->idx_ = 0;\r
-  self->type_ = 0;\r
-  self->length_ = split->lengths ? split->lengths[0] : 0;\r
-}\r
-\r
-static void BlockSplitIteratorNext(BlockSplitIterator* self) {\r
-  if (self->length_ == 0) {\r
-    ++self->idx_;\r
-    self->type_ = self->split_->types[self->idx_];\r
-    self->length_ = self->split_->lengths[self->idx_];\r
-  }\r
-  --self->length_;\r
-}\r
-\r
-void BrotliBuildHistogramsWithContext(\r
-    const Command* cmds, const size_t num_commands,\r
-    const BlockSplit* literal_split, const BlockSplit* insert_and_copy_split,\r
-    const BlockSplit* dist_split, const uint8_t* ringbuffer, size_t start_pos,\r
-    size_t mask, uint8_t prev_byte, uint8_t prev_byte2,\r
-    const ContextType* context_modes, HistogramLiteral* literal_histograms,\r
-    HistogramCommand* insert_and_copy_histograms,\r
-    HistogramDistance* copy_dist_histograms) {\r
-  size_t pos = start_pos;\r
-  BlockSplitIterator literal_it;\r
-  BlockSplitIterator insert_and_copy_it;\r
-  BlockSplitIterator dist_it;\r
-  size_t i;\r
-\r
-  InitBlockSplitIterator(&literal_it, literal_split);\r
-  InitBlockSplitIterator(&insert_and_copy_it, insert_and_copy_split);\r
-  InitBlockSplitIterator(&dist_it, dist_split);\r
-  for (i = 0; i < num_commands; ++i) {\r
-    const Command* cmd = &cmds[i];\r
-    size_t j;\r
-    BlockSplitIteratorNext(&insert_and_copy_it);\r
-    HistogramAddCommand(&insert_and_copy_histograms[insert_and_copy_it.type_],\r
-        cmd->cmd_prefix_);\r
-    /* TODO: unwrap iterator blocks. */\r
-    for (j = cmd->insert_len_; j != 0; --j) {\r
-      size_t context;\r
-      BlockSplitIteratorNext(&literal_it);\r
-      context = literal_it.type_;\r
-      if (context_modes) {\r
-        ContextLut lut = BROTLI_CONTEXT_LUT(context_modes[context]);\r
-        context = (context << BROTLI_LITERAL_CONTEXT_BITS) +\r
-            BROTLI_CONTEXT(prev_byte, prev_byte2, lut);\r
-      }\r
-      HistogramAddLiteral(&literal_histograms[context],\r
-          ringbuffer[pos & mask]);\r
-      prev_byte2 = prev_byte;\r
-      prev_byte = ringbuffer[pos & mask];\r
-      ++pos;\r
-    }\r
-    pos += CommandCopyLen(cmd);\r
-    if (CommandCopyLen(cmd)) {\r
-      prev_byte2 = ringbuffer[(pos - 2) & mask];\r
-      prev_byte = ringbuffer[(pos - 1) & mask];\r
-      if (cmd->cmd_prefix_ >= 128) {\r
-        size_t context;\r
-        BlockSplitIteratorNext(&dist_it);\r
-        context = (dist_it.type_ << BROTLI_DISTANCE_CONTEXT_BITS) +\r
-            CommandDistanceContext(cmd);\r
-        HistogramAddDistance(&copy_dist_histograms[context],\r
-            cmd->dist_prefix_ & 0x3FF);\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/histogram.h b/BaseTools/Source/C/BrotliCompress/enc/histogram.h
deleted file mode 100644 (file)
index c08a4ca..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Models the histograms of literals, commands and distance codes. */\r
-\r
-#ifndef BROTLI_ENC_HISTOGRAM_H_\r
-#define BROTLI_ENC_HISTOGRAM_H_\r
-\r
-#include <string.h>  /* memset */\r
-\r
-#include "../common/constants.h"\r
-#include "../common/context.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./block_splitter.h"\r
-#include "./command.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* The distance symbols effectively used by "Large Window Brotli" (32-bit). */\r
-#define BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS 544\r
-\r
-#define FN(X) X ## Literal\r
-#define DATA_SIZE BROTLI_NUM_LITERAL_SYMBOLS\r
-#define DataType uint8_t\r
-#include "./histogram_inc.h"  /* NOLINT(build/include) */\r
-#undef DataType\r
-#undef DATA_SIZE\r
-#undef FN\r
-\r
-#define FN(X) X ## Command\r
-#define DataType uint16_t\r
-#define DATA_SIZE BROTLI_NUM_COMMAND_SYMBOLS\r
-#include "./histogram_inc.h"  /* NOLINT(build/include) */\r
-#undef DATA_SIZE\r
-#undef FN\r
-\r
-#define FN(X) X ## Distance\r
-#define DATA_SIZE BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS\r
-#include "./histogram_inc.h"  /* NOLINT(build/include) */\r
-#undef DataType\r
-#undef DATA_SIZE\r
-#undef FN\r
-\r
-BROTLI_INTERNAL void BrotliBuildHistogramsWithContext(\r
-    const Command* cmds, const size_t num_commands,\r
-    const BlockSplit* literal_split, const BlockSplit* insert_and_copy_split,\r
-    const BlockSplit* dist_split, const uint8_t* ringbuffer, size_t pos,\r
-    size_t mask, uint8_t prev_byte, uint8_t prev_byte2,\r
-    const ContextType* context_modes, HistogramLiteral* literal_histograms,\r
-    HistogramCommand* insert_and_copy_histograms,\r
-    HistogramDistance* copy_dist_histograms);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_HISTOGRAM_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/histogram_inc.h b/BaseTools/Source/C/BrotliCompress/enc/histogram_inc.h
deleted file mode 100644 (file)
index a9d2e70..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: Histogram, DATA_SIZE, DataType */\r
-\r
-/* A simple container for histograms of data in blocks. */\r
-\r
-typedef struct FN(Histogram) {\r
-  uint32_t data_[DATA_SIZE];\r
-  size_t total_count_;\r
-  double bit_cost_;\r
-} FN(Histogram);\r
-\r
-static BROTLI_INLINE void FN(HistogramClear)(FN(Histogram)* self) {\r
-  memset(self->data_, 0, sizeof(self->data_));\r
-  self->total_count_ = 0;\r
-  self->bit_cost_ = HUGE_VAL;\r
-}\r
-\r
-static BROTLI_INLINE void FN(ClearHistograms)(\r
-    FN(Histogram)* array, size_t length) {\r
-  size_t i;\r
-  for (i = 0; i < length; ++i) FN(HistogramClear)(array + i);\r
-}\r
-\r
-static BROTLI_INLINE void FN(HistogramAdd)(FN(Histogram)* self, size_t val) {\r
-  ++self->data_[val];\r
-  ++self->total_count_;\r
-}\r
-\r
-static BROTLI_INLINE void FN(HistogramAddVector)(FN(Histogram)* self,\r
-    const DataType* p, size_t n) {\r
-  self->total_count_ += n;\r
-  n += 1;\r
-  while (--n) ++self->data_[*p++];\r
-}\r
-\r
-static BROTLI_INLINE void FN(HistogramAddHistogram)(FN(Histogram)* self,\r
-    const FN(Histogram)* v) {\r
-  size_t i;\r
-  self->total_count_ += v->total_count_;\r
-  for (i = 0; i < DATA_SIZE; ++i) {\r
-    self->data_[i] += v->data_[i];\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE size_t FN(HistogramDataSize)(void) { return DATA_SIZE; }\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/literal_cost.c b/BaseTools/Source/C/BrotliCompress/enc/literal_cost.c
deleted file mode 100644 (file)
index de780dc..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Literal cost model to allow backward reference replacement to be efficient.\r
-*/\r
-\r
-#include "./literal_cost.h"\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./fast_log.h"\r
-#include "./utf8_util.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static size_t UTF8Position(size_t last, size_t c, size_t clamp) {\r
-  if (c < 128) {\r
-    return 0;  /* Next one is the 'Byte 1' again. */\r
-  } else if (c >= 192) {  /* Next one is the 'Byte 2' of utf-8 encoding. */\r
-    return BROTLI_MIN(size_t, 1, clamp);\r
-  } else {\r
-    /* Let's decide over the last byte if this ends the sequence. */\r
-    if (last < 0xE0) {\r
-      return 0;  /* Completed two or three byte coding. */\r
-    } else {  /* Next one is the 'Byte 3' of utf-8 encoding. */\r
-      return BROTLI_MIN(size_t, 2, clamp);\r
-    }\r
-  }\r
-}\r
-\r
-static size_t DecideMultiByteStatsLevel(size_t pos, size_t len, size_t mask,\r
-                                        const uint8_t* data) {\r
-  size_t counts[3] = { 0 };\r
-  size_t max_utf8 = 1;  /* should be 2, but 1 compresses better. */\r
-  size_t last_c = 0;\r
-  size_t i;\r
-  for (i = 0; i < len; ++i) {\r
-    size_t c = data[(pos + i) & mask];\r
-    ++counts[UTF8Position(last_c, c, 2)];\r
-    last_c = c;\r
-  }\r
-  if (counts[2] < 500) {\r
-    max_utf8 = 1;\r
-  }\r
-  if (counts[1] + counts[2] < 25) {\r
-    max_utf8 = 0;\r
-  }\r
-  return max_utf8;\r
-}\r
-\r
-static void EstimateBitCostsForLiteralsUTF8(size_t pos, size_t len, size_t mask,\r
-                                            const uint8_t* data, float* cost) {\r
-  /* max_utf8 is 0 (normal ASCII single byte modeling),\r
-     1 (for 2-byte UTF-8 modeling), or 2 (for 3-byte UTF-8 modeling). */\r
-  const size_t max_utf8 = DecideMultiByteStatsLevel(pos, len, mask, data);\r
-  size_t histogram[3][256] = { { 0 } };\r
-  size_t window_half = 495;\r
-  size_t in_window = BROTLI_MIN(size_t, window_half, len);\r
-  size_t in_window_utf8[3] = { 0 };\r
-\r
-  size_t i;\r
-  {  /* Bootstrap histograms. */\r
-    size_t last_c = 0;\r
-    size_t utf8_pos = 0;\r
-    for (i = 0; i < in_window; ++i) {\r
-      size_t c = data[(pos + i) & mask];\r
-      ++histogram[utf8_pos][c];\r
-      ++in_window_utf8[utf8_pos];\r
-      utf8_pos = UTF8Position(last_c, c, max_utf8);\r
-      last_c = c;\r
-    }\r
-  }\r
-\r
-  /* Compute bit costs with sliding window. */\r
-  for (i = 0; i < len; ++i) {\r
-    if (i >= window_half) {\r
-      /* Remove a byte in the past. */\r
-      size_t c =\r
-          i < window_half + 1 ? 0 : data[(pos + i - window_half - 1) & mask];\r
-      size_t last_c =\r
-          i < window_half + 2 ? 0 : data[(pos + i - window_half - 2) & mask];\r
-      size_t utf8_pos2 = UTF8Position(last_c, c, max_utf8);\r
-      --histogram[utf8_pos2][data[(pos + i - window_half) & mask]];\r
-      --in_window_utf8[utf8_pos2];\r
-    }\r
-    if (i + window_half < len) {\r
-      /* Add a byte in the future. */\r
-      size_t c = data[(pos + i + window_half - 1) & mask];\r
-      size_t last_c = data[(pos + i + window_half - 2) & mask];\r
-      size_t utf8_pos2 = UTF8Position(last_c, c, max_utf8);\r
-      ++histogram[utf8_pos2][data[(pos + i + window_half) & mask]];\r
-      ++in_window_utf8[utf8_pos2];\r
-    }\r
-    {\r
-      size_t c = i < 1 ? 0 : data[(pos + i - 1) & mask];\r
-      size_t last_c = i < 2 ? 0 : data[(pos + i - 2) & mask];\r
-      size_t utf8_pos = UTF8Position(last_c, c, max_utf8);\r
-      size_t masked_pos = (pos + i) & mask;\r
-      size_t histo = histogram[utf8_pos][data[masked_pos]];\r
-      double lit_cost;\r
-      if (histo == 0) {\r
-        histo = 1;\r
-      }\r
-      lit_cost = FastLog2(in_window_utf8[utf8_pos]) - FastLog2(histo);\r
-      lit_cost += 0.02905;\r
-      if (lit_cost < 1.0) {\r
-        lit_cost *= 0.5;\r
-        lit_cost += 0.5;\r
-      }\r
-      /* Make the first bytes more expensive -- seems to help, not sure why.\r
-         Perhaps because the entropy source is changing its properties\r
-         rapidly in the beginning of the file, perhaps because the beginning\r
-         of the data is a statistical "anomaly". */\r
-      if (i < 2000) {\r
-        lit_cost += 0.7 - ((double)(2000 - i) / 2000.0 * 0.35);\r
-      }\r
-      cost[i] = (float)lit_cost;\r
-    }\r
-  }\r
-}\r
-\r
-void BrotliEstimateBitCostsForLiterals(size_t pos, size_t len, size_t mask,\r
-                                       const uint8_t* data, float* cost) {\r
-  if (BrotliIsMostlyUTF8(data, pos, mask, len, kMinUTF8Ratio)) {\r
-    EstimateBitCostsForLiteralsUTF8(pos, len, mask, data, cost);\r
-    return;\r
-  } else {\r
-    size_t histogram[256] = { 0 };\r
-    size_t window_half = 2000;\r
-    size_t in_window = BROTLI_MIN(size_t, window_half, len);\r
-\r
-    /* Bootstrap histogram. */\r
-    size_t i;\r
-    for (i = 0; i < in_window; ++i) {\r
-      ++histogram[data[(pos + i) & mask]];\r
-    }\r
-\r
-    /* Compute bit costs with sliding window. */\r
-    for (i = 0; i < len; ++i) {\r
-      size_t histo;\r
-      if (i >= window_half) {\r
-        /* Remove a byte in the past. */\r
-        --histogram[data[(pos + i - window_half) & mask]];\r
-        --in_window;\r
-      }\r
-      if (i + window_half < len) {\r
-        /* Add a byte in the future. */\r
-        ++histogram[data[(pos + i + window_half) & mask]];\r
-        ++in_window;\r
-      }\r
-      histo = histogram[data[(pos + i) & mask]];\r
-      if (histo == 0) {\r
-        histo = 1;\r
-      }\r
-      {\r
-        double lit_cost = FastLog2(in_window) - FastLog2(histo);\r
-        lit_cost += 0.029;\r
-        if (lit_cost < 1.0) {\r
-          lit_cost *= 0.5;\r
-          lit_cost += 0.5;\r
-        }\r
-        cost[i] = (float)lit_cost;\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/literal_cost.h b/BaseTools/Source/C/BrotliCompress/enc/literal_cost.h
deleted file mode 100644 (file)
index 4891a26..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Literal cost model to allow backward reference replacement to be efficient.\r
-*/\r
-\r
-#ifndef BROTLI_ENC_LITERAL_COST_H_\r
-#define BROTLI_ENC_LITERAL_COST_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* Estimates how many bits the literals in the interval [pos, pos + len) in the\r
-   ring-buffer (data, mask) will take entropy coded and writes these estimates\r
-   to the cost[0..len) array. */\r
-BROTLI_INTERNAL void BrotliEstimateBitCostsForLiterals(\r
-    size_t pos, size_t len, size_t mask, const uint8_t* data, float* cost);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_LITERAL_COST_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/memory.c b/BaseTools/Source/C/BrotliCompress/enc/memory.c
deleted file mode 100644 (file)
index f0b2f13..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Algorithms for distributing the literals and commands of a metablock between\r
-   block types and contexts. */\r
-\r
-#include "./memory.h"\r
-\r
-#include <stdlib.h>  /* exit, free, malloc */\r
-#include <string.h>  /* memcpy */\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define MAX_PERM_ALLOCATED 128\r
-#define MAX_NEW_ALLOCATED 64\r
-#define MAX_NEW_FREED 64\r
-\r
-#define PERM_ALLOCATED_OFFSET 0\r
-#define NEW_ALLOCATED_OFFSET MAX_PERM_ALLOCATED\r
-#define NEW_FREED_OFFSET (MAX_PERM_ALLOCATED + MAX_NEW_ALLOCATED)\r
-\r
-void BrotliInitMemoryManager(\r
-    MemoryManager* m, brotli_alloc_func alloc_func, brotli_free_func free_func,\r
-    void* opaque) {\r
-  if (!alloc_func) {\r
-    m->alloc_func = BrotliDefaultAllocFunc;\r
-    m->free_func = BrotliDefaultFreeFunc;\r
-    m->opaque = 0;\r
-  } else {\r
-    m->alloc_func = alloc_func;\r
-    m->free_func = free_func;\r
-    m->opaque = opaque;\r
-  }\r
-#if !defined(BROTLI_ENCODER_EXIT_ON_OOM)\r
-  m->is_oom = BROTLI_FALSE;\r
-  m->perm_allocated = 0;\r
-  m->new_allocated = 0;\r
-  m->new_freed = 0;\r
-#endif  /* BROTLI_ENCODER_EXIT_ON_OOM */\r
-}\r
-\r
-#if defined(BROTLI_ENCODER_EXIT_ON_OOM)\r
-\r
-void* BrotliAllocate(MemoryManager* m, size_t n) {\r
-  void* result = m->alloc_func(m->opaque, n);\r
-  if (!result) exit(EXIT_FAILURE);\r
-  return result;\r
-}\r
-\r
-void BrotliFree(MemoryManager* m, void* p) {\r
-  m->free_func(m->opaque, p);\r
-}\r
-\r
-void BrotliWipeOutMemoryManager(MemoryManager* m) {\r
-  BROTLI_UNUSED(m);\r
-}\r
-\r
-#else  /* BROTLI_ENCODER_EXIT_ON_OOM */\r
-\r
-static void SortPointers(void** items, const size_t n) {\r
-  /* Shell sort. */\r
-  static const size_t gaps[] = {23, 10, 4, 1};\r
-  int g = 0;\r
-  for (; g < 4; ++g) {\r
-    size_t gap = gaps[g];\r
-    size_t i;\r
-    for (i = gap; i < n; ++i) {\r
-      size_t j = i;\r
-      void* tmp = items[i];\r
-      for (; j >= gap && tmp < items[j - gap]; j -= gap) {\r
-        items[j] = items[j - gap];\r
-      }\r
-      items[j] = tmp;\r
-    }\r
-  }\r
-}\r
-\r
-static size_t Annihilate(void** a, size_t a_len, void** b, size_t b_len) {\r
-  size_t a_read_index = 0;\r
-  size_t b_read_index = 0;\r
-  size_t a_write_index = 0;\r
-  size_t b_write_index = 0;\r
-  size_t annihilated = 0;\r
-  while (a_read_index < a_len && b_read_index < b_len) {\r
-    if (a[a_read_index] == b[b_read_index]) {\r
-      a_read_index++;\r
-      b_read_index++;\r
-      annihilated++;\r
-    } else if (a[a_read_index] < b[b_read_index]) {\r
-      a[a_write_index++] = a[a_read_index++];\r
-    } else {\r
-      b[b_write_index++] = b[b_read_index++];\r
-    }\r
-  }\r
-  while (a_read_index < a_len) a[a_write_index++] = a[a_read_index++];\r
-  while (b_read_index < b_len) b[b_write_index++] = b[b_read_index++];\r
-  return annihilated;\r
-}\r
-\r
-static void CollectGarbagePointers(MemoryManager* m) {\r
-  size_t annihilated;\r
-  SortPointers(m->pointers + NEW_ALLOCATED_OFFSET, m->new_allocated);\r
-  SortPointers(m->pointers + NEW_FREED_OFFSET, m->new_freed);\r
-  annihilated = Annihilate(\r
-      m->pointers + NEW_ALLOCATED_OFFSET, m->new_allocated,\r
-      m->pointers + NEW_FREED_OFFSET, m->new_freed);\r
-  m->new_allocated -= annihilated;\r
-  m->new_freed -= annihilated;\r
-\r
-  if (m->new_freed != 0) {\r
-    annihilated = Annihilate(\r
-        m->pointers + PERM_ALLOCATED_OFFSET, m->perm_allocated,\r
-        m->pointers + NEW_FREED_OFFSET, m->new_freed);\r
-    m->perm_allocated -= annihilated;\r
-    m->new_freed -= annihilated;\r
-    BROTLI_DCHECK(m->new_freed == 0);\r
-  }\r
-\r
-  if (m->new_allocated != 0) {\r
-    BROTLI_DCHECK(m->perm_allocated + m->new_allocated <= MAX_PERM_ALLOCATED);\r
-    memcpy(m->pointers + PERM_ALLOCATED_OFFSET + m->perm_allocated,\r
-           m->pointers + NEW_ALLOCATED_OFFSET,\r
-           sizeof(void*) * m->new_allocated);\r
-    m->perm_allocated += m->new_allocated;\r
-    m->new_allocated = 0;\r
-    SortPointers(m->pointers + PERM_ALLOCATED_OFFSET, m->perm_allocated);\r
-  }\r
-}\r
-\r
-void* BrotliAllocate(MemoryManager* m, size_t n) {\r
-  void* result = m->alloc_func(m->opaque, n);\r
-  if (!result) {\r
-    m->is_oom = BROTLI_TRUE;\r
-    return NULL;\r
-  }\r
-  if (m->new_allocated == MAX_NEW_ALLOCATED) CollectGarbagePointers(m);\r
-  m->pointers[NEW_ALLOCATED_OFFSET + (m->new_allocated++)] = result;\r
-  return result;\r
-}\r
-\r
-void BrotliFree(MemoryManager* m, void* p) {\r
-  if (!p) return;\r
-  m->free_func(m->opaque, p);\r
-  if (m->new_freed == MAX_NEW_FREED) CollectGarbagePointers(m);\r
-  m->pointers[NEW_FREED_OFFSET + (m->new_freed++)] = p;\r
-}\r
-\r
-void BrotliWipeOutMemoryManager(MemoryManager* m) {\r
-  size_t i;\r
-  CollectGarbagePointers(m);\r
-  /* Now all unfreed pointers are in perm-allocated list. */\r
-  for (i = 0; i < m->perm_allocated; ++i) {\r
-    m->free_func(m->opaque, m->pointers[PERM_ALLOCATED_OFFSET + i]);\r
-  }\r
-  m->perm_allocated = 0;\r
-}\r
-\r
-#endif  /* BROTLI_ENCODER_EXIT_ON_OOM */\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/memory.h b/BaseTools/Source/C/BrotliCompress/enc/memory.h
deleted file mode 100644 (file)
index 2bd4d0c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Macros for memory management. */\r
-\r
-#ifndef BROTLI_ENC_MEMORY_H_\r
-#define BROTLI_ENC_MEMORY_H_\r
-\r
-#include <string.h>  /* memcpy */\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#if !defined(BROTLI_ENCODER_CLEANUP_ON_OOM) && \\r
-    !defined(BROTLI_ENCODER_EXIT_ON_OOM)\r
-#define BROTLI_ENCODER_EXIT_ON_OOM\r
-#endif\r
-\r
-typedef struct MemoryManager {\r
-  brotli_alloc_func alloc_func;\r
-  brotli_free_func free_func;\r
-  void* opaque;\r
-#if !defined(BROTLI_ENCODER_EXIT_ON_OOM)\r
-  BROTLI_BOOL is_oom;\r
-  size_t perm_allocated;\r
-  size_t new_allocated;\r
-  size_t new_freed;\r
-  void* pointers[256];\r
-#endif  /* BROTLI_ENCODER_EXIT_ON_OOM */\r
-} MemoryManager;\r
-\r
-BROTLI_INTERNAL void BrotliInitMemoryManager(\r
-    MemoryManager* m, brotli_alloc_func alloc_func, brotli_free_func free_func,\r
-    void* opaque);\r
-\r
-BROTLI_INTERNAL void* BrotliAllocate(MemoryManager* m, size_t n);\r
-#define BROTLI_ALLOC(M, T, N)                               \\r
-  ((N) > 0 ? ((T*)BrotliAllocate((M), (N) * sizeof(T))) : NULL)\r
-\r
-BROTLI_INTERNAL void BrotliFree(MemoryManager* m, void* p);\r
-#define BROTLI_FREE(M, P) { \\r
-  BrotliFree((M), (P));     \\r
-  P = NULL;                 \\r
-}\r
-\r
-#if defined(BROTLI_ENCODER_EXIT_ON_OOM)\r
-#define BROTLI_IS_OOM(M) (!!0)\r
-#else  /* BROTLI_ENCODER_EXIT_ON_OOM */\r
-#define BROTLI_IS_OOM(M) (!!(M)->is_oom)\r
-#endif  /* BROTLI_ENCODER_EXIT_ON_OOM */\r
-\r
-BROTLI_INTERNAL void BrotliWipeOutMemoryManager(MemoryManager* m);\r
-\r
-/*\r
-Dynamically grows array capacity to at least the requested size\r
-M: MemoryManager\r
-T: data type\r
-A: array\r
-C: capacity\r
-R: requested size\r
-*/\r
-#define BROTLI_ENSURE_CAPACITY(M, T, A, C, R) {  \\r
-  if (C < (R)) {                                 \\r
-    size_t _new_size = (C == 0) ? (R) : C;       \\r
-    T* new_array;                                \\r
-    while (_new_size < (R)) _new_size *= 2;      \\r
-    new_array = BROTLI_ALLOC((M), T, _new_size); \\r
-    if (!BROTLI_IS_OOM(M) && C != 0)             \\r
-      memcpy(new_array, A, C * sizeof(T));       \\r
-    BROTLI_FREE((M), A);                         \\r
-    A = new_array;                               \\r
-    C = _new_size;                               \\r
-  }                                              \\r
-}\r
-\r
-/*\r
-Appends value and dynamically grows array capacity when needed\r
-M: MemoryManager\r
-T: data type\r
-A: array\r
-C: array capacity\r
-S: array size\r
-V: value to append\r
-*/\r
-#define BROTLI_ENSURE_CAPACITY_APPEND(M, T, A, C, S, V) { \\r
-  (S)++;                                                  \\r
-  BROTLI_ENSURE_CAPACITY(M, T, A, C, S);                  \\r
-  A[(S) - 1] = (V);                                       \\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_MEMORY_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/metablock.c b/BaseTools/Source/C/BrotliCompress/enc/metablock.c
deleted file mode 100644 (file)
index 2fc3e28..0000000
+++ /dev/null
@@ -1,667 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Algorithms for distributing the literals and commands of a metablock between\r
-   block types and contexts. */\r
-\r
-#include "./metablock.h"\r
-\r
-#include "../common/constants.h"\r
-#include "../common/context.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./bit_cost.h"\r
-#include "./block_splitter.h"\r
-#include "./cluster.h"\r
-#include "./entropy_encode.h"\r
-#include "./histogram.h"\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-void BrotliInitDistanceParams(BrotliEncoderParams* params,\r
-    uint32_t npostfix, uint32_t ndirect) {\r
-  BrotliDistanceParams* dist_params = &params->dist;\r
-  uint32_t alphabet_size, max_distance;\r
-\r
-  dist_params->distance_postfix_bits = npostfix;\r
-  dist_params->num_direct_distance_codes = ndirect;\r
-\r
-  alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(\r
-      npostfix, ndirect, BROTLI_MAX_DISTANCE_BITS);\r
-  max_distance = ndirect + (1U << (BROTLI_MAX_DISTANCE_BITS + npostfix + 2)) -\r
-      (1U << (npostfix + 2));\r
-\r
-  if (params->large_window) {\r
-    static const uint32_t bound[BROTLI_MAX_NPOSTFIX + 1] = {0, 4, 12, 28};\r
-    uint32_t postfix = 1U << npostfix;\r
-    alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(\r
-        npostfix, ndirect, BROTLI_LARGE_MAX_DISTANCE_BITS);\r
-    /* The maximum distance is set so that no distance symbol used can encode\r
-       a distance larger than BROTLI_MAX_ALLOWED_DISTANCE with all\r
-       its extra bits set. */\r
-    if (ndirect < bound[npostfix]) {\r
-      max_distance = BROTLI_MAX_ALLOWED_DISTANCE - (bound[npostfix] - ndirect);\r
-    } else if (ndirect >= bound[npostfix] + postfix) {\r
-      max_distance = (3U << 29) - 4 + (ndirect - bound[npostfix]);\r
-    } else {\r
-      max_distance = BROTLI_MAX_ALLOWED_DISTANCE;\r
-    }\r
-  }\r
-\r
-  dist_params->alphabet_size = alphabet_size;\r
-  dist_params->max_distance = max_distance;\r
-}\r
-\r
-static void RecomputeDistancePrefixes(Command* cmds,\r
-                                      size_t num_commands,\r
-                                      const BrotliDistanceParams* orig_params,\r
-                                      const BrotliDistanceParams* new_params) {\r
-  size_t i;\r
-\r
-  if (orig_params->distance_postfix_bits == new_params->distance_postfix_bits &&\r
-      orig_params->num_direct_distance_codes ==\r
-      new_params->num_direct_distance_codes) {\r
-    return;\r
-  }\r
-\r
-  for (i = 0; i < num_commands; ++i) {\r
-    Command* cmd = &cmds[i];\r
-    if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) {\r
-      PrefixEncodeCopyDistance(CommandRestoreDistanceCode(cmd, orig_params),\r
-                               new_params->num_direct_distance_codes,\r
-                               new_params->distance_postfix_bits,\r
-                               &cmd->dist_prefix_,\r
-                               &cmd->dist_extra_);\r
-    }\r
-  }\r
-}\r
-\r
-static BROTLI_BOOL ComputeDistanceCost(const Command* cmds,\r
-                                       size_t num_commands,\r
-                                       const BrotliDistanceParams* orig_params,\r
-                                       const BrotliDistanceParams* new_params,\r
-                                       double* cost) {\r
-  size_t i;\r
-  BROTLI_BOOL equal_params = BROTLI_FALSE;\r
-  uint16_t dist_prefix;\r
-  uint32_t dist_extra;\r
-  double extra_bits = 0.0;\r
-  HistogramDistance histo;\r
-  HistogramClearDistance(&histo);\r
-\r
-  if (orig_params->distance_postfix_bits == new_params->distance_postfix_bits &&\r
-      orig_params->num_direct_distance_codes ==\r
-      new_params->num_direct_distance_codes) {\r
-    equal_params = BROTLI_TRUE;\r
-  }\r
-\r
-  for (i = 0; i < num_commands; i++) {\r
-    const Command* cmd = &cmds[i];\r
-    if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) {\r
-      if (equal_params) {\r
-        dist_prefix = cmd->dist_prefix_;\r
-      } else {\r
-        uint32_t distance = CommandRestoreDistanceCode(cmd, orig_params);\r
-        if (distance > new_params->max_distance) {\r
-          return BROTLI_FALSE;\r
-        }\r
-        PrefixEncodeCopyDistance(distance,\r
-                                 new_params->num_direct_distance_codes,\r
-                                 new_params->distance_postfix_bits,\r
-                                 &dist_prefix,\r
-                                 &dist_extra);\r
-      }\r
-      HistogramAddDistance(&histo, dist_prefix & 0x3FF);\r
-      extra_bits += dist_prefix >> 10;\r
-    }\r
-  }\r
-\r
-  *cost = BrotliPopulationCostDistance(&histo) + extra_bits;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-void BrotliBuildMetaBlock(MemoryManager* m,\r
-                          const uint8_t* ringbuffer,\r
-                          const size_t pos,\r
-                          const size_t mask,\r
-                          BrotliEncoderParams* params,\r
-                          uint8_t prev_byte,\r
-                          uint8_t prev_byte2,\r
-                          Command* cmds,\r
-                          size_t num_commands,\r
-                          ContextType literal_context_mode,\r
-                          MetaBlockSplit* mb) {\r
-  /* Histogram ids need to fit in one byte. */\r
-  static const size_t kMaxNumberOfHistograms = 256;\r
-  HistogramDistance* distance_histograms;\r
-  HistogramLiteral* literal_histograms;\r
-  ContextType* literal_context_modes = NULL;\r
-  size_t literal_histograms_size;\r
-  size_t distance_histograms_size;\r
-  size_t i;\r
-  size_t literal_context_multiplier = 1;\r
-  uint32_t npostfix;\r
-  uint32_t ndirect_msb = 0;\r
-  BROTLI_BOOL check_orig = BROTLI_TRUE;\r
-  double best_dist_cost = 1e99;\r
-  BrotliEncoderParams orig_params = *params;\r
-  BrotliEncoderParams new_params = *params;\r
-\r
-  for (npostfix = 0; npostfix <= BROTLI_MAX_NPOSTFIX; npostfix++) {\r
-    for (; ndirect_msb < 16; ndirect_msb++) {\r
-      uint32_t ndirect = ndirect_msb << npostfix;\r
-      BROTLI_BOOL skip;\r
-      double dist_cost;\r
-      BrotliInitDistanceParams(&new_params, npostfix, ndirect);\r
-      if (npostfix == orig_params.dist.distance_postfix_bits &&\r
-          ndirect == orig_params.dist.num_direct_distance_codes) {\r
-        check_orig = BROTLI_FALSE;\r
-      }\r
-      skip = !ComputeDistanceCost(\r
-          cmds, num_commands,\r
-          &orig_params.dist, &new_params.dist, &dist_cost);\r
-      if (skip || (dist_cost > best_dist_cost)) {\r
-        break;\r
-      }\r
-      best_dist_cost = dist_cost;\r
-      params->dist = new_params.dist;\r
-    }\r
-    if (ndirect_msb > 0) ndirect_msb--;\r
-    ndirect_msb /= 2;\r
-  }\r
-  if (check_orig) {\r
-    double dist_cost;\r
-    ComputeDistanceCost(cmds, num_commands,\r
-                        &orig_params.dist, &orig_params.dist, &dist_cost);\r
-    if (dist_cost < best_dist_cost) {\r
-      /* NB: currently unused; uncomment when more param tuning is added. */\r
-      /* best_dist_cost = dist_cost; */\r
-      params->dist = orig_params.dist;\r
-    }\r
-  }\r
-  RecomputeDistancePrefixes(cmds, num_commands,\r
-                            &orig_params.dist, &params->dist);\r
-\r
-  BrotliSplitBlock(m, cmds, num_commands,\r
-                   ringbuffer, pos, mask, params,\r
-                   &mb->literal_split,\r
-                   &mb->command_split,\r
-                   &mb->distance_split);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  if (!params->disable_literal_context_modeling) {\r
-    literal_context_multiplier = 1 << BROTLI_LITERAL_CONTEXT_BITS;\r
-    literal_context_modes =\r
-        BROTLI_ALLOC(m, ContextType, mb->literal_split.num_types);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    for (i = 0; i < mb->literal_split.num_types; ++i) {\r
-      literal_context_modes[i] = literal_context_mode;\r
-    }\r
-  }\r
-\r
-  literal_histograms_size =\r
-      mb->literal_split.num_types * literal_context_multiplier;\r
-  literal_histograms =\r
-      BROTLI_ALLOC(m, HistogramLiteral, literal_histograms_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  ClearHistogramsLiteral(literal_histograms, literal_histograms_size);\r
-\r
-  distance_histograms_size =\r
-      mb->distance_split.num_types << BROTLI_DISTANCE_CONTEXT_BITS;\r
-  distance_histograms =\r
-      BROTLI_ALLOC(m, HistogramDistance, distance_histograms_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  ClearHistogramsDistance(distance_histograms, distance_histograms_size);\r
-\r
-  BROTLI_DCHECK(mb->command_histograms == 0);\r
-  mb->command_histograms_size = mb->command_split.num_types;\r
-  mb->command_histograms =\r
-      BROTLI_ALLOC(m, HistogramCommand, mb->command_histograms_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  ClearHistogramsCommand(mb->command_histograms, mb->command_histograms_size);\r
-\r
-  BrotliBuildHistogramsWithContext(cmds, num_commands,\r
-      &mb->literal_split, &mb->command_split, &mb->distance_split,\r
-      ringbuffer, pos, mask, prev_byte, prev_byte2, literal_context_modes,\r
-      literal_histograms, mb->command_histograms, distance_histograms);\r
-  BROTLI_FREE(m, literal_context_modes);\r
-\r
-  BROTLI_DCHECK(mb->literal_context_map == 0);\r
-  mb->literal_context_map_size =\r
-      mb->literal_split.num_types << BROTLI_LITERAL_CONTEXT_BITS;\r
-  mb->literal_context_map =\r
-      BROTLI_ALLOC(m, uint32_t, mb->literal_context_map_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  BROTLI_DCHECK(mb->literal_histograms == 0);\r
-  mb->literal_histograms_size = mb->literal_context_map_size;\r
-  mb->literal_histograms =\r
-      BROTLI_ALLOC(m, HistogramLiteral, mb->literal_histograms_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  BrotliClusterHistogramsLiteral(m, literal_histograms, literal_histograms_size,\r
-      kMaxNumberOfHistograms, mb->literal_histograms,\r
-      &mb->literal_histograms_size, mb->literal_context_map);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BROTLI_FREE(m, literal_histograms);\r
-\r
-  if (params->disable_literal_context_modeling) {\r
-    /* Distribute assignment to all contexts. */\r
-    for (i = mb->literal_split.num_types; i != 0;) {\r
-      size_t j = 0;\r
-      i--;\r
-      for (; j < (1 << BROTLI_LITERAL_CONTEXT_BITS); j++) {\r
-        mb->literal_context_map[(i << BROTLI_LITERAL_CONTEXT_BITS) + j] =\r
-            mb->literal_context_map[i];\r
-      }\r
-    }\r
-  }\r
-\r
-  BROTLI_DCHECK(mb->distance_context_map == 0);\r
-  mb->distance_context_map_size =\r
-      mb->distance_split.num_types << BROTLI_DISTANCE_CONTEXT_BITS;\r
-  mb->distance_context_map =\r
-      BROTLI_ALLOC(m, uint32_t, mb->distance_context_map_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  BROTLI_DCHECK(mb->distance_histograms == 0);\r
-  mb->distance_histograms_size = mb->distance_context_map_size;\r
-  mb->distance_histograms =\r
-      BROTLI_ALLOC(m, HistogramDistance, mb->distance_histograms_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  BrotliClusterHistogramsDistance(m, distance_histograms,\r
-                                  mb->distance_context_map_size,\r
-                                  kMaxNumberOfHistograms,\r
-                                  mb->distance_histograms,\r
-                                  &mb->distance_histograms_size,\r
-                                  mb->distance_context_map);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BROTLI_FREE(m, distance_histograms);\r
-}\r
-\r
-#define FN(X) X ## Literal\r
-#include "./metablock_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Command\r
-#include "./metablock_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define FN(X) X ## Distance\r
-#include "./metablock_inc.h"  /* NOLINT(build/include) */\r
-#undef FN\r
-\r
-#define BROTLI_MAX_STATIC_CONTEXTS 13\r
-\r
-/* Greedy block splitter for one block category (literal, command or distance).\r
-   Gathers histograms for all context buckets. */\r
-typedef struct ContextBlockSplitter {\r
-  /* Alphabet size of particular block category. */\r
-  size_t alphabet_size_;\r
-  size_t num_contexts_;\r
-  size_t max_block_types_;\r
-  /* We collect at least this many symbols for each block. */\r
-  size_t min_block_size_;\r
-  /* We merge histograms A and B if\r
-       entropy(A+B) < entropy(A) + entropy(B) + split_threshold_,\r
-     where A is the current histogram and B is the histogram of the last or the\r
-     second last block type. */\r
-  double split_threshold_;\r
-\r
-  size_t num_blocks_;\r
-  BlockSplit* split_;  /* not owned */\r
-  HistogramLiteral* histograms_;  /* not owned */\r
-  size_t* histograms_size_;  /* not owned */\r
-\r
-  /* The number of symbols that we want to collect before deciding on whether\r
-     or not to merge the block with a previous one or emit a new block. */\r
-  size_t target_block_size_;\r
-  /* The number of symbols in the current histogram. */\r
-  size_t block_size_;\r
-  /* Offset of the current histogram. */\r
-  size_t curr_histogram_ix_;\r
-  /* Offset of the histograms of the previous two block types. */\r
-  size_t last_histogram_ix_[2];\r
-  /* Entropy of the previous two block types. */\r
-  double last_entropy_[2 * BROTLI_MAX_STATIC_CONTEXTS];\r
-  /* The number of times we merged the current block with the last one. */\r
-  size_t merge_last_count_;\r
-} ContextBlockSplitter;\r
-\r
-static void InitContextBlockSplitter(\r
-    MemoryManager* m, ContextBlockSplitter* self, size_t alphabet_size,\r
-    size_t num_contexts, size_t min_block_size, double split_threshold,\r
-    size_t num_symbols, BlockSplit* split, HistogramLiteral** histograms,\r
-    size_t* histograms_size) {\r
-  size_t max_num_blocks = num_symbols / min_block_size + 1;\r
-  size_t max_num_types;\r
-  BROTLI_DCHECK(num_contexts <= BROTLI_MAX_STATIC_CONTEXTS);\r
-\r
-  self->alphabet_size_ = alphabet_size;\r
-  self->num_contexts_ = num_contexts;\r
-  self->max_block_types_ = BROTLI_MAX_NUMBER_OF_BLOCK_TYPES / num_contexts;\r
-  self->min_block_size_ = min_block_size;\r
-  self->split_threshold_ = split_threshold;\r
-  self->num_blocks_ = 0;\r
-  self->split_ = split;\r
-  self->histograms_size_ = histograms_size;\r
-  self->target_block_size_ = min_block_size;\r
-  self->block_size_ = 0;\r
-  self->curr_histogram_ix_ = 0;\r
-  self->merge_last_count_ = 0;\r
-\r
-  /* We have to allocate one more histogram than the maximum number of block\r
-     types for the current histogram when the meta-block is too big. */\r
-  max_num_types =\r
-      BROTLI_MIN(size_t, max_num_blocks, self->max_block_types_ + 1);\r
-  BROTLI_ENSURE_CAPACITY(m, uint8_t,\r
-      split->types, split->types_alloc_size, max_num_blocks);\r
-  BROTLI_ENSURE_CAPACITY(m, uint32_t,\r
-      split->lengths, split->lengths_alloc_size, max_num_blocks);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  split->num_blocks = max_num_blocks;\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  BROTLI_DCHECK(*histograms == 0);\r
-  *histograms_size = max_num_types * num_contexts;\r
-  *histograms = BROTLI_ALLOC(m, HistogramLiteral, *histograms_size);\r
-  self->histograms_ = *histograms;\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  /* Clear only current histogram. */\r
-  ClearHistogramsLiteral(&self->histograms_[0], num_contexts);\r
-  self->last_histogram_ix_[0] = self->last_histogram_ix_[1] = 0;\r
-}\r
-\r
-/* Does either of three things:\r
-     (1) emits the current block with a new block type;\r
-     (2) emits the current block with the type of the second last block;\r
-     (3) merges the current block with the last block. */\r
-static void ContextBlockSplitterFinishBlock(\r
-    ContextBlockSplitter* self, MemoryManager* m, BROTLI_BOOL is_final) {\r
-  BlockSplit* split = self->split_;\r
-  const size_t num_contexts = self->num_contexts_;\r
-  double* last_entropy = self->last_entropy_;\r
-  HistogramLiteral* histograms = self->histograms_;\r
-\r
-  if (self->block_size_ < self->min_block_size_) {\r
-    self->block_size_ = self->min_block_size_;\r
-  }\r
-  if (self->num_blocks_ == 0) {\r
-    size_t i;\r
-    /* Create first block. */\r
-    split->lengths[0] = (uint32_t)self->block_size_;\r
-    split->types[0] = 0;\r
-\r
-    for (i = 0; i < num_contexts; ++i) {\r
-      last_entropy[i] =\r
-          BitsEntropy(histograms[i].data_, self->alphabet_size_);\r
-      last_entropy[num_contexts + i] = last_entropy[i];\r
-    }\r
-    ++self->num_blocks_;\r
-    ++split->num_types;\r
-    self->curr_histogram_ix_ += num_contexts;\r
-    if (self->curr_histogram_ix_ < *self->histograms_size_) {\r
-      ClearHistogramsLiteral(\r
-          &self->histograms_[self->curr_histogram_ix_], self->num_contexts_);\r
-    }\r
-    self->block_size_ = 0;\r
-  } else if (self->block_size_ > 0) {\r
-    /* Try merging the set of histograms for the current block type with the\r
-       respective set of histograms for the last and second last block types.\r
-       Decide over the split based on the total reduction of entropy across\r
-       all contexts. */\r
-    double entropy[BROTLI_MAX_STATIC_CONTEXTS];\r
-    HistogramLiteral* combined_histo =\r
-        BROTLI_ALLOC(m, HistogramLiteral, 2 * num_contexts);\r
-    double combined_entropy[2 * BROTLI_MAX_STATIC_CONTEXTS];\r
-    double diff[2] = { 0.0 };\r
-    size_t i;\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    for (i = 0; i < num_contexts; ++i) {\r
-      size_t curr_histo_ix = self->curr_histogram_ix_ + i;\r
-      size_t j;\r
-      entropy[i] = BitsEntropy(histograms[curr_histo_ix].data_,\r
-                               self->alphabet_size_);\r
-      for (j = 0; j < 2; ++j) {\r
-        size_t jx = j * num_contexts + i;\r
-        size_t last_histogram_ix = self->last_histogram_ix_[j] + i;\r
-        combined_histo[jx] = histograms[curr_histo_ix];\r
-        HistogramAddHistogramLiteral(&combined_histo[jx],\r
-            &histograms[last_histogram_ix]);\r
-        combined_entropy[jx] = BitsEntropy(\r
-            &combined_histo[jx].data_[0], self->alphabet_size_);\r
-        diff[j] += combined_entropy[jx] - entropy[i] - last_entropy[jx];\r
-      }\r
-    }\r
-\r
-    if (split->num_types < self->max_block_types_ &&\r
-        diff[0] > self->split_threshold_ &&\r
-        diff[1] > self->split_threshold_) {\r
-      /* Create new block. */\r
-      split->lengths[self->num_blocks_] = (uint32_t)self->block_size_;\r
-      split->types[self->num_blocks_] = (uint8_t)split->num_types;\r
-      self->last_histogram_ix_[1] = self->last_histogram_ix_[0];\r
-      self->last_histogram_ix_[0] = split->num_types * num_contexts;\r
-      for (i = 0; i < num_contexts; ++i) {\r
-        last_entropy[num_contexts + i] = last_entropy[i];\r
-        last_entropy[i] = entropy[i];\r
-      }\r
-      ++self->num_blocks_;\r
-      ++split->num_types;\r
-      self->curr_histogram_ix_ += num_contexts;\r
-      if (self->curr_histogram_ix_ < *self->histograms_size_) {\r
-        ClearHistogramsLiteral(\r
-            &self->histograms_[self->curr_histogram_ix_], self->num_contexts_);\r
-      }\r
-      self->block_size_ = 0;\r
-      self->merge_last_count_ = 0;\r
-      self->target_block_size_ = self->min_block_size_;\r
-    } else if (diff[1] < diff[0] - 20.0) {\r
-      /* Combine this block with second last block. */\r
-      split->lengths[self->num_blocks_] = (uint32_t)self->block_size_;\r
-      split->types[self->num_blocks_] = split->types[self->num_blocks_ - 2];\r
-      BROTLI_SWAP(size_t, self->last_histogram_ix_, 0, 1);\r
-      for (i = 0; i < num_contexts; ++i) {\r
-        histograms[self->last_histogram_ix_[0] + i] =\r
-            combined_histo[num_contexts + i];\r
-        last_entropy[num_contexts + i] = last_entropy[i];\r
-        last_entropy[i] = combined_entropy[num_contexts + i];\r
-        HistogramClearLiteral(&histograms[self->curr_histogram_ix_ + i]);\r
-      }\r
-      ++self->num_blocks_;\r
-      self->block_size_ = 0;\r
-      self->merge_last_count_ = 0;\r
-      self->target_block_size_ = self->min_block_size_;\r
-    } else {\r
-      /* Combine this block with last block. */\r
-      split->lengths[self->num_blocks_ - 1] += (uint32_t)self->block_size_;\r
-      for (i = 0; i < num_contexts; ++i) {\r
-        histograms[self->last_histogram_ix_[0] + i] = combined_histo[i];\r
-        last_entropy[i] = combined_entropy[i];\r
-        if (split->num_types == 1) {\r
-          last_entropy[num_contexts + i] = last_entropy[i];\r
-        }\r
-        HistogramClearLiteral(&histograms[self->curr_histogram_ix_ + i]);\r
-      }\r
-      self->block_size_ = 0;\r
-      if (++self->merge_last_count_ > 1) {\r
-        self->target_block_size_ += self->min_block_size_;\r
-      }\r
-    }\r
-    BROTLI_FREE(m, combined_histo);\r
-  }\r
-  if (is_final) {\r
-    *self->histograms_size_ = split->num_types * num_contexts;\r
-    split->num_blocks = self->num_blocks_;\r
-  }\r
-}\r
-\r
-/* Adds the next symbol to the current block type and context. When the\r
-   current block reaches the target size, decides on merging the block. */\r
-static void ContextBlockSplitterAddSymbol(\r
-    ContextBlockSplitter* self, MemoryManager* m,\r
-    size_t symbol, size_t context) {\r
-  HistogramAddLiteral(&self->histograms_[self->curr_histogram_ix_ + context],\r
-      symbol);\r
-  ++self->block_size_;\r
-  if (self->block_size_ == self->target_block_size_) {\r
-    ContextBlockSplitterFinishBlock(self, m, /* is_final = */ BROTLI_FALSE);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-  }\r
-}\r
-\r
-static void MapStaticContexts(MemoryManager* m,\r
-                              size_t num_contexts,\r
-                              const uint32_t* static_context_map,\r
-                              MetaBlockSplit* mb) {\r
-  size_t i;\r
-  BROTLI_DCHECK(mb->literal_context_map == 0);\r
-  mb->literal_context_map_size =\r
-      mb->literal_split.num_types << BROTLI_LITERAL_CONTEXT_BITS;\r
-  mb->literal_context_map =\r
-      BROTLI_ALLOC(m, uint32_t, mb->literal_context_map_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  for (i = 0; i < mb->literal_split.num_types; ++i) {\r
-    uint32_t offset = (uint32_t)(i * num_contexts);\r
-    size_t j;\r
-    for (j = 0; j < (1u << BROTLI_LITERAL_CONTEXT_BITS); ++j) {\r
-      mb->literal_context_map[(i << BROTLI_LITERAL_CONTEXT_BITS) + j] =\r
-          offset + static_context_map[j];\r
-    }\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void BrotliBuildMetaBlockGreedyInternal(\r
-    MemoryManager* m, const uint8_t* ringbuffer, size_t pos, size_t mask,\r
-    uint8_t prev_byte, uint8_t prev_byte2, ContextLut literal_context_lut,\r
-    const size_t num_contexts, const uint32_t* static_context_map,\r
-    const Command* commands, size_t n_commands, MetaBlockSplit* mb) {\r
-  union {\r
-    BlockSplitterLiteral plain;\r
-    ContextBlockSplitter ctx;\r
-  } lit_blocks;\r
-  BlockSplitterCommand cmd_blocks;\r
-  BlockSplitterDistance dist_blocks;\r
-  size_t num_literals = 0;\r
-  size_t i;\r
-  for (i = 0; i < n_commands; ++i) {\r
-    num_literals += commands[i].insert_len_;\r
-  }\r
-\r
-  if (num_contexts == 1) {\r
-    InitBlockSplitterLiteral(m, &lit_blocks.plain, 256, 512, 400.0,\r
-        num_literals, &mb->literal_split, &mb->literal_histograms,\r
-        &mb->literal_histograms_size);\r
-  } else {\r
-    InitContextBlockSplitter(m, &lit_blocks.ctx, 256, num_contexts, 512, 400.0,\r
-        num_literals, &mb->literal_split, &mb->literal_histograms,\r
-        &mb->literal_histograms_size);\r
-  }\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  InitBlockSplitterCommand(m, &cmd_blocks, BROTLI_NUM_COMMAND_SYMBOLS, 1024,\r
-      500.0, n_commands, &mb->command_split, &mb->command_histograms,\r
-      &mb->command_histograms_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  InitBlockSplitterDistance(m, &dist_blocks, 64, 512, 100.0, n_commands,\r
-      &mb->distance_split, &mb->distance_histograms,\r
-      &mb->distance_histograms_size);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-\r
-  for (i = 0; i < n_commands; ++i) {\r
-    const Command cmd = commands[i];\r
-    size_t j;\r
-    BlockSplitterAddSymbolCommand(&cmd_blocks, cmd.cmd_prefix_);\r
-    for (j = cmd.insert_len_; j != 0; --j) {\r
-      uint8_t literal = ringbuffer[pos & mask];\r
-      if (num_contexts == 1) {\r
-        BlockSplitterAddSymbolLiteral(&lit_blocks.plain, literal);\r
-      } else {\r
-        size_t context =\r
-            BROTLI_CONTEXT(prev_byte, prev_byte2, literal_context_lut);\r
-        ContextBlockSplitterAddSymbol(&lit_blocks.ctx, m, literal,\r
-                                      static_context_map[context]);\r
-        if (BROTLI_IS_OOM(m)) return;\r
-      }\r
-      prev_byte2 = prev_byte;\r
-      prev_byte = literal;\r
-      ++pos;\r
-    }\r
-    pos += CommandCopyLen(&cmd);\r
-    if (CommandCopyLen(&cmd)) {\r
-      prev_byte2 = ringbuffer[(pos - 2) & mask];\r
-      prev_byte = ringbuffer[(pos - 1) & mask];\r
-      if (cmd.cmd_prefix_ >= 128) {\r
-        BlockSplitterAddSymbolDistance(&dist_blocks, cmd.dist_prefix_ & 0x3FF);\r
-      }\r
-    }\r
-  }\r
-\r
-  if (num_contexts == 1) {\r
-    BlockSplitterFinishBlockLiteral(\r
-        &lit_blocks.plain, /* is_final = */ BROTLI_TRUE);\r
-  } else {\r
-    ContextBlockSplitterFinishBlock(\r
-        &lit_blocks.ctx, m, /* is_final = */ BROTLI_TRUE);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-  }\r
-  BlockSplitterFinishBlockCommand(&cmd_blocks, /* is_final = */ BROTLI_TRUE);\r
-  BlockSplitterFinishBlockDistance(&dist_blocks, /* is_final = */ BROTLI_TRUE);\r
-\r
-  if (num_contexts > 1) {\r
-    MapStaticContexts(m, num_contexts, static_context_map, mb);\r
-  }\r
-}\r
-\r
-void BrotliBuildMetaBlockGreedy(MemoryManager* m,\r
-                                const uint8_t* ringbuffer,\r
-                                size_t pos,\r
-                                size_t mask,\r
-                                uint8_t prev_byte,\r
-                                uint8_t prev_byte2,\r
-                                ContextLut literal_context_lut,\r
-                                size_t num_contexts,\r
-                                const uint32_t* static_context_map,\r
-                                const Command* commands,\r
-                                size_t n_commands,\r
-                                MetaBlockSplit* mb) {\r
-  if (num_contexts == 1) {\r
-    BrotliBuildMetaBlockGreedyInternal(m, ringbuffer, pos, mask, prev_byte,\r
-        prev_byte2, literal_context_lut, 1, NULL, commands, n_commands, mb);\r
-  } else {\r
-    BrotliBuildMetaBlockGreedyInternal(m, ringbuffer, pos, mask, prev_byte,\r
-        prev_byte2, literal_context_lut, num_contexts, static_context_map,\r
-        commands, n_commands, mb);\r
-  }\r
-}\r
-\r
-void BrotliOptimizeHistograms(uint32_t num_distance_codes,\r
-                              MetaBlockSplit* mb) {\r
-  uint8_t good_for_rle[BROTLI_NUM_COMMAND_SYMBOLS];\r
-  size_t i;\r
-  for (i = 0; i < mb->literal_histograms_size; ++i) {\r
-    BrotliOptimizeHuffmanCountsForRle(256, mb->literal_histograms[i].data_,\r
-                                      good_for_rle);\r
-  }\r
-  for (i = 0; i < mb->command_histograms_size; ++i) {\r
-    BrotliOptimizeHuffmanCountsForRle(BROTLI_NUM_COMMAND_SYMBOLS,\r
-                                      mb->command_histograms[i].data_,\r
-                                      good_for_rle);\r
-  }\r
-  for (i = 0; i < mb->distance_histograms_size; ++i) {\r
-    BrotliOptimizeHuffmanCountsForRle(num_distance_codes,\r
-                                      mb->distance_histograms[i].data_,\r
-                                      good_for_rle);\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/metablock.h b/BaseTools/Source/C/BrotliCompress/enc/metablock.h
deleted file mode 100644 (file)
index e35c985..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Algorithms for distributing the literals and commands of a metablock between\r
-   block types and contexts. */\r
-\r
-#ifndef BROTLI_ENC_METABLOCK_H_\r
-#define BROTLI_ENC_METABLOCK_H_\r
-\r
-#include "../common/context.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./block_splitter.h"\r
-#include "./command.h"\r
-#include "./histogram.h"\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-typedef struct MetaBlockSplit {\r
-  BlockSplit literal_split;\r
-  BlockSplit command_split;\r
-  BlockSplit distance_split;\r
-  uint32_t* literal_context_map;\r
-  size_t literal_context_map_size;\r
-  uint32_t* distance_context_map;\r
-  size_t distance_context_map_size;\r
-  HistogramLiteral* literal_histograms;\r
-  size_t literal_histograms_size;\r
-  HistogramCommand* command_histograms;\r
-  size_t command_histograms_size;\r
-  HistogramDistance* distance_histograms;\r
-  size_t distance_histograms_size;\r
-} MetaBlockSplit;\r
-\r
-static BROTLI_INLINE void InitMetaBlockSplit(MetaBlockSplit* mb) {\r
-  BrotliInitBlockSplit(&mb->literal_split);\r
-  BrotliInitBlockSplit(&mb->command_split);\r
-  BrotliInitBlockSplit(&mb->distance_split);\r
-  mb->literal_context_map = 0;\r
-  mb->literal_context_map_size = 0;\r
-  mb->distance_context_map = 0;\r
-  mb->distance_context_map_size = 0;\r
-  mb->literal_histograms = 0;\r
-  mb->literal_histograms_size = 0;\r
-  mb->command_histograms = 0;\r
-  mb->command_histograms_size = 0;\r
-  mb->distance_histograms = 0;\r
-  mb->distance_histograms_size = 0;\r
-}\r
-\r
-static BROTLI_INLINE void DestroyMetaBlockSplit(\r
-    MemoryManager* m, MetaBlockSplit* mb) {\r
-  BrotliDestroyBlockSplit(m, &mb->literal_split);\r
-  BrotliDestroyBlockSplit(m, &mb->command_split);\r
-  BrotliDestroyBlockSplit(m, &mb->distance_split);\r
-  BROTLI_FREE(m, mb->literal_context_map);\r
-  BROTLI_FREE(m, mb->distance_context_map);\r
-  BROTLI_FREE(m, mb->literal_histograms);\r
-  BROTLI_FREE(m, mb->command_histograms);\r
-  BROTLI_FREE(m, mb->distance_histograms);\r
-}\r
-\r
-/* Uses the slow shortest-path block splitter and does context clustering.\r
-   The distance parameters are dynamically selected based on the commands\r
-   which get recomputed under the new distance parameters. The new distance\r
-   parameters are stored into *params. */\r
-BROTLI_INTERNAL void BrotliBuildMetaBlock(MemoryManager* m,\r
-                                          const uint8_t* ringbuffer,\r
-                                          const size_t pos,\r
-                                          const size_t mask,\r
-                                          BrotliEncoderParams* params,\r
-                                          uint8_t prev_byte,\r
-                                          uint8_t prev_byte2,\r
-                                          Command* cmds,\r
-                                          size_t num_commands,\r
-                                          ContextType literal_context_mode,\r
-                                          MetaBlockSplit* mb);\r
-\r
-/* Uses a fast greedy block splitter that tries to merge current block with the\r
-   last or the second last block and uses a static context clustering which\r
-   is the same for all block types. */\r
-BROTLI_INTERNAL void BrotliBuildMetaBlockGreedy(\r
-    MemoryManager* m, const uint8_t* ringbuffer, size_t pos, size_t mask,\r
-    uint8_t prev_byte, uint8_t prev_byte2, ContextLut literal_context_lut,\r
-    size_t num_contexts, const uint32_t* static_context_map,\r
-    const Command* commands, size_t n_commands, MetaBlockSplit* mb);\r
-\r
-BROTLI_INTERNAL void BrotliOptimizeHistograms(uint32_t num_distance_codes,\r
-                                              MetaBlockSplit* mb);\r
-\r
-BROTLI_INTERNAL void BrotliInitDistanceParams(BrotliEncoderParams* params,\r
-    uint32_t npostfix, uint32_t ndirect);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_METABLOCK_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/metablock_inc.h b/BaseTools/Source/C/BrotliCompress/enc/metablock_inc.h
deleted file mode 100644 (file)
index c6b1c50..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/* NOLINT(build/header_guard) */\r
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* template parameters: FN */\r
-\r
-#define HistogramType FN(Histogram)\r
-\r
-/* Greedy block splitter for one block category (literal, command or distance).\r
-*/\r
-typedef struct FN(BlockSplitter) {\r
-  /* Alphabet size of particular block category. */\r
-  size_t alphabet_size_;\r
-  /* We collect at least this many symbols for each block. */\r
-  size_t min_block_size_;\r
-  /* We merge histograms A and B if\r
-       entropy(A+B) < entropy(A) + entropy(B) + split_threshold_,\r
-     where A is the current histogram and B is the histogram of the last or the\r
-     second last block type. */\r
-  double split_threshold_;\r
-\r
-  size_t num_blocks_;\r
-  BlockSplit* split_;  /* not owned */\r
-  HistogramType* histograms_;  /* not owned */\r
-  size_t* histograms_size_;  /* not owned */\r
-\r
-  /* The number of symbols that we want to collect before deciding on whether\r
-     or not to merge the block with a previous one or emit a new block. */\r
-  size_t target_block_size_;\r
-  /* The number of symbols in the current histogram. */\r
-  size_t block_size_;\r
-  /* Offset of the current histogram. */\r
-  size_t curr_histogram_ix_;\r
-  /* Offset of the histograms of the previous two block types. */\r
-  size_t last_histogram_ix_[2];\r
-  /* Entropy of the previous two block types. */\r
-  double last_entropy_[2];\r
-  /* The number of times we merged the current block with the last one. */\r
-  size_t merge_last_count_;\r
-} FN(BlockSplitter);\r
-\r
-static void FN(InitBlockSplitter)(\r
-    MemoryManager* m, FN(BlockSplitter)* self, size_t alphabet_size,\r
-    size_t min_block_size, double split_threshold, size_t num_symbols,\r
-    BlockSplit* split, HistogramType** histograms, size_t* histograms_size) {\r
-  size_t max_num_blocks = num_symbols / min_block_size + 1;\r
-  /* We have to allocate one more histogram than the maximum number of block\r
-     types for the current histogram when the meta-block is too big. */\r
-  size_t max_num_types =\r
-      BROTLI_MIN(size_t, max_num_blocks, BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + 1);\r
-  self->alphabet_size_ = alphabet_size;\r
-  self->min_block_size_ = min_block_size;\r
-  self->split_threshold_ = split_threshold;\r
-  self->num_blocks_ = 0;\r
-  self->split_ = split;\r
-  self->histograms_size_ = histograms_size;\r
-  self->target_block_size_ = min_block_size;\r
-  self->block_size_ = 0;\r
-  self->curr_histogram_ix_ = 0;\r
-  self->merge_last_count_ = 0;\r
-  BROTLI_ENSURE_CAPACITY(m, uint8_t,\r
-      split->types, split->types_alloc_size, max_num_blocks);\r
-  BROTLI_ENSURE_CAPACITY(m, uint32_t,\r
-      split->lengths, split->lengths_alloc_size, max_num_blocks);\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  self->split_->num_blocks = max_num_blocks;\r
-  BROTLI_DCHECK(*histograms == 0);\r
-  *histograms_size = max_num_types;\r
-  *histograms = BROTLI_ALLOC(m, HistogramType, *histograms_size);\r
-  self->histograms_ = *histograms;\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  /* Clear only current histogram. */\r
-  FN(HistogramClear)(&self->histograms_[0]);\r
-  self->last_histogram_ix_[0] = self->last_histogram_ix_[1] = 0;\r
-}\r
-\r
-/* Does either of three things:\r
-     (1) emits the current block with a new block type;\r
-     (2) emits the current block with the type of the second last block;\r
-     (3) merges the current block with the last block. */\r
-static void FN(BlockSplitterFinishBlock)(\r
-    FN(BlockSplitter)* self, BROTLI_BOOL is_final) {\r
-  BlockSplit* split = self->split_;\r
-  double* last_entropy = self->last_entropy_;\r
-  HistogramType* histograms = self->histograms_;\r
-  self->block_size_ =\r
-      BROTLI_MAX(size_t, self->block_size_, self->min_block_size_);\r
-  if (self->num_blocks_ == 0) {\r
-    /* Create first block. */\r
-    split->lengths[0] = (uint32_t)self->block_size_;\r
-    split->types[0] = 0;\r
-    last_entropy[0] =\r
-        BitsEntropy(histograms[0].data_, self->alphabet_size_);\r
-    last_entropy[1] = last_entropy[0];\r
-    ++self->num_blocks_;\r
-    ++split->num_types;\r
-    ++self->curr_histogram_ix_;\r
-    if (self->curr_histogram_ix_ < *self->histograms_size_)\r
-      FN(HistogramClear)(&histograms[self->curr_histogram_ix_]);\r
-    self->block_size_ = 0;\r
-  } else if (self->block_size_ > 0) {\r
-    double entropy = BitsEntropy(histograms[self->curr_histogram_ix_].data_,\r
-                                 self->alphabet_size_);\r
-    HistogramType combined_histo[2];\r
-    double combined_entropy[2];\r
-    double diff[2];\r
-    size_t j;\r
-    for (j = 0; j < 2; ++j) {\r
-      size_t last_histogram_ix = self->last_histogram_ix_[j];\r
-      combined_histo[j] = histograms[self->curr_histogram_ix_];\r
-      FN(HistogramAddHistogram)(&combined_histo[j],\r
-          &histograms[last_histogram_ix]);\r
-      combined_entropy[j] = BitsEntropy(\r
-          &combined_histo[j].data_[0], self->alphabet_size_);\r
-      diff[j] = combined_entropy[j] - entropy - last_entropy[j];\r
-    }\r
-\r
-    if (split->num_types < BROTLI_MAX_NUMBER_OF_BLOCK_TYPES &&\r
-        diff[0] > self->split_threshold_ &&\r
-        diff[1] > self->split_threshold_) {\r
-      /* Create new block. */\r
-      split->lengths[self->num_blocks_] = (uint32_t)self->block_size_;\r
-      split->types[self->num_blocks_] = (uint8_t)split->num_types;\r
-      self->last_histogram_ix_[1] = self->last_histogram_ix_[0];\r
-      self->last_histogram_ix_[0] = (uint8_t)split->num_types;\r
-      last_entropy[1] = last_entropy[0];\r
-      last_entropy[0] = entropy;\r
-      ++self->num_blocks_;\r
-      ++split->num_types;\r
-      ++self->curr_histogram_ix_;\r
-      if (self->curr_histogram_ix_ < *self->histograms_size_)\r
-        FN(HistogramClear)(&histograms[self->curr_histogram_ix_]);\r
-      self->block_size_ = 0;\r
-      self->merge_last_count_ = 0;\r
-      self->target_block_size_ = self->min_block_size_;\r
-    } else if (diff[1] < diff[0] - 20.0) {\r
-      /* Combine this block with second last block. */\r
-      split->lengths[self->num_blocks_] = (uint32_t)self->block_size_;\r
-      split->types[self->num_blocks_] = split->types[self->num_blocks_ - 2];\r
-      BROTLI_SWAP(size_t, self->last_histogram_ix_, 0, 1);\r
-      histograms[self->last_histogram_ix_[0]] = combined_histo[1];\r
-      last_entropy[1] = last_entropy[0];\r
-      last_entropy[0] = combined_entropy[1];\r
-      ++self->num_blocks_;\r
-      self->block_size_ = 0;\r
-      FN(HistogramClear)(&histograms[self->curr_histogram_ix_]);\r
-      self->merge_last_count_ = 0;\r
-      self->target_block_size_ = self->min_block_size_;\r
-    } else {\r
-      /* Combine this block with last block. */\r
-      split->lengths[self->num_blocks_ - 1] += (uint32_t)self->block_size_;\r
-      histograms[self->last_histogram_ix_[0]] = combined_histo[0];\r
-      last_entropy[0] = combined_entropy[0];\r
-      if (split->num_types == 1) {\r
-        last_entropy[1] = last_entropy[0];\r
-      }\r
-      self->block_size_ = 0;\r
-      FN(HistogramClear)(&histograms[self->curr_histogram_ix_]);\r
-      if (++self->merge_last_count_ > 1) {\r
-        self->target_block_size_ += self->min_block_size_;\r
-      }\r
-    }\r
-  }\r
-  if (is_final) {\r
-    *self->histograms_size_ = split->num_types;\r
-    split->num_blocks = self->num_blocks_;\r
-  }\r
-}\r
-\r
-/* Adds the next symbol to the current histogram. When the current histogram\r
-   reaches the target size, decides on merging the block. */\r
-static void FN(BlockSplitterAddSymbol)(FN(BlockSplitter)* self, size_t symbol) {\r
-  FN(HistogramAdd)(&self->histograms_[self->curr_histogram_ix_], symbol);\r
-  ++self->block_size_;\r
-  if (self->block_size_ == self->target_block_size_) {\r
-    FN(BlockSplitterFinishBlock)(self, /* is_final = */ BROTLI_FALSE);\r
-  }\r
-}\r
-\r
-#undef HistogramType\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/params.h b/BaseTools/Source/C/BrotliCompress/enc/params.h
deleted file mode 100644 (file)
index 96fed34..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright 2017 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Parameters for the Brotli encoder with chosen quality levels. */\r
-\r
-#ifndef BROTLI_ENC_PARAMS_H_\r
-#define BROTLI_ENC_PARAMS_H_\r
-\r
-#include <brotli/encode.h>\r
-#include "./encoder_dict.h"\r
-\r
-typedef struct BrotliHasherParams {\r
-  int type;\r
-  int bucket_bits;\r
-  int block_bits;\r
-  int hash_len;\r
-  int num_last_distances_to_check;\r
-} BrotliHasherParams;\r
-\r
-typedef struct BrotliDistanceParams {\r
-  uint32_t distance_postfix_bits;\r
-  uint32_t num_direct_distance_codes;\r
-  uint32_t alphabet_size;\r
-  size_t max_distance;\r
-} BrotliDistanceParams;\r
-\r
-/* Encoding parameters */\r
-typedef struct BrotliEncoderParams {\r
-  BrotliEncoderMode mode;\r
-  int quality;\r
-  int lgwin;\r
-  int lgblock;\r
-  size_t size_hint;\r
-  BROTLI_BOOL disable_literal_context_modeling;\r
-  BROTLI_BOOL large_window;\r
-  BrotliHasherParams hasher;\r
-  BrotliDistanceParams dist;\r
-  BrotliEncoderDictionary dictionary;\r
-} BrotliEncoderParams;\r
-\r
-#endif  /* BROTLI_ENC_PARAMS_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/prefix.h b/BaseTools/Source/C/BrotliCompress/enc/prefix.h
deleted file mode 100644 (file)
index e52edd1..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Functions for encoding of integers into prefix codes the amount of extra\r
-   bits, and the actual values of the extra bits. */\r
-\r
-#ifndef BROTLI_ENC_PREFIX_H_\r
-#define BROTLI_ENC_PREFIX_H_\r
-\r
-#include "../common/constants.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./fast_log.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* Here distance_code is an intermediate code, i.e. one of the special codes or\r
-   the actual distance increased by BROTLI_NUM_DISTANCE_SHORT_CODES - 1. */\r
-static BROTLI_INLINE void PrefixEncodeCopyDistance(size_t distance_code,\r
-                                                   size_t num_direct_codes,\r
-                                                   size_t postfix_bits,\r
-                                                   uint16_t* code,\r
-                                                   uint32_t* extra_bits) {\r
-  if (distance_code < BROTLI_NUM_DISTANCE_SHORT_CODES + num_direct_codes) {\r
-    *code = (uint16_t)distance_code;\r
-    *extra_bits = 0;\r
-    return;\r
-  } else {\r
-    size_t dist = ((size_t)1 << (postfix_bits + 2u)) +\r
-        (distance_code - BROTLI_NUM_DISTANCE_SHORT_CODES - num_direct_codes);\r
-    size_t bucket = Log2FloorNonZero(dist) - 1;\r
-    size_t postfix_mask = (1u << postfix_bits) - 1;\r
-    size_t postfix = dist & postfix_mask;\r
-    size_t prefix = (dist >> bucket) & 1;\r
-    size_t offset = (2 + prefix) << bucket;\r
-    size_t nbits = bucket - postfix_bits;\r
-    *code = (uint16_t)((nbits << 10) |\r
-        (BROTLI_NUM_DISTANCE_SHORT_CODES + num_direct_codes +\r
-         ((2 * (nbits - 1) + prefix) << postfix_bits) + postfix));\r
-    *extra_bits = (uint32_t)((dist - offset) >> postfix_bits);\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_PREFIX_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/quality.h b/BaseTools/Source/C/BrotliCompress/enc/quality.h
deleted file mode 100644 (file)
index 072bf8f..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Constants and formulas that affect speed-ratio trade-offs and thus define\r
-   quality levels. */\r
-\r
-#ifndef BROTLI_ENC_QUALITY_H_\r
-#define BROTLI_ENC_QUALITY_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/encode.h>\r
-#include "./params.h"\r
-\r
-#define FAST_ONE_PASS_COMPRESSION_QUALITY 0\r
-#define FAST_TWO_PASS_COMPRESSION_QUALITY 1\r
-#define ZOPFLIFICATION_QUALITY 10\r
-#define HQ_ZOPFLIFICATION_QUALITY 11\r
-\r
-#define MAX_QUALITY_FOR_STATIC_ENTROPY_CODES 2\r
-#define MIN_QUALITY_FOR_BLOCK_SPLIT 4\r
-#define MIN_QUALITY_FOR_NONZERO_DISTANCE_PARAMS 4\r
-#define MIN_QUALITY_FOR_OPTIMIZE_HISTOGRAMS 4\r
-#define MIN_QUALITY_FOR_EXTENSIVE_REFERENCE_SEARCH 5\r
-#define MIN_QUALITY_FOR_CONTEXT_MODELING 5\r
-#define MIN_QUALITY_FOR_HQ_CONTEXT_MODELING 7\r
-#define MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING 10\r
-\r
-/* For quality below MIN_QUALITY_FOR_BLOCK_SPLIT there is no block splitting,\r
-   so we buffer at most this much literals and commands. */\r
-#define MAX_NUM_DELAYED_SYMBOLS 0x2FFF\r
-\r
-/* Returns hash-table size for quality levels 0 and 1. */\r
-static BROTLI_INLINE size_t MaxHashTableSize(int quality) {\r
-  return quality == FAST_ONE_PASS_COMPRESSION_QUALITY ? 1 << 15 : 1 << 17;\r
-}\r
-\r
-/* The maximum length for which the zopflification uses distinct distances. */\r
-#define MAX_ZOPFLI_LEN_QUALITY_10 150\r
-#define MAX_ZOPFLI_LEN_QUALITY_11 325\r
-\r
-/* Do not thoroughly search when a long copy is found. */\r
-#define BROTLI_LONG_COPY_QUICK_STEP 16384\r
-\r
-static BROTLI_INLINE size_t MaxZopfliLen(const BrotliEncoderParams* params) {\r
-  return params->quality <= 10 ?\r
-      MAX_ZOPFLI_LEN_QUALITY_10 :\r
-      MAX_ZOPFLI_LEN_QUALITY_11;\r
-}\r
-\r
-/* Number of best candidates to evaluate to expand Zopfli chain. */\r
-static BROTLI_INLINE size_t MaxZopfliCandidates(\r
-  const BrotliEncoderParams* params) {\r
-  return params->quality <= 10 ? 1 : 5;\r
-}\r
-\r
-static BROTLI_INLINE void SanitizeParams(BrotliEncoderParams* params) {\r
-  params->quality = BROTLI_MIN(int, BROTLI_MAX_QUALITY,\r
-      BROTLI_MAX(int, BROTLI_MIN_QUALITY, params->quality));\r
-  if (params->quality <= MAX_QUALITY_FOR_STATIC_ENTROPY_CODES) {\r
-    params->large_window = BROTLI_FALSE;\r
-  }\r
-  if (params->lgwin < BROTLI_MIN_WINDOW_BITS) {\r
-    params->lgwin = BROTLI_MIN_WINDOW_BITS;\r
-  } else {\r
-    int max_lgwin = params->large_window ? BROTLI_LARGE_MAX_WINDOW_BITS :\r
-                                           BROTLI_MAX_WINDOW_BITS;\r
-    if (params->lgwin > max_lgwin) params->lgwin = max_lgwin;\r
-  }\r
-}\r
-\r
-/* Returns optimized lg_block value. */\r
-static BROTLI_INLINE int ComputeLgBlock(const BrotliEncoderParams* params) {\r
-  int lgblock = params->lgblock;\r
-  if (params->quality == FAST_ONE_PASS_COMPRESSION_QUALITY ||\r
-      params->quality == FAST_TWO_PASS_COMPRESSION_QUALITY) {\r
-    lgblock = params->lgwin;\r
-  } else if (params->quality < MIN_QUALITY_FOR_BLOCK_SPLIT) {\r
-    lgblock = 14;\r
-  } else if (lgblock == 0) {\r
-    lgblock = 16;\r
-    if (params->quality >= 9 && params->lgwin > lgblock) {\r
-      lgblock = BROTLI_MIN(int, 18, params->lgwin);\r
-    }\r
-  } else {\r
-    lgblock = BROTLI_MIN(int, BROTLI_MAX_INPUT_BLOCK_BITS,\r
-        BROTLI_MAX(int, BROTLI_MIN_INPUT_BLOCK_BITS, lgblock));\r
-  }\r
-  return lgblock;\r
-}\r
-\r
-/* Returns log2 of the size of main ring buffer area.\r
-   Allocate at least lgwin + 1 bits for the ring buffer so that the newly\r
-   added block fits there completely and we still get lgwin bits and at least\r
-   read_block_size_bits + 1 bits because the copy tail length needs to be\r
-   smaller than ring-buffer size. */\r
-static BROTLI_INLINE int ComputeRbBits(const BrotliEncoderParams* params) {\r
-  return 1 + BROTLI_MAX(int, params->lgwin, params->lgblock);\r
-}\r
-\r
-static BROTLI_INLINE size_t MaxMetablockSize(\r
-    const BrotliEncoderParams* params) {\r
-  int bits =\r
-      BROTLI_MIN(int, ComputeRbBits(params), BROTLI_MAX_INPUT_BLOCK_BITS);\r
-  return (size_t)1 << bits;\r
-}\r
-\r
-/* When searching for backward references and have not seen matches for a long\r
-   time, we can skip some match lookups. Unsuccessful match lookups are very\r
-   expensive and this kind of a heuristic speeds up compression quite a lot.\r
-   At first 8 byte strides are taken and every second byte is put to hasher.\r
-   After 4x more literals stride by 16 bytes, every put 4-th byte to hasher.\r
-   Applied only to qualities 2 to 9. */\r
-static BROTLI_INLINE size_t LiteralSpreeLengthForSparseSearch(\r
-    const BrotliEncoderParams* params) {\r
-  return params->quality < 9 ? 64 : 512;\r
-}\r
-\r
-static BROTLI_INLINE void ChooseHasher(const BrotliEncoderParams* params,\r
-                                       BrotliHasherParams* hparams) {\r
-  if (params->quality > 9) {\r
-    hparams->type = 10;\r
-  } else if (params->quality == 4 && params->size_hint >= (1 << 20)) {\r
-    hparams->type = 54;\r
-  } else if (params->quality < 5) {\r
-    hparams->type = params->quality;\r
-  } else if (params->lgwin <= 16) {\r
-    hparams->type = params->quality < 7 ? 40 : params->quality < 9 ? 41 : 42;\r
-  } else if (params->size_hint >= (1 << 20) && params->lgwin >= 19) {\r
-    hparams->type = 6;\r
-    hparams->block_bits = params->quality - 1;\r
-    hparams->bucket_bits = 15;\r
-    hparams->hash_len = 5;\r
-    hparams->num_last_distances_to_check =\r
-        params->quality < 7 ? 4 : params->quality < 9 ? 10 : 16;\r
-  } else {\r
-    hparams->type = 5;\r
-    hparams->block_bits = params->quality - 1;\r
-    hparams->bucket_bits = params->quality < 7 ? 14 : 15;\r
-    hparams->num_last_distances_to_check =\r
-        params->quality < 7 ? 4 : params->quality < 9 ? 10 : 16;\r
-  }\r
-\r
-  if (params->lgwin > 24) {\r
-    /* Different hashers for large window brotli: not for qualities <= 2,\r
-       these are too fast for large window. Not for qualities >= 10: their\r
-       hasher already works well with large window. So the changes are:\r
-       H3 --> H35: for quality 3.\r
-       H54 --> H55: for quality 4 with size hint > 1MB\r
-       H6 --> H65: for qualities 5, 6, 7, 8, 9. */\r
-    if (hparams->type == 3) {\r
-      hparams->type = 35;\r
-    }\r
-    if (hparams->type == 54) {\r
-      hparams->type = 55;\r
-    }\r
-    if (hparams->type == 6) {\r
-      hparams->type = 65;\r
-    }\r
-  }\r
-}\r
-\r
-#endif  /* BROTLI_ENC_QUALITY_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/ringbuffer.h b/BaseTools/Source/C/BrotliCompress/enc/ringbuffer.h
deleted file mode 100644 (file)
index fe63270..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Sliding window over the input data. */\r
-\r
-#ifndef BROTLI_ENC_RINGBUFFER_H_\r
-#define BROTLI_ENC_RINGBUFFER_H_\r
-\r
-#include <string.h>  /* memcpy */\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./memory.h"\r
-#include "./quality.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/* A RingBuffer(window_bits, tail_bits) contains `1 << window_bits' bytes of\r
-   data in a circular manner: writing a byte writes it to:\r
-     `position() % (1 << window_bits)'.\r
-   For convenience, the RingBuffer array contains another copy of the\r
-   first `1 << tail_bits' bytes:\r
-     buffer_[i] == buffer_[i + (1 << window_bits)], if i < (1 << tail_bits),\r
-   and another copy of the last two bytes:\r
-     buffer_[-1] == buffer_[(1 << window_bits) - 1] and\r
-     buffer_[-2] == buffer_[(1 << window_bits) - 2]. */\r
-typedef struct RingBuffer {\r
-  /* Size of the ring-buffer is (1 << window_bits) + tail_size_. */\r
-  const uint32_t size_;\r
-  const uint32_t mask_;\r
-  const uint32_t tail_size_;\r
-  const uint32_t total_size_;\r
-\r
-  uint32_t cur_size_;\r
-  /* Position to write in the ring buffer. */\r
-  uint32_t pos_;\r
-  /* The actual ring buffer containing the copy of the last two bytes, the data,\r
-     and the copy of the beginning as a tail. */\r
-  uint8_t* data_;\r
-  /* The start of the ring-buffer. */\r
-  uint8_t* buffer_;\r
-} RingBuffer;\r
-\r
-static BROTLI_INLINE void RingBufferInit(RingBuffer* rb) {\r
-  rb->cur_size_ = 0;\r
-  rb->pos_ = 0;\r
-  rb->data_ = 0;\r
-  rb->buffer_ = 0;\r
-}\r
-\r
-static BROTLI_INLINE void RingBufferSetup(\r
-    const BrotliEncoderParams* params, RingBuffer* rb) {\r
-  int window_bits = ComputeRbBits(params);\r
-  int tail_bits = params->lgblock;\r
-  *(uint32_t*)&rb->size_ = 1u << window_bits;\r
-  *(uint32_t*)&rb->mask_ = (1u << window_bits) - 1;\r
-  *(uint32_t*)&rb->tail_size_ = 1u << tail_bits;\r
-  *(uint32_t*)&rb->total_size_ = rb->size_ + rb->tail_size_;\r
-}\r
-\r
-static BROTLI_INLINE void RingBufferFree(MemoryManager* m, RingBuffer* rb) {\r
-  BROTLI_FREE(m, rb->data_);\r
-}\r
-\r
-/* Allocates or re-allocates data_ to the given length + plus some slack\r
-   region before and after. Fills the slack regions with zeros. */\r
-static BROTLI_INLINE void RingBufferInitBuffer(\r
-    MemoryManager* m, const uint32_t buflen, RingBuffer* rb) {\r
-  static const size_t kSlackForEightByteHashingEverywhere = 7;\r
-  uint8_t* new_data = BROTLI_ALLOC(\r
-      m, uint8_t, 2 + buflen + kSlackForEightByteHashingEverywhere);\r
-  size_t i;\r
-  if (BROTLI_IS_OOM(m)) return;\r
-  if (rb->data_) {\r
-    memcpy(new_data, rb->data_,\r
-        2 + rb->cur_size_ + kSlackForEightByteHashingEverywhere);\r
-    BROTLI_FREE(m, rb->data_);\r
-  }\r
-  rb->data_ = new_data;\r
-  rb->cur_size_ = buflen;\r
-  rb->buffer_ = rb->data_ + 2;\r
-  rb->buffer_[-2] = rb->buffer_[-1] = 0;\r
-  for (i = 0; i < kSlackForEightByteHashingEverywhere; ++i) {\r
-    rb->buffer_[rb->cur_size_ + i] = 0;\r
-  }\r
-}\r
-\r
-static BROTLI_INLINE void RingBufferWriteTail(\r
-    const uint8_t* bytes, size_t n, RingBuffer* rb) {\r
-  const size_t masked_pos = rb->pos_ & rb->mask_;\r
-  if (BROTLI_PREDICT_FALSE(masked_pos < rb->tail_size_)) {\r
-    /* Just fill the tail buffer with the beginning data. */\r
-    const size_t p = rb->size_ + masked_pos;\r
-    memcpy(&rb->buffer_[p], bytes,\r
-        BROTLI_MIN(size_t, n, rb->tail_size_ - masked_pos));\r
-  }\r
-}\r
-\r
-/* Push bytes into the ring buffer. */\r
-static BROTLI_INLINE void RingBufferWrite(\r
-    MemoryManager* m, const uint8_t* bytes, size_t n, RingBuffer* rb) {\r
-  if (rb->pos_ == 0 && n < rb->tail_size_) {\r
-    /* Special case for the first write: to process the first block, we don't\r
-       need to allocate the whole ring-buffer and we don't need the tail\r
-       either. However, we do this memory usage optimization only if the\r
-       first write is less than the tail size, which is also the input block\r
-       size, otherwise it is likely that other blocks will follow and we\r
-       will need to reallocate to the full size anyway. */\r
-    rb->pos_ = (uint32_t)n;\r
-    RingBufferInitBuffer(m, rb->pos_, rb);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    memcpy(rb->buffer_, bytes, n);\r
-    return;\r
-  }\r
-  if (rb->cur_size_ < rb->total_size_) {\r
-    /* Lazily allocate the full buffer. */\r
-    RingBufferInitBuffer(m, rb->total_size_, rb);\r
-    if (BROTLI_IS_OOM(m)) return;\r
-    /* Initialize the last two bytes to zero, so that we don't have to worry\r
-       later when we copy the last two bytes to the first two positions. */\r
-    rb->buffer_[rb->size_ - 2] = 0;\r
-    rb->buffer_[rb->size_ - 1] = 0;\r
-  }\r
-  {\r
-    const size_t masked_pos = rb->pos_ & rb->mask_;\r
-    /* The length of the writes is limited so that we do not need to worry\r
-       about a write */\r
-    RingBufferWriteTail(bytes, n, rb);\r
-    if (BROTLI_PREDICT_TRUE(masked_pos + n <= rb->size_)) {\r
-      /* A single write fits. */\r
-      memcpy(&rb->buffer_[masked_pos], bytes, n);\r
-    } else {\r
-      /* Split into two writes.\r
-         Copy into the end of the buffer, including the tail buffer. */\r
-      memcpy(&rb->buffer_[masked_pos], bytes,\r
-             BROTLI_MIN(size_t, n, rb->total_size_ - masked_pos));\r
-      /* Copy into the beginning of the buffer */\r
-      memcpy(&rb->buffer_[0], bytes + (rb->size_ - masked_pos),\r
-             n - (rb->size_ - masked_pos));\r
-    }\r
-  }\r
-  {\r
-    BROTLI_BOOL not_first_lap = (rb->pos_ & (1u << 31)) != 0;\r
-    uint32_t rb_pos_mask = (1u << 31) - 1;\r
-    rb->buffer_[-2] = rb->buffer_[rb->size_ - 2];\r
-    rb->buffer_[-1] = rb->buffer_[rb->size_ - 1];\r
-    rb->pos_ = (rb->pos_ & rb_pos_mask) + (uint32_t)(n & rb_pos_mask);\r
-    if (not_first_lap) {\r
-      /* Wrap, but preserve not-a-first-lap feature. */\r
-      rb->pos_ |= 1u << 31;\r
-    }\r
-  }\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_RINGBUFFER_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/static_dict.c b/BaseTools/Source/C/BrotliCompress/enc/static_dict.c
deleted file mode 100644 (file)
index bad13a7..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-#include "./static_dict.h"\r
-\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include "../common/transform.h"\r
-#include "./encoder_dict.h"\r
-#include "./find_match_length.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static BROTLI_INLINE uint32_t Hash(const uint8_t* data) {\r
-  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kDictHashMul32;\r
-  /* The higher bits contain more mixture from the multiplication,\r
-     so we take our results from there. */\r
-  return h >> (32 - kDictNumBits);\r
-}\r
-\r
-static BROTLI_INLINE void AddMatch(size_t distance, size_t len, size_t len_code,\r
-                                   uint32_t* matches) {\r
-  uint32_t match = (uint32_t)((distance << 5) + len_code);\r
-  matches[len] = BROTLI_MIN(uint32_t, matches[len], match);\r
-}\r
-\r
-static BROTLI_INLINE size_t DictMatchLength(const BrotliDictionary* dictionary,\r
-                                            const uint8_t* data,\r
-                                            size_t id,\r
-                                            size_t len,\r
-                                            size_t maxlen) {\r
-  const size_t offset = dictionary->offsets_by_length[len] + len * id;\r
-  return FindMatchLengthWithLimit(&dictionary->data[offset], data,\r
-                                  BROTLI_MIN(size_t, len, maxlen));\r
-}\r
-\r
-static BROTLI_INLINE BROTLI_BOOL IsMatch(const BrotliDictionary* dictionary,\r
-    DictWord w, const uint8_t* data, size_t max_length) {\r
-  if (w.len > max_length) {\r
-    return BROTLI_FALSE;\r
-  } else {\r
-    const size_t offset = dictionary->offsets_by_length[w.len] +\r
-        (size_t)w.len * (size_t)w.idx;\r
-    const uint8_t* dict = &dictionary->data[offset];\r
-    if (w.transform == 0) {\r
-      /* Match against base dictionary word. */\r
-      return\r
-          TO_BROTLI_BOOL(FindMatchLengthWithLimit(dict, data, w.len) == w.len);\r
-    } else if (w.transform == 10) {\r
-      /* Match against uppercase first transform.\r
-         Note that there are only ASCII uppercase words in the lookup table. */\r
-      return TO_BROTLI_BOOL(dict[0] >= 'a' && dict[0] <= 'z' &&\r
-              (dict[0] ^ 32) == data[0] &&\r
-              FindMatchLengthWithLimit(&dict[1], &data[1], w.len - 1u) ==\r
-              w.len - 1u);\r
-    } else {\r
-      /* Match against uppercase all transform.\r
-         Note that there are only ASCII uppercase words in the lookup table. */\r
-      size_t i;\r
-      for (i = 0; i < w.len; ++i) {\r
-        if (dict[i] >= 'a' && dict[i] <= 'z') {\r
-          if ((dict[i] ^ 32) != data[i]) return BROTLI_FALSE;\r
-        } else {\r
-          if (dict[i] != data[i]) return BROTLI_FALSE;\r
-        }\r
-      }\r
-      return BROTLI_TRUE;\r
-    }\r
-  }\r
-}\r
-\r
-BROTLI_BOOL BrotliFindAllStaticDictionaryMatches(\r
-    const BrotliEncoderDictionary* dictionary, const uint8_t* data,\r
-    size_t min_length, size_t max_length, uint32_t* matches) {\r
-  BROTLI_BOOL has_found_match = BROTLI_FALSE;\r
-  {\r
-    size_t offset = dictionary->buckets[Hash(data)];\r
-    BROTLI_BOOL end = !offset;\r
-    while (!end) {\r
-      DictWord w = dictionary->dict_words[offset++];\r
-      const size_t l = w.len & 0x1F;\r
-      const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];\r
-      const size_t id = w.idx;\r
-      end = !!(w.len & 0x80);\r
-      w.len = (uint8_t)l;\r
-      if (w.transform == 0) {\r
-        const size_t matchlen =\r
-            DictMatchLength(dictionary->words, data, id, l, max_length);\r
-        const uint8_t* s;\r
-        size_t minlen;\r
-        size_t maxlen;\r
-        size_t len;\r
-        /* Transform "" + BROTLI_TRANSFORM_IDENTITY + "" */\r
-        if (matchlen == l) {\r
-          AddMatch(id, l, l, matches);\r
-          has_found_match = BROTLI_TRUE;\r
-        }\r
-        /* Transforms "" + BROTLI_TRANSFORM_OMIT_LAST_1 + "" and\r
-                      "" + BROTLI_TRANSFORM_OMIT_LAST_1 + "ing " */\r
-        if (matchlen >= l - 1) {\r
-          AddMatch(id + 12 * n, l - 1, l, matches);\r
-          if (l + 2 < max_length &&\r
-              data[l - 1] == 'i' && data[l] == 'n' && data[l + 1] == 'g' &&\r
-              data[l + 2] == ' ') {\r
-            AddMatch(id + 49 * n, l + 3, l, matches);\r
-          }\r
-          has_found_match = BROTLI_TRUE;\r
-        }\r
-        /* Transform "" + BROTLI_TRANSFORM_OMIT_LAST_# + "" (# = 2 .. 9) */\r
-        minlen = min_length;\r
-        if (l > 9) minlen = BROTLI_MAX(size_t, minlen, l - 9);\r
-        maxlen = BROTLI_MIN(size_t, matchlen, l - 2);\r
-        for (len = minlen; len <= maxlen; ++len) {\r
-          size_t cut = l - len;\r
-          size_t transform_id = (cut << 2) +\r
-              (size_t)((dictionary->cutoffTransforms >> (cut * 6)) & 0x3F);\r
-          AddMatch(id + transform_id * n, len, l, matches);\r
-          has_found_match = BROTLI_TRUE;\r
-        }\r
-        if (matchlen < l || l + 6 >= max_length) {\r
-          continue;\r
-        }\r
-        s = &data[l];\r
-        /* Transforms "" + BROTLI_TRANSFORM_IDENTITY + <suffix> */\r
-        if (s[0] == ' ') {\r
-          AddMatch(id + n, l + 1, l, matches);\r
-          if (s[1] == 'a') {\r
-            if (s[2] == ' ') {\r
-              AddMatch(id + 28 * n, l + 3, l, matches);\r
-            } else if (s[2] == 's') {\r
-              if (s[3] == ' ') AddMatch(id + 46 * n, l + 4, l, matches);\r
-            } else if (s[2] == 't') {\r
-              if (s[3] == ' ') AddMatch(id + 60 * n, l + 4, l, matches);\r
-            } else if (s[2] == 'n') {\r
-              if (s[3] == 'd' && s[4] == ' ') {\r
-                AddMatch(id + 10 * n, l + 5, l, matches);\r
-              }\r
-            }\r
-          } else if (s[1] == 'b') {\r
-            if (s[2] == 'y' && s[3] == ' ') {\r
-              AddMatch(id + 38 * n, l + 4, l, matches);\r
-            }\r
-          } else if (s[1] == 'i') {\r
-            if (s[2] == 'n') {\r
-              if (s[3] == ' ') AddMatch(id + 16 * n, l + 4, l, matches);\r
-            } else if (s[2] == 's') {\r
-              if (s[3] == ' ') AddMatch(id + 47 * n, l + 4, l, matches);\r
-            }\r
-          } else if (s[1] == 'f') {\r
-            if (s[2] == 'o') {\r
-              if (s[3] == 'r' && s[4] == ' ') {\r
-                AddMatch(id + 25 * n, l + 5, l, matches);\r
-              }\r
-            } else if (s[2] == 'r') {\r
-              if (s[3] == 'o' && s[4] == 'm' && s[5] == ' ') {\r
-                AddMatch(id + 37 * n, l + 6, l, matches);\r
-              }\r
-            }\r
-          } else if (s[1] == 'o') {\r
-            if (s[2] == 'f') {\r
-              if (s[3] == ' ') AddMatch(id + 8 * n, l + 4, l, matches);\r
-            } else if (s[2] == 'n') {\r
-              if (s[3] == ' ') AddMatch(id + 45 * n, l + 4, l, matches);\r
-            }\r
-          } else if (s[1] == 'n') {\r
-            if (s[2] == 'o' && s[3] == 't' && s[4] == ' ') {\r
-              AddMatch(id + 80 * n, l + 5, l, matches);\r
-            }\r
-          } else if (s[1] == 't') {\r
-            if (s[2] == 'h') {\r
-              if (s[3] == 'e') {\r
-                if (s[4] == ' ') AddMatch(id + 5 * n, l + 5, l, matches);\r
-              } else if (s[3] == 'a') {\r
-                if (s[4] == 't' && s[5] == ' ') {\r
-                  AddMatch(id + 29 * n, l + 6, l, matches);\r
-                }\r
-              }\r
-            } else if (s[2] == 'o') {\r
-              if (s[3] == ' ') AddMatch(id + 17 * n, l + 4, l, matches);\r
-            }\r
-          } else if (s[1] == 'w') {\r
-            if (s[2] == 'i' && s[3] == 't' && s[4] == 'h' && s[5] == ' ') {\r
-              AddMatch(id + 35 * n, l + 6, l, matches);\r
-            }\r
-          }\r
-        } else if (s[0] == '"') {\r
-          AddMatch(id + 19 * n, l + 1, l, matches);\r
-          if (s[1] == '>') {\r
-            AddMatch(id + 21 * n, l + 2, l, matches);\r
-          }\r
-        } else if (s[0] == '.') {\r
-          AddMatch(id + 20 * n, l + 1, l, matches);\r
-          if (s[1] == ' ') {\r
-            AddMatch(id + 31 * n, l + 2, l, matches);\r
-            if (s[2] == 'T' && s[3] == 'h') {\r
-              if (s[4] == 'e') {\r
-                if (s[5] == ' ') AddMatch(id + 43 * n, l + 6, l, matches);\r
-              } else if (s[4] == 'i') {\r
-                if (s[5] == 's' && s[6] == ' ') {\r
-                  AddMatch(id + 75 * n, l + 7, l, matches);\r
-                }\r
-              }\r
-            }\r
-          }\r
-        } else if (s[0] == ',') {\r
-          AddMatch(id + 76 * n, l + 1, l, matches);\r
-          if (s[1] == ' ') {\r
-            AddMatch(id + 14 * n, l + 2, l, matches);\r
-          }\r
-        } else if (s[0] == '\n') {\r
-          AddMatch(id + 22 * n, l + 1, l, matches);\r
-          if (s[1] == '\t') {\r
-            AddMatch(id + 50 * n, l + 2, l, matches);\r
-          }\r
-        } else if (s[0] == ']') {\r
-          AddMatch(id + 24 * n, l + 1, l, matches);\r
-        } else if (s[0] == '\'') {\r
-          AddMatch(id + 36 * n, l + 1, l, matches);\r
-        } else if (s[0] == ':') {\r
-          AddMatch(id + 51 * n, l + 1, l, matches);\r
-        } else if (s[0] == '(') {\r
-          AddMatch(id + 57 * n, l + 1, l, matches);\r
-        } else if (s[0] == '=') {\r
-          if (s[1] == '"') {\r
-            AddMatch(id + 70 * n, l + 2, l, matches);\r
-          } else if (s[1] == '\'') {\r
-            AddMatch(id + 86 * n, l + 2, l, matches);\r
-          }\r
-        } else if (s[0] == 'a') {\r
-          if (s[1] == 'l' && s[2] == ' ') {\r
-            AddMatch(id + 84 * n, l + 3, l, matches);\r
-          }\r
-        } else if (s[0] == 'e') {\r
-          if (s[1] == 'd') {\r
-            if (s[2] == ' ') AddMatch(id + 53 * n, l + 3, l, matches);\r
-          } else if (s[1] == 'r') {\r
-            if (s[2] == ' ') AddMatch(id + 82 * n, l + 3, l, matches);\r
-          } else if (s[1] == 's') {\r
-            if (s[2] == 't' && s[3] == ' ') {\r
-              AddMatch(id + 95 * n, l + 4, l, matches);\r
-            }\r
-          }\r
-        } else if (s[0] == 'f') {\r
-          if (s[1] == 'u' && s[2] == 'l' && s[3] == ' ') {\r
-            AddMatch(id + 90 * n, l + 4, l, matches);\r
-          }\r
-        } else if (s[0] == 'i') {\r
-          if (s[1] == 'v') {\r
-            if (s[2] == 'e' && s[3] == ' ') {\r
-              AddMatch(id + 92 * n, l + 4, l, matches);\r
-            }\r
-          } else if (s[1] == 'z') {\r
-            if (s[2] == 'e' && s[3] == ' ') {\r
-              AddMatch(id + 100 * n, l + 4, l, matches);\r
-            }\r
-          }\r
-        } else if (s[0] == 'l') {\r
-          if (s[1] == 'e') {\r
-            if (s[2] == 's' && s[3] == 's' && s[4] == ' ') {\r
-              AddMatch(id + 93 * n, l + 5, l, matches);\r
-            }\r
-          } else if (s[1] == 'y') {\r
-            if (s[2] == ' ') AddMatch(id + 61 * n, l + 3, l, matches);\r
-          }\r
-        } else if (s[0] == 'o') {\r
-          if (s[1] == 'u' && s[2] == 's' && s[3] == ' ') {\r
-            AddMatch(id + 106 * n, l + 4, l, matches);\r
-          }\r
-        }\r
-      } else {\r
-        /* Set is_all_caps=0 for BROTLI_TRANSFORM_UPPERCASE_FIRST and\r
-               is_all_caps=1 otherwise (BROTLI_TRANSFORM_UPPERCASE_ALL)\r
-           transform. */\r
-        const BROTLI_BOOL is_all_caps =\r
-            TO_BROTLI_BOOL(w.transform != BROTLI_TRANSFORM_UPPERCASE_FIRST);\r
-        const uint8_t* s;\r
-        if (!IsMatch(dictionary->words, w, data, max_length)) {\r
-          continue;\r
-        }\r
-        /* Transform "" + kUppercase{First,All} + "" */\r
-        AddMatch(id + (is_all_caps ? 44 : 9) * n, l, l, matches);\r
-        has_found_match = BROTLI_TRUE;\r
-        if (l + 1 >= max_length) {\r
-          continue;\r
-        }\r
-        /* Transforms "" + kUppercase{First,All} + <suffix> */\r
-        s = &data[l];\r
-        if (s[0] == ' ') {\r
-          AddMatch(id + (is_all_caps ? 68 : 4) * n, l + 1, l, matches);\r
-        } else if (s[0] == '"') {\r
-          AddMatch(id + (is_all_caps ? 87 : 66) * n, l + 1, l, matches);\r
-          if (s[1] == '>') {\r
-            AddMatch(id + (is_all_caps ? 97 : 69) * n, l + 2, l, matches);\r
-          }\r
-        } else if (s[0] == '.') {\r
-          AddMatch(id + (is_all_caps ? 101 : 79) * n, l + 1, l, matches);\r
-          if (s[1] == ' ') {\r
-            AddMatch(id + (is_all_caps ? 114 : 88) * n, l + 2, l, matches);\r
-          }\r
-        } else if (s[0] == ',') {\r
-          AddMatch(id + (is_all_caps ? 112 : 99) * n, l + 1, l, matches);\r
-          if (s[1] == ' ') {\r
-            AddMatch(id + (is_all_caps ? 107 : 58) * n, l + 2, l, matches);\r
-          }\r
-        } else if (s[0] == '\'') {\r
-          AddMatch(id + (is_all_caps ? 94 : 74) * n, l + 1, l, matches);\r
-        } else if (s[0] == '(') {\r
-          AddMatch(id + (is_all_caps ? 113 : 78) * n, l + 1, l, matches);\r
-        } else if (s[0] == '=') {\r
-          if (s[1] == '"') {\r
-            AddMatch(id + (is_all_caps ? 105 : 104) * n, l + 2, l, matches);\r
-          } else if (s[1] == '\'') {\r
-            AddMatch(id + (is_all_caps ? 116 : 108) * n, l + 2, l, matches);\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  /* Transforms with prefixes " " and "." */\r
-  if (max_length >= 5 && (data[0] == ' ' || data[0] == '.')) {\r
-    BROTLI_BOOL is_space = TO_BROTLI_BOOL(data[0] == ' ');\r
-    size_t offset = dictionary->buckets[Hash(&data[1])];\r
-    BROTLI_BOOL end = !offset;\r
-    while (!end) {\r
-      DictWord w = dictionary->dict_words[offset++];\r
-      const size_t l = w.len & 0x1F;\r
-      const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];\r
-      const size_t id = w.idx;\r
-      end = !!(w.len & 0x80);\r
-      w.len = (uint8_t)l;\r
-      if (w.transform == 0) {\r
-        const uint8_t* s;\r
-        if (!IsMatch(dictionary->words, w, &data[1], max_length - 1)) {\r
-          continue;\r
-        }\r
-        /* Transforms " " + BROTLI_TRANSFORM_IDENTITY + "" and\r
-                      "." + BROTLI_TRANSFORM_IDENTITY + "" */\r
-        AddMatch(id + (is_space ? 6 : 32) * n, l + 1, l, matches);\r
-        has_found_match = BROTLI_TRUE;\r
-        if (l + 2 >= max_length) {\r
-          continue;\r
-        }\r
-        /* Transforms " " + BROTLI_TRANSFORM_IDENTITY + <suffix> and\r
-                      "." + BROTLI_TRANSFORM_IDENTITY + <suffix>\r
-        */\r
-        s = &data[l + 1];\r
-        if (s[0] == ' ') {\r
-          AddMatch(id + (is_space ? 2 : 77) * n, l + 2, l, matches);\r
-        } else if (s[0] == '(') {\r
-          AddMatch(id + (is_space ? 89 : 67) * n, l + 2, l, matches);\r
-        } else if (is_space) {\r
-          if (s[0] == ',') {\r
-            AddMatch(id + 103 * n, l + 2, l, matches);\r
-            if (s[1] == ' ') {\r
-              AddMatch(id + 33 * n, l + 3, l, matches);\r
-            }\r
-          } else if (s[0] == '.') {\r
-            AddMatch(id + 71 * n, l + 2, l, matches);\r
-            if (s[1] == ' ') {\r
-              AddMatch(id + 52 * n, l + 3, l, matches);\r
-            }\r
-          } else if (s[0] == '=') {\r
-            if (s[1] == '"') {\r
-              AddMatch(id + 81 * n, l + 3, l, matches);\r
-            } else if (s[1] == '\'') {\r
-              AddMatch(id + 98 * n, l + 3, l, matches);\r
-            }\r
-          }\r
-        }\r
-      } else if (is_space) {\r
-        /* Set is_all_caps=0 for BROTLI_TRANSFORM_UPPERCASE_FIRST and\r
-               is_all_caps=1 otherwise (BROTLI_TRANSFORM_UPPERCASE_ALL)\r
-           transform. */\r
-        const BROTLI_BOOL is_all_caps =\r
-            TO_BROTLI_BOOL(w.transform != BROTLI_TRANSFORM_UPPERCASE_FIRST);\r
-        const uint8_t* s;\r
-        if (!IsMatch(dictionary->words, w, &data[1], max_length - 1)) {\r
-          continue;\r
-        }\r
-        /* Transforms " " + kUppercase{First,All} + "" */\r
-        AddMatch(id + (is_all_caps ? 85 : 30) * n, l + 1, l, matches);\r
-        has_found_match = BROTLI_TRUE;\r
-        if (l + 2 >= max_length) {\r
-          continue;\r
-        }\r
-        /* Transforms " " + kUppercase{First,All} + <suffix> */\r
-        s = &data[l + 1];\r
-        if (s[0] == ' ') {\r
-          AddMatch(id + (is_all_caps ? 83 : 15) * n, l + 2, l, matches);\r
-        } else if (s[0] == ',') {\r
-          if (!is_all_caps) {\r
-            AddMatch(id + 109 * n, l + 2, l, matches);\r
-          }\r
-          if (s[1] == ' ') {\r
-            AddMatch(id + (is_all_caps ? 111 : 65) * n, l + 3, l, matches);\r
-          }\r
-        } else if (s[0] == '.') {\r
-          AddMatch(id + (is_all_caps ? 115 : 96) * n, l + 2, l, matches);\r
-          if (s[1] == ' ') {\r
-            AddMatch(id + (is_all_caps ? 117 : 91) * n, l + 3, l, matches);\r
-          }\r
-        } else if (s[0] == '=') {\r
-          if (s[1] == '"') {\r
-            AddMatch(id + (is_all_caps ? 110 : 118) * n, l + 3, l, matches);\r
-          } else if (s[1] == '\'') {\r
-            AddMatch(id + (is_all_caps ? 119 : 120) * n, l + 3, l, matches);\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  if (max_length >= 6) {\r
-    /* Transforms with prefixes "e ", "s ", ", " and "\xC2\xA0" */\r
-    if ((data[1] == ' ' &&\r
-         (data[0] == 'e' || data[0] == 's' || data[0] == ',')) ||\r
-        (data[0] == 0xC2 && data[1] == 0xA0)) {\r
-      size_t offset = dictionary->buckets[Hash(&data[2])];\r
-      BROTLI_BOOL end = !offset;\r
-      while (!end) {\r
-        DictWord w = dictionary->dict_words[offset++];\r
-        const size_t l = w.len & 0x1F;\r
-        const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];\r
-        const size_t id = w.idx;\r
-        end = !!(w.len & 0x80);\r
-        w.len = (uint8_t)l;\r
-        if (w.transform == 0 &&\r
-            IsMatch(dictionary->words, w, &data[2], max_length - 2)) {\r
-          if (data[0] == 0xC2) {\r
-            AddMatch(id + 102 * n, l + 2, l, matches);\r
-            has_found_match = BROTLI_TRUE;\r
-          } else if (l + 2 < max_length && data[l + 2] == ' ') {\r
-            size_t t = data[0] == 'e' ? 18 : (data[0] == 's' ? 7 : 13);\r
-            AddMatch(id + t * n, l + 3, l, matches);\r
-            has_found_match = BROTLI_TRUE;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  if (max_length >= 9) {\r
-    /* Transforms with prefixes " the " and ".com/" */\r
-    if ((data[0] == ' ' && data[1] == 't' && data[2] == 'h' &&\r
-         data[3] == 'e' && data[4] == ' ') ||\r
-        (data[0] == '.' && data[1] == 'c' && data[2] == 'o' &&\r
-         data[3] == 'm' && data[4] == '/')) {\r
-      size_t offset = dictionary->buckets[Hash(&data[5])];\r
-      BROTLI_BOOL end = !offset;\r
-      while (!end) {\r
-        DictWord w = dictionary->dict_words[offset++];\r
-        const size_t l = w.len & 0x1F;\r
-        const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];\r
-        const size_t id = w.idx;\r
-        end = !!(w.len & 0x80);\r
-        w.len = (uint8_t)l;\r
-        if (w.transform == 0 &&\r
-            IsMatch(dictionary->words, w, &data[5], max_length - 5)) {\r
-          AddMatch(id + (data[0] == ' ' ? 41 : 72) * n, l + 5, l, matches);\r
-          has_found_match = BROTLI_TRUE;\r
-          if (l + 5 < max_length) {\r
-            const uint8_t* s = &data[l + 5];\r
-            if (data[0] == ' ') {\r
-              if (l + 8 < max_length &&\r
-                  s[0] == ' ' && s[1] == 'o' && s[2] == 'f' && s[3] == ' ') {\r
-                AddMatch(id + 62 * n, l + 9, l, matches);\r
-                if (l + 12 < max_length &&\r
-                    s[4] == 't' && s[5] == 'h' && s[6] == 'e' && s[7] == ' ') {\r
-                  AddMatch(id + 73 * n, l + 13, l, matches);\r
-                }\r
-              }\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-  return has_found_match;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/static_dict.h b/BaseTools/Source/C/BrotliCompress/enc/static_dict.h
deleted file mode 100644 (file)
index aafc68f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Class to model the static dictionary. */\r
-\r
-#ifndef BROTLI_ENC_STATIC_DICT_H_\r
-#define BROTLI_ENC_STATIC_DICT_H_\r
-\r
-#include "../common/dictionary.h"\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-#include "./encoder_dict.h"\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-#define BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN 37\r
-static const uint32_t kInvalidMatch = 0xFFFFFFF;\r
-\r
-/* Matches data against static dictionary words, and for each length l,\r
-   for which a match is found, updates matches[l] to be the minimum possible\r
-     (distance << 5) + len_code.\r
-   Returns 1 if matches have been found, otherwise 0.\r
-   Prerequisites:\r
-     matches array is at least BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN + 1 long\r
-     all elements are initialized to kInvalidMatch */\r
-BROTLI_INTERNAL BROTLI_BOOL BrotliFindAllStaticDictionaryMatches(\r
-    const BrotliEncoderDictionary* dictionary,\r
-    const uint8_t* data, size_t min_length, size_t max_length,\r
-    uint32_t* matches);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_STATIC_DICT_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/static_dict_lut.h b/BaseTools/Source/C/BrotliCompress/enc/static_dict_lut.h
deleted file mode 100644 (file)
index 88f8b34..0000000
+++ /dev/null
@@ -1,5864 +0,0 @@
-/* Copyright 2015 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Lookup table for static dictionary and transforms. */\r
-\r
-#ifndef BROTLI_ENC_STATIC_DICT_LUT_H_\r
-#define BROTLI_ENC_STATIC_DICT_LUT_H_\r
-\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-typedef struct DictWord {\r
-  /* Highest bit is used to indicate end of bucket. */\r
-  uint8_t len;\r
-  uint8_t transform;\r
-  uint16_t idx;\r
-} DictWord;\r
-\r
-static const int kDictNumBits = 15;\r
-static const uint32_t kDictHashMul32 = 0x1E35A7BD;\r
-\r
-static const uint16_t kStaticDictionaryBuckets[32768] = {\r
-1,0,0,0,0,0,0,0,0,3,6,0,0,0,0,0,20,0,0,0,21,0,22,0,0,0,0,0,0,0,0,23,0,0,25,0,29,\r
-0,53,0,0,0,0,0,0,55,0,0,0,0,0,0,61,76,0,0,0,94,0,0,0,0,0,0,96,0,97,0,98,0,0,0,0,\r
-0,0,0,99,101,106,108,0,0,0,0,0,110,0,111,112,0,113,118,124,0,0,0,0,0,125,128,0,0\r
-,0,0,129,0,0,131,0,0,0,0,0,0,132,0,0,135,0,0,0,137,0,0,0,0,0,138,139,0,0,0,0,0,0\r
-,0,142,143,144,0,0,0,0,0,145,0,0,0,146,149,151,152,0,0,153,0,0,0,0,0,0,0,0,0,0,0\r
-,0,0,0,0,154,0,0,0,0,0,0,155,0,0,0,0,160,182,0,0,0,0,0,0,183,0,0,0,188,189,0,0,\r
-192,0,0,0,0,0,0,194,0,0,0,0,0,0,0,0,197,202,209,0,0,210,0,224,0,0,0,225,0,0,0,0,\r
-0,0,0,0,0,0,231,0,0,0,232,0,240,0,0,242,0,0,0,0,0,0,0,0,0,0,0,244,0,0,0,246,0,0,\r
-249,251,253,0,0,0,0,0,258,0,0,261,263,0,0,0,267,0,0,268,0,269,0,0,0,0,0,0,0,0,0,\r
-271,0,0,0,0,0,0,272,0,273,0,277,0,278,286,0,0,0,0,287,0,289,290,291,0,0,0,295,0,\r
-0,296,297,0,0,0,0,0,0,0,0,0,0,298,0,0,0,299,0,0,305,0,324,0,0,0,0,0,327,0,328,\r
-329,0,0,0,0,336,0,0,340,0,341,342,343,0,0,346,0,348,0,0,0,0,0,0,349,351,0,0,355,\r
-0,363,0,364,0,368,369,0,370,0,0,0,0,0,0,0,372,0,0,0,0,0,0,0,0,0,0,0,373,0,375,0,\r
-0,0,0,376,377,0,0,394,395,396,0,0,398,0,0,0,0,400,0,0,408,0,0,0,0,420,0,0,0,0,0,\r
-0,421,0,0,422,423,0,0,429,435,436,442,0,0,443,0,444,445,453,456,0,457,0,0,0,0,0,\r
-458,0,0,0,459,0,0,0,460,0,462,463,465,0,0,0,0,0,0,466,469,0,0,0,0,0,0,470,0,0,0,\r
-474,0,476,0,0,0,0,483,0,485,0,0,0,486,0,0,488,491,492,0,0,497,499,500,0,501,0,0,\r
-0,505,0,0,506,0,0,0,507,0,0,0,509,0,0,0,0,511,512,519,0,0,0,0,0,0,529,530,0,0,0,\r
-534,0,0,0,0,543,0,0,0,0,0,0,0,0,0,553,0,0,0,0,557,560,0,0,0,0,0,0,561,0,564,0,0,\r
-0,0,0,0,565,566,0,575,0,619,0,620,0,0,623,624,0,0,0,625,0,0,626,627,0,0,628,0,0,\r
-0,0,630,0,631,0,0,0,0,0,0,0,0,0,641,0,0,0,0,643,656,668,0,0,0,673,0,0,0,674,0,0,\r
-0,0,0,0,0,0,682,0,687,0,690,0,693,699,700,0,0,0,0,0,0,704,705,0,0,0,0,707,710,0,\r
-711,0,0,0,0,726,0,0,729,0,0,0,730,731,0,0,0,0,0,752,0,0,0,762,0,763,0,0,767,0,0,\r
-0,770,774,0,0,775,0,0,0,0,0,0,0,0,0,0,776,0,0,0,777,783,0,0,0,785,788,0,0,0,0,\r
-790,0,0,0,793,0,0,0,0,794,0,0,804,819,821,0,827,0,0,0,834,0,0,835,0,0,0,841,0,\r
-844,0,850,851,859,0,860,0,0,0,0,0,0,0,874,0,876,0,877,890,0,0,0,0,0,0,0,0,893,\r
-894,898,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,899,0,0,0,900,904,906,0,0,0,907,0,908,909,\r
-0,910,0,0,0,0,911,0,0,0,0,0,916,0,0,0,922,925,0,930,0,934,0,0,0,0,0,943,0,0,944,\r
-0,953,954,0,0,0,0,0,0,955,0,962,963,0,0,976,0,0,977,978,979,980,0,981,0,0,0,0,\r
-984,0,0,985,0,0,987,989,991,0,0,0,0,0,0,0,0,0,992,0,0,0,993,0,0,0,0,0,0,996,0,0,\r
-0,1000,0,0,0,0,0,1002,0,0,0,0,1005,1007,0,0,0,1009,0,0,0,1010,0,0,0,0,0,0,1011,0\r
-,1012,0,0,0,0,1014,1016,0,0,0,1020,0,1021,0,0,0,0,1022,0,0,0,1024,0,0,0,0,0,0,\r
-1025,0,0,1026,1027,0,0,0,0,0,1031,0,1033,0,0,0,0,1034,0,0,0,1037,1040,0,0,0,1042\r
-,1043,0,0,1053,0,1054,0,0,1057,0,0,0,1058,0,0,1060,0,0,0,0,0,0,0,1061,0,0,1062,0\r
-,0,0,0,1063,0,0,0,0,1064,0,0,0,0,0,1065,0,0,0,0,1066,1067,0,0,0,1069,1070,1072,0\r
-,0,0,0,0,0,1073,0,1075,0,0,0,0,0,0,1080,1084,0,0,0,0,1088,0,0,0,0,0,0,1094,0,\r
-1095,0,1107,0,0,0,1112,1114,0,1119,0,1122,0,0,1126,0,1129,0,1130,0,0,0,0,0,1132,\r
-0,0,0,0,0,0,1144,0,0,1145,1146,0,1148,1149,0,0,1150,1151,0,0,0,0,1152,0,1153,0,0\r
-,0,0,0,1154,0,1163,0,0,0,1164,0,0,0,0,0,1165,0,1167,0,1170,0,0,0,0,0,1171,1172,0\r
-,0,0,0,0,0,0,0,1173,1175,1177,0,1186,0,0,0,0,0,0,0,0,0,0,1195,0,0,1221,0,0,1224,\r
-0,0,1227,0,0,0,0,0,1228,1229,0,0,1230,0,0,0,0,0,0,0,0,0,1231,0,0,0,1233,0,0,1243\r
-,1244,1246,1248,0,0,0,0,1254,1255,1258,1259,0,0,0,1260,0,0,1261,0,0,0,1262,1264,\r
-0,0,1265,0,0,0,0,0,0,0,0,0,0,0,0,1266,0,1267,0,0,0,0,1273,1274,1276,1289,0,0,\r
-1291,1292,1293,0,0,1294,1295,1296,0,0,0,0,1302,0,1304,0,0,0,0,0,0,0,0,0,1311,\r
-1312,0,1314,0,1316,1320,1321,0,0,0,0,0,0,0,1322,1323,1324,0,1335,0,1336,0,0,0,0,\r
-1341,1342,0,1346,0,1357,0,0,0,1358,1360,0,0,0,0,0,0,1361,0,0,0,1362,1365,0,1366,\r
-0,0,0,0,0,0,0,1379,0,0,0,0,0,0,0,0,0,0,0,0,1386,0,1388,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,1395,0,0,0,0,1403,0,1405,0,0,1407,0,0,0,0,0,1408,1409,0,1410,0,0,0,1412,1413,\r
-1416,0,0,1429,1451,0,0,1454,0,0,0,0,0,0,0,1455,0,0,0,0,0,0,0,1456,0,0,0,0,1459,\r
-1460,1461,1475,0,0,0,0,0,0,1477,0,1480,0,1481,0,0,1486,0,0,1495,0,0,0,1496,0,0,\r
-1498,1499,1501,1520,1521,0,0,0,1526,0,0,0,0,1528,1529,0,1533,1536,0,0,0,1537,\r
-1538,1549,0,1550,1558,1559,1572,0,1573,0,0,0,0,0,0,0,0,0,1575,0,0,0,0,0,1579,0,\r
-1599,0,1603,0,1604,0,1605,0,0,0,0,0,1608,1610,0,0,0,0,1611,0,1615,0,1616,1618,0,\r
-1619,0,0,1622,0,0,0,0,1634,0,0,0,1635,0,0,0,1641,0,0,0,0,0,0,0,0,0,1643,0,0,0,\r
-1650,0,0,1652,0,0,0,0,0,1653,0,0,0,1654,0,0,0,0,1655,0,1662,0,0,1663,1664,0,0,\r
-1668,0,0,1669,1670,0,1672,1673,0,0,0,0,0,1674,0,0,0,1675,1676,1680,0,1682,0,0,\r
-1687,0,0,0,0,0,1704,0,0,1705,0,0,1721,0,0,0,0,1734,1735,0,0,0,0,1737,0,0,0,0,\r
-1739,0,0,1740,0,0,0,0,0,0,0,0,0,0,1741,1743,0,0,0,0,1745,0,0,0,1749,0,0,0,1751,0\r
-,0,0,0,0,0,1760,0,0,0,0,1765,0,0,0,0,0,1784,0,1785,1787,0,0,0,0,1788,1789,0,0,0,\r
-0,1790,1791,1793,0,1798,1799,0,0,0,0,1801,0,1803,1805,0,0,0,1806,1811,0,1812,\r
-1814,0,1821,0,0,0,0,0,1822,1833,0,0,0,0,0,0,1848,0,0,0,0,0,0,1857,0,0,0,1859,0,0\r
-,0,0,1861,0,0,0,0,0,0,0,1866,0,1921,1925,0,0,0,1929,1930,0,0,0,0,0,0,0,0,0,1931,\r
-0,0,0,0,1932,0,0,0,1934,0,0,0,0,0,0,0,0,1946,0,0,1948,0,0,0,0,1950,0,1957,0,1958\r
-,0,0,0,0,0,1965,1967,0,0,0,0,1968,0,1969,0,1971,1972,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r
-,0,1973,0,0,0,0,1975,0,0,0,0,1976,1979,0,1982,0,0,0,0,1984,1988,0,0,0,0,1990,\r
-2004,2008,0,0,0,2012,2013,0,0,0,0,0,0,0,0,0,0,2015,0,2016,2017,0,0,0,0,2021,0,0,\r
-2025,0,0,0,0,0,2029,2036,2040,0,2042,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2043,0,0,0,0,0,\r
-2045,0,0,0,0,0,0,0,2046,2047,0,2048,2049,0,2059,0,0,2063,0,2064,2065,0,0,2066,0,\r
-0,0,0,0,0,2069,0,0,0,0,2070,0,2071,0,2072,0,0,0,0,2080,2082,2083,0,0,0,0,0,2085,\r
-0,2086,2088,2089,2105,0,0,0,0,2107,0,0,2116,2117,0,2120,0,0,2122,0,0,0,0,0,2123,\r
-0,0,2125,2127,2128,0,0,0,2130,0,0,0,2137,2139,2140,2141,0,0,0,0,0,0,0,0,0,2144,\r
-2145,0,0,2146,2149,0,0,0,0,2150,0,0,2151,2158,0,2159,0,2160,0,0,0,0,0,0,2161,\r
-2162,0,0,2194,2202,0,0,0,0,0,0,2205,2217,0,2220,0,2221,0,2222,2224,0,0,0,0,2237,\r
-0,0,0,0,0,2238,0,2239,2241,0,0,2242,0,0,0,0,0,2243,0,0,0,0,0,0,2252,0,0,2253,0,0\r
-,0,2257,2258,0,0,0,2260,0,0,0,0,0,0,0,2262,0,2264,0,0,0,0,0,2269,2270,0,0,0,0,0,\r
-0,0,0,0,2271,0,2273,0,0,0,0,2277,0,0,0,0,2278,0,0,0,0,2279,0,2280,0,2283,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2287,0,0,0,0,0,0,0,2289,2290,0,0,0,0,2291,0,2292,0,\r
-0,0,2293,2295,2296,0,0,0,0,0,0,0,2298,0,0,0,0,0,2303,0,2305,0,0,2306,0,2307,0,0,\r
-0,0,0,0,0,0,0,0,0,0,2313,2314,2315,2316,0,0,2318,0,2319,0,2322,0,0,2323,0,2324,0\r
-,2326,0,0,0,0,0,0,0,2335,0,2336,2338,2339,0,2340,0,0,0,2355,0,2375,0,2382,2386,0\r
-,2387,0,0,2394,0,0,0,0,2395,0,2397,0,0,0,0,0,2398,0,0,0,0,0,0,0,2399,2402,2404,\r
-2408,2411,0,0,0,2413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2415,0,0,2416,2417,2419,0,2420,\r
-0,0,0,0,0,2425,0,0,0,2426,0,0,0,0,0,0,0,0,0,0,0,0,2427,2428,0,2429,0,0,2430,2434\r
-,0,2436,0,0,0,0,0,0,2441,2442,0,2445,0,0,2446,2457,0,2459,0,0,2462,0,2464,0,2477\r
-,0,2478,2486,0,0,0,2491,0,0,2493,0,0,2494,0,2495,0,2513,2523,0,0,0,0,2524,0,0,0,\r
-0,0,0,2528,2529,2530,0,0,2531,0,2533,0,0,2534,2535,0,2536,2537,0,2538,0,2539,\r
-2540,0,0,0,2545,2546,0,0,0,0,0,0,0,2548,0,0,2549,0,2550,2555,0,0,0,0,0,2557,0,\r
-2560,0,0,0,0,0,0,0,0,0,0,0,2561,0,2576,0,0,0,0,0,0,0,0,0,2577,2578,0,0,0,2579,0,\r
-0,0,0,0,0,0,2580,0,0,0,0,2581,0,0,0,0,2583,0,2584,0,2588,2590,0,0,0,2591,0,0,0,0\r
-,2593,2594,0,2595,0,2601,2602,0,0,2603,0,2605,0,0,0,2606,2607,2611,0,2615,0,0,0,\r
-2617,0,0,0,0,0,0,0,0,0,0,0,0,0,2619,0,0,2620,0,0,0,2621,0,2623,0,2625,0,0,2628,\r
-2629,0,0,2635,2636,2637,0,0,2639,0,0,0,2642,0,0,0,0,2643,0,2644,0,2649,0,0,0,0,0\r
-,0,2655,2656,0,0,2657,0,0,0,0,0,2658,0,0,0,0,0,2659,0,0,0,0,2664,2685,0,2687,0,\r
-2688,0,0,2689,0,0,2694,0,2695,0,0,2698,0,2701,2706,0,0,0,2707,0,2709,2710,2711,0\r
-,0,0,2720,2730,2735,0,0,0,0,2738,2740,0,0,0,0,2747,0,0,0,0,0,0,2748,0,0,2749,0,0\r
-,0,0,0,2750,0,0,2752,2754,0,0,0,0,0,2758,0,0,0,0,2762,0,0,0,0,2763,0,0,0,0,0,0,0\r
-,2764,2767,0,0,0,0,2768,0,0,2770,0,0,0,0,0,0,0,2771,0,0,0,0,0,0,0,0,0,2772,0,0,0\r
-,0,0,2773,2776,0,0,2783,0,0,2784,0,2789,0,2790,0,0,0,2792,0,0,0,0,0,0,0,0,0,0,\r
-2793,2795,0,0,0,0,0,0,2796,0,0,0,0,0,0,2797,2799,0,0,0,0,2803,0,0,0,0,2806,0,\r
-2807,2808,2817,2819,0,0,0,0,0,2821,0,0,0,0,2822,2823,0,0,0,0,0,0,0,2824,0,0,2828\r
-,0,2834,0,0,0,0,0,0,2836,0,2838,0,0,2839,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2841,\r
-0,0,0,2842,0,0,0,0,0,2843,2844,0,0,0,0,2846,0,0,2847,0,2849,0,2853,0,0,0,0,0,\r
-2857,0,0,0,0,2858,0,2859,0,0,2860,0,2862,2868,0,0,0,0,2875,0,2876,0,0,2877,2878,\r
-2884,2889,2890,0,0,2891,0,0,2892,0,0,0,2906,2912,0,2913,0,0,0,0,0,0,0,0,2916,0,\r
-2934,0,0,0,0,0,2935,0,0,0,0,2939,0,2940,0,0,0,0,0,0,0,2941,0,0,0,2946,0,2949,0,0\r
-,2950,2954,2955,0,0,0,2959,2961,0,0,2962,0,2963,0,0,0,0,0,0,2964,2965,2966,2967,\r
-0,0,0,0,0,0,0,2969,0,0,0,0,0,2970,2975,0,2982,2983,2984,0,0,0,0,0,2989,0,0,2990,\r
-0,0,0,0,0,0,0,2991,0,0,0,0,0,0,0,0,2998,0,3000,3001,0,0,3002,0,0,0,3003,0,0,3012\r
-,0,0,3022,0,0,3024,0,0,3025,3027,0,0,0,3030,0,0,0,0,3034,3035,0,0,3036,0,3039,0,\r
-3049,0,0,3050,0,0,0,0,0,0,3051,0,3053,0,0,0,0,3057,0,3058,0,0,0,0,0,0,0,0,3063,0\r
-,0,3073,3074,3078,3079,0,3080,3086,0,0,0,0,0,0,0,0,3087,0,3092,0,3095,0,3099,0,0\r
-,0,3100,0,3101,3102,0,3122,0,0,0,3124,0,3125,0,0,0,0,0,0,3132,3134,0,0,3136,0,0,\r
-0,0,0,0,0,3147,0,0,3149,0,0,0,0,0,3150,3151,3152,0,0,0,0,3158,0,0,3160,0,0,3161,\r
-0,0,3162,0,3163,3166,3168,0,0,3169,3170,0,0,3171,0,0,0,0,0,0,0,3182,0,3184,0,0,\r
-3188,0,0,3194,0,0,0,0,0,0,3204,0,0,0,0,3209,0,0,0,0,0,0,0,0,0,0,0,3216,3217,0,0,\r
-0,0,0,0,0,3219,0,0,3220,3222,0,3223,0,0,0,0,3224,0,3225,3226,0,3228,3233,0,3239,\r
-3241,3242,0,0,3251,3252,3253,3255,0,0,0,0,0,0,0,0,3260,0,0,3261,0,0,0,3267,0,0,0\r
-,0,0,0,0,0,3271,0,0,0,3278,0,3282,0,0,0,3284,0,0,0,3285,3286,0,0,0,0,0,0,0,3287,\r
-3292,0,0,0,0,3294,3296,0,0,3299,3300,3301,0,3302,0,0,0,0,0,3304,3306,0,0,0,0,0,0\r
-,3308,0,0,0,0,0,0,0,0,0,3311,0,0,0,0,0,0,0,0,3312,3314,3315,0,3318,0,0,0,0,0,0,0\r
-,0,3319,0,0,0,0,0,3321,0,0,0,0,0,0,0,0,0,3322,0,0,3324,3325,0,0,3326,0,0,3328,\r
-3329,3331,0,0,3335,0,0,3337,0,3338,0,0,0,0,3343,3347,0,0,0,3348,0,0,3351,0,0,0,0\r
-,0,0,3354,0,0,0,0,0,0,0,0,0,0,3355,0,0,3365,3366,3367,0,0,0,0,0,0,3368,3369,0,\r
-3370,0,0,3373,0,0,3376,0,0,3377,0,3379,3387,0,0,0,0,0,3390,0,0,0,0,0,0,0,3402,0,\r
-3403,3436,3437,3439,0,0,3441,0,0,0,3442,0,0,3449,0,0,0,3450,0,0,0,0,0,0,0,3451,0\r
-,0,3452,0,3453,3456,0,3457,0,0,3458,0,3459,0,0,0,0,0,0,0,0,0,3460,0,0,3469,3470,\r
-0,0,3475,0,0,0,3480,3487,3489,0,3490,0,0,3491,3499,0,3500,0,0,3501,0,0,0,3502,0,\r
-3514,0,0,0,3516,3517,0,0,0,3518,0,0,0,0,3520,3521,3522,0,0,3526,3530,0,0,0,0,\r
-3531,0,0,0,0,3536,0,0,0,0,0,0,0,3539,3541,0,0,3542,3544,0,3547,3548,0,0,3550,0,\r
-3553,0,0,0,0,0,0,0,3554,0,3555,0,3558,0,3559,0,0,0,0,0,0,0,0,3563,0,3581,0,0,0,\r
-3599,0,0,0,3600,0,3601,0,3602,3603,0,0,3606,3608,0,3610,3611,0,0,0,0,0,0,0,0,0,\r
-3612,3616,3619,0,0,0,0,0,0,0,0,0,0,0,0,0,3624,3628,0,3629,3634,3635,0,0,0,0,0,0,\r
-3636,0,3637,0,0,3638,3651,0,0,0,0,0,0,3652,3653,0,0,0,0,3656,3657,0,0,0,0,0,3658\r
-,0,0,0,0,3659,0,3661,3663,3664,0,3665,0,3692,0,0,0,3694,3696,0,0,0,0,0,0,0,0,0,0\r
-,0,0,3698,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3700,0,0,3701,0,0,0,3708,3709,0,0,0,3711\r
-,3712,0,0,0,0,0,3723,0,3724,3725,0,0,3726,0,0,0,0,0,0,3728,3729,0,3734,3735,3737\r
-,0,0,0,3743,0,3745,0,0,3746,0,0,3747,3748,0,3757,0,3759,3766,3767,0,3768,0,0,0,0\r
-,3769,0,0,3771,0,3774,0,0,0,0,0,0,3775,0,0,0,0,0,0,3776,0,3777,3786,0,3788,3789,\r
-0,0,0,0,0,0,0,0,0,3791,0,3811,0,0,0,0,0,3814,3815,3816,3820,0,0,0,0,0,0,0,3821,0\r
-,0,3825,0,0,0,0,3835,0,0,3848,3849,0,0,0,0,3850,3851,3853,0,0,0,0,3859,0,3860,\r
-3862,0,0,0,0,0,3863,0,0,0,0,0,0,0,0,3873,0,3874,0,3875,3886,0,3887,0,0,0,0,3892,\r
-3913,0,3914,0,0,0,3925,3931,0,0,0,0,3934,3941,3942,0,0,0,0,3943,0,0,0,3944,0,0,0\r
-,0,0,3945,0,3947,0,0,0,3956,3957,0,0,0,0,0,0,0,0,0,3958,0,3959,3965,0,0,0,0,3966\r
-,0,0,0,3967,0,0,0,3968,3974,0,0,0,0,0,3975,3977,3978,0,0,0,0,3980,0,3985,0,0,0,0\r
-,0,0,0,0,3986,4011,0,0,4017,0,0,0,0,0,0,0,0,0,0,0,4018,0,0,0,0,4019,0,4023,0,0,0\r
-,4027,4028,0,0,0,0,0,0,0,0,4031,4034,0,0,4035,4037,4039,4040,0,0,0,0,0,4059,0,\r
-4060,4061,0,4062,4063,4066,0,0,4072,0,0,0,0,0,0,0,0,0,0,0,0,0,4088,0,0,0,0,0,\r
-4091,0,0,0,0,4094,4095,0,0,4096,0,0,0,0,0,4098,4099,0,0,0,4101,0,4104,0,0,0,4105\r
-,4108,0,4113,0,0,4115,4116,0,4126,0,0,4127,0,0,0,0,0,0,0,4128,4132,4133,0,4134,0\r
-,0,0,4137,0,0,4141,0,0,0,0,4144,4146,4147,0,0,0,0,4148,0,0,4311,0,0,0,4314,4329,\r
-0,4331,4332,0,4333,0,4334,0,0,0,4335,0,4336,0,0,0,4337,0,0,0,4342,4345,4346,4350\r
-,0,4351,4352,0,4354,4355,0,0,4364,0,0,0,0,4369,0,0,0,4373,0,4374,0,0,0,0,4377,0,\r
-0,0,0,4378,0,0,0,4380,0,0,0,4381,4382,0,0,0,0,0,0,0,4384,0,0,0,0,4385,0,0,0,4386\r
-,0,0,0,4391,4398,0,0,0,0,4407,4409,0,0,0,0,4410,0,0,4411,0,4414,4415,4418,0,4427\r
-,4428,4430,0,4431,0,4448,0,0,0,0,0,4449,0,0,0,4451,4452,0,4453,4454,0,4456,0,0,0\r
-,0,0,0,0,4459,0,4463,0,0,0,0,0,4466,0,4467,0,4469,0,0,0,0,0,0,0,0,0,0,0,0,0,4470\r
-,4471,0,4473,0,0,4475,0,0,0,0,4477,4478,0,0,0,4479,4481,0,4482,0,4484,0,0,0,0,0,\r
-0,0,4486,0,0,4488,0,0,4497,0,4508,0,0,4510,4511,0,4520,4523,0,4524,0,4525,0,4527\r
-,0,0,4528,0,0,0,0,4530,0,4531,0,0,4532,0,0,0,4533,0,0,0,0,0,4535,0,0,0,4536,0,0,\r
-0,0,0,4541,4543,4544,4545,4547,0,4548,0,0,0,0,4550,4551,0,4553,0,0,0,0,4562,0,0,\r
-4571,0,0,0,4574,0,0,0,4575,0,4576,0,4577,0,0,0,4581,0,0,0,0,0,4582,0,0,4586,0,0,\r
-0,4588,0,0,4597,0,4598,0,0,0,0,4616,4617,0,4618,0,0,0,0,4619,0,4620,0,0,4621,0,\r
-4624,0,0,0,0,0,4625,0,0,0,0,4657,0,4659,0,4667,0,0,0,4668,4670,0,4672,0,0,0,0,0,\r
-4673,4676,0,0,0,0,4687,0,0,0,0,4697,0,0,0,0,4699,0,4701,0,0,0,0,4702,0,0,4706,0,\r
-0,4713,0,0,0,4714,4715,4716,0,0,0,0,0,0,0,0,0,0,0,0,4717,0,0,4720,0,4721,4729,\r
-4735,0,0,0,4737,0,0,0,4739,0,0,0,4740,0,0,0,4741,0,0,0,0,0,4742,0,4745,4746,4747\r
-,0,0,0,0,0,0,0,0,4748,0,0,0,4749,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4751,\r
-4786,0,4787,0,4788,4796,0,0,4797,4798,0,4799,4806,4807,0,0,0,0,4809,4810,0,0,0,0\r
-,0,0,4811,0,0,0,0,0,4812,0,4813,0,0,4815,0,4821,4822,0,0,0,0,4823,0,0,0,0,0,0,0,\r
-0,0,0,4824,0,0,0,0,4826,0,0,0,4828,0,4829,0,0,0,4843,0,0,4847,0,4853,4855,4858,0\r
-,0,0,0,0,4859,0,4864,0,0,4879,0,0,0,0,4880,0,0,0,0,4881,0,4882,0,0,0,0,0,0,0,0,0\r
-,4883,0,0,0,0,4884,0,0,0,0,0,4886,4887,4888,4894,4896,0,4902,0,0,4905,0,0,4915,0\r
-,0,0,0,0,0,0,4916,4917,4919,4921,0,0,0,0,0,4926,0,0,0,0,4927,0,0,0,0,0,0,0,0,\r
-4929,0,4930,4931,0,4938,0,4952,0,4953,4957,4960,4964,0,0,0,0,0,0,0,5019,5020,\r
-5022,0,0,0,0,0,5023,0,0,0,5024,0,0,0,5025,0,0,0,0,5028,0,0,0,0,5029,5030,5031,0,\r
-5033,0,0,0,0,0,0,0,0,0,5034,5035,0,5036,0,0,5037,0,0,0,0,5038,0,0,5039,0,0,0,\r
-5041,5042,0,0,0,0,5044,5049,5054,0,5055,0,5057,0,0,0,5060,0,0,0,0,0,5063,0,5064,\r
-5065,0,5067,0,0,0,5068,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5076,0,0,0,0,0,0,\r
-0,5077,0,0,5078,5080,0,0,5083,0,0,0,0,0,0,0,0,5085,0,0,0,0,0,0,5098,5099,5101,\r
-5105,5107,0,5108,0,5109,0,0,0,0,0,0,0,5110,0,0,0,0,0,5117,5118,0,5121,0,5122,0,0\r
-,5130,0,0,0,5137,0,0,0,5148,0,0,0,0,0,0,0,5151,5154,0,0,0,5155,0,0,5156,5159,\r
-5161,0,0,0,0,5162,0,0,0,0,5163,5164,0,5166,0,0,0,0,0,0,0,0,0,0,5167,0,0,0,5172,0\r
-,0,0,0,0,0,5178,5179,0,0,5190,0,0,5191,5192,5194,0,0,5198,5201,0,0,0,0,0,5203,0,\r
-5206,5209,0,0,0,0,0,0,5213,0,5214,5216,0,0,0,0,0,5217,0,0,0,0,0,0,0,0,5218,5219,\r
-0,5231,0,0,5244,5249,0,5254,0,5255,0,0,5257,0,0,0,0,0,5258,0,5260,5270,0,5277,0,\r
-0,0,0,0,0,5280,5281,5282,5283,0,0,0,0,0,5284,0,5285,0,0,0,0,0,5287,5288,0,0,0,0,\r
-0,0,0,0,0,0,5289,5291,0,0,5294,0,0,5295,0,0,0,0,0,0,0,5304,0,0,5306,5307,5308,0,\r
-5309,0,0,5310,0,0,0,0,5311,5312,0,5313,0,0,0,0,0,5316,0,0,0,5317,0,0,0,0,0,0,0,0\r
-,0,5325,0,0,0,0,0,0,5326,0,5327,5329,0,5332,0,0,0,0,5338,0,0,0,0,0,0,0,0,5340,0,\r
-0,5341,0,0,0,5342,0,5343,5344,0,0,5345,0,0,0,0,0,0,5347,5348,0,0,0,0,0,0,0,0,0,\r
-5349,0,5350,0,5354,0,0,0,0,5358,0,0,5359,0,0,5361,0,0,5365,0,5367,0,5373,0,0,0,\r
-5379,0,0,0,5380,0,0,0,5382,0,5384,0,0,0,0,0,0,5385,0,0,0,0,5387,0,0,0,0,0,0,5388\r
-,5390,5393,0,0,0,0,0,0,0,0,0,0,0,5396,0,0,0,0,5397,5402,0,0,0,0,0,5403,0,0,0,\r
-5404,5405,0,0,0,0,0,0,0,0,0,0,0,0,5406,0,0,0,0,5410,0,0,5411,0,5415,0,0,0,0,5416\r
-,5434,0,0,0,0,0,0,0,0,0,0,0,5438,0,5440,0,0,0,0,0,0,5441,5442,0,0,0,5443,5444,\r
-5447,0,0,5448,5449,5451,0,0,0,5456,5457,0,0,0,5459,0,0,0,5461,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,5464,0,5466,0,0,5467,0,5470,0,0,5473,0,0,5474,0,0,5476,0,0,0,0,0,0,0,0\r
-,0,0,0,5477,0,0,0,0,0,0,0,5484,0,0,5485,5486,0,0,0,0,0,5488,0,0,0,0,0,0,0,5489,0\r
-,0,0,0,0,5507,0,0,0,5510,0,5511,0,0,5512,0,0,0,5513,0,5515,0,0,5516,5517,0,5518,\r
-0,0,5522,0,0,0,0,0,5534,5535,0,0,5536,0,5538,0,0,5543,0,5544,0,0,5545,0,5547,0,\r
-5557,0,0,5558,0,5560,5567,0,0,0,0,5568,0,0,0,5571,5573,0,5574,0,5575,0,0,0,0,\r
-5577,0,0,5598,0,0,0,0,0,0,0,0,0,5600,5609,0,0,0,0,5610,0,0,5612,0,5624,0,5625,0,\r
-0,0,5629,0,5641,0,5642,5643,0,0,0,0,0,0,5651,0,0,0,5652,5653,0,5661,5662,5678,0,\r
-5679,0,0,0,0,5685,5686,0,0,0,0,0,5690,5692,0,5703,0,0,0,0,0,5706,0,0,0,0,5707,0,\r
-0,0,0,0,0,5708,0,0,5709,0,5710,0,0,0,5712,0,5733,0,5734,5735,0,0,5744,5751,0,0,0\r
-,0,0,0,0,0,0,0,0,0,5752,0,5754,0,0,0,0,0,0,5757,5758,0,5760,5761,0,0,0,0,5763,\r
-5764,5765,0,5766,0,5767,5768,0,5770,0,0,0,0,5776,5780,0,0,0,0,5782,0,0,0,0,5784,\r
-0,0,5788,0,0,0,0,0,0,0,0,0,0,0,5797,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5799,0,0,5801,\r
-0,0,0,5811,0,0,0,0,0,0,5816,0,0,5827,0,0,0,0,0,0,0,0,5830,5831,0,0,5832,0,0,5833\r
-,0,5835,5844,5845,0,5846,0,0,0,0,0,5850,0,0,0,0,0,5852,0,5855,5857,0,0,5859,0,\r
-5861,0,0,5863,0,5865,0,0,0,5873,5875,0,0,0,5877,0,5879,0,0,0,5888,0,0,5889,5891,\r
-0,5894,0,0,0,0,0,0,5895,0,5897,0,0,0,0,0,0,5907,0,5911,0,0,5912,0,5913,5922,5924\r
-,0,5927,5928,0,0,0,0,5929,5930,0,5933,0,0,0,0,5949,0,0,5951,0,0,0,0,0,0,0,0,5953\r
-,0,0,5954,0,5959,5960,5961,0,5964,0,0,0,5976,5978,5987,5990,0,0,0,0,0,5991,0,\r
-5992,0,0,0,5994,5995,0,0,5996,0,0,6001,6003,0,0,0,0,6007,0,0,0,0,0,6008,0,0,6009\r
-,0,6010,0,0,0,6011,6015,0,6017,0,6019,0,6023,0,0,0,0,0,0,0,6025,0,0,0,0,0,0,0,0,\r
-0,0,6026,0,6030,0,0,6032,0,0,0,6033,6038,6040,0,0,0,6041,6045,0,0,6046,0,0,6053,\r
-0,0,6054,0,6055,0,0,0,0,0,0,6057,0,6063,0,0,0,6064,0,6066,6071,6072,0,0,0,0,0,0,\r
-6075,6076,0,0,6077,0,0,0,0,0,0,0,0,0,6078,6079,0,0,0,0,0,0,0,0,6080,0,6083,0,0,0\r
-,0,0,6084,0,0,6088,0,6089,0,0,6093,6105,0,0,6107,0,6110,0,0,0,6111,6125,6126,0,0\r
-,0,6129,0,0,0,0,6130,0,0,0,6131,6134,0,0,0,0,0,0,6142,0,0,0,0,0,6144,0,0,6146,\r
-6151,6153,0,6156,0,6163,0,6180,6181,0,0,0,0,0,6182,0,0,0,0,6184,6195,0,0,6206,0,\r
-6208,0,0,6212,6213,6214,0,6215,0,0,0,6228,0,0,0,6234,0,0,0,0,0,0,6235,6240,0,\r
-6242,6243,6244,0,6250,6255,0,0,0,0,0,6257,0,0,0,6258,6278,0,6284,0,0,0,6285,0,0,\r
-0,0,0,0,0,0,6286,0,0,0,6320,0,0,6322,6332,0,0,0,0,0,0,0,0,6334,0,0,0,0,0,0,0,\r
-6335,0,0,6337,0,6338,0,6339,6340,0,0,6356,6357,6369,0,0,0,6370,6371,6372,0,6373,\r
-0,0,0,0,0,6376,0,0,0,0,0,6382,6383,6384,0,0,0,0,6386,0,6389,6397,6400,6411,0,\r
-6414,0,0,0,0,0,0,0,6415,6416,0,0,0,0,0,0,6417,0,0,0,0,6418,0,0,0,0,0,0,0,6420,0,\r
-6421,6423,6425,0,6429,6430,0,6433,6438,0,0,0,0,0,0,0,0,0,0,6439,6440,0,0,6441,0,\r
-0,6444,0,0,0,0,6446,0,0,0,0,6447,6448,0,0,6450,0,0,0,6454,0,0,6455,0,6461,0,0,0,\r
-0,0,0,6462,0,0,6463,0,6464,0,6465,6467,0,0,0,6468,0,6479,6480,0,0,0,0,0,0,0,6481\r
-,0,0,6485,6487,0,0,0,0,0,0,6493,0,0,0,0,0,0,0,0,6494,6495,6496,0,0,0,0,0,6498,0,\r
-0,0,6507,6508,0,0,0,0,0,0,0,0,0,0,6511,6512,0,0,0,0,6513,0,0,0,6514,0,0,0,0,0,\r
-6516,0,0,6517,6518,0,0,0,6519,6520,6521,0,6523,0,0,0,0,6524,6528,0,6530,0,0,6532\r
-,0,6578,0,0,0,6583,0,6584,0,0,0,6587,0,0,0,6590,0,6591,0,0,0,0,0,6592,0,0,0,0,\r
-6593,6594,0,0,0,0,0,6599,6600,0,0,6601,6602,6604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-6608,0,0,0,0,0,0,0,0,6610,6611,0,6615,0,6616,6618,6620,0,6637,0,0,0,0,6639,0,0,0\r
-,0,6641,0,6642,0,0,0,6647,0,6660,6663,0,6664,0,6666,6669,0,6675,6676,6677,0,0,0,\r
-0,0,0,0,0,0,6678,0,0,0,6679,0,6680,0,0,0,0,0,0,0,6693,0,0,0,0,0,0,0,0,0,6704,\r
-6705,6706,0,0,6711,6713,0,0,0,0,0,6716,0,0,0,6717,0,6719,6724,0,0,0,0,0,0,0,0,\r
-6725,6726,0,0,0,0,0,6728,6729,6735,0,6737,6742,0,0,6743,6750,0,6751,0,0,6752,\r
-6753,0,0,0,0,0,0,6754,0,0,0,0,0,6756,0,0,0,0,0,0,6763,0,0,6764,6765,0,0,0,6770,0\r
-,0,0,6776,6780,0,6781,0,0,0,6783,0,6784,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-6785,0,0,0,6792,0,0,0,6793,0,0,6802,0,0,0,0,0,6803,0,0,0,6804,0,0,0,6812,0,0,\r
-6823,0,6824,6839,0,0,0,0,6852,0,0,6854,0,6856,6857,0,0,0,0,0,0,0,0,0,6867,0,6868\r
-,6870,6872,0,0,0,6873,6874,0,0,0,0,0,6875,0,0,6877,0,0,0,0,0,0,0,6878,0,0,0,6879\r
-,0,6880,0,0,0,0,0,0,0,0,0,0,6887,0,6888,6891,6893,0,6895,0,0,0,0,0,0,0,0,6899,0,\r
-0,0,0,6901,0,0,0,0,6910,0,6911,0,0,6912,0,0,6913,6914,0,0,0,6915,0,0,0,6916,6919\r
-,0,0,0,0,0,0,6924,0,6925,0,0,0,6926,6927,6928,0,6929,0,6930,0,0,6931,6935,0,6936\r
-,0,0,0,0,6939,6940,6941,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6942,6948,6949,0,0,0,0,0,0\r
-,0,6952,6954,6963,6965,6966,0,0,6967,6968,0,0,0,0,0,0,0,0,0,6969,0,0,6970,6979,0\r
-,0,6980,0,0,6983,0,0,0,0,0,6984,0,0,0,0,0,0,0,6988,6990,6992,0,0,0,0,0,0,0,6995,\r
-0,0,0,7012,0,0,0,0,0,0,0,0,0,7019,0,0,0,0,0,0,0,0,7021,0,0,7022,7023,7028,0,7030\r
-,7033,0,0,0,0,0,0,7038,0,0,0,0,0,0,0,0,0,0,7039,0,0,0,0,0,7046,0,7047,0,0,0,0,0,\r
-0,0,0,0,0,0,7048,7052,0,0,0,0,0,7054,0,7060,0,0,0,0,7061,0,7065,0,0,0,0,7067,\r
-7069,0,7070,7071,7072,0,0,7078,0,7080,7081,0,7083,0,0,0,7084,7087,7088,0,0,7090,\r
-0,7093,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7107,0,0,7108,0,0,0,0,0,0,0,0,7110,0,7114,0\r
-,0,0,0,0,0,0,7115,0,7116,0,0,0,0,0,7117,0,0,7118,0,0,7124,0,7125,0,0,7126,0,0,0,\r
-0,7128,0,0,0,0,0,7129,0,7130,0,7132,7133,0,0,7134,0,0,7139,0,7148,7150,0,0,0,0,\r
-7152,0,0,0,7153,7156,7157,0,0,0,0,0,7158,0,0,0,0,0,0,0,0,0,0,7163,7165,7169,0,\r
-7171,0,0,0,0,0,0,0,0,0,7172,0,7173,7181,0,0,0,0,0,7182,7185,0,0,0,0,7187,0,7201,\r
-7204,0,0,0,0,0,7206,7207,0,0,0,0,7211,7216,0,7218,0,0,0,0,7226,7228,7230,7232,\r
-7233,7235,7237,0,0,0,0,7238,7241,0,7242,0,0,7247,0,0,0,7266,0,0,0,0,0,0,0,7289,0\r
-,0,7290,7291,0,0,7292,0,7297,0,0,0,0,0,0,0,0,0,0,7300,0,7301,0,0,0,0,0,0,0,0,0,0\r
-,0,0,7302,0,0,0,0,7305,0,0,0,0,7307,0,7308,0,7310,0,7335,0,0,0,0,0,0,0,7337,0,\r
-7343,7347,0,0,0,0,0,7348,0,7349,7350,7352,7354,0,0,0,0,7357,0,7358,7366,0,7367,\r
-7368,0,0,7373,0,0,0,7374,0,0,0,0,0,0,0,7376,0,0,0,7377,0,0,0,0,0,7378,0,7379,\r
-7380,0,0,0,0,0,7383,0,0,7386,0,0,0,0,7398,0,0,0,7399,7400,0,7401,0,0,0,0,0,0,0,\r
-7402,0,0,0,0,0,7405,0,0,0,0,0,7406,0,0,0,0,0,0,0,0,7421,7427,7429,0,0,0,7435,0,0\r
-,7436,0,0,0,7437,0,0,0,0,0,0,7438,7443,0,7446,0,7448,0,0,0,0,0,0,0,0,0,0,7456,0,\r
-0,0,0,0,7457,0,0,7461,0,0,0,0,0,7462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7463,7466,7472,\r
-0,7476,0,0,7490,0,7491,0,0,7493,0,0,0,7498,7499,0,0,7508,0,0,0,0,0,7512,0,0,0,\r
-7513,7514,7516,0,0,0,0,7518,0,0,7519,7521,7522,0,0,0,7526,0,0,7529,0,0,7531,0,\r
-7536,0,7538,0,7539,0,0,7541,7542,7546,0,0,0,0,0,7547,0,7548,0,0,0,0,0,7550,0,0,\r
-7552,7553,0,0,0,0,0,0,0,0,0,0,7554,7563,0,7573,0,0,0,0,0,0,7574,7576,0,7578,7581\r
-,7583,0,0,0,7584,0,7587,0,0,0,0,0,7589,0,0,0,7594,0,0,7595,0,0,7600,7602,7610,0,\r
-0,0,0,0,7612,0,7613,7614,0,0,7615,0,0,7616,0,7620,0,7621,7622,0,7623,0,0,0,0,\r
-7626,0,0,0,0,7627,7629,7631,0,0,7633,0,0,0,0,0,7639,0,7640,7642,0,0,7643,0,0,0,0\r
-,7644,0,0,0,0,0,0,0,7645,0,0,0,0,0,7661,7662,7663,7665,0,7666,0,7667,0,7684,7688\r
-,7690,0,7691,0,0,0,0,0,0,7692,0,0,7700,0,7707,0,7708,0,7709,0,7721,0,0,0,7722,0,\r
-7724,0,0,0,0,0,0,7729,7731,0,7732,0,7733,7735,0,0,0,0,0,0,0,7739,0,0,7741,7745,0\r
-,7748,0,0,0,7751,0,0,0,7752,0,0,0,0,0,0,0,7753,0,0,7756,0,7757,0,7759,0,7760,0,0\r
-,0,0,7761,7768,0,0,7769,0,0,7770,0,0,7771,0,0,7772,0,0,7773,0,0,0,0,0,7778,7783,\r
-0,0,0,0,0,7784,7785,0,7790,0,0,0,0,7792,0,7798,0,0,0,0,0,7799,0,7810,0,0,7813,0,\r
-7814,0,7816,0,7818,7824,7825,7826,0,7828,7830,0,0,0,7840,0,7842,0,7843,0,0,0,0,\r
-7844,0,0,0,0,0,0,0,7846,0,0,0,0,0,7856,7857,7858,7862,0,7865,0,0,7866,0,0,7913,0\r
-,0,0,0,7914,0,0,7915,7917,7918,7919,0,7920,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7921,\r
-7922,0,7924,0,0,7925,0,0,7927,0,7930,7935,0,0,7937,0,0,0,0,0,0,7939,0,7940,0,0,0\r
-,0,0,7941,0,0,0,0,7945,0,0,0,0,7949,0,0,0,0,0,0,0,0,7950,0,7953,0,0,0,0,0,0,0,\r
-7968,0,0,0,0,7969,7972,7992,0,7993,0,0,0,0,0,0,0,0,0,0,0,7994,0,0,0,0,8007,8008,\r
-0,0,0,0,0,0,0,0,0,0,0,0,8010,0,0,0,8012,0,0,0,0,0,0,0,0,8018,0,8028,8029,0,0,\r
-8030,0,0,8032,8033,0,0,8034,8036,0,0,0,0,0,0,0,0,0,0,8037,0,0,0,8043,8052,8059,\r
-8060,0,0,8061,0,0,0,8062,0,8063,0,8064,0,8066,8068,0,0,0,8080,8081,0,8089,0,0,0,\r
-0,0,8092,0,0,0,0,0,0,8093,8110,0,0,0,0,0,0,0,8111,0,0,0,0,0,8112,8115,0,8117,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8120,8121,8122,8128,8129,8130,8131,0,0,8139,0,0,\r
-8144,0,0,0,0,8145,8146,8153,0,0,0,0,0,0,0,0,8154,0,8157,8160,8162,0,8164,8165,0,\r
-0,0,0,8166,8167,0,0,8179,0,0,0,8185,0,0,0,8186,0,0,8187,0,0,0,8188,0,0,0,0,0,\r
-8204,0,0,0,0,8210,0,0,0,0,0,8213,0,8214,0,0,8215,0,0,0,0,0,0,8218,0,0,0,0,0,0,0,\r
-0,0,8219,0,8221,0,0,8222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8225,0,0,0,8233,0,0,\r
-8242,0,0,0,0,0,0,0,0,0,0,0,8247,0,8248,8252,0,8256,8257,0,0,8261,0,8264,8265,0,0\r
-,0,0,8267,0,0,0,8269,0,0,0,0,0,0,0,0,0,8270,0,0,0,8278,0,8279,8283,0,0,8285,8286\r
-,8289,8292,0,0,0,0,8293,8295,8299,8300,8301,0,0,0,0,0,0,8304,8307,0,0,0,0,0,0,0,\r
-8321,0,0,0,8322,8323,8325,8326,8327,0,0,8332,8338,0,0,8340,0,0,0,0,0,8350,0,0,\r
-8351,0,8354,8355,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8360,8372,0,0,0,0,0,0,0,0,8377,0,0,\r
-0,0,8380,0,0,0,8383,0,8384,0,0,0,0,8386,8392,0,0,8394,0,0,0,0,0,0,0,8396,8397,0,\r
-8398,0,8399,0,0,0,0,0,8400,0,8401,8410,8411,0,8412,8413,8422,0,0,0,0,8423,0,0,0,\r
-0,8424,0,0,8425,0,0,0,0,0,0,0,8441,8442,0,0,0,0,0,0,8443,0,0,8444,0,8447,0,0,0,0\r
-,8451,0,8458,0,8462,0,0,8468,0,8469,0,0,0,8470,0,8473,8479,8480,0,0,0,0,8481,\r
-8483,0,0,0,0,0,0,0,0,0,8484,0,0,8490,0,0,0,0,0,0,8491,8493,8494,0,8528,0,0,0,0,0\r
-,0,0,8530,0,0,0,0,0,0,0,0,8534,8538,8540,0,0,8541,0,0,8545,0,8557,0,0,8569,8570,\r
-0,0,8571,8574,8575,8579,0,8583,0,0,0,0,8591,0,0,0,0,0,0,0,0,8606,0,8607,0,0,0,0,\r
-0,0,0,0,0,8608,0,0,8609,0,0,0,8610,0,0,0,8611,0,0,8613,8617,8621,0,0,8622,0,8623\r
-,0,8624,8625,0,0,0,0,0,0,0,0,0,8637,8638,8639,8650,0,0,0,0,8652,8654,8655,0,0,0,\r
-0,0,0,0,0,0,0,8656,0,0,0,0,0,8657,0,0,0,0,0,0,0,0,0,8658,0,0,8659,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,8660,0,0,0,0,0,0,8661,8663,8664,0,0,0,0,8665,0,8669,0,\r
-0,0,0,0,0,0,8671,8674,0,8684,0,8686,0,0,0,8689,0,0,0,8690,0,8706,0,0,0,0,0,0,0,0\r
-,0,0,0,8710,0,8711,8713,8714,8724,8727,8728,8733,8736,0,8737,8739,0,0,0,0,8742,\r
-8743,8745,8754,0,0,0,0,8756,0,0,0,0,0,0,8757,8760,0,0,0,0,0,8762,8763,8764,0,\r
-8766,8769,8770,8773,0,8774,0,8779,0,0,0,0,8780,0,0,8781,0,0,8783,0,0,0,0,0,0,0,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8784,0,0,0,0,0,0,0,0,8785,0,0,0,0,8786,0,0,0,0,8788\r
-,8790,0,0,0,8803,0,8813,8814,0,0,0,0,0,8815,8816,0,0,0,0,8818,0,0,0,0,8822,8828,\r
-8829,0,8831,0,0,0,0,8833,0,0,0,8834,0,0,0,8835,0,8836,0,0,0,8837,0,0,0,0,0,0,\r
-8838,8839,0,0,0,0,0,0,0,0,0,0,0,8840,0,0,0,8841,0,8842,0,0,0,8846,0,0,0,0,0,0,0,\r
-8847,0,8848,0,0,8864,0,0,8866,0,0,8870,8872,0,0,8873,8874,0,0,0,0,0,0,8875,0,\r
-8876,0,0,0,0,8896,8900,0,0,0,0,8901,0,0,0,0,0,8904,0,8907,0,0,0,0,8911,8912,8913\r
-,0,0,0,8914,0,8915,0,0,0,0,0,0,0,0,0,0,0,0,8916,0,0,0,8929,0,0,0,0,0,0,0,0,0,0,\r
-8930,0,8932,0,8943,0,0,0,8945,8947,0,0,0,0,8949,0,8950,0,8954,8957,0,0,8970,0,0,\r
-0,0,8971,0,8996,0,0,0,0,8997,9000,0,0,0,0,9001,9002,0,9004,9009,9024,0,0,0,0,0,0\r
-,0,0,0,0,0,0,9027,9082,0,0,9083,9089,0,0,0,0,0,0,9090,0,0,0,9092,0,0,9093,0,9095\r
-,0,0,9096,9097,9101,9102,0,0,0,0,0,0,0,0,9112,0,0,0,0,0,0,9114,0,0,9120,0,9121,\r
-9122,0,0,0,9123,9124,0,0,9125,0,0,9126,0,9127,0,0,9129,9131,0,0,0,9132,0,0,9136,\r
-0,9144,0,0,9148,0,0,0,0,0,0,9149,0,9152,9163,0,0,9165,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-9166,0,9169,0,0,0,0,0,0,0,9170,0,0,0,0,9172,0,9174,9175,9176,0,9177,0,0,0,0,0,0,\r
-0,0,9186,0,9187,0,0,0,9188,9189,0,0,9190,0,0,0,0,9191,0,0,0,9193,0,0,0,0,9197,\r
-9198,0,0,0,9208,9211,0,0,0,0,9216,9217,0,9220,0,0,0,0,9221,9222,9223,0,9224,9225\r
-,0,0,9227,0,9228,9229,0,0,9230,0,9232,0,9233,0,0,0,0,0,9234,9235,0,0,9237,0,0,0,\r
-0,0,0,0,0,9238,9240,0,0,9241,0,0,0,0,9244,0,0,0,0,9247,0,0,0,0,0,0,0,0,0,0,9248,\r
-0,0,0,9249,0,0,0,0,0,9250,0,0,0,0,9251,0,0,9252,9255,0,0,0,9256,0,0,0,0,0,0,0,\r
-9257,0,0,9258,0,0,0,0,0,0,9259,0,0,0,0,0,9262,9263,0,0,9265,9266,0,0,0,0,0,0,0,0\r
-,9268,9271,0,0,0,0,0,0,0,0,0,9273,0,0,0,9276,9277,9279,0,0,0,0,0,0,0,9280,0,0,\r
-9293,0,0,0,0,0,9297,9301,0,0,0,0,0,0,0,0,0,0,0,9308,9309,9313,9321,9322,0,9326,\r
-9327,0,0,9477,0,9479,0,0,0,0,9482,0,0,0,9483,0,9484,0,0,0,0,0,0,0,0,0,9485,0,0,\r
-9486,0,0,0,9489,0,0,0,0,9490,9491,0,0,0,0,9493,0,9495,9496,0,0,0,0,0,0,0,0,9500,\r
-0,9502,0,0,0,0,0,9504,9507,0,9509,0,9511,0,0,9513,0,0,0,0,0,0,0,0,9515,0,0,0,0,0\r
-,0,9516,9517,0,0,0,0,9532,0,0,9533,0,0,9538,0,9539,9540,0,0,0,0,9541,0,0,0,9542,\r
-0,0,0,0,0,0,0,0,9544,9545,0,9546,0,0,0,0,0,0,9547,9548,0,0,0,9550,0,9557,0,9558,\r
-0,9561,0,9563,9570,0,9572,9574,9575,0,0,0,9577,9592,0,0,9596,0,0,0,9598,0,9600,0\r
-,9601,0,0,0,0,0,0,9608,0,9638,9639,0,0,0,0,0,0,0,9641,0,0,9643,9644,9645,9646,0,\r
-0,0,9648,0,0,0,0,0,0,0,9650,9654,0,0,0,0,0,0,0,0,9655,0,0,0,0,0,9656,0,9657,0,0,\r
-0,0,9658,0,0,9659,0,0,9664,0,0,9665,0,9667,9669,0,0,0,0,0,0,0,0,0,0,0,0,9671,0,\r
-9673,9681,0,0,0,0,9682,9683,9684,0,0,0,0,9686,9698,0,0,9700,9701,9702,0,9703,\r
-9717,0,0,0,0,9718,0,9726,0,0,0,0,9727,0,0,0,9728,0,9742,0,9744,0,0,0,9750,0,9754\r
-,9755,0,0,0,0,0,9756,0,9757,9768,0,9769,0,0,0,9770,9771,0,9773,0,9774,0,9775,0,0\r
-,0,9776,9777,9784,0,0,0,9786,0,9789,0,0,0,0,9793,9794,0,0,0,9808,0,0,0,0,0,9811,\r
-0,0,0,0,0,0,0,0,0,0,0,0,9812,0,9820,0,9823,0,9828,0,0,0,0,9830,0,0,9833,9836,0,0\r
-,0,9840,0,0,0,9841,0,0,9842,0,9845,0,0,0,9847,9848,0,0,9855,0,0,0,0,0,0,9856,\r
-9863,9865,0,0,0,0,0,0,0,0,9866,9867,9868,9873,9875,0,0,0,0,0,0,9880,0,9886,0,0,0\r
-,9887,0,0,9891,0,0,0,0,0,0,0,9906,9907,9908,0,0,0,9909,0,0,0,0,0,0,9910,0,0,0,0,\r
-9913,0,0,0,0,9914,0,0,0,0,0,9922,0,0,0,0,9923,9925,0,0,0,0,0,0,9930,0,0,0,9931,0\r
-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9932,0,9939,0,0,9940,9962,9966,0,9969,9970,0,0,9974\r
-,0,9979,9981,9982,0,0,0,9985,0,0,0,0,0,0,9987,0,0,0,0,0,0,0,9988,9993,0,0,9994,0\r
-,0,0,9997,0,10004,0,0,0,0,0,10007,10019,10020,10022,0,0,0,10031,0,0,0,0,0,10032,\r
-0,0,10034,0,10036,0,0,0,0,10038,0,10039,10040,10041,10042,0,0,0,0,0,10043,0,0,0,\r
-0,0,10045,10054,0,0,0,0,10055,0,0,10057,10058,0,0,0,0,0,0,10059,0,0,0,0,0,0,0,\r
-10060,0,0,0,0,0,0,0,10063,0,10066,0,0,0,10070,0,10072,0,0,10076,10077,0,0,10084,\r
-0,10087,10090,10091,0,0,0,10094,10097,0,0,0,0,0,0,10098,0,0,0,0,0,0,10103,0,\r
-10104,0,10108,0,0,0,0,0,0,0,0,10120,0,0,0,10122,0,0,10125,0,0,0,0,10127,10128,0,\r
-0,10134,0,10135,10136,0,10137,0,0,10147,0,10149,10150,0,0,10156,0,10158,10159,\r
-10160,10168,0,0,10171,0,10173,0,0,0,10176,0,0,0,0,10177,0,0,0,0,10178,0,0,0,0,\r
-10194,0,10202,0,0,10203,10204,0,10205,10206,0,10207,0,0,0,0,10209,0,0,0,0,0,0,0,\r
-10213,0,0,0,0,0,0,10217,0,10229,0,10230,10231,0,0,10232,0,0,10237,10238,10244,0,\r
-0,0,0,0,10250,0,10252,0,0,0,0,0,0,10255,0,0,10257,0,0,0,0,0,0,10258,0,10259,0,0,\r
-0,0,0,0,0,0,10260,0,0,0,0,0,0,0,10284,10288,10289,0,0,0,10290,0,10296,0,0,0,0,0,\r
-10297,0,0,0,0,0,0,10298,0,0,0,0,10299,10303,0,0,0,0,0,10306,0,0,0,10307,0,10308,\r
-0,0,0,0,10311,0,0,0,0,0,0,0,10315,10317,0,0,0,10318,10319,0,10321,0,10326,0,\r
-10328,0,0,0,0,10329,0,0,10331,0,10332,0,0,0,0,0,0,10334,0,0,10335,10338,0,0,0,0,\r
-0,10339,10349,0,0,0,0,0,0,10351,0,10353,0,0,0,0,0,0,10362,0,10368,0,10369,0,0,0,\r
-10372,10373,0,0,0,0,0,10374,0,0,0,10375,0,10376,0,0,10386,10388,10390,0,0,0,0,0,\r
-0,0,10391,0,0,10392,10394,0,0,10396,0,10397,0,10403,0,0,0,0,0,0,0,0,10404,0,\r
-10405,10410,0,0,10411,0,10412,0,0,0,0,0,0,0,10421,10422,10423,0,0,0,0,0,0,0,0,0,\r
-10425,0,0,10427,0,0,10430,0,0,0,0,0,10432,0,10433,10434,0,0,0,0,10436,10437,0,\r
-10438,0,10439,0,10444,10446,0,0,0,0,0,10448,0,0,0,0,0,10449,0,0,0,0,0,0,0,10451,\r
-0,10453,0,0,0,10454,10457,0,0,10459,0,10469,0,0,0,0,0,10472,10481,0,0,0,0,0,\r
-10482,10483,0,10492,0,0,0,0,0,0,0,0,0,0,10499,0,0,0,10502,0,0,10510,0,10521,\r
-10524,0,0,10525,10526,10528,0,0,0,0,0,0,0,0,10530,0,0,0,0,10533,0,10534,0,0,0,0,\r
-0,0,0,0,0,0,10535,10536,0,0,10544,0,10553,10556,0,10557,10559,0,0,0,0,0,10562,\r
-10563,10564,0,10565,0,0,0,10566,0,10567,0,0,0,0,10575,0,0,10576,0,10578,0,0,0,0,\r
-0,0,0,0,0,0,10585,10586,10587,10589,0,10590,0,0,10594,0,0,0,0,0,10598,0,0,10601,\r
-0,0,0,10602,0,10603,0,10604,0,10605,0,0,10607,0,10626,0,10627,0,0,0,0,0,10629,\r
-10630,10631,0,0,0,10646,0,0,0,10647,0,10650,0,10651,0,0,0,10652,10653,10655,0,\r
-10658,0,0,10659,0,10667,0,0,0,0,10669,0,0,0,0,0,0,0,0,0,10670,0,0,0,10671,0,0,0,\r
-0,10672,10673,0,10674,0,0,0,10676,0,0,0,0,0,0,10678,0,10682,0,0,10692,0,10697,0,\r
-0,0,0,10698,0,0,0,10700,0,0,0,0,0,10703,0,10704,0,0,0,0,0,0,0,10705,0,10715,\r
-10718,10720,0,0,10722,0,0,0,0,0,0,0,0,10723,0,0,0,0,10726,0,0,0,0,0,10727,10730,\r
-10743,0,0,0,0,0,0,10744,0,0,10745,0,0,0,0,0,0,10748,0,0,0,0,10750,0,0,10752,\r
-10753,0,0,0,10756,0,0,0,0,0,0,10758,0,0,0,10759,0,10769,0,0,10772,0,0,0,0,0,0,\r
-10773,0,0,0,10777,0,0,10779,0,0,0,0,0,0,0,0,10780,10784,0,0,0,10789,0,0,0,10791,\r
-0,0,0,0,0,0,0,0,0,10795,0,0,10796,0,10808,0,10809,0,0,0,10810,0,0,0,10812,0,0,\r
-10814,0,0,0,0,0,0,0,0,0,10815,0,0,0,0,10816,10817,0,0,0,0,10819,0,10820,0,0,0,0,\r
-10821,10822,10823,0,10826,10849,0,0,0,0,10850,0,0,10852,0,10853,0,0,10856,0,0,\r
-10857,10858,10859,10860,0,0,0,0,0,0,10863,0,10866,10867,10872,10890,0,0,10891,\r
-10892,0,0,0,0,0,10893,0,0,0,10896,10899,0,0,10900,10902,0,0,0,0,0,10903,0,0,0,0,\r
-0,0,0,0,0,0,0,0,10905,0,10906,0,0,0,0,10908,10911,0,10912,0,0,10916,0,0,0,0,0,\r
-10917,0,10918,0,0,0,10923,0,0,0,0,0,10924,0,0,10928,10929,0,0,10930,0,0,0,10932,\r
-0,0,0,0,10939,0,0,10945,0,0,0,10947,0,0,10948,0,0,0,0,0,0,0,0,0,0,0,0,10958,0,\r
-10960,10962,0,0,10964,0,0,0,10966,0,0,0,0,0,0,0,0,0,0,10967,0,0,0,10968,0,0,0,\r
-10973,0,0,0,0,0,10975,0,0,0,10976,10978,0,0,10982,10984,10987,0,0,10988,0,10989,\r
-0,0,10991,0,0,0,0,10992,0,0,0,10993,0,10995,0,0,0,10996,10997,0,0,0,10998,0,\r
-10999,0,11001,0,0,0,0,0,0,11010,11012,0,11013,11016,11017,0,0,11019,11020,11021,\r
-0,0,0,0,0,0,0,0,0,0,0,0,11022,0,0,11023,11029,0,0,0,0,11031,0,0,0,11034,0,0,0,0,\r
-11055,0,0,0,0,0,11056,11060,0,0,0,0,0,0,11061,0,0,11064,11065,0,11066,0,11069,0,\r
-11085,0,0,0,0,0,11086,0,0,0,11088,0,0,0,11094,0,0,0,11095,11096,0,0,0,0,0,0,\r
-11097,11098,0,0,0,0,0,0,11099,0,0,11102,11108,0,0,0,11109,0,11114,11119,0,11131,\r
-0,0,0,11142,0,0,11143,0,11146,0,11147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11148,0,\r
-11149,11152,11153,11154,0,11156,0,11157,0,0,0,11158,0,0,11159,11160,0,0,0,0,0,0,\r
-0,0,0,0,0,0,11163,0,0,11164,11166,0,0,0,11172,11174,0,0,0,11176,0,0,0,0,0,11182,\r
-11183,0,0,0,11184,11187,0,0,11188,11189,0,0,0,0,0,0,11194,0,0,0,0,0,0,0,11200,\r
-11202,0,0,0,0,0,0,11203,0,11204,0,0,0,0,0,11205,0,0,0,11206,0,11207,0,0,11209,0,\r
-11211,0,11214,0,0,11231,0,0,0,11293,11295,0,0,11296,11297,11302,0,0,0,11307,0,0,\r
-0,0,11309,11310,0,11311,0,0,0,11313,0,11314,0,0,0,0,11334,0,11338,0,0,0,11339,0,\r
-0,0,0,0,11340,0,11341,11342,0,11344,0,11345,0,0,0,11348,11349,0,0,11350,0,0,0,\r
-11355,0,0,0,0,0,0,11356,0,11357,11370,0,0,11371,0,11374,11376,0,0,0,11377,0,0,\r
-11378,11383,0,11386,11399,0,11400,11406,0,0,0,11408,0,0,11409,11412,0,0,0,0,\r
-11417,0,0,0,11418,0,11421,0,11426,11429,0,0,0,0,0,11430,0,11437,0,11438,0,0,0,0,\r
-0,11440,11453,0,0,0,0,0,0,11454,0,0,0,0,11455,0,0,11456,11460,11461,11463,0,\r
-11469,0,11473,0,0,0,0,11474,0,0,0,11475,0,11476,11477,11480,0,0,0,0,11481,0,0,\r
-11484,0,0,11487,0,0,0,0,0,0,0,0,0,0,11497,0,0,11502,0,11509,0,0,11510,11511,\r
-11513,0,0,0,0,0,0,0,0,0,0,11515,0,0,0,0,11516,0,11520,11521,0,0,0,0,0,0,0,0,0,0,\r
-0,11529,11530,11531,11534,0,0,11543,0,0,0,0,0,11547,0,11548,0,0,0,0,0,11552,\r
-11556,0,11557,0,0,11559,0,11560,0,0,0,0,0,0,11561,0,0,11563,11564,0,11565,0,0,0,\r
-0,11567,0,0,0,11569,0,11574,0,11575,0,0,0,11577,0,11578,0,0,0,11580,11581,0,0,0,\r
-11582,11584,0,0,0,0,0,0,0,11587,0,11588,11591,0,11595,0,0,0,0,0,0,0,0,11596,0,\r
-11597,0,0,0,0,11598,11601,0,0,0,11602,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11603,\r
-11604,0,11606,0,0,11608,0,0,0,0,11610,0,0,11611,0,0,0,0,11613,0,11622,0,0,0,\r
-11623,0,0,0,0,11625,0,0,11626,11627,11628,11630,0,0,0,0,0,0,11639,0,0,11646,0,\r
-11648,11649,0,11650,0,0,0,0,0,0,0,0,0,11651,0,0,11652,11653,11656,0,0,11677,\r
-11679,0,0,0,0,11680,0,0,11681,0,11685,0,0,0,0,0,0,0,0,11688,0,0,0,11716,0,11719,\r
-0,0,0,0,0,11721,0,0,11724,11743,0,0,0,0,0,0,0,0,11745,11748,11750,0,0,0,0,0,\r
-11751,0,0,0,11752,11754,0,11755,0,0,0,0,0,0,0,11759,0,0,0,0,0,0,11760,0,0,0,\r
-11761,0,0,0,0,0,0,11766,11767,0,11772,11773,0,11774,0,0,11775,0,11777,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,11778,11780,0,0,0,0,0,0,0,11783,0,11784,0,0,0,11785,\r
-0,0,0,11786,0,0,0,0,11788,0,0,11789,11791,11792,0,0,0,0,11795,11834,11835,11836,\r
-0,0,11837,0,0,0,11838,0,0,11846,11851,0,11852,0,11869,0,0,0,11871,0,0,0,11872,\r
-11874,0,0,0,0,0,0,11875,0,11876,11877,0,0,0,0,0,0,0,0,0,0,11883,0,0,0,0,0,0,0,\r
-11884,0,11885,0,11886,0,0,11887,0,11894,11895,11897,11909,11910,0,11912,11918,0,\r
-0,11920,0,11922,11924,11927,11928,0,0,0,0,11929,0,11934,0,0,0,0,0,11941,11943,\r
-11944,0,11945,0,0,0,0,11948,11949,0,0,0,0,11953,0,11954,0,11955,0,11956,0,0,0,0,\r
-0,11957,0,0,11959,0,0,0,0,0,0,0,0,11961,0,0,0,0,0,11978,0,0,0,11979,11980,11986,\r
-11987,0,11992,0,0,0,0,0,11993,0,0,0,11994,0,11999,12004,12005,12006,0,0,0,0,0,\r
-12011,0,0,12012,12014,0,0,12015,0,0,12019,12028,0,0,12029,0,0,12032,12033,0,0,0,\r
-0,12034,0,12041,12043,0,0,12044,0,0,0,0,0,0,0,12046,0,0,0,0,0,0,0,12054,12055,0,\r
-12056,0,0,0,12060,12064,0,0,0,0,0,12065,12067,12068,0,0,0,0,0,0,0,0,12074,0,0,0,\r
-12075,12076,0,0,0,12079,0,12081,12086,12087,0,0,12088,0,0,0,0,12089,0,12092,0,0,\r
-0,0,12097,0,0,0,0,0,0,0,0,12098,0,0,0,0,0,0,0,0,0,0,0,0,0,12102,12103,12104,\r
-12111,0,0,12114,12116,0,0,0,12118,0,0,0,12119,12120,12128,0,0,0,0,12130,0,0,0,0,\r
-0,0,12131,0,0,0,12132,12134,0,0,0,0,12137,0,12139,0,12141,0,0,12142,0,0,0,12144,\r
-0,0,0,0,0,12145,0,12148,0,12153,0,0,0,0,12154,12171,12173,0,0,0,12175,0,0,0,0,\r
-12178,0,0,0,0,0,0,0,12183,0,0,0,0,0,0,0,0,12184,0,0,0,12186,0,0,0,0,0,12187,\r
-12188,0,0,12189,0,12196,0,12197,0,0,12198,0,12201,0,0,0,0,12203,0,12209,0,0,0,0,\r
-12210,12211,12212,12213,0,12217,12218,0,0,0,0,0,0,0,0,0,12222,0,0,0,0,0,0,0,\r
-12223,0,0,12229,0,0,0,0,12233,0,0,0,0,12234,0,0,12236,12242,0,0,0,12243,0,0,0,\r
-12244,12253,0,12254,12256,0,12257,0,0,12275,0,0,0,0,0,12277,0,0,0,0,0,12278,0,\r
-12289,0,0,12290,0,12292,12293,0,0,12294,0,12295,0,0,12296,0,12297,0,12298,0,0,0,\r
-0,12301,0,0,0,0,0,0,0,0,0,0,0,0,0,12309,0,12338,12340,0,0,0,0,12341,0,0,0,0,0,0,\r
-0,0,12342,12343,0,12344,0,0,0,0,0,0,0,0,0,12345,0,0,0,0,0,0,0,0,12346,0,0,0,0,\r
-12348,0,0,0,0,0,0,0,0,0,0,0,0,12350,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12351,0,12355,\r
-12356,12357,0,0,12367,12370,12371,0,0,0,0,0,12372,12376,0,0,0,0,0,0,0,0,12379,0,\r
-12382,0,12383,0,0,12384,0,0,0,0,12393,0,0,12394,0,0,0,0,12398,12403,0,0,12404,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,12410,0,0,0,12411,0,0,0,12412,0,0,0,0,12420,0,12421,0,0,\r
-0,0,0,12423,0,12425,12429,0,0,0,12431,12432,0,0,0,0,0,0,0,0,0,0,0,0,12434,0,0,0,\r
-0,0,12435,12436,0,0,0,0,0,0,0,0,12437,0,0,0,0,0,12438,0,0,0,0,0,0,0,0,12445,0,0,\r
-0,12450,12451,0,0,0,0,0,0,0,0,12452,12475,0,0,12493,12494,0,0,0,12495,0,0,0,0,\r
-12496,12502,12509,0,0,0,0,12510,0,12512,12513,0,0,0,0,12514,0,0,0,12515,0,12520,\r
-0,0,0,12524,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12527,0,0,0,12528,0,0,0,12529,0,0,0,\r
-0,0,12530,0,12535,0,0,12536,0,12538,0,0,0,0,0,0,0,0,0,0,0,0,12540,0,12548,0,0,0,\r
-0,0,12550,0,0,0,12551,12552,0,0,0,12554,0,0,0,0,0,0,0,0,12555,0,0,12562,0,12565,\r
-0,12566,0,0,0,0,0,0,0,0,0,0,0,0,12569,0,0,0,12571,12574,0,0,0,0,0,0,0,12577,0,0,\r
-0,0,0,0,0,12578,12579,12603,0,12608,0,0,12611,0,12612,0,12615,0,12625,0,0,0,0,\r
-12627,12646,0,12648,0,0,12657,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12670,0,0,12671,0,\r
-12673,12677,0,0,0,0,0,0,0,0,0,0,0,12679,0,12681,0,12682,12693,0,12694,0,12697,0,\r
-12701,0,0,0,12703,12704,0,0,0,0,12707,12737,0,0,12739,0,0,12740,0,0,12742,12743,\r
-0,0,0,0,0,0,0,0,0,12745,0,12746,12747,0,12748,0,0,12759,12767,0,0,0,0,12773,0,\r
-12774,12778,0,0,0,0,0,0,0,12779,0,0,0,0,0,12780,12793,0,12824,0,12825,0,12836,0,\r
-0,0,0,12839,0,12842,0,0,0,0,0,0,0,0,0,0,0,0,12843,12845,0,12846,0,0,0,0,12847,0,\r
-0,12850,12852,12853,0,0,0,12854,0,0,0,12855,0,12856,0,12858,0,0,12859,0,12862,0,\r
-12863,0,0,12866,0,12869,12872,12873,0,0,0,0,0,0,0,0,0,12875,0,12877,0,0,12878,0,\r
-0,0,0,0,0,0,0,0,12884,12885,12888,0,12889,0,0,0,0,12893,0,0,0,12895,12896,12898,\r
-0,0,0,0,0,0,0,12902,0,12909,12910,0,12926,0,12928,0,0,0,12929,0,12930,0,0,0,0,\r
-12931,0,12932,12933,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12934,0,12942,0,0,0,0,12944,\r
-0,0,0,0,0,0,0,0,12946,0,0,12948,0,0,12949,0,0,0,0,12950,0,0,0,0,12951,0,12952,0,\r
-12953,0,0,0,12954,12958,12959,0,0,0,0,0,12960,12964,0,0,0,0,0,12966,0,0,0,0,0,0,\r
-0,0,12970,0,12971,0,0,0,0,0,0,12972,0,0,12982,0,0,0,12984,12985,0,12986,12996,\r
-12997,13001,13002,0,0,0,0,13004,0,0,13005,0,0,13007,13009,0,13017,0,0,0,13020,0,\r
-13021,0,0,0,0,0,0,0,0,0,0,13022,0,0,0,0,0,0,0,0,13024,13027,0,0,0,0,0,13028,0,0,\r
-13029,0,0,0,0,0,0,0,13032,0,13037,0,0,0,0,0,0,13040,0,0,13041,0,0,0,13043,13044,\r
-13046,0,0,0,0,13047,0,0,0,0,0,0,0,13049,13054,0,13056,0,0,13060,13061,0,0,0,0,0,\r
-13067,0,0,13068,0,13071,0,0,0,0,0,13077,13078,0,0,0,0,0,13079,13080,13081,0,\r
-13082,0,0,0,13085,0,0,0,0,0,0,0,13086,0,13087,13088,0,0,0,0,0,13094,0,13099,0,\r
-13100,0,0,0,13101,0,13125,13126,13128,13129,0,0,13130,0,13131,0,0,0,0,0,0,13134,\r
-0,0,0,0,0,0,0,0,0,0,0,13150,0,13168,0,0,0,0,0,0,0,0,0,13169,0,0,13170,0,0,0,0,\r
-13174,0,0,0,13176,0,0,0,0,0,13177,0,13178,13183,13187,0,0,0,13189,0,0,13190,0,0,\r
-13191,0,0,13206,0,0,0,13207,0,0,0,0,0,0,0,0,0,0,13212,0,0,13219,13232,0,0,0,\r
-13241,0,13249,13253,0,0,0,0,0,13255,13259,0,13260,13261,0,13262,0,13272,0,0,0,0,\r
-13276,0,0,0,0,13277,13299,0,0,13301,13302,0,0,13303,0,0,13305,0,13310,0,0,0,\r
-13311,0,0,0,0,13325,0,13328,0,0,0,13329,0,0,0,0,0,0,13330,0,0,13331,0,13335,0,0,\r
-13342,0,0,0,0,0,13343,0,13354,0,13362,0,13366,13367,13369,0,0,13371,13372,0,\r
-13373,13374,0,13376,0,13380,13381,13386,0,13387,13388,0,13389,13391,13395,0,0,0,\r
-0,0,13401,13409,0,13410,0,0,0,0,13420,0,0,0,0,0,13422,0,0,0,0,13423,0,0,0,0,\r
-13425,0,0,0,0,0,13427,0,0,0,13428,0,0,13430,13438,0,13439,0,13445,0,13448,13449,\r
-0,0,0,0,0,0,13451,0,13457,0,0,0,0,13458,13459,0,13460,0,0,0,0,13464,13465,13466,\r
-13470,0,13471,13472,13474,13475,0,13476,0,0,13478,13479,0,13481,0,0,0,0,13487,0,\r
-13490,0,13493,0,0,13494,0,0,13495,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13496,13497,0,\r
-13500,0,0,13516,13522,0,0,13525,13528,0,0,0,13530,13535,0,13537,13539,0,13540,0,\r
-13543,0,13544,0,0,0,0,0,0,13545,0,0,0,0,0,0,13547,0,0,0,13549,13555,0,0,0,13556,\r
-13557,0,0,0,0,0,0,0,13558,0,13563,0,0,0,0,13564,0,0,0,0,0,0,0,0,13566,0,0,0,0,0,\r
-0,13569,0,0,13571,0,0,0,0,13573,0,0,0,0,0,0,13578,0,0,0,0,0,0,0,0,0,0,13581,0,\r
-13586,0,13595,0,13600,0,0,0,0,0,0,0,0,13601,13603,0,13604,13605,13606,13607,0,0,\r
-13617,13618,0,0,0,0,0,0,0,13623,0,13625,13627,0,0,0,0,0,0,0,0,13629,0,0,0,13634,\r
-0,0,0,13638,0,0,0,0,0,0,0,0,13654,0,0,0,0,0,0,0,0,0,0,13656,0,13659,0,0,13660,0,\r
-0,13662,0,0,0,13663,0,13664,0,0,0,0,0,13668,0,13669,13671,0,0,13672,0,0,0,0,0,0,\r
-13675,13685,0,13686,0,0,0,13687,0,0,0,13692,13694,13697,0,0,0,13702,0,0,0,0,0,\r
-13705,0,0,0,0,13707,0,0,0,13714,0,0,0,0,0,0,0,0,0,13715,0,13716,13717,0,0,13719,\r
-13724,13730,13731,0,0,0,0,0,0,0,0,13732,0,0,0,0,0,0,0,13734,0,13736,0,0,13737,\r
-13738,13747,0,13751,0,0,13752,0,0,0,13753,0,13757,0,0,13762,13763,0,13764,13765,\r
-0,13766,0,0,13767,0,0,0,13768,0,0,0,0,0,0,0,13769,0,0,13772,0,13775,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,13776,13778,13787,0,0,0,13797,0,13798,0,13801,0,13804,\r
-13806,0,0,0,0,13816,13817,0,0,0,0,0,0,0,0,0,0,0,0,0,13834,0,13836,0,0,13838,0,0,\r
-13839,0,13840,0,0,0,0,13842,0,0,0,0,0,0,13843,0,0,0,0,0,0,0,0,0,13845,0,0,0,0,0,\r
-13858,0,0,13860,0,0,13861,0,0,13862,13863,0,13868,0,13869,13870,0,0,0,0,0,0,0,0,\r
-0,0,13872,0,0,0,0,13873,13878,0,0,0,0,0,0,0,0,0,0,13886,0,13888,13889,13890,0,0,\r
-13891,13894,0,13897,13899,13900,13904,0,0,13906,0,0,0,13909,0,0,0,13910,0,0,0,\r
-13911,0,0,0,0,0,13912,13917,0,0,0,0,13918,0,13919,0,0,13920,0,0,0,13921,0,0,\r
-13922,0,0,0,0,0,0,0,13924,0,13927,0,0,0,0,0,13932,0,13933,0,13934,0,0,13935,0,\r
-13944,0,0,0,13954,0,0,13955,0,0,0,0,13956,0,13957,0,13967,13969,0,0,0,0,0,0,0,0,\r
-0,0,0,0,13970,13990,0,13991,13994,0,13995,0,0,0,0,13996,0,0,13999,0,0,0,14018,0,\r
-14019,0,14021,0,0,0,0,0,0,14041,0,0,0,0,0,0,0,0,14043,0,0,0,0,14046,0,0,0,14048,\r
-14049,0,0,0,0,0,0,0,0,0,0,14051,0,0,14052,14056,0,14063,0,14064,14066,0,0,14067,\r
-0,0,0,0,0,0,0,0,0,14068,0,0,0,14072,0,14074,14075,0,14076,14079,14085,14086,\r
-14087,14093,0,0,0,0,14095,0,0,0,0,0,0,14096,14097,0,0,0,0,0,0,0,14098,0,14102,0,\r
-0,0,0,0,14103,0,0,0,14104,0,0,14105,0,0,0,14107,14108,0,0,14109,0,0,0,0,0,0,0,0,\r
-14117,0,0,0,0,14118,0,0,0,0,14119,0,0,14120,0,0,14121,0,14122,14127,0,14128,\r
-14136,0,0,14138,0,14140,0,0,0,14141,14142,0,0,0,0,14146,0,0,14149,0,14151,0,0,0,\r
-14152,0,0,14153,0,0,0,0,0,0,0,0,0,14154,0,14156,14157,0,0,14159,0,14161,0,0,0,0,\r
-14162,0,0,0,0,0,0,14163,0,0,14173,0,0,0,0,0,0,14174,0,0,14176,0,0,14178,0,0,\r
-14179,14181,0,0,14182,14185,14187,0,14190,0,0,14197,0,0,0,0,0,0,0,0,0,0,0,0,\r
-14198,0,0,0,0,0,0,14199,14200,0,0,0,14204,0,0,14208,0,0,0,0,0,0,0,0,0,0,0,14231,\r
-0,0,0,0,0,0,0,0,0,14234,0,0,14235,0,0,0,14240,14241,0,0,0,14246,0,0,0,14247,0,\r
-14250,0,0,14251,0,0,14254,0,0,14256,0,0,0,14260,0,14261,0,0,0,0,14262,14267,\r
-14269,0,0,14277,0,0,14278,0,14279,14282,0,0,0,14283,0,0,0,14284,14285,0,0,0,0,\r
-14286,0,0,0,14288,0,0,0,14289,0,14290,0,14293,14301,14302,14304,14305,0,14307,0,\r
-14308,14309,0,0,0,0,0,0,0,0,0,0,0,14311,14312,0,0,14317,0,0,0,0,0,0,0,14318,0,0,\r
-0,0,14320,0,0,0,0,14321,14322,0,0,0,0,0,14326,14329,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-14330,14331,0,0,0,0,14332,0,0,0,14333,0,0,14337,14340,0,14341,0,0,14342,0,14345,\r
-14346,0,0,14347,0,14362,0,0,0,0,0,14364,14365,14371,0,14373,0,0,14374,0,14379,0,\r
-14400,0,0,0,0,0,14401,0,0,14405,0,14406,0,14408,14409,0,0,0,14417,0,0,14424,0,0,\r
-0,0,0,0,0,0,0,14430,0,0,0,14431,0,0,14435,0,14440,0,0,0,0,0,0,14442,0,0,14443,0,\r
-0,0,0,0,14446,0,0,0,0,0,0,0,14454,0,14457,0,14460,0,0,14466,0,0,0,0,0,14467,0,0,\r
-0,0,0,0,14469,0,14477,0,0,0,0,0,0,14478,14482,0,0,0,14483,0,0,0,14485,14486,0,0,\r
-0,14487,14488,14489,14492,14493,14494,14495,14496,14497,0,14499,0,14501,0,0,0,0,\r
-0,0,0,0,0,0,14502,0,14507,14512,14513,14514,0,0,0,0,0,0,0,0,0,0,0,14515,14526,\r
-14530,0,14537,0,14544,0,14547,0,0,14548,14550,14551,0,0,14552,0,0,0,14553,0,\r
-14554,0,0,0,0,14556,14564,0,0,14565,14566,0,0,0,0,0,0,14568,0,0,14569,0,0,0,\r
-14571,14576,0,0,14577,14578,14579,0,0,14580,0,0,0,0,14582,0,0,0,0,0,0,0,0,0,0,0,\r
-0,14583,0,0,0,0,0,14587,0,14588,0,0,14600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,14601,0,0,14604,14605,14611,0,14613,0,0,0,0,14615,0,0,0,0,0,0,14627,0,14628,0,\r
-0,0,0,14631,0,14633,14634,0,0,0,0,14635,0,0,0,0,0,0,0,0,14636,0,0,14639,14642,0,\r
-0,0,0,14644,0,0,0,0,14645,14646,0,14653,0,0,14654,0,14658,0,14661,0,0,0,14665,0,\r
-0,0,14668,0,0,0,0,0,0,0,0,0,14669,0,0,14670,0,0,0,14680,0,0,14681,0,0,0,0,0,\r
-14682,14683,0,0,0,0,14686,0,0,0,0,14687,14697,0,0,0,0,14699,14705,14711,0,0,0,0,\r
-0,0,0,0,0,0,14712,0,0,0,14713,0,0,0,0,14719,0,14720,14721,14726,0,0,0,14728,\r
-14729,0,0,0,0,14731,0,0,0,0,0,0,0,14733,14736,14737,0,0,14740,14742,0,0,0,14744,\r
-14753,0,0,0,0,14755,14758,14760,0,0,0,0,0,14761,14762,14765,14771,0,14772,0,\r
-14773,14774,0,0,14775,0,0,14776,0,0,0,0,14777,0,14779,0,0,14782,0,0,14785,14786,\r
-14788,0,0,0,0,0,14795,0,0,0,0,0,0,14798,0,14803,14804,14806,0,0,0,14809,0,0,0,0,\r
-0,0,14810,0,0,0,0,14811,0,14812,0,0,0,0,0,14815,0,0,0,0,0,0,0,0,14816,0,14818,0,\r
-0,0,0,0,0,14819,0,14820,0,14823,0,0,0,14824,0,0,14826,14827,0,0,0,0,0,0,0,0,0,0,\r
-0,0,14830,0,0,0,0,0,14833,0,14845,0,0,0,0,0,14846,0,0,14847,14871,0,14873,0,\r
-14876,0,14877,14878,14880,0,0,0,0,0,14881,0,14882,14894,0,0,0,0,14895,0,14907,0,\r
-14908,0,0,0,0,0,0,0,14911,0,0,0,0,14920,0,0,14931,0,14932,14934,14935,0,0,14936,\r
-0,14945,0,0,0,0,0,0,0,14947,0,0,14948,14949,14951,0,0,14952,0,0,0,14964,14973,0,\r
-0,14990,0,0,0,0,14995,0,0,14998,15001,0,0,15002,15020,0,0,0,0,0,0,15021,0,15022,\r
-0,0,0,0,15023,0,0,15025,15029,15033,0,0,0,15034,0,0,0,15035,0,0,0,0,0,15043,\r
-15044,0,0,0,15045,15046,15048,15050,0,15065,0,0,0,0,15066,0,0,15075,15082,15084,\r
-0,0,15085,15086,0,0,0,0,0,0,0,0,15088,0,0,0,15089,0,0,0,0,15094,0,15096,0,15097,\r
-0,15100,0,0,15102,0,0,0,0,0,0,0,0,15105,0,0,15106,0,15109,15113,0,0,0,15115,0,\r
-15118,0,0,0,0,0,0,15119,0,0,15120,0,0,0,0,0,15123,15129,0,0,0,15130,0,15131,0,0,\r
-15134,0,15135,0,0,0,15137,15138,0,0,0,0,0,0,15139,0,0,0,0,0,15140,0,0,15154,\r
-15162,0,15169,15170,0,15175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15177,0,15178,15179,0,\r
-0,0,0,0,15183,0,0,0,0,0,0,0,0,0,0,0,0,15185,15187,0,15194,15195,15196,0,0,0,0,0,\r
-0,0,15204,0,0,0,0,15206,0,0,0,0,0,15207,0,0,0,0,0,0,0,0,0,15213,0,15214,0,0,0,0,\r
-0,0,0,15232,0,0,0,0,15234,0,15238,15240,0,15248,0,0,0,0,15250,15251,0,0,0,0,0,0,\r
-0,15252,0,0,0,15255,15262,15266,0,0,0,15267,0,0,0,15277,15279,0,0,0,15280,15281,\r
-15282,0,0,0,0,0,15285,0,0,0,0,15289,0,0,15291,0,0,0,0,0,0,0,15296,15297,0,0,\r
-15304,0,0,0,0,15306,0,0,0,0,0,0,15307,15308,0,15309,0,0,15311,0,0,15312,15313,0,\r
-0,0,0,0,0,0,0,0,0,0,0,15314,15317,0,0,0,15318,15319,0,0,0,0,15320,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,15321,0,0,0,0,0,15324,0,15325,15326,0,15330,0,0,0,0,15334,0,\r
-15335,0,15341,0,0,15342,0,0,15343,15344,0,0,0,0,15345,0,0,0,0,15347,0,0,15348,\r
-15349,15350,0,15356,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15357,0,15358,0,0,0,0,0,0,0,\r
-15359,15360,15364,0,15380,0,0,0,0,0,15392,0,0,15393,0,15395,0,0,0,0,0,0,0,0,\r
-15396,0,0,15397,15398,0,0,0,0,0,0,0,0,0,15399,0,15400,0,0,0,15402,0,15405,15410,\r
-0,0,0,0,15411,0,0,0,15412,0,15416,0,0,0,0,0,0,0,15428,0,15435,0,0,15438,0,0,0,0,\r
-15439,0,0,0,15440,0,0,0,15441,15449,15451,0,0,0,0,0,0,0,15452,0,0,15455,0,0,0,\r
-15456,0,0,15458,0,15460,15461,0,0,0,0,0,15462,15464,0,15465,0,0,15466,0,0,15467,\r
-0,0,0,0,0,15468,0,0,0,0,15481,0,0,15484,0,15485,15486,0,0,0,15487,0,0,0,0,0,\r
-15488,0,15492,15498,0,0,0,15499,0,0,0,15500,0,15501,0,0,15512,0,15522,0,0,0,\r
-15524,0,15525,15526,0,0,15527,0,0,15545,15546,0,15548,15552,0,15553,0,0,0,15554,\r
-0,15555,0,15557,15565,15573,15577,15578,0,15582,0,15583,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,15586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15588,0,0,0,0,0,15589,0,0,0,0,0,0,0,15593,\r
-15594,0,0,0,0,15595,0,0,0,0,0,0,15596,0,0,0,15597,0,0,0,0,15600,0,0,15601,0,0,0,\r
-0,15602,15603,0,0,0,0,0,0,15604,0,15609,0,0,15612,0,0,15613,0,0,15615,15617,\r
-15618,0,0,15620,0,15636,15637,0,0,15649,0,0,0,0,0,0,0,15650,0,0,15651,0,0,0,\r
-15656,0,15658,0,0,0,15664,0,0,15665,0,0,15668,0,0,0,0,0,15669,0,0,15674,0,0,\r
-15675,0,0,0,0,15676,0,0,0,0,0,0,0,0,0,0,0,15677,0,0,0,0,15678,0,0,0,0,0,15679,0,\r
-0,15681,0,15686,0,0,0,0,15687,0,15688,0,0,15690,0,0,0,15697,0,15699,15700,0,0,0,\r
-0,0,0,0,0,0,15701,0,15702,15703,0,15704,0,15705,0,15707,0,15709,0,15712,15716,0,\r
-15717,0,15718,15720,0,0,0,0,0,15724,0,0,0,15725,0,15726,0,0,0,15740,0,15745,\r
-15746,0,0,15747,0,15748,0,0,0,0,0,15749,0,0,0,15752,0,15753,0,0,0,0,0,0,15759,0,\r
-0,0,15765,0,0,0,0,0,0,0,0,0,15767,0,0,0,15771,0,0,15784,0,0,0,0,15785,15790,\r
-15791,0,0,15792,0,0,0,15807,0,15811,0,0,0,0,0,0,0,0,0,0,0,0,15818,0,0,0,15819,0,\r
-0,0,0,15821,0,0,0,0,0,15822,15824,0,0,15827,0,0,15829,15831,0,15832,0,0,15833,0,\r
-15835,15838,15839,15843,0,0,0,0,0,0,0,0,0,0,0,15844,0,0,0,0,15845,15851,15856,0,\r
-0,0,0,0,0,0,15858,15860,0,15861,0,0,0,15864,0,0,0,0,15865,0,0,0,0,0,0,15866,0,\r
-15872,0,0,15876,0,0,0,0,15877,15878,15883,15885,0,0,15888,0,0,0,0,0,15889,15890,\r
-0,0,0,0,0,0,0,0,15892,0,0,0,0,0,0,0,15893,0,0,15894,0,0,0,15895,0,15896,15897,0,\r
-15898,15901,15902,0,15911,15915,0,15916,0,15924,15935,0,15937,0,0,0,0,0,15950,0,\r
-0,0,0,0,0,0,15958,0,0,0,15961,0,0,15966,0,15967,0,0,15977,0,0,15978,0,0,15981,\r
-15982,15983,0,0,0,0,0,0,0,15986,0,0,0,15990,0,15991,15995,15998,0,15999,0,16000,\r
-0,0,0,0,16008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16009,16011,0,16013,0,0,0,0,\r
-0,0,0,0,16014,0,0,16015,16023,16024,16025,0,0,16026,0,16030,0,16032,0,16033,0,0,\r
-0,0,0,0,16035,16036,16037,0,0,0,0,0,16039,0,0,0,0,16041,0,0,0,0,0,16043,16044,0,\r
-0,16047,0,0,0,16048,0,0,16049,16050,16052,0,0,0,0,0,16055,0,0,0,0,0,0,0,0,16056,\r
-0,0,0,0,0,0,0,16058,16060,16061,0,0,16063,0,0,16064,0,0,0,16067,16068,0,0,16069,\r
-16078,0,0,0,16079,0,0,0,16080,0,16081,0,0,0,16088,0,0,0,0,0,0,0,0,0,0,0,16089,\r
-16093,0,16097,0,16103,0,16104,16105,0,0,16256,0,0,16259,0,0,0,0,0,0,0,16260,\r
-16261,0,0,16262,0,0,16263,0,16268,0,0,0,0,0,0,0,16269,0,0,16270,16273,0,16274,0,\r
-0,0,0,16275,16276,16277,16280,0,0,0,16281,16284,0,0,0,16286,0,16289,0,0,0,0,0,0,\r
-0,0,0,16290,0,0,0,0,16291,0,0,0,0,0,0,0,16292,0,0,0,0,0,0,0,0,16293,16295,16297,\r
-0,16302,0,16304,0,16305,0,16306,0,0,0,0,0,0,0,0,0,0,0,0,16307,16308,16312,0,0,0,\r
-0,0,0,16313,16315,0,16318,0,0,0,16321,0,0,0,0,0,0,0,16326,16333,16336,0,0,0,0,\r
-16337,16340,0,0,0,0,0,16345,0,0,16346,0,0,0,0,0,0,0,0,0,16347,0,0,16348,0,0,0,0,\r
-16349,0,0,0,16350,0,16357,0,0,0,0,16359,16360,0,0,0,0,16362,16363,16364,16365,0,\r
-0,16366,0,0,0,0,16367,16368,0,16369,16374,0,0,0,0,0,0,0,16376,0,0,0,0,16378,\r
-16379,0,16380,0,0,0,16381,16383,0,0,0,0,0,16390,0,0,0,16399,0,16402,16404,16406,\r
-16407,0,0,0,16409,16411,0,0,0,0,16412,0,16413,16415,16423,0,0,0,0,0,16424,0,0,0,\r
-16428,16434,16435,16449,0,16450,16451,0,0,0,16453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-16454,0,0,16456,16458,0,0,16459,0,0,16460,0,0,0,0,16462,0,16463,0,0,16466,0,0,0,\r
-0,0,16479,0,0,16480,0,16481,16484,0,0,0,0,0,0,0,0,0,0,16485,0,0,0,0,0,0,16489,0,\r
-0,0,0,0,16491,0,0,16498,0,0,16503,0,16505,0,0,0,0,0,0,0,0,16506,0,0,0,16508,\r
-16509,0,0,0,0,0,0,0,0,16511,16513,0,0,0,16516,0,16517,0,16519,0,16529,0,0,16531,\r
-0,0,0,0,0,0,16534,0,0,16541,16542,0,0,0,0,0,0,0,0,0,16543,16547,16548,0,0,0,\r
-16551,0,16552,0,0,0,16553,0,0,16558,0,0,16562,16565,0,0,0,16570,0,0,0,16573,\r
-16585,0,0,0,16586,16587,16595,0,16596,0,16598,0,0,0,16600,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,16601,0,0,0,0,16603,0,0,0,0,0,0,0,16604,16612,0,0,0,0,16613,0,16618,0,0,0,\r
-16640,0,0,16641,0,0,0,0,0,0,16645,0,0,0,0,16646,0,0,0,0,0,0,16651,0,0,0,0,16653,\r
-16654,0,0,0,16655,0,0,16656,16667,0,0,0,0,16671,0,16672,0,0,0,16673,0,0,0,0,0,\r
-16676,0,16686,0,0,0,0,16689,0,16690,0,16692,0,16693,0,16694,0,16696,0,0,0,16705,\r
-0,0,0,0,0,0,16707,0,0,0,16709,0,0,0,0,16711,0,16712,16713,0,0,0,16715,0,0,0,0,\r
-16716,0,0,0,0,0,0,0,0,0,16718,16724,0,0,16726,16727,0,0,0,0,0,0,0,16728,0,16729,\r
-0,0,16730,0,0,0,0,0,16731,0,0,0,16732,0,0,0,0,16734,16738,0,0,0,0,0,0,0,0,16743,\r
-0,0,16745,0,0,0,0,0,16749,0,16752,0,0,0,0,16756,0,0,16758,0,16759,0,0,0,0,0,\r
-16760,0,0,0,0,0,0,0,16762,0,16769,0,16770,0,16772,0,0,0,16777,16780,0,0,0,0,0,0,\r
-16781,0,0,16782,0,16784,0,0,16785,16787,16792,0,0,16794,0,0,0,16798,0,0,16809,0,\r
-0,16814,16816,16817,0,16819,0,0,0,0,0,0,0,0,0,0,16820,0,0,16836,16839,0,0,16841,\r
-16851,16857,0,0,16858,16859,0,0,16860,0,0,0,0,0,0,0,0,16862,0,16863,0,0,0,0,0,0,\r
-0,16864,0,0,0,0,0,0,0,16876,0,16881,16882,0,16885,16886,0,16887,0,0,0,16889,\r
-16891,0,0,0,0,0,16894,16895,0,0,0,0,0,0,0,0,0,0,0,16897,0,16898,0,0,0,0,0,16913,\r
-0,0,16924,16925,16926,0,0,16927,0,0,0,16937,16938,0,0,0,16940,16941,0,0,0,16942,\r
-16945,0,16946,16949,16950,0,0,0,16952,16955,0,0,0,16965,0,16969,0,0,16975,0,0,\r
-16976,0,0,0,0,16978,0,0,16981,0,16983,16989,0,0,0,0,16990,0,0,16991,0,0,0,16993,\r
-0,16994,16996,17000,0,0,0,0,0,17002,17004,0,17006,0,0,17007,0,0,0,0,17008,17013,\r
-17014,0,0,0,0,0,0,0,0,0,17021,0,17031,0,0,0,0,0,17033,17036,0,17038,0,0,17039,0,\r
-17045,0,0,17046,17047,0,0,0,0,17048,0,17049,17050,0,17051,17053,0,17054,0,17055,\r
-0,0,0,0,0,17063,0,0,17064,0,0,0,0,0,0,0,17065,0,0,17068,0,0,0,0,0,17072,0,0,0,0,\r
-0,0,17073,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17074,0,17080,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,17081,17083,17084,0,0,0,17085,0,0,0,0,17092,0,0,0,0,0,0,0,\r
-0,0,17093,0,17095,17102,0,0,0,0,0,0,17103,0,0,17105,0,17107,0,0,0,0,17114,0,0,0,\r
-0,0,17115,17125,17127,0,0,17128,0,0,0,17129,17130,0,17131,0,0,0,0,0,17132,17135,\r
-17145,0,0,0,0,0,0,0,0,17146,0,17147,0,17148,0,0,0,0,0,0,17149,17150,0,17151,\r
-17153,0,17155,0,0,0,0,17163,17171,0,17174,0,0,0,0,17179,0,0,17182,17185,0,0,0,0,\r
-0,17186,0,0,17188,0,0,0,0,0,0,0,17189,17191,0,17194,0,0,0,0,0,0,0,0,0,17195,\r
-17196,17203,17204,0,0,17205,17217,0,0,0,0,0,17218,0,0,0,0,17219,0,17220,0,17221,\r
-0,0,17230,0,0,0,0,0,17236,0,17238,17239,0,0,0,17241,17244,0,0,17245,0,17248,0,0,\r
-17251,0,17252,0,0,17264,0,17266,0,0,0,17268,0,0,0,0,17271,17272,0,17273,0,17295,\r
-0,17302,0,17305,0,0,0,17306,0,0,0,0,0,0,0,17308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-17309,0,17310,17313,0,0,0,0,17314,17315,0,17317,0,0,0,0,17318,0,0,0,0,0,0,0,\r
-17320,0,0,0,0,0,0,17334,0,17344,17348,0,0,0,17350,17351,0,0,17353,0,0,17354,0,0,\r
-0,0,0,0,0,0,0,17355,0,0,0,0,0,0,17356,17357,0,0,17359,0,0,0,17371,0,17372,0,0,0,\r
-17393,0,0,0,0,17394,0,0,0,0,0,17395,0,0,17399,0,0,0,17401,17417,0,17418,0,17419,\r
-0,0,0,0,0,17422,17423,0,0,0,0,0,17424,0,0,0,0,0,17428,17429,17433,0,0,0,17437,0,\r
-0,17441,0,0,17442,0,0,17453,0,0,0,0,0,0,0,0,17454,17456,17462,0,0,17466,0,0,\r
-17468,0,0,17469,0,0,0,0,17470,0,17475,0,0,0,0,0,17479,0,0,0,17483,17484,0,17485,\r
-0,17486,0,17491,17492,0,0,17493,0,17494,17495,0,0,0,17496,0,0,0,17497,0,0,0,\r
-17502,0,0,0,0,0,17503,0,17505,0,17507,0,0,0,17512,17513,17514,0,0,17515,0,0,0,\r
-17519,0,0,0,17522,0,0,17523,0,0,0,0,0,0,0,0,0,17527,0,0,0,17528,0,0,0,17534,0,0,\r
-0,0,17536,0,0,0,17539,0,17540,17543,17549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17556,\r
-0,0,17558,0,17559,0,0,17560,0,0,0,17563,0,0,0,0,0,0,17564,0,0,17565,17566,0,\r
-17567,0,0,0,0,0,0,17569,17570,0,17575,0,0,0,0,0,0,0,0,0,0,0,17581,0,0,0,17582,\r
-17583,0,17586,0,0,17587,0,0,0,0,0,0,0,17588,0,0,0,0,17596,17597,0,0,17598,17600,\r
-0,0,0,0,0,0,17601,0,0,0,17604,0,0,17605,0,0,17607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,17612,0,0,17618,0,17621,17622,0,0,0,0,17623,0,0,17624,0,0,17630,0,0,\r
-17631,17633,17634,0,0,0,0,0,0,0,17635,0,0,17636,0,0,17637,0,17638,0,17640,0,0,0,\r
-0,0,0,0,0,0,0,17641,0,0,0,0,0,0,0,0,0,0,17643,0,0,0,0,17645,0,0,0,0,0,0,0,0,\r
-17646,17662,0,0,0,0,0,0,0,0,0,17663,17664,0,17665,17666,0,0,0,17669,17671,17673,\r
-0,17679,0,0,0,0,0,0,0,17684,0,0,0,17686,0,17714,0,0,17720,17722,17726,0,0,17728,\r
-0,0,17729,0,0,0,17732,0,17733,0,17734,0,0,0,17735,0,0,0,0,17737,0,0,0,0,17739,0,\r
-0,0,17741,17742,0,0,0,0,17743,17744,17745,0,0,0,17749,0,17750,17751,17752,17754,\r
-17761,17762,0,17763,0,17766,0,17772,0,0,0,0,0,17775,0,0,0,0,0,0,0,17776,0,0,\r
-17777,0,0,17778,17779,0,17782,17783,0,0,0,0,0,0,0,0,0,0,17784,0,0,0,0,0,0,0,\r
-17821,0,0,0,17822,0,0,0,17823,17825,0,0,0,0,0,17826,17831,17832,17833,0,0,17845,\r
-0,0,0,17846,0,0,0,17848,17850,17854,0,17855,0,0,17859,0,0,0,0,0,0,17860,17861,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17870,17871,0,0,0,0,0,0,17872,0,0,0,17879,0,\r
-0,0,17881,17883,0,17884,0,17885,0,0,17886,0,0,17887,17891,17953,0,0,0,0,17954,0,\r
-0,17955,0,17968,0,0,17972,0,0,0,0,0,17974,0,0,0,0,17976,17978,0,0,17983,0,0,0,0,\r
-18003,0,0,0,0,0,18007,0,0,0,0,0,18009,0,0,0,0,0,0,0,18010,0,0,0,0,0,0,18012,0,0,\r
-18014,0,0,0,18015,0,0,0,18016,0,18017,0,0,0,18030,0,0,0,0,0,0,0,18031,0,0,18036,\r
-18037,18038,0,0,18049,18056,0,18057,18058,0,18059,0,0,0,0,0,0,0,0,18062,0,0,0,0,\r
-18064,0,0,0,0,0,0,0,0,18067,0,0,0,18068,0,0,18075,0,0,18078,18093,18094,0,0,0,0,\r
-0,0,0,0,18097,0,0,0,0,0,18098,18100,0,0,0,18108,0,18111,0,0,18112,0,18113,0,0,\r
-18115,18116,0,18118,0,0,0,0,18121,0,0,0,0,18123,0,0,0,0,0,0,0,0,0,18124,0,0,0,0,\r
-18125,18126,0,18127,0,0,18128,18135,0,0,0,0,0,0,0,0,0,18150,0,0,0,0,0,18151,\r
-18152,0,0,18156,18164,0,18166,18171,0,0,0,0,0,0,0,0,0,18172,18183,0,18184,0,0,0,\r
-0,18185,0,18187,0,0,0,0,0,18188,0,0,0,0,0,0,0,0,18189,0,0,18190,0,0,18191,18192,\r
-0,0,18194,18195,18196,0,0,0,18197,0,18203,0,18204,0,0,0,0,18205,0,0,0,18207,\r
-18208,0,0,18214,0,0,0,18215,18216,0,0,0,18220,0,0,18222,0,0,0,0,0,18223,0,18225,\r
-18231,0,18234,0,18235,0,0,0,0,18240,0,0,18241,18242,0,0,0,0,0,18243,18251,0,\r
-18253,0,18254,0,0,0,18266,0,0,0,0,0,0,18269,18270,18271,18273,18281,0,0,0,0,0,0,\r
-0,0,0,0,0,0,18282,0,18283,0,18284,0,0,0,0,0,0,18285,0,18287,18289,0,0,18290,0,0,\r
-0,0,18308,0,0,0,18310,0,0,0,0,0,0,0,0,0,0,0,0,18311,0,18312,18313,0,18315,0,0,\r
-18316,18320,0,18331,0,18332,0,18336,0,0,0,0,18337,0,18340,0,0,0,0,0,0,0,0,0,\r
-18341,0,18344,18345,0,18346,0,0,0,0,0,18348,0,18351,0,0,18356,0,0,0,0,0,0,18357,\r
-0,0,0,0,0,18367,0,0,0,18368,0,18369,0,18370,18371,0,0,0,18437,18444,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,18445,18450,0,0,0,0,18451,0,18452,0,0,0,18453,0,0,0,0,0,18455,0,\r
-0,0,18456,0,18457,0,18460,0,0,18461,0,0,0,0,0,0,0,0,18466,0,0,18467,0,0,0,0,\r
-18473,0,0,0,18476,0,18477,0,0,0,18478,18479,18480,0,0,0,18485,0,0,0,18486,0,0,0,\r
-0,0,0,18488,18490,0,0,0,0,0,0,18491,0,0,0,0,0,18495,0,0,18496,0,0,0,0,0,0,18505,\r
-0,18521,0,18522,18523,0,0,0,18525,18526,0,0,0,0,0,18527,0,0,0,0,18532,18533,0,\r
-18534,0,0,0,0,0,0,18535,18537,0,18538,0,0,0,0,0,0,18540,18541,18542,18543,0,\r
-18546,0,0,0,0,18553,18556,0,0,18558,0,0,18569,18571,0,0,0,18572,0,18574,0,0,0,0,\r
-18586,0,0,0,0,0,18588,0,0,18589,0,0,0,0,0,0,18590,0,18592,0,0,0,0,18594,0,0,0,\r
-18596,0,0,18597,18598,0,0,18601,0,0,0,0,18602,0,0,0,18603,18604,0,18605,0,0,0,0,\r
-18608,0,0,18611,0,0,0,0,0,0,0,0,0,18612,0,18616,0,0,18617,18619,0,0,0,18628,0,0,\r
-0,18629,0,0,18630,0,0,0,0,0,0,0,18631,0,18632,0,0,18635,18637,0,0,0,0,0,0,18641,\r
-18643,18648,0,18652,0,0,18653,0,18655,18656,0,0,0,18657,0,0,18666,18674,0,0,0,0,\r
-18677,18684,18685,0,0,18686,0,0,18690,0,0,0,0,0,0,0,18695,18696,0,0,0,0,0,0,0,0,\r
-0,0,18697,0,0,18700,0,0,0,0,0,0,18702,0,18708,0,0,18709,0,18710,0,0,18711,0,\r
-18714,0,0,18718,0,0,0,0,0,0,18719,0,0,18722,0,18726,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-18731,0,0,0,0,0,18739,18741,0,0,18742,0,18743,18744,18746,18748,0,18752,18753,0,\r
-0,18754,18763,0,18765,0,0,0,18766,0,0,0,18769,0,0,0,0,0,18773,18778,18779,18781,\r
-0,0,18784,18787,0,18788,0,18793,0,0,0,0,0,0,18795,0,0,18800,0,0,0,0,0,18801,\r
-18804,0,0,0,0,0,0,0,18806,0,0,0,18811,18815,18816,0,0,0,0,18825,0,0,18827,18829,\r
-0,0,18830,0,0,0,0,18831,0,0,18832,0,0,0,0,18833,0,18840,0,18841,0,18842,0,0,0,0,\r
-18843,0,18844,0,0,0,0,0,0,18845,18846,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-18848,0,0,0,18853,18860,0,0,18862,18866,0,0,18867,18869,0,0,18874,18881,18891,0,\r
-0,0,0,0,0,0,0,0,0,18892,0,0,0,0,0,0,0,0,18895,0,18896,0,0,0,18900,0,0,0,18901,0,\r
-18902,18915,18916,0,0,0,0,0,0,0,0,18919,0,0,0,0,0,18920,0,0,0,18921,18929,0,0,0,\r
-0,18930,0,0,0,0,0,0,18932,0,0,0,0,18934,18942,0,0,0,18951,18957,0,0,0,0,18958,0,\r
-0,0,0,18959,18960,0,0,18961,0,0,18962,0,0,0,0,18963,18964,0,0,0,18965,0,18967,0,\r
-0,0,0,0,0,0,0,0,18968,0,18969,0,18970,18973,18976,0,0,0,0,0,0,18977,0,0,0,18981,\r
-0,0,0,18990,0,18998,0,0,0,0,0,18999,19003,0,0,19005,0,0,0,19006,0,0,0,0,0,0,\r
-19008,19011,0,0,19018,0,0,19019,0,19024,0,19031,19032,0,19039,0,19041,19050,0,0,\r
-0,19051,19055,19056,0,19059,19063,19064,0,0,19088,0,0,0,19093,19094,0,0,0,0,\r
-19095,0,19096,0,0,0,19097,0,0,19098,0,19099,19100,0,0,19103,0,0,0,0,0,0,0,19111,\r
-0,0,0,0,0,0,19112,0,0,0,19116,19117,0,19121,19122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,19123,19124,0,0,0,0,0,0,0,19125,19126,0,19128,0,0,0,0,0,0,0,0,0,0,\r
-19129,19130,19131,19132,0,0,19146,0,0,19147,19156,19158,0,0,0,0,0,0,0,0,19182,\r
-19185,0,0,19187,0,0,0,19193,0,0,0,0,0,19194,0,19197,0,0,0,0,19198,0,0,0,0,0,0,0,\r
-0,0,0,19202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19203,0,19205,19210,\r
-0,0,0,19213,0,19218,0,0,0,19223,19229,0,0,19230,0,0,19231,19232,19233,19239,0,0,\r
-0,0,0,19240,0,19248,19249,0,0,0,0,19254,0,19256,19258,19259,0,0,19261,0,19266,0,\r
-0,0,19272,0,19278,19281,19282,0,0,0,0,0,0,0,0,0,0,0,0,19283,0,0,19284,0,0,19285,\r
-19287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19288,19291,0,19292,0,0,0,0,19297,0,19298,0,0,\r
-0,0,19302,19303,0,0,0,0,19304,19305,0,0,0,0,19314,0,0,19315,0,0,19321,0,0,0,0,0,\r
-0,0,19322,0,19333,0,19334,19335,0,19336,19337,0,0,0,0,0,0,0,0,0,0,0,19346,0,0,\r
-19353,0,19354,19362,0,19366,19367,0,0,19369,0,19375,0,19377,19380,19388,0,0,0,0,\r
-0,19389,19390,0,0,0,0,19392,0,0,0,0,0,19402,0,0,0,0,0,0,0,0,19412,0,0,19413,\r
-19422,0,19424,0,0,0,19425,0,0,0,19428,0,0,0,0,19431,0,0,0,0,0,19432,0,0,0,0,0,\r
-19448,19459,0,0,19461,0,19462,19463,0,19467,19474,19482,0,0,0,0,19494,0,0,0,0,\r
-19501,0,0,0,0,0,0,0,0,0,0,19502,19504,0,0,0,0,0,0,0,19505,0,0,0,0,19506,19507,0,\r
-0,0,19508,0,0,19511,0,0,19514,0,19515,0,19516,0,19518,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,19530,0,19537,19538,0,19543,19546,0,19547,19551,0,0,0,0,0,0,19552,\r
-19553,0,0,0,0,0,0,0,0,0,0,0,0,19555,0,0,19556,0,0,0,0,0,0,0,0,0,0,0,0,19560,\r
-19561,0,0,19562,0,0,0,0,0,0,19565,19567,0,19568,0,0,0,19569,19570,0,19578,0,0,0,\r
-0,19580,0,0,0,0,19581,19584,0,0,0,0,0,0,0,19585,19586,0,0,0,19587,19588,0,19589,\r
-0,0,0,0,0,0,19592,19593,19599,0,19600,0,0,19604,0,0,19605,0,19606,19608,19610,0,\r
-19613,19614,0,0,0,0,0,0,19616,19617,0,0,19618,0,0,19619,0,0,0,19620,19621,19631,\r
-0,0,19632,19634,19636,0,19643,0,0,19644,19658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,19659,0,0,0,0,0,0,0,0,0,0,0,19675,19677,0,0,0,0,19679,0,19683,0,19684,0,0,\r
-0,0,0,0,19687,0,0,0,0,0,0,0,0,19688,19689,19692,0,0,0,0,0,0,0,19695,19697,0,0,0,\r
-0,0,19698,19699,0,0,19700,0,19702,0,0,19703,0,0,0,0,0,0,19704,19708,0,19710,0,\r
-19713,0,0,0,19715,0,0,0,0,19718,0,0,0,0,0,0,0,19720,0,19722,0,0,19725,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,19730,0,0,0,0,0,19731,0,19734,19735,19739,0,0,19740,0,19741,0,0,\r
-0,19746,0,0,19747,0,19771,0,0,0,0,0,0,0,0,19772,19775,0,0,0,0,0,0,19778,0,0,0,0,\r
-0,19779,0,0,19780,19790,0,19791,0,0,19792,0,0,0,19793,0,0,19796,19797,0,0,0,\r
-19799,0,0,0,19801,0,0,0,0,19803,0,19804,0,19805,0,0,19807,0,0,0,19808,0,0,0,0,0,\r
-0,19809,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19816,0,19821,0,19822,19830,19831,0,0,\r
-0,19833,0,0,0,0,0,0,0,0,0,0,19838,0,0,0,0,19839,0,0,19843,0,0,0,0,19845,0,0,0,0,\r
-19847,0,0,19848,0,19849,0,0,0,0,0,0,0,19851,0,0,0,19854,0,0,0,0,0,0,0,0,0,19864,\r
-0,19865,0,19866,0,0,0,0,0,0,0,19868,0,0,19870,0,0,19871,0,0,19872,19873,19875,0,\r
-19880,19882,19884,0,0,19885,19886,19888,0,0,0,0,0,0,0,0,0,0,0,0,19890,19892,\r
-19893,0,0,19894,0,0,0,19895,0,19896,19902,0,0,19903,0,0,19905,0,0,0,19906,0,\r
-19908,0,19909,19911,0,0,0,19913,19920,0,19938,19939,19940,0,0,0,0,0,0,0,19942,0,\r
-19943,0,19945,0,0,0,19951,19952,19954,19960,0,19965,0,19971,0,0,0,0,0,19975,0,\r
-19976,0,19990,0,0,19991,0,19993,0,19995,0,0,0,19998,19999,20001,0,20003,20005,0,\r
-20011,20012,0,0,0,0,0,0,20014,0,20020,0,0,0,0,20021,0,0,0,0,0,20023,20024,0,0,0,\r
-0,0,20025,0,0,20027,0,0,20029,0,0,20032,0,0,0,0,20044,20045,0,20048,20049,0,0,\r
-20050,0,20052,0,0,20054,20057,0,0,0,0,0,0,0,0,0,20059,0,0,20061,0,20062,0,20064,\r
-0,0,20066,0,0,20067,0,0,0,0,20069,0,0,0,0,0,0,20070,20071,0,0,0,0,0,0,0,0,0,0,0,\r
-20072,0,0,20073,20074,0,0,0,0,0,20075,0,20078,0,0,0,0,20080,0,20081,0,0,0,0,0,0,\r
-20095,0,20098,0,0,0,0,0,0,0,20107,0,0,0,0,0,0,0,0,20112,0,0,0,20113,20114,0,0,0,\r
-20115,20123,20124,0,0,0,20131,20133,20134,0,0,0,0,20136,0,0,20137,20138,20150,0,\r
-20152,0,0,0,20153,0,0,20154,0,0,0,20158,0,20163,0,0,20164,0,0,0,0,0,0,0,20166,0,\r
-20168,0,20170,0,20175,0,0,20178,0,0,0,0,20223,0,0,0,0,20224,0,20226,0,0,20230,0,\r
-20231,0,0,0,0,20232,0,0,20233,20234,0,20244,0,20247,0,0,0,0,0,0,20249,0,0,0,\r
-20250,0,0,0,0,20251,0,20253,0,20254,0,0,0,0,20256,0,0,20264,0,0,0,0,20266,0,0,0,\r
-20278,0,0,20279,20282,0,0,0,0,0,20283,0,20284,0,20285,0,20287,20290,0,0,0,0,\r
-20292,0,0,0,0,20293,20297,0,0,0,0,0,0,20299,0,20300,20303,0,0,0,0,0,0,20307,0,0,\r
-20308,0,20309,0,20310,0,0,0,0,0,0,20312,0,0,0,20314,0,0,0,0,20315,20316,0,20322,\r
-0,0,0,0,0,0,20339,0,0,0,20342,0,0,0,0,20352,0,0,0,0,0,0,0,0,0,0,20362,0,0,20365,\r
-0,20375,20377,0,0,0,0,0,0,0,0,0,0,0,20378,20379,0,20380,0,0,20381,0,20382,0,\r
-20383,0,20388,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20390,20392,20393,0,0,20395,0,0,0,0,0,\r
-20396,0,0,0,0,0,0,0,0,20398,20415,0,0,0,20417,0,0,20420,0,0,20426,20428,0,20431,\r
-0,0,20432,0,20433,20434,20435,0,0,0,0,20440,0,0,0,0,0,20442,0,20443,0,20446,0,0,\r
-0,0,20448,0,20451,0,0,0,0,0,0,0,0,0,20452,20453,0,0,20454,0,0,0,0,0,0,20457,0,\r
-20458,0,0,0,20465,0,0,0,0,0,20469,0,0,0,20473,0,20476,0,0,0,0,0,0,0,0,20477,0,0,\r
-20485,0,0,20486,0,0,20487,0,20496,0,20497,0,0,20498,0,0,0,0,0,0,0,0,0,0,20499,\r
-20500,0,20501,0,0,0,0,0,20520,20527,0,20529,0,0,0,0,20539,0,0,20540,0,0,0,20543,\r
-0,0,0,20546,0,0,0,0,0,20548,0,0,20563,0,0,20564,0,20566,0,0,0,0,0,20589,0,0,0,0,\r
-20590,0,0,20593,20594,0,0,0,0,20595,0,20597,20598,0,0,0,20618,20620,0,0,0,0,\r
-20621,0,0,0,0,20627,0,0,0,0,0,20628,0,0,0,20629,0,20630,0,0,20639,0,0,0,0,0,\r
-20707,0,0,20709,0,0,0,20713,20714,0,0,0,0,0,20724,20725,0,0,0,0,20726,20728,\r
-20729,0,20733,0,20734,0,20735,20736,0,20737,0,0,20744,0,20745,0,20748,0,0,20749,\r
-0,0,0,0,0,0,0,0,20750,0,0,0,0,20754,0,0,0,20761,0,0,20763,0,0,0,0,0,0,0,20766,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,20767,0,0,0,0,20768,0,20769,20777,0,0,0,0,0,0,20785,0,\r
-0,0,20786,20795,20801,0,20802,0,20807,0,0,20808,0,0,20810,0,0,20811,0,20812,0,0,\r
-0,0,0,20813,0,0,20818,20820,20821,0,0,0,20822,0,20823,0,0,0,20826,0,0,0,0,0,0,0,\r
-20829,20830,20831,0,20832,20836,0,0,20839,0,0,20840,20842,0,20843,0,20844,0,\r
-20854,0,0,0,20855,0,0,0,0,20856,0,0,0,20869,0,0,20871,0,0,0,0,0,0,0,20873,0,0,0,\r
-0,0,20876,0,0,0,0,0,20880,0,0,20882,0,0,0,0,20883,20884,0,0,20890,0,0,0,0,0,0,0,\r
-0,0,20891,0,0,0,0,0,20905,0,20906,20910,0,0,20912,20915,0,0,0,0,0,20916,0,20917,\r
-0,20919,20920,20922,0,20927,0,20928,20929,20930,0,0,20935,0,0,20939,0,0,20941,0,\r
-0,0,20943,0,0,0,20946,20947,0,0,0,0,0,20950,0,20954,0,0,20955,20964,0,0,20967,0,\r
-0,0,0,0,20973,20975,0,0,0,20984,0,20987,20988,0,0,0,0,0,20989,0,0,0,20995,0,\r
-20998,0,20999,0,0,0,0,21000,21001,0,0,0,0,21008,0,21010,0,21016,0,0,0,21017,\r
-21018,0,0,0,0,0,21021,21026,21027,21028,0,0,21029,0,0,0,0,0,21030,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,21031,21032,0,0,0,0,0,21037,0,0,21038,0,0,0,0,0,0,0,0,0,21039,0,\r
-21041,0,21046,21047,0,0,0,21049,21053,0,0,21057,21064,21065,0,0,21066,21067,0,0,\r
-0,21069,0,0,0,21071,21072,0,0,21073,0,21074,0,0,21078,0,0,0,0,21079,0,0,21080,\r
-21081,0,0,21086,21087,0,21089,0,0,0,0,0,0,0,21091,0,21093,0,21094,0,0,0,0,0,0,0,\r
-0,21095,0,0,0,0,0,21096,0,21098,0,0,0,0,0,0,0,21099,0,0,21100,21101,21102,0,0,0,\r
-0,0,21103,0,21104,0,0,0,0,0,21105,21108,21109,0,0,21112,21113,0,0,0,0,0,0,21115,\r
-21122,21123,0,0,0,0,0,21125,0,0,0,0,0,0,0,0,21129,21131,0,0,21134,0,0,0,21137,\r
-21142,0,21143,0,0,21144,0,21145,21146,0,21152,21154,21155,21156,0,0,0,21160,0,0,\r
-0,0,0,0,21161,0,21164,0,21166,0,0,0,0,21170,0,0,0,0,21171,0,0,21172,0,21174,0,\r
-21175,0,0,0,0,0,21176,21179,21188,0,0,0,21189,0,0,21190,0,0,0,21192,0,0,21193,0,\r
-0,0,21198,0,21212,0,0,21213,0,0,0,0,0,0,21215,21216,0,0,21223,21225,0,21226,0,0,\r
-0,0,21227,21228,0,0,21229,0,0,0,0,21230,21236,0,0,0,0,0,0,0,0,0,0,0,0,0,21237,0,\r
-0,21238,21239,0,0,0,0,21256,0,0,0,0,0,21257,0,0,0,0,0,0,0,21259,0,0,0,21263,0,\r
-21272,0,21274,0,21282,0,0,0,0,0,0,0,0,21283,0,0,0,0,0,0,0,0,21294,0,0,21297,0,0,\r
-0,0,21298,0,0,0,21299,0,21300,21302,0,21316,0,21318,21322,21323,0,21324,0,21326,\r
-0,0,0,21327,21328,0,0,0,21352,0,0,21354,21361,0,0,0,0,0,0,0,0,0,0,0,0,0,21362,0,\r
-0,0,21363,0,0,0,0,0,0,0,0,0,21366,0,0,21367,21372,21374,0,0,0,21375,21377,0,\r
-21378,0,0,0,21380,0,0,0,0,0,0,0,0,0,0,21381,0,0,0,0,0,0,21382,0,21383,0,0,21384,\r
-0,0,21385,0,0,0,0,21389,21390,0,0,0,0,0,0,0,0,0,0,0,0,0,21397,21398,0,0,0,0,0,0,\r
-0,0,0,0,21399,0,21400,0,0,0,0,21402,0,0,0,21403,21404,0,21405,21406,0,0,0,21407,\r
-0,0,0,0,0,0,0,0,0,0,0,0,21408,0,0,0,0,21409,0,21421,0,21422,0,0,0,21425,21428,0,\r
-0,0,0,21429,0,0,0,0,0,21433,0,0,0,0,0,0,0,0,0,0,21434,0,21443,0,21444,21449,0,\r
-21452,0,21453,21454,0,0,0,21457,0,0,21458,0,0,0,21460,21461,0,0,21464,0,0,0,\r
-21473,21478,0,0,21479,0,0,21481,21483,0,0,0,0,0,0,0,0,21484,0,0,21485,21486,0,0,\r
-21488,0,0,0,0,0,0,21523,0,0,21525,0,0,0,0,0,0,0,21526,0,0,0,0,0,0,21529,21530,0,\r
-0,21531,0,0,21533,0,0,21539,21564,0,21567,0,0,0,0,0,0,0,0,21575,0,0,0,0,21577,0,\r
-0,0,0,0,21591,0,0,21604,0,0,0,0,0,0,0,0,0,21605,0,21606,0,0,21617,21618,21619,\r
-21620,0,0,0,0,0,0,0,0,0,0,0,0,0,21623,0,0,0,0,21631,0,21635,0,0,0,0,21639,21646,\r
-21653,21662,0,0,21663,21664,0,21666,0,0,21667,0,21670,21672,21673,0,21674,21683,\r
-0,0,0,0,0,21684,0,21694,0,0,0,0,21695,21700,0,21703,0,21704,0,0,21709,0,0,0,\r
-21710,0,0,0,0,0,0,0,0,21711,0,0,0,21712,0,21717,0,21730,0,0,0,21731,21733,0,0,0,\r
-0,21737,21741,21742,0,21747,0,0,0,21749,0,0,0,0,0,0,0,0,0,0,0,0,0,21750,0,0,0,0,\r
-0,21752,0,0,0,0,21753,0,0,0,0,0,0,21755,21756,0,21757,0,0,0,0,0,0,21760,0,0,\r
-21763,0,0,0,0,0,0,0,0,0,21764,0,0,21766,0,0,21767,0,0,0,0,0,0,0,0,0,21773,0,\r
-21774,0,0,21775,0,0,0,0,21776,0,0,21777,0,0,0,0,0,0,0,0,0,21780,21787,21788,\r
-21791,0,0,0,21797,0,0,0,0,0,21805,0,0,0,0,21806,0,21807,21809,0,21810,21811,0,\r
-21817,21819,21820,0,21823,0,21824,0,0,21825,0,0,21826,21832,0,0,0,0,0,21833,\r
-21848,21849,0,0,21867,21870,21871,21873,0,0,0,21874,0,0,0,0,0,0,0,0,0,21875,0,\r
-21878,0,0,0,21879,0,21881,21886,0,0,0,0,21887,0,0,21888,21894,21895,21897,0,\r
-21901,0,21904,0,0,21906,0,0,0,21909,21910,21911,0,0,21912,0,0,21913,21914,21915,\r
-0,21919,0,0,0,0,0,0,0,21921,0,0,21922,21933,21939,0,0,0,0,0,0,0,0,0,0,0,21944,0,\r
-0,0,0,0,21945,0,21947,0,0,0,0,0,0,0,0,0,0,21949,0,0,0,21950,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,21951,0,21952,0,0,0,0,0,0,0,0,0,21954,21957,0,0,0,0,21958,0,21959,0,0,0,0,\r
-0,0,21962,21963,0,0,0,0,0,0,0,0,21964,21965,0,0,21969,21970,0,0,0,21974,0,0,\r
-21980,21981,0,21982,0,0,0,0,0,21985,0,21988,0,21992,0,21999,0,0,0,0,0,0,22001,0,\r
-22002,0,0,0,0,0,0,22003,0,0,0,0,0,22004,0,0,0,22008,0,22009,22015,0,0,22016,0,0,\r
-0,22017,22019,0,0,0,0,0,0,0,0,0,22020,0,0,0,0,0,0,0,0,0,0,22021,22037,0,22039,0,\r
-0,0,22040,0,0,0,22048,22049,0,0,22053,22055,22056,22059,0,0,22060,22061,0,0,\r
-22064,0,0,0,0,22066,0,0,0,0,0,0,0,22073,0,0,0,22074,22075,0,0,0,0,0,0,0,22076,0,\r
-0,0,0,22077,22084,22099,0,0,0,0,0,0,0,22104,0,0,22107,0,22108,0,22109,0,22110,0,\r
-0,0,0,0,0,0,22111,22119,0,22120,22122,0,0,0,0,22125,0,0,0,22128,22129,0,0,0,0,0,\r
-0,22141,0,0,0,22142,0,0,22144,22146,0,22148,22149,22151,22154,0,0,0,22162,0,0,0,\r
-0,22164,22177,0,0,0,0,22179,0,22182,22183,0,0,22184,22188,0,0,0,0,0,0,0,0,22190,\r
-0,22194,22201,0,0,22208,0,22209,0,22212,0,0,22215,0,22223,22231,0,0,22232,0,\r
-22234,0,0,22235,22236,0,22237,0,22240,0,0,0,0,0,22241,0,0,0,22242,22246,22247,0,\r
-0,0,22259,22268,0,22269,0,0,0,0,0,0,0,22270,0,0,0,0,22271,0,22272,0,22277,0,0,0,\r
-0,0,22278,22280,22283,22286,0,0,22287,22289,0,0,22290,0,22293,0,0,0,0,0,0,0,0,0,\r
-0,22295,0,22301,22302,0,0,0,22305,0,22308,0,0,0,0,0,0,0,0,0,0,22315,0,0,0,22317,\r
-0,22334,0,0,0,22335,0,0,0,0,0,22336,0,22338,22344,0,22347,22349,0,22350,0,0,0,0,\r
-0,0,0,22357,0,0,0,0,0,22358,0,0,0,0,0,0,0,0,0,0,22359,22360,0,0,0,0,0,0,0,0,\r
-22361,22366,0,0,22369,0,22370,22373,0,0,0,0,0,22375,0,22377,0,0,0,0,0,22378,0,0,\r
-0,0,22381,0,0,0,0,22382,0,22383,0,0,0,0,0,0,0,0,0,22391,0,0,22392,22395,22396,\r
-22402,0,0,0,0,0,0,0,0,0,0,0,0,0,22405,0,0,22406,0,0,22408,0,0,22409,22410,0,0,0,\r
-0,0,0,22424,0,0,0,0,22426,0,0,0,22427,0,22428,0,22432,0,22435,22442,22443,0,0,0,\r
-0,22444,0,0,0,0,0,22446,0,22454,0,22455,0,0,0,22465,0,22470,0,22471,0,0,0,0,\r
-22472,22473,0,22487,0,0,0,22488,0,0,0,0,22489,0,0,22499,0,0,0,0,0,0,22514,0,0,\r
-22515,0,0,0,0,0,0,0,22516,0,0,0,22517,22520,0,0,0,22534,0,0,22535,0,0,22536,0,\r
-22540,22553,0,22555,0,0,0,0,22561,0,0,22562,0,0,0,0,0,0,0,0,0,0,0,22566,0,0,0,0,\r
-22567,22568,0,0,22575,0,22579,0,22582,22583,22585,0,0,0,0,0,22586,0,0,22587,0,0,\r
-22590,0,0,0,0,0,22591,0,22592,0,0,0,0,0,22593,0,22602,0,0,22604,0,0,22609,0,0,\r
-22618,0,0,0,0,0,0,22619,0,22624,22625,0,0,22638,0,0,0,0,0,22639,0,0,22640,0,0,0,\r
-0,0,0,0,22644,0,22645,22647,0,0,0,0,22652,22653,0,0,0,22654,0,22655,0,0,0,22656,\r
-0,0,0,0,0,0,0,0,0,0,22673,22675,22676,0,0,22678,22679,0,22691,0,0,0,0,0,0,0,\r
-22693,0,0,22696,0,22699,22707,22708,0,0,0,0,0,0,0,0,22718,0,22719,0,0,0,0,22723,\r
-0,0,0,22724,22725,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22726,22728,0,0,0,0,0,0,0,0,22729,\r
-0,0,22731,0,0,0,0,22732,22735,22736,0,0,0,0,22739,0,22749,0,0,22751,0,0,0,0,0,0,\r
-0,0,0,0,0,22758,0,0,0,0,0,22760,0,0,0,0,0,22764,22765,22766,0,22768,0,0,0,0,0,\r
-22769,22770,0,0,0,0,0,0,22771,0,0,22772,22775,0,22776,22777,22780,0,0,22782,\r
-22784,0,22787,0,22789,22796,0,0,0,0,0,22798,0,0,0,0,0,0,22802,0,22803,22804,0,0,\r
-0,0,0,0,0,0,0,0,22805,0,0,22810,22811,22814,22816,0,22825,22826,0,22831,22833,0,\r
-0,0,0,0,0,0,0,0,22834,0,22836,22838,0,22839,0,0,0,0,0,22840,0,22847,0,0,0,0,0,\r
-22856,22857,0,22858,22859,0,0,22862,0,0,22864,0,0,0,0,22865,0,0,0,0,0,0,0,0,0,0,\r
-0,22866,0,22867,22868,0,0,0,0,22869,0,22871,0,22872,0,22873,22881,22882,22884,\r
-22885,0,0,0,0,0,0,0,22886,22887,0,22894,0,22895,0,0,0,22900,0,22901,0,0,0,0,\r
-22904,0,0,0,0,22905,22907,0,0,0,22915,22917,0,0,22918,0,0,0,22920,0,0,0,22929,\r
-22930,0,0,0,22941,22942,0,0,0,22943,0,0,0,22944,0,0,0,0,0,0,0,22946,0,22947,0,0,\r
-22954,0,22956,0,0,22962,0,0,0,0,0,0,0,22963,0,0,22964,0,0,0,0,0,0,0,22965,0,\r
-22968,0,0,0,22969,0,0,0,0,0,22970,0,22971,0,0,0,0,0,22978,0,0,22979,0,22987,0,0,\r
-22989,0,0,0,0,0,0,22990,0,23005,0,0,0,0,0,0,0,23006,23007,23008,0,0,23023,23024,\r
-23029,0,0,0,0,23030,0,0,0,0,0,23032,0,0,0,0,0,23035,0,0,0,0,23038,0,0,0,23048,0,\r
-23049,23052,23053,23060,23061,0,23063,0,0,0,0,23067,23068,0,0,0,23069,23073,0,0,\r
-0,23127,0,23128,0,0,0,0,0,23129,0,23138,23141,0,23149,0,0,23150,0,0,0,23152,0,0,\r
-0,0,0,0,0,0,23154,0,0,0,0,23157,23159,23160,0,0,0,0,0,0,0,0,0,0,0,0,23180,0,0,0,\r
-0,23181,0,0,23188,0,23189,0,0,0,0,0,0,0,0,0,0,0,0,23195,0,0,23196,23199,0,0,0,0,\r
-0,0,0,0,0,23202,0,23204,0,23207,0,23209,23210,0,0,0,0,0,0,23227,23229,0,0,23230,\r
-23234,23238,0,0,0,23245,23246,23248,0,0,0,0,23249,23254,0,0,0,23265,0,0,0,0,0,0,\r
-0,23268,0,23276,0,0,0,0,23277,0,23297,0,23298,0,0,0,0,23299,0,23302,0,0,23303,\r
-23312,0,0,23314,0,23320,0,0,0,0,23324,0,23325,0,23328,0,23334,0,0,0,23337,0,0,0,\r
-0,23343,23344,23346,0,23348,0,0,0,0,0,0,0,0,23353,0,0,0,0,23355,0,23356,23358,0,\r
-0,0,23359,23360,0,23361,0,23367,0,23369,0,0,23373,0,23378,23379,0,23382,23383,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,23387,0,0,0,0,0,0,23388,23390,0,0,23393,23398,0,0,0,\r
-23399,0,0,0,23400,0,0,0,0,23401,0,0,0,23415,0,0,0,0,0,0,0,0,23416,0,23422,0,\r
-23443,23444,0,0,0,0,23448,0,23454,0,0,0,0,0,0,23456,0,0,23458,23464,0,0,0,0,0,0,\r
-23465,0,0,0,23470,23471,0,0,23472,0,0,0,23473,23496,0,0,0,0,0,0,0,0,23497,0,\r
-23499,0,0,23502,0,0,23503,0,0,23513,0,0,23515,0,0,0,23517,0,0,0,0,23518,23519,\r
-23521,23524,0,23525,23528,23539,0,0,0,0,0,23541,0,0,23544,0,0,23556,0,0,23557,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,23559,0,23560,0,0,23561,0,0,23566,0,0,0,0,0,23568,23569,\r
-23570,0,0,0,0,23571,0,23574,0,0,0,0,0,0,0,0,0,0,0,23575,0,23579,0,0,23581,0,0,0,\r
-0,0,0,23587,0,0,0,0,0,0,0,23596,23598,0,0,0,0,23602,23606,0,0,23607,0,23608,0,0,\r
-0,23614,23616,0,0,0,0,0,23618,0,0,23619,0,0,0,0,23621,23626,0,23627,0,0,0,0,0,0,\r
-0,23629,0,23630,0,0,0,0,23634,0,23636,0,0,0,0,0,0,23638,0,0,0,0,23640,23667,0,\r
-23669,0,0,0,23681,0,0,0,0,0,0,0,23682,0,23683,0,0,0,0,0,23684,0,0,0,23685,23689,\r
-0,23693,23694,23700,0,23702,0,23709,0,0,0,0,0,0,0,23712,0,0,0,0,0,23714,0,0,\r
-23715,0,0,0,0,23718,0,0,23720,0,0,0,0,23722,0,0,0,23726,23729,0,23741,23746,0,\r
-23748,0,0,0,0,23749,0,0,0,0,0,23750,0,0,0,0,23751,0,23753,0,0,0,0,23757,23765,0,\r
-0,0,23770,0,0,0,0,0,0,0,23771,0,23772,23781,0,0,23796,0,0,0,0,23798,0,23799,0,0,\r
-0,23802,0,0,23806,0,23807,0,0,23808,0,23809,0,23819,0,0,0,23821,0,23827,0,0,0,\r
-23829,0,0,0,0,0,0,0,23830,0,0,0,0,0,0,23832,23833,23834,23835,0,0,0,0,23837,\r
-23838,0,0,0,0,0,23846,0,0,0,0,0,0,23847,0,0,0,0,0,23879,23881,0,0,23882,23883,\r
-23895,0,23899,0,0,0,0,23901,0,0,0,0,0,0,23902,0,0,0,0,0,23903,23905,0,23906,0,\r
-23907,23918,23919,23920,0,23922,0,23924,0,23927,0,23934,0,23937,23941,0,23942,\r
-23946,0,0,0,0,0,23955,23956,23958,0,0,0,0,0,0,23959,0,23962,23965,0,23966,0,0,0,\r
-0,23967,23968,0,0,23973,0,0,23974,0,0,0,0,23975,0,23976,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,23977,0,0,0,0,0,0,0,0,23980,0,0,23984,0,23985,0,0,23987,0,0,23988,23990,23991,\r
-0,0,0,0,0,0,23992,0,0,0,0,0,0,0,0,23994,0,0,0,23998,0,0,0,0,0,0,0,0,0,23999,0,0,\r
-24003,0,24004,0,24006,0,0,0,24007,0,0,24008,0,0,0,0,0,0,0,24009,0,0,24010,0,0,\r
-24011,0,0,24013,24014,0,0,24015,24016,24027,0,24028,24029,0,24030,0,0,0,0,0,\r
-24033,24034,0,24035,0,0,24036,0,0,24044,0,24048,24049,24063,24067,0,24068,24070,\r
-0,0,24071,24078,24087,0,24090,0,0,0,24095,0,24098,24101,24104,24106,0,24107,0,0,\r
-0,24108,0,0,0,0,24110,24111,0,24113,0,0,24115,24120,0,0,0,0,0,0,24124,0,24125,0,\r
-24126,0,24127,0,0,0,0,0,24135,0,0,24136,0,24137,24142,0,0,0,24146,0,0,24147,\r
-24149,24154,0,24163,0,0,0,24165,24166,24167,0,0,0,0,0,0,0,0,0,0,24169,24170,\r
-24175,0,0,0,24178,0,0,24179,0,0,24181,0,24184,24197,0,24201,24204,0,0,0,0,0,0,\r
-24206,24212,24220,0,0,0,24224,0,0,0,0,0,0,0,0,24226,0,24234,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,24235,0,24236,0,0,0,0,0,24239,24240,24241,0,0,24248,0,0,24249,0,\r
-24251,0,0,0,0,0,0,24253,0,24268,0,0,0,24269,0,24271,24272,0,0,0,0,24273,0,0,\r
-24274,0,0,24279,0,0,0,0,0,0,0,24280,0,24293,24294,0,0,0,0,0,0,24296,0,0,24323,0,\r
-0,0,24329,24330,24331,24339,0,24351,0,0,24369,24370,0,0,0,24371,0,0,0,0,24372,\r
-24373,24374,0,0,0,0,0,24378,0,0,0,0,24379,0,24381,0,24383,24389,0,24390,0,0,\r
-24394,24395,24400,0,0,0,24401,24402,0,24406,0,0,0,24411,0,0,0,24415,0,24416,0,0,\r
-0,0,0,24417,0,24419,0,24422,0,24423,24428,0,24435,0,0,0,24439,0,0,0,24440,24442,\r
-24446,0,0,0,24447,24448,24449,24452,0,0,0,0,24453,24457,0,0,24458,24459,24460,0,\r
-24465,0,0,0,0,0,0,0,24470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24471,0,24473,\r
-24474,24475,24476,0,24478,0,0,0,0,24480,0,0,0,0,0,0,0,0,0,0,24481,0,0,0,0,0,0,0,\r
-0,0,0,24482,24485,0,0,0,0,24486,0,0,0,24488,0,0,0,24494,0,0,0,0,24497,0,0,24498,\r
-0,0,0,24499,24506,0,0,0,24507,0,0,24511,0,0,24513,24514,0,0,0,0,0,24517,0,24518,\r
-0,24520,0,24521,24524,24525,0,0,0,0,0,24527,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24528,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24537,24539,0,24540,0,0,0,24548,0,0,0,0,0,24549,\r
-24550,0,0,0,24553,24554,0,24555,0,24556,0,24558,0,0,0,0,0,24560,0,0,0,24561,0,0,\r
-0,0,0,24562,0,0,0,0,0,0,0,0,0,0,0,0,0,24567,0,0,0,0,0,24569,0,0,0,24574,0,24575,\r
-0,0,0,0,0,0,0,0,0,0,0,24577,24581,0,24584,0,0,0,0,0,24585,0,0,0,0,0,24586,0,0,\r
-24587,0,24588,0,0,0,0,0,0,0,0,0,0,24590,24591,0,0,0,0,24592,0,0,0,0,0,0,0,24594,\r
-0,0,0,0,0,0,0,24596,24597,0,0,0,0,24602,24603,0,0,0,0,24604,0,0,24605,0,24610,0,\r
-0,24611,0,0,0,0,24612,24615,24616,24624,0,0,0,24627,0,24638,24639,0,0,0,0,24640,\r
-0,0,0,24655,24656,24657,0,0,0,0,0,0,0,0,24662,0,24663,24664,0,0,0,0,0,24665,0,0,\r
-0,0,24667,0,0,0,0,0,0,24668,24669,0,24670,24674,0,0,0,24675,0,24678,0,0,24679,0,\r
-0,0,24681,0,24683,0,0,0,0,24684,0,24685,0,0,24686,0,0,24688,24689,0,0,0,0,24690,\r
-24691,0,0,0,0,0,0,0,24697,0,24698,0,0,0,0,0,0,0,0,24709,0,0,0,0,0,24710,0,24712,\r
-0,0,0,0,0,0,24713,24714,0,24715,0,24716,24718,0,24719,0,0,0,0,24720,0,0,24725,0,\r
-0,24738,0,24749,24750,0,0,0,24752,0,0,0,24753,0,0,0,24758,0,0,0,0,0,24762,0,\r
-24763,0,0,0,0,0,0,0,24764,0,0,0,0,0,24765,24767,24768,0,24772,0,0,0,0,24773,0,0,\r
-0,0,24777,0,0,0,0,0,24785,0,24786,24788,0,0,0,24789,0,0,0,0,24794,24798,0,24799,\r
-24800,0,0,0,24803,0,24804,24806,0,24807,0,0,0,24810,0,0,0,0,0,0,24827,24828,0,\r
-24835,0,0,0,0,0,0,24836,0,0,0,0,0,24839,0,24843,24844,0,0,0,0,0,0,0,0,0,0,24847,\r
-0,0,24848,0,0,0,0,0,0,24849,0,24850,24851,0,0,0,24852,0,24853,0,0,0,0,0,0,0,0,0,\r
-24854,0,24855,0,0,24868,0,0,0,24883,0,0,0,24884,0,24895,24897,0,0,0,0,0,24899,0,\r
-0,0,0,0,24900,0,24913,0,0,0,0,0,0,24914,0,0,24917,24930,24931,0,0,0,24932,0,0,\r
-24939,0,0,24942,0,0,0,0,0,0,0,0,0,24945,24950,0,24951,0,0,24953,0,0,0,24954,0,\r
-24959,0,0,0,24961,0,0,24962,0,24964,24968,24970,24972,0,0,0,0,0,24976,0,0,0,\r
-24977,0,24982,0,0,24983,0,0,24984,0,0,0,24993,0,0,0,24994,0,0,25001,0,0,0,25003,\r
-0,0,25018,0,0,25023,0,0,0,25034,0,0,25035,25036,0,25037,0,0,0,0,0,0,0,25039,0,0,\r
-0,0,0,25040,0,0,0,0,0,0,0,25042,0,0,25043,25045,0,0,0,0,0,0,25049,0,0,25051,0,\r
-25052,25053,0,0,25054,0,0,0,25055,0,0,0,0,25057,25059,0,0,25060,25064,0,25065,\r
-25069,25070,0,0,0,0,25072,0,25073,0,25090,0,0,25092,25093,25101,0,0,0,0,0,0,\r
-25105,25108,0,0,25113,0,0,25115,25116,0,0,0,0,0,0,25117,0,0,0,25120,25121,0,0,0,\r
-0,0,0,0,25125,0,0,0,25126,0,25130,25134,0,25139,0,25143,0,0,0,25151,0,25161,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25163,0,0,0,0,0,0,0,25174,0,25175,0,25207,0,0,\r
-0,25209,0,0,0,0,25213,0,25219,0,25223,0,25225,0,0,0,25227,0,0,0,25228,0,0,0,\r
-25229,0,0,0,0,0,0,0,25231,25233,0,0,0,0,25237,25239,0,0,0,25243,0,0,0,25252,0,\r
-25257,25258,0,0,0,0,25260,25265,0,25268,0,0,25273,25324,0,25325,0,25326,0,0,0,0,\r
-0,0,0,0,25327,0,0,0,0,0,25328,0,0,0,0,0,0,25332,0,0,0,25333,0,0,0,25336,25337,\r
-25338,0,0,25343,0,25350,0,0,0,0,0,0,0,25352,0,25354,0,25375,0,25379,0,0,0,0,\r
-25384,0,0,0,0,0,0,0,0,0,25386,0,25388,0,25390,0,0,25399,0,0,25401,0,0,0,25402,0,\r
-0,0,25407,0,0,0,0,0,0,0,0,0,0,0,25413,25415,0,0,25417,0,0,0,0,0,0,0,25419,0,0,0,\r
-25421,0,0,0,25424,0,0,0,0,25433,0,0,0,0,0,0,0,0,0,25435,0,0,0,0,0,0,25436,0,0,0,\r
-25437,0,0,25440,0,0,0,0,0,0,25442,0,0,25443,0,25446,0,0,25449,0,0,0,25450,0,0,0,\r
-0,25452,0,25453,25454,25455,0,0,0,25456,0,25457,0,0,0,25459,0,25461,0,25468,0,0,\r
-0,0,0,0,0,0,25469,0,0,0,0,0,25471,0,0,0,0,0,25474,0,0,0,0,0,0,0,0,25475,0,0,0,0,\r
-25477,0,0,0,0,25483,0,0,0,0,0,25484,0,0,0,0,0,0,0,0,0,0,0,0,25485,0,25497,0,0,\r
-25498,0,25504,0,25510,0,25512,0,0,25513,25514,0,0,0,0,0,0,25517,25518,25519,0,\r
-25520,0,0,0,0,0,0,0,25521,0,25522,25527,25534,0,25536,0,25537,0,0,25548,25550,0,\r
-0,25551,0,25552,0,0,0,0,0,25554,0,25555,0,25556,25557,25568,0,0,0,25570,25571,0,\r
-0,0,0,0,0,25574,0,0,0,0,25579,0,0,0,25581,0,0,0,25582,0,0,0,0,0,0,0,0,0,25588,0,\r
-0,0,0,25589,0,0,0,0,25590,0,25591,25592,25593,0,25594,0,0,0,25596,0,25597,25615,\r
-0,0,0,0,0,25618,0,0,0,0,25619,25623,0,0,25629,0,0,25631,0,0,0,25635,25636,0,0,\r
-25649,0,0,0,0,25654,0,0,0,25661,25663,0,0,25671,0,0,25678,25698,0,25699,25702,\r
-25703,0,0,0,0,0,0,0,0,25704,0,0,0,0,0,25706,0,0,25710,0,25711,0,25712,0,25715,\r
-25716,25717,0,0,25718,25728,25732,0,0,0,25734,0,0,0,0,0,0,0,0,0,25737,0,0,25739,\r
-0,0,0,25740,0,25741,25745,0,25746,0,25748,25772,25778,0,0,0,0,0,25780,0,0,0,0,\r
-25781,0,25782,25784,25785,0,0,0,25789,0,0,0,0,0,0,25797,25801,0,0,0,25808,25809,\r
-0,0,25811,25814,25815,0,0,25817,0,0,0,0,0,0,0,0,25820,0,0,0,0,25832,25833,0,0,0,\r
-25846,0,0,0,25847,25848,0,0,0,0,0,0,0,0,0,25849,25850,0,0,25851,0,0,25852,0,\r
-25862,0,0,0,25863,25865,0,0,0,0,0,0,0,25867,25868,0,25869,25874,0,25875,0,25876,\r
-25877,0,0,0,0,25878,25902,0,0,0,0,0,0,0,25903,25904,25905,0,0,0,25908,25909,0,0,\r
-0,0,25910,0,0,0,0,0,0,0,25912,0,25913,0,0,0,0,0,0,0,0,25914,0,0,25916,0,0,0,0,0,\r
-25917,25927,0,0,0,0,25928,0,0,25930,0,0,0,25933,0,0,25938,25942,0,0,0,0,0,0,0,\r
-25945,0,25950,0,25956,0,0,25961,25962,0,0,25963,0,25964,25965,25966,0,0,0,0,0,\r
-25967,0,0,0,0,25968,0,0,0,25969,25971,0,0,0,0,0,25973,25975,0,0,0,0,0,0,0,25978,\r
-0,25981,0,0,0,25982,0,0,0,25984,0,0,0,0,0,0,0,25993,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-26002,0,0,0,26005,0,0,0,26006,26007,0,0,26014,26015,26016,0,0,0,0,0,0,26017,\r
-26018,26020,0,26022,26023,0,0,0,26024,26028,0,26029,26033,26034,26044,0,0,0,0,0,\r
-26046,0,0,26047,0,0,26049,0,26050,0,26051,0,0,0,0,0,26053,0,0,0,0,26054,26059,0,\r
-0,0,0,0,0,26060,0,26066,0,0,0,0,0,0,0,0,0,0,0,0,26067,0,26069,0,0,26071,0,0,0,\r
-26073,0,26074,26077,0,0,0,0,26078,0,0,0,26079,0,26090,0,0,26094,0,0,0,0,0,0,0,0,\r
-26095,0,0,0,0,0,0,0,0,0,0,0,26096,26101,0,26107,26122,0,26124,0,0,26125,0,0,0,0,\r
-0,0,26136,26141,26155,0,0,0,0,0,0,0,0,0,26164,26166,0,0,0,26167,0,26170,26171,0,\r
-0,26172,0,0,26174,0,0,0,0,0,0,0,0,0,0,0,0,0,26175,0,0,0,26176,26177,0,26321,\r
-26322,0,26323,0,0,26324,0,0,0,0,0,0,0,26325,0,26331,0,0,0,0,0,0,26335,0,0,0,\r
-26350,0,0,0,26379,0,0,26382,26383,26385,0,0,26392,26406,0,0,0,0,26411,0,0,0,0,0,\r
-26412,0,0,26420,0,0,26423,0,26424,26426,26432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-26435,0,26436,0,0,0,0,0,26441,0,26444,0,0,0,26446,0,0,0,0,26447,0,0,0,0,26449,0,\r
-26450,26452,0,26453,26454,0,0,0,26455,0,0,0,26456,0,0,26458,0,0,26460,0,26463,0,\r
-0,0,0,0,0,0,0,26464,26470,0,0,0,0,0,0,0,0,0,26473,0,0,26474,0,0,0,0,0,0,0,26475,\r
-0,0,0,0,0,0,0,26477,0,26485,0,0,26486,0,26487,0,0,26488,26493,26494,0,0,26495,0,\r
-26497,26504,26506,0,0,0,0,0,26507,0,0,0,0,0,26509,0,0,26510,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,26512,0,26513,26515,0,0,0,26518,0,0,0,26519,0,26524,26526,0,0,0,26527,0,\r
-26532,0,26533,26537,26558,0,0,0,26559,0,0,0,26571,0,0,26573,0,26588,0,26593,0,0,\r
-0,0,0,0,26603,0,26604,0,0,0,0,0,0,0,0,0,0,26606,0,0,0,0,0,0,0,26607,26609,26611,\r
-26614,0,0,0,26616,26620,0,26621,0,0,0,0,0,26627,0,26629,0,0,26630,0,0,26632,\r
-26643,0,0,0,26644,0,0,0,0,0,0,0,0,0,26646,26647,0,0,0,26650,0,0,26656,0,0,0,0,\r
-26663,26670,26671,0,0,0,26685,26686,26687,0,26689,0,0,0,0,26744,0,26745,0,26747,\r
-26748,0,26749,26750,26751,0,0,0,0,26752,26755,0,0,0,26756,26769,0,0,0,26774,0,0,\r
-0,0,0,26775,0,26777,26778,0,26786,0,0,0,26787,0,0,0,0,0,0,0,0,0,0,0,0,0,26788,0,\r
-0,26789,0,0,0,0,0,26791,0,26792,26793,0,0,0,26794,0,26797,26798,0,0,0,26800,0,0,\r
-26803,0,26804,0,0,0,0,0,0,0,0,0,26805,0,0,26808,0,0,26809,0,0,0,0,0,0,0,26812,0,\r
-26825,0,0,0,0,0,0,0,26826,0,0,26827,26829,26834,0,0,0,0,26835,0,0,26849,0,26851,\r
-0,0,0,0,0,0,0,0,0,26852,0,26853,26857,0,26858,0,26859,0,0,0,0,0,0,0,26876,0,\r
-26878,26882,26883,0,0,0,0,26890,26894,0,0,0,0,26895,26896,0,0,0,0,0,26900,0,0,0,\r
-0,0,0,0,26911,26913,26914,26915,26916,26919,0,0,0,26921,26922,0,0,26925,0,0,0,\r
-26928,0,0,26929,26930,0,0,0,26931,0,26932,0,0,0,0,0,26933,0,0,0,0,0,0,26937,0,0,\r
-26943,0,0,26944,0,0,0,26946,0,0,0,0,0,0,0,26956,0,26958,0,0,26963,0,0,0,0,0,0,0,\r
-26965,0,26969,26970,26972,0,0,0,0,0,26973,0,26974,0,26978,0,26980,0,0,0,0,0,0,\r
-26982,0,26986,26987,0,26990,0,0,0,0,27003,27006,0,0,27007,27010,27012,27013,0,0,\r
-0,0,0,0,0,0,27014,27015,27018,0,27019,0,0,0,0,0,27025,0,0,0,27026,0,0,0,0,27029,\r
-27030,27031,27034,0,0,27036,27037,0,0,0,27038,27042,0,0,0,27044,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,27045,0,0,0,0,0,0,0,27046,0,0,0,0,0,0,0,27047,27049,0,27050,0,0,0,\r
-27051,27052,0,27055,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27056,27058,27059,0,\r
-27061,0,27064,0,0,0,0,0,27069,0,0,27070,0,0,0,0,0,0,0,27072,0,0,0,0,0,0,0,0,\r
-27076,0,0,0,0,0,27078,0,27079,0,0,0,27081,0,0,0,0,0,0,27082,0,27083,27086,0,0,0,\r
-0,27087,0,0,0,0,0,27088,27090,0,27094,0,0,27095,0,27099,27102,0,0,0,27103,0,0,0,\r
-0,27105,0,0,0,27106,0,0,0,0,0,0,27107,0,0,0,0,27108,27117,0,0,0,0,27118,0,0,\r
-27124,0,27126,0,0,27130,27131,0,0,0,0,0,0,27147,0,0,0,0,27148,27149,0,0,0,0,\r
-27150,27151,0,27152,0,27159,0,0,0,27164,0,0,0,0,0,0,0,27175,0,27189,0,0,27191,0,\r
-27193,0,27195,0,27198,0,0,0,0,0,27200,0,0,0,0,27202,0,0,0,0,27203,0,0,27204,0,0,\r
-27206,0,27207,0,0,0,0,27209,0,0,0,27213,0,0,27216,27219,27220,27222,27223,0,\r
-27224,0,27225,27226,0,0,27233,0,0,0,0,27235,0,27237,0,27238,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,27239,0,27242,27243,0,27250,0,0,0,27251,0,27253,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,27254,27255,27258,0,0,0,27259,0,0,0,0,0,0,27267,0,27276,27278,\r
-0,0,0,0,0,0,0,0,0,27296,27297,27301,0,0,0,0,0,0,27302,0,0,0,0,0,0,27312,27313,0,\r
-0,0,0,0,27318,0,27320,0,27329,0,27330,27331,0,27332,0,0,0,0,27340,0,0,0,27348,0,\r
-0,0,0,0,0,27350,0,27351,0,0,0,0,27355,0,0,27358,27359,27361,0,0,0,27365,0,27367,\r
-0,27376,27378,0,0,27379,0,0,0,0,0,0,27396,0,27397,27404,0,0,0,0,0,27408,0,0,0,0,\r
-27453,0,0,0,27456,0,0,0,27458,0,0,0,0,0,0,0,27459,0,0,0,27460,0,0,27461,0,27465,\r
-27467,0,0,27469,0,27470,0,27471,0,27477,27482,0,0,0,0,0,0,27484,0,0,0,0,0,0,\r
-27485,0,0,0,0,0,27493,0,27494,27502,0,0,0,0,0,0,0,0,0,0,0,0,27511,27532,0,0,0,\r
-27533,27545,0,0,0,27546,0,0,0,0,0,0,0,0,0,0,27547,0,0,27549,27550,0,27551,0,0,0,\r
-0,0,0,0,27555,0,0,27571,0,27573,27574,27575,27577,0,27578,0,0,27579,27585,0,0,0,\r
-0,0,27586,0,0,27588,27589,0,0,0,0,27596,0,0,27600,0,0,0,0,0,0,0,0,0,0,0,27608,0,\r
-0,0,0,0,0,0,0,0,0,0,27610,0,0,0,27618,0,0,27620,0,0,0,27631,0,0,27632,27634,0,\r
-27636,27638,0,0,0,27643,0,27644,27649,0,0,0,0,0,0,0,0,0,0,0,0,0,27651,27660,0,\r
-27661,0,0,0,0,0,0,0,27662,0,0,27664,0,27665,0,0,0,27669,0,27671,0,0,0,27673,\r
-27674,0,0,0,27682,0,0,0,27711,0,27712,27713,27719,27720,0,0,27728,0,27729,0,0,0,\r
-0,0,0,0,0,0,27731,0,0,27732,0,27733,0,27738,0,0,0,27742,0,0,0,27743,27744,0,0,0,\r
-0,0,0,27745,27746,0,0,0,27747,27748,27751,27752,0,0,0,27768,27770,0,0,0,27774,\r
-27775,0,27776,27777,0,0,27781,0,27784,0,27786,0,0,27791,0,27792,27793,27804,0,\r
-27812,27813,0,0,0,0,0,0,0,0,27814,0,27825,0,27827,0,0,0,0,27828,27861,27862,0,0,\r
-0,27864,0,0,0,27865,27884,0,27889,0,0,0,0,0,27890,0,27891,0,0,0,27892,0,0,0,0,0,\r
-27897,27898,0,0,27899,0,0,0,27901,27905,0,0,27920,0,0,27921,0,27922,0,0,0,27931,\r
-27934,0,0,0,0,0,0,0,0,0,0,27941,0,27942,0,27945,0,27947,27954,0,0,0,0,27960,\r
-27963,0,0,0,0,0,0,0,0,27964,27965,0,0,0,27967,0,27969,27975,0,27976,27977,0,\r
-27981,0,27983,28051,28052,0,0,0,0,0,28056,0,0,0,0,0,0,28058,28059,0,0,28061,0,0,\r
-0,0,0,0,0,28063,0,0,0,0,0,0,28066,0,0,0,0,0,0,28069,28070,28072,0,28073,0,0,\r
-28074,0,0,0,0,28075,0,0,0,0,0,0,0,28078,0,0,0,0,28085,0,0,0,0,28086,0,0,0,0,0,0,\r
-28088,0,0,0,0,0,0,0,0,28090,0,28097,28114,28115,0,0,0,0,0,0,0,28116,0,0,0,0,0,\r
-28118,0,28129,0,28131,0,0,28135,0,0,0,28140,28141,0,0,0,28146,0,0,0,0,28152,0,0,\r
-0,0,28155,28157,28161,0,0,0,0,28166,0,28167,0,0,0,0,0,0,0,0,0,0,0,28172,0,0,0,0,\r
-0,0,28173,0,0,28175,0,0,0,0,0,0,0,0,0,28178,28188,0,28190,0,0,0,0,0,28191,0,\r
-28193,28206,0,0,28207,28209,0,28211,0,28213,0,0,0,28215,28216,28217,0,28222,0,\r
-28223,28225,0,0,0,28226,0,28227,28229,28232,0,0,0,0,0,0,0,0,0,28235,0,28241,0,0,\r
-28242,0,0,0,0,28243,0,0,0,28245,0,0,0,28248,28250,0,28251,28252,0,0,0,0,0,0,\r
-28253,0,0,28254,28255,0,0,28256,0,0,28258,0,0,0,0,0,28259,0,0,28260,0,0,28261,0,\r
-0,0,0,28262,28263,0,0,28264,0,0,0,28266,0,28268,28269,0,28270,28272,28274,0,\r
-28277,28278,0,0,0,28279,0,28280,28281,28283,0,28292,0,28294,0,28297,0,0,0,0,\r
-28299,0,0,0,0,0,28300,0,0,0,0,0,0,0,28301,0,0,0,0,0,0,0,0,0,0,0,0,0,28302,28303,\r
-0,0,0,0,28304,0,0,28305,0,28312,0,28313,28314,0,0,0,0,0,0,28315,0,0,0,28320,\r
-28321,0,0,28328,0,0,0,28329,28338,0,28339,0,0,28344,0,0,0,0,0,0,0,0,28347,0,0,0,\r
-0,0,0,0,0,28348,0,0,0,0,0,28411,0,28412,28413,0,28416,0,0,0,28420,0,0,0,0,0,\r
-28421,0,0,0,0,28423,0,0,0,28424,0,0,28428,0,0,0,0,0,28429,0,0,0,28431,28434,0,\r
-28458,0,0,0,0,0,0,0,0,0,0,0,28464,0,0,0,0,28465,0,28467,0,0,0,0,0,0,28471,0,0,0,\r
-0,28474,0,28480,0,28481,0,0,28485,0,0,0,0,28486,28488,0,0,28489,0,0,0,0,28492,0,\r
-0,0,28495,0,28497,0,28499,0,0,0,0,28500,0,0,28502,28503,0,0,0,28508,0,0,0,28510,\r
-0,0,28512,28513,28514,28521,0,28526,0,28527,28528,0,0,0,0,28529,0,0,28532,0,0,\r
-28537,28538,0,0,0,28539,0,28548,0,28553,28554,0,0,0,0,0,0,0,0,0,0,0,0,28560,\r
-28563,0,0,28564,0,0,0,0,28565,0,0,0,0,0,0,0,28566,28568,0,0,0,0,0,0,28569,0,0,0,\r
-28570,0,28572,28573,0,0,0,0,28575,0,0,0,0,28576,28581,28588,0,0,28589,0,0,0,\r
-28590,28595,0,28598,0,0,28601,0,0,28605,0,0,0,0,28614,28615,28619,0,0,0,0,0,0,\r
-28620,0,28626,0,0,28628,0,28631,0,28632,0,0,0,0,0,0,28635,0,0,0,28637,28638,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28639,0,28643,0,0,28652,0,0,0,28662,0,\r
-28670,28671,0,0,0,0,0,0,0,0,0,28672,28673,28675,28676,0,0,0,0,0,0,0,28691,0,0,0,\r
-28695,0,0,0,28696,0,28697,28698,0,28705,0,28707,28708,28710,0,0,0,0,0,0,0,28711,\r
-28728,0,0,0,28736,0,0,0,28737,0,0,0,0,0,0,0,0,0,28738,0,28739,0,28741,0,0,28742,\r
-0,0,0,0,0,0,0,0,0,0,0,28745,0,0,0,0,0,0,28749,28750,28752,28754,28756,0,28757,0,\r
-0,0,0,28759,28760,0,0,0,0,0,0,28762,0,0,0,28764,0,0,0,0,0,0,28766,0,28767,28768,\r
-0,0,0,0,28769,28770,0,0,0,0,0,0,0,0,0,0,0,0,0,28771,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-0,28772,0,28773,0,28782,0,0,0,0,0,0,28784,0,28785,0,28786,0,0,0,28787,0,0,0,\r
-28797,0,0,0,0,0,0,28799,0,0,28801,0,0,0,0,28802,0,28805,0,0,28806,0,0,28807,0,0,\r
-0,0,0,0,0,28808,0,0,0,0,0,28810,28812,0,0,28816,28819,0,0,28821,0,28826,0,0,0,\r
-28842,28852,0,0,28853,0,28854,28855,0,0,0,28857,0,0,0,28858,0,28867,28868,28869,\r
-0,0,0,28874,28880,28882,28890,28892,0,0,0,0,0,0,0,28895,0,0,0,28898,28899,0,0,0,\r
-28900,0,0,28904,0,28906,0,0,0,0,28907,0,0,0,0,0,0,28908,0,0,0,28910,0,28914,0,0,\r
-0,0,0,0,0,28915,28916,28919,0,0,28920,0,28921,0,0,0,0,0,0,0,0,28924,0,0,0,0,\r
-28926,28929,0,0,0,28930,0,28936,0,28939,0,0,0,0,28942,0,0,0,0,0,0,28956,0,0,0,\r
-28966,0,0,0,0,28967,0,0,0,0,0,0,0,0,0,28968,0,28971,0,28975,28976,0,28982,28983,\r
-0,0,28984,28989,28996,28997,28998,0,0,0,0,0,0,28999,0,0,0,0,0,29000,0,29001,0,0,\r
-0,29009,0,0,29011,0,0,29021,0,0,0,0,29024,0,29025,0,0,0,0,0,29026,0,0,0,29036,0,\r
-0,0,29037,0,0,0,0,29038,0,29045,0,29047,0,0,0,0,0,0,0,0,0,29051,0,0,0,29054,\r
-29056,29062,0,29070,29082,0,0,0,29083,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29084,0,0,\r
-0,0,29085,29088,0,0,0,0,0,0,0,29090,29097,0,0,0,29103,0,0,0,0,0,0,0,0,29105,0,0,\r
-0,0,0,29107,0,29109,0,0,0,29115,0,0,29120,0,0,29138,29140,0,0,0,0,0,0,0,0,0,\r
-29152,0,29160,29174,0,29176,0,0,29180,0,29181,0,0,0,0,0,0,0,0,29228,0,0,29229,0,\r
-0,29230,0,0,0,0,0,0,0,0,0,0,29234,0,0,0,29241,0,29245,0,29248,0,29250,29256,\r
-29280,0,29282,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29285,0,0,29286,29291,29292,0,0,0,0,\r
-29294,0,29295,0,0,0,0,0,29296,29297,29298,29300,0,29302,0,0,29304,29307,0,29312,\r
-0,0,0,29322,0,0,29323,0,0,29324,29326,29328,0,29335,0,0,0,0,0,0,0,29338,29339,0,\r
-0,0,0,0,29341,29343,0,0,0,0,29344,0,0,0,0,0,29345,0,0,0,0,29346,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,29347,29348,29349,0,0,29354,0,0,29355,0,0,0,0,0,0,0,0,29357,0,0,\r
-0,0,29364,0,29365,0,0,0,0,0,0,0,29366,0,0,29368,0,0,0,0,0,0,0,0,29378,0,29381,0,\r
-0,0,0,0,0,0,0,29386,0,0,0,0,0,0,29389,0,0,0,29390,0,0,29391,29397,0,29398,29412,\r
-29414,29418,29419,0,0,0,0,0,0,0,29420,0,0,0,0,0,0,0,29423,0,0,0,29435,0,0,0,\r
-29437,0,0,29439,0,29441,0,0,0,0,29443,0,29446,29450,29452,0,0,0,0,0,29456,0,0,0,\r
-0,0,29461,0,0,0,29464,0,0,0,0,0,0,0,0,29468,0,29473,0,0,0,29486,0,0,0,29490,0,0,\r
-0,29491,29492,0,0,29497,0,0,0,29498,0,29499,0,29502,29505,0,29509,0,0,0,29510,0,\r
-0,0,29512,0,0,0,29516,0,0,0,0,0,0,0,0,29518,0,29519,0,0,0,0,0,29520,29521,29529,\r
-0,0,0,0,0,0,0,0,29530,0,0,29531,29538,0,29540,0,0,0,29542,0,29543,29544,29547,0,\r
-0,29548,0,0,0,29549,0,0,0,29550,0,0,29552,0,0,0,0,29558,29561,0,29562,29564,0,0,\r
-29565,0,0,29566,0,0,0,0,0,0,0,0,0,0,29578,29584,29586,29591,0,0,0,0,29593,29594,\r
-0,0,29597,0,0,29613,0,29614,0,29615,0,0,0,0,29616,29617,0,0,29625,0,0,0,29632,0,\r
-0,0,0,0,0,0,29633,0,0,0,0,0,29634,29635,29637,0,29638,0,29641,29643,0,0,0,0,0,0,\r
-29644,0,29645,0,29649,0,0,0,29650,0,29653,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29656,\r
-29659,0,0,29660,0,0,0,29661,0,0,0,0,0,29664,0,0,0,29671,29673,0,0,0,0,0,0,0,\r
-29675,0,29677,29679,0,0,29684,0,0,0,0,0,29685,0,0,0,29687,0,0,0,29688,0,29689,\r
-29690,29700,0,29701,0,0,0,29702,0,29706,0,0,0,0,0,0,0,29720,0,29721,0,29727,0,\r
-29733,29734,0,29750,29761,0,29763,0,0,0,0,0,29764,0,0,29765,0,0,0,29771,0,0,0,0,\r
-0,0,0,0,0,0,0,0,29772,0,0,0,29773,29774,29775,0,0,0,0,0,0,0,0,0,0,0,29822,0,0,0,\r
-29824,0,29825,0,0,0,0,0,29827,0,0,0,0,0,0,0,0,29829,0,29832,29834,0,0,29835,0,0,\r
-29837,29838,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29843,0,0,0,0,29844,29845,0,0,0,\r
-0,0,0,0,0,0,29849,0,0,29869,29872,29890,29905,0,0,0,0,0,29907,29921,0,29922,0,0,\r
-29923,29926,29944,29946,0,0,0,0,0,0,0,29947,29948,0,0,0,29951,0,0,0,0,0,29953,0,\r
-0,29956,0,29957,0,0,29962,0,0,0,0,29971,0,0,0,29972,0,0,0,0,0,29978,0,29979,\r
-29992,30007,30008,30010,0,0,0,30013,0,0,0,0,30014,30016,0,0,0,0,0,0,0,0,0,0,0,\r
-30017,0,0,0,0,0,30023,30031,0,0,30033,0,0,0,0,0,0,0,0,0,0,30034,0,30038,0,30039,\r
-0,30040,0,0,0,0,0,0,30067,30068,0,0,0,30069,0,30072,0,0,0,30073,0,0,0,0,30075,0,\r
-0,0,0,0,0,30079,0,0,30080,0,0,0,0,0,30082,0,0,0,0,0,0,0,0,0,0,0,30084,30090,0,0,\r
-30091,0,0,0,0,30098,30118,0,30119,0,30121,30130,0,0,0,0,0,0,0,0,0,0,0,0,0,30131,\r
-30132,30133,0,0,0,0,0,0,30135,0,0,0,0,0,0,0,0,0,0,0,30136,0,0,30137,30138,0,0,0,\r
-30139,30146,0,0,0,0,0,30147,0,0,30148,30151,0,0,0,30168,0,30172,30173,0,0,0,0,0,\r
-0,0,0,30180,30181,0,30192,0,0,0,0,0,0,0,30194,30196,0,0,30199,0,0,30202,0,0,0,0,\r
-30203,0,0,0,0,0,0,0,0,0,0,30213,0,0,0,30216,0,0,30217,0,0,0,30218,0,0,0,0,30219,\r
-0,30220,0,30222,30227,0,0,0,0,0,30231,0,0,30233,30235,0,0,0,0,30238,0,30240,\r
-30243,30245,0,30250,30252,0,0,0,30269,0,0,30271,30272,0,0,0,30278,30280,0,0,\r
-30282,0,30284,0,30294,0,0,0,0,30295,30296,0,0,0,0,0,30298,30299,30302,30304,\r
-30306,0,0,0,0,0,0,30316,30317,0,0,0,30318,0,0,0,30319,0,30320,30322,30326,0,0,0,\r
-0,0,30327,0,30332,30348,30349,0,0,30356,0,0,0,0,0,0,0,0,30357,0,30358,0,30359,\r
-30360,0,0,30365,30366,30378,0,0,0,0,30379,0,0,30381,0,30385,0,30388,30397,0,0,0,\r
-30401,0,0,0,0,30403,0,0,0,0,0,30404,0,0,30405,0,30406,30408,0,30409,0,30410,0,0,\r
-0,30417,0,0,30418,30419,0,30420,0,30424,0,0,0,30427,30430,30432,0,0,0,0,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,0,30433,0,0,0,0,0,0,0,30436,0,30437,30438,0,30441,30442,0,0,\r
-0,30445,0,0,0,0,30452,30456,30457,0,0,0,30458,0,30464,0,0,0,0,0,0,30467,0,30469,\r
-0,0,0,0,0,30477,0,0,30484,0,0,0,0,0,30485,0,0,0,0,0,30486,30487,30497,30498,0,0,\r
-0,0,0,0,0,0,0,0,30505,0,30508,0,0,0,30509,30510,0,30514,30516,0,0,0,0,0,0,0,0,0,\r
-0,0,30523,0,30524,0,30525,0,0,0,0,30537,0,0,30538,0,0,0,0,0,30553,0,0,30555,\r
-30556,30558,30559,30560,0,0,30561,0,30562,0,0,0,0,0,0,0,0,30563,30570,30571,0,\r
-30586,30587,0,0,30590,0,0,30594,0,0,0,0,30611,30612,30623,30634,0,0,30636,30640,\r
-30655,30656,0,30657,0,0,30658,30669,0,30670,0,30676,30678,0,0,0,0,0,0,0,30679,0,\r
-0,0,0,0,0,0,0,0,0,0,30695,0,0,30698,0,0,0,0,30700,0,0,0,0,30701,0,30702,30703,0,\r
-0,0,0,30707,0,0,0,30709,0,0,30710,30719,30729,0,0,0,0,0,0,0,0,0,30731,0,0,30733,\r
-0,0,0,30734,0,0,0,0,0,30736,30737,0,0,0,30740,0,0,0,30743,0,30746,0,30747,30748,\r
-0,0,30751,30752,30753,0,0,0,30754,0,0,30760,0,0,0,0,0,0,0,30763,0,30764,0,0,\r
-30766,0,30769,30770,30771,30774,30777,0,0,30779,30780,30781,0,0,0,0,30790,0,0,0,\r
-30792,0,0,0,0,30810,0,0,0,0,0,0,0,30812,30819,0,0,30823,30824,0,30825,0,30827,0,\r
-0,0,0,0,0,30828,0,0,30830,0,0,0,30834,0,30835,0,30837,30838,0,30845,0,0,0,0,0,\r
-30846,30847,0,0,30849,0,30851,0,0,0,0,0,30852,30858,0,0,30859,0,30865,0,0,30866,\r
-0,0,30868,0,0,30869,0,0,0,30881,30883,0,0,0,0,0,30889,0,30891,0,0,0,0,30894,0,\r
-30895,0,30897,0,30898,0,0,0,30904,30906,0,30909,0,0,0,0,0,0,30910,0,0,0,30915,\r
-30933,30942,0,0,0,0,30943,0,0,30945,0,0,0,0,0,0,30946,0,0,30947,0,0,30955,30956,\r
-0,0,30960,0,0,30961,30962,30966,0,0,30969,30974,0,0,0,30976,0,0,30977,0,30978,\r
-30982,0,0,0,0,0,0,0,30994,30995,30998,0,31000,0,0,31001,0,0,31003,31005,0,0,\r
-31006,31011,0,0,31014,0,31016,0,0,0,0,31018,0,0,31020,31023,31024,31025,0,0,0,0,\r
-0,0,0,0,0,0,0,0,0,0,31027,31028,31029,0,0,0,0,0,0,31032,0,0,0,0,0,0,0,0,0,0,0,\r
-31036,31037,31038,0,0,0,31041,31043,31045,0,31047,0,0,0,31048,0,31049,0,0,0,\r
-31053,31054,31055,0,0,31063,0,0,0,0,0,31066,0,31068,31071,0,0,0,31072,31073,0,0,\r
-0,0,31075,0,0,31076,0,0,0,31077,31079,0,31080,0,0,0,0,0,0,0,0,0,0,31087,0,31142,\r
-0,31144,0,0,31145,31146,31147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31149,0,31151,31152,0,\r
-0,0,0,0,0,0,31162,31171,31174,31175,0,0,0,31176,0,0,0,0,0,0,0,31179,0,0,0,31186,\r
-0,0,0,31192,31195,0,0,31196,0,0,0,0,0,0,0,0,31198,0,0,0,0,0,31199,0,0,0,31205,0,\r
-0,0,0,31211,31215,0,0,0,0,31231,0,31232,0,0,0,0,0,0,0,0,0,0,31233,31236,31253,0,\r
-31254,0,0,0,0,0,0,31255,0,0,31257,0,0,0,0,0,0,0,0,0,31258,31259,0,0,31260,0,\r
-31261,0,0,0,0,0,31262,31263,0,0,31264,0,31266,0,31267,0,0,0,0,0,31281,0,31282,0,\r
-31284,0,0,31285,31287,31288,0,0,31290,0,0,0,31292,31295,0,31299,0,31300,0,0,0,0,\r
-0,31302,0,0,0,0,31303,0,0,0,0,0,0,31304,0,0,0,0,0,31305,31308,31309,31315,0,\r
-31317,0,0,0,0,0,31323,0,31324,0,0,0,0,0,31325,31327,0,0,31331,0,0,0,0,0,31333,0,\r
-0,0,0,0,31336,0,0,31337,0,0,0,0,0,0,31338,0,0,0,0,0,0,0,0,0,0,0,0,31339,0,0,0,0,\r
-0,0,0,31342,0,0,0,0,31345,0,0,0,0,0,0,0,0,31347,0,0,0,0,0,0,31348,0,0,31350,\r
-31351,0,31352,0,0,31354,0,0,0,0,31355,0,0,31356,0,0,0,0,0,0,0,0,0,0,31363,0,\r
-31372,0,0,31373,0,0,0,0,0,0,0,0,0,31376,0,31388,0,31389,0,31392,0,31401,0,31405,\r
-31407,31408,0,31409,0,0,0,0,0,0,31413,31415,0,0,0,31416,31418,0,0,0,0,0,0,31422,\r
-31423,0,0,31424,0,31425,31432,0,0,0,0,0,0,0,0,0,31433,0,0,0,0,0,0,0,0,31434,0,0,\r
-0,0,0,0,31435,0,0,0,0,31438,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31442,0,31444,0,\r
-31448,0,0,31451,0,0,0,0,31452,0,31461,31465,0,0,31466,0,0,31467,0,0,31468,0,0,0,\r
-31469,31473,0,31476,0,0,0,0,31489,31490,0,0,0,0,0,0,0,31492,31493,31494,0,0,0,0,\r
-31501,31504,31505,0,0,0,0,0,0,0,0,0,31509,0,0,0,0,31510,0,0,31511,0,0,31513,0,0,\r
-0,0,0,0,0,0,0,31514,0,31522,31536,31539,31540,0,31541,0,0,0,0,0,0,31546,31553,\r
-31559,0,0,0,31560,31561,31562,0,0,31564,31567,0,31569,0,0,0,31570,0,0,0,0,31571,\r
-0,0,0,0,0,0,31572,31574,31580,31581,0,0,31582,31584,31585,31586,31595,0,31596,0,\r
-0,0,0,31597,0,31599,0,31600,31601,0,0,31603,31604,0,0,31608,31610,0,0,0,31611,0,\r
-31615,0,0,0,0,31616,0,0,0,0,0,0,31617,0,0,0,0,0,31618,0,0,0,0,0,0,31621,0,0,0,0,\r
-0,0,0,0,0,31622,31625,0,0,0,0,31627,0,31641,0,0,31642,0,0,31643,0,0,0,0,0,0,0,0,\r
-0,31644,0,31646,0,0,0,0,31648,0,0,0,31652,0,0,0,31657,0,0,31676,0,0,0,0,0,0,0,\r
-31689,31691,31692,0,31694,0,0,0,31696,0,31702,0,31703,0};\r
-\r
-static const DictWord kStaticDictionaryWords[31705] = {\r
-{0,0,0},{8,0,1002},{136,0,1015},{4,0,683},{4,10,325},{138,10,125},{7,11,572},{9,\r
-11,592},{11,11,680},{11,11,842},{11,11,924},{12,11,356},{12,11,550},{13,11,317},\r
-{13,11,370},{13,11,469},{13,11,471},{14,11,397},{18,11,69},{146,11,145},{134,0,\r
-1265},{136,11,534},{134,0,1431},{11,0,138},{140,0,40},{4,0,155},{7,0,1689},{4,10\r
-,718},{135,10,1216},{4,0,245},{5,0,151},{5,0,741},{6,0,1147},{7,0,498},{7,0,870}\r
-,{7,0,1542},{12,0,213},{14,0,36},{14,0,391},{17,0,111},{18,0,6},{18,0,46},{18,0,\r
-151},{19,0,36},{20,0,32},{20,0,56},{20,0,69},{20,0,102},{21,0,4},{22,0,8},{22,0,\r
-10},{22,0,14},{150,0,31},{4,0,624},{135,0,1752},{5,10,124},{5,10,144},{6,10,548}\r
-,{7,10,15},{7,10,153},{137,10,629},{6,0,503},{9,0,586},{13,0,468},{14,0,66},{16,\r
-0,58},{7,10,1531},{8,10,416},{9,10,275},{10,10,100},{11,10,658},{11,10,979},{12,\r
-10,86},{14,10,207},{15,10,20},{143,10,25},{5,0,603},{7,0,1212},{9,0,565},{14,0,\r
-301},{5,10,915},{6,10,1783},{7,10,211},{7,10,1353},{9,10,83},{10,10,376},{10,10,\r
-431},{11,10,543},{12,10,664},{13,10,280},{13,10,428},{14,10,128},{17,10,52},{145\r
-,10,81},{4,0,492},{133,0,451},{135,0,835},{141,0,70},{132,0,539},{7,11,748},{139\r
-,11,700},{7,11,1517},{11,11,597},{14,11,76},{14,11,335},{148,11,33},{6,0,113},{\r
-135,0,436},{4,10,338},{133,10,400},{136,0,718},{133,11,127},{133,11,418},{6,0,\r
-1505},{7,0,520},{6,11,198},{11,10,892},{140,11,83},{4,10,221},{5,10,659},{5,10,\r
-989},{7,10,697},{7,10,1211},{138,10,284},{135,0,1070},{5,11,276},{6,11,55},{135,\r
-11,1369},{134,0,1515},{6,11,1752},{136,11,726},{138,10,507},{15,0,78},{4,10,188}\r
-,{135,10,805},{5,10,884},{139,10,991},{133,11,764},{134,10,1653},{6,11,309},{7,\r
-11,331},{138,11,550},{135,11,1861},{132,11,348},{135,11,986},{135,11,1573},{12,0\r
-,610},{13,0,431},{144,0,59},{9,11,799},{140,10,166},{134,0,1530},{132,0,750},{\r
-132,0,307},{133,0,964},{6,11,194},{7,11,133},{10,11,493},{10,11,570},{139,11,664\r
-},{5,11,24},{5,11,569},{6,11,3},{6,11,119},{6,11,143},{6,11,440},{7,11,295},{7,\r
-11,599},{7,11,1686},{7,11,1854},{8,11,424},{9,11,43},{9,11,584},{9,11,760},{10,\r
-11,148},{10,11,328},{11,11,159},{11,11,253},{11,11,506},{12,11,487},{12,11,531},\r
-{144,11,33},{136,10,760},{5,11,14},{5,11,892},{6,11,283},{7,11,234},{136,11,537}\r
-,{135,11,1251},{4,11,126},{8,11,635},{147,11,34},{4,11,316},{135,11,1561},{6,0,\r
-999},{6,0,1310},{137,11,861},{4,11,64},{5,11,352},{5,11,720},{6,11,368},{139,11,\r
-359},{4,0,75},{5,0,180},{6,0,500},{7,0,58},{7,0,710},{10,0,645},{136,10,770},{\r
-133,0,649},{6,0,276},{7,0,282},{7,0,879},{7,0,924},{8,0,459},{9,0,599},{9,0,754}\r
-,{11,0,574},{12,0,128},{12,0,494},{13,0,52},{13,0,301},{15,0,30},{143,0,132},{\r
-132,0,200},{4,10,89},{5,10,489},{6,10,315},{7,10,553},{7,10,1745},{138,10,243},{\r
-135,11,1050},{7,0,1621},{6,10,1658},{9,10,3},{10,10,154},{11,10,641},{13,10,85},\r
-{13,10,201},{141,10,346},{6,11,175},{137,11,289},{5,11,432},{133,11,913},{6,0,\r
-225},{137,0,211},{7,0,718},{8,0,687},{139,0,374},{4,10,166},{133,10,505},{9,0,\r
-110},{134,10,1670},{8,0,58},{9,0,724},{11,0,809},{13,0,113},{145,0,72},{6,0,345}\r
-,{7,0,1247},{144,11,82},{5,11,931},{134,11,1698},{8,0,767},{8,0,803},{9,0,301},{\r
-137,0,903},{139,0,203},{134,0,1154},{7,0,1949},{136,0,674},{134,0,259},{135,0,\r
-1275},{5,11,774},{6,11,1637},{6,11,1686},{134,11,1751},{134,0,1231},{7,10,445},{\r
-8,10,307},{8,10,704},{10,10,41},{10,10,439},{11,10,237},{11,10,622},{140,10,201}\r
-,{136,0,254},{6,11,260},{135,11,1484},{139,0,277},{135,10,1977},{4,10,189},{5,10\r
-,713},{6,11,573},{136,10,57},{138,10,371},{132,10,552},{134,11,344},{133,0,248},\r
-{9,0,800},{10,0,693},{11,0,482},{11,0,734},{11,0,789},{134,11,240},{4,0,116},{5,\r
-0,95},{5,0,445},{7,0,1688},{8,0,29},{9,0,272},{11,0,509},{11,0,915},{4,11,292},{\r
-4,11,736},{5,11,871},{6,11,171},{6,11,1689},{7,11,1324},{7,11,1944},{9,11,415},{\r
-9,11,580},{14,11,230},{146,11,68},{7,0,490},{13,0,100},{143,0,75},{135,0,1641},{\r
-133,0,543},{7,11,209},{8,11,661},{10,11,42},{11,11,58},{12,11,58},{12,11,118},{\r
-141,11,32},{5,0,181},{8,0,41},{6,11,63},{135,11,920},{133,0,657},{133,11,793},{\r
-138,0,709},{7,0,25},{8,0,202},{138,0,536},{5,11,665},{135,10,1788},{145,10,49},{\r
-9,0,423},{140,0,89},{5,11,67},{6,11,62},{6,11,374},{135,11,1391},{8,0,113},{9,0,\r
-877},{10,0,554},{11,0,83},{12,0,136},{19,0,109},{9,11,790},{140,11,47},{138,10,\r
-661},{4,0,963},{10,0,927},{14,0,442},{135,10,1945},{133,0,976},{132,0,206},{4,11\r
-,391},{135,11,1169},{134,0,2002},{6,0,696},{134,0,1008},{134,0,1170},{132,11,271\r
-},{7,0,13},{8,0,226},{10,0,537},{11,0,570},{11,0,605},{11,0,799},{11,0,804},{12,\r
-0,85},{12,0,516},{12,0,623},{13,0,112},{13,0,361},{14,0,77},{14,0,78},{17,0,28},\r
-{19,0,110},{140,11,314},{132,0,769},{134,0,1544},{4,0,551},{137,0,678},{5,10,84}\r
-,{134,10,163},{9,0,57},{9,0,459},{10,0,425},{11,0,119},{12,0,184},{12,0,371},{13\r
-,0,358},{145,0,51},{5,0,188},{5,0,814},{8,0,10},{9,0,421},{9,0,729},{10,0,609},{\r
-11,0,689},{4,11,253},{5,10,410},{5,11,544},{7,11,300},{137,11,340},{134,0,624},{\r
-138,11,321},{135,0,1941},{18,0,130},{5,10,322},{8,10,186},{9,10,262},{10,10,187}\r
-,{142,10,208},{5,11,53},{5,11,541},{6,11,94},{6,11,499},{7,11,230},{139,11,321},\r
-{133,10,227},{4,0,378},{4,11,920},{5,11,25},{5,11,790},{6,11,457},{135,11,853},{\r
-137,0,269},{132,0,528},{134,0,1146},{7,10,1395},{8,10,486},{9,10,236},{9,10,878}\r
-,{10,10,218},{11,10,95},{19,10,17},{147,10,31},{7,10,2043},{8,10,672},{141,10,\r
-448},{134,0,1105},{134,0,1616},{134,11,1765},{140,11,163},{5,10,412},{133,11,822\r
-},{132,11,634},{6,0,656},{134,11,1730},{134,0,1940},{5,0,104},{6,0,173},{135,0,\r
-1631},{136,10,562},{6,11,36},{7,11,658},{8,11,454},{147,11,86},{5,0,457},{134,10\r
-,1771},{7,0,810},{8,0,138},{8,0,342},{9,0,84},{10,0,193},{11,0,883},{140,0,359},\r
-{9,0,620},{135,10,1190},{137,10,132},{7,11,975},{137,11,789},{6,0,95},{6,0,1934}\r
-,{136,0,967},{141,11,335},{6,0,406},{10,0,409},{10,0,447},{11,0,44},{140,0,100},\r
-{4,10,317},{135,10,1279},{132,0,477},{134,0,1268},{6,0,1941},{8,0,944},{5,10,63}\r
-,{133,10,509},{132,0,629},{132,11,104},{4,0,246},{133,0,375},{6,0,1636},{132,10,\r
-288},{135,11,1614},{9,0,49},{10,0,774},{8,10,89},{8,10,620},{11,10,628},{12,10,\r
-322},{143,10,124},{4,0,282},{7,0,1034},{11,0,398},{11,0,634},{12,0,1},{12,0,79},\r
-{12,0,544},{14,0,237},{17,0,10},{146,0,20},{132,0,824},{7,11,45},{9,11,542},{9,\r
-11,566},{138,11,728},{5,0,118},{5,0,499},{6,0,476},{6,0,665},{6,0,1176},{6,0,\r
-1196},{7,0,600},{7,0,888},{135,0,1096},{7,0,296},{7,0,596},{8,0,560},{8,0,586},{\r
-9,0,612},{11,0,304},{12,0,46},{13,0,89},{14,0,112},{145,0,122},{5,0,894},{6,0,\r
-1772},{9,0,1009},{138,10,120},{5,11,533},{7,11,755},{138,11,780},{151,10,1},{6,0\r
-,1474},{7,11,87},{142,11,288},{139,0,366},{137,10,461},{7,11,988},{7,11,1939},{9\r
-,11,64},{9,11,502},{12,11,7},{12,11,34},{13,11,12},{13,11,234},{147,11,77},{7,0,\r
-1599},{7,0,1723},{8,0,79},{8,0,106},{8,0,190},{8,0,302},{8,0,383},{8,0,713},{9,0\r
-,119},{9,0,233},{9,0,419},{9,0,471},{10,0,181},{10,0,406},{11,0,57},{11,0,85},{\r
-11,0,120},{11,0,177},{11,0,296},{11,0,382},{11,0,454},{11,0,758},{11,0,999},{12,\r
-0,27},{12,0,98},{12,0,131},{12,0,245},{12,0,312},{12,0,446},{12,0,454},{13,0,25}\r
-,{13,0,98},{13,0,426},{13,0,508},{14,0,70},{14,0,163},{14,0,272},{14,0,277},{14,\r
-0,370},{15,0,95},{15,0,138},{15,0,167},{17,0,38},{148,0,96},{135,10,1346},{10,0,\r
-200},{19,0,2},{151,0,22},{135,11,141},{134,10,85},{134,0,1759},{138,0,372},{145,\r
-0,16},{8,0,943},{132,11,619},{139,11,88},{5,11,246},{8,11,189},{9,11,355},{9,11,\r
-512},{10,11,124},{10,11,453},{11,11,143},{11,11,416},{11,11,859},{141,11,341},{5\r
-,0,258},{134,0,719},{6,0,1798},{6,0,1839},{8,0,900},{10,0,874},{10,0,886},{12,0,\r
-698},{12,0,732},{12,0,770},{16,0,106},{18,0,163},{18,0,170},{18,0,171},{152,0,20\r
-},{9,0,707},{11,0,326},{11,0,339},{12,0,423},{12,0,502},{20,0,62},{9,11,707},{11\r
-,11,326},{11,11,339},{12,11,423},{12,11,502},{148,11,62},{5,0,30},{7,0,495},{8,0\r
-,134},{9,0,788},{140,0,438},{133,11,678},{5,10,279},{6,10,235},{7,10,468},{8,10,\r
-446},{9,10,637},{10,10,717},{11,10,738},{140,10,514},{5,11,35},{6,11,287},{7,11,\r
-862},{7,11,1886},{138,11,179},{7,0,1948},{7,0,2004},{132,11,517},{5,10,17},{6,10\r
-,371},{137,10,528},{4,0,115},{5,0,669},{6,0,407},{8,0,311},{11,0,10},{141,0,5},{\r
-137,0,381},{5,0,50},{6,0,439},{7,0,780},{135,0,1040},{136,11,667},{11,11,403},{\r
-146,11,83},{5,0,1},{6,0,81},{138,0,520},{134,0,738},{5,0,482},{8,0,98},{9,0,172}\r
-,{10,0,360},{10,0,700},{10,0,822},{11,0,302},{11,0,778},{12,0,50},{12,0,127},{12\r
-,0,396},{13,0,62},{13,0,328},{14,0,122},{147,0,72},{9,11,157},{10,11,131},{140,\r
-11,72},{135,11,714},{135,11,539},{5,0,2},{6,0,512},{7,0,797},{7,0,1494},{8,0,253\r
-},{8,0,589},{9,0,77},{10,0,1},{10,0,129},{10,0,225},{11,0,118},{11,0,226},{11,0,\r
-251},{11,0,430},{11,0,701},{11,0,974},{11,0,982},{12,0,64},{12,0,260},{12,0,488}\r
-,{140,0,690},{5,11,394},{7,11,367},{7,11,487},{7,11,857},{7,11,1713},{8,11,246},\r
-{9,11,537},{10,11,165},{12,11,219},{140,11,561},{136,0,557},{5,10,779},{5,10,807\r
-},{6,10,1655},{134,10,1676},{4,10,196},{5,10,558},{133,10,949},{11,11,827},{12,\r
-11,56},{14,11,34},{143,11,148},{137,0,347},{133,0,572},{134,0,832},{4,0,12},{7,0\r
-,504},{7,0,522},{7,0,809},{8,0,797},{141,0,88},{4,10,752},{133,11,449},{7,11,86}\r
-,{8,11,103},{145,11,69},{7,11,2028},{138,11,641},{5,0,528},{6,11,1},{142,11,2},{\r
-134,0,861},{10,0,294},{4,10,227},{5,10,159},{5,10,409},{7,10,80},{10,10,479},{12\r
-,10,418},{14,10,50},{14,10,249},{142,10,295},{7,10,1470},{8,10,66},{8,10,137},{8\r
-,10,761},{9,10,638},{11,10,80},{11,10,212},{11,10,368},{11,10,418},{12,10,8},{13\r
-,10,15},{16,10,61},{17,10,59},{19,10,28},{148,10,84},{20,0,109},{135,11,1148},{6\r
-,11,277},{7,11,1274},{7,11,1386},{7,11,1392},{12,11,129},{146,11,87},{6,11,187},\r
-{7,11,39},{7,11,1203},{8,11,380},{8,11,542},{14,11,117},{149,11,28},{134,0,1187}\r
-,{5,0,266},{9,0,290},{9,0,364},{10,0,293},{11,0,606},{142,0,45},{6,11,297},{7,11\r
-,793},{139,11,938},{4,0,50},{6,0,594},{9,0,121},{10,0,49},{10,0,412},{139,0,834}\r
-,{136,0,748},{7,11,464},{8,11,438},{11,11,105},{11,11,363},{12,11,231},{14,11,\r
-386},{15,11,102},{148,11,75},{132,0,466},{13,0,399},{14,0,337},{6,10,38},{7,10,\r
-1220},{8,10,185},{8,10,256},{9,10,22},{9,10,331},{10,10,738},{11,10,205},{11,10,\r
-540},{11,10,746},{13,10,465},{142,10,194},{9,0,378},{141,0,162},{137,0,519},{4,\r
-10,159},{6,10,115},{7,10,252},{7,10,257},{7,10,1928},{8,10,69},{9,10,384},{10,10\r
-,91},{10,10,615},{12,10,375},{14,10,235},{18,10,117},{147,10,123},{5,11,604},{5,\r
-10,911},{136,10,278},{132,0,667},{8,0,351},{9,0,322},{4,10,151},{135,10,1567},{\r
-134,0,902},{133,10,990},{12,0,180},{5,10,194},{7,10,1662},{137,10,90},{4,0,869},\r
-{134,0,1996},{134,0,813},{133,10,425},{137,11,761},{132,0,260},{133,10,971},{5,\r
-11,20},{6,11,298},{7,11,659},{7,11,1366},{137,11,219},{4,0,39},{5,0,36},{7,0,\r
-1843},{8,0,407},{11,0,144},{140,0,523},{4,0,510},{10,0,587},{139,10,752},{7,0,29\r
-},{7,0,66},{7,0,1980},{10,0,487},{138,0,809},{13,0,260},{14,0,82},{18,0,63},{137\r
-,10,662},{5,10,72},{6,10,264},{7,10,21},{7,10,46},{7,10,2013},{8,10,215},{8,10,\r
-513},{10,10,266},{139,10,22},{134,0,570},{6,0,565},{7,0,1667},{4,11,439},{10,10,\r
-95},{11,10,603},{12,11,242},{13,10,443},{14,10,160},{143,10,4},{134,0,1464},{134\r
-,10,431},{9,0,372},{15,0,2},{19,0,10},{19,0,18},{5,10,874},{6,10,1677},{143,10,0\r
-},{132,0,787},{6,0,380},{12,0,399},{21,0,19},{7,10,939},{7,10,1172},{7,10,1671},\r
-{9,10,540},{10,10,696},{11,10,265},{11,10,732},{11,10,928},{11,10,937},{141,10,\r
-438},{137,0,200},{132,11,233},{132,0,516},{134,11,577},{132,0,844},{11,0,887},{\r
-14,0,365},{142,0,375},{132,11,482},{8,0,821},{140,0,44},{7,0,1655},{136,0,305},{\r
-5,10,682},{135,10,1887},{135,11,346},{132,10,696},{4,0,10},{7,0,917},{139,0,786}\r
-,{5,11,795},{6,11,1741},{8,11,417},{137,11,782},{4,0,1016},{134,0,2031},{5,0,684\r
-},{4,10,726},{133,10,630},{6,0,1021},{134,0,1480},{8,10,802},{136,10,838},{134,0\r
-,27},{134,0,395},{135,11,622},{7,11,625},{135,11,1750},{4,11,203},{135,11,1936},\r
-{6,10,118},{7,10,215},{7,10,1521},{140,10,11},{132,0,813},{136,0,511},{7,10,615}\r
-,{138,10,251},{135,10,1044},{145,0,56},{133,10,225},{6,0,342},{6,0,496},{8,0,275\r
-},{137,0,206},{4,0,909},{133,0,940},{132,0,891},{7,11,311},{9,11,308},{140,11,\r
-255},{4,10,370},{5,10,756},{135,10,1326},{4,0,687},{134,0,1596},{134,0,1342},{6,\r
-10,1662},{7,10,48},{8,10,771},{10,10,116},{13,10,104},{14,10,105},{14,10,184},{\r
-15,10,168},{19,10,92},{148,10,68},{138,10,209},{4,11,400},{5,11,267},{135,11,232\r
-},{151,11,12},{6,0,41},{141,0,160},{141,11,314},{134,0,1718},{136,0,778},{142,11\r
-,261},{134,0,1610},{133,0,115},{132,0,294},{14,0,314},{132,10,120},{132,0,983},{\r
-5,0,193},{140,0,178},{138,10,429},{5,10,820},{135,10,931},{6,0,994},{6,0,1051},{\r
-6,0,1439},{7,0,174},{133,11,732},{4,11,100},{7,11,679},{8,11,313},{138,10,199},{\r
-6,10,151},{6,10,1675},{7,10,383},{151,10,10},{6,0,1796},{8,0,848},{8,0,867},{8,0\r
-,907},{10,0,855},{140,0,703},{140,0,221},{4,0,122},{5,0,796},{5,0,952},{6,0,1660\r
-},{6,0,1671},{8,0,567},{9,0,687},{9,0,742},{10,0,686},{11,0,682},{11,0,909},{140\r
-,0,281},{5,11,362},{5,11,443},{6,11,318},{7,11,1019},{139,11,623},{5,11,463},{\r
-136,11,296},{11,0,583},{13,0,262},{6,10,1624},{12,10,422},{142,10,360},{5,0,179}\r
-,{7,0,1095},{135,0,1213},{4,10,43},{4,11,454},{5,10,344},{133,10,357},{4,0,66},{\r
-7,0,722},{135,0,904},{134,0,773},{7,0,352},{133,10,888},{5,11,48},{5,11,404},{6,\r
-11,557},{7,11,458},{8,11,597},{10,11,455},{10,11,606},{11,11,49},{11,11,548},{12\r
-,11,476},{13,11,18},{141,11,450},{134,11,418},{132,10,711},{5,11,442},{135,11,\r
-1984},{141,0,35},{137,0,152},{134,0,1197},{135,11,1093},{137,11,203},{137,10,440\r
-},{10,0,592},{10,0,753},{12,0,317},{12,0,355},{12,0,465},{12,0,469},{12,0,560},{\r
-12,0,578},{141,0,243},{133,0,564},{134,0,797},{5,10,958},{133,10,987},{5,11,55},\r
-{7,11,376},{140,11,161},{133,11,450},{134,0,556},{134,0,819},{11,10,276},{142,10\r
-,293},{7,0,544},{138,0,61},{8,0,719},{4,10,65},{5,10,479},{5,10,1004},{7,10,1913\r
-},{8,10,317},{9,10,302},{10,10,612},{141,10,22},{4,0,5},{5,0,498},{8,0,637},{9,0\r
-,521},{4,11,213},{4,10,261},{7,11,223},{7,10,510},{136,11,80},{5,0,927},{7,0,101\r
-},{4,10,291},{7,11,381},{7,11,806},{7,11,820},{8,11,354},{8,11,437},{8,11,787},{\r
-9,10,515},{9,11,657},{10,11,58},{10,11,339},{10,11,749},{11,11,914},{12,10,152},\r
-{12,11,162},{12,10,443},{13,11,75},{13,10,392},{14,11,106},{14,11,198},{14,11,\r
-320},{14,10,357},{14,11,413},{146,11,43},{6,0,1153},{7,0,1441},{136,11,747},{4,0\r
-,893},{5,0,780},{133,0,893},{138,11,654},{133,11,692},{133,0,238},{134,11,191},{\r
-4,10,130},{135,10,843},{6,0,1296},{5,10,42},{5,10,879},{7,10,245},{7,10,324},{7,\r
-10,1532},{11,10,463},{11,10,472},{13,10,363},{144,10,52},{134,0,1729},{6,0,1999}\r
-,{136,0,969},{4,10,134},{133,10,372},{4,0,60},{7,0,941},{7,0,1800},{8,0,314},{9,\r
-0,700},{139,0,487},{134,0,1144},{6,11,162},{7,11,1960},{136,11,831},{132,11,706}\r
-,{135,0,1147},{138,11,426},{138,11,89},{7,0,1853},{138,0,437},{136,0,419},{135,\r
-10,1634},{133,0,828},{5,0,806},{7,0,176},{7,0,178},{7,0,1240},{7,0,1976},{132,10\r
-,644},{135,11,1877},{5,11,420},{135,11,1449},{4,0,51},{5,0,39},{6,0,4},{7,0,591}\r
-,{7,0,849},{7,0,951},{7,0,1613},{7,0,1760},{7,0,1988},{9,0,434},{10,0,754},{11,0\r
-,25},{139,0,37},{10,11,57},{138,11,277},{135,10,540},{132,11,204},{135,0,159},{\r
-139,11,231},{133,0,902},{7,0,928},{7,11,366},{9,11,287},{12,11,199},{12,11,556},\r
-{140,11,577},{6,10,623},{136,10,789},{4,10,908},{5,10,359},{5,10,508},{6,10,1723\r
-},{7,10,343},{7,10,1996},{135,10,2026},{134,0,270},{4,10,341},{135,10,480},{5,11\r
-,356},{135,11,224},{11,11,588},{11,11,864},{11,11,968},{143,11,160},{132,0,556},\r
-{137,0,801},{132,0,416},{142,0,372},{5,0,152},{5,0,197},{7,0,340},{7,0,867},{10,\r
-0,548},{10,0,581},{11,0,6},{12,0,3},{12,0,19},{14,0,110},{142,0,289},{139,0,369}\r
-,{7,11,630},{9,11,567},{11,11,150},{11,11,444},{141,11,119},{134,11,539},{7,10,\r
-1995},{8,10,299},{11,10,890},{140,10,674},{7,0,34},{7,0,190},{8,0,28},{8,0,141},\r
-{8,0,444},{8,0,811},{9,0,468},{11,0,334},{12,0,24},{12,0,386},{140,0,576},{133,0\r
-,757},{7,0,1553},{136,0,898},{133,0,721},{136,0,1012},{4,0,789},{5,0,647},{135,0\r
-,1102},{132,0,898},{10,0,183},{4,10,238},{5,10,503},{6,10,179},{7,10,2003},{8,10\r
-,381},{8,10,473},{9,10,149},{10,10,788},{15,10,45},{15,10,86},{20,10,110},{150,\r
-10,57},{9,0,136},{19,0,107},{4,10,121},{5,10,156},{5,10,349},{10,10,605},{142,10\r
-,342},{4,11,235},{135,11,255},{4,11,194},{5,11,584},{6,11,384},{7,11,583},{10,11\r
-,761},{11,11,760},{139,11,851},{6,10,80},{6,10,1694},{7,10,173},{7,10,1974},{9,\r
-10,547},{10,10,730},{14,10,18},{150,10,39},{4,10,923},{134,10,1711},{5,0,277},{\r
-141,0,247},{132,0,435},{133,11,562},{134,0,1311},{5,11,191},{137,11,271},{132,10\r
-,595},{7,11,1537},{14,11,96},{143,11,73},{5,0,437},{7,0,502},{7,0,519},{7,0,1122\r
-},{7,0,1751},{14,0,211},{6,10,459},{7,10,1753},{7,10,1805},{8,10,658},{9,10,1},{\r
-11,10,959},{141,10,446},{6,0,814},{4,11,470},{5,11,473},{6,11,153},{7,11,1503},{\r
-7,11,1923},{10,11,701},{11,11,132},{11,11,168},{11,11,227},{11,11,320},{11,11,\r
-436},{11,11,525},{11,11,855},{12,11,41},{12,11,286},{13,11,103},{13,11,284},{14,\r
-11,255},{14,11,262},{15,11,117},{143,11,127},{5,0,265},{6,0,212},{135,0,28},{138\r
-,0,750},{133,11,327},{6,11,552},{7,11,1754},{137,11,604},{134,0,2012},{132,0,702\r
-},{5,11,80},{6,11,405},{7,11,403},{7,11,1502},{7,11,1626},{8,11,456},{9,11,487},\r
-{9,11,853},{9,11,889},{10,11,309},{11,11,721},{11,11,994},{12,11,430},{141,11,\r
-165},{5,0,808},{135,0,2045},{5,0,166},{8,0,739},{140,0,511},{134,10,490},{4,11,\r
-453},{5,11,887},{6,11,535},{8,11,6},{136,11,543},{4,0,119},{5,0,170},{5,0,447},{\r
-7,0,1708},{7,0,1889},{9,0,357},{9,0,719},{12,0,486},{140,0,596},{137,0,500},{7,\r
-10,250},{136,10,507},{132,10,158},{6,0,809},{134,0,1500},{9,0,327},{11,0,350},{\r
-11,0,831},{13,0,352},{4,10,140},{7,10,362},{8,10,209},{9,10,10},{9,10,503},{9,10\r
-,614},{10,10,689},{11,10,327},{11,10,725},{12,10,252},{12,10,583},{13,10,192},{\r
-14,10,269},{14,10,356},{148,10,50},{135,11,741},{4,0,450},{7,0,1158},{19,10,1},{\r
-19,10,26},{150,10,9},{6,0,597},{135,0,1318},{134,0,1602},{6,10,228},{7,10,1341},\r
-{9,10,408},{138,10,343},{7,0,1375},{7,0,1466},{138,0,331},{132,0,754},{132,10,\r
-557},{5,11,101},{6,11,88},{6,11,543},{7,11,1677},{9,11,100},{10,11,677},{14,11,\r
-169},{14,11,302},{14,11,313},{15,11,48},{143,11,84},{134,0,1368},{4,11,310},{9,\r
-11,795},{10,11,733},{11,11,451},{12,11,249},{14,11,115},{14,11,286},{143,11,100}\r
-,{132,10,548},{10,0,557},{7,10,197},{8,10,142},{8,10,325},{9,10,150},{9,10,596},\r
-{10,10,353},{11,10,74},{11,10,315},{12,10,662},{12,10,681},{14,10,423},{143,10,\r
-141},{133,11,587},{5,0,850},{136,0,799},{10,0,908},{12,0,701},{12,0,757},{142,0,\r
-466},{4,0,62},{5,0,275},{18,0,19},{6,10,399},{6,10,579},{7,10,692},{7,10,846},{7\r
-,10,1015},{7,10,1799},{8,10,403},{9,10,394},{10,10,133},{12,10,4},{12,10,297},{\r
-12,10,452},{16,10,81},{18,10,25},{21,10,14},{22,10,12},{151,10,18},{12,0,459},{7\r
-,10,1546},{11,10,299},{142,10,407},{132,10,177},{132,11,498},{7,11,217},{8,11,\r
-140},{138,11,610},{5,10,411},{135,10,653},{134,0,1802},{7,10,439},{10,10,727},{\r
-11,10,260},{139,10,684},{133,11,905},{11,11,580},{142,11,201},{134,0,1397},{5,10\r
-,208},{7,10,753},{135,10,1528},{7,0,238},{7,0,2033},{8,0,120},{8,0,188},{8,0,659\r
-},{9,0,598},{10,0,466},{12,0,342},{12,0,588},{13,0,503},{14,0,246},{143,0,92},{\r
-135,11,1041},{4,11,456},{7,11,105},{7,11,358},{7,11,1637},{8,11,643},{139,11,483\r
-},{6,0,1318},{134,0,1324},{4,0,201},{7,0,1744},{8,0,602},{11,0,247},{11,0,826},{\r
-17,0,65},{133,10,242},{8,0,164},{146,0,62},{133,10,953},{139,10,802},{133,0,615}\r
-,{7,11,1566},{8,11,269},{9,11,212},{9,11,718},{14,11,15},{14,11,132},{142,11,227\r
-},{133,10,290},{132,10,380},{5,10,52},{7,10,277},{9,10,368},{139,10,791},{135,0,\r
-1243},{133,11,539},{11,11,919},{141,11,409},{136,0,968},{133,11,470},{134,0,882}\r
-,{132,0,907},{5,0,100},{10,0,329},{12,0,416},{149,0,29},{10,10,138},{139,10,476}\r
-,{5,10,725},{5,10,727},{6,11,91},{7,11,435},{135,10,1811},{4,11,16},{5,11,316},{\r
-5,11,842},{6,11,370},{6,11,1778},{8,11,166},{11,11,812},{12,11,206},{12,11,351},\r
-{14,11,418},{16,11,15},{16,11,34},{18,11,3},{19,11,3},{19,11,7},{20,11,4},{149,\r
-11,21},{132,0,176},{5,0,636},{5,0,998},{7,0,9},{7,0,1508},{8,0,26},{9,0,317},{9,\r
-0,358},{10,0,210},{10,0,292},{10,0,533},{11,0,555},{12,0,526},{12,0,607},{13,0,\r
-263},{13,0,459},{142,0,271},{6,0,256},{8,0,265},{4,10,38},{7,10,307},{7,10,999},\r
-{7,10,1481},{7,10,1732},{7,10,1738},{9,10,414},{11,10,316},{12,10,52},{13,10,420\r
-},{147,10,100},{135,10,1296},{4,11,611},{133,11,606},{4,0,643},{142,11,21},{133,\r
-11,715},{133,10,723},{6,0,610},{135,11,597},{10,0,127},{141,0,27},{6,0,1995},{6,\r
-0,2001},{8,0,119},{136,0,973},{4,11,149},{138,11,368},{12,0,522},{4,11,154},{5,\r
-10,109},{6,10,1784},{7,11,1134},{7,10,1895},{8,11,105},{12,10,296},{140,10,302},\r
-{4,11,31},{6,11,429},{7,11,962},{9,11,458},{139,11,691},{10,0,553},{11,0,876},{\r
-13,0,193},{13,0,423},{14,0,166},{19,0,84},{4,11,312},{5,10,216},{7,10,1879},{9,\r
-10,141},{9,10,270},{9,10,679},{10,10,159},{11,10,197},{12,10,538},{12,10,559},{\r
-14,10,144},{14,10,167},{143,10,67},{134,0,1582},{7,0,1578},{135,11,1578},{137,10\r
-,81},{132,11,236},{134,10,391},{134,0,795},{7,10,322},{136,10,249},{5,11,836},{5\r
-,11,857},{6,11,1680},{7,11,59},{147,11,53},{135,0,432},{10,11,68},{139,11,494},{\r
-4,11,81},{139,11,867},{7,0,126},{136,0,84},{142,11,280},{5,11,282},{8,11,650},{9\r
-,11,295},{9,11,907},{138,11,443},{136,0,790},{5,10,632},{138,10,526},{6,0,64},{\r
-12,0,377},{13,0,309},{14,0,141},{14,0,429},{14,11,141},{142,11,429},{134,0,1529}\r
-,{6,0,321},{7,0,1857},{9,0,530},{19,0,99},{7,10,948},{7,10,1042},{8,10,235},{8,\r
-10,461},{9,10,453},{10,10,354},{145,10,77},{7,0,1104},{11,0,269},{11,0,539},{11,\r
-0,627},{11,0,706},{11,0,975},{12,0,248},{12,0,434},{12,0,600},{12,0,622},{13,0,\r
-297},{13,0,485},{14,0,69},{14,0,409},{143,0,108},{4,10,362},{7,10,52},{7,10,303}\r
-,{10,11,70},{12,11,26},{14,11,17},{14,11,178},{15,11,34},{149,11,12},{11,0,977},\r
-{141,0,507},{9,0,34},{139,0,484},{5,10,196},{6,10,486},{7,10,212},{8,10,309},{\r
-136,10,346},{6,0,1700},{7,0,26},{7,0,293},{7,0,382},{7,0,1026},{7,0,1087},{7,0,\r
-2027},{8,0,24},{8,0,114},{8,0,252},{8,0,727},{8,0,729},{9,0,30},{9,0,199},{9,0,\r
-231},{9,0,251},{9,0,334},{9,0,361},{9,0,712},{10,0,55},{10,0,60},{10,0,232},{10,\r
-0,332},{10,0,384},{10,0,396},{10,0,504},{10,0,542},{10,0,652},{11,0,20},{11,0,48\r
-},{11,0,207},{11,0,291},{11,0,298},{11,0,342},{11,0,365},{11,0,394},{11,0,620},{\r
-11,0,705},{11,0,1017},{12,0,123},{12,0,340},{12,0,406},{12,0,643},{13,0,61},{13,\r
-0,269},{13,0,311},{13,0,319},{13,0,486},{14,0,234},{15,0,62},{15,0,85},{16,0,71}\r
-,{18,0,119},{20,0,105},{135,10,1912},{4,11,71},{5,11,376},{7,11,119},{138,11,665\r
-},{10,0,918},{10,0,926},{4,10,686},{136,11,55},{138,10,625},{136,10,706},{132,11\r
-,479},{4,10,30},{133,10,43},{6,0,379},{7,0,270},{8,0,176},{8,0,183},{9,0,432},{9\r
-,0,661},{12,0,247},{12,0,617},{18,0,125},{7,11,607},{8,11,99},{152,11,4},{5,0,\r
-792},{133,0,900},{4,11,612},{133,11,561},{4,11,41},{4,10,220},{5,11,74},{7,10,\r
-1535},{7,11,1627},{11,11,871},{140,11,619},{135,0,1920},{7,11,94},{11,11,329},{\r
-11,11,965},{12,11,241},{14,11,354},{15,11,22},{148,11,63},{9,11,209},{137,11,300\r
-},{134,0,771},{135,0,1979},{4,0,901},{133,0,776},{142,0,254},{133,11,98},{9,11,\r
-16},{141,11,386},{133,11,984},{4,11,182},{6,11,205},{135,11,220},{7,10,1725},{7,\r
-10,1774},{138,10,393},{5,10,263},{134,10,414},{4,11,42},{9,11,205},{9,11,786},{\r
-138,11,659},{14,0,140},{148,0,41},{8,0,440},{10,0,359},{6,10,178},{6,11,289},{6,\r
-10,1750},{7,11,1670},{9,10,690},{10,10,155},{10,10,373},{11,10,698},{12,11,57},{\r
-13,10,155},{20,10,93},{151,11,4},{4,0,37},{5,0,334},{7,0,1253},{151,11,25},{4,0,\r
-508},{4,11,635},{5,10,97},{137,10,393},{139,11,533},{4,0,640},{133,0,513},{134,\r
-10,1639},{132,11,371},{4,11,272},{7,11,836},{7,11,1651},{145,11,89},{5,11,825},{\r
-6,11,444},{6,11,1640},{136,11,308},{4,10,191},{7,10,934},{8,10,647},{145,10,97},\r
-{12,0,246},{15,0,162},{19,0,64},{20,0,8},{20,0,95},{22,0,24},{152,0,17},{4,0,533\r
-},{5,10,165},{9,10,346},{138,10,655},{5,11,737},{139,10,885},{133,10,877},{8,10,\r
-128},{139,10,179},{137,11,307},{140,0,752},{133,0,920},{135,0,1048},{5,0,153},{6\r
-,0,580},{6,10,1663},{7,10,132},{7,10,1154},{7,10,1415},{7,10,1507},{12,10,493},{\r
-15,10,105},{151,10,15},{5,10,459},{7,10,1073},{8,10,241},{136,10,334},{138,0,391\r
-},{135,0,1952},{133,11,525},{8,11,641},{11,11,388},{140,11,580},{142,0,126},{134\r
-,0,640},{132,0,483},{7,0,1616},{9,0,69},{6,10,324},{6,10,520},{7,10,338},{7,10,\r
-1729},{8,10,228},{139,10,750},{5,11,493},{134,11,528},{135,0,734},{4,11,174},{\r
-135,11,911},{138,0,480},{9,0,495},{146,0,104},{135,10,705},{9,0,472},{4,10,73},{\r
-6,10,612},{7,10,927},{7,10,1330},{7,10,1822},{8,10,217},{9,10,765},{9,10,766},{\r
-10,10,408},{11,10,51},{11,10,793},{12,10,266},{15,10,158},{20,10,89},{150,10,32}\r
-,{7,11,548},{137,11,58},{4,11,32},{5,11,215},{6,11,269},{7,11,1782},{7,11,1892},\r
-{10,11,16},{11,11,822},{11,11,954},{141,11,481},{132,0,874},{9,0,229},{5,10,389}\r
-,{136,10,636},{7,11,1749},{136,11,477},{134,0,948},{5,11,308},{135,11,1088},{4,0\r
-,748},{139,0,1009},{136,10,21},{6,0,555},{135,0,485},{5,11,126},{8,11,297},{9,11\r
-,366},{9,11,445},{12,11,53},{12,11,374},{141,11,492},{7,11,1551},{139,11,361},{\r
-136,0,193},{136,0,472},{8,0,653},{13,0,93},{147,0,14},{132,0,984},{132,11,175},{\r
-5,0,172},{6,0,1971},{132,11,685},{149,11,8},{133,11,797},{13,0,83},{5,10,189},{7\r
-,10,442},{7,10,443},{8,10,281},{12,10,174},{141,10,261},{134,0,1568},{133,11,565\r
-},{139,0,384},{133,0,260},{7,0,758},{7,0,880},{7,0,1359},{9,0,164},{9,0,167},{10\r
-,0,156},{10,0,588},{12,0,101},{14,0,48},{15,0,70},{6,10,2},{7,10,1262},{7,10,\r
-1737},{8,10,22},{8,10,270},{8,10,612},{9,10,312},{9,10,436},{10,10,311},{10,10,\r
-623},{11,10,72},{11,10,330},{11,10,455},{12,10,321},{12,10,504},{12,10,530},{12,\r
-10,543},{13,10,17},{13,10,156},{13,10,334},{17,10,60},{148,10,64},{4,11,252},{7,\r
-11,1068},{10,11,434},{11,11,228},{11,11,426},{13,11,231},{18,11,106},{148,11,87}\r
-,{7,10,354},{10,10,410},{139,10,815},{6,0,367},{7,10,670},{7,10,1327},{8,10,411}\r
-,{8,10,435},{9,10,653},{9,10,740},{10,10,385},{11,10,222},{11,10,324},{11,10,829\r
-},{140,10,611},{7,0,1174},{6,10,166},{135,10,374},{146,0,121},{132,0,828},{5,11,\r
-231},{138,11,509},{7,11,601},{9,11,277},{9,11,674},{10,11,178},{10,11,257},{10,\r
-11,418},{11,11,531},{11,11,544},{11,11,585},{12,11,113},{12,11,475},{13,11,99},{\r
-142,11,428},{134,0,1541},{135,11,1779},{5,0,343},{134,10,398},{135,10,50},{135,\r
-11,1683},{4,0,440},{7,0,57},{8,0,167},{8,0,375},{9,0,82},{9,0,561},{9,0,744},{10\r
-,0,620},{137,11,744},{134,0,926},{6,10,517},{7,10,1159},{10,10,621},{139,10,192}\r
-,{137,0,827},{8,0,194},{136,0,756},{10,10,223},{139,10,645},{7,10,64},{136,10,\r
-245},{4,11,399},{5,11,119},{5,11,494},{7,11,751},{137,11,556},{132,0,808},{135,0\r
-,22},{7,10,1763},{140,10,310},{5,0,639},{7,0,1249},{11,0,896},{134,11,584},{134,\r
-0,1614},{135,0,860},{135,11,1121},{5,10,129},{6,10,61},{135,10,947},{4,0,102},{7\r
-,0,815},{7,0,1699},{139,0,964},{13,10,505},{141,10,506},{139,10,1000},{132,11,\r
-679},{132,0,899},{132,0,569},{5,11,694},{137,11,714},{136,0,795},{6,0,2045},{139\r
-,11,7},{6,0,52},{9,0,104},{9,0,559},{12,0,308},{147,0,87},{4,0,301},{132,0,604},\r
-{133,10,637},{136,0,779},{5,11,143},{5,11,769},{6,11,1760},{7,11,682},{7,11,1992\r
-},{136,11,736},{137,10,590},{147,0,32},{137,11,527},{5,10,280},{135,10,1226},{\r
-134,0,494},{6,0,677},{6,0,682},{134,0,1044},{133,10,281},{135,10,1064},{7,0,508}\r
-,{133,11,860},{6,11,422},{7,11,0},{7,11,1544},{9,11,577},{11,11,990},{12,11,141}\r
-,{12,11,453},{13,11,47},{141,11,266},{134,0,1014},{5,11,515},{137,11,131},{134,0\r
-,957},{132,11,646},{6,0,310},{7,0,1849},{8,0,72},{8,0,272},{8,0,431},{9,0,12},{9\r
-,0,376},{10,0,563},{10,0,630},{10,0,796},{10,0,810},{11,0,367},{11,0,599},{11,0,\r
-686},{140,0,672},{7,0,570},{4,11,396},{7,10,120},{7,11,728},{8,10,489},{9,11,117\r
-},{9,10,319},{10,10,820},{11,10,1004},{12,10,379},{12,10,679},{13,10,117},{13,11\r
-,202},{13,10,412},{14,10,25},{15,10,52},{15,10,161},{16,10,47},{20,11,51},{149,\r
-10,2},{6,11,121},{6,11,124},{6,11,357},{7,11,1138},{7,11,1295},{8,11,162},{139,\r
-11,655},{8,0,449},{4,10,937},{5,10,801},{136,11,449},{139,11,958},{6,0,181},{7,0\r
-,537},{8,0,64},{9,0,127},{10,0,496},{12,0,510},{141,0,384},{138,11,253},{4,0,244\r
-},{135,0,233},{133,11,237},{132,10,365},{6,0,1650},{10,0,702},{139,0,245},{5,10,\r
-7},{139,10,774},{13,0,463},{20,0,49},{13,11,463},{148,11,49},{4,10,734},{5,10,\r
-662},{134,10,430},{4,10,746},{135,10,1090},{5,10,360},{136,10,237},{137,0,338},{\r
-143,11,10},{7,11,571},{138,11,366},{134,0,1279},{9,11,513},{10,11,22},{10,11,39}\r
-,{12,11,122},{140,11,187},{133,0,896},{146,0,178},{134,0,695},{137,0,808},{134,\r
-11,587},{7,11,107},{7,11,838},{8,11,550},{138,11,401},{7,0,1117},{136,0,539},{4,\r
-10,277},{5,10,608},{6,10,493},{7,10,457},{140,10,384},{133,11,768},{12,0,257},{7\r
-,10,27},{135,10,316},{140,0,1003},{4,0,207},{5,0,586},{5,0,676},{6,0,448},{8,0,\r
-244},{11,0,1},{13,0,3},{16,0,54},{17,0,4},{18,0,13},{133,10,552},{4,10,401},{137\r
-,10,264},{5,0,516},{7,0,1883},{135,11,1883},{12,0,960},{132,11,894},{5,0,4},{5,0\r
-,810},{6,0,13},{6,0,538},{6,0,1690},{6,0,1726},{7,0,499},{7,0,1819},{8,0,148},{8\r
-,0,696},{8,0,791},{12,0,125},{143,0,9},{135,0,1268},{11,0,30},{14,0,315},{9,10,\r
-543},{10,10,524},{12,10,524},{16,10,18},{20,10,26},{148,10,65},{6,0,748},{4,10,\r
-205},{5,10,623},{7,10,104},{136,10,519},{11,0,542},{139,0,852},{140,0,6},{132,0,\r
-848},{7,0,1385},{11,0,582},{11,0,650},{11,0,901},{11,0,949},{12,0,232},{12,0,236\r
-},{13,0,413},{13,0,501},{18,0,116},{7,10,579},{9,10,41},{9,10,244},{9,10,669},{\r
-10,10,5},{11,10,861},{11,10,951},{139,10,980},{4,0,945},{6,0,1811},{6,0,1845},{6\r
-,0,1853},{6,0,1858},{8,0,862},{12,0,782},{12,0,788},{18,0,160},{148,0,117},{132,\r
-10,717},{4,0,925},{5,0,803},{8,0,698},{138,0,828},{134,0,1416},{132,0,610},{139,\r
-0,992},{6,0,878},{134,0,1477},{135,0,1847},{138,11,531},{137,11,539},{134,11,272\r
-},{133,0,383},{134,0,1404},{132,10,489},{4,11,9},{5,11,128},{7,11,368},{11,11,\r
-480},{148,11,3},{136,0,986},{9,0,660},{138,0,347},{135,10,892},{136,11,682},{7,0\r
-,572},{9,0,592},{11,0,680},{12,0,356},{140,0,550},{7,0,1411},{138,11,527},{4,11,\r
-2},{7,11,545},{135,11,894},{137,10,473},{11,0,64},{7,11,481},{7,10,819},{9,10,26\r
-},{9,10,392},{9,11,792},{10,10,152},{10,10,226},{12,10,276},{12,10,426},{12,10,\r
-589},{13,10,460},{15,10,97},{19,10,48},{148,10,104},{135,10,51},{136,11,445},{\r
-136,11,646},{135,0,606},{132,10,674},{6,0,1829},{134,0,1830},{132,10,770},{5,10,\r
-79},{7,10,1027},{7,10,1477},{139,10,52},{5,11,530},{142,11,113},{134,10,1666},{7\r
-,0,748},{139,0,700},{134,10,195},{133,10,789},{9,0,87},{10,0,365},{4,10,251},{4,\r
-10,688},{7,10,513},{135,10,1284},{136,11,111},{133,0,127},{6,0,198},{140,0,83},{\r
-133,11,556},{133,10,889},{4,10,160},{5,10,330},{7,10,1434},{136,10,174},{5,0,276\r
-},{6,0,55},{7,0,1369},{138,0,864},{8,11,16},{140,11,568},{6,0,1752},{136,0,726},\r
-{135,0,1066},{133,0,764},{6,11,186},{137,11,426},{11,0,683},{139,11,683},{6,0,\r
-309},{7,0,331},{138,0,550},{133,10,374},{6,0,1212},{6,0,1852},{7,0,1062},{8,0,\r
-874},{8,0,882},{138,0,936},{132,11,585},{134,0,1364},{7,0,986},{133,10,731},{6,0\r
-,723},{6,0,1408},{138,0,381},{135,0,1573},{134,0,1025},{4,10,626},{5,10,642},{6,\r
-10,425},{10,10,202},{139,10,141},{4,11,93},{5,11,252},{6,11,229},{7,11,291},{9,\r
-11,550},{139,11,644},{137,11,749},{137,11,162},{132,11,381},{135,0,1559},{6,0,\r
-194},{7,0,133},{10,0,493},{10,0,570},{139,0,664},{5,0,24},{5,0,569},{6,0,3},{6,0\r
-,119},{6,0,143},{6,0,440},{7,0,295},{7,0,599},{7,0,1686},{7,0,1854},{8,0,424},{9\r
-,0,43},{9,0,584},{9,0,760},{10,0,148},{10,0,328},{11,0,159},{11,0,253},{11,0,506\r
-},{12,0,487},{140,0,531},{6,0,661},{134,0,1517},{136,10,835},{151,10,17},{5,0,14\r
-},{5,0,892},{6,0,283},{7,0,234},{136,0,537},{139,0,541},{4,0,126},{8,0,635},{147\r
-,0,34},{4,0,316},{4,0,495},{135,0,1561},{4,11,187},{5,11,184},{5,11,690},{7,11,\r
-1869},{138,11,756},{139,11,783},{4,0,998},{137,0,861},{136,0,1009},{139,11,292},\r
-{5,11,21},{6,11,77},{6,11,157},{7,11,974},{7,11,1301},{7,11,1339},{7,11,1490},{7\r
-,11,1873},{137,11,628},{7,11,1283},{9,11,227},{9,11,499},{10,11,341},{11,11,325}\r
-,{11,11,408},{14,11,180},{15,11,144},{18,11,47},{147,11,49},{4,0,64},{5,0,352},{\r
-5,0,720},{6,0,368},{139,0,359},{5,10,384},{8,10,455},{140,10,48},{5,10,264},{134\r
-,10,184},{7,0,1577},{10,0,304},{10,0,549},{12,0,365},{13,0,220},{13,0,240},{142,\r
-0,33},{134,0,1107},{134,0,929},{135,0,1142},{6,0,175},{137,0,289},{5,0,432},{133\r
-,0,913},{6,0,279},{7,0,219},{5,10,633},{135,10,1323},{7,0,785},{7,10,359},{8,10,\r
-243},{140,10,175},{139,0,595},{132,10,105},{8,11,398},{9,11,681},{139,11,632},{\r
-140,0,80},{5,0,931},{134,0,1698},{142,11,241},{134,11,20},{134,0,1323},{11,0,526\r
-},{11,0,939},{141,0,290},{5,0,774},{6,0,780},{6,0,1637},{6,0,1686},{6,0,1751},{8\r
-,0,559},{141,0,109},{141,0,127},{7,0,1167},{11,0,934},{13,0,391},{17,0,76},{135,\r
-11,709},{135,0,963},{6,0,260},{135,0,1484},{134,0,573},{4,10,758},{139,11,941},{\r
-135,10,1649},{145,11,36},{4,0,292},{137,0,580},{4,0,736},{5,0,871},{6,0,1689},{\r
-135,0,1944},{7,11,945},{11,11,713},{139,11,744},{134,0,1164},{135,11,937},{6,0,\r
-1922},{9,0,982},{15,0,173},{15,0,178},{15,0,200},{18,0,189},{18,0,207},{21,0,47}\r
-,{135,11,1652},{7,0,1695},{139,10,128},{6,0,63},{135,0,920},{133,0,793},{143,11,\r
-134},{133,10,918},{5,0,67},{6,0,62},{6,0,374},{135,0,1391},{9,0,790},{12,0,47},{\r
-4,11,579},{5,11,226},{5,11,323},{135,11,960},{10,11,784},{141,11,191},{4,0,391},\r
-{135,0,1169},{137,0,443},{13,11,232},{146,11,35},{132,10,340},{132,0,271},{137,\r
-11,313},{5,11,973},{137,11,659},{134,0,1140},{6,11,135},{135,11,1176},{4,0,253},\r
-{5,0,544},{7,0,300},{137,0,340},{7,0,897},{5,10,985},{7,10,509},{145,10,96},{138\r
-,11,735},{135,10,1919},{138,0,890},{5,0,818},{134,0,1122},{5,0,53},{5,0,541},{6,\r
-0,94},{6,0,499},{7,0,230},{139,0,321},{4,0,920},{5,0,25},{5,0,790},{6,0,457},{7,\r
-0,853},{8,0,788},{142,11,31},{132,10,247},{135,11,314},{132,0,468},{7,0,243},{6,\r
-10,337},{7,10,494},{8,10,27},{8,10,599},{138,10,153},{4,10,184},{5,10,390},{7,10\r
-,618},{7,10,1456},{139,10,710},{134,0,870},{134,0,1238},{134,0,1765},{10,0,853},\r
-{10,0,943},{14,0,437},{14,0,439},{14,0,443},{14,0,446},{14,0,452},{14,0,469},{14\r
-,0,471},{14,0,473},{16,0,93},{16,0,102},{16,0,110},{148,0,121},{4,0,605},{7,0,\r
-518},{7,0,1282},{7,0,1918},{10,0,180},{139,0,218},{133,0,822},{4,0,634},{11,0,\r
-916},{142,0,419},{6,11,281},{7,11,6},{8,11,282},{8,11,480},{8,11,499},{9,11,198}\r
-,{10,11,143},{10,11,169},{10,11,211},{10,11,417},{10,11,574},{11,11,147},{11,11,\r
-395},{12,11,75},{12,11,407},{12,11,608},{13,11,500},{142,11,251},{134,0,898},{6,\r
-0,36},{7,0,658},{8,0,454},{150,11,48},{133,11,674},{135,11,1776},{4,11,419},{10,\r
-10,227},{11,10,497},{11,10,709},{140,10,415},{6,10,360},{7,10,1664},{136,10,478}\r
-,{137,0,806},{12,11,508},{14,11,102},{14,11,226},{144,11,57},{135,11,1123},{4,11\r
-,138},{7,11,1012},{7,11,1280},{137,11,76},{5,11,29},{140,11,638},{136,10,699},{\r
-134,0,1326},{132,0,104},{135,11,735},{132,10,739},{134,0,1331},{7,0,260},{135,11\r
-,260},{135,11,1063},{7,0,45},{9,0,542},{9,0,566},{10,0,728},{137,10,869},{4,10,\r
-67},{5,10,422},{7,10,1037},{7,10,1289},{7,10,1555},{9,10,741},{145,10,108},{139,\r
-0,263},{134,0,1516},{14,0,146},{15,0,42},{16,0,23},{17,0,86},{146,0,17},{138,0,\r
-468},{136,0,1005},{4,11,17},{5,11,23},{7,11,995},{11,11,383},{11,11,437},{12,11,\r
-460},{140,11,532},{7,0,87},{142,0,288},{138,10,96},{135,11,626},{144,10,26},{7,0\r
-,988},{7,0,1939},{9,0,64},{9,0,502},{12,0,22},{12,0,34},{13,0,12},{13,0,234},{\r
-147,0,77},{13,0,133},{8,10,203},{11,10,823},{11,10,846},{12,10,482},{13,10,277},\r
-{13,10,302},{13,10,464},{14,10,205},{142,10,221},{4,10,449},{133,10,718},{135,0,\r
-141},{6,0,1842},{136,0,872},{8,11,70},{12,11,171},{141,11,272},{4,10,355},{6,10,\r
-311},{9,10,256},{138,10,404},{132,0,619},{137,0,261},{10,11,233},{10,10,758},{\r
-139,11,76},{5,0,246},{8,0,189},{9,0,355},{9,0,512},{10,0,124},{10,0,453},{11,0,\r
-143},{11,0,416},{11,0,859},{141,0,341},{134,11,442},{133,10,827},{5,10,64},{140,\r
-10,581},{4,10,442},{7,10,1047},{7,10,1352},{135,10,1643},{134,11,1709},{5,0,678}\r
-,{6,0,305},{7,0,775},{7,0,1065},{133,10,977},{11,11,69},{12,11,105},{12,11,117},\r
-{13,11,213},{14,11,13},{14,11,62},{14,11,177},{14,11,421},{15,11,19},{146,11,141\r
-},{137,11,309},{5,0,35},{7,0,862},{7,0,1886},{138,0,179},{136,0,285},{132,0,517}\r
-,{7,11,976},{9,11,146},{10,11,206},{10,11,596},{13,11,218},{142,11,153},{132,10,\r
-254},{6,0,214},{12,0,540},{4,10,275},{7,10,1219},{140,10,376},{8,0,667},{11,0,\r
-403},{146,0,83},{12,0,74},{10,11,648},{11,11,671},{143,11,46},{135,0,125},{134,\r
-10,1753},{133,0,761},{6,0,912},{4,11,518},{6,10,369},{6,10,502},{7,10,1036},{7,\r
-11,1136},{8,10,348},{9,10,452},{10,10,26},{11,10,224},{11,10,387},{11,10,772},{\r
-12,10,95},{12,10,629},{13,10,195},{13,10,207},{13,10,241},{14,10,260},{14,10,270\r
-},{143,10,140},{10,0,131},{140,0,72},{132,10,269},{5,10,480},{7,10,532},{7,10,\r
-1197},{7,10,1358},{8,10,291},{11,10,349},{142,10,396},{8,11,689},{137,11,863},{8\r
-,0,333},{138,0,182},{4,11,18},{7,11,145},{7,11,444},{7,11,1278},{8,11,49},{8,11,\r
-400},{9,11,71},{9,11,250},{10,11,459},{12,11,160},{144,11,24},{14,11,35},{142,11\r
-,191},{135,11,1864},{135,0,1338},{148,10,15},{14,0,94},{15,0,65},{16,0,4},{16,0,\r
-77},{16,0,80},{145,0,5},{12,11,82},{143,11,36},{133,11,1010},{133,0,449},{133,0,\r
-646},{7,0,86},{8,0,103},{135,10,657},{7,0,2028},{138,0,641},{136,10,533},{134,0,\r
-1},{139,11,970},{5,11,87},{7,11,313},{7,11,1103},{10,11,112},{10,11,582},{11,11,\r
-389},{11,11,813},{12,11,385},{13,11,286},{14,11,124},{146,11,108},{6,0,869},{132\r
-,11,267},{6,0,277},{7,0,1274},{7,0,1386},{146,0,87},{6,0,187},{7,0,39},{7,0,1203\r
-},{8,0,380},{14,0,117},{149,0,28},{4,10,211},{4,10,332},{5,10,335},{6,10,238},{7\r
-,10,269},{7,10,811},{7,10,1797},{8,10,836},{9,10,507},{141,10,242},{4,0,785},{5,\r
-0,368},{6,0,297},{7,0,793},{139,0,938},{7,0,464},{8,0,558},{11,0,105},{12,0,231}\r
-,{14,0,386},{15,0,102},{148,0,75},{133,10,1009},{8,0,877},{140,0,731},{139,11,\r
-289},{10,11,249},{139,11,209},{132,11,561},{134,0,1608},{132,11,760},{134,0,1429\r
-},{9,11,154},{140,11,485},{5,10,228},{6,10,203},{7,10,156},{8,10,347},{137,10,\r
-265},{7,0,1010},{11,0,733},{11,0,759},{13,0,34},{14,0,427},{146,0,45},{7,10,1131\r
-},{135,10,1468},{136,11,255},{7,0,1656},{9,0,369},{10,0,338},{10,0,490},{11,0,\r
-154},{11,0,545},{11,0,775},{13,0,77},{141,0,274},{133,11,621},{134,0,1038},{4,11\r
-,368},{135,11,641},{6,0,2010},{8,0,979},{8,0,985},{10,0,951},{138,0,1011},{134,0\r
-,1005},{19,0,121},{5,10,291},{5,10,318},{7,10,765},{9,10,389},{140,10,548},{5,0,\r
-20},{6,0,298},{7,0,659},{137,0,219},{7,0,1440},{11,0,854},{11,0,872},{11,0,921},\r
-{12,0,551},{13,0,472},{142,0,367},{5,0,490},{6,0,615},{6,0,620},{135,0,683},{6,0\r
-,1070},{134,0,1597},{139,0,522},{132,0,439},{136,0,669},{6,0,766},{6,0,1143},{6,\r
-0,1245},{10,10,525},{139,10,82},{9,11,92},{147,11,91},{6,0,668},{134,0,1218},{6,\r
-11,525},{9,11,876},{140,11,284},{132,0,233},{136,0,547},{132,10,422},{5,10,355},\r
-{145,10,0},{6,11,300},{135,11,1515},{4,0,482},{137,10,905},{4,0,886},{7,0,346},{\r
-133,11,594},{133,10,865},{5,10,914},{134,10,1625},{135,0,334},{5,0,795},{6,0,\r
-1741},{133,10,234},{135,10,1383},{6,11,1641},{136,11,820},{135,0,371},{7,11,1313\r
-},{138,11,660},{135,10,1312},{135,0,622},{7,0,625},{135,0,1750},{135,0,339},{4,0\r
-,203},{135,0,1936},{15,0,29},{16,0,38},{15,11,29},{144,11,38},{5,0,338},{135,0,\r
-1256},{135,10,1493},{10,0,130},{6,10,421},{7,10,61},{7,10,1540},{138,10,501},{6,\r
-11,389},{7,11,149},{9,11,142},{138,11,94},{137,10,341},{11,0,678},{12,0,307},{\r
-142,10,98},{6,11,8},{7,11,1881},{136,11,91},{135,0,2044},{6,0,770},{6,0,802},{6,\r
-0,812},{7,0,311},{9,0,308},{12,0,255},{6,10,102},{7,10,72},{15,10,142},{147,10,\r
-67},{151,10,30},{135,10,823},{135,0,1266},{135,11,1746},{135,10,1870},{4,0,400},\r
-{5,0,267},{135,0,232},{7,11,24},{11,11,542},{139,11,852},{135,11,1739},{4,11,503\r
-},{135,11,1661},{5,11,130},{7,11,1314},{9,11,610},{10,11,718},{11,11,601},{11,11\r
-,819},{11,11,946},{140,11,536},{10,11,149},{11,11,280},{142,11,336},{7,0,739},{\r
-11,0,690},{7,11,1946},{8,10,48},{8,10,88},{8,10,582},{8,10,681},{9,10,373},{9,10\r
-,864},{11,10,157},{11,10,843},{148,10,27},{134,0,990},{4,10,88},{5,10,137},{5,10\r
-,174},{5,10,777},{6,10,1664},{6,10,1725},{7,10,77},{7,10,426},{7,10,1317},{7,10,\r
-1355},{8,10,126},{8,10,563},{9,10,523},{9,10,750},{10,10,310},{10,10,836},{11,10\r
-,42},{11,10,318},{11,10,731},{12,10,68},{12,10,92},{12,10,507},{12,10,692},{13,\r
-10,81},{13,10,238},{13,10,374},{14,10,436},{18,10,138},{19,10,78},{19,10,111},{\r
-20,10,55},{20,10,77},{148,10,92},{141,10,418},{7,0,1831},{132,10,938},{6,0,776},\r
-{134,0,915},{138,10,351},{5,11,348},{6,11,522},{6,10,1668},{7,10,1499},{8,10,117\r
-},{9,10,314},{138,10,174},{135,10,707},{132,0,613},{133,10,403},{132,11,392},{5,\r
-11,433},{9,11,633},{139,11,629},{133,0,763},{132,0,878},{132,0,977},{132,0,100},\r
-{6,0,463},{4,10,44},{5,10,311},{7,10,639},{7,10,762},{7,10,1827},{9,10,8},{9,10,\r
-462},{148,10,83},{134,11,234},{4,10,346},{7,10,115},{9,10,180},{9,10,456},{138,\r
-10,363},{5,0,362},{5,0,443},{6,0,318},{7,0,1019},{139,0,623},{5,0,463},{8,0,296}\r
-,{7,11,140},{7,11,1950},{8,11,680},{11,11,817},{147,11,88},{7,11,1222},{138,11,\r
-386},{142,0,137},{132,0,454},{7,0,1914},{6,11,5},{7,10,1051},{9,10,545},{11,11,\r
-249},{12,11,313},{16,11,66},{145,11,26},{135,0,1527},{145,0,58},{148,11,59},{5,0\r
-,48},{5,0,404},{6,0,557},{7,0,458},{8,0,597},{10,0,455},{10,0,606},{11,0,49},{11\r
-,0,548},{12,0,476},{13,0,18},{141,0,450},{5,11,963},{134,11,1773},{133,0,729},{\r
-138,11,586},{5,0,442},{135,0,1984},{134,0,449},{144,0,40},{4,0,853},{7,11,180},{\r
-8,11,509},{136,11,792},{6,10,185},{7,10,1899},{9,10,875},{139,10,673},{134,11,\r
-524},{12,0,227},{4,10,327},{5,10,478},{7,10,1332},{136,10,753},{6,0,1491},{5,10,\r
-1020},{133,10,1022},{4,10,103},{133,10,401},{132,11,931},{4,10,499},{135,10,1421\r
-},{5,0,55},{7,0,376},{140,0,161},{133,0,450},{6,0,1174},{134,0,1562},{10,0,62},{\r
-13,0,400},{135,11,1837},{140,0,207},{135,0,869},{4,11,773},{5,11,618},{137,11,\r
-756},{132,10,96},{4,0,213},{7,0,223},{8,0,80},{135,10,968},{4,11,90},{5,11,337},\r
-{5,11,545},{7,11,754},{9,11,186},{10,11,72},{10,11,782},{11,11,513},{11,11,577},\r
-{11,11,610},{11,11,889},{11,11,961},{12,11,354},{12,11,362},{12,11,461},{12,11,\r
-595},{13,11,79},{143,11,121},{7,0,381},{7,0,806},{7,0,820},{8,0,354},{8,0,437},{\r
-8,0,787},{9,0,657},{10,0,58},{10,0,339},{10,0,749},{11,0,914},{12,0,162},{13,0,\r
-75},{14,0,106},{14,0,198},{14,0,320},{14,0,413},{146,0,43},{136,0,747},{136,0,\r
-954},{134,0,1073},{135,0,556},{7,11,151},{9,11,329},{139,11,254},{5,0,692},{134,\r
-0,1395},{6,10,563},{137,10,224},{134,0,191},{132,0,804},{9,11,187},{10,11,36},{\r
-17,11,44},{146,11,64},{7,11,165},{7,11,919},{136,11,517},{4,11,506},{5,11,295},{\r
-7,11,1680},{15,11,14},{144,11,5},{4,0,706},{6,0,162},{7,0,1960},{136,0,831},{135\r
-,11,1376},{7,11,987},{9,11,688},{10,11,522},{11,11,788},{140,11,566},{150,0,35},\r
-{138,0,426},{135,0,1235},{135,11,1741},{7,11,389},{7,11,700},{7,11,940},{8,11,\r
-514},{9,11,116},{9,11,535},{10,11,118},{11,11,107},{11,11,148},{11,11,922},{12,\r
-11,254},{12,11,421},{142,11,238},{134,0,1234},{132,11,743},{4,10,910},{5,10,832}\r
-,{135,11,1335},{141,0,96},{135,11,185},{146,0,149},{4,0,204},{137,0,902},{4,11,\r
-784},{133,11,745},{136,0,833},{136,0,949},{7,0,366},{9,0,287},{12,0,199},{12,0,\r
-556},{12,0,577},{5,11,81},{7,11,146},{7,11,1342},{7,11,1446},{8,11,53},{8,11,561\r
-},{8,11,694},{8,11,754},{9,11,97},{9,11,115},{9,11,894},{10,11,462},{10,11,813},\r
-{11,11,230},{11,11,657},{11,11,699},{11,11,748},{12,11,119},{12,11,200},{12,11,\r
-283},{14,11,273},{145,11,15},{5,11,408},{137,11,747},{9,11,498},{140,11,181},{6,\r
-0,2020},{136,0,992},{5,0,356},{135,0,224},{134,0,784},{7,0,630},{9,0,567},{11,0,\r
-150},{11,0,444},{13,0,119},{8,10,528},{137,10,348},{134,0,539},{4,10,20},{133,10\r
-,616},{142,0,27},{7,11,30},{8,11,86},{8,11,315},{8,11,700},{9,11,576},{9,11,858}\r
-,{11,11,310},{11,11,888},{11,11,904},{12,11,361},{141,11,248},{138,11,839},{134,\r
-0,755},{134,0,1063},{7,10,1091},{135,10,1765},{134,11,428},{7,11,524},{8,11,169}\r
-,{8,11,234},{9,11,480},{138,11,646},{139,0,814},{7,11,1462},{139,11,659},{4,10,\r
-26},{5,10,429},{6,10,245},{7,10,704},{7,10,1379},{135,10,1474},{7,11,1205},{138,\r
-11,637},{139,11,803},{132,10,621},{136,0,987},{4,11,266},{8,11,4},{9,11,39},{10,\r
-11,166},{11,11,918},{12,11,635},{20,11,10},{22,11,27},{150,11,43},{4,0,235},{135\r
-,0,255},{4,0,194},{5,0,584},{6,0,384},{7,0,583},{10,0,761},{11,0,760},{139,0,851\r
-},{133,10,542},{134,0,1086},{133,10,868},{8,0,1016},{136,0,1018},{7,0,1396},{7,\r
-11,1396},{136,10,433},{135,10,1495},{138,10,215},{141,10,124},{7,11,157},{8,11,\r
-279},{9,11,759},{16,11,31},{16,11,39},{16,11,75},{18,11,24},{20,11,42},{152,11,1\r
-},{5,0,562},{134,11,604},{134,0,913},{5,0,191},{137,0,271},{4,0,470},{6,0,153},{\r
-7,0,1503},{7,0,1923},{10,0,701},{11,0,132},{11,0,227},{11,0,320},{11,0,436},{11,\r
-0,525},{11,0,855},{11,0,873},{12,0,41},{12,0,286},{13,0,103},{13,0,284},{14,0,\r
-255},{14,0,262},{15,0,117},{143,0,127},{7,0,475},{12,0,45},{147,10,112},{132,11,\r
-567},{137,11,859},{6,0,713},{6,0,969},{6,0,1290},{134,0,1551},{133,0,327},{6,0,\r
-552},{6,0,1292},{7,0,1754},{137,0,604},{4,0,223},{6,0,359},{11,0,3},{13,0,108},{\r
-14,0,89},{16,0,22},{5,11,762},{7,11,1880},{9,11,680},{139,11,798},{5,0,80},{6,0,\r
-405},{7,0,403},{7,0,1502},{8,0,456},{9,0,487},{9,0,853},{9,0,889},{10,0,309},{11\r
-,0,721},{11,0,994},{12,0,430},{141,0,165},{133,11,298},{132,10,647},{134,0,2016}\r
-,{18,10,10},{146,11,10},{4,0,453},{5,0,887},{6,0,535},{8,0,6},{8,0,543},{136,0,\r
-826},{136,0,975},{10,0,961},{138,0,962},{138,10,220},{6,0,1891},{6,0,1893},{9,0,\r
-916},{9,0,965},{9,0,972},{12,0,801},{12,0,859},{12,0,883},{15,0,226},{149,0,51},\r
-{132,10,109},{135,11,267},{7,11,92},{7,11,182},{8,11,453},{9,11,204},{11,11,950}\r
-,{12,11,94},{12,11,644},{16,11,20},{16,11,70},{16,11,90},{147,11,55},{134,10,\r
-1746},{6,11,71},{7,11,845},{7,11,1308},{8,11,160},{137,11,318},{5,0,101},{6,0,88\r
-},{7,0,263},{7,0,628},{7,0,1677},{8,0,349},{9,0,100},{10,0,677},{14,0,169},{14,0\r
-,302},{14,0,313},{15,0,48},{15,0,84},{7,11,237},{8,11,664},{9,11,42},{9,11,266},\r
-{9,11,380},{9,11,645},{10,11,177},{138,11,276},{138,11,69},{4,0,310},{7,0,708},{\r
-7,0,996},{9,0,795},{10,0,390},{10,0,733},{11,0,451},{12,0,249},{14,0,115},{14,0,\r
-286},{143,0,100},{5,0,587},{4,10,40},{10,10,67},{11,10,117},{11,10,768},{139,10,\r
-935},{6,0,1942},{7,0,512},{136,0,983},{7,10,992},{8,10,301},{9,10,722},{12,10,63\r
-},{13,10,29},{14,10,161},{143,10,18},{136,11,76},{139,10,923},{134,0,645},{134,0\r
-,851},{4,0,498},{132,11,293},{7,0,217},{8,0,140},{10,0,610},{14,11,352},{17,11,\r
-53},{18,11,146},{18,11,152},{19,11,11},{150,11,54},{134,0,1448},{138,11,841},{\r
-133,0,905},{4,11,605},{7,11,518},{7,11,1282},{7,11,1918},{10,11,180},{139,11,218\r
-},{139,11,917},{135,10,825},{140,10,328},{4,0,456},{7,0,105},{7,0,358},{7,0,1637\r
-},{8,0,643},{139,0,483},{134,0,792},{6,11,96},{135,11,1426},{137,11,691},{4,11,\r
-651},{133,11,289},{7,11,688},{8,11,35},{9,11,511},{10,11,767},{147,11,118},{150,\r
-0,56},{5,0,243},{5,0,535},{6,10,204},{10,10,320},{10,10,583},{13,10,502},{14,10,\r
-72},{14,10,274},{14,10,312},{14,10,344},{15,10,159},{16,10,62},{16,10,69},{17,10\r
-,30},{18,10,42},{18,10,53},{18,10,84},{18,10,140},{19,10,68},{19,10,85},{20,10,5\r
-},{20,10,45},{20,10,101},{22,10,7},{150,10,20},{4,10,558},{6,10,390},{7,10,162},\r
-{7,10,689},{9,10,360},{138,10,653},{146,11,23},{135,0,1748},{5,10,856},{6,10,\r
-1672},{6,10,1757},{134,10,1781},{5,0,539},{5,0,754},{6,0,876},{132,11,704},{135,\r
-11,1078},{5,10,92},{10,10,736},{140,10,102},{17,0,91},{5,10,590},{137,10,213},{\r
-134,0,1565},{6,0,91},{135,0,435},{4,0,939},{140,0,792},{134,0,1399},{4,0,16},{5,\r
-0,316},{5,0,842},{6,0,370},{6,0,1778},{8,0,166},{11,0,812},{12,0,206},{12,0,351}\r
-,{14,0,418},{16,0,15},{16,0,34},{18,0,3},{19,0,3},{19,0,7},{20,0,4},{21,0,21},{4\r
-,11,720},{133,11,306},{144,0,95},{133,11,431},{132,11,234},{135,0,551},{4,0,999}\r
-,{6,0,1966},{134,0,2042},{7,0,619},{10,0,547},{11,0,122},{12,0,601},{15,0,7},{\r
-148,0,20},{5,11,464},{6,11,236},{7,11,276},{7,11,696},{7,11,914},{7,11,1108},{7,\r
-11,1448},{9,11,15},{9,11,564},{10,11,14},{12,11,565},{13,11,449},{14,11,53},{15,\r
-11,13},{16,11,64},{145,11,41},{6,0,884},{6,0,1019},{134,0,1150},{6,11,1767},{12,\r
-11,194},{145,11,107},{136,10,503},{133,11,840},{7,0,671},{134,10,466},{132,0,888\r
-},{4,0,149},{138,0,368},{4,0,154},{7,0,1134},{136,0,105},{135,0,983},{9,11,642},\r
-{11,11,236},{142,11,193},{4,0,31},{6,0,429},{7,0,962},{9,0,458},{139,0,691},{6,0\r
-,643},{134,0,1102},{132,0,312},{4,11,68},{5,11,634},{6,11,386},{7,11,794},{8,11,\r
-273},{9,11,563},{10,11,105},{10,11,171},{11,11,94},{139,11,354},{133,0,740},{135\r
-,0,1642},{4,11,95},{7,11,416},{8,11,211},{139,11,830},{132,0,236},{138,10,241},{\r
-7,11,731},{13,11,20},{143,11,11},{5,0,836},{5,0,857},{6,0,1680},{135,0,59},{10,0\r
-,68},{11,0,494},{152,11,6},{4,0,81},{139,0,867},{135,0,795},{133,11,689},{4,0,\r
-1001},{5,0,282},{6,0,1932},{6,0,1977},{6,0,1987},{6,0,1992},{8,0,650},{8,0,919},\r
-{8,0,920},{8,0,923},{8,0,926},{8,0,927},{8,0,931},{8,0,939},{8,0,947},{8,0,956},\r
-{8,0,997},{9,0,907},{10,0,950},{10,0,953},{10,0,954},{10,0,956},{10,0,958},{10,0\r
-,959},{10,0,964},{10,0,970},{10,0,972},{10,0,973},{10,0,975},{10,0,976},{10,0,\r
-980},{10,0,981},{10,0,984},{10,0,988},{10,0,990},{10,0,995},{10,0,999},{10,0,\r
-1002},{10,0,1003},{10,0,1005},{10,0,1006},{10,0,1008},{10,0,1009},{10,0,1012},{\r
-10,0,1014},{10,0,1015},{10,0,1019},{10,0,1020},{10,0,1022},{12,0,959},{12,0,961}\r
-,{12,0,962},{12,0,963},{12,0,964},{12,0,965},{12,0,967},{12,0,968},{12,0,969},{\r
-12,0,970},{12,0,971},{12,0,972},{12,0,973},{12,0,974},{12,0,975},{12,0,976},{12,\r
-0,977},{12,0,979},{12,0,981},{12,0,982},{12,0,983},{12,0,984},{12,0,985},{12,0,\r
-986},{12,0,987},{12,0,989},{12,0,990},{12,0,992},{12,0,993},{12,0,995},{12,0,998\r
-},{12,0,999},{12,0,1000},{12,0,1001},{12,0,1002},{12,0,1004},{12,0,1005},{12,0,\r
-1006},{12,0,1007},{12,0,1008},{12,0,1009},{12,0,1010},{12,0,1011},{12,0,1012},{\r
-12,0,1014},{12,0,1015},{12,0,1016},{12,0,1017},{12,0,1018},{12,0,1019},{12,0,\r
-1022},{12,0,1023},{14,0,475},{14,0,477},{14,0,478},{14,0,479},{14,0,480},{14,0,\r
-482},{14,0,483},{14,0,484},{14,0,485},{14,0,486},{14,0,487},{14,0,488},{14,0,489\r
-},{14,0,490},{14,0,491},{14,0,492},{14,0,493},{14,0,494},{14,0,495},{14,0,496},{\r
-14,0,497},{14,0,498},{14,0,499},{14,0,500},{14,0,501},{14,0,502},{14,0,503},{14,\r
-0,504},{14,0,506},{14,0,507},{14,0,508},{14,0,509},{14,0,510},{14,0,511},{16,0,\r
-113},{16,0,114},{16,0,115},{16,0,117},{16,0,118},{16,0,119},{16,0,121},{16,0,122\r
-},{16,0,123},{16,0,124},{16,0,125},{16,0,126},{16,0,127},{18,0,242},{18,0,243},{\r
-18,0,244},{18,0,245},{18,0,248},{18,0,249},{18,0,250},{18,0,251},{18,0,252},{18,\r
-0,253},{18,0,254},{18,0,255},{20,0,125},{20,0,126},{148,0,127},{7,11,1717},{7,11\r
-,1769},{138,11,546},{7,11,1127},{7,11,1572},{10,11,297},{10,11,422},{11,11,764},\r
-{11,11,810},{12,11,264},{13,11,102},{13,11,300},{13,11,484},{14,11,147},{14,11,\r
-229},{17,11,71},{18,11,118},{147,11,120},{6,0,1148},{134,0,1586},{132,0,775},{\r
-135,10,954},{133,11,864},{133,11,928},{138,11,189},{135,10,1958},{6,10,549},{8,\r
-10,34},{8,10,283},{9,10,165},{138,10,475},{5,10,652},{5,10,701},{135,10,449},{\r
-135,11,695},{4,10,655},{7,10,850},{17,10,75},{146,10,137},{140,11,682},{133,11,\r
-523},{8,0,970},{136,10,670},{136,11,555},{7,11,76},{8,11,44},{9,11,884},{10,11,\r
-580},{11,11,399},{11,11,894},{15,11,122},{18,11,144},{147,11,61},{6,10,159},{6,\r
-10,364},{7,10,516},{7,10,1439},{137,10,518},{4,0,71},{5,0,376},{7,0,119},{138,0,\r
-665},{141,10,151},{11,0,827},{14,0,34},{143,0,148},{133,11,518},{4,0,479},{135,\r
-11,1787},{135,11,1852},{135,10,993},{7,0,607},{136,0,99},{134,0,1960},{132,0,793\r
-},{4,0,41},{5,0,74},{7,0,1627},{11,0,871},{140,0,619},{7,0,94},{11,0,329},{11,0,\r
-965},{12,0,241},{14,0,354},{15,0,22},{148,0,63},{7,10,501},{9,10,111},{10,10,141\r
-},{11,10,332},{13,10,43},{13,10,429},{14,10,130},{14,10,415},{145,10,102},{9,0,\r
-209},{137,0,300},{134,0,1497},{138,11,255},{4,11,934},{5,11,138},{136,11,610},{\r
-133,0,98},{6,0,1316},{10,11,804},{138,11,832},{8,11,96},{9,11,36},{10,11,607},{\r
-11,11,423},{11,11,442},{12,11,309},{14,11,199},{15,11,90},{145,11,110},{132,0,\r
-463},{5,10,149},{136,10,233},{133,10,935},{4,11,652},{8,11,320},{9,11,13},{9,11,\r
-398},{9,11,727},{10,11,75},{10,11,184},{10,11,230},{10,11,564},{10,11,569},{11,\r
-11,973},{12,11,70},{12,11,189},{13,11,57},{13,11,257},{22,11,6},{150,11,16},{142\r
-,0,291},{12,10,582},{146,10,131},{136,10,801},{133,0,984},{145,11,116},{4,11,692\r
-},{133,11,321},{4,0,182},{6,0,205},{135,0,220},{4,0,42},{9,0,205},{9,0,786},{138\r
-,0,659},{6,0,801},{11,11,130},{140,11,609},{132,0,635},{5,11,345},{135,11,1016},\r
-{139,0,533},{132,0,371},{4,0,272},{135,0,836},{6,0,1282},{135,11,1100},{5,0,825}\r
-,{134,0,1640},{135,11,1325},{133,11,673},{4,11,287},{133,11,1018},{135,0,357},{6\r
-,0,467},{137,0,879},{7,0,317},{135,0,569},{6,0,924},{134,0,1588},{5,11,34},{5,10\r
-,406},{10,11,724},{12,11,444},{13,11,354},{18,11,32},{23,11,24},{23,11,31},{152,\r
-11,5},{6,0,1795},{6,0,1835},{6,0,1836},{6,0,1856},{8,0,844},{8,0,849},{8,0,854},\r
-{8,0,870},{8,0,887},{10,0,852},{138,0,942},{6,10,69},{135,10,117},{137,0,307},{4\r
-,0,944},{6,0,1799},{6,0,1825},{10,0,848},{10,0,875},{10,0,895},{10,0,899},{10,0,\r
-902},{140,0,773},{11,0,43},{13,0,72},{141,0,142},{135,10,1830},{134,11,382},{4,\r
-10,432},{135,10,824},{132,11,329},{7,0,1820},{139,11,124},{133,10,826},{133,0,\r
-525},{132,11,906},{7,11,1940},{136,11,366},{138,11,10},{4,11,123},{4,11,649},{5,\r
-11,605},{7,11,1509},{136,11,36},{6,0,110},{135,0,1681},{133,0,493},{133,11,767},\r
-{4,0,174},{135,0,911},{138,11,786},{8,0,417},{137,0,782},{133,10,1000},{7,0,733}\r
-,{137,0,583},{4,10,297},{6,10,529},{7,10,152},{7,10,713},{7,10,1845},{8,10,710},\r
-{8,10,717},{12,10,639},{140,10,685},{4,0,32},{5,0,215},{6,0,269},{7,0,1782},{7,0\r
-,1892},{10,0,16},{11,0,822},{11,0,954},{141,0,481},{4,11,273},{5,11,658},{133,11\r
-,995},{136,0,477},{134,11,72},{135,11,1345},{5,0,308},{7,0,1088},{4,10,520},{135\r
-,10,575},{133,11,589},{5,0,126},{8,0,297},{9,0,366},{140,0,374},{7,0,1551},{139,\r
-0,361},{5,11,117},{6,11,514},{6,11,541},{7,11,1164},{7,11,1436},{8,11,220},{8,11\r
-,648},{10,11,688},{139,11,560},{133,11,686},{4,0,946},{6,0,1807},{8,0,871},{10,0\r
-,854},{10,0,870},{10,0,888},{10,0,897},{10,0,920},{12,0,722},{12,0,761},{12,0,\r
-763},{12,0,764},{14,0,454},{14,0,465},{16,0,107},{18,0,167},{18,0,168},{146,0,\r
-172},{132,0,175},{135,0,1307},{132,0,685},{135,11,1834},{133,0,797},{6,0,745},{6\r
-,0,858},{134,0,963},{133,0,565},{5,10,397},{6,10,154},{7,11,196},{7,10,676},{8,\r
-10,443},{8,10,609},{9,10,24},{9,10,325},{10,10,35},{10,11,765},{11,11,347},{11,\r
-10,535},{11,11,552},{11,11,576},{11,10,672},{11,11,790},{11,10,1018},{12,11,263}\r
-,{12,10,637},{13,11,246},{13,11,270},{13,11,395},{14,11,74},{14,11,176},{14,11,\r
-190},{14,11,398},{14,11,412},{15,11,32},{15,11,63},{16,10,30},{16,11,88},{147,11\r
-,105},{13,11,84},{141,11,122},{4,0,252},{7,0,1068},{10,0,434},{11,0,228},{11,0,\r
-426},{13,0,231},{18,0,106},{148,0,87},{137,0,826},{4,11,589},{139,11,282},{5,11,\r
-381},{135,11,1792},{132,0,791},{5,0,231},{10,0,509},{133,10,981},{7,0,601},{9,0,\r
-277},{9,0,674},{10,0,178},{10,0,418},{10,0,571},{11,0,531},{12,0,113},{12,0,475}\r
-,{13,0,99},{142,0,428},{4,10,56},{7,11,616},{7,10,1791},{8,10,607},{8,10,651},{\r
-10,11,413},{11,10,465},{11,10,835},{12,10,337},{141,10,480},{7,0,1591},{144,0,43\r
-},{9,10,158},{138,10,411},{135,0,1683},{8,0,289},{11,0,45},{12,0,278},{140,0,537\r
-},{6,11,120},{7,11,1188},{7,11,1710},{8,11,286},{9,11,667},{11,11,592},{139,11,\r
-730},{136,10,617},{135,0,1120},{135,11,1146},{139,10,563},{4,11,352},{4,10,369},\r
-{135,11,687},{143,11,38},{4,0,399},{5,0,119},{5,0,494},{7,0,751},{9,0,556},{14,\r
-11,179},{15,11,151},{150,11,11},{4,11,192},{5,11,49},{6,11,200},{6,11,293},{6,11\r
-,1696},{135,11,488},{4,0,398},{133,0,660},{7,0,1030},{134,10,622},{135,11,595},{\r
-141,0,168},{132,11,147},{7,0,973},{10,10,624},{142,10,279},{132,10,363},{132,0,\r
-642},{133,11,934},{134,0,1615},{7,11,505},{135,11,523},{7,0,594},{7,0,851},{7,0,\r
-1858},{9,0,411},{9,0,574},{9,0,666},{9,0,737},{10,0,346},{10,0,712},{11,0,246},{\r
-11,0,432},{11,0,517},{11,0,647},{11,0,679},{11,0,727},{12,0,304},{12,0,305},{12,\r
-0,323},{12,0,483},{12,0,572},{12,0,593},{12,0,602},{13,0,95},{13,0,101},{13,0,\r
-171},{13,0,315},{13,0,378},{13,0,425},{13,0,475},{14,0,63},{14,0,380},{14,0,384}\r
-,{15,0,133},{18,0,112},{148,0,72},{135,0,1093},{132,0,679},{8,0,913},{10,0,903},\r
-{10,0,915},{12,0,648},{12,0,649},{14,0,455},{16,0,112},{138,11,438},{137,0,203},\r
-{134,10,292},{134,0,1492},{7,0,1374},{8,0,540},{5,10,177},{6,10,616},{7,10,827},\r
-{9,10,525},{138,10,656},{135,0,1486},{9,0,714},{138,10,31},{136,0,825},{134,0,\r
-1511},{132,11,637},{134,0,952},{4,10,161},{133,10,631},{5,0,143},{5,0,769},{6,0,\r
-1760},{7,0,682},{7,0,1992},{136,0,736},{132,0,700},{134,0,1540},{132,11,777},{9,\r
-11,867},{138,11,837},{7,0,1557},{135,10,1684},{133,0,860},{6,0,422},{7,0,0},{7,0\r
-,1544},{9,0,605},{11,0,990},{12,0,235},{12,0,453},{13,0,47},{13,0,266},{9,10,469\r
-},{9,10,709},{12,10,512},{14,10,65},{145,10,12},{11,0,807},{10,10,229},{11,10,73\r
-},{139,10,376},{6,11,170},{7,11,1080},{8,11,395},{8,11,487},{11,11,125},{141,11,\r
-147},{5,0,515},{137,0,131},{7,0,1605},{11,0,962},{146,0,139},{132,0,646},{4,0,\r
-396},{7,0,728},{9,0,117},{13,0,202},{148,0,51},{6,0,121},{6,0,124},{6,0,357},{7,\r
-0,1138},{7,0,1295},{8,0,162},{8,0,508},{11,0,655},{4,11,535},{6,10,558},{7,10,\r
-651},{8,11,618},{9,10,0},{10,10,34},{139,10,1008},{135,11,1245},{138,0,357},{150\r
-,11,23},{133,0,237},{135,0,1784},{7,10,1832},{138,10,374},{132,0,713},{132,11,46\r
-},{6,0,1536},{10,0,348},{5,11,811},{6,11,1679},{6,11,1714},{135,11,2032},{11,11,\r
-182},{142,11,195},{6,0,523},{7,0,738},{7,10,771},{7,10,1731},{9,10,405},{138,10,\r
-421},{7,11,1458},{9,11,407},{139,11,15},{6,11,34},{7,11,69},{7,11,640},{7,11,\r
-1089},{8,11,708},{8,11,721},{9,11,363},{9,11,643},{10,11,628},{148,11,98},{133,0\r
-,434},{135,0,1877},{7,0,571},{138,0,366},{5,10,881},{133,10,885},{9,0,513},{10,0\r
-,25},{10,0,39},{12,0,122},{140,0,187},{132,0,580},{5,10,142},{134,10,546},{132,\r
-11,462},{137,0,873},{5,10,466},{11,10,571},{12,10,198},{13,10,283},{14,10,186},{\r
-15,10,21},{143,10,103},{7,0,171},{4,10,185},{5,10,257},{5,10,839},{5,10,936},{9,\r
-10,399},{10,10,258},{10,10,395},{10,10,734},{11,10,1014},{12,10,23},{13,10,350},\r
-{14,10,150},{147,10,6},{134,0,625},{7,0,107},{7,0,838},{8,0,550},{138,0,401},{5,\r
-11,73},{6,11,23},{134,11,338},{4,0,943},{6,0,1850},{12,0,713},{142,0,434},{11,0,\r
-588},{11,0,864},{11,0,936},{11,0,968},{12,0,73},{12,0,343},{12,0,394},{13,0,275}\r
-,{14,0,257},{15,0,160},{7,10,404},{7,10,1377},{7,10,1430},{7,10,2017},{8,10,149}\r
-,{8,10,239},{8,10,512},{8,10,793},{8,10,818},{9,10,474},{9,10,595},{10,10,122},{\r
-10,10,565},{10,10,649},{10,10,783},{11,10,239},{11,10,295},{11,10,447},{11,10,\r
-528},{11,10,639},{11,10,800},{12,10,25},{12,10,157},{12,10,316},{12,10,390},{12,\r
-10,391},{12,10,395},{12,10,478},{12,10,503},{12,10,592},{12,10,680},{13,10,50},{\r
-13,10,53},{13,10,132},{13,10,198},{13,10,322},{13,10,415},{13,10,511},{14,10,71}\r
-,{14,10,395},{15,10,71},{15,10,136},{17,10,123},{18,10,93},{147,10,58},{133,0,\r
-768},{11,0,103},{142,0,0},{136,10,712},{132,0,799},{132,0,894},{7,11,725},{8,11,\r
-498},{139,11,268},{135,11,1798},{135,11,773},{141,11,360},{4,10,377},{152,10,13}\r
-,{135,0,1673},{132,11,583},{134,0,1052},{133,11,220},{140,11,69},{132,11,544},{4\r
-,10,180},{135,10,1906},{134,0,272},{4,0,441},{134,0,1421},{4,0,9},{5,0,128},{7,0\r
-,368},{11,0,480},{148,0,3},{5,11,176},{6,11,437},{6,11,564},{11,11,181},{141,11,\r
-183},{132,10,491},{7,0,1182},{141,11,67},{6,0,1346},{4,10,171},{138,10,234},{4,\r
-10,586},{7,10,1186},{138,10,631},{136,0,682},{134,0,1004},{15,0,24},{143,11,24},\r
-{134,0,968},{4,0,2},{6,0,742},{6,0,793},{7,0,545},{7,0,894},{9,10,931},{10,10,\r
-334},{148,10,71},{136,11,600},{133,10,765},{9,0,769},{140,0,185},{4,11,790},{5,\r
-11,273},{134,11,394},{7,0,474},{137,0,578},{4,11,135},{6,11,127},{7,11,1185},{7,\r
-11,1511},{8,11,613},{11,11,5},{12,11,133},{12,11,495},{12,11,586},{14,11,385},{\r
-15,11,118},{17,11,20},{146,11,98},{133,10,424},{5,0,530},{142,0,113},{6,11,230},\r
-{7,11,961},{7,11,1085},{136,11,462},{7,11,1954},{137,11,636},{136,10,714},{149,\r
-11,6},{135,10,685},{9,10,420},{10,10,269},{10,10,285},{10,10,576},{11,10,397},{\r
-13,10,175},{145,10,90},{132,10,429},{5,0,556},{5,11,162},{136,11,68},{132,11,654\r
-},{4,11,156},{7,11,998},{7,11,1045},{7,11,1860},{9,11,48},{9,11,692},{11,11,419}\r
-,{139,11,602},{6,0,1317},{8,0,16},{9,0,825},{12,0,568},{7,11,1276},{8,11,474},{\r
-137,11,652},{18,0,97},{7,10,18},{7,10,699},{7,10,1966},{8,10,752},{9,10,273},{9,\r
-10,412},{9,10,703},{10,10,71},{10,10,427},{138,10,508},{10,0,703},{7,11,1454},{\r
-138,11,703},{4,10,53},{5,10,186},{135,10,752},{134,0,892},{134,0,1571},{8,10,575\r
-},{10,10,289},{139,10,319},{6,0,186},{137,0,426},{134,0,1101},{132,10,675},{132,\r
-0,585},{6,0,1870},{137,0,937},{152,11,10},{9,11,197},{10,11,300},{12,11,473},{13\r
-,11,90},{141,11,405},{4,0,93},{5,0,252},{6,0,229},{7,0,291},{9,0,550},{139,0,644\r
-},{137,0,749},{9,0,162},{6,10,209},{8,10,468},{9,10,210},{11,10,36},{12,10,28},{\r
-12,10,630},{13,10,21},{13,10,349},{14,10,7},{145,10,13},{132,0,381},{132,11,606}\r
-,{4,10,342},{135,10,1179},{7,11,1587},{7,11,1707},{10,11,528},{139,11,504},{12,\r
-11,39},{13,11,265},{141,11,439},{4,10,928},{133,10,910},{7,10,1838},{7,11,1978},\r
-{136,11,676},{6,0,762},{6,0,796},{134,0,956},{4,10,318},{4,10,496},{7,10,856},{\r
-139,10,654},{137,11,242},{4,11,361},{133,11,315},{132,11,461},{132,11,472},{132,\r
-0,857},{5,0,21},{6,0,77},{6,0,157},{7,0,974},{7,0,1301},{7,0,1339},{7,0,1490},{7\r
-,0,1873},{9,0,628},{7,10,915},{8,10,247},{147,10,0},{4,10,202},{5,10,382},{6,10,\r
-454},{7,10,936},{7,10,1803},{8,10,758},{9,10,375},{9,10,895},{10,10,743},{10,10,\r
-792},{11,10,978},{11,10,1012},{142,10,109},{7,11,617},{10,11,498},{11,11,501},{\r
-12,11,16},{140,11,150},{7,10,1150},{7,10,1425},{7,10,1453},{10,11,747},{140,10,\r
-513},{133,11,155},{11,0,919},{141,0,409},{138,10,791},{10,0,633},{139,11,729},{7\r
-,11,163},{8,11,319},{9,11,402},{10,11,24},{10,11,681},{11,11,200},{11,11,567},{\r
-12,11,253},{12,11,410},{142,11,219},{5,11,475},{7,11,1780},{9,11,230},{11,11,297\r
-},{11,11,558},{14,11,322},{147,11,76},{7,0,332},{6,10,445},{137,10,909},{135,11,\r
-1956},{136,11,274},{134,10,578},{135,0,1489},{135,11,1848},{5,11,944},{134,11,\r
-1769},{132,11,144},{136,10,766},{4,0,832},{135,10,541},{8,0,398},{9,0,681},{139,\r
-0,632},{136,0,645},{9,0,791},{10,0,93},{16,0,13},{17,0,23},{18,0,135},{19,0,12},\r
-{20,0,1},{20,0,12},{148,0,14},{6,11,247},{137,11,555},{134,0,20},{132,0,800},{\r
-135,0,1841},{139,10,983},{137,10,768},{132,10,584},{141,11,51},{6,0,1993},{4,11,\r
-620},{138,11,280},{136,0,769},{11,0,290},{11,0,665},{7,11,1810},{11,11,866},{12,\r
-11,103},{13,11,495},{17,11,67},{147,11,74},{134,0,1426},{139,0,60},{4,10,326},{\r
-135,10,1770},{7,0,1874},{9,0,641},{132,10,226},{6,0,644},{5,10,426},{8,10,30},{9\r
-,10,2},{11,10,549},{147,10,122},{5,11,428},{138,11,442},{135,11,1871},{135,0,\r
-1757},{147,10,117},{135,0,937},{135,0,1652},{6,0,654},{134,0,1476},{133,11,99},{\r
-135,0,527},{132,10,345},{4,10,385},{4,11,397},{7,10,265},{135,10,587},{4,0,579},\r
-{5,0,226},{5,0,323},{135,0,960},{134,0,1486},{8,11,502},{144,11,9},{4,10,347},{5\r
-,10,423},{5,10,996},{135,10,1329},{7,11,727},{146,11,73},{4,11,485},{7,11,353},{\r
-7,10,1259},{7,11,1523},{9,10,125},{139,10,65},{6,0,325},{5,10,136},{6,11,366},{7\r
-,11,1384},{7,11,1601},{136,10,644},{138,11,160},{6,0,1345},{137,11,282},{18,0,91\r
-},{147,0,70},{136,0,404},{4,11,157},{133,11,471},{133,0,973},{6,0,135},{135,0,\r
-1176},{8,11,116},{11,11,551},{142,11,159},{4,0,549},{4,10,433},{133,10,719},{136\r
-,0,976},{5,11,160},{7,11,363},{7,11,589},{10,11,170},{141,11,55},{144,0,21},{144\r
-,0,51},{135,0,314},{135,10,1363},{4,11,108},{7,11,405},{10,11,491},{139,11,498},\r
-{146,0,4},{4,10,555},{8,10,536},{10,10,288},{139,10,1005},{135,11,1005},{6,0,281\r
-},{7,0,6},{8,0,282},{8,0,480},{8,0,499},{9,0,198},{10,0,143},{10,0,169},{10,0,\r
-211},{10,0,417},{10,0,574},{11,0,147},{11,0,395},{12,0,75},{12,0,407},{12,0,608}\r
-,{13,0,500},{142,0,251},{6,0,1093},{6,0,1405},{9,10,370},{138,10,90},{4,11,926},\r
-{133,11,983},{135,0,1776},{134,0,1528},{132,0,419},{132,11,538},{6,11,294},{7,11\r
-,1267},{136,11,624},{135,11,1772},{138,11,301},{4,10,257},{135,10,2031},{4,0,138\r
-},{7,0,1012},{7,0,1280},{9,0,76},{135,10,1768},{132,11,757},{5,0,29},{140,0,638}\r
-,{7,11,655},{135,11,1844},{7,0,1418},{6,11,257},{135,11,1522},{8,11,469},{138,11\r
-,47},{142,11,278},{6,10,83},{6,10,1733},{135,10,1389},{11,11,204},{11,11,243},{\r
-140,11,293},{135,11,1875},{6,0,1710},{135,0,2038},{137,11,299},{4,0,17},{5,0,23}\r
-,{7,0,995},{11,0,383},{11,0,437},{12,0,460},{140,0,532},{133,0,862},{137,10,696}\r
-,{6,0,592},{138,0,946},{138,11,599},{7,10,1718},{9,10,95},{9,10,274},{10,10,279}\r
-,{10,10,317},{10,10,420},{11,10,303},{11,10,808},{12,10,134},{12,10,367},{13,10,\r
-149},{13,10,347},{14,10,349},{14,10,406},{18,10,22},{18,10,89},{18,10,122},{147,\r
-10,47},{8,0,70},{12,0,171},{141,0,272},{133,10,26},{132,10,550},{137,0,812},{10,\r
-0,233},{139,0,76},{134,0,988},{134,0,442},{136,10,822},{7,0,896},{4,10,902},{5,\r
-10,809},{134,10,122},{5,11,150},{7,11,106},{8,11,603},{9,11,593},{9,11,634},{10,\r
-11,44},{10,11,173},{11,11,462},{11,11,515},{13,11,216},{13,11,288},{142,11,400},\r
-{136,0,483},{135,10,262},{6,0,1709},{133,10,620},{4,10,34},{5,10,574},{7,10,279}\r
-,{7,10,1624},{136,10,601},{137,10,170},{147,0,119},{12,11,108},{141,11,291},{11,\r
-0,69},{12,0,105},{12,0,117},{13,0,213},{14,0,13},{14,0,62},{14,0,177},{14,0,421}\r
-,{15,0,19},{146,0,141},{137,0,309},{11,11,278},{142,11,73},{7,0,608},{7,0,976},{\r
-9,0,146},{10,0,206},{10,0,596},{13,0,218},{142,0,153},{133,10,332},{6,10,261},{8\r
-,10,182},{139,10,943},{4,11,493},{144,11,55},{134,10,1721},{132,0,768},{4,10,933\r
-},{133,10,880},{7,11,555},{7,11,1316},{7,11,1412},{7,11,1839},{9,11,192},{9,11,\r
-589},{11,11,241},{11,11,676},{11,11,811},{11,11,891},{12,11,140},{12,11,346},{12\r
-,11,479},{13,11,30},{13,11,49},{13,11,381},{14,11,188},{15,11,150},{16,11,76},{\r
-18,11,30},{148,11,52},{4,0,518},{135,0,1136},{6,11,568},{7,11,112},{7,11,1804},{\r
-8,11,362},{8,11,410},{8,11,830},{9,11,514},{11,11,649},{142,11,157},{135,11,673}\r
-,{8,0,689},{137,0,863},{4,0,18},{7,0,145},{7,0,444},{7,0,1278},{8,0,49},{8,0,400\r
-},{9,0,71},{9,0,250},{10,0,459},{12,0,160},{16,0,24},{132,11,625},{140,0,1020},{\r
-4,0,997},{6,0,1946},{6,0,1984},{134,0,1998},{6,11,16},{6,11,158},{7,11,43},{7,11\r
-,129},{7,11,181},{8,11,276},{8,11,377},{10,11,523},{11,11,816},{12,11,455},{13,\r
-11,303},{142,11,135},{133,10,812},{134,0,658},{4,11,1},{7,11,1143},{7,11,1463},{\r
-8,11,61},{9,11,207},{9,11,390},{9,11,467},{139,11,836},{150,11,26},{140,0,106},{\r
-6,0,1827},{10,0,931},{18,0,166},{20,0,114},{4,10,137},{7,10,1178},{7,11,1319},{\r
-135,10,1520},{133,0,1010},{4,11,723},{5,11,895},{7,11,1031},{8,11,199},{8,11,340\r
-},{9,11,153},{9,11,215},{10,11,21},{10,11,59},{10,11,80},{10,11,224},{11,11,229}\r
-,{11,11,652},{12,11,192},{13,11,146},{142,11,91},{132,11,295},{6,11,619},{7,11,\r
-898},{7,11,1092},{8,11,485},{18,11,28},{147,11,116},{137,11,51},{6,10,1661},{7,\r
-10,1975},{7,10,2009},{135,10,2011},{5,11,309},{140,11,211},{5,0,87},{7,0,313},{7\r
-,0,1103},{10,0,208},{10,0,582},{11,0,389},{11,0,813},{12,0,385},{13,0,286},{14,0\r
-,124},{146,0,108},{5,11,125},{8,11,77},{138,11,15},{132,0,267},{133,0,703},{137,\r
-11,155},{133,11,439},{11,11,164},{140,11,76},{9,0,496},{5,10,89},{7,10,1915},{9,\r
-10,185},{9,10,235},{10,10,64},{10,10,270},{10,10,403},{10,10,469},{10,10,529},{\r
-10,10,590},{11,10,140},{11,10,860},{13,10,1},{13,10,422},{14,10,341},{14,10,364}\r
-,{17,10,93},{18,10,113},{19,10,97},{147,10,113},{133,10,695},{135,0,1121},{5,10,\r
-6},{6,10,183},{7,10,680},{7,10,978},{7,10,1013},{7,10,1055},{12,10,230},{13,10,\r
-172},{146,10,29},{4,11,8},{7,11,1152},{7,11,1153},{7,11,1715},{9,11,374},{10,11,\r
-478},{139,11,648},{135,11,1099},{6,10,29},{139,10,63},{4,0,561},{10,0,249},{139,\r
-0,209},{132,0,760},{7,11,799},{138,11,511},{136,11,87},{9,0,154},{140,0,485},{\r
-136,0,255},{132,0,323},{140,0,419},{132,10,311},{134,10,1740},{4,0,368},{135,0,\r
-641},{7,10,170},{8,10,90},{8,10,177},{8,10,415},{11,10,714},{142,10,281},{4,11,\r
-69},{5,11,122},{9,11,656},{138,11,464},{5,11,849},{134,11,1633},{8,0,522},{142,0\r
-,328},{11,10,91},{13,10,129},{15,10,101},{145,10,125},{7,0,562},{8,0,551},{4,10,\r
-494},{6,10,74},{7,10,44},{11,11,499},{12,10,17},{15,10,5},{148,10,11},{4,10,276}\r
-,{133,10,296},{9,0,92},{147,0,91},{4,10,7},{5,10,90},{5,10,158},{6,10,542},{7,10\r
-,221},{7,10,1574},{9,10,490},{10,10,540},{11,10,443},{139,10,757},{6,0,525},{6,0\r
-,1976},{8,0,806},{9,0,876},{140,0,284},{5,11,859},{7,10,588},{7,11,1160},{8,11,\r
-107},{9,10,175},{9,11,291},{9,11,439},{10,10,530},{10,11,663},{11,11,609},{140,\r
-11,197},{7,11,168},{13,11,196},{141,11,237},{139,0,958},{133,0,594},{135,10,580}\r
-,{7,10,88},{136,10,627},{6,0,479},{6,0,562},{7,0,1060},{13,0,6},{5,10,872},{6,10\r
-,57},{7,10,471},{9,10,447},{137,10,454},{136,11,413},{145,11,19},{4,11,117},{6,\r
-11,372},{7,11,1905},{142,11,323},{4,11,722},{139,11,471},{17,0,61},{5,10,31},{\r
-134,10,614},{8,10,330},{140,10,477},{7,10,1200},{138,10,460},{6,10,424},{135,10,\r
-1866},{6,0,1641},{136,0,820},{6,0,1556},{134,0,1618},{9,11,5},{12,11,216},{12,11\r
-,294},{12,11,298},{12,11,400},{12,11,518},{13,11,229},{143,11,139},{15,11,155},{\r
-144,11,79},{4,0,302},{135,0,1766},{5,10,13},{134,10,142},{6,0,148},{7,0,1313},{7\r
-,10,116},{8,10,322},{8,10,755},{9,10,548},{10,10,714},{11,10,884},{141,10,324},{\r
-137,0,676},{9,11,88},{139,11,270},{5,11,12},{7,11,375},{137,11,438},{134,0,1674}\r
-,{7,10,1472},{135,10,1554},{11,0,178},{7,10,1071},{7,10,1541},{7,10,1767},{7,10,\r
-1806},{11,10,162},{11,10,242},{12,10,605},{15,10,26},{144,10,44},{6,0,389},{7,0,\r
-149},{9,0,142},{138,0,94},{140,11,71},{145,10,115},{6,0,8},{7,0,1881},{8,0,91},{\r
-11,11,966},{12,11,287},{13,11,342},{13,11,402},{15,11,110},{143,11,163},{4,11,\r
-258},{136,11,639},{6,11,22},{7,11,903},{138,11,577},{133,11,681},{135,10,1111},{\r
-135,11,1286},{9,0,112},{8,10,1},{138,10,326},{5,10,488},{6,10,527},{7,10,489},{7\r
-,10,1636},{8,10,121},{8,10,144},{8,10,359},{9,10,193},{9,10,241},{9,10,336},{9,\r
-10,882},{11,10,266},{11,10,372},{11,10,944},{12,10,401},{140,10,641},{4,11,664},\r
-{133,11,804},{6,0,747},{134,0,1015},{135,0,1746},{9,10,31},{10,10,244},{10,10,\r
-699},{12,10,149},{141,10,497},{133,10,377},{135,0,24},{6,0,1352},{5,11,32},{145,\r
-10,101},{7,0,1530},{10,0,158},{13,0,13},{13,0,137},{13,0,258},{14,0,111},{14,0,\r
-225},{14,0,253},{14,0,304},{14,0,339},{14,0,417},{146,0,33},{4,0,503},{135,0,\r
-1661},{5,0,130},{6,0,845},{7,0,1314},{9,0,610},{10,0,718},{11,0,601},{11,0,819},\r
-{11,0,946},{140,0,536},{10,0,149},{11,0,280},{142,0,336},{134,0,1401},{135,0,\r
-1946},{8,0,663},{144,0,8},{134,0,1607},{135,10,2023},{4,11,289},{7,11,629},{7,11\r
-,1698},{7,11,1711},{140,11,215},{6,11,450},{136,11,109},{10,0,882},{10,0,883},{\r
-10,0,914},{138,0,928},{133,10,843},{136,11,705},{132,10,554},{133,10,536},{5,0,\r
-417},{9,10,79},{11,10,625},{145,10,7},{7,11,1238},{142,11,37},{4,0,392},{135,0,\r
-1597},{5,0,433},{9,0,633},{11,0,629},{132,10,424},{7,10,336},{136,10,785},{134,\r
-11,355},{6,0,234},{7,0,769},{9,0,18},{138,0,358},{4,10,896},{134,10,1777},{138,\r
-11,323},{7,0,140},{7,0,1950},{8,0,680},{11,0,817},{147,0,88},{7,0,1222},{138,0,\r
-386},{139,11,908},{11,0,249},{12,0,313},{16,0,66},{145,0,26},{134,0,5},{7,10,750\r
-},{9,10,223},{11,10,27},{11,10,466},{12,10,624},{14,10,265},{146,10,61},{134,11,\r
-26},{134,0,1216},{5,0,963},{134,0,1773},{4,11,414},{5,11,467},{9,11,654},{10,11,\r
-451},{12,11,59},{141,11,375},{135,11,17},{4,10,603},{133,10,661},{4,10,11},{6,10\r
-,128},{7,10,231},{7,10,1533},{138,10,725},{135,11,955},{7,0,180},{8,0,509},{136,\r
-0,792},{132,10,476},{132,0,1002},{133,11,538},{135,10,1807},{132,0,931},{7,0,943\r
-},{11,0,614},{140,0,747},{135,0,1837},{9,10,20},{10,10,324},{10,10,807},{139,10,\r
-488},{134,0,641},{6,11,280},{10,11,502},{11,11,344},{140,11,38},{5,11,45},{7,11,\r
-1161},{11,11,448},{11,11,880},{13,11,139},{13,11,407},{15,11,16},{17,11,95},{18,\r
-11,66},{18,11,88},{18,11,123},{149,11,7},{9,0,280},{138,0,134},{22,0,22},{23,0,5\r
-},{151,0,29},{136,11,777},{4,0,90},{5,0,545},{7,0,754},{9,0,186},{10,0,72},{10,0\r
-,782},{11,0,577},{11,0,610},{11,0,960},{12,0,354},{12,0,362},{12,0,595},{4,11,\r
-410},{135,11,521},{135,11,1778},{5,10,112},{6,10,103},{134,10,150},{138,10,356},\r
-{132,0,742},{7,0,151},{9,0,329},{139,0,254},{8,0,853},{8,0,881},{8,0,911},{8,0,\r
-912},{10,0,872},{12,0,741},{12,0,742},{152,0,18},{4,11,573},{136,11,655},{6,0,\r
-921},{134,0,934},{9,0,187},{10,0,36},{11,0,1016},{17,0,44},{146,0,64},{7,0,833},\r
-{136,0,517},{4,0,506},{5,0,295},{135,0,1680},{4,10,708},{8,10,15},{9,10,50},{9,\r
-10,386},{11,10,18},{11,10,529},{140,10,228},{7,0,251},{7,0,1701},{8,0,436},{4,10\r
-,563},{7,10,592},{7,10,637},{7,10,770},{8,10,463},{9,10,60},{9,10,335},{9,10,904\r
-},{10,10,73},{11,10,434},{12,10,585},{13,10,331},{18,10,110},{148,10,60},{132,10\r
-,502},{136,0,584},{6,10,347},{138,10,161},{7,0,987},{9,0,688},{10,0,522},{11,0,\r
-788},{12,0,137},{12,0,566},{14,0,9},{14,0,24},{14,0,64},{7,11,899},{142,11,325},\r
-{4,0,214},{5,0,500},{5,10,102},{6,10,284},{7,10,1079},{7,10,1423},{7,10,1702},{8\r
-,10,470},{9,10,554},{9,10,723},{139,10,333},{7,10,246},{135,10,840},{6,10,10},{8\r
-,10,571},{9,10,739},{143,10,91},{133,10,626},{146,0,195},{134,0,1775},{7,0,389},\r
-{7,0,700},{7,0,940},{8,0,514},{9,0,116},{9,0,535},{10,0,118},{11,0,107},{11,0,\r
-148},{11,0,922},{12,0,254},{12,0,421},{142,0,238},{5,10,18},{6,10,526},{13,10,24\r
-},{13,10,110},{19,10,5},{147,10,44},{132,0,743},{11,0,292},{4,10,309},{5,10,462}\r
-,{7,10,970},{135,10,1097},{22,10,30},{150,10,33},{139,11,338},{135,11,1598},{7,0\r
-,1283},{9,0,227},{11,0,325},{11,0,408},{14,0,180},{146,0,47},{4,0,953},{6,0,1805\r
-},{6,0,1814},{6,0,1862},{140,0,774},{6,11,611},{135,11,1733},{135,11,1464},{5,0,\r
-81},{7,0,146},{7,0,1342},{8,0,53},{8,0,561},{8,0,694},{8,0,754},{9,0,115},{9,0,\r
-179},{9,0,894},{10,0,462},{10,0,813},{11,0,230},{11,0,657},{11,0,699},{11,0,748}\r
-,{12,0,119},{12,0,200},{12,0,283},{142,0,273},{5,0,408},{6,0,789},{6,0,877},{6,0\r
-,1253},{6,0,1413},{137,0,747},{134,10,1704},{135,11,663},{6,0,1910},{6,0,1915},{\r
-6,0,1923},{9,0,913},{9,0,928},{9,0,950},{9,0,954},{9,0,978},{9,0,993},{12,0,812}\r
-,{12,0,819},{12,0,831},{12,0,833},{12,0,838},{12,0,909},{12,0,928},{12,0,931},{\r
-12,0,950},{15,0,186},{15,0,187},{15,0,195},{15,0,196},{15,0,209},{15,0,215},{15,\r
-0,236},{15,0,241},{15,0,249},{15,0,253},{18,0,180},{18,0,221},{18,0,224},{18,0,\r
-227},{18,0,229},{149,0,60},{7,0,1826},{135,0,1938},{11,0,490},{18,0,143},{5,10,\r
-86},{7,10,743},{9,10,85},{10,10,281},{10,10,432},{12,10,251},{13,10,118},{142,10\r
-,378},{5,10,524},{133,10,744},{141,11,442},{10,10,107},{140,10,436},{135,11,503}\r
-,{134,0,1162},{132,10,927},{7,0,30},{8,0,86},{8,0,315},{8,0,700},{9,0,576},{9,0,\r
-858},{10,0,414},{11,0,310},{11,0,888},{11,0,904},{12,0,361},{13,0,248},{13,0,371\r
-},{14,0,142},{12,10,670},{146,10,94},{134,0,721},{4,11,113},{5,11,163},{5,11,735\r
-},{7,11,1009},{7,10,1149},{9,11,9},{9,10,156},{9,11,771},{12,11,90},{13,11,138},\r
-{13,11,410},{143,11,128},{138,0,839},{133,10,778},{137,0,617},{133,10,502},{8,10\r
-,196},{10,10,283},{139,10,406},{6,0,428},{7,0,524},{8,0,169},{8,0,234},{9,0,480}\r
-,{138,0,646},{133,10,855},{134,0,1648},{7,0,1205},{138,0,637},{7,0,1596},{4,11,\r
-935},{133,11,823},{5,11,269},{7,11,434},{7,11,891},{8,11,339},{9,11,702},{11,11,\r
-594},{11,11,718},{145,11,100},{7,11,878},{9,11,485},{141,11,264},{4,0,266},{8,0,\r
-4},{9,0,39},{10,0,166},{11,0,918},{12,0,635},{20,0,10},{22,0,27},{22,0,43},{22,0\r
-,52},{134,11,1713},{7,10,1400},{9,10,446},{138,10,45},{135,11,900},{132,0,862},{\r
-134,0,1554},{135,11,1033},{19,0,16},{147,11,16},{135,11,1208},{7,0,157},{136,0,\r
-279},{6,0,604},{136,0,391},{13,10,455},{15,10,99},{15,10,129},{144,10,68},{135,\r
-10,172},{7,0,945},{11,0,713},{139,0,744},{4,0,973},{10,0,877},{10,0,937},{10,0,\r
-938},{140,0,711},{139,0,1022},{132,10,568},{142,11,143},{4,0,567},{9,0,859},{132\r
-,10,732},{7,0,1846},{136,0,628},{136,10,733},{133,0,762},{4,10,428},{135,10,1789\r
-},{10,0,784},{13,0,191},{7,10,2015},{140,10,665},{133,0,298},{7,0,633},{7,0,905}\r
-,{7,0,909},{7,0,1538},{9,0,767},{140,0,636},{138,10,806},{132,0,795},{139,0,301}\r
-,{135,0,1970},{5,11,625},{135,11,1617},{135,11,275},{7,11,37},{8,11,425},{8,11,\r
-693},{9,11,720},{10,11,380},{10,11,638},{11,11,273},{11,11,307},{11,11,473},{12,\r
-11,61},{143,11,43},{135,11,198},{134,0,1236},{7,0,369},{12,0,644},{12,0,645},{\r
-144,0,90},{19,0,15},{149,0,27},{6,0,71},{7,0,845},{8,0,160},{9,0,318},{6,10,1623\r
-},{134,10,1681},{134,0,1447},{134,0,1255},{138,0,735},{8,0,76},{132,11,168},{6,\r
-10,1748},{8,10,715},{9,10,802},{10,10,46},{10,10,819},{13,10,308},{14,10,351},{\r
-14,10,363},{146,10,67},{135,11,91},{6,0,474},{4,10,63},{133,10,347},{133,10,749}\r
-,{138,0,841},{133,10,366},{6,0,836},{132,11,225},{135,0,1622},{135,10,89},{140,0\r
-,735},{134,0,1601},{138,11,145},{6,0,1390},{137,0,804},{142,0,394},{6,11,15},{7,\r
-11,70},{10,11,240},{147,11,93},{6,0,96},{135,0,1426},{4,0,651},{133,0,289},{7,11\r
-,956},{7,10,977},{7,11,1157},{7,11,1506},{7,11,1606},{7,11,1615},{7,11,1619},{7,\r
-11,1736},{7,11,1775},{8,11,590},{9,11,324},{9,11,736},{9,11,774},{9,11,776},{9,\r
-11,784},{10,11,567},{10,11,708},{11,11,518},{11,11,613},{11,11,695},{11,11,716},\r
-{11,11,739},{11,11,770},{11,11,771},{11,11,848},{11,11,857},{11,11,931},{11,11,\r
-947},{12,11,326},{12,11,387},{12,11,484},{12,11,528},{12,11,552},{12,11,613},{13\r
-,11,189},{13,11,256},{13,11,340},{13,11,432},{13,11,436},{13,11,440},{13,11,454}\r
-,{14,11,174},{14,11,220},{14,11,284},{14,11,390},{145,11,121},{7,0,688},{8,0,35}\r
-,{9,0,511},{10,0,767},{147,0,118},{134,0,667},{4,0,513},{5,10,824},{133,10,941},\r
-{7,10,440},{8,10,230},{139,10,106},{134,0,2034},{135,11,1399},{143,11,66},{135,\r
-11,1529},{4,11,145},{6,11,176},{7,11,395},{9,11,562},{144,11,28},{132,11,501},{\r
-132,0,704},{134,0,1524},{7,0,1078},{134,11,464},{6,11,509},{10,11,82},{20,11,91}\r
-,{151,11,13},{4,0,720},{133,0,306},{133,0,431},{7,0,1196},{4,10,914},{5,10,800},\r
-{133,10,852},{135,11,1189},{10,0,54},{141,10,115},{7,10,564},{142,10,168},{5,0,\r
-464},{6,0,236},{7,0,696},{7,0,914},{7,0,1108},{7,0,1448},{9,0,15},{9,0,564},{10,\r
-0,14},{12,0,565},{13,0,449},{14,0,53},{15,0,13},{16,0,64},{17,0,41},{4,10,918},{\r
-133,10,876},{6,0,1418},{134,10,1764},{4,10,92},{133,10,274},{134,0,907},{4,11,\r
-114},{8,10,501},{9,11,492},{13,11,462},{142,11,215},{4,11,77},{5,11,361},{6,11,\r
-139},{6,11,401},{6,11,404},{7,11,413},{7,11,715},{7,11,1716},{11,11,279},{12,11,\r
-179},{12,11,258},{13,11,244},{142,11,358},{6,0,1767},{12,0,194},{145,0,107},{134\r
-,11,1717},{5,10,743},{142,11,329},{4,10,49},{7,10,280},{135,10,1633},{5,0,840},{\r
-7,11,1061},{8,11,82},{11,11,250},{12,11,420},{141,11,184},{135,11,724},{134,0,\r
-900},{136,10,47},{134,0,1436},{144,11,0},{6,0,675},{7,0,1008},{7,0,1560},{9,0,\r
-642},{11,0,236},{14,0,193},{5,10,272},{5,10,908},{5,10,942},{8,10,197},{9,10,47}\r
-,{11,10,538},{139,10,742},{4,0,68},{5,0,628},{5,0,634},{6,0,386},{7,0,794},{8,0,\r
-273},{9,0,563},{10,0,105},{10,0,171},{11,0,94},{139,0,354},{135,10,1911},{137,10\r
-,891},{4,0,95},{6,0,1297},{6,0,1604},{7,0,416},{139,0,830},{6,11,513},{135,11,\r
-1052},{7,0,731},{13,0,20},{143,0,11},{137,11,899},{10,0,850},{140,0,697},{4,0,\r
-662},{7,11,1417},{12,11,382},{17,11,48},{152,11,12},{133,0,736},{132,0,861},{4,\r
-10,407},{132,10,560},{141,10,490},{6,11,545},{7,11,565},{7,11,1669},{10,11,114},\r
-{11,11,642},{140,11,618},{6,0,871},{134,0,1000},{5,0,864},{10,0,648},{11,0,671},\r
-{15,0,46},{133,11,5},{133,0,928},{11,0,90},{13,0,7},{4,10,475},{11,10,35},{13,10\r
-,71},{13,10,177},{142,10,422},{136,0,332},{135,11,192},{134,0,1055},{136,11,763}\r
-,{11,0,986},{140,0,682},{7,0,76},{8,0,44},{9,0,884},{10,0,580},{11,0,399},{11,0,\r
-894},{143,0,122},{135,11,1237},{135,10,636},{11,0,300},{6,10,222},{7,10,1620},{8\r
-,10,409},{137,10,693},{4,11,87},{5,11,250},{10,11,601},{13,11,298},{13,11,353},{\r
-141,11,376},{5,0,518},{10,0,340},{11,0,175},{149,0,16},{140,0,771},{6,0,1108},{\r
-137,0,831},{132,0,836},{135,0,1852},{4,0,957},{6,0,1804},{8,0,842},{8,0,843},{8,\r
-0,851},{8,0,855},{140,0,767},{135,11,814},{4,11,57},{7,11,1195},{7,11,1438},{7,\r
-11,1548},{7,11,1835},{7,11,1904},{9,11,757},{10,11,604},{139,11,519},{133,10,882\r
-},{138,0,246},{4,0,934},{5,0,202},{8,0,610},{7,11,1897},{12,11,290},{13,11,80},{\r
-13,11,437},{145,11,74},{8,0,96},{9,0,36},{10,0,607},{10,0,804},{10,0,832},{11,0,\r
-423},{11,0,442},{12,0,309},{14,0,199},{15,0,90},{145,0,110},{132,10,426},{7,0,\r
-654},{8,0,240},{6,10,58},{7,10,745},{7,10,1969},{8,10,675},{9,10,479},{9,10,731}\r
-,{10,10,330},{10,10,593},{10,10,817},{11,10,32},{11,10,133},{11,10,221},{145,10,\r
-68},{9,0,13},{9,0,398},{9,0,727},{10,0,75},{10,0,184},{10,0,230},{10,0,564},{10,\r
-0,569},{11,0,973},{12,0,70},{12,0,189},{13,0,57},{141,0,257},{4,11,209},{135,11,\r
-902},{7,0,391},{137,10,538},{134,0,403},{6,11,303},{7,11,335},{7,11,1437},{7,11,\r
-1668},{8,11,553},{8,11,652},{8,11,656},{9,11,558},{11,11,743},{149,11,18},{132,\r
-11,559},{11,0,75},{142,0,267},{6,0,815},{141,11,2},{141,0,366},{137,0,631},{133,\r
-11,1017},{5,0,345},{135,0,1016},{133,11,709},{134,11,1745},{133,10,566},{7,0,952\r
-},{6,10,48},{9,10,139},{10,10,399},{11,10,469},{12,10,634},{141,10,223},{133,0,\r
-673},{9,0,850},{7,11,8},{136,11,206},{6,0,662},{149,0,35},{4,0,287},{133,0,1018}\r
-,{6,10,114},{7,10,1224},{7,10,1556},{136,10,3},{8,10,576},{137,10,267},{4,0,884}\r
-,{5,0,34},{10,0,724},{12,0,444},{13,0,354},{18,0,32},{23,0,24},{23,0,31},{152,0,\r
-5},{133,10,933},{132,11,776},{138,0,151},{136,0,427},{134,0,382},{132,0,329},{9,\r
-0,846},{10,0,827},{138,11,33},{9,0,279},{10,0,407},{14,0,84},{22,0,18},{135,11,\r
-1297},{136,11,406},{132,0,906},{136,0,366},{134,0,843},{134,0,1443},{135,0,1372}\r
-,{138,0,992},{4,0,123},{5,0,605},{7,0,1509},{136,0,36},{132,0,649},{8,11,175},{\r
-10,11,168},{138,11,573},{133,0,767},{134,0,1018},{135,11,1305},{12,10,30},{13,10\r
-,148},{14,10,87},{14,10,182},{16,10,42},{148,10,70},{134,11,607},{4,0,273},{5,0,\r
-658},{133,0,995},{6,0,72},{139,11,174},{10,0,483},{12,0,368},{7,10,56},{7,10,\r
-1989},{8,10,337},{8,10,738},{9,10,600},{13,10,447},{142,10,92},{5,11,784},{138,\r
-10,666},{135,0,1345},{139,11,882},{134,0,1293},{133,0,589},{134,0,1988},{5,0,117\r
-},{6,0,514},{6,0,541},{7,0,1164},{7,0,1436},{8,0,220},{8,0,648},{10,0,688},{139,\r
-0,560},{136,0,379},{5,0,686},{7,10,866},{135,10,1163},{132,10,328},{9,11,14},{9,\r
-11,441},{10,11,306},{139,11,9},{4,10,101},{135,10,1171},{5,10,833},{136,10,744},\r
-{5,11,161},{7,11,839},{135,11,887},{7,0,196},{10,0,765},{11,0,347},{11,0,552},{\r
-11,0,790},{12,0,263},{13,0,246},{13,0,270},{13,0,395},{14,0,176},{14,0,190},{14,\r
-0,398},{14,0,412},{15,0,32},{15,0,63},{16,0,88},{147,0,105},{6,10,9},{6,10,397},\r
-{7,10,53},{7,10,1742},{10,10,632},{11,10,828},{140,10,146},{5,0,381},{135,0,1792\r
-},{134,0,1452},{135,11,429},{8,0,367},{10,0,760},{14,0,79},{20,0,17},{152,0,0},{\r
-7,0,616},{138,0,413},{11,10,417},{12,10,223},{140,10,265},{7,11,1611},{13,11,14}\r
-,{15,11,44},{19,11,13},{148,11,76},{135,0,1229},{6,0,120},{7,0,1188},{7,0,1710},\r
-{8,0,286},{9,0,667},{11,0,592},{139,0,730},{135,11,1814},{135,0,1146},{4,10,186}\r
-,{5,10,157},{8,10,168},{138,10,6},{4,0,352},{135,0,687},{4,0,192},{5,0,49},{6,0,\r
-200},{6,0,293},{6,0,1696},{135,0,1151},{133,10,875},{5,10,773},{5,10,991},{6,10,\r
-1635},{134,10,1788},{7,10,111},{136,10,581},{6,0,935},{134,0,1151},{134,0,1050},\r
-{132,0,650},{132,0,147},{11,0,194},{12,0,62},{12,0,88},{11,11,194},{12,11,62},{\r
-140,11,88},{6,0,339},{135,0,923},{134,10,1747},{7,11,643},{136,11,236},{133,0,\r
-934},{7,10,1364},{7,10,1907},{141,10,158},{132,10,659},{4,10,404},{135,10,675},{\r
-7,11,581},{9,11,644},{137,11,699},{13,0,211},{14,0,133},{14,0,204},{15,0,64},{15\r
-,0,69},{15,0,114},{16,0,10},{19,0,23},{19,0,35},{19,0,39},{19,0,51},{19,0,71},{\r
-19,0,75},{152,0,15},{133,10,391},{5,11,54},{135,11,1513},{7,0,222},{8,0,341},{5,\r
-10,540},{134,10,1697},{134,10,78},{132,11,744},{136,0,293},{137,11,701},{7,11,\r
-930},{10,11,402},{10,11,476},{13,11,452},{18,11,55},{147,11,104},{132,0,637},{\r
-133,10,460},{8,11,50},{137,11,624},{132,11,572},{134,0,1159},{4,10,199},{139,10,\r
-34},{134,0,847},{134,10,388},{6,11,43},{7,11,38},{8,11,248},{9,11,504},{138,11,\r
-513},{9,0,683},{4,10,511},{6,10,608},{9,10,333},{10,10,602},{11,10,441},{11,10,\r
-723},{11,10,976},{140,10,357},{9,0,867},{138,0,837},{6,0,944},{135,11,326},{135,\r
-0,1809},{5,10,938},{7,11,783},{136,10,707},{133,11,766},{133,11,363},{6,0,170},{\r
-7,0,1080},{8,0,395},{8,0,487},{141,0,147},{6,11,258},{140,11,409},{4,0,535},{8,0\r
-,618},{5,11,249},{148,11,82},{6,0,1379},{149,11,15},{135,0,1625},{150,0,23},{5,\r
-11,393},{6,11,378},{7,11,1981},{9,11,32},{9,11,591},{10,11,685},{10,11,741},{142\r
-,11,382},{133,11,788},{7,11,1968},{10,11,19},{139,11,911},{7,11,1401},{135,11,\r
-1476},{4,11,61},{5,11,58},{5,11,171},{5,11,635},{5,11,683},{5,11,700},{6,11,291}\r
-,{6,11,566},{7,11,1650},{11,11,523},{12,11,273},{12,11,303},{15,11,39},{143,11,\r
-111},{6,10,469},{7,10,1709},{138,10,515},{4,0,778},{134,11,589},{132,0,46},{5,0,\r
-811},{6,0,1679},{6,0,1714},{135,0,2032},{7,0,1458},{9,0,407},{11,0,15},{12,0,651\r
-},{149,0,37},{7,0,938},{132,10,500},{6,0,34},{7,0,69},{7,0,1089},{7,0,1281},{8,0\r
-,708},{8,0,721},{9,0,363},{148,0,98},{10,11,231},{147,11,124},{7,11,726},{152,11\r
-,9},{5,10,68},{134,10,383},{136,11,583},{4,11,917},{133,11,1005},{11,10,216},{\r
-139,10,340},{135,11,1675},{8,0,441},{10,0,314},{143,0,3},{132,11,919},{4,10,337}\r
-,{6,10,353},{7,10,1934},{8,10,488},{137,10,429},{7,0,889},{7,10,1795},{8,10,259}\r
-,{9,10,135},{9,10,177},{9,10,860},{10,10,825},{11,10,115},{11,10,370},{11,10,405\r
-},{11,10,604},{12,10,10},{12,10,667},{12,10,669},{13,10,76},{14,10,310},{15,10,\r
-76},{15,10,147},{148,10,23},{4,10,15},{4,11,255},{5,10,22},{5,11,302},{6,11,132}\r
-,{6,10,244},{7,10,40},{7,11,128},{7,10,200},{7,11,283},{7,10,906},{7,10,1199},{7\r
-,11,1299},{9,10,616},{10,11,52},{10,11,514},{10,10,716},{11,10,635},{11,10,801},\r
-{11,11,925},{12,10,458},{13,11,92},{142,11,309},{132,0,462},{137,11,173},{135,10\r
-,1735},{8,0,525},{5,10,598},{7,10,791},{8,10,108},{137,10,123},{5,0,73},{6,0,23}\r
-,{134,0,338},{132,0,676},{132,10,683},{7,0,725},{8,0,498},{139,0,268},{12,0,21},\r
-{151,0,7},{135,0,773},{4,10,155},{135,10,1689},{4,0,164},{5,0,730},{5,10,151},{5\r
-,10,741},{6,11,210},{7,10,498},{7,10,870},{7,10,1542},{12,10,213},{14,10,36},{14\r
-,10,391},{17,10,111},{18,10,6},{18,10,46},{18,10,151},{19,10,36},{20,10,32},{20,\r
-10,56},{20,10,69},{20,10,102},{21,10,4},{22,10,8},{22,10,10},{22,10,14},{150,10,\r
-31},{4,10,624},{135,10,1752},{4,0,583},{9,0,936},{15,0,214},{18,0,199},{24,0,26}\r
-,{134,11,588},{7,0,1462},{11,0,659},{4,11,284},{134,11,223},{133,0,220},{139,0,\r
-803},{132,0,544},{4,10,492},{133,10,451},{16,0,98},{148,0,119},{4,11,218},{7,11,\r
-526},{143,11,137},{135,10,835},{4,11,270},{5,11,192},{6,11,332},{7,11,1322},{13,\r
-11,9},{13,10,70},{14,11,104},{142,11,311},{132,10,539},{140,11,661},{5,0,176},{6\r
-,0,437},{6,0,564},{11,0,181},{141,0,183},{135,0,1192},{6,10,113},{135,10,436},{\r
-136,10,718},{135,10,520},{135,0,1878},{140,11,196},{7,11,379},{8,11,481},{137,11\r
-,377},{5,11,1003},{6,11,149},{137,11,746},{8,11,262},{9,11,627},{10,11,18},{11,\r
-11,214},{11,11,404},{11,11,457},{11,11,780},{11,11,849},{11,11,913},{13,11,330},\r
-{13,11,401},{142,11,200},{149,0,26},{136,11,304},{132,11,142},{135,0,944},{4,0,\r
-790},{5,0,273},{134,0,394},{134,0,855},{4,0,135},{6,0,127},{7,0,1185},{7,0,1511}\r
-,{8,0,613},{11,0,5},{12,0,336},{12,0,495},{12,0,586},{12,0,660},{12,0,668},{14,0\r
-,385},{15,0,118},{17,0,20},{146,0,98},{6,0,230},{9,0,752},{18,0,109},{12,10,610}\r
-,{13,10,431},{144,10,59},{7,0,1954},{135,11,925},{4,11,471},{5,11,51},{6,11,602}\r
-,{8,11,484},{10,11,195},{140,11,159},{132,10,307},{136,11,688},{132,11,697},{7,\r
-11,812},{7,11,1261},{7,11,1360},{9,11,632},{140,11,352},{5,0,162},{8,0,68},{133,\r
-10,964},{4,0,654},{136,11,212},{4,0,156},{7,0,998},{7,0,1045},{7,0,1860},{9,0,48\r
-},{9,0,692},{11,0,419},{139,0,602},{133,11,221},{4,11,373},{5,11,283},{6,11,480}\r
-,{135,11,609},{142,11,216},{132,0,240},{6,11,192},{9,11,793},{145,11,55},{4,10,\r
-75},{5,10,180},{6,10,500},{7,10,58},{7,10,710},{138,10,645},{4,11,132},{5,11,69}\r
-,{5,10,649},{135,11,1242},{6,10,276},{7,10,282},{7,10,879},{7,10,924},{8,10,459}\r
-,{9,10,599},{9,10,754},{11,10,574},{12,10,128},{12,10,494},{13,10,52},{13,10,301\r
-},{15,10,30},{143,10,132},{132,10,200},{4,11,111},{135,11,302},{9,0,197},{10,0,\r
-300},{12,0,473},{13,0,90},{141,0,405},{132,11,767},{6,11,42},{7,11,1416},{7,11,\r
-1590},{7,11,2005},{8,11,131},{8,11,466},{9,11,672},{13,11,252},{148,11,103},{8,0\r
-,958},{8,0,999},{10,0,963},{138,0,1001},{135,10,1621},{135,0,858},{4,0,606},{137\r
-,11,444},{6,11,44},{136,11,368},{139,11,172},{4,11,570},{133,11,120},{139,11,624\r
-},{7,0,1978},{8,0,676},{6,10,225},{137,10,211},{7,0,972},{11,0,102},{136,10,687}\r
-,{6,11,227},{135,11,1589},{8,10,58},{9,10,724},{11,10,809},{13,10,113},{145,10,\r
-72},{4,0,361},{133,0,315},{132,0,461},{6,10,345},{135,10,1247},{132,0,472},{8,10\r
-,767},{8,10,803},{9,10,301},{137,10,903},{135,11,1333},{135,11,477},{7,10,1949},\r
-{136,10,674},{6,0,905},{138,0,747},{133,0,155},{134,10,259},{7,0,163},{8,0,319},\r
-{9,0,402},{10,0,24},{10,0,681},{11,0,200},{12,0,253},{12,0,410},{142,0,219},{5,0\r
-,475},{7,0,1780},{9,0,230},{11,0,297},{11,0,558},{14,0,322},{19,0,76},{6,11,1667\r
-},{7,11,2036},{138,11,600},{136,10,254},{6,0,848},{135,0,1956},{6,11,511},{140,\r
-11,132},{5,11,568},{6,11,138},{135,11,1293},{6,0,631},{137,0,838},{149,0,36},{4,\r
-11,565},{8,11,23},{136,11,827},{5,0,944},{134,0,1769},{4,0,144},{6,0,842},{6,0,\r
-1400},{4,11,922},{133,11,1023},{133,10,248},{9,10,800},{10,10,693},{11,10,482},{\r
-11,10,734},{139,10,789},{7,11,1002},{139,11,145},{4,10,116},{5,10,95},{5,10,445}\r
-,{7,10,1688},{8,10,29},{9,10,272},{11,10,509},{139,10,915},{14,0,369},{146,0,72}\r
-,{135,10,1641},{132,11,740},{133,10,543},{140,11,116},{6,0,247},{9,0,555},{5,10,\r
-181},{136,10,41},{133,10,657},{136,0,996},{138,10,709},{7,0,189},{8,10,202},{138\r
-,10,536},{136,11,402},{4,11,716},{141,11,31},{10,0,280},{138,0,797},{9,10,423},{\r
-140,10,89},{8,10,113},{9,10,877},{10,10,554},{11,10,83},{12,10,136},{147,10,109}\r
-,{133,10,976},{7,0,746},{132,10,206},{136,0,526},{139,0,345},{136,0,1017},{8,11,\r
-152},{9,11,53},{9,11,268},{9,11,901},{10,11,518},{10,11,829},{11,11,188},{13,11,\r
-74},{14,11,46},{15,11,17},{15,11,33},{17,11,40},{18,11,36},{19,11,20},{22,11,1},\r
-{152,11,2},{133,11,736},{136,11,532},{5,0,428},{138,0,651},{135,11,681},{135,0,\r
-1162},{7,0,327},{13,0,230},{17,0,113},{8,10,226},{10,10,537},{11,10,570},{11,10,\r
-605},{11,10,799},{11,10,804},{12,10,85},{12,10,516},{12,10,623},{12,11,677},{13,\r
-10,361},{14,10,77},{14,10,78},{147,10,110},{4,0,792},{7,0,1717},{10,0,546},{132,\r
-10,769},{4,11,684},{136,11,384},{132,10,551},{134,0,1203},{9,10,57},{9,10,459},{\r
-10,10,425},{11,10,119},{12,10,184},{12,10,371},{13,10,358},{145,10,51},{5,0,672}\r
-,{5,10,814},{8,10,10},{9,10,421},{9,10,729},{10,10,609},{139,10,689},{138,0,189}\r
-,{134,10,624},{7,11,110},{7,11,188},{8,11,290},{8,11,591},{9,11,382},{9,11,649},\r
-{11,11,71},{11,11,155},{11,11,313},{12,11,5},{13,11,325},{142,11,287},{133,0,99}\r
-,{6,0,1053},{135,0,298},{7,11,360},{7,11,425},{9,11,66},{9,11,278},{138,11,644},\r
-{4,0,397},{136,0,555},{137,10,269},{132,10,528},{4,11,900},{133,11,861},{6,0,\r
-1157},{5,11,254},{7,11,985},{136,11,73},{7,11,1959},{136,11,683},{12,0,398},{20,\r
-0,39},{21,0,11},{150,0,41},{4,0,485},{7,0,353},{135,0,1523},{6,0,366},{7,0,1384}\r
-,{135,0,1601},{138,0,787},{137,0,282},{5,10,104},{6,10,173},{135,10,1631},{139,\r
-11,146},{4,0,157},{133,0,471},{134,0,941},{132,11,725},{7,0,1336},{8,10,138},{8,\r
-10,342},{9,10,84},{10,10,193},{11,10,883},{140,10,359},{134,11,196},{136,0,116},\r
-{133,11,831},{134,0,787},{134,10,95},{6,10,406},{10,10,409},{10,10,447},{11,10,\r
-44},{140,10,100},{5,0,160},{7,0,363},{7,0,589},{10,0,170},{141,0,55},{134,0,1815\r
-},{132,0,866},{6,0,889},{6,0,1067},{6,0,1183},{4,11,321},{134,11,569},{5,11,848}\r
-,{134,11,66},{4,11,36},{6,10,1636},{7,11,1387},{10,11,205},{11,11,755},{141,11,\r
-271},{132,0,689},{9,0,820},{4,10,282},{7,10,1034},{11,10,398},{11,10,634},{12,10\r
-,1},{12,10,79},{12,10,544},{14,10,237},{17,10,10},{146,10,20},{4,0,108},{7,0,804\r
-},{139,0,498},{132,11,887},{6,0,1119},{135,11,620},{6,11,165},{138,11,388},{5,0,\r
-244},{5,10,499},{6,10,476},{7,10,600},{7,10,888},{135,10,1096},{140,0,609},{135,\r
-0,1005},{4,0,412},{133,0,581},{4,11,719},{135,11,155},{7,10,296},{7,10,596},{8,\r
-10,560},{8,10,586},{9,10,612},{11,10,304},{12,10,46},{13,10,89},{14,10,112},{145\r
-,10,122},{4,0,895},{133,0,772},{142,11,307},{135,0,1898},{4,0,926},{133,0,983},{\r
-4,11,353},{6,11,146},{6,11,1789},{7,11,288},{7,11,990},{7,11,1348},{9,11,665},{9\r
-,11,898},{11,11,893},{142,11,212},{132,0,538},{133,11,532},{6,0,294},{7,0,1267},\r
-{8,0,624},{141,0,496},{7,0,1325},{4,11,45},{135,11,1257},{138,0,301},{9,0,298},{\r
-12,0,291},{13,0,276},{14,0,6},{17,0,18},{21,0,32},{7,10,1599},{7,10,1723},{8,10,\r
-79},{8,10,106},{8,10,190},{8,10,302},{8,10,383},{8,10,713},{9,10,119},{9,10,233}\r
-,{9,10,419},{9,10,471},{10,10,181},{10,10,406},{11,10,57},{11,10,85},{11,10,120}\r
-,{11,10,177},{11,10,296},{11,10,382},{11,10,454},{11,10,758},{11,10,999},{12,10,\r
-27},{12,10,131},{12,10,245},{12,10,312},{12,10,446},{12,10,454},{13,10,98},{13,\r
-10,426},{13,10,508},{14,10,163},{14,10,272},{14,10,277},{14,10,370},{15,10,95},{\r
-15,10,138},{15,10,167},{17,10,38},{148,10,96},{132,0,757},{134,0,1263},{4,0,820}\r
-,{134,10,1759},{133,0,722},{136,11,816},{138,10,372},{145,10,16},{134,0,1039},{4\r
-,0,991},{134,0,2028},{133,10,258},{7,0,1875},{139,0,124},{6,11,559},{6,11,1691},\r
-{135,11,586},{5,0,324},{7,0,881},{8,10,134},{9,10,788},{140,10,438},{7,11,1823},\r
-{139,11,693},{6,0,1348},{134,0,1545},{134,0,911},{132,0,954},{8,0,329},{8,0,414}\r
-,{7,10,1948},{135,10,2004},{5,0,517},{6,10,439},{7,10,780},{135,10,1040},{132,0,\r
-816},{5,10,1},{6,10,81},{138,10,520},{9,0,713},{10,0,222},{5,10,482},{8,10,98},{\r
-10,10,700},{10,10,822},{11,10,302},{11,10,778},{12,10,50},{12,10,127},{12,10,396\r
-},{13,10,62},{13,10,328},{14,10,122},{147,10,72},{137,0,33},{5,10,2},{7,10,1494}\r
-,{136,10,589},{6,10,512},{7,10,797},{8,10,253},{9,10,77},{10,10,1},{10,11,108},{\r
-10,10,129},{10,10,225},{11,11,116},{11,10,118},{11,10,226},{11,10,251},{11,10,\r
-430},{11,10,701},{11,10,974},{11,10,982},{12,10,64},{12,10,260},{12,10,488},{140\r
-,10,690},{134,11,456},{133,11,925},{5,0,150},{7,0,106},{7,0,774},{8,0,603},{9,0,\r
-593},{9,0,634},{10,0,44},{10,0,173},{11,0,462},{11,0,515},{13,0,216},{13,0,288},\r
-{142,0,400},{137,10,347},{5,0,748},{134,0,553},{12,0,108},{141,0,291},{7,0,420},\r
-{4,10,12},{7,10,522},{7,10,809},{8,10,797},{141,10,88},{6,11,193},{7,11,240},{7,\r
-11,1682},{10,11,51},{10,11,640},{11,11,410},{13,11,82},{14,11,247},{14,11,331},{\r
-142,11,377},{133,10,528},{135,0,1777},{4,0,493},{144,0,55},{136,11,633},{139,0,\r
-81},{6,0,980},{136,0,321},{148,10,109},{5,10,266},{9,10,290},{9,10,364},{10,10,\r
-293},{11,10,606},{142,10,45},{6,0,568},{7,0,112},{7,0,1804},{8,0,362},{8,0,410},\r
-{8,0,830},{9,0,514},{11,0,649},{142,0,157},{4,0,74},{6,0,510},{6,10,594},{9,10,\r
-121},{10,10,49},{10,10,412},{139,10,834},{134,0,838},{136,10,748},{132,10,466},{\r
-132,0,625},{135,11,1443},{4,11,237},{135,11,514},{9,10,378},{141,10,162},{6,0,16\r
-},{6,0,158},{7,0,43},{7,0,129},{7,0,181},{8,0,276},{8,0,377},{10,0,523},{11,0,\r
-816},{12,0,455},{13,0,303},{142,0,135},{135,0,281},{4,0,1},{7,0,1143},{7,0,1463}\r
-,{8,0,61},{9,0,207},{9,0,390},{9,0,467},{139,0,836},{6,11,392},{7,11,65},{135,11\r
-,2019},{132,10,667},{4,0,723},{5,0,895},{7,0,1031},{8,0,199},{8,0,340},{9,0,153}\r
-,{9,0,215},{10,0,21},{10,0,59},{10,0,80},{10,0,224},{10,0,838},{11,0,229},{11,0,\r
-652},{12,0,192},{13,0,146},{142,0,91},{132,0,295},{137,0,51},{9,11,222},{10,11,\r
-43},{139,11,900},{5,0,309},{140,0,211},{5,0,125},{8,0,77},{138,0,15},{136,11,604\r
-},{138,0,789},{5,0,173},{4,10,39},{7,10,1843},{8,10,407},{11,10,144},{140,10,523\r
-},{138,11,265},{133,0,439},{132,10,510},{7,0,648},{7,0,874},{11,0,164},{12,0,76}\r
-,{18,0,9},{7,10,1980},{10,10,487},{138,10,809},{12,0,111},{14,0,294},{19,0,45},{\r
-13,10,260},{146,10,63},{133,11,549},{134,10,570},{4,0,8},{7,0,1152},{7,0,1153},{\r
-7,0,1715},{9,0,374},{10,0,478},{139,0,648},{135,0,1099},{5,0,575},{6,0,354},{135\r
-,0,701},{7,11,36},{8,11,201},{136,11,605},{4,10,787},{136,11,156},{6,0,518},{149\r
-,11,13},{140,11,224},{134,0,702},{132,10,516},{5,11,724},{10,11,305},{11,11,151}\r
-,{12,11,33},{12,11,121},{12,11,381},{17,11,3},{17,11,27},{17,11,78},{18,11,18},{\r
-19,11,54},{149,11,5},{8,0,87},{4,11,523},{5,11,638},{11,10,887},{14,10,365},{142\r
-,10,375},{138,0,438},{136,10,821},{135,11,1908},{6,11,242},{7,11,227},{7,11,1581\r
-},{8,11,104},{9,11,113},{9,11,220},{9,11,427},{10,11,74},{10,11,239},{11,11,579}\r
-,{11,11,1023},{13,11,4},{13,11,204},{13,11,316},{18,11,95},{148,11,86},{4,0,69},\r
-{5,0,122},{5,0,849},{6,0,1633},{9,0,656},{138,0,464},{7,0,1802},{4,10,10},{139,\r
-10,786},{135,11,861},{139,0,499},{7,0,476},{7,0,1592},{138,0,87},{133,10,684},{4\r
-,0,840},{134,10,27},{142,0,283},{6,0,1620},{7,11,1328},{136,11,494},{5,0,859},{7\r
-,0,1160},{8,0,107},{9,0,291},{9,0,439},{10,0,663},{11,0,609},{140,0,197},{7,11,\r
-1306},{8,11,505},{9,11,482},{10,11,126},{11,11,225},{12,11,347},{12,11,449},{13,\r
-11,19},{142,11,218},{5,11,268},{10,11,764},{12,11,120},{13,11,39},{145,11,127},{\r
-145,10,56},{7,11,1672},{10,11,472},{11,11,189},{143,11,51},{6,10,342},{6,10,496}\r
-,{8,10,275},{137,10,206},{133,0,600},{4,0,117},{6,0,372},{7,0,1905},{142,0,323},\r
-{4,10,909},{5,10,940},{135,11,1471},{132,10,891},{4,0,722},{139,0,471},{4,11,384\r
-},{135,11,1022},{132,10,687},{9,0,5},{12,0,216},{12,0,294},{12,0,298},{12,0,400}\r
-,{12,0,518},{13,0,229},{143,0,139},{135,11,1703},{7,11,1602},{10,11,698},{12,11,\r
-212},{141,11,307},{6,10,41},{141,10,160},{135,11,1077},{9,11,159},{11,11,28},{\r
-140,11,603},{4,0,514},{7,0,1304},{138,0,477},{134,0,1774},{9,0,88},{139,0,270},{\r
-5,0,12},{7,0,375},{9,0,438},{134,10,1718},{132,11,515},{136,10,778},{8,11,632},{\r
-8,11,697},{137,11,854},{6,0,362},{6,0,997},{146,0,51},{7,0,816},{7,0,1241},{9,0,\r
-283},{9,0,520},{10,0,213},{10,0,307},{10,0,463},{10,0,671},{10,0,746},{11,0,401}\r
-,{11,0,794},{12,0,517},{18,0,107},{147,0,115},{133,10,115},{150,11,28},{4,11,136\r
-},{133,11,551},{142,10,314},{132,0,258},{6,0,22},{7,0,903},{7,0,1963},{8,0,639},\r
-{138,0,577},{5,0,681},{8,0,782},{13,0,130},{17,0,84},{5,10,193},{140,10,178},{9,\r
-11,17},{138,11,291},{7,11,1287},{9,11,44},{10,11,552},{10,11,642},{11,11,839},{\r
-12,11,274},{12,11,275},{12,11,372},{13,11,91},{142,11,125},{135,10,174},{4,0,664\r
-},{5,0,804},{139,0,1013},{134,0,942},{6,0,1349},{6,0,1353},{6,0,1450},{7,11,1518\r
-},{139,11,694},{11,0,356},{4,10,122},{5,10,796},{5,10,952},{6,10,1660},{6,10,\r
-1671},{8,10,567},{9,10,687},{9,10,742},{10,10,686},{11,10,682},{140,10,281},{5,0\r
-,32},{6,11,147},{7,11,886},{9,11,753},{138,11,268},{5,10,179},{7,10,1095},{135,\r
-10,1213},{4,10,66},{7,10,722},{135,10,904},{135,10,352},{9,11,245},{138,11,137},\r
-{4,0,289},{7,0,629},{7,0,1698},{7,0,1711},{12,0,215},{133,11,414},{6,0,1975},{\r
-135,11,1762},{6,0,450},{136,0,109},{141,10,35},{134,11,599},{136,0,705},{133,0,\r
-664},{134,11,1749},{11,11,402},{12,11,109},{12,11,431},{13,11,179},{13,11,206},{\r
-14,11,175},{14,11,217},{16,11,3},{148,11,53},{135,0,1238},{134,11,1627},{132,11,\r
-488},{13,0,318},{10,10,592},{10,10,753},{12,10,317},{12,10,355},{12,10,465},{12,\r
-10,469},{12,10,560},{140,10,578},{133,10,564},{132,11,83},{140,11,676},{6,0,1872\r
-},{6,0,1906},{6,0,1907},{9,0,934},{9,0,956},{9,0,960},{9,0,996},{12,0,794},{12,0\r
-,876},{12,0,880},{12,0,918},{15,0,230},{18,0,234},{18,0,238},{21,0,38},{149,0,62\r
-},{134,10,556},{134,11,278},{137,0,103},{7,10,544},{8,10,719},{138,10,61},{4,10,\r
-5},{5,10,498},{8,10,637},{137,10,521},{7,0,777},{12,0,229},{12,0,239},{15,0,12},\r
-{12,11,229},{12,11,239},{143,11,12},{6,0,26},{7,11,388},{7,11,644},{139,11,781},\r
-{7,11,229},{8,11,59},{9,11,190},{9,11,257},{10,11,378},{140,11,191},{133,10,927}\r
-,{135,10,1441},{4,10,893},{5,10,780},{133,10,893},{4,0,414},{5,0,467},{9,0,654},\r
-{10,0,451},{12,0,59},{141,0,375},{142,0,173},{135,0,17},{7,0,1350},{133,10,238},\r
-{135,0,955},{4,0,960},{10,0,887},{12,0,753},{18,0,161},{18,0,162},{152,0,19},{\r
-136,11,344},{6,10,1729},{137,11,288},{132,11,660},{4,0,217},{5,0,710},{7,0,760},\r
-{7,0,1926},{9,0,428},{9,0,708},{10,0,254},{10,0,296},{10,0,720},{11,0,109},{11,0\r
-,255},{12,0,165},{12,0,315},{13,0,107},{13,0,203},{14,0,54},{14,0,99},{14,0,114}\r
-,{14,0,388},{16,0,85},{17,0,9},{17,0,33},{20,0,25},{20,0,28},{20,0,29},{21,0,9},\r
-{21,0,10},{21,0,34},{22,0,17},{4,10,60},{7,10,1800},{8,10,314},{9,10,700},{139,\r
-10,487},{7,11,1035},{138,11,737},{7,11,690},{9,11,217},{9,11,587},{140,11,521},{\r
-6,0,919},{7,11,706},{7,11,1058},{138,11,538},{7,10,1853},{138,10,437},{136,10,\r
-419},{6,0,280},{10,0,502},{11,0,344},{140,0,38},{5,0,45},{7,0,1161},{11,0,448},{\r
-11,0,880},{13,0,139},{13,0,407},{15,0,16},{17,0,95},{18,0,66},{18,0,88},{18,0,\r
-123},{149,0,7},{11,11,92},{11,11,196},{11,11,409},{11,11,450},{11,11,666},{11,11\r
-,777},{12,11,262},{13,11,385},{13,11,393},{15,11,115},{16,11,45},{145,11,82},{\r
-136,0,777},{134,11,1744},{4,0,410},{7,0,521},{133,10,828},{134,0,673},{7,0,1110}\r
-,{7,0,1778},{7,10,176},{135,10,178},{5,10,806},{7,11,268},{7,10,1976},{136,11,\r
-569},{4,11,733},{9,11,194},{10,11,92},{11,11,198},{12,11,84},{12,11,87},{13,11,\r
-128},{144,11,74},{5,0,341},{7,0,1129},{11,0,414},{4,10,51},{6,10,4},{7,10,591},{\r
-7,10,849},{7,10,951},{7,10,1613},{7,10,1760},{7,10,1988},{9,10,434},{10,10,754},\r
-{11,10,25},{139,10,37},{133,10,902},{135,10,928},{135,0,787},{132,0,436},{134,10\r
-,270},{7,0,1587},{135,0,1707},{6,0,377},{7,0,1025},{9,0,613},{145,0,104},{7,11,\r
-982},{7,11,1361},{10,11,32},{143,11,56},{139,0,96},{132,0,451},{132,10,416},{142\r
-,10,372},{5,10,152},{5,10,197},{7,11,306},{7,10,340},{7,10,867},{10,10,548},{10,\r
-10,581},{11,10,6},{12,10,3},{12,10,19},{14,10,110},{142,10,289},{134,0,680},{134\r
-,11,609},{7,0,483},{7,10,190},{8,10,28},{8,10,141},{8,10,444},{8,10,811},{9,10,\r
-468},{11,10,334},{12,10,24},{12,10,386},{140,10,576},{10,0,916},{133,10,757},{5,\r
-10,721},{135,10,1553},{133,11,178},{134,0,937},{132,10,898},{133,0,739},{147,0,\r
-82},{135,0,663},{146,0,128},{5,10,277},{141,10,247},{134,0,1087},{132,10,435},{6\r
-,11,381},{7,11,645},{7,11,694},{136,11,546},{7,0,503},{135,0,1885},{6,0,1965},{8\r
-,0,925},{138,0,955},{4,0,113},{5,0,163},{5,0,735},{7,0,1009},{9,0,9},{9,0,771},{\r
-12,0,90},{13,0,138},{13,0,410},{143,0,128},{4,0,324},{138,0,104},{7,0,460},{5,10\r
-,265},{134,10,212},{133,11,105},{7,11,261},{7,11,1107},{7,11,1115},{7,11,1354},{\r
-7,11,1588},{7,11,1705},{7,11,1902},{9,11,465},{10,11,248},{10,11,349},{10,11,647\r
-},{11,11,527},{11,11,660},{11,11,669},{12,11,529},{141,11,305},{5,11,438},{9,11,\r
-694},{12,11,627},{141,11,210},{152,11,11},{4,0,935},{133,0,823},{132,10,702},{5,\r
-0,269},{7,0,434},{7,0,891},{8,0,339},{9,0,702},{11,0,594},{11,0,718},{17,0,100},\r
-{5,10,808},{135,10,2045},{7,0,1014},{9,0,485},{141,0,264},{134,0,1713},{7,0,1810\r
-},{11,0,866},{12,0,103},{13,0,495},{140,11,233},{4,0,423},{10,0,949},{138,0,1013\r
-},{135,0,900},{8,11,25},{138,11,826},{5,10,166},{8,10,739},{140,10,511},{134,0,\r
-2018},{7,11,1270},{139,11,612},{4,10,119},{5,10,170},{5,10,447},{7,10,1708},{7,\r
-10,1889},{9,10,357},{9,10,719},{12,10,486},{140,10,596},{12,0,574},{140,11,574},\r
-{132,11,308},{6,0,964},{6,0,1206},{134,0,1302},{4,10,450},{135,10,1158},{135,11,\r
-150},{136,11,649},{14,0,213},{148,0,38},{9,11,45},{9,11,311},{141,11,42},{134,11\r
-,521},{7,10,1375},{7,10,1466},{138,10,331},{132,10,754},{5,11,339},{7,11,1442},{\r
-14,11,3},{15,11,41},{147,11,66},{136,11,378},{134,0,1022},{5,10,850},{136,10,799\r
-},{142,0,143},{135,0,2029},{134,11,1628},{8,0,523},{150,0,34},{5,0,625},{135,0,\r
-1617},{7,0,275},{7,10,238},{7,10,2033},{8,10,120},{8,10,188},{8,10,659},{9,10,\r
-598},{10,10,466},{12,10,342},{12,10,588},{13,10,503},{14,10,246},{143,10,92},{7,\r
-0,37},{8,0,425},{8,0,693},{9,0,720},{10,0,380},{10,0,638},{11,0,273},{11,0,473},\r
-{12,0,61},{143,0,43},{135,11,829},{135,0,1943},{132,0,765},{5,11,486},{135,11,\r
-1349},{7,11,1635},{8,11,17},{10,11,217},{138,11,295},{4,10,201},{7,10,1744},{8,\r
-10,602},{11,10,247},{11,10,826},{145,10,65},{138,11,558},{11,0,551},{142,0,159},\r
-{8,10,164},{146,10,62},{139,11,176},{132,0,168},{136,0,1010},{134,0,1994},{135,0\r
-,91},{138,0,532},{135,10,1243},{135,0,1884},{132,10,907},{5,10,100},{10,10,329},\r
-{12,10,416},{149,10,29},{134,11,447},{132,10,176},{5,10,636},{5,10,998},{7,10,9}\r
-,{7,10,1508},{8,10,26},{9,10,317},{9,10,358},{10,10,210},{10,10,292},{10,10,533}\r
-,{11,10,555},{12,10,526},{12,10,607},{13,10,263},{13,10,459},{142,10,271},{4,11,\r
-609},{135,11,756},{6,0,15},{7,0,70},{10,0,240},{147,0,93},{4,11,930},{133,11,947\r
-},{134,0,1227},{134,0,1534},{133,11,939},{133,11,962},{5,11,651},{8,11,170},{9,\r
-11,61},{9,11,63},{10,11,23},{10,11,37},{10,11,834},{11,11,4},{11,11,187},{11,11,\r
-281},{11,11,503},{11,11,677},{12,11,96},{12,11,130},{12,11,244},{14,11,5},{14,11\r
-,40},{14,11,162},{14,11,202},{146,11,133},{4,11,406},{5,11,579},{12,11,492},{150\r
-,11,15},{139,0,392},{6,10,610},{10,10,127},{141,10,27},{7,0,655},{7,0,1844},{136\r
-,10,119},{4,0,145},{6,0,176},{7,0,395},{137,0,562},{132,0,501},{140,11,145},{136\r
-,0,1019},{134,0,509},{139,0,267},{6,11,17},{7,11,16},{7,11,1001},{7,11,1982},{9,\r
-11,886},{10,11,489},{10,11,800},{11,11,782},{12,11,320},{13,11,467},{14,11,145},\r
-{14,11,387},{143,11,119},{145,11,17},{6,0,1099},{133,11,458},{7,11,1983},{8,11,0\r
-},{8,11,171},{9,11,120},{9,11,732},{10,11,473},{11,11,656},{11,11,998},{18,11,0}\r
-,{18,11,2},{147,11,21},{12,11,427},{146,11,38},{10,0,948},{138,0,968},{7,10,126}\r
-,{136,10,84},{136,10,790},{4,0,114},{9,0,492},{13,0,462},{142,0,215},{6,10,64},{\r
-12,10,377},{141,10,309},{4,0,77},{5,0,361},{6,0,139},{6,0,401},{6,0,404},{7,0,\r
-413},{7,0,715},{7,0,1716},{11,0,279},{12,0,179},{12,0,258},{13,0,244},{142,0,358\r
-},{134,0,1717},{7,0,772},{7,0,1061},{7,0,1647},{8,0,82},{11,0,250},{11,0,607},{\r
-12,0,311},{12,0,420},{13,0,184},{13,0,367},{7,10,1104},{11,10,269},{11,10,539},{\r
-11,10,627},{11,10,706},{11,10,975},{12,10,248},{12,10,434},{12,10,600},{12,10,\r
-622},{13,10,297},{13,10,485},{14,10,69},{14,10,409},{143,10,108},{135,0,724},{4,\r
-11,512},{4,11,519},{133,11,342},{134,0,1133},{145,11,29},{11,10,977},{141,10,507\r
-},{6,0,841},{6,0,1042},{6,0,1194},{10,0,993},{140,0,1021},{6,11,31},{7,11,491},{\r
-7,11,530},{8,11,592},{9,10,34},{11,11,53},{11,10,484},{11,11,779},{12,11,167},{\r
-12,11,411},{14,11,14},{14,11,136},{15,11,72},{16,11,17},{144,11,72},{4,0,1021},{\r
-6,0,2037},{133,11,907},{7,0,373},{8,0,335},{8,0,596},{9,0,488},{6,10,1700},{7,10\r
-,293},{7,10,382},{7,10,1026},{7,10,1087},{7,10,2027},{8,10,252},{8,10,727},{8,10\r
-,729},{9,10,30},{9,10,199},{9,10,231},{9,10,251},{9,10,334},{9,10,361},{9,10,712\r
-},{10,10,55},{10,10,60},{10,10,232},{10,10,332},{10,10,384},{10,10,396},{10,10,\r
-504},{10,10,542},{10,10,652},{11,10,20},{11,10,48},{11,10,207},{11,10,291},{11,\r
-10,298},{11,10,342},{11,10,365},{11,10,394},{11,10,620},{11,10,705},{11,10,1017}\r
-,{12,10,123},{12,10,340},{12,10,406},{12,10,643},{13,10,61},{13,10,269},{13,10,\r
-311},{13,10,319},{13,10,486},{14,10,234},{15,10,62},{15,10,85},{16,10,71},{18,10\r
-,119},{148,10,105},{150,0,37},{4,11,208},{5,11,106},{6,11,531},{8,11,408},{9,11,\r
-188},{138,11,572},{132,0,564},{6,0,513},{135,0,1052},{132,0,825},{9,0,899},{140,\r
-11,441},{134,0,778},{133,11,379},{7,0,1417},{12,0,382},{17,0,48},{152,0,12},{132\r
-,11,241},{7,0,1116},{6,10,379},{7,10,270},{8,10,176},{8,10,183},{9,10,432},{9,10\r
-,661},{12,10,247},{12,10,617},{146,10,125},{5,10,792},{133,10,900},{6,0,545},{7,\r
-0,565},{7,0,1669},{10,0,114},{11,0,642},{140,0,618},{133,0,5},{138,11,7},{132,11\r
-,259},{135,0,192},{134,0,701},{136,0,763},{135,10,1979},{4,10,901},{133,10,776},\r
-{10,0,755},{147,0,29},{133,0,759},{4,11,173},{5,11,312},{5,11,512},{135,11,1285}\r
-,{7,11,1603},{7,11,1691},{9,11,464},{11,11,195},{12,11,279},{12,11,448},{14,11,\r
-11},{147,11,102},{7,0,370},{7,0,1007},{7,0,1177},{135,0,1565},{135,0,1237},{4,0,\r
-87},{5,0,250},{141,0,298},{4,11,452},{5,11,583},{5,11,817},{6,11,433},{7,11,593}\r
-,{7,11,720},{7,11,1378},{8,11,161},{9,11,284},{10,11,313},{139,11,886},{4,11,547\r
-},{135,11,1409},{136,11,722},{4,10,37},{5,10,334},{135,10,1253},{132,10,508},{12\r
-,0,107},{146,0,31},{8,11,420},{139,11,193},{135,0,814},{135,11,409},{140,0,991},\r
-{4,0,57},{7,0,1195},{7,0,1438},{7,0,1548},{7,0,1835},{7,0,1904},{9,0,757},{10,0,\r
-604},{139,0,519},{132,0,540},{138,11,308},{132,10,533},{136,0,608},{144,11,65},{\r
-4,0,1014},{134,0,2029},{4,0,209},{7,0,902},{5,11,1002},{136,11,745},{134,0,2030}\r
-,{6,0,303},{7,0,335},{7,0,1437},{7,0,1668},{8,0,553},{8,0,652},{8,0,656},{9,0,\r
-558},{11,0,743},{149,0,18},{5,11,575},{6,11,354},{135,11,701},{4,11,239},{6,11,\r
-477},{7,11,1607},{11,11,68},{139,11,617},{132,0,559},{8,0,527},{18,0,60},{147,0,\r
-24},{133,10,920},{138,0,511},{133,0,1017},{133,0,675},{138,10,391},{11,0,156},{\r
-135,10,1952},{138,11,369},{132,11,367},{133,0,709},{6,0,698},{134,0,887},{142,10\r
-,126},{134,0,1745},{132,10,483},{13,11,299},{142,11,75},{133,0,714},{7,0,8},{136\r
-,0,206},{138,10,480},{4,11,694},{9,10,495},{146,10,104},{7,11,1248},{11,11,621},\r
-{139,11,702},{140,11,687},{132,0,776},{139,10,1009},{135,0,1272},{134,0,1059},{8\r
-,10,653},{13,10,93},{147,10,14},{135,11,213},{136,0,406},{133,10,172},{132,0,947\r
-},{8,0,175},{10,0,168},{138,0,573},{132,0,870},{6,0,1567},{151,11,28},{134,11,\r
-472},{5,10,260},{136,11,132},{4,11,751},{11,11,390},{140,11,32},{4,11,409},{133,\r
-11,78},{12,0,554},{6,11,473},{145,11,105},{133,0,784},{8,0,908},{136,11,306},{\r
-139,0,882},{6,0,358},{7,0,1393},{8,0,396},{10,0,263},{14,0,154},{16,0,48},{17,0,\r
-8},{7,11,1759},{8,11,396},{10,11,263},{14,11,154},{16,11,48},{145,11,8},{13,11,\r
-163},{13,11,180},{18,11,78},{148,11,35},{14,0,32},{18,0,85},{20,0,2},{152,0,16},\r
-{7,0,228},{10,0,770},{8,10,167},{8,10,375},{9,10,82},{9,10,561},{138,10,620},{\r
-132,0,845},{9,0,14},{9,0,441},{10,0,306},{139,0,9},{11,0,966},{12,0,287},{13,0,\r
-342},{13,0,402},{15,0,110},{15,0,163},{8,10,194},{136,10,756},{134,0,1578},{4,0,\r
-967},{6,0,1820},{6,0,1847},{140,0,716},{136,0,594},{7,0,1428},{7,0,1640},{7,0,\r
-1867},{9,0,169},{9,0,182},{9,0,367},{9,0,478},{9,0,506},{9,0,551},{9,0,557},{9,0\r
-,648},{9,0,697},{9,0,705},{9,0,725},{9,0,787},{9,0,794},{10,0,198},{10,0,214},{\r
-10,0,267},{10,0,275},{10,0,456},{10,0,551},{10,0,561},{10,0,613},{10,0,627},{10,\r
-0,668},{10,0,675},{10,0,691},{10,0,695},{10,0,707},{10,0,715},{11,0,183},{11,0,\r
-201},{11,0,244},{11,0,262},{11,0,352},{11,0,439},{11,0,493},{11,0,572},{11,0,591\r
-},{11,0,608},{11,0,611},{11,0,646},{11,0,674},{11,0,711},{11,0,751},{11,0,761},{\r
-11,0,776},{11,0,785},{11,0,850},{11,0,853},{11,0,862},{11,0,865},{11,0,868},{11,\r
-0,875},{11,0,898},{11,0,902},{11,0,903},{11,0,910},{11,0,932},{11,0,942},{11,0,\r
-957},{11,0,967},{11,0,972},{12,0,148},{12,0,195},{12,0,220},{12,0,237},{12,0,318\r
-},{12,0,339},{12,0,393},{12,0,445},{12,0,450},{12,0,474},{12,0,505},{12,0,509},{\r
-12,0,533},{12,0,591},{12,0,594},{12,0,597},{12,0,621},{12,0,633},{12,0,642},{13,\r
-0,59},{13,0,60},{13,0,145},{13,0,239},{13,0,250},{13,0,329},{13,0,344},{13,0,365\r
-},{13,0,372},{13,0,387},{13,0,403},{13,0,414},{13,0,456},{13,0,470},{13,0,478},{\r
-13,0,483},{13,0,489},{14,0,55},{14,0,57},{14,0,81},{14,0,90},{14,0,148},{14,0,\r
-239},{14,0,266},{14,0,321},{14,0,326},{14,0,327},{14,0,330},{14,0,347},{14,0,355\r
-},{14,0,401},{14,0,404},{14,0,411},{14,0,414},{14,0,416},{14,0,420},{15,0,61},{\r
-15,0,74},{15,0,87},{15,0,88},{15,0,94},{15,0,96},{15,0,116},{15,0,149},{15,0,154\r
-},{16,0,50},{16,0,63},{16,0,73},{17,0,2},{17,0,66},{17,0,92},{17,0,103},{17,0,\r
-112},{17,0,120},{18,0,50},{18,0,54},{18,0,82},{18,0,86},{18,0,90},{18,0,111},{18\r
-,0,115},{18,0,156},{19,0,40},{19,0,79},{20,0,78},{21,0,22},{135,11,883},{5,0,161\r
-},{135,0,839},{4,0,782},{13,11,293},{142,11,56},{133,11,617},{139,11,50},{135,10\r
-,22},{145,0,64},{5,10,639},{7,10,1249},{139,10,896},{138,0,998},{135,11,2042},{4\r
-,11,546},{142,11,233},{6,0,1043},{134,0,1574},{134,0,1496},{4,10,102},{7,10,815}\r
-,{7,10,1699},{139,10,964},{12,0,781},{142,0,461},{4,11,313},{133,11,577},{6,0,\r
-639},{6,0,1114},{137,0,817},{8,11,184},{141,11,433},{7,0,1814},{135,11,935},{10,\r
-0,997},{140,0,958},{4,0,812},{137,11,625},{132,10,899},{136,10,795},{5,11,886},{\r
-6,11,46},{6,11,1790},{7,11,14},{7,11,732},{7,11,1654},{8,11,95},{8,11,327},{8,11\r
-,616},{10,11,598},{10,11,769},{11,11,134},{11,11,747},{12,11,378},{142,11,97},{\r
-136,0,139},{6,10,52},{9,10,104},{9,10,559},{12,10,308},{147,10,87},{133,11,1021}\r
-,{132,10,604},{132,10,301},{136,10,779},{7,0,643},{136,0,236},{132,11,153},{134,\r
-0,1172},{147,10,32},{133,11,798},{6,0,1338},{132,11,587},{6,11,598},{7,11,42},{8\r
-,11,695},{10,11,212},{11,11,158},{14,11,196},{145,11,85},{135,10,508},{5,11,957}\r
-,{5,11,1008},{135,11,249},{4,11,129},{135,11,465},{5,0,54},{7,11,470},{7,11,1057\r
-},{7,11,1201},{9,11,755},{11,11,906},{140,11,527},{7,11,908},{146,11,7},{5,11,\r
-148},{136,11,450},{144,11,1},{4,0,256},{135,0,1488},{9,0,351},{6,10,310},{7,10,\r
-1849},{8,10,72},{8,10,272},{8,10,431},{9,10,12},{10,10,563},{10,10,630},{10,10,\r
-796},{10,10,810},{11,10,367},{11,10,599},{11,10,686},{140,10,672},{6,0,1885},{6,\r
-0,1898},{6,0,1899},{140,0,955},{4,0,714},{133,0,469},{6,0,1270},{134,0,1456},{\r
-132,0,744},{6,0,313},{7,10,537},{8,10,64},{9,10,127},{10,10,496},{12,10,510},{\r
-141,10,384},{4,11,217},{4,10,244},{5,11,710},{7,10,233},{7,11,1926},{9,11,428},{\r
-9,11,708},{10,11,254},{10,11,296},{10,11,720},{11,11,109},{11,11,255},{12,11,165\r
-},{12,11,315},{13,11,107},{13,11,203},{14,11,54},{14,11,99},{14,11,114},{14,11,\r
-388},{16,11,85},{17,11,9},{17,11,33},{20,11,25},{20,11,28},{20,11,29},{21,11,9},\r
-{21,11,10},{21,11,34},{150,11,17},{138,0,402},{7,0,969},{146,0,55},{8,0,50},{137\r
-,0,624},{134,0,1355},{132,0,572},{134,10,1650},{10,10,702},{139,10,245},{10,0,\r
-847},{142,0,445},{6,0,43},{7,0,38},{8,0,248},{138,0,513},{133,0,369},{137,10,338\r
-},{133,0,766},{133,0,363},{133,10,896},{8,11,392},{11,11,54},{13,11,173},{13,11,\r
-294},{148,11,7},{134,0,678},{7,11,1230},{136,11,531},{6,0,258},{140,0,409},{5,0,\r
-249},{148,0,82},{7,10,1117},{136,10,539},{5,0,393},{6,0,378},{7,0,1981},{9,0,32}\r
-,{9,0,591},{10,0,685},{10,0,741},{142,0,382},{133,0,788},{134,0,1281},{134,0,\r
-1295},{7,0,1968},{141,0,509},{4,0,61},{5,0,58},{5,0,171},{5,0,683},{6,0,291},{6,\r
-0,566},{7,0,1650},{11,0,523},{12,0,273},{12,0,303},{15,0,39},{143,0,111},{6,0,\r
-706},{134,0,1283},{134,0,589},{135,11,1433},{133,11,435},{7,0,1059},{13,0,54},{5\r
-,10,4},{5,10,810},{6,10,13},{6,10,538},{6,10,1690},{6,10,1726},{7,10,1819},{8,10\r
-,148},{8,10,696},{8,10,791},{12,10,125},{143,10,9},{135,10,1268},{5,11,85},{6,11\r
-,419},{7,11,134},{7,11,305},{7,11,361},{7,11,1337},{8,11,71},{140,11,519},{137,0\r
-,824},{140,11,688},{5,11,691},{7,11,345},{7,10,1385},{9,11,94},{11,10,582},{11,\r
-10,650},{11,10,901},{11,10,949},{12,11,169},{12,10,232},{12,10,236},{13,10,413},\r
-{13,10,501},{146,10,116},{4,0,917},{133,0,1005},{7,0,1598},{5,11,183},{6,11,582}\r
-,{9,11,344},{10,11,679},{140,11,435},{4,10,925},{5,10,803},{8,10,698},{138,10,\r
-828},{132,0,919},{135,11,511},{139,10,992},{4,0,255},{5,0,302},{6,0,132},{7,0,\r
-128},{7,0,283},{7,0,1299},{10,0,52},{10,0,514},{11,0,925},{13,0,92},{142,0,309},\r
-{134,0,1369},{135,10,1847},{134,0,328},{7,11,1993},{136,11,684},{133,10,383},{\r
-137,0,173},{134,11,583},{134,0,1411},{19,0,65},{5,11,704},{8,11,357},{10,11,745}\r
-,{14,11,426},{17,11,94},{147,11,57},{9,10,660},{138,10,347},{4,11,179},{5,11,198\r
-},{133,11,697},{7,11,347},{7,11,971},{8,11,181},{138,11,711},{141,0,442},{11,0,\r
-842},{11,0,924},{13,0,317},{13,0,370},{13,0,469},{13,0,471},{14,0,397},{18,0,69}\r
-,{18,0,145},{7,10,572},{9,10,592},{11,10,680},{12,10,356},{140,10,550},{14,11,19\r
-},{14,11,28},{144,11,29},{136,0,534},{4,11,243},{5,11,203},{7,11,19},{7,11,71},{\r
-7,11,113},{10,11,405},{11,11,357},{142,11,240},{6,0,210},{10,0,845},{138,0,862},\r
-{7,11,1351},{9,11,581},{10,11,639},{11,11,453},{140,11,584},{7,11,1450},{139,11,\r
-99},{10,0,892},{12,0,719},{144,0,105},{4,0,284},{6,0,223},{134,11,492},{5,11,134\r
-},{6,11,408},{6,11,495},{135,11,1593},{136,0,529},{137,0,807},{4,0,218},{7,0,526\r
-},{143,0,137},{6,0,1444},{142,11,4},{132,11,665},{4,0,270},{5,0,192},{6,0,332},{\r
-7,0,1322},{4,11,248},{7,11,137},{137,11,349},{140,0,661},{7,0,1517},{11,0,597},{\r
-14,0,76},{14,0,335},{20,0,33},{7,10,748},{139,10,700},{5,11,371},{135,11,563},{\r
-146,11,57},{133,10,127},{133,0,418},{4,11,374},{7,11,547},{7,11,1700},{7,11,1833\r
-},{139,11,858},{6,10,198},{140,10,83},{7,11,1812},{13,11,259},{13,11,356},{14,11\r
-,242},{147,11,114},{7,0,379},{8,0,481},{9,0,377},{5,10,276},{6,10,55},{135,10,\r
-1369},{138,11,286},{5,0,1003},{6,0,149},{6,10,1752},{136,10,726},{8,0,262},{9,0,\r
-627},{10,0,18},{11,0,214},{11,0,404},{11,0,457},{11,0,780},{11,0,913},{13,0,401}\r
-,{14,0,200},{6,11,1647},{7,11,1552},{7,11,2010},{9,11,494},{137,11,509},{135,0,\r
-742},{136,0,304},{132,0,142},{133,10,764},{6,10,309},{7,10,331},{138,10,550},{\r
-135,10,1062},{6,11,123},{7,11,214},{7,10,986},{9,11,728},{10,11,157},{11,11,346}\r
-,{11,11,662},{143,11,106},{135,10,1573},{7,0,925},{137,0,799},{4,0,471},{5,0,51}\r
-,{6,0,602},{8,0,484},{138,0,195},{136,0,688},{132,0,697},{6,0,1169},{6,0,1241},{\r
-6,10,194},{7,10,133},{10,10,493},{10,10,570},{139,10,664},{140,0,751},{7,0,929},\r
-{10,0,452},{11,0,878},{16,0,33},{5,10,24},{5,10,569},{6,10,3},{6,10,119},{6,10,\r
-143},{6,10,440},{7,10,599},{7,10,1686},{7,10,1854},{8,10,424},{9,10,43},{9,10,\r
-584},{9,10,760},{10,10,328},{11,10,159},{11,10,253},{12,10,487},{140,10,531},{4,\r
-11,707},{13,11,106},{18,11,49},{147,11,41},{5,0,221},{5,11,588},{134,11,393},{\r
-134,0,1437},{6,11,211},{7,11,1690},{11,11,486},{140,11,369},{5,10,14},{5,10,892}\r
-,{6,10,283},{7,10,234},{136,10,537},{4,0,988},{136,0,955},{135,0,1251},{4,10,126\r
-},{8,10,635},{147,10,34},{4,10,316},{135,10,1561},{137,10,861},{4,10,64},{5,10,\r
-352},{5,10,720},{6,10,368},{139,10,359},{134,0,192},{4,0,132},{5,0,69},{135,0,\r
-1242},{7,10,1577},{10,10,304},{10,10,549},{12,10,365},{13,10,220},{13,10,240},{\r
-142,10,33},{4,0,111},{7,0,865},{134,11,219},{5,11,582},{6,11,1646},{7,11,99},{7,\r
-11,1962},{7,11,1986},{8,11,515},{8,11,773},{9,11,23},{9,11,491},{12,11,620},{14,\r
-11,52},{145,11,50},{132,0,767},{7,11,568},{148,11,21},{6,0,42},{7,0,1416},{7,0,\r
-2005},{8,0,131},{8,0,466},{9,0,672},{13,0,252},{20,0,103},{133,11,851},{135,0,\r
-1050},{6,10,175},{137,10,289},{5,10,432},{133,10,913},{6,0,44},{136,0,368},{135,\r
-11,784},{132,0,570},{133,0,120},{139,10,595},{140,0,29},{6,0,227},{135,0,1589},{\r
-4,11,98},{7,11,1365},{9,11,422},{9,11,670},{10,11,775},{11,11,210},{13,11,26},{\r
-13,11,457},{141,11,476},{140,10,80},{5,10,931},{134,10,1698},{133,0,522},{134,0,\r
-1120},{135,0,1529},{12,0,739},{14,0,448},{142,0,467},{11,10,526},{11,10,939},{\r
-141,10,290},{5,10,774},{6,10,1637},{6,10,1686},{134,10,1751},{6,0,1667},{135,0,\r
-2036},{7,10,1167},{11,10,934},{13,10,391},{145,10,76},{137,11,147},{6,10,260},{7\r
-,10,1484},{11,11,821},{12,11,110},{12,11,153},{18,11,41},{150,11,19},{6,0,511},{\r
-12,0,132},{134,10,573},{5,0,568},{6,0,138},{135,0,1293},{132,0,1020},{8,0,258},{\r
-9,0,208},{137,0,359},{4,0,565},{8,0,23},{136,0,827},{134,0,344},{4,0,922},{5,0,\r
-1023},{13,11,477},{14,11,120},{148,11,61},{134,0,240},{5,11,209},{6,11,30},{11,\r
-11,56},{139,11,305},{6,0,171},{7,0,1002},{7,0,1324},{9,0,415},{14,0,230},{18,0,\r
-68},{4,10,292},{4,10,736},{5,10,871},{6,10,1689},{7,10,1944},{137,10,580},{9,11,\r
-635},{139,11,559},{4,11,150},{5,11,303},{134,11,327},{6,10,63},{135,10,920},{133\r
-,10,793},{8,11,192},{10,11,78},{10,11,555},{11,11,308},{13,11,359},{147,11,95},{\r
-135,11,786},{135,11,1712},{136,0,402},{6,0,754},{6,11,1638},{7,11,79},{7,11,496}\r
-,{9,11,138},{10,11,336},{11,11,12},{12,11,412},{12,11,440},{142,11,305},{4,0,716\r
-},{141,0,31},{133,0,982},{8,0,691},{8,0,731},{5,10,67},{6,10,62},{6,10,374},{135\r
-,10,1391},{9,10,790},{140,10,47},{139,11,556},{151,11,1},{7,11,204},{7,11,415},{\r
-8,11,42},{10,11,85},{11,11,33},{11,11,564},{12,11,571},{149,11,1},{8,0,888},{7,\r
-11,610},{135,11,1501},{4,10,391},{135,10,1169},{5,0,847},{9,0,840},{138,0,803},{\r
-137,0,823},{134,0,785},{8,0,152},{9,0,53},{9,0,268},{9,0,901},{10,0,518},{10,0,\r
-829},{11,0,188},{13,0,74},{14,0,46},{15,0,17},{15,0,33},{17,0,40},{18,0,36},{19,\r
-0,20},{22,0,1},{152,0,2},{4,11,3},{5,11,247},{5,11,644},{7,11,744},{7,11,1207},{\r
-7,11,1225},{7,11,1909},{146,11,147},{136,0,532},{135,0,681},{132,10,271},{140,0,\r
-314},{140,0,677},{4,0,684},{136,0,384},{5,11,285},{9,11,67},{13,11,473},{143,11,\r
-82},{4,10,253},{5,10,544},{7,10,300},{137,10,340},{7,0,110},{7,0,447},{8,0,290},\r
-{8,0,591},{9,0,382},{9,0,649},{11,0,71},{11,0,155},{11,0,313},{12,0,5},{13,0,325\r
-},{142,0,287},{134,0,1818},{136,0,1007},{138,0,321},{7,0,360},{7,0,425},{9,0,66}\r
-,{9,0,278},{138,0,644},{133,10,818},{5,0,385},{5,10,541},{6,10,94},{6,10,499},{7\r
-,10,230},{139,10,321},{4,10,920},{5,10,25},{5,10,790},{6,10,457},{7,10,853},{136\r
-,10,788},{4,0,900},{133,0,861},{5,0,254},{7,0,985},{136,0,73},{7,0,1959},{136,0,\r
-683},{134,10,1765},{133,10,822},{132,10,634},{4,11,29},{6,11,532},{7,11,1628},{7\r
-,11,1648},{9,11,303},{9,11,350},{10,11,433},{11,11,97},{11,11,557},{11,11,745},{\r
-12,11,289},{12,11,335},{12,11,348},{12,11,606},{13,11,116},{13,11,233},{13,11,\r
-466},{14,11,181},{14,11,209},{14,11,232},{14,11,236},{14,11,300},{16,11,41},{148\r
-,11,97},{19,0,86},{6,10,36},{7,10,658},{136,10,454},{135,11,1692},{132,0,725},{5\r
-,11,501},{7,11,1704},{9,11,553},{11,11,520},{12,11,557},{141,11,249},{134,0,196}\r
-,{133,0,831},{136,0,723},{7,0,1897},{13,0,80},{13,0,437},{145,0,74},{4,0,992},{6\r
-,0,627},{136,0,994},{135,11,1294},{132,10,104},{5,0,848},{6,0,66},{136,0,764},{4\r
-,0,36},{7,0,1387},{10,0,205},{139,0,755},{6,0,1046},{134,0,1485},{134,0,950},{\r
-132,0,887},{14,0,450},{148,0,111},{7,0,620},{7,0,831},{9,10,542},{9,10,566},{138\r
-,10,728},{6,0,165},{138,0,388},{139,10,263},{4,0,719},{135,0,155},{138,10,468},{\r
-6,11,453},{144,11,36},{134,11,129},{5,0,533},{7,0,755},{138,0,780},{134,0,1465},\r
-{4,0,353},{6,0,146},{6,0,1789},{7,0,427},{7,0,990},{7,0,1348},{9,0,665},{9,0,898\r
-},{11,0,893},{142,0,212},{7,10,87},{142,10,288},{4,0,45},{135,0,1257},{12,0,7},{\r
-7,10,988},{7,10,1939},{9,10,64},{9,10,502},{12,10,34},{13,10,12},{13,10,234},{\r
-147,10,77},{4,0,607},{5,11,60},{6,11,504},{7,11,614},{7,11,1155},{140,11,0},{135\r
-,10,141},{8,11,198},{11,11,29},{140,11,534},{140,0,65},{136,0,816},{132,10,619},\r
-{139,0,88},{5,10,246},{8,10,189},{9,10,355},{9,10,512},{10,10,124},{10,10,453},{\r
-11,10,143},{11,10,416},{11,10,859},{141,10,341},{4,11,379},{135,11,1397},{4,0,\r
-600},{137,0,621},{133,0,367},{134,0,561},{6,0,559},{134,0,1691},{6,0,585},{134,\r
-11,585},{135,11,1228},{4,11,118},{5,10,678},{6,11,274},{6,11,361},{7,11,75},{141\r
-,11,441},{135,11,1818},{137,11,841},{5,0,573},{6,0,287},{7,10,862},{7,10,1886},{\r
-138,10,179},{132,10,517},{140,11,693},{5,11,314},{6,11,221},{7,11,419},{10,11,\r
-650},{11,11,396},{12,11,156},{13,11,369},{14,11,333},{145,11,47},{140,10,540},{\r
-136,10,667},{11,10,403},{146,10,83},{6,0,672},{133,10,761},{9,0,157},{10,10,131}\r
-,{140,10,72},{7,0,714},{134,11,460},{134,0,456},{133,0,925},{5,11,682},{135,11,\r
-1887},{136,11,510},{136,11,475},{133,11,1016},{9,0,19},{7,11,602},{8,11,179},{10\r
-,11,781},{140,11,126},{6,11,329},{138,11,111},{6,0,822},{134,0,1473},{144,11,86}\r
-,{11,0,113},{139,11,113},{5,11,821},{134,11,1687},{133,10,449},{7,0,463},{17,0,\r
-69},{136,10,103},{7,10,2028},{138,10,641},{6,0,193},{7,0,240},{7,0,1682},{10,0,\r
-51},{10,0,640},{11,0,410},{13,0,82},{14,0,247},{14,0,331},{142,0,377},{6,0,471},\r
-{11,0,411},{142,0,2},{5,11,71},{7,11,1407},{9,11,388},{9,11,704},{10,11,261},{10\r
-,11,619},{11,11,547},{11,11,619},{143,11,157},{136,0,633},{135,0,1148},{6,0,554}\r
-,{7,0,1392},{12,0,129},{7,10,1274},{7,10,1386},{7,11,2008},{9,11,337},{10,11,517\r
-},{146,10,87},{7,0,803},{8,0,542},{6,10,187},{7,10,1203},{8,10,380},{14,10,117},\r
-{149,10,28},{6,10,297},{7,10,793},{139,10,938},{8,0,438},{11,0,363},{7,10,464},{\r
-11,10,105},{12,10,231},{14,10,386},{15,10,102},{148,10,75},{5,11,16},{6,11,86},{\r
-6,11,603},{7,11,292},{7,11,561},{8,11,257},{8,11,382},{9,11,721},{9,11,778},{11,\r
-11,581},{140,11,466},{6,0,717},{4,11,486},{133,11,491},{132,0,875},{132,11,72},{\r
-6,11,265},{135,11,847},{4,0,237},{135,0,514},{6,0,392},{7,0,65},{135,0,2019},{\r
-140,11,261},{135,11,922},{137,11,404},{12,0,563},{14,0,101},{18,0,129},{7,10,\r
-1010},{11,10,733},{11,10,759},{13,10,34},{146,10,45},{7,10,1656},{9,10,369},{10,\r
-10,338},{10,10,490},{11,10,154},{11,10,545},{11,10,775},{13,10,77},{141,10,274},\r
-{4,0,444},{10,0,146},{140,0,9},{139,11,163},{7,0,1260},{135,0,1790},{9,0,222},{\r
-10,0,43},{139,0,900},{137,11,234},{138,0,971},{137,0,761},{134,0,699},{136,11,\r
-434},{6,0,1116},{7,0,1366},{5,10,20},{6,11,197},{6,10,298},{7,10,659},{8,11,205}\r
-,{137,10,219},{132,11,490},{11,11,820},{150,11,51},{7,10,1440},{11,10,854},{11,\r
-10,872},{11,10,921},{12,10,551},{13,10,472},{142,10,367},{140,11,13},{132,0,829}\r
-,{12,0,242},{132,10,439},{136,10,669},{6,0,593},{6,11,452},{7,11,312},{138,11,\r
-219},{4,11,333},{9,11,176},{12,11,353},{141,11,187},{7,0,36},{8,0,201},{136,0,\r
-605},{140,0,224},{132,10,233},{134,0,1430},{134,0,1806},{4,0,523},{133,0,638},{6\r
-,0,1889},{9,0,958},{9,0,971},{9,0,976},{12,0,796},{12,0,799},{12,0,808},{12,0,\r
-835},{12,0,836},{12,0,914},{12,0,946},{15,0,216},{15,0,232},{18,0,183},{18,0,187\r
-},{18,0,194},{18,0,212},{18,0,232},{149,0,49},{132,10,482},{6,0,827},{134,0,1434\r
-},{135,10,346},{134,0,2043},{6,0,242},{7,0,227},{7,0,1581},{8,0,104},{9,0,113},{\r
-9,0,220},{9,0,427},{10,0,136},{10,0,239},{11,0,579},{11,0,1023},{13,0,4},{13,0,\r
-204},{13,0,316},{148,0,86},{134,11,1685},{7,0,148},{8,0,284},{141,0,63},{142,0,\r
-10},{135,11,584},{134,0,1249},{7,0,861},{135,10,334},{5,10,795},{6,10,1741},{137\r
-,11,70},{132,0,807},{7,11,135},{8,11,7},{8,11,62},{9,11,243},{10,11,658},{10,11,\r
-697},{11,11,456},{139,11,756},{9,11,395},{138,11,79},{137,11,108},{147,0,94},{\r
-136,0,494},{135,11,631},{135,10,622},{7,0,1510},{135,10,1750},{4,10,203},{135,10\r
-,1936},{7,11,406},{7,11,459},{8,11,606},{139,11,726},{7,0,1306},{8,0,505},{9,0,\r
-482},{10,0,126},{11,0,225},{12,0,347},{12,0,449},{13,0,19},{14,0,218},{142,0,435\r
-},{5,0,268},{10,0,764},{12,0,120},{13,0,39},{145,0,127},{142,11,68},{11,10,678},\r
-{140,10,307},{12,11,268},{12,11,640},{142,11,119},{135,10,2044},{133,11,612},{4,\r
-11,372},{7,11,482},{8,11,158},{9,11,602},{9,11,615},{10,11,245},{10,11,678},{10,\r
-11,744},{11,11,248},{139,11,806},{7,10,311},{9,10,308},{140,10,255},{4,0,384},{\r
-135,0,1022},{5,11,854},{135,11,1991},{135,10,1266},{4,10,400},{5,10,267},{135,10\r
-,232},{135,0,1703},{9,0,159},{11,0,661},{140,0,603},{4,0,964},{14,0,438},{14,0,\r
-444},{14,0,456},{22,0,60},{22,0,63},{9,11,106},{9,11,163},{9,11,296},{10,11,167}\r
-,{10,11,172},{10,11,777},{139,11,16},{136,0,583},{132,0,515},{8,0,632},{8,0,697}\r
-,{137,0,854},{5,11,195},{135,11,1685},{6,0,1123},{134,0,1365},{134,11,328},{7,11\r
-,1997},{8,11,730},{139,11,1006},{4,0,136},{133,0,551},{134,0,1782},{7,0,1287},{9\r
-,0,44},{10,0,552},{10,0,642},{11,0,839},{12,0,274},{12,0,275},{12,0,372},{13,0,\r
-91},{142,0,125},{5,11,751},{11,11,797},{140,11,203},{133,0,732},{7,0,679},{8,0,\r
-313},{4,10,100},{135,11,821},{10,0,361},{142,0,316},{134,0,595},{6,0,147},{7,0,\r
-886},{9,0,753},{138,0,268},{5,10,362},{5,10,443},{6,10,318},{7,10,1019},{139,10,\r
-623},{5,10,463},{136,10,296},{4,10,454},{5,11,950},{5,11,994},{134,11,351},{138,\r
-0,137},{5,10,48},{5,10,404},{6,10,557},{7,10,458},{8,10,597},{10,10,455},{10,10,\r
-606},{11,10,49},{11,10,548},{12,10,476},{13,10,18},{141,10,450},{133,0,414},{135\r
-,0,1762},{5,11,421},{135,11,47},{5,10,442},{135,10,1984},{134,0,599},{134,0,1749\r
-},{134,0,1627},{4,0,488},{132,11,350},{137,11,751},{132,0,83},{140,0,676},{133,\r
-11,967},{7,0,1639},{5,10,55},{140,10,161},{4,11,473},{7,11,623},{8,11,808},{9,11\r
-,871},{9,11,893},{11,11,38},{11,11,431},{12,11,112},{12,11,217},{12,11,243},{12,\r
-11,562},{12,11,683},{13,11,141},{13,11,197},{13,11,227},{13,11,406},{13,11,487},\r
-{14,11,156},{14,11,203},{14,11,224},{14,11,256},{18,11,58},{150,11,0},{133,10,\r
-450},{7,11,736},{139,11,264},{134,0,278},{4,11,222},{7,11,286},{136,11,629},{135\r
-,10,869},{140,0,97},{144,0,14},{134,0,1085},{4,10,213},{7,10,223},{136,10,80},{7\r
-,0,388},{7,0,644},{139,0,781},{132,0,849},{7,0,229},{8,0,59},{9,0,190},{10,0,378\r
-},{140,0,191},{7,10,381},{7,10,806},{7,10,820},{8,10,354},{8,10,437},{8,10,787},\r
-{9,10,657},{10,10,58},{10,10,339},{10,10,749},{11,10,914},{12,10,162},{13,10,75}\r
-,{14,10,106},{14,10,198},{14,10,320},{14,10,413},{146,10,43},{141,11,306},{136,\r
-10,747},{134,0,1115},{16,0,94},{16,0,108},{136,11,146},{6,0,700},{6,0,817},{134,\r
-0,1002},{133,10,692},{4,11,465},{135,11,1663},{134,10,191},{6,0,1414},{135,11,\r
-913},{132,0,660},{7,0,1035},{138,0,737},{6,10,162},{7,10,1960},{136,10,831},{132\r
-,10,706},{7,0,690},{9,0,217},{9,0,587},{140,0,521},{138,10,426},{135,10,1235},{6\r
-,11,82},{7,11,138},{7,11,517},{9,11,673},{139,11,238},{138,0,272},{5,11,495},{7,\r
-11,834},{9,11,733},{139,11,378},{134,0,1744},{132,0,1011},{7,11,828},{142,11,116\r
-},{4,0,733},{9,0,194},{10,0,92},{11,0,198},{12,0,84},{13,0,128},{133,11,559},{10\r
-,0,57},{10,0,277},{6,11,21},{6,11,1737},{7,11,1444},{136,11,224},{4,10,204},{137\r
-,10,902},{136,10,833},{11,0,348},{12,0,99},{18,0,1},{18,0,11},{19,0,4},{7,10,366\r
-},{9,10,287},{12,10,199},{12,10,556},{140,10,577},{6,0,1981},{136,0,936},{21,0,\r
-33},{150,0,40},{5,11,519},{138,11,204},{5,10,356},{135,10,224},{134,0,775},{135,\r
-0,306},{7,10,630},{9,10,567},{11,10,150},{11,10,444},{141,10,119},{5,0,979},{134\r
-,10,539},{133,0,611},{4,11,402},{135,11,1679},{5,0,178},{7,11,2},{8,11,323},{136\r
-,11,479},{5,11,59},{135,11,672},{4,0,1010},{6,0,1969},{138,11,237},{133,11,412},\r
-{146,11,34},{7,11,1740},{146,11,48},{134,0,664},{139,10,814},{4,11,85},{135,11,\r
-549},{133,11,94},{133,11,457},{132,0,390},{134,0,1510},{4,10,235},{135,10,255},{\r
-4,10,194},{5,10,584},{6,11,11},{6,10,384},{7,11,187},{7,10,583},{10,10,761},{11,\r
-10,760},{139,10,851},{4,11,522},{139,11,802},{135,0,493},{10,11,776},{13,11,345}\r
-,{142,11,425},{146,0,37},{4,11,52},{135,11,661},{134,0,724},{134,0,829},{133,11,\r
-520},{133,10,562},{4,11,281},{5,11,38},{7,11,194},{7,11,668},{7,11,1893},{137,11\r
-,397},{5,10,191},{137,10,271},{7,0,1537},{14,0,96},{143,0,73},{5,0,473},{11,0,\r
-168},{4,10,470},{6,10,153},{7,10,1503},{7,10,1923},{10,10,701},{11,10,132},{11,\r
-10,227},{11,10,320},{11,10,436},{11,10,525},{11,10,855},{12,10,41},{12,10,286},{\r
-13,10,103},{13,10,284},{14,10,255},{14,10,262},{15,10,117},{143,10,127},{133,0,\r
-105},{5,0,438},{9,0,694},{12,0,627},{141,0,210},{133,10,327},{6,10,552},{7,10,\r
-1754},{137,10,604},{134,0,1256},{152,0,11},{5,11,448},{11,11,98},{139,11,524},{7\r
-,0,1626},{5,10,80},{6,10,405},{7,10,403},{7,10,1502},{8,10,456},{9,10,487},{9,10\r
-,853},{9,10,889},{10,10,309},{11,10,721},{11,10,994},{12,10,430},{13,10,165},{14\r
-,11,16},{146,11,44},{132,0,779},{8,0,25},{138,0,826},{4,10,453},{5,10,887},{6,10\r
-,535},{8,10,6},{8,10,543},{136,10,826},{137,11,461},{140,11,632},{132,0,308},{\r
-135,0,741},{132,0,671},{7,0,150},{8,0,649},{136,0,1020},{9,0,99},{6,11,336},{8,\r
-11,552},{9,11,285},{10,11,99},{139,11,568},{134,0,521},{5,0,339},{14,0,3},{15,0,\r
-41},{15,0,166},{147,0,66},{6,11,423},{7,11,665},{7,11,1210},{9,11,218},{141,11,\r
-222},{6,0,543},{5,10,101},{5,11,256},{6,10,88},{7,10,1677},{9,10,100},{10,10,677\r
-},{14,10,169},{14,10,302},{14,10,313},{15,10,48},{143,10,84},{4,10,310},{7,10,\r
-708},{7,10,996},{9,10,795},{10,10,390},{10,10,733},{11,10,451},{12,10,249},{14,\r
-10,115},{14,10,286},{143,10,100},{133,10,587},{13,11,417},{14,11,129},{143,11,15\r
-},{134,0,1358},{136,11,554},{132,10,498},{7,10,217},{8,10,140},{138,10,610},{135\r
-,11,989},{135,11,634},{6,0,155},{140,0,234},{135,11,462},{132,11,618},{134,0,\r
-1628},{132,0,766},{4,11,339},{5,10,905},{135,11,259},{135,0,829},{4,11,759},{141\r
-,11,169},{7,0,1445},{4,10,456},{7,10,358},{7,10,1637},{8,10,643},{139,10,483},{5\r
-,0,486},{135,0,1349},{5,11,688},{135,11,712},{7,0,1635},{8,0,17},{10,0,217},{10,\r
-0,295},{12,0,2},{140,11,2},{138,0,558},{150,10,56},{4,11,278},{5,11,465},{135,11\r
-,1367},{136,11,482},{133,10,535},{6,0,1362},{6,0,1461},{10,11,274},{10,11,625},{\r
-139,11,530},{5,0,599},{5,11,336},{6,11,341},{6,11,478},{6,11,1763},{136,11,386},\r
-{7,10,1748},{137,11,151},{134,0,1376},{133,10,539},{135,11,73},{135,11,1971},{\r
-139,11,283},{9,0,93},{139,0,474},{6,10,91},{135,10,435},{6,0,447},{5,11,396},{\r
-134,11,501},{4,10,16},{5,10,316},{5,10,842},{6,10,370},{6,10,1778},{8,10,166},{\r
-11,10,812},{12,10,206},{12,10,351},{14,10,418},{16,10,15},{16,10,34},{18,10,3},{\r
-19,10,3},{19,10,7},{20,10,4},{149,10,21},{7,0,577},{7,0,1432},{9,0,475},{9,0,505\r
-},{9,0,526},{9,0,609},{9,0,689},{9,0,726},{9,0,735},{9,0,738},{10,0,556},{10,0,\r
-674},{10,0,684},{11,0,89},{11,0,202},{11,0,272},{11,0,380},{11,0,415},{11,0,505}\r
-,{11,0,537},{11,0,550},{11,0,562},{11,0,640},{11,0,667},{11,0,688},{11,0,847},{\r
-11,0,927},{11,0,930},{11,0,940},{12,0,144},{12,0,325},{12,0,329},{12,0,389},{12,\r
-0,403},{12,0,451},{12,0,515},{12,0,604},{12,0,616},{12,0,626},{13,0,66},{13,0,\r
-131},{13,0,167},{13,0,236},{13,0,368},{13,0,411},{13,0,434},{13,0,453},{13,0,461\r
-},{13,0,474},{14,0,59},{14,0,60},{14,0,139},{14,0,152},{14,0,276},{14,0,353},{14\r
-,0,402},{15,0,28},{15,0,81},{15,0,123},{15,0,152},{18,0,136},{148,0,88},{4,11,\r
-929},{133,11,799},{136,11,46},{142,0,307},{4,0,609},{7,0,756},{9,0,544},{11,0,\r
-413},{144,0,25},{10,0,687},{7,10,619},{10,10,547},{11,10,122},{140,10,601},{4,0,\r
-930},{133,0,947},{133,0,939},{142,0,21},{4,11,892},{133,11,770},{133,0,962},{5,0\r
-,651},{8,0,170},{9,0,61},{9,0,63},{10,0,23},{10,0,37},{10,0,834},{11,0,4},{11,0,\r
-187},{11,0,281},{11,0,503},{11,0,677},{12,0,96},{12,0,130},{12,0,244},{14,0,5},{\r
-14,0,40},{14,0,162},{14,0,202},{146,0,133},{4,0,406},{5,0,579},{12,0,492},{150,0\r
-,15},{135,11,158},{135,0,597},{132,0,981},{132,10,888},{4,10,149},{138,10,368},{\r
-132,0,545},{4,10,154},{7,10,1134},{136,10,105},{135,11,2001},{134,0,1558},{4,10,\r
-31},{6,10,429},{7,10,962},{9,10,458},{139,10,691},{132,10,312},{135,10,1642},{6,\r
-0,17},{6,0,1304},{7,0,16},{7,0,1001},{9,0,886},{10,0,489},{10,0,800},{11,0,782},\r
-{12,0,320},{13,0,467},{14,0,145},{14,0,387},{143,0,119},{135,0,1982},{17,0,17},{\r
-7,11,1461},{140,11,91},{4,10,236},{132,11,602},{138,0,907},{136,0,110},{7,0,272}\r
-,{19,0,53},{5,10,836},{5,10,857},{134,10,1680},{5,0,458},{7,11,1218},{136,11,303\r
-},{7,0,1983},{8,0,0},{8,0,171},{9,0,120},{9,0,732},{10,0,473},{11,0,656},{11,0,\r
-998},{18,0,0},{18,0,2},{19,0,21},{10,10,68},{139,10,494},{137,11,662},{4,11,13},\r
-{5,11,567},{7,11,1498},{9,11,124},{11,11,521},{140,11,405},{4,10,81},{139,10,867\r
-},{135,11,1006},{7,11,800},{7,11,1783},{138,11,12},{9,0,295},{10,0,443},{5,10,\r
-282},{8,10,650},{137,10,907},{132,11,735},{4,11,170},{4,10,775},{135,11,323},{6,\r
-0,1844},{10,0,924},{11,11,844},{12,11,104},{140,11,625},{5,11,304},{7,11,1403},{\r
-140,11,498},{134,0,1232},{4,0,519},{10,0,70},{12,0,26},{14,0,17},{14,0,178},{15,\r
-0,34},{149,0,12},{132,0,993},{4,11,148},{133,11,742},{6,0,31},{7,0,491},{7,0,530\r
-},{8,0,592},{11,0,53},{11,0,779},{12,0,167},{12,0,411},{14,0,14},{14,0,136},{15,\r
-0,72},{16,0,17},{144,0,72},{133,0,907},{134,0,733},{133,11,111},{4,10,71},{5,10,\r
-376},{7,10,119},{138,10,665},{136,0,55},{8,0,430},{136,11,430},{4,0,208},{5,0,\r
-106},{6,0,531},{8,0,408},{9,0,188},{138,0,572},{12,0,56},{11,10,827},{14,10,34},\r
-{143,10,148},{134,0,1693},{133,11,444},{132,10,479},{140,0,441},{9,0,449},{10,0,\r
-192},{138,0,740},{134,0,928},{4,0,241},{7,10,607},{136,10,99},{8,11,123},{15,11,\r
-6},{144,11,7},{6,11,285},{8,11,654},{11,11,749},{12,11,190},{12,11,327},{13,11,\r
-120},{13,11,121},{13,11,327},{15,11,47},{146,11,40},{4,10,41},{5,10,74},{7,10,\r
-1627},{11,10,871},{140,10,619},{7,0,1525},{11,10,329},{11,10,965},{12,10,241},{\r
-14,10,354},{15,10,22},{148,10,63},{132,0,259},{135,11,183},{9,10,209},{137,10,\r
-300},{5,11,937},{135,11,100},{133,10,98},{4,0,173},{5,0,312},{5,0,512},{135,0,\r
-1285},{141,0,185},{7,0,1603},{7,0,1691},{9,0,464},{11,0,195},{12,0,279},{12,0,\r
-448},{14,0,11},{147,0,102},{135,0,1113},{133,10,984},{4,0,452},{5,0,583},{135,0,\r
-720},{4,0,547},{5,0,817},{6,0,433},{7,0,593},{7,0,1378},{8,0,161},{9,0,284},{10,\r
-0,313},{139,0,886},{8,0,722},{4,10,182},{6,10,205},{135,10,220},{150,0,13},{4,10\r
-,42},{9,10,205},{9,10,786},{138,10,659},{6,0,289},{7,0,1670},{12,0,57},{151,0,4}\r
-,{132,10,635},{14,0,43},{146,0,21},{139,10,533},{135,0,1694},{8,0,420},{139,0,\r
-193},{135,0,409},{132,10,371},{4,10,272},{135,10,836},{5,10,825},{134,10,1640},{\r
-5,11,251},{5,11,956},{8,11,268},{9,11,214},{146,11,142},{138,0,308},{6,0,1863},{\r
-141,11,37},{137,10,879},{7,10,317},{135,10,569},{132,11,294},{134,0,790},{5,0,\r
-1002},{136,0,745},{5,11,346},{5,11,711},{136,11,390},{135,0,289},{5,0,504},{11,0\r
-,68},{137,10,307},{4,0,239},{6,0,477},{7,0,1607},{139,0,617},{149,0,13},{133,0,\r
-609},{133,11,624},{5,11,783},{7,11,1998},{135,11,2047},{133,10,525},{132,0,367},\r
-{132,11,594},{6,0,528},{133,10,493},{4,10,174},{135,10,911},{8,10,417},{137,10,\r
-782},{132,0,694},{7,0,548},{137,0,58},{4,10,32},{5,10,215},{6,10,269},{7,10,1782\r
-},{7,10,1892},{10,10,16},{11,10,822},{11,10,954},{141,10,481},{140,0,687},{7,0,\r
-1749},{136,10,477},{132,11,569},{133,10,308},{135,10,1088},{4,0,661},{138,0,1004\r
-},{5,11,37},{6,11,39},{6,11,451},{7,11,218},{7,11,667},{7,11,1166},{7,11,1687},{\r
-8,11,662},{144,11,2},{9,0,445},{12,0,53},{13,0,492},{5,10,126},{8,10,297},{9,10,\r
-366},{140,10,374},{7,10,1551},{139,10,361},{148,0,74},{134,11,508},{135,0,213},{\r
-132,10,175},{132,10,685},{6,0,760},{6,0,834},{134,0,1248},{7,11,453},{7,11,635},\r
-{7,11,796},{8,11,331},{9,11,328},{9,11,330},{9,11,865},{10,11,119},{10,11,235},{\r
-11,11,111},{11,11,129},{11,11,240},{12,11,31},{12,11,66},{12,11,222},{12,11,269}\r
-,{12,11,599},{12,11,689},{13,11,186},{13,11,364},{142,11,345},{7,0,1672},{139,0,\r
-189},{133,10,797},{133,10,565},{6,0,1548},{6,11,98},{7,11,585},{135,11,702},{9,0\r
-,968},{15,0,192},{149,0,56},{4,10,252},{6,11,37},{7,11,299},{7,10,1068},{7,11,\r
-1666},{8,11,195},{8,11,316},{9,11,178},{9,11,276},{9,11,339},{9,11,536},{10,11,\r
-102},{10,11,362},{10,10,434},{10,11,785},{11,11,55},{11,11,149},{11,10,228},{11,\r
-10,426},{11,11,773},{13,10,231},{13,11,416},{13,11,419},{14,11,38},{14,11,41},{\r
-14,11,210},{18,10,106},{148,10,87},{4,0,751},{11,0,390},{140,0,32},{4,0,409},{\r
-133,0,78},{11,11,458},{12,11,15},{140,11,432},{7,0,1602},{10,0,257},{10,0,698},{\r
-11,0,544},{11,0,585},{12,0,212},{13,0,307},{5,10,231},{7,10,601},{9,10,277},{9,\r
-10,674},{10,10,178},{10,10,418},{10,10,509},{11,10,531},{12,10,113},{12,10,475},\r
-{13,10,99},{142,10,428},{6,0,473},{145,0,105},{6,0,1949},{15,0,156},{133,11,645}\r
-,{7,10,1591},{144,10,43},{135,0,1779},{135,10,1683},{4,11,290},{135,11,1356},{\r
-134,0,763},{6,11,70},{7,11,1292},{10,11,762},{139,11,288},{142,0,29},{140,11,428\r
-},{7,0,883},{7,11,131},{7,11,422},{8,11,210},{140,11,573},{134,0,488},{4,10,399}\r
-,{5,10,119},{5,10,494},{7,10,751},{137,10,556},{133,0,617},{132,11,936},{139,0,\r
-50},{7,0,1518},{139,0,694},{137,0,785},{4,0,546},{135,0,2042},{7,11,716},{13,11,\r
-97},{141,11,251},{132,11,653},{145,0,22},{134,0,1016},{4,0,313},{133,0,577},{136\r
-,11,657},{8,0,184},{141,0,433},{135,0,935},{6,0,720},{9,0,114},{146,11,80},{12,0\r
-,186},{12,0,292},{14,0,100},{18,0,70},{7,10,594},{7,10,851},{7,10,1858},{9,10,\r
-411},{9,10,574},{9,10,666},{9,10,737},{10,10,346},{10,10,712},{11,10,246},{11,10\r
-,432},{11,10,517},{11,10,647},{11,10,679},{11,10,727},{12,10,304},{12,10,305},{\r
-12,10,323},{12,10,483},{12,10,572},{12,10,593},{12,10,602},{13,10,95},{13,10,101\r
-},{13,10,171},{13,10,315},{13,10,378},{13,10,425},{13,10,475},{14,10,63},{14,10,\r
-380},{14,10,384},{15,10,133},{18,10,112},{148,10,72},{135,10,1093},{135,11,1836}\r
-,{132,10,679},{137,10,203},{11,0,402},{12,0,109},{12,0,431},{13,0,179},{13,0,206\r
-},{14,0,217},{16,0,3},{148,0,53},{7,11,1368},{8,11,232},{8,11,361},{10,11,682},{\r
-138,11,742},{137,10,714},{5,0,886},{6,0,46},{6,0,1790},{7,0,14},{7,0,732},{7,0,\r
-1654},{8,0,95},{8,0,327},{8,0,616},{9,0,892},{10,0,598},{10,0,769},{11,0,134},{\r
-11,0,747},{12,0,378},{14,0,97},{137,11,534},{4,0,969},{136,10,825},{137,11,27},{\r
-6,0,727},{142,11,12},{133,0,1021},{134,0,1190},{134,11,1657},{5,10,143},{5,10,\r
-769},{6,10,1760},{7,10,682},{7,10,1992},{136,10,736},{132,0,153},{135,11,127},{\r
-133,0,798},{132,0,587},{6,0,598},{7,0,42},{8,0,695},{10,0,212},{11,0,158},{14,0,\r
-196},{145,0,85},{133,10,860},{6,0,1929},{134,0,1933},{5,0,957},{5,0,1008},{9,0,\r
-577},{12,0,141},{6,10,422},{7,10,0},{7,10,1544},{8,11,364},{11,10,990},{12,10,\r
-453},{13,10,47},{141,10,266},{134,0,1319},{4,0,129},{135,0,465},{7,0,470},{7,0,\r
-1057},{7,0,1201},{9,0,755},{11,0,906},{140,0,527},{7,0,908},{146,0,7},{5,0,148},\r
-{136,0,450},{5,10,515},{137,10,131},{7,10,1605},{11,10,962},{146,10,139},{132,10\r
-,646},{134,0,1166},{4,10,396},{7,10,728},{9,10,117},{13,10,202},{148,10,51},{6,\r
-10,121},{6,10,124},{6,10,357},{7,10,1138},{7,10,1295},{8,10,162},{139,10,655},{\r
-14,0,374},{142,11,374},{138,0,253},{139,0,1003},{5,11,909},{9,11,849},{138,11,\r
-805},{133,10,237},{7,11,525},{7,11,1579},{8,11,497},{136,11,573},{137,0,46},{132\r
-,0,879},{134,0,806},{135,0,1868},{6,0,1837},{134,0,1846},{6,0,730},{134,0,881},{\r
-7,0,965},{7,0,1460},{7,0,1604},{7,11,193},{7,11,397},{7,11,1105},{8,11,124},{8,\r
-11,619},{9,11,305},{10,11,264},{11,11,40},{12,11,349},{13,11,134},{13,11,295},{\r
-14,11,155},{15,11,120},{146,11,105},{136,0,506},{143,0,10},{4,11,262},{7,11,342}\r
-,{7,10,571},{7,10,1877},{10,10,366},{141,11,23},{133,11,641},{10,0,22},{9,10,513\r
-},{10,10,39},{12,10,122},{140,10,187},{135,11,1431},{150,11,49},{4,11,99},{6,11,\r
-250},{6,11,346},{8,11,127},{138,11,81},{6,0,2014},{8,0,928},{10,0,960},{10,0,979\r
-},{140,0,996},{134,0,296},{132,11,915},{5,11,75},{9,11,517},{10,11,470},{12,11,\r
-155},{141,11,224},{137,10,873},{4,0,854},{140,11,18},{134,0,587},{7,10,107},{7,\r
-10,838},{8,10,550},{138,10,401},{11,0,636},{15,0,145},{17,0,34},{19,0,50},{23,0,\r
-20},{11,10,588},{11,10,864},{11,10,968},{143,10,160},{135,11,216},{7,0,982},{10,\r
-0,32},{143,0,56},{133,10,768},{133,11,954},{6,11,304},{7,11,1114},{8,11,418},{10\r
-,11,345},{11,11,341},{11,11,675},{141,11,40},{9,11,410},{139,11,425},{136,0,941}\r
-,{5,0,435},{132,10,894},{5,0,85},{6,0,419},{7,0,134},{7,0,305},{7,0,361},{7,0,\r
-1337},{8,0,71},{140,0,519},{140,0,688},{135,0,740},{5,0,691},{7,0,345},{9,0,94},\r
-{140,0,169},{5,0,183},{6,0,582},{10,0,679},{140,0,435},{134,11,14},{6,0,945},{\r
-135,0,511},{134,11,1708},{5,11,113},{6,11,243},{7,11,1865},{11,11,161},{16,11,37\r
-},{145,11,99},{132,11,274},{137,0,539},{7,0,1993},{8,0,684},{134,10,272},{6,0,\r
-659},{134,0,982},{4,10,9},{5,10,128},{7,10,368},{11,10,480},{148,10,3},{134,0,\r
-583},{132,0,803},{133,0,704},{4,0,179},{5,0,198},{133,0,697},{7,0,347},{7,0,971}\r
-,{8,0,181},{10,0,711},{135,11,166},{136,10,682},{4,10,2},{7,10,545},{7,10,894},{\r
-136,11,521},{135,0,481},{132,0,243},{5,0,203},{7,0,19},{7,0,71},{7,0,113},{10,0,\r
-405},{11,0,357},{142,0,240},{5,11,725},{5,11,727},{135,11,1811},{6,0,826},{137,\r
-11,304},{7,0,1450},{139,0,99},{133,11,654},{134,0,492},{5,0,134},{6,0,408},{6,0,\r
-495},{7,0,1593},{6,11,273},{10,11,188},{13,11,377},{146,11,77},{9,10,769},{140,\r
-10,185},{135,11,410},{142,0,4},{4,0,665},{134,11,1785},{4,0,248},{7,0,137},{137,\r
-0,349},{5,10,530},{142,10,113},{7,0,1270},{139,0,612},{132,11,780},{5,0,371},{\r
-135,0,563},{135,0,826},{6,0,1535},{23,0,21},{151,0,23},{4,0,374},{7,0,547},{7,0,\r
-1700},{7,0,1833},{139,0,858},{133,10,556},{7,11,612},{8,11,545},{8,11,568},{8,11\r
-,642},{9,11,717},{10,11,541},{10,11,763},{11,11,449},{12,11,489},{13,11,153},{13\r
-,11,296},{14,11,138},{14,11,392},{15,11,50},{16,11,6},{16,11,12},{148,11,9},{9,0\r
-,311},{141,0,42},{8,10,16},{140,10,568},{6,0,1968},{6,0,2027},{138,0,991},{6,0,\r
-1647},{7,0,1552},{7,0,2010},{9,0,494},{137,0,509},{133,11,948},{6,10,186},{137,\r
-10,426},{134,0,769},{134,0,642},{132,10,585},{6,0,123},{7,0,214},{9,0,728},{10,0\r
-,157},{11,0,346},{11,0,662},{143,0,106},{142,11,381},{135,0,1435},{4,11,532},{5,\r
-11,706},{135,11,662},{5,11,837},{134,11,1651},{4,10,93},{5,10,252},{6,10,229},{7\r
-,10,291},{9,10,550},{139,10,644},{148,0,79},{137,10,749},{134,0,1425},{137,10,\r
-162},{4,11,362},{7,11,52},{7,11,303},{140,11,166},{132,10,381},{4,11,330},{7,11,\r
-933},{7,11,2012},{136,11,292},{135,11,767},{4,0,707},{5,0,588},{6,0,393},{13,0,\r
-106},{18,0,49},{147,0,41},{6,0,211},{7,0,1690},{11,0,486},{140,0,369},{137,11,\r
-883},{4,11,703},{135,11,207},{4,0,187},{5,0,184},{5,0,690},{7,0,1869},{10,0,756}\r
-,{139,0,783},{132,11,571},{134,0,1382},{5,0,175},{6,10,77},{6,10,157},{7,10,974}\r
-,{7,10,1301},{7,10,1339},{7,10,1490},{7,10,1873},{137,10,628},{134,0,1493},{5,11\r
-,873},{133,11,960},{134,0,1007},{12,11,93},{12,11,501},{13,11,362},{14,11,151},{\r
-15,11,40},{15,11,59},{16,11,46},{17,11,25},{18,11,14},{18,11,134},{19,11,25},{19\r
-,11,69},{20,11,16},{20,11,19},{20,11,66},{21,11,23},{21,11,25},{150,11,42},{11,\r
-10,919},{141,10,409},{134,0,219},{5,0,582},{6,0,1646},{7,0,99},{7,0,1962},{7,0,\r
-1986},{8,0,515},{8,0,773},{9,0,23},{9,0,491},{12,0,620},{142,0,93},{133,0,851},{\r
-5,11,33},{134,11,470},{135,11,1291},{134,0,1278},{135,11,1882},{135,10,1489},{\r
-132,0,1000},{138,0,982},{8,0,762},{8,0,812},{137,0,910},{6,11,47},{7,11,90},{7,\r
-11,664},{7,11,830},{7,11,1380},{7,11,2025},{8,11,448},{136,11,828},{4,0,98},{4,0\r
-,940},{6,0,1819},{6,0,1834},{6,0,1841},{7,0,1365},{8,0,859},{8,0,897},{8,0,918},\r
-{9,0,422},{9,0,670},{10,0,775},{10,0,894},{10,0,909},{10,0,910},{10,0,935},{11,0\r
-,210},{12,0,750},{12,0,755},{13,0,26},{13,0,457},{13,0,476},{16,0,100},{16,0,109\r
-},{18,0,173},{18,0,175},{8,10,398},{9,10,681},{139,10,632},{9,11,417},{137,11,\r
-493},{136,10,645},{138,0,906},{134,0,1730},{134,10,20},{133,11,1019},{134,0,1185\r
-},{10,0,40},{136,10,769},{9,0,147},{134,11,208},{140,0,650},{5,0,209},{6,0,30},{\r
-11,0,56},{139,0,305},{132,0,553},{138,11,344},{6,11,68},{7,11,398},{7,11,448},{7\r
-,11,1629},{7,11,1813},{8,11,387},{8,11,442},{9,11,710},{10,11,282},{138,11,722},\r
-{5,0,597},{14,0,20},{142,11,20},{135,0,1614},{135,10,1757},{4,0,150},{5,0,303},{\r
-6,0,327},{135,10,937},{16,0,49},{7,10,1652},{144,11,49},{8,0,192},{10,0,78},{141\r
-,0,359},{135,0,786},{143,0,134},{6,0,1638},{7,0,79},{7,0,496},{9,0,138},{10,0,\r
-336},{11,0,12},{12,0,412},{12,0,440},{142,0,305},{136,11,491},{4,10,579},{5,10,\r
-226},{5,10,323},{135,10,960},{7,0,204},{7,0,415},{8,0,42},{10,0,85},{139,0,564},\r
-{132,0,614},{4,11,403},{5,11,441},{7,11,450},{11,11,101},{12,11,193},{141,11,430\r
-},{135,11,1927},{135,11,1330},{4,0,3},{5,0,247},{5,0,644},{7,0,744},{7,0,1207},{\r
-7,0,1225},{7,0,1909},{146,0,147},{136,0,942},{4,0,1019},{134,0,2023},{5,11,679},\r
-{133,10,973},{5,0,285},{9,0,67},{13,0,473},{143,0,82},{7,11,328},{137,11,326},{\r
-151,0,8},{6,10,135},{135,10,1176},{135,11,1128},{134,0,1309},{135,11,1796},{135,\r
-10,314},{4,11,574},{7,11,350},{7,11,1024},{8,11,338},{9,11,677},{10,11,808},{139\r
-,11,508},{7,11,818},{17,11,14},{17,11,45},{18,11,75},{148,11,18},{146,10,4},{135\r
-,11,1081},{4,0,29},{6,0,532},{7,0,1628},{7,0,1648},{9,0,350},{10,0,433},{11,0,97\r
-},{11,0,557},{11,0,745},{12,0,289},{12,0,335},{12,0,348},{12,0,606},{13,0,116},{\r
-13,0,233},{13,0,466},{14,0,181},{14,0,209},{14,0,232},{14,0,236},{14,0,300},{16,\r
-0,41},{148,0,97},{7,0,318},{6,10,281},{8,10,282},{8,10,480},{8,10,499},{9,10,198\r
-},{10,10,143},{10,10,169},{10,10,211},{10,10,417},{10,10,574},{11,10,147},{11,10\r
-,395},{12,10,75},{12,10,407},{12,10,608},{13,10,500},{142,10,251},{135,11,1676},\r
-{135,11,2037},{135,0,1692},{5,0,501},{7,0,1704},{9,0,553},{11,0,520},{12,0,557},\r
-{141,0,249},{6,0,1527},{14,0,324},{15,0,55},{15,0,80},{14,11,324},{15,11,55},{\r
-143,11,80},{135,10,1776},{8,0,988},{137,11,297},{132,10,419},{142,0,223},{139,11\r
-,234},{7,0,1123},{12,0,508},{14,0,102},{14,0,226},{144,0,57},{4,10,138},{7,10,\r
-1012},{7,10,1280},{137,10,76},{7,0,1764},{5,10,29},{140,10,638},{134,0,2015},{\r
-134,0,1599},{138,11,56},{6,11,306},{7,11,1140},{7,11,1340},{8,11,133},{138,11,\r
-449},{139,11,1011},{6,10,1710},{135,10,2038},{7,11,1763},{140,11,310},{6,0,129},\r
-{4,10,17},{5,10,23},{7,10,995},{11,10,383},{11,10,437},{12,10,460},{140,10,532},\r
-{5,11,329},{136,11,260},{133,10,862},{132,0,534},{6,0,811},{135,0,626},{132,11,\r
-657},{4,0,25},{5,0,60},{6,0,504},{7,0,614},{7,0,1155},{12,0,0},{152,11,7},{7,0,\r
-1248},{11,0,621},{139,0,702},{137,0,321},{8,10,70},{12,10,171},{141,10,272},{10,\r
-10,233},{139,10,76},{4,0,379},{7,0,1397},{134,10,442},{5,11,66},{7,11,1896},{136\r
-,11,288},{134,11,1643},{134,10,1709},{4,11,21},{5,11,91},{5,11,570},{5,11,648},{\r
-5,11,750},{5,11,781},{6,11,54},{6,11,112},{6,11,402},{6,11,1732},{7,11,315},{7,\r
-11,749},{7,11,1347},{7,11,1900},{9,11,78},{9,11,508},{10,11,611},{11,11,510},{11\r
-,11,728},{13,11,36},{14,11,39},{16,11,83},{17,11,124},{148,11,30},{4,0,118},{6,0\r
-,274},{6,0,361},{7,0,75},{141,0,441},{10,11,322},{10,11,719},{139,11,407},{147,\r
-10,119},{12,11,549},{14,11,67},{147,11,60},{11,10,69},{12,10,105},{12,10,117},{\r
-13,10,213},{14,10,13},{14,10,62},{14,10,177},{14,10,421},{15,10,19},{146,10,141}\r
-,{9,0,841},{137,10,309},{7,10,608},{7,10,976},{8,11,125},{8,11,369},{8,11,524},{\r
-9,10,146},{10,10,206},{10,11,486},{10,10,596},{11,11,13},{11,11,381},{11,11,736}\r
-,{11,11,766},{11,11,845},{13,11,114},{13,10,218},{13,11,292},{14,11,47},{142,10,\r
-153},{12,0,693},{135,11,759},{5,0,314},{6,0,221},{7,0,419},{10,0,650},{11,0,396}\r
-,{12,0,156},{13,0,369},{14,0,333},{145,0,47},{6,11,1684},{6,11,1731},{7,11,356},\r
-{7,11,1932},{8,11,54},{8,11,221},{9,11,225},{9,11,356},{10,11,77},{10,11,446},{\r
-10,11,731},{12,11,404},{141,11,491},{132,11,375},{4,10,518},{135,10,1136},{4,0,\r
-913},{4,11,411},{11,11,643},{140,11,115},{4,11,80},{133,11,44},{8,10,689},{137,\r
-10,863},{138,0,880},{4,10,18},{7,10,145},{7,10,444},{7,10,1278},{8,10,49},{8,10,\r
-400},{9,10,71},{9,10,250},{10,10,459},{12,10,160},{144,10,24},{136,0,475},{5,0,\r
-1016},{5,11,299},{135,11,1083},{7,0,602},{8,0,179},{10,0,781},{140,0,126},{6,0,\r
-329},{138,0,111},{135,0,1864},{4,11,219},{7,11,1761},{137,11,86},{6,0,1888},{6,0\r
-,1892},{6,0,1901},{6,0,1904},{9,0,953},{9,0,985},{9,0,991},{9,0,1001},{12,0,818}\r
-,{12,0,846},{12,0,847},{12,0,861},{12,0,862},{12,0,873},{12,0,875},{12,0,877},{\r
-12,0,879},{12,0,881},{12,0,884},{12,0,903},{12,0,915},{12,0,926},{12,0,939},{15,\r
-0,182},{15,0,219},{15,0,255},{18,0,191},{18,0,209},{18,0,211},{149,0,41},{5,11,\r
-328},{135,11,918},{137,0,780},{12,0,82},{143,0,36},{133,10,1010},{5,0,821},{134,\r
-0,1687},{133,11,514},{132,0,956},{134,0,1180},{10,0,112},{5,10,87},{7,10,313},{7\r
-,10,1103},{10,10,582},{11,10,389},{11,10,813},{12,10,385},{13,10,286},{14,10,124\r
-},{146,10,108},{5,0,71},{7,0,1407},{9,0,704},{10,0,261},{10,0,619},{11,0,547},{\r
-11,0,619},{143,0,157},{4,0,531},{5,0,455},{5,11,301},{6,11,571},{14,11,49},{146,\r
-11,102},{132,10,267},{6,0,385},{7,0,2008},{9,0,337},{138,0,517},{133,11,726},{\r
-133,11,364},{4,11,76},{7,11,1550},{9,11,306},{9,11,430},{9,11,663},{10,11,683},{\r
-11,11,427},{11,11,753},{12,11,334},{12,11,442},{14,11,258},{14,11,366},{143,11,\r
-131},{6,0,1865},{6,0,1879},{6,0,1881},{6,0,1894},{6,0,1908},{9,0,915},{9,0,926},\r
-{9,0,940},{9,0,943},{9,0,966},{9,0,980},{9,0,989},{9,0,1005},{9,0,1010},{12,0,\r
-813},{12,0,817},{12,0,840},{12,0,843},{12,0,855},{12,0,864},{12,0,871},{12,0,872\r
-},{12,0,899},{12,0,905},{12,0,924},{15,0,171},{15,0,181},{15,0,224},{15,0,235},{\r
-15,0,251},{146,0,184},{137,11,52},{5,0,16},{6,0,86},{6,0,603},{7,0,292},{7,0,561\r
-},{8,0,257},{8,0,382},{9,0,721},{9,0,778},{11,0,581},{140,0,466},{4,0,486},{5,0,\r
-491},{135,10,1121},{4,0,72},{6,0,265},{135,0,1300},{135,11,1183},{10,10,249},{\r
-139,10,209},{132,10,561},{137,11,519},{4,11,656},{4,10,760},{135,11,779},{9,10,\r
-154},{140,10,485},{135,11,1793},{135,11,144},{136,10,255},{133,0,621},{4,10,368}\r
-,{135,10,641},{135,11,1373},{7,11,554},{7,11,605},{141,11,10},{137,0,234},{5,0,\r
-815},{6,0,1688},{134,0,1755},{5,11,838},{5,11,841},{134,11,1649},{7,0,1987},{7,0\r
-,2040},{136,0,743},{133,11,1012},{6,0,197},{136,0,205},{6,0,314},{134,11,314},{\r
-144,11,53},{6,11,251},{7,11,365},{7,11,1357},{7,11,1497},{8,11,154},{141,11,281}\r
-,{133,11,340},{6,0,452},{7,0,312},{138,0,219},{138,0,589},{4,0,333},{9,0,176},{\r
-12,0,353},{141,0,187},{9,10,92},{147,10,91},{134,0,1110},{11,0,47},{139,11,495},\r
-{6,10,525},{8,10,806},{9,10,876},{140,10,284},{8,11,261},{9,11,144},{9,11,466},{\r
-10,11,370},{12,11,470},{13,11,144},{142,11,348},{137,11,897},{8,0,863},{8,0,864}\r
-,{8,0,868},{8,0,884},{10,0,866},{10,0,868},{10,0,873},{10,0,911},{10,0,912},{10,\r
-0,944},{12,0,727},{6,11,248},{9,11,546},{10,11,535},{11,11,681},{141,11,135},{6,\r
-0,300},{135,0,1515},{134,0,1237},{139,10,958},{133,10,594},{140,11,250},{134,0,\r
-1685},{134,11,567},{7,0,135},{8,0,7},{8,0,62},{9,0,243},{10,0,658},{10,0,697},{\r
-11,0,456},{139,0,756},{9,0,395},{138,0,79},{6,10,1641},{136,10,820},{4,10,302},{\r
-135,10,1766},{134,11,174},{135,10,1313},{135,0,631},{134,10,1674},{134,11,395},{\r
-138,0,835},{7,0,406},{7,0,459},{8,0,606},{139,0,726},{134,11,617},{134,0,979},{6\r
-,10,389},{7,10,149},{9,10,142},{138,10,94},{5,11,878},{133,11,972},{6,10,8},{7,\r
-10,1881},{8,10,91},{136,11,511},{133,0,612},{132,11,351},{4,0,372},{7,0,482},{8,\r
-0,158},{9,0,602},{9,0,615},{10,0,245},{10,0,678},{10,0,744},{11,0,248},{139,0,\r
-806},{5,0,854},{135,0,1991},{132,11,286},{135,11,344},{7,11,438},{7,11,627},{7,\r
-11,1516},{8,11,40},{9,11,56},{9,11,294},{10,11,30},{10,11,259},{11,11,969},{146,\r
-11,148},{135,0,1492},{5,11,259},{7,11,414},{7,11,854},{142,11,107},{135,10,1746}\r
-,{6,0,833},{134,0,998},{135,10,24},{6,0,750},{135,0,1739},{4,10,503},{135,10,\r
-1661},{5,10,130},{7,10,1314},{9,10,610},{10,10,718},{11,10,601},{11,10,819},{11,\r
-10,946},{140,10,536},{10,10,149},{11,10,280},{142,10,336},{132,11,738},{135,10,\r
-1946},{5,0,195},{135,0,1685},{7,0,1997},{8,0,730},{139,0,1006},{151,11,17},{133,\r
-11,866},{14,0,463},{14,0,470},{150,0,61},{5,0,751},{8,0,266},{11,0,578},{4,10,\r
-392},{135,10,1597},{5,10,433},{9,10,633},{139,10,629},{135,0,821},{6,0,715},{134\r
-,0,1325},{133,11,116},{6,0,868},{132,11,457},{134,0,959},{6,10,234},{138,11,199}\r
-,{7,0,1053},{7,10,1950},{8,10,680},{11,10,817},{147,10,88},{7,10,1222},{138,10,\r
-386},{5,0,950},{5,0,994},{6,0,351},{134,0,1124},{134,0,1081},{7,0,1595},{6,10,5}\r
-,{11,10,249},{12,10,313},{16,10,66},{145,10,26},{148,0,59},{5,11,527},{6,11,189}\r
-,{135,11,859},{5,10,963},{6,10,1773},{11,11,104},{11,11,554},{15,11,60},{143,11,\r
-125},{135,0,47},{137,0,684},{134,11,116},{134,0,1606},{134,0,777},{7,0,1020},{8,\r
-10,509},{136,10,792},{135,0,1094},{132,0,350},{133,11,487},{4,11,86},{5,11,667},\r
-{5,11,753},{6,11,316},{6,11,455},{135,11,946},{7,0,1812},{13,0,259},{13,0,356},{\r
-14,0,242},{147,0,114},{132,10,931},{133,0,967},{4,0,473},{7,0,623},{8,0,808},{9,\r
-0,871},{9,0,893},{11,0,38},{11,0,431},{12,0,112},{12,0,217},{12,0,243},{12,0,562\r
-},{12,0,663},{12,0,683},{13,0,141},{13,0,197},{13,0,227},{13,0,406},{13,0,487},{\r
-14,0,156},{14,0,203},{14,0,224},{14,0,256},{18,0,58},{150,0,0},{138,0,286},{7,10\r
-,943},{139,10,614},{135,10,1837},{150,11,45},{132,0,798},{4,0,222},{7,0,286},{\r
-136,0,629},{4,11,79},{7,11,1773},{10,11,450},{11,11,589},{13,11,332},{13,11,493}\r
-,{14,11,183},{14,11,334},{14,11,362},{14,11,368},{14,11,376},{14,11,379},{19,11,\r
-90},{19,11,103},{19,11,127},{148,11,90},{5,0,337},{11,0,513},{11,0,889},{11,0,\r
-961},{12,0,461},{13,0,79},{15,0,121},{4,10,90},{5,10,545},{7,10,754},{9,10,186},\r
-{10,10,72},{10,10,782},{11,10,577},{11,10,610},{12,10,354},{12,10,362},{140,10,\r
-595},{141,0,306},{136,0,146},{7,0,1646},{9,10,329},{11,10,254},{141,11,124},{4,0\r
-,465},{135,0,1663},{132,0,525},{133,11,663},{10,0,299},{18,0,74},{9,10,187},{11,\r
-10,1016},{145,10,44},{7,0,165},{7,0,919},{4,10,506},{136,10,517},{5,10,295},{135\r
-,10,1680},{133,11,846},{134,0,1064},{5,11,378},{7,11,1402},{7,11,1414},{8,11,465\r
-},{9,11,286},{10,11,185},{10,11,562},{10,11,635},{11,11,31},{11,11,393},{12,11,\r
-456},{13,11,312},{18,11,65},{18,11,96},{147,11,89},{132,0,596},{7,10,987},{9,10,\r
-688},{10,10,522},{11,10,788},{140,10,566},{6,0,82},{7,0,138},{7,0,517},{7,0,1741\r
-},{11,0,238},{4,11,648},{134,10,1775},{7,0,1233},{7,10,700},{7,10,940},{8,10,514\r
-},{9,10,116},{9,10,535},{10,10,118},{11,10,107},{11,10,148},{11,10,922},{12,10,\r
-254},{12,10,421},{142,10,238},{4,0,962},{6,0,1824},{8,0,894},{12,0,708},{12,0,\r
-725},{14,0,451},{20,0,94},{22,0,59},{150,0,62},{5,11,945},{6,11,1656},{6,11,1787\r
-},{7,11,167},{8,11,824},{9,11,391},{10,11,375},{139,11,185},{5,0,495},{7,0,834},\r
-{9,0,733},{139,0,378},{4,10,743},{135,11,1273},{6,0,1204},{7,11,1645},{8,11,352}\r
-,{137,11,249},{139,10,292},{133,0,559},{132,11,152},{9,0,499},{10,0,341},{15,0,\r
-144},{19,0,49},{7,10,1283},{9,10,227},{11,10,325},{11,10,408},{14,10,180},{146,\r
-10,47},{6,0,21},{6,0,1737},{7,0,1444},{136,0,224},{133,11,1006},{7,0,1446},{9,0,\r
-97},{17,0,15},{5,10,81},{7,10,146},{7,10,1342},{8,10,53},{8,10,561},{8,10,694},{\r
-8,10,754},{9,10,115},{9,10,894},{10,10,462},{10,10,813},{11,10,230},{11,10,657},\r
-{11,10,699},{11,10,748},{12,10,119},{12,10,200},{12,10,283},{142,10,273},{5,10,\r
-408},{137,10,747},{135,11,431},{135,11,832},{6,0,729},{134,0,953},{4,0,727},{8,0\r
-,565},{5,11,351},{7,11,264},{136,11,565},{134,0,1948},{5,0,519},{5,11,40},{7,11,\r
-598},{7,11,1638},{8,11,78},{9,11,166},{9,11,640},{9,11,685},{9,11,773},{11,11,\r
-215},{13,11,65},{14,11,172},{14,11,317},{145,11,6},{8,11,60},{9,11,343},{139,11,\r
-769},{137,11,455},{134,0,1193},{140,0,790},{7,11,1951},{8,11,765},{8,11,772},{\r
-140,11,671},{7,11,108},{8,11,219},{8,11,388},{9,11,639},{9,11,775},{11,11,275},{\r
-140,11,464},{132,11,468},{7,10,30},{8,10,86},{8,10,315},{8,10,700},{9,10,576},{9\r
-,10,858},{11,10,310},{11,10,888},{11,10,904},{12,10,361},{141,10,248},{5,11,15},\r
-{6,11,56},{7,11,1758},{8,11,500},{9,11,730},{11,11,331},{13,11,150},{142,11,282}\r
-,{4,0,402},{7,0,2},{8,0,323},{136,0,479},{138,10,839},{11,0,580},{142,0,201},{5,\r
-0,59},{135,0,672},{137,10,617},{146,0,34},{134,11,1886},{4,0,961},{136,0,896},{6\r
-,0,1285},{5,11,205},{6,11,438},{137,11,711},{134,10,428},{7,10,524},{8,10,169},{\r
-8,10,234},{9,10,480},{138,10,646},{148,0,46},{141,0,479},{133,11,534},{6,0,2019}\r
-,{134,10,1648},{4,0,85},{7,0,549},{7,10,1205},{138,10,637},{4,0,663},{5,0,94},{7\r
-,11,235},{7,11,1475},{15,11,68},{146,11,120},{6,11,443},{9,11,237},{9,11,571},{9\r
-,11,695},{10,11,139},{11,11,715},{12,11,417},{141,11,421},{132,0,783},{4,0,682},\r
-{8,0,65},{9,10,39},{10,10,166},{11,10,918},{12,10,635},{20,10,10},{22,10,27},{22\r
-,10,43},{150,10,52},{6,0,11},{135,0,187},{132,0,522},{4,0,52},{135,0,661},{4,0,\r
-383},{133,0,520},{135,11,546},{11,0,343},{142,0,127},{4,11,578},{7,10,157},{7,11\r
-,624},{7,11,916},{8,10,279},{10,11,256},{11,11,87},{139,11,703},{134,10,604},{4,\r
-0,281},{5,0,38},{7,0,194},{7,0,668},{7,0,1893},{137,0,397},{7,10,945},{11,10,713\r
-},{139,10,744},{139,10,1022},{9,0,635},{139,0,559},{5,11,923},{7,11,490},{12,11,\r
-553},{13,11,100},{14,11,118},{143,11,75},{132,0,975},{132,10,567},{137,10,859},{\r
-7,10,1846},{7,11,1846},{8,10,628},{136,11,628},{148,0,116},{138,11,750},{14,0,51\r
-},{14,11,51},{15,11,7},{148,11,20},{132,0,858},{134,0,1075},{4,11,924},{133,10,\r
-762},{136,0,535},{133,0,448},{10,10,784},{141,10,191},{133,10,298},{7,0,610},{\r
-135,0,1501},{7,10,633},{7,10,905},{7,10,909},{7,10,1538},{9,10,767},{140,10,636}\r
-,{4,11,265},{7,11,807},{135,11,950},{5,11,93},{12,11,267},{144,11,26},{136,0,191\r
-},{139,10,301},{135,10,1970},{135,0,267},{4,0,319},{5,0,699},{138,0,673},{6,0,\r
-336},{7,0,92},{7,0,182},{8,0,453},{8,0,552},{9,0,204},{9,0,285},{10,0,99},{11,0,\r
-568},{11,0,950},{12,0,94},{16,0,20},{16,0,70},{19,0,55},{12,10,644},{144,10,90},\r
-{6,0,551},{7,0,1308},{7,10,845},{7,11,994},{8,10,160},{137,10,318},{19,11,1},{19\r
-,11,26},{150,11,9},{7,0,1406},{9,0,218},{141,0,222},{5,0,256},{138,0,69},{5,11,\r
-233},{5,11,320},{6,11,140},{7,11,330},{136,11,295},{6,0,1980},{136,0,952},{4,0,\r
-833},{137,11,678},{133,11,978},{4,11,905},{6,11,1701},{137,11,843},{138,10,735},\r
-{136,10,76},{17,0,39},{148,0,36},{18,0,81},{146,11,81},{14,0,352},{17,0,53},{18,\r
-0,146},{18,0,152},{19,0,11},{150,0,54},{135,0,634},{138,10,841},{132,0,618},{4,0\r
-,339},{7,0,259},{17,0,73},{4,11,275},{140,11,376},{132,11,509},{7,11,273},{139,\r
-11,377},{4,0,759},{13,0,169},{137,10,804},{6,10,96},{135,10,1426},{4,10,651},{\r
-133,10,289},{7,0,1075},{8,10,35},{9,10,511},{10,10,767},{147,10,118},{6,0,649},{\r
-6,0,670},{136,0,482},{5,0,336},{6,0,341},{6,0,478},{6,0,1763},{136,0,386},{5,11,\r
-802},{7,11,2021},{8,11,805},{14,11,94},{15,11,65},{16,11,4},{16,11,77},{16,11,80\r
-},{145,11,5},{6,0,1035},{5,11,167},{5,11,899},{6,11,410},{137,11,777},{134,11,\r
-1705},{5,0,924},{133,0,969},{132,10,704},{135,0,73},{135,11,10},{135,10,1078},{5\r
-,11,11},{6,11,117},{6,11,485},{7,11,1133},{9,11,582},{9,11,594},{11,11,21},{11,\r
-11,818},{12,11,535},{141,11,86},{135,0,1971},{4,11,264},{7,11,1067},{8,11,204},{\r
-8,11,385},{139,11,953},{6,0,1458},{135,0,1344},{5,0,396},{134,0,501},{4,10,720},\r
-{133,10,306},{4,0,929},{5,0,799},{8,0,46},{8,0,740},{133,10,431},{7,11,646},{7,\r
-11,1730},{11,11,446},{141,11,178},{7,0,276},{5,10,464},{6,10,236},{7,10,696},{7,\r
-10,914},{7,10,1108},{7,10,1448},{9,10,15},{9,10,564},{10,10,14},{12,10,565},{13,\r
-10,449},{14,10,53},{15,10,13},{16,10,64},{145,10,41},{4,0,892},{133,0,770},{6,10\r
-,1767},{12,10,194},{145,10,107},{135,0,158},{5,10,840},{138,11,608},{134,0,1432}\r
-,{138,11,250},{8,11,794},{9,11,400},{10,11,298},{142,11,228},{151,0,25},{7,11,\r
-1131},{135,11,1468},{135,0,2001},{9,10,642},{11,10,236},{142,10,193},{4,10,68},{\r
-5,10,634},{6,10,386},{7,10,794},{8,10,273},{9,10,563},{10,10,105},{10,10,171},{\r
-11,10,94},{139,10,354},{136,11,724},{132,0,478},{11,11,512},{13,11,205},{19,11,\r
-30},{22,11,36},{151,11,19},{7,0,1461},{140,0,91},{6,11,190},{7,11,768},{135,11,\r
-1170},{4,0,602},{8,0,211},{4,10,95},{7,10,416},{139,10,830},{7,10,731},{13,10,20\r
-},{143,10,11},{6,0,1068},{135,0,1872},{4,0,13},{5,0,567},{7,0,1498},{9,0,124},{\r
-11,0,521},{12,0,405},{135,11,1023},{135,0,1006},{132,0,735},{138,0,812},{4,0,170\r
-},{135,0,323},{6,11,137},{9,11,75},{9,11,253},{10,11,194},{138,11,444},{5,0,304}\r
-,{7,0,1403},{5,10,864},{10,10,648},{11,10,671},{143,10,46},{135,11,1180},{133,10\r
-,928},{4,0,148},{133,0,742},{11,10,986},{140,10,682},{133,0,523},{135,11,1743},{\r
-7,0,730},{18,0,144},{19,0,61},{8,10,44},{9,10,884},{10,10,580},{11,10,399},{11,\r
-10,894},{143,10,122},{5,11,760},{7,11,542},{8,11,135},{136,11,496},{136,0,981},{\r
-133,0,111},{10,0,132},{11,0,191},{11,0,358},{139,0,460},{7,11,319},{7,11,355},{7\r
-,11,763},{10,11,389},{145,11,43},{134,0,890},{134,0,1420},{136,11,557},{133,10,\r
-518},{133,0,444},{135,0,1787},{135,10,1852},{8,0,123},{15,0,6},{144,0,7},{6,0,\r
-2041},{10,11,38},{139,11,784},{136,0,932},{5,0,937},{135,0,100},{6,0,995},{4,11,\r
-58},{5,11,286},{6,11,319},{7,11,402},{7,11,1254},{7,11,1903},{8,11,356},{140,11,\r
-408},{4,11,389},{9,11,181},{9,11,255},{10,11,8},{10,11,29},{10,11,816},{11,11,\r
-311},{11,11,561},{12,11,67},{141,11,181},{138,0,255},{5,0,138},{4,10,934},{136,\r
-10,610},{4,0,965},{10,0,863},{138,0,898},{10,10,804},{138,10,832},{12,0,631},{8,\r
-10,96},{9,10,36},{10,10,607},{11,10,423},{11,10,442},{12,10,309},{14,10,199},{15\r
-,10,90},{145,10,110},{134,0,1394},{4,0,652},{8,0,320},{22,0,6},{22,0,16},{9,10,\r
-13},{9,10,398},{9,10,727},{10,10,75},{10,10,184},{10,10,230},{10,10,564},{10,10,\r
-569},{11,10,973},{12,10,70},{12,10,189},{13,10,57},{141,10,257},{6,0,897},{134,0\r
-,1333},{4,0,692},{133,0,321},{133,11,373},{135,0,922},{5,0,619},{133,0,698},{137\r
-,10,631},{5,10,345},{135,10,1016},{9,0,957},{9,0,1018},{12,0,828},{12,0,844},{12\r
-,0,897},{12,0,901},{12,0,943},{15,0,180},{18,0,197},{18,0,200},{18,0,213},{18,0,\r
-214},{146,0,226},{5,0,917},{134,0,1659},{135,0,1100},{134,0,1173},{134,0,1930},{\r
-5,0,251},{5,0,956},{8,0,268},{9,0,214},{146,0,142},{133,10,673},{137,10,850},{4,\r
-10,287},{133,10,1018},{132,11,672},{5,0,346},{5,0,711},{8,0,390},{11,11,752},{\r
-139,11,885},{5,10,34},{10,10,724},{12,10,444},{13,10,354},{18,10,32},{23,10,24},\r
-{23,10,31},{152,10,5},{4,11,710},{134,11,606},{134,0,744},{134,10,382},{133,11,\r
-145},{4,10,329},{7,11,884},{140,11,124},{4,11,467},{5,11,405},{134,11,544},{9,10\r
-,846},{138,10,827},{133,0,624},{9,11,372},{15,11,2},{19,11,10},{147,11,18},{4,11\r
-,387},{135,11,1288},{5,0,783},{7,0,1998},{135,0,2047},{132,10,906},{136,10,366},\r
-{135,11,550},{4,10,123},{4,10,649},{5,10,605},{7,10,1509},{136,10,36},{134,0,\r
-1125},{132,0,594},{133,10,767},{135,11,1227},{136,11,467},{4,11,576},{135,11,\r
-1263},{4,0,268},{7,0,1534},{135,11,1534},{4,10,273},{5,10,658},{5,11,919},{5,10,\r
-995},{134,11,1673},{133,0,563},{134,10,72},{135,10,1345},{4,11,82},{5,11,333},{5\r
-,11,904},{6,11,207},{7,11,325},{7,11,1726},{8,11,101},{10,11,778},{139,11,220},{\r
-5,0,37},{6,0,39},{6,0,451},{7,0,218},{7,0,667},{7,0,1166},{7,0,1687},{8,0,662},{\r
-16,0,2},{133,10,589},{134,0,1332},{133,11,903},{134,0,508},{5,10,117},{6,10,514}\r
-,{6,10,541},{7,10,1164},{7,10,1436},{8,10,220},{8,10,648},{10,10,688},{11,10,560\r
-},{140,11,147},{6,11,555},{135,11,485},{133,10,686},{7,0,453},{7,0,635},{7,0,796\r
-},{8,0,331},{9,0,330},{9,0,865},{10,0,119},{10,0,235},{11,0,111},{11,0,129},{11,\r
-0,240},{12,0,31},{12,0,66},{12,0,222},{12,0,269},{12,0,599},{12,0,684},{12,0,689\r
-},{12,0,691},{142,0,345},{135,0,1834},{4,11,705},{7,11,615},{138,11,251},{136,11\r
-,345},{137,0,527},{6,0,98},{7,0,702},{135,0,991},{11,0,576},{14,0,74},{7,10,196}\r
-,{10,10,765},{11,10,347},{11,10,552},{11,10,790},{12,10,263},{13,10,246},{13,10,\r
-270},{13,10,395},{14,10,176},{14,10,190},{14,10,398},{14,10,412},{15,10,32},{15,\r
-10,63},{16,10,88},{147,10,105},{134,11,90},{13,0,84},{141,0,122},{6,0,37},{7,0,\r
-299},{7,0,1666},{8,0,195},{8,0,316},{9,0,178},{9,0,276},{9,0,339},{9,0,536},{10,\r
-0,102},{10,0,362},{10,0,785},{11,0,55},{11,0,149},{11,0,773},{13,0,416},{13,0,\r
-419},{14,0,38},{14,0,41},{142,0,210},{5,10,381},{135,10,1792},{7,11,813},{12,11,\r
-497},{141,11,56},{7,10,616},{138,10,413},{133,0,645},{6,11,125},{135,11,1277},{\r
-132,0,290},{6,0,70},{7,0,1292},{10,0,762},{139,0,288},{6,10,120},{7,10,1188},{7,\r
-10,1710},{8,10,286},{9,10,667},{11,10,592},{139,10,730},{135,11,1784},{7,0,1315}\r
-,{135,11,1315},{134,0,1955},{135,10,1146},{7,0,131},{7,0,422},{8,0,210},{140,0,\r
-573},{4,10,352},{135,10,687},{139,0,797},{143,0,38},{14,0,179},{15,0,151},{150,0\r
-,11},{7,0,488},{4,10,192},{5,10,49},{6,10,200},{6,10,293},{134,10,1696},{132,0,\r
-936},{135,11,703},{6,11,160},{7,11,1106},{9,11,770},{10,11,618},{11,11,112},{140\r
-,11,413},{5,0,453},{134,0,441},{135,0,595},{132,10,650},{132,10,147},{6,0,991},{\r
-6,0,1182},{12,11,271},{145,11,109},{133,10,934},{140,11,221},{132,0,653},{7,0,\r
-505},{135,0,523},{134,0,903},{135,11,479},{7,11,304},{9,11,646},{9,11,862},{10,\r
-11,262},{11,11,696},{12,11,208},{15,11,79},{147,11,108},{146,0,80},{135,11,981},\r
-{142,0,432},{132,0,314},{137,11,152},{7,0,1368},{8,0,232},{8,0,361},{10,0,682},{\r
-138,0,742},{135,11,1586},{9,0,534},{4,11,434},{11,11,663},{12,11,210},{13,11,166\r
-},{13,11,310},{14,11,373},{147,11,43},{7,11,1091},{135,11,1765},{6,11,550},{135,\r
-11,652},{137,0,27},{142,0,12},{4,10,637},{5,11,553},{7,11,766},{138,11,824},{7,\r
-11,737},{8,11,298},{136,11,452},{7,0,736},{139,0,264},{134,0,1657},{133,11,292},\r
-{138,11,135},{6,0,844},{134,0,1117},{135,0,127},{9,10,867},{138,10,837},{6,0,\r
-1184},{134,0,1208},{134,0,1294},{136,0,364},{6,0,1415},{7,0,1334},{11,0,125},{6,\r
-10,170},{7,11,393},{8,10,395},{8,10,487},{10,11,603},{11,11,206},{141,10,147},{\r
-137,11,748},{4,11,912},{137,11,232},{4,10,535},{136,10,618},{137,0,792},{7,11,\r
-1973},{136,11,716},{135,11,98},{5,0,909},{9,0,849},{138,0,805},{4,0,630},{132,0,\r
-699},{5,11,733},{14,11,103},{150,10,23},{12,11,158},{18,11,8},{19,11,62},{20,11,\r
-6},{22,11,4},{23,11,2},{151,11,9},{132,0,968},{132,10,778},{132,10,46},{5,10,811\r
-},{6,10,1679},{6,10,1714},{135,10,2032},{6,0,1446},{7,10,1458},{9,10,407},{139,\r
-10,15},{7,0,206},{7,0,397},{7,0,621},{7,0,640},{8,0,124},{8,0,619},{9,0,305},{9,\r
-0,643},{10,0,264},{10,0,628},{11,0,40},{12,0,349},{13,0,134},{13,0,295},{14,0,\r
-155},{15,0,120},{18,0,105},{6,10,34},{7,10,1089},{8,10,708},{8,10,721},{9,10,363\r
-},{148,10,98},{4,0,262},{5,0,641},{135,0,342},{137,11,72},{4,0,99},{6,0,250},{6,\r
-0,346},{8,0,127},{138,0,81},{132,0,915},{5,0,75},{9,0,517},{10,0,470},{12,0,155}\r
-,{141,0,224},{132,10,462},{11,11,600},{11,11,670},{141,11,245},{142,0,83},{5,10,\r
-73},{6,10,23},{134,10,338},{6,0,1031},{139,11,923},{7,11,164},{7,11,1571},{9,11,\r
-107},{140,11,225},{134,0,1470},{133,0,954},{6,0,304},{8,0,418},{10,0,345},{11,0,\r
-341},{139,0,675},{9,0,410},{139,0,425},{4,11,27},{5,11,484},{5,11,510},{6,11,434\r
-},{7,11,1000},{7,11,1098},{8,11,2},{136,11,200},{134,0,734},{140,11,257},{7,10,\r
-725},{8,10,498},{139,10,268},{134,0,1822},{135,0,1798},{135,10,773},{132,11,460}\r
-,{4,11,932},{133,11,891},{134,0,14},{132,10,583},{7,10,1462},{8,11,625},{139,10,\r
-659},{5,0,113},{6,0,243},{6,0,1708},{7,0,1865},{11,0,161},{16,0,37},{17,0,99},{\r
-133,10,220},{134,11,76},{5,11,461},{135,11,1925},{140,0,69},{8,11,92},{137,11,\r
-221},{139,10,803},{132,10,544},{4,0,274},{134,0,922},{132,0,541},{5,0,627},{6,10\r
-,437},{6,10,564},{11,10,181},{141,10,183},{135,10,1192},{7,0,166},{132,11,763},{\r
-133,11,253},{134,0,849},{9,11,73},{10,11,110},{14,11,185},{145,11,119},{5,11,212\r
-},{12,11,35},{141,11,382},{133,0,717},{137,0,304},{136,0,600},{133,0,654},{6,0,\r
-273},{10,0,188},{13,0,377},{146,0,77},{4,10,790},{5,10,273},{134,10,394},{132,0,\r
-543},{135,0,410},{11,0,98},{11,0,524},{141,0,87},{132,0,941},{135,11,1175},{4,0,\r
-250},{7,0,1612},{11,0,186},{12,0,133},{6,10,127},{7,10,1511},{8,10,613},{12,10,\r
-495},{12,10,586},{12,10,660},{12,10,668},{14,10,385},{15,10,118},{17,10,20},{146\r
-,10,98},{6,0,1785},{133,11,816},{134,0,1339},{7,0,961},{7,0,1085},{7,0,1727},{8,\r
-0,462},{6,10,230},{135,11,1727},{9,0,636},{135,10,1954},{132,0,780},{5,11,869},{\r
-5,11,968},{6,11,1626},{8,11,734},{136,11,784},{4,11,542},{6,11,1716},{6,11,1727}\r
-,{7,11,1082},{7,11,1545},{8,11,56},{8,11,118},{8,11,412},{8,11,564},{9,11,888},{\r
-9,11,908},{10,11,50},{10,11,423},{11,11,685},{11,11,697},{11,11,933},{12,11,299}\r
-,{13,11,126},{13,11,136},{13,11,170},{141,11,190},{134,11,226},{4,11,232},{9,11,\r
-202},{10,11,474},{140,11,433},{137,11,500},{5,0,529},{136,10,68},{132,10,654},{4\r
-,10,156},{7,10,998},{7,10,1045},{7,10,1860},{9,10,48},{9,10,692},{11,10,419},{\r
-139,10,602},{7,0,1276},{8,0,474},{9,0,652},{6,11,108},{7,11,1003},{7,11,1181},{\r
-136,11,343},{7,11,1264},{7,11,1678},{11,11,945},{12,11,341},{12,11,471},{140,11,\r
-569},{134,11,1712},{5,0,948},{12,0,468},{19,0,96},{148,0,24},{4,11,133},{7,11,\r
-711},{7,11,1298},{7,11,1585},{135,11,1929},{6,0,753},{140,0,657},{139,0,941},{6,\r
-11,99},{7,11,1808},{145,11,57},{6,11,574},{7,11,428},{7,11,1250},{10,11,669},{11\r
-,11,485},{11,11,840},{12,11,300},{142,11,250},{4,0,532},{5,0,706},{135,0,662},{5\r
-,0,837},{6,0,1651},{139,0,985},{7,0,1861},{9,10,197},{10,10,300},{12,10,473},{13\r
-,10,90},{141,10,405},{137,11,252},{6,11,323},{135,11,1564},{4,0,330},{4,0,863},{\r
-7,0,933},{7,0,2012},{8,0,292},{7,11,461},{8,11,775},{138,11,435},{132,10,606},{4\r
-,11,655},{7,11,850},{17,11,75},{146,11,137},{135,0,767},{7,10,1978},{136,10,676}\r
-,{132,0,641},{135,11,1559},{134,0,1233},{137,0,242},{17,0,114},{4,10,361},{133,\r
-10,315},{137,0,883},{132,10,461},{138,0,274},{134,0,2008},{134,0,1794},{4,0,703}\r
-,{135,0,207},{12,0,285},{132,10,472},{132,0,571},{5,0,873},{5,0,960},{8,0,823},{\r
-9,0,881},{136,11,577},{7,0,617},{10,0,498},{11,0,501},{12,0,16},{140,0,150},{138\r
-,10,747},{132,0,431},{133,10,155},{11,0,283},{11,0,567},{7,10,163},{8,10,319},{9\r
-,10,402},{10,10,24},{10,10,681},{11,10,200},{12,10,253},{12,10,410},{142,10,219}\r
-,{4,11,413},{5,11,677},{8,11,432},{140,11,280},{9,0,401},{5,10,475},{7,10,1780},\r
-{11,10,297},{11,10,558},{14,10,322},{147,10,76},{6,0,781},{9,0,134},{10,0,2},{10\r
-,0,27},{10,0,333},{11,0,722},{143,0,1},{5,0,33},{6,0,470},{139,0,424},{135,0,\r
-2006},{12,0,783},{135,10,1956},{136,0,274},{135,0,1882},{132,0,794},{135,0,1848}\r
-,{5,10,944},{134,10,1769},{6,0,47},{7,0,90},{7,0,664},{7,0,830},{7,0,1380},{7,0,\r
-2025},{8,0,448},{136,0,828},{132,10,144},{134,0,1199},{4,11,395},{139,11,762},{\r
-135,11,1504},{9,0,417},{137,0,493},{9,11,174},{10,11,164},{11,11,440},{11,11,841\r
-},{143,11,98},{134,11,426},{139,11,1002},{134,0,295},{134,0,816},{6,10,247},{137\r
-,10,555},{133,0,1019},{4,0,620},{5,11,476},{10,10,280},{138,10,797},{139,0,464},\r
-{5,11,76},{6,11,458},{6,11,497},{7,11,764},{7,11,868},{9,11,658},{10,11,594},{11\r
-,11,173},{11,11,566},{12,11,20},{12,11,338},{141,11,200},{134,0,208},{4,11,526},\r
-{7,11,1029},{135,11,1054},{132,11,636},{6,11,233},{7,11,660},{7,11,1124},{17,11,\r
-31},{19,11,22},{151,11,14},{10,0,442},{133,10,428},{10,0,930},{140,0,778},{6,0,\r
-68},{7,0,448},{7,0,1629},{7,0,1769},{7,0,1813},{8,0,442},{8,0,516},{9,0,710},{10\r
-,0,282},{10,0,722},{7,10,1717},{138,10,546},{134,0,1128},{11,0,844},{12,0,104},{\r
-140,0,625},{4,11,432},{135,11,824},{138,10,189},{133,0,787},{133,10,99},{4,11,\r
-279},{7,11,301},{137,11,362},{8,0,491},{4,10,397},{136,10,555},{4,11,178},{133,\r
-11,399},{134,0,711},{144,0,9},{4,0,403},{5,0,441},{7,0,450},{10,0,840},{11,0,101\r
-},{12,0,193},{141,0,430},{135,11,1246},{12,10,398},{20,10,39},{21,10,11},{150,10\r
-,41},{4,10,485},{7,10,353},{135,10,1523},{6,10,366},{7,10,1384},{7,10,1601},{135\r
-,11,1912},{7,0,396},{10,0,160},{135,11,396},{137,10,282},{134,11,1692},{4,10,157\r
-},{5,10,471},{6,11,202},{10,11,448},{11,11,208},{12,11,360},{17,11,117},{17,11,\r
-118},{18,11,27},{148,11,67},{133,0,679},{137,0,326},{136,10,116},{7,11,872},{10,\r
-11,516},{139,11,167},{132,11,224},{5,11,546},{7,11,35},{8,11,11},{8,11,12},{9,11\r
-,315},{9,11,533},{10,11,802},{11,11,166},{12,11,525},{142,11,243},{7,0,1128},{\r
-135,11,1920},{5,11,241},{8,11,242},{9,11,451},{10,11,667},{11,11,598},{140,11,\r
-429},{6,0,737},{5,10,160},{7,10,363},{7,10,589},{10,10,170},{141,10,55},{135,0,\r
-1796},{142,11,254},{4,0,574},{7,0,350},{7,0,1024},{8,0,338},{9,0,677},{138,0,808\r
-},{134,0,1096},{137,11,516},{7,0,405},{10,0,491},{4,10,108},{4,11,366},{139,10,\r
-498},{11,11,337},{142,11,303},{134,11,1736},{7,0,1081},{140,11,364},{7,10,1005},\r
-{140,10,609},{7,0,1676},{4,10,895},{133,10,772},{135,0,2037},{6,0,1207},{11,11,\r
-916},{142,11,419},{14,11,140},{148,11,41},{6,11,331},{136,11,623},{9,0,944},{9,0\r
-,969},{9,0,1022},{12,0,913},{12,0,936},{15,0,177},{15,0,193},{4,10,926},{133,10,\r
-983},{5,0,354},{135,11,506},{8,0,598},{9,0,664},{138,0,441},{4,11,640},{133,11,\r
-513},{137,0,297},{132,10,538},{6,10,294},{7,10,1267},{136,10,624},{7,0,1772},{7,\r
-11,1888},{8,11,289},{11,11,45},{12,11,278},{140,11,537},{135,10,1325},{138,0,751\r
-},{141,0,37},{134,0,1828},{132,10,757},{132,11,394},{6,0,257},{135,0,1522},{4,0,\r
-582},{9,0,191},{135,11,1931},{7,11,574},{7,11,1719},{137,11,145},{132,11,658},{\r
-10,0,790},{132,11,369},{9,11,781},{10,11,144},{11,11,385},{13,11,161},{13,11,228\r
-},{13,11,268},{148,11,107},{8,0,469},{10,0,47},{136,11,374},{6,0,306},{7,0,1140}\r
-,{7,0,1340},{8,0,133},{138,0,449},{139,0,1011},{7,10,1875},{139,10,124},{4,11,\r
-344},{6,11,498},{139,11,323},{137,0,299},{132,0,837},{133,11,906},{5,0,329},{8,0\r
-,260},{138,0,10},{134,0,1320},{4,0,657},{146,0,158},{135,0,1191},{152,0,7},{6,0,\r
-1939},{8,0,974},{138,0,996},{135,0,1665},{11,11,126},{139,11,287},{143,0,8},{14,\r
-11,149},{14,11,399},{143,11,57},{5,0,66},{7,0,1896},{136,0,288},{7,0,175},{10,0,\r
-494},{5,10,150},{8,10,603},{9,10,593},{9,10,634},{10,10,173},{11,10,462},{11,10,\r
-515},{13,10,216},{13,10,288},{142,10,400},{134,0,1643},{136,11,21},{4,0,21},{5,0\r
-,91},{5,0,648},{5,0,750},{5,0,781},{6,0,54},{6,0,112},{6,0,402},{6,0,1732},{7,0,\r
-315},{7,0,749},{7,0,1427},{7,0,1900},{9,0,78},{9,0,508},{10,0,611},{10,0,811},{\r
-11,0,510},{11,0,728},{13,0,36},{14,0,39},{16,0,83},{17,0,124},{148,0,30},{4,0,\r
-668},{136,0,570},{10,0,322},{10,0,719},{139,0,407},{135,11,1381},{136,11,193},{\r
-12,10,108},{141,10,291},{132,11,616},{136,11,692},{8,0,125},{8,0,369},{8,0,524},\r
-{10,0,486},{11,0,13},{11,0,381},{11,0,736},{11,0,766},{11,0,845},{13,0,114},{13,\r
-0,292},{142,0,47},{134,0,1247},{6,0,1684},{6,0,1731},{7,0,356},{8,0,54},{8,0,221\r
-},{9,0,225},{9,0,356},{10,0,77},{10,0,446},{10,0,731},{12,0,404},{141,0,491},{\r
-135,10,1777},{4,11,305},{4,10,493},{144,10,55},{4,0,951},{6,0,1809},{6,0,1849},{\r
-8,0,846},{8,0,866},{8,0,899},{10,0,896},{12,0,694},{142,0,468},{5,11,214},{7,11,\r
-603},{8,11,611},{9,11,686},{10,11,88},{11,11,459},{11,11,496},{12,11,463},{12,11\r
-,590},{13,11,0},{142,11,214},{132,0,411},{4,0,80},{133,0,44},{140,11,74},{143,0,\r
-31},{7,0,669},{6,10,568},{7,10,1804},{8,10,362},{8,10,410},{8,10,830},{9,10,514}\r
-,{11,10,649},{142,10,157},{7,0,673},{134,11,1703},{132,10,625},{134,0,1303},{5,0\r
-,299},{135,0,1083},{138,0,704},{6,0,275},{7,0,408},{6,10,158},{7,10,129},{7,10,\r
-181},{8,10,276},{8,10,377},{10,10,523},{11,10,816},{12,10,455},{13,10,303},{142,\r
-10,135},{4,0,219},{7,0,367},{7,0,1713},{7,0,1761},{9,0,86},{9,0,537},{10,0,165},\r
-{12,0,219},{140,0,561},{8,0,216},{4,10,1},{4,11,737},{6,11,317},{7,10,1143},{7,\r
-10,1463},{9,10,207},{9,10,390},{9,10,467},{10,11,98},{11,11,294},{11,10,836},{12\r
-,11,60},{12,11,437},{13,11,64},{13,11,380},{142,11,430},{6,11,1758},{8,11,520},{\r
-9,11,345},{9,11,403},{142,11,350},{5,11,47},{10,11,242},{138,11,579},{5,11,139},\r
-{7,11,1168},{138,11,539},{135,0,1319},{4,10,295},{4,10,723},{5,10,895},{7,10,\r
-1031},{8,10,199},{8,10,340},{9,10,153},{9,10,215},{10,10,21},{10,10,59},{10,10,\r
-80},{10,10,224},{10,10,838},{11,10,229},{11,10,652},{12,10,192},{13,10,146},{142\r
-,10,91},{140,0,428},{137,10,51},{133,0,514},{5,10,309},{140,10,211},{6,0,1010},{\r
-5,10,125},{8,10,77},{138,10,15},{4,0,55},{5,0,301},{6,0,571},{142,0,49},{146,0,\r
-102},{136,11,370},{4,11,107},{7,11,613},{8,11,358},{8,11,439},{8,11,504},{9,11,\r
-501},{10,11,383},{139,11,477},{132,11,229},{133,0,364},{133,10,439},{4,11,903},{\r
-135,11,1816},{11,0,379},{140,10,76},{4,0,76},{4,0,971},{7,0,1550},{9,0,306},{9,0\r
-,430},{9,0,663},{10,0,683},{10,0,921},{11,0,427},{11,0,753},{12,0,334},{12,0,442\r
-},{14,0,258},{14,0,366},{143,0,131},{137,0,52},{4,11,47},{6,11,373},{7,11,452},{\r
-7,11,543},{7,11,1714},{7,11,1856},{9,11,6},{11,11,257},{139,11,391},{4,10,8},{7,\r
-10,1152},{7,10,1153},{7,10,1715},{9,10,374},{10,10,478},{139,10,648},{4,11,785},\r
-{133,11,368},{135,10,1099},{135,11,860},{5,11,980},{134,11,1754},{134,0,1258},{6\r
-,0,1058},{6,0,1359},{7,11,536},{7,11,1331},{136,11,143},{4,0,656},{135,0,779},{\r
-136,10,87},{5,11,19},{6,11,533},{146,11,126},{7,0,144},{138,10,438},{5,11,395},{\r
-5,11,951},{134,11,1776},{135,0,1373},{7,0,554},{7,0,605},{141,0,10},{4,10,69},{5\r
-,10,122},{9,10,656},{138,10,464},{5,10,849},{134,10,1633},{5,0,838},{5,0,841},{\r
-134,0,1649},{133,0,1012},{139,10,499},{7,10,476},{7,10,1592},{138,10,87},{6,0,\r
-251},{7,0,365},{7,0,1357},{7,0,1497},{8,0,154},{141,0,281},{132,11,441},{132,11,\r
-695},{7,11,497},{9,11,387},{147,11,81},{133,0,340},{14,10,283},{142,11,283},{134\r
-,0,810},{135,11,1894},{139,0,495},{5,11,284},{6,11,49},{6,11,350},{7,11,1},{7,11\r
-,377},{7,11,1693},{8,11,18},{8,11,678},{9,11,161},{9,11,585},{9,11,671},{9,11,\r
-839},{11,11,912},{141,11,427},{5,10,859},{7,10,1160},{8,10,107},{9,10,291},{9,10\r
-,439},{10,10,663},{11,10,609},{140,10,197},{8,0,261},{9,0,144},{9,0,466},{10,0,\r
-370},{12,0,470},{13,0,144},{142,0,348},{137,0,897},{6,0,248},{9,0,546},{10,0,535\r
-},{11,0,681},{141,0,135},{4,0,358},{135,0,1496},{134,0,567},{136,0,445},{4,10,\r
-117},{6,10,372},{7,10,1905},{142,10,323},{4,10,722},{139,10,471},{6,0,697},{134,\r
-0,996},{7,11,2007},{9,11,101},{9,11,450},{10,11,66},{10,11,842},{11,11,536},{140\r
-,11,587},{132,0,577},{134,0,1336},{9,10,5},{12,10,216},{12,10,294},{12,10,298},{\r
-12,10,400},{12,10,518},{13,10,229},{143,10,139},{6,0,174},{138,0,917},{134,10,\r
-1774},{5,10,12},{7,10,375},{9,10,88},{9,10,438},{11,11,62},{139,10,270},{134,11,\r
-1766},{6,11,0},{7,11,84},{7,10,816},{7,10,1241},{9,10,283},{9,10,520},{10,10,213\r
-},{10,10,307},{10,10,463},{10,10,671},{10,10,746},{11,10,401},{11,10,794},{11,11\r
-,895},{12,10,517},{17,11,11},{18,10,107},{147,10,115},{5,0,878},{133,0,972},{6,\r
-11,1665},{7,11,256},{7,11,1388},{138,11,499},{4,10,258},{136,10,639},{4,11,22},{\r
-5,11,10},{6,10,22},{7,11,848},{7,10,903},{7,10,1963},{8,11,97},{138,10,577},{5,\r
-10,681},{136,10,782},{133,11,481},{132,0,351},{4,10,664},{5,10,804},{139,10,1013\r
-},{6,11,134},{7,11,437},{7,11,959},{9,11,37},{14,11,285},{14,11,371},{144,11,60}\r
-,{7,11,486},{8,11,155},{11,11,93},{140,11,164},{132,0,286},{7,0,438},{7,0,627},{\r
-7,0,1516},{8,0,40},{9,0,56},{9,0,294},{10,0,30},{11,0,969},{11,0,995},{146,0,148\r
-},{5,11,591},{135,11,337},{134,0,1950},{133,10,32},{138,11,500},{5,11,380},{5,11\r
-,650},{136,11,310},{4,11,364},{7,11,1156},{7,11,1187},{137,11,409},{4,0,738},{\r
-134,11,482},{4,11,781},{6,11,487},{7,11,926},{8,11,263},{139,11,500},{135,11,418\r
-},{6,0,2047},{10,0,969},{4,10,289},{7,10,629},{7,10,1698},{7,10,1711},{140,10,\r
-215},{6,10,450},{136,10,109},{134,0,818},{136,10,705},{133,0,866},{4,11,94},{135\r
-,11,1265},{132,11,417},{134,0,1467},{135,10,1238},{4,0,972},{6,0,1851},{134,0,\r
-1857},{134,0,355},{133,0,116},{132,0,457},{135,11,1411},{4,11,408},{4,11,741},{\r
-135,11,500},{134,10,26},{142,11,137},{5,0,527},{6,0,189},{7,0,859},{136,0,267},{\r
-11,0,104},{11,0,554},{15,0,60},{143,0,125},{134,0,1613},{4,10,414},{5,10,467},{9\r
-,10,654},{10,10,451},{12,10,59},{141,10,375},{135,10,17},{134,0,116},{135,11,541\r
-},{135,10,955},{6,11,73},{135,11,177},{133,11,576},{134,0,886},{133,0,487},{4,0,\r
-86},{5,0,667},{5,0,753},{6,0,316},{6,0,455},{135,0,946},{142,11,231},{150,0,45},\r
-{134,0,863},{134,0,1953},{6,10,280},{10,10,502},{11,10,344},{140,10,38},{4,0,79}\r
-,{7,0,1773},{10,0,450},{11,0,589},{13,0,332},{13,0,493},{14,0,183},{14,0,334},{\r
-14,0,362},{14,0,368},{14,0,376},{14,0,379},{19,0,90},{19,0,103},{19,0,127},{148,\r
-0,90},{5,10,45},{7,10,1161},{11,10,448},{11,10,880},{13,10,139},{13,10,407},{15,\r
-10,16},{17,10,95},{18,10,66},{18,10,88},{18,10,123},{149,10,7},{136,10,777},{4,\r
-10,410},{135,10,521},{135,10,1778},{135,11,538},{142,0,381},{133,11,413},{134,0,\r
-1142},{6,0,1189},{136,11,495},{5,0,663},{6,0,1962},{134,0,2003},{7,11,54},{8,11,\r
-312},{10,11,191},{10,11,614},{140,11,567},{132,10,436},{133,0,846},{10,0,528},{\r
-11,0,504},{7,10,1587},{135,10,1707},{5,0,378},{8,0,465},{9,0,286},{10,0,185},{10\r
-,0,562},{10,0,635},{11,0,31},{11,0,393},{13,0,312},{18,0,65},{18,0,96},{147,0,89\r
-},{7,0,899},{14,0,325},{6,11,468},{7,11,567},{7,11,1478},{8,11,530},{142,11,290}\r
-,{7,0,1880},{9,0,680},{139,0,798},{134,0,1770},{132,0,648},{150,11,35},{5,0,945}\r
-,{6,0,1656},{6,0,1787},{7,0,167},{8,0,824},{9,0,391},{10,0,375},{139,0,185},{6,\r
-11,484},{135,11,822},{134,0,2046},{7,0,1645},{8,0,352},{137,0,249},{132,0,152},{\r
-6,0,611},{135,0,1733},{6,11,1724},{135,11,2022},{133,0,1006},{141,11,96},{5,0,\r
-420},{135,0,1449},{146,11,149},{135,0,832},{135,10,663},{133,0,351},{5,0,40},{7,\r
-0,598},{7,0,1638},{8,0,78},{9,0,166},{9,0,640},{9,0,685},{9,0,773},{11,0,215},{\r
-13,0,65},{14,0,172},{14,0,317},{145,0,6},{8,0,60},{9,0,343},{139,0,769},{134,0,\r
-1354},{132,0,724},{137,0,745},{132,11,474},{7,0,1951},{8,0,765},{8,0,772},{140,0\r
-,671},{7,0,108},{8,0,219},{8,0,388},{9,0,775},{11,0,275},{140,0,464},{137,0,639}\r
-,{135,10,503},{133,11,366},{5,0,15},{6,0,56},{7,0,1758},{8,0,500},{9,0,730},{11,\r
-0,331},{13,0,150},{14,0,282},{5,11,305},{9,11,560},{141,11,208},{4,10,113},{5,10\r
-,163},{5,10,735},{7,10,1009},{9,10,9},{9,10,771},{12,10,90},{13,10,138},{13,10,\r
-410},{143,10,128},{4,10,324},{138,10,104},{135,11,466},{142,11,27},{134,0,1886},\r
-{5,0,205},{6,0,438},{9,0,711},{4,11,480},{6,11,167},{6,11,302},{6,11,1642},{7,11\r
-,130},{7,11,656},{7,11,837},{7,11,1547},{7,11,1657},{8,11,429},{9,11,228},{10,11\r
-,643},{13,11,289},{13,11,343},{147,11,101},{134,0,865},{6,0,2025},{136,0,965},{7\r
-,11,278},{10,11,739},{11,11,708},{141,11,348},{133,0,534},{135,11,1922},{137,0,\r
-691},{4,10,935},{133,10,823},{6,0,443},{9,0,237},{9,0,571},{9,0,695},{10,0,139},\r
-{11,0,715},{12,0,417},{141,0,421},{5,10,269},{7,10,434},{7,10,891},{8,10,339},{9\r
-,10,702},{11,10,594},{11,10,718},{145,10,100},{6,0,1555},{7,0,878},{9,10,485},{\r
-141,10,264},{134,10,1713},{7,10,1810},{11,10,866},{12,10,103},{141,10,495},{135,\r
-10,900},{6,0,1410},{9,11,316},{139,11,256},{4,0,995},{135,0,1033},{132,0,578},{\r
-10,0,881},{12,0,740},{12,0,743},{140,0,759},{132,0,822},{133,0,923},{142,10,143}\r
-,{135,11,1696},{6,11,363},{7,11,1955},{136,11,725},{132,0,924},{133,0,665},{135,\r
-10,2029},{135,0,1901},{4,0,265},{6,0,1092},{6,0,1417},{7,0,807},{135,0,950},{5,0\r
-,93},{12,0,267},{141,0,498},{135,0,1451},{5,11,813},{135,11,2046},{5,10,625},{\r
-135,10,1617},{135,0,747},{6,0,788},{137,0,828},{7,0,184},{11,0,307},{11,0,400},{\r
-15,0,130},{5,11,712},{7,11,1855},{8,10,425},{8,10,693},{9,10,720},{10,10,380},{\r
-10,10,638},{11,11,17},{11,10,473},{12,10,61},{13,11,321},{144,11,67},{135,0,198}\r
-,{6,11,320},{7,11,781},{7,11,1921},{9,11,55},{10,11,186},{10,11,273},{10,11,664}\r
-,{10,11,801},{11,11,996},{11,11,997},{13,11,157},{142,11,170},{136,11,271},{135,\r
-0,994},{7,11,103},{7,11,863},{11,11,184},{14,11,299},{145,11,62},{11,10,551},{\r
-142,10,159},{5,0,233},{5,0,320},{6,0,140},{8,0,295},{8,0,615},{136,11,615},{133,\r
-0,978},{4,0,905},{6,0,1701},{137,0,843},{132,10,168},{4,0,974},{8,0,850},{12,0,\r
-709},{12,0,768},{140,0,786},{135,10,91},{152,0,6},{138,10,532},{135,10,1884},{\r
-132,0,509},{6,0,1307},{135,0,273},{5,11,77},{7,11,1455},{10,11,843},{19,11,73},{\r
-150,11,5},{132,11,458},{135,11,1420},{6,11,109},{138,11,382},{6,0,201},{6,11,330\r
-},{7,10,70},{7,11,1084},{10,10,240},{11,11,142},{147,10,93},{7,0,1041},{140,11,\r
-328},{133,11,354},{134,0,1040},{133,0,693},{134,0,774},{139,0,234},{132,0,336},{\r
-7,0,1399},{139,10,392},{20,0,22},{148,11,22},{5,0,802},{7,0,2021},{136,0,805},{5\r
-,0,167},{5,0,899},{6,0,410},{137,0,777},{137,0,789},{134,0,1705},{7,10,655},{135\r
-,10,1844},{4,10,145},{6,10,176},{7,10,395},{137,10,562},{132,10,501},{135,0,10},\r
-{5,0,11},{6,0,117},{6,0,485},{7,0,1133},{9,0,582},{9,0,594},{10,0,82},{11,0,21},\r
-{11,0,818},{12,0,535},{13,0,86},{20,0,91},{23,0,13},{134,10,509},{4,0,264},{7,0,\r
-1067},{8,0,204},{8,0,385},{139,0,953},{139,11,737},{138,0,56},{134,0,1917},{133,\r
-0,470},{10,11,657},{14,11,297},{142,11,361},{135,11,412},{7,0,1198},{7,11,1198},\r
-{8,11,556},{14,11,123},{14,11,192},{143,11,27},{7,11,1985},{14,11,146},{15,11,42\r
-},{16,11,23},{17,11,86},{146,11,17},{11,0,1015},{136,11,122},{4,10,114},{9,10,\r
-492},{13,10,462},{142,10,215},{4,10,77},{5,10,361},{6,10,139},{6,10,401},{6,10,\r
-404},{7,10,413},{7,10,715},{7,10,1716},{11,10,279},{12,10,179},{12,10,258},{13,\r
-10,244},{142,10,358},{134,10,1717},{7,10,1061},{8,10,82},{11,10,250},{12,10,420}\r
-,{141,10,184},{133,0,715},{135,10,724},{9,0,919},{9,0,922},{9,0,927},{9,0,933},{\r
-9,0,962},{9,0,1000},{9,0,1002},{9,0,1021},{12,0,890},{12,0,907},{12,0,930},{15,0\r
-,207},{15,0,228},{15,0,238},{149,0,61},{8,0,794},{9,0,400},{10,0,298},{142,0,228\r
-},{5,11,430},{5,11,932},{6,11,131},{7,11,417},{9,11,522},{11,11,314},{141,11,390\r
-},{132,0,867},{8,0,724},{132,11,507},{137,11,261},{4,11,343},{133,11,511},{6,0,\r
-190},{7,0,768},{135,0,1170},{6,10,513},{135,10,1052},{7,11,455},{138,11,591},{\r
-134,0,1066},{137,10,899},{14,0,67},{147,0,60},{4,0,948},{18,0,174},{146,0,176},{\r
-135,0,1023},{7,10,1417},{12,10,382},{17,10,48},{152,10,12},{134,11,575},{132,0,\r
-764},{6,10,545},{7,10,565},{7,10,1669},{10,10,114},{11,10,642},{140,10,618},{6,0\r
-,137},{9,0,75},{9,0,253},{10,0,194},{138,0,444},{4,0,756},{133,10,5},{8,0,1008},\r
-{135,10,192},{132,0,842},{11,0,643},{12,0,115},{136,10,763},{139,0,67},{133,10,\r
-759},{4,0,821},{5,0,760},{7,0,542},{8,0,135},{8,0,496},{135,11,580},{7,10,370},{\r
-7,10,1007},{7,10,1177},{135,10,1565},{135,10,1237},{140,0,736},{7,0,319},{7,0,\r
-355},{7,0,763},{10,0,389},{145,0,43},{8,11,333},{138,11,182},{4,10,87},{5,10,250\r
-},{141,10,298},{138,0,786},{134,0,2044},{8,11,330},{140,11,477},{135,11,1338},{\r
-132,11,125},{134,0,1030},{134,0,1083},{132,11,721},{135,10,814},{7,11,776},{8,11\r
-,145},{147,11,56},{134,0,1226},{4,10,57},{7,10,1195},{7,10,1438},{7,10,1548},{7,\r
-10,1835},{7,10,1904},{9,10,757},{10,10,604},{139,10,519},{7,11,792},{8,11,147},{\r
-10,11,821},{139,11,1021},{137,11,797},{4,0,58},{5,0,286},{6,0,319},{7,0,402},{7,\r
-0,1254},{7,0,1903},{8,0,356},{140,0,408},{4,0,389},{4,0,815},{9,0,181},{9,0,255}\r
-,{10,0,8},{10,0,29},{10,0,816},{11,0,311},{11,0,561},{12,0,67},{141,0,181},{7,11\r
-,1472},{135,11,1554},{7,11,1071},{7,11,1541},{7,11,1767},{7,11,1806},{7,11,1999}\r
-,{9,11,248},{10,11,400},{11,11,162},{11,11,178},{11,11,242},{12,11,605},{15,11,\r
-26},{144,11,44},{5,11,168},{5,11,930},{8,11,74},{9,11,623},{12,11,500},{12,11,\r
-579},{13,11,41},{143,11,93},{6,11,220},{7,11,1101},{141,11,105},{5,0,474},{7,0,\r
-507},{4,10,209},{7,11,507},{135,10,902},{132,0,427},{6,0,413},{7,10,335},{7,10,\r
-1437},{7,10,1668},{8,10,553},{8,10,652},{8,10,656},{9,10,558},{11,10,743},{149,\r
-10,18},{132,0,730},{6,11,19},{7,11,1413},{139,11,428},{133,0,373},{132,10,559},{\r
-7,11,96},{8,11,401},{137,11,896},{7,0,799},{7,0,1972},{5,10,1017},{138,10,511},{\r
-135,0,1793},{7,11,1961},{7,11,1965},{8,11,702},{136,11,750},{8,11,150},{8,11,737\r
-},{140,11,366},{132,0,322},{133,10,709},{8,11,800},{9,11,148},{9,11,872},{9,11,\r
-890},{11,11,309},{11,11,1001},{13,11,267},{141,11,323},{134,10,1745},{7,0,290},{\r
-136,10,206},{7,0,1651},{145,0,89},{139,0,2},{132,0,672},{6,0,1860},{8,0,905},{10\r
-,0,844},{10,0,846},{10,0,858},{12,0,699},{12,0,746},{140,0,772},{135,11,424},{\r
-133,11,547},{133,0,737},{5,11,490},{6,11,615},{6,11,620},{135,11,683},{6,0,746},\r
-{134,0,1612},{132,10,776},{9,11,385},{149,11,17},{133,0,145},{135,10,1272},{7,0,\r
-884},{140,0,124},{4,0,387},{135,0,1288},{5,11,133},{136,10,406},{136,11,187},{6,\r
-0,679},{8,11,8},{138,11,0},{135,0,550},{135,11,798},{136,11,685},{7,11,1086},{\r
-145,11,46},{8,10,175},{10,10,168},{138,10,573},{135,0,1305},{4,0,576},{135,0,\r
-1263},{6,0,686},{134,0,1563},{134,0,607},{5,0,919},{134,0,1673},{148,0,37},{8,11\r
-,774},{10,11,670},{140,11,51},{133,10,784},{139,10,882},{4,0,82},{5,0,333},{5,0,\r
-904},{6,0,207},{7,0,325},{7,0,1726},{8,0,101},{10,0,778},{139,0,220},{135,11,371\r
-},{132,0,958},{133,0,903},{4,11,127},{5,11,350},{6,11,356},{8,11,426},{9,11,572}\r
-,{10,11,247},{139,11,312},{140,0,147},{6,11,59},{7,11,885},{9,11,603},{141,11,\r
-397},{10,0,367},{9,10,14},{9,10,441},{139,10,9},{11,10,966},{12,10,287},{13,10,\r
-342},{13,10,402},{15,10,110},{143,10,163},{134,0,690},{132,0,705},{9,0,651},{11,\r
-0,971},{13,0,273},{7,10,1428},{7,10,1640},{7,10,1867},{9,10,169},{9,10,182},{9,\r
-10,367},{9,10,478},{9,10,506},{9,10,551},{9,10,557},{9,10,648},{9,10,697},{9,10,\r
-705},{9,10,725},{9,10,787},{9,10,794},{10,10,198},{10,10,214},{10,10,267},{10,10\r
-,275},{10,10,456},{10,10,551},{10,10,561},{10,10,613},{10,10,627},{10,10,668},{\r
-10,10,675},{10,10,691},{10,10,695},{10,10,707},{10,10,715},{11,10,183},{11,10,\r
-201},{11,10,262},{11,10,352},{11,10,439},{11,10,493},{11,10,572},{11,10,591},{11\r
-,10,608},{11,10,611},{11,10,646},{11,10,674},{11,10,711},{11,10,751},{11,10,761}\r
-,{11,10,776},{11,10,785},{11,10,850},{11,10,853},{11,10,862},{11,10,865},{11,10,\r
-868},{11,10,875},{11,10,898},{11,10,902},{11,10,903},{11,10,910},{11,10,932},{11\r
-,10,942},{11,10,957},{11,10,967},{11,10,972},{12,10,148},{12,10,195},{12,10,220}\r
-,{12,10,237},{12,10,318},{12,10,339},{12,10,393},{12,10,445},{12,10,450},{12,10,\r
-474},{12,10,505},{12,10,509},{12,10,533},{12,10,591},{12,10,594},{12,10,597},{12\r
-,10,621},{12,10,633},{12,10,642},{13,10,59},{13,10,60},{13,10,145},{13,10,239},{\r
-13,10,250},{13,10,329},{13,10,344},{13,10,365},{13,10,372},{13,10,387},{13,10,\r
-403},{13,10,414},{13,10,456},{13,10,470},{13,10,478},{13,10,483},{13,10,489},{14\r
-,10,55},{14,10,57},{14,10,81},{14,10,90},{14,10,148},{14,10,239},{14,10,266},{14\r
-,10,321},{14,10,326},{14,10,327},{14,10,330},{14,10,347},{14,10,355},{14,10,401}\r
-,{14,10,404},{14,10,411},{14,10,414},{14,10,416},{14,10,420},{15,10,61},{15,10,\r
-74},{15,10,87},{15,10,88},{15,10,94},{15,10,96},{15,10,116},{15,10,149},{15,10,\r
-154},{16,10,50},{16,10,63},{16,10,73},{17,10,2},{17,10,66},{17,10,92},{17,10,103\r
-},{17,10,112},{17,10,120},{18,10,50},{18,10,54},{18,10,82},{18,10,86},{18,10,90}\r
-,{18,10,111},{18,10,115},{18,10,156},{19,10,40},{19,10,79},{20,10,78},{149,10,22\r
-},{7,0,887},{5,10,161},{135,10,839},{142,11,98},{134,0,90},{138,11,356},{135,11,\r
-441},{6,11,111},{7,11,4},{8,11,163},{8,11,776},{138,11,566},{134,0,908},{134,0,\r
-1261},{7,0,813},{12,0,497},{141,0,56},{134,0,1235},{135,0,429},{135,11,1994},{\r
-138,0,904},{6,0,125},{7,0,1277},{137,0,772},{151,0,12},{4,0,841},{5,0,386},{133,\r
-11,386},{5,11,297},{135,11,1038},{6,0,860},{6,0,1069},{135,11,309},{136,0,946},{\r
-135,10,1814},{141,11,418},{136,11,363},{10,0,768},{139,0,787},{22,11,30},{150,11\r
-,33},{6,0,160},{7,0,1106},{9,0,770},{11,0,112},{140,0,413},{11,11,216},{139,11,\r
-340},{136,10,139},{135,11,1390},{135,11,808},{132,11,280},{12,0,271},{17,0,109},\r
-{7,10,643},{136,10,236},{140,11,54},{4,11,421},{133,11,548},{11,0,719},{12,0,36}\r
-,{141,0,337},{7,0,581},{9,0,644},{137,0,699},{11,11,511},{13,11,394},{14,11,298}\r
-,{14,11,318},{146,11,103},{7,0,304},{9,0,646},{9,0,862},{11,0,696},{12,0,208},{\r
-15,0,79},{147,0,108},{4,0,631},{7,0,1126},{135,0,1536},{135,11,1527},{8,0,880},{\r
-10,0,869},{138,0,913},{7,0,1513},{5,10,54},{6,11,254},{9,11,109},{138,11,103},{\r
-135,0,981},{133,11,729},{132,10,744},{132,0,434},{134,0,550},{7,0,930},{10,0,476\r
-},{13,0,452},{19,0,104},{6,11,1630},{10,10,402},{146,10,55},{5,0,553},{138,0,824\r
-},{136,0,452},{8,0,151},{137,10,624},{132,10,572},{132,0,772},{133,11,671},{133,\r
-0,292},{138,0,135},{132,11,889},{140,11,207},{9,0,504},{6,10,43},{7,10,38},{8,10\r
-,248},{138,10,513},{6,0,1089},{135,11,1910},{4,11,627},{133,11,775},{135,0,783},\r
-{133,10,766},{133,10,363},{7,0,387},{135,11,387},{7,0,393},{10,0,603},{11,0,206}\r
-,{7,11,202},{11,11,362},{11,11,948},{140,11,388},{6,11,507},{7,11,451},{8,11,389\r
-},{12,11,490},{13,11,16},{13,11,215},{13,11,351},{18,11,132},{147,11,125},{4,0,\r
-912},{9,0,232},{135,11,841},{6,10,258},{140,10,409},{5,10,249},{148,10,82},{136,\r
-11,566},{6,0,977},{135,11,1214},{7,0,1973},{136,0,716},{135,0,98},{133,0,733},{5\r
-,11,912},{134,11,1695},{5,10,393},{6,10,378},{7,10,1981},{9,10,32},{9,10,591},{\r
-10,10,685},{10,10,741},{142,10,382},{133,10,788},{10,0,19},{11,0,911},{7,10,1968\r
-},{141,10,509},{5,0,668},{5,11,236},{6,11,572},{8,11,492},{11,11,618},{144,11,56\r
-},{135,11,1789},{4,0,360},{5,0,635},{5,0,700},{5,10,58},{5,10,171},{5,10,683},{6\r
-,10,291},{6,10,566},{7,10,1650},{11,10,523},{12,10,273},{12,10,303},{15,10,39},{\r
-143,10,111},{133,0,901},{134,10,589},{5,11,190},{136,11,318},{140,0,656},{7,0,\r
-726},{152,0,9},{4,10,917},{133,10,1005},{135,10,1598},{134,11,491},{4,10,919},{\r
-133,11,434},{137,0,72},{6,0,1269},{6,0,1566},{134,0,1621},{9,0,463},{10,0,595},{\r
-4,10,255},{5,10,302},{6,10,132},{7,10,128},{7,10,283},{7,10,1299},{10,10,52},{10\r
-,10,514},{11,10,925},{13,10,92},{142,10,309},{135,0,1454},{134,0,1287},{11,0,600\r
-},{13,0,245},{137,10,173},{136,0,989},{7,0,164},{7,0,1571},{9,0,107},{140,0,225}\r
-,{6,0,1061},{141,10,442},{4,0,27},{5,0,484},{5,0,510},{6,0,434},{7,0,1000},{7,0,\r
-1098},{136,0,2},{7,11,85},{7,11,247},{8,11,585},{10,11,163},{138,11,316},{11,11,\r
-103},{142,11,0},{134,0,1127},{4,0,460},{134,0,852},{134,10,210},{4,0,932},{133,0\r
-,891},{6,0,588},{147,11,83},{8,0,625},{4,10,284},{134,10,223},{134,0,76},{8,0,92\r
-},{137,0,221},{4,11,124},{10,11,457},{11,11,121},{11,11,169},{11,11,422},{11,11,\r
-870},{12,11,214},{13,11,389},{14,11,187},{143,11,77},{9,11,618},{138,11,482},{4,\r
-10,218},{7,10,526},{143,10,137},{13,0,9},{14,0,104},{14,0,311},{4,10,270},{5,10,\r
-192},{6,10,332},{135,10,1322},{140,10,661},{135,11,1193},{6,11,107},{7,11,638},{\r
-7,11,1632},{137,11,396},{132,0,763},{4,0,622},{5,11,370},{134,11,1756},{133,0,\r
-253},{135,0,546},{9,0,73},{10,0,110},{14,0,185},{17,0,119},{133,11,204},{7,0,624\r
-},{7,0,916},{10,0,256},{139,0,87},{7,10,379},{8,10,481},{137,10,377},{5,0,212},{\r
-12,0,35},{13,0,382},{5,11,970},{134,11,1706},{9,0,746},{5,10,1003},{134,10,149},\r
-{10,0,150},{11,0,849},{13,0,330},{8,10,262},{9,10,627},{11,10,214},{11,10,404},{\r
-11,10,457},{11,10,780},{11,10,913},{13,10,401},{142,10,200},{134,0,1466},{135,11\r
-,3},{6,0,1299},{4,11,35},{5,11,121},{5,11,483},{5,11,685},{6,11,489},{7,11,1204}\r
-,{136,11,394},{135,10,742},{4,10,142},{136,10,304},{4,11,921},{133,11,1007},{134\r
-,0,1518},{6,0,1229},{135,0,1175},{133,0,816},{12,0,159},{4,10,471},{4,11,712},{5\r
-,10,51},{6,10,602},{7,10,925},{8,10,484},{138,10,195},{134,11,1629},{5,0,869},{5\r
-,0,968},{6,0,1626},{8,0,734},{136,0,784},{4,0,542},{6,0,1716},{6,0,1727},{7,0,\r
-1082},{7,0,1545},{8,0,56},{8,0,118},{8,0,412},{8,0,564},{9,0,888},{9,0,908},{10,\r
-0,50},{10,0,423},{11,0,685},{11,0,697},{11,0,933},{12,0,299},{13,0,126},{13,0,\r
-136},{13,0,170},{13,0,190},{136,10,688},{132,10,697},{4,0,232},{9,0,202},{10,0,\r
-474},{140,0,433},{136,0,212},{6,0,108},{7,0,1003},{7,0,1181},{8,0,111},{136,0,\r
-343},{5,10,221},{135,11,1255},{133,11,485},{134,0,1712},{142,0,216},{5,0,643},{6\r
-,0,516},{4,11,285},{5,11,317},{6,11,301},{7,11,7},{8,11,153},{10,11,766},{11,11,\r
-468},{12,11,467},{141,11,143},{4,0,133},{7,0,711},{7,0,1298},{135,0,1585},{134,0\r
-,650},{135,11,512},{6,0,99},{7,0,1808},{145,0,57},{6,0,246},{6,0,574},{7,0,428},\r
-{9,0,793},{10,0,669},{11,0,485},{11,0,840},{12,0,300},{14,0,250},{145,0,55},{4,\r
-10,132},{5,10,69},{135,10,1242},{136,0,1023},{7,0,302},{132,10,111},{135,0,1871}\r
-,{132,0,728},{9,0,252},{132,10,767},{6,0,461},{7,0,1590},{7,10,1416},{7,10,2005}\r
-,{8,10,131},{8,10,466},{9,10,672},{13,10,252},{148,10,103},{6,0,323},{135,0,1564\r
-},{7,0,461},{136,0,775},{6,10,44},{136,10,368},{139,0,172},{132,0,464},{4,10,570\r
-},{133,10,120},{137,11,269},{6,10,227},{135,10,1589},{6,11,1719},{6,11,1735},{7,\r
-11,2016},{7,11,2020},{8,11,837},{137,11,852},{7,0,727},{146,0,73},{132,0,1023},{\r
-135,11,852},{135,10,1529},{136,0,577},{138,11,568},{134,0,1037},{8,11,67},{138,\r
-11,419},{4,0,413},{5,0,677},{8,0,432},{140,0,280},{10,0,600},{6,10,1667},{7,11,\r
-967},{7,10,2036},{141,11,11},{6,10,511},{140,10,132},{6,0,799},{5,10,568},{6,10,\r
-138},{135,10,1293},{8,0,159},{4,10,565},{136,10,827},{7,0,646},{7,0,1730},{11,0,\r
-446},{141,0,178},{4,10,922},{133,10,1023},{135,11,11},{132,0,395},{11,0,145},{\r
-135,10,1002},{9,0,174},{10,0,164},{11,0,440},{11,0,514},{11,0,841},{15,0,98},{\r
-149,0,20},{134,0,426},{10,0,608},{139,0,1002},{7,11,320},{8,11,51},{12,11,481},{\r
-12,11,570},{148,11,106},{9,0,977},{9,0,983},{132,11,445},{138,0,250},{139,0,100}\r
-,{6,0,1982},{136,10,402},{133,11,239},{4,10,716},{141,10,31},{5,0,476},{7,11,83}\r
-,{7,11,1990},{8,11,130},{139,11,720},{8,10,691},{136,10,731},{5,11,123},{6,11,\r
-530},{7,11,348},{135,11,1419},{5,0,76},{6,0,458},{6,0,497},{7,0,868},{9,0,658},{\r
-10,0,594},{11,0,173},{11,0,566},{12,0,20},{12,0,338},{141,0,200},{9,11,139},{10,\r
-11,399},{11,11,469},{12,11,634},{141,11,223},{9,10,840},{138,10,803},{133,10,847\r
-},{11,11,223},{140,11,168},{132,11,210},{8,0,447},{9,10,53},{9,10,268},{9,10,901\r
-},{10,10,518},{10,10,829},{11,10,188},{13,10,74},{14,10,46},{15,10,17},{15,10,33\r
-},{17,10,40},{18,10,36},{19,10,20},{22,10,1},{152,10,2},{4,0,526},{7,0,1029},{\r
-135,0,1054},{19,11,59},{150,11,2},{4,0,636},{6,0,1875},{6,0,1920},{9,0,999},{12,\r
-0,807},{12,0,825},{15,0,179},{15,0,190},{18,0,182},{136,10,532},{6,0,1699},{7,0,\r
-660},{7,0,1124},{17,0,31},{19,0,22},{151,0,14},{135,10,681},{132,11,430},{140,10\r
-,677},{4,10,684},{136,10,384},{132,11,756},{133,11,213},{7,0,188},{7,10,110},{8,\r
-10,290},{8,10,591},{9,10,382},{9,10,649},{11,10,71},{11,10,155},{11,10,313},{12,\r
-10,5},{13,10,325},{142,10,287},{7,10,360},{7,10,425},{9,10,66},{9,10,278},{138,\r
-10,644},{142,11,164},{4,0,279},{7,0,301},{137,0,362},{134,11,586},{135,0,1743},{\r
-4,0,178},{133,0,399},{4,10,900},{133,10,861},{5,10,254},{7,10,985},{136,10,73},{\r
-133,11,108},{7,10,1959},{136,10,683},{133,11,219},{4,11,193},{5,11,916},{7,11,\r
-364},{10,11,398},{10,11,726},{11,11,317},{11,11,626},{12,11,142},{12,11,288},{12\r
-,11,678},{13,11,313},{15,11,113},{18,11,114},{21,11,30},{150,11,53},{6,11,241},{\r
-7,11,907},{8,11,832},{9,11,342},{10,11,729},{11,11,284},{11,11,445},{11,11,651},\r
-{11,11,863},{13,11,398},{146,11,99},{132,0,872},{134,0,831},{134,0,1692},{6,0,\r
-202},{6,0,1006},{9,0,832},{10,0,636},{11,0,208},{12,0,360},{17,0,118},{18,0,27},\r
-{20,0,67},{137,11,734},{132,10,725},{7,11,993},{138,11,666},{134,0,1954},{134,10\r
-,196},{7,0,872},{10,0,516},{139,0,167},{133,10,831},{4,11,562},{9,11,254},{139,\r
-11,879},{137,0,313},{4,0,224},{132,11,786},{11,0,24},{12,0,170},{136,10,723},{5,\r
-0,546},{7,0,35},{8,0,11},{8,0,12},{9,0,315},{9,0,533},{10,0,802},{11,0,166},{12,\r
-0,525},{142,0,243},{7,0,1937},{13,10,80},{13,10,437},{145,10,74},{5,0,241},{8,0,\r
-242},{9,0,451},{10,0,667},{11,0,598},{140,0,429},{150,0,46},{6,0,1273},{137,0,\r
-830},{5,10,848},{6,10,66},{136,10,764},{6,0,825},{134,0,993},{4,0,1006},{10,0,\r
-327},{13,0,271},{4,10,36},{7,10,1387},{139,10,755},{134,0,1023},{135,0,1580},{4,\r
-0,366},{137,0,516},{132,10,887},{6,0,1736},{135,0,1891},{6,11,216},{7,11,901},{7\r
-,11,1343},{136,11,493},{6,10,165},{138,10,388},{7,11,341},{139,11,219},{4,10,719\r
-},{135,10,155},{134,0,1935},{132,0,826},{6,0,331},{6,0,1605},{8,0,623},{11,0,139\r
-},{139,0,171},{135,11,1734},{10,11,115},{11,11,420},{12,11,154},{13,11,404},{14,\r
-11,346},{15,11,54},{143,11,112},{7,0,288},{4,10,353},{6,10,146},{6,10,1789},{7,\r
-10,990},{7,10,1348},{9,10,665},{9,10,898},{11,10,893},{142,10,212},{6,0,916},{\r
-134,0,1592},{7,0,1888},{4,10,45},{135,10,1257},{5,11,1011},{136,11,701},{139,11,\r
-596},{4,11,54},{5,11,666},{7,11,1039},{7,11,1130},{9,11,195},{138,11,302},{134,0\r
-,1471},{134,0,1570},{132,0,394},{140,10,65},{136,10,816},{135,0,1931},{7,0,574},\r
-{135,0,1719},{134,11,467},{132,0,658},{9,0,781},{10,0,144},{11,0,385},{13,0,161}\r
-,{13,0,228},{13,0,268},{20,0,107},{134,11,1669},{136,0,374},{135,0,735},{4,0,344\r
-},{6,0,498},{139,0,323},{7,0,586},{7,0,1063},{6,10,559},{134,10,1691},{137,0,155\r
-},{133,0,906},{7,11,122},{9,11,259},{10,11,84},{11,11,470},{12,11,541},{141,11,\r
-379},{134,0,1139},{10,0,108},{139,0,116},{134,10,456},{133,10,925},{5,11,82},{5,\r
-11,131},{7,11,1755},{8,11,31},{9,11,168},{9,11,764},{139,11,869},{134,11,605},{5\r
-,11,278},{137,11,68},{4,11,163},{5,11,201},{5,11,307},{5,11,310},{6,11,335},{7,\r
-11,284},{136,11,165},{135,11,1660},{6,11,33},{135,11,1244},{4,0,616},{136,11,483\r
-},{8,0,857},{8,0,902},{8,0,910},{10,0,879},{12,0,726},{4,11,199},{139,11,34},{\r
-136,0,692},{6,10,193},{7,10,240},{7,10,1682},{10,10,51},{10,10,640},{11,10,410},\r
-{13,10,82},{14,10,247},{14,10,331},{142,10,377},{6,0,823},{134,0,983},{139,10,\r
-411},{132,0,305},{136,10,633},{138,11,203},{134,0,681},{6,11,326},{7,11,677},{\r
-137,11,425},{5,0,214},{7,0,603},{8,0,611},{9,0,686},{10,0,88},{11,0,459},{11,0,\r
-496},{12,0,463},{12,0,590},{141,0,0},{136,0,1004},{142,0,23},{134,0,1703},{147,\r
-11,8},{145,11,56},{135,0,1443},{4,10,237},{135,10,514},{6,0,714},{145,0,19},{5,\r
-11,358},{7,11,473},{7,11,1184},{10,11,662},{13,11,212},{13,11,304},{13,11,333},{\r
-145,11,98},{4,0,737},{10,0,98},{11,0,294},{12,0,60},{12,0,437},{13,0,64},{13,0,\r
-380},{142,0,430},{6,10,392},{7,10,65},{135,10,2019},{6,0,1758},{8,0,520},{9,0,\r
-345},{9,0,403},{142,0,350},{5,0,47},{10,0,242},{138,0,579},{5,0,139},{7,0,1168},\r
-{138,0,539},{134,0,1459},{13,0,388},{141,11,388},{134,0,253},{7,10,1260},{135,10\r
-,1790},{10,0,252},{9,10,222},{139,10,900},{140,0,745},{133,11,946},{4,0,107},{7,\r
-0,613},{8,0,439},{8,0,504},{9,0,501},{10,0,383},{139,0,477},{135,11,1485},{132,0\r
-,871},{7,11,411},{7,11,590},{8,11,631},{9,11,323},{10,11,355},{11,11,491},{12,11\r
-,143},{12,11,402},{13,11,73},{14,11,408},{15,11,107},{146,11,71},{132,0,229},{\r
-132,0,903},{140,0,71},{133,0,549},{4,0,47},{6,0,373},{7,0,452},{7,0,543},{7,0,\r
-1828},{7,0,1856},{9,0,6},{11,0,257},{139,0,391},{7,11,1467},{8,11,328},{10,11,\r
-544},{11,11,955},{13,11,320},{145,11,83},{5,0,980},{134,0,1754},{136,0,865},{5,0\r
-,705},{137,0,606},{7,0,161},{8,10,201},{136,10,605},{143,11,35},{5,11,835},{6,11\r
-,483},{140,10,224},{7,0,536},{7,0,1331},{136,0,143},{134,0,1388},{5,0,724},{10,0\r
-,305},{11,0,151},{12,0,33},{12,0,121},{12,0,381},{17,0,3},{17,0,27},{17,0,78},{\r
-18,0,18},{19,0,54},{149,0,5},{4,10,523},{133,10,638},{5,0,19},{134,0,533},{5,0,\r
-395},{5,0,951},{134,0,1776},{135,0,1908},{132,0,846},{10,0,74},{11,0,663},{12,0,\r
-210},{13,0,166},{13,0,310},{14,0,373},{18,0,95},{19,0,43},{6,10,242},{7,10,227},\r
-{7,10,1581},{8,10,104},{9,10,113},{9,10,220},{9,10,427},{10,10,239},{11,10,579},\r
-{11,10,1023},{13,10,4},{13,10,204},{13,10,316},{148,10,86},{9,11,716},{11,11,108\r
-},{13,11,123},{14,11,252},{19,11,38},{21,11,3},{151,11,11},{8,0,372},{9,0,122},{\r
-138,0,175},{132,11,677},{7,11,1374},{136,11,540},{135,10,861},{132,0,695},{7,0,\r
-497},{9,0,387},{147,0,81},{136,0,937},{134,0,718},{7,0,1328},{136,10,494},{132,\r
-11,331},{6,0,1581},{133,11,747},{5,0,284},{6,0,49},{6,0,350},{7,0,1},{7,0,377},{\r
-7,0,1693},{8,0,18},{8,0,678},{9,0,161},{9,0,585},{9,0,671},{9,0,839},{11,0,912},\r
-{141,0,427},{7,10,1306},{8,10,505},{9,10,482},{10,10,126},{11,10,225},{12,10,347\r
-},{12,10,449},{13,10,19},{14,10,218},{142,10,435},{10,10,764},{12,10,120},{13,10\r
-,39},{145,10,127},{4,0,597},{133,10,268},{134,0,1094},{4,0,1008},{134,0,1973},{\r
-132,0,811},{139,0,908},{135,0,1471},{133,11,326},{4,10,384},{135,10,1022},{7,0,\r
-1935},{8,0,324},{12,0,42},{4,11,691},{7,11,1935},{8,11,324},{9,11,35},{10,11,680\r
-},{11,11,364},{12,11,42},{13,11,357},{146,11,16},{135,0,2014},{7,0,2007},{9,0,\r
-101},{9,0,450},{10,0,66},{10,0,842},{11,0,536},{12,0,587},{6,11,32},{7,11,385},{\r
-7,11,757},{7,11,1916},{8,11,37},{8,11,94},{8,11,711},{9,11,541},{10,11,162},{10,\r
-11,795},{11,11,989},{11,11,1010},{12,11,14},{142,11,308},{139,0,586},{135,10,\r
-1703},{7,0,1077},{11,0,28},{9,10,159},{140,10,603},{6,0,1221},{136,10,583},{6,11\r
-,152},{6,11,349},{6,11,1682},{7,11,1252},{8,11,112},{9,11,435},{9,11,668},{10,11\r
-,290},{10,11,319},{10,11,815},{11,11,180},{11,11,837},{12,11,240},{13,11,152},{\r
-13,11,219},{142,11,158},{139,0,62},{132,10,515},{8,10,632},{8,10,697},{137,10,\r
-854},{134,0,1766},{132,11,581},{6,11,126},{7,11,573},{8,11,397},{142,11,44},{150\r
-,0,28},{11,0,670},{22,0,25},{4,10,136},{133,10,551},{6,0,1665},{7,0,256},{7,0,\r
-1388},{138,0,499},{4,0,22},{5,0,10},{7,0,1576},{136,0,97},{134,10,1782},{5,0,481\r
-},{7,10,1287},{9,10,44},{10,10,552},{10,10,642},{11,10,839},{12,10,274},{12,10,\r
-275},{12,10,372},{13,10,91},{142,10,125},{133,11,926},{7,11,1232},{137,11,531},{\r
-6,0,134},{7,0,437},{7,0,1824},{9,0,37},{14,0,285},{142,0,371},{7,0,486},{8,0,155\r
-},{11,0,93},{140,0,164},{6,0,1391},{134,0,1442},{133,11,670},{133,0,591},{6,10,\r
-147},{7,10,886},{7,11,1957},{9,10,753},{138,10,268},{5,0,380},{5,0,650},{7,0,\r
-1173},{136,0,310},{4,0,364},{7,0,1156},{7,0,1187},{137,0,409},{135,11,1621},{134\r
-,0,482},{133,11,506},{4,0,781},{6,0,487},{7,0,926},{8,0,263},{139,0,500},{138,10\r
-,137},{135,11,242},{139,11,96},{133,10,414},{135,10,1762},{134,0,804},{5,11,834}\r
-,{7,11,1202},{8,11,14},{9,11,481},{137,11,880},{134,10,599},{4,0,94},{135,0,1265\r
-},{4,0,415},{132,0,417},{5,0,348},{6,0,522},{6,10,1749},{7,11,1526},{138,11,465}\r
-,{134,10,1627},{132,0,1012},{132,10,488},{4,11,357},{6,11,172},{7,11,143},{137,\r
-11,413},{4,10,83},{4,11,590},{146,11,76},{140,10,676},{7,11,287},{8,11,355},{9,\r
-11,293},{137,11,743},{134,10,278},{6,0,1803},{18,0,165},{24,0,21},{5,11,169},{7,\r
-11,333},{136,11,45},{12,10,97},{140,11,97},{4,0,408},{4,0,741},{135,0,500},{132,\r
-11,198},{7,10,388},{7,10,644},{139,10,781},{4,11,24},{5,11,140},{5,11,185},{7,11\r
-,1500},{11,11,565},{139,11,838},{6,0,1321},{9,0,257},{7,10,229},{8,10,59},{9,10,\r
-190},{10,10,378},{140,10,191},{4,11,334},{133,11,593},{135,11,1885},{134,0,1138}\r
-,{4,0,249},{6,0,73},{135,0,177},{133,0,576},{142,0,231},{137,0,288},{132,10,660}\r
-,{7,10,1035},{138,10,737},{135,0,1487},{6,0,989},{9,0,433},{7,10,690},{9,10,587}\r
-,{140,10,521},{7,0,1264},{7,0,1678},{11,0,945},{12,0,341},{12,0,471},{140,0,569}\r
-,{132,11,709},{133,11,897},{5,11,224},{13,11,174},{146,11,52},{135,11,1840},{134\r
-,10,1744},{12,0,87},{16,0,74},{4,10,733},{9,10,194},{10,10,92},{11,10,198},{12,\r
-10,84},{141,10,128},{140,0,779},{135,0,538},{4,11,608},{133,11,497},{133,0,413},\r
-{7,11,1375},{7,11,1466},{138,11,331},{136,0,495},{6,11,540},{136,11,136},{7,0,54\r
-},{8,0,312},{10,0,191},{10,0,614},{140,0,567},{6,0,468},{7,0,567},{7,0,1478},{8,\r
-0,530},{14,0,290},{133,11,999},{4,11,299},{7,10,306},{135,11,1004},{142,11,296},\r
-{134,0,1484},{133,10,979},{6,0,609},{9,0,815},{12,11,137},{14,11,9},{14,11,24},{\r
-142,11,64},{133,11,456},{6,0,484},{135,0,822},{133,10,178},{136,11,180},{132,11,\r
-755},{137,0,900},{135,0,1335},{6,0,1724},{135,0,2022},{135,11,1139},{5,0,640},{\r
-132,10,390},{6,0,1831},{138,11,633},{135,11,566},{4,11,890},{5,11,805},{5,11,819\r
-},{5,11,961},{6,11,396},{6,11,1631},{6,11,1678},{7,11,1967},{7,11,2041},{9,11,\r
-630},{11,11,8},{11,11,1019},{12,11,176},{13,11,225},{14,11,292},{149,11,24},{132\r
-,0,474},{134,0,1103},{135,0,1504},{134,0,1576},{6,0,961},{6,0,1034},{140,0,655},\r
-{11,11,514},{149,11,20},{5,0,305},{135,11,1815},{7,11,1505},{10,11,190},{10,11,\r
-634},{11,11,792},{12,11,358},{140,11,447},{5,11,0},{6,11,536},{7,11,604},{13,11,\r
-445},{145,11,126},{7,0,1236},{133,10,105},{4,0,480},{6,0,217},{6,0,302},{6,0,\r
-1642},{7,0,130},{7,0,837},{7,0,1321},{7,0,1547},{7,0,1657},{8,0,429},{9,0,228},{\r
-13,0,289},{13,0,343},{19,0,101},{6,11,232},{6,11,412},{7,11,1074},{8,11,9},{8,11\r
-,157},{8,11,786},{9,11,196},{9,11,352},{9,11,457},{10,11,337},{11,11,232},{11,11\r
-,877},{12,11,480},{140,11,546},{5,10,438},{7,11,958},{9,10,694},{12,10,627},{13,\r
-11,38},{141,10,210},{4,11,382},{136,11,579},{7,0,278},{10,0,739},{11,0,708},{141\r
-,0,348},{4,11,212},{135,11,1206},{135,11,1898},{6,0,708},{6,0,1344},{152,10,11},\r
-{137,11,768},{134,0,1840},{140,0,233},{8,10,25},{138,10,826},{6,0,2017},{133,11,\r
-655},{6,0,1488},{139,11,290},{132,10,308},{134,0,1590},{134,0,1800},{134,0,1259}\r
-,{16,0,28},{6,11,231},{7,11,95},{136,11,423},{133,11,300},{135,10,150},{136,10,\r
-649},{7,11,1874},{137,11,641},{6,11,237},{7,11,611},{8,11,100},{9,11,416},{11,11\r
-,335},{12,11,173},{146,11,101},{137,0,45},{134,10,521},{17,0,36},{14,11,26},{146\r
-,11,150},{7,0,1442},{14,0,22},{5,10,339},{15,10,41},{15,10,166},{147,10,66},{8,0\r
-,378},{6,11,581},{135,11,1119},{134,0,1507},{147,11,117},{139,0,39},{134,0,1054}\r
-,{6,0,363},{7,0,1955},{136,0,725},{134,0,2036},{133,11,199},{6,0,1871},{9,0,935}\r
-,{9,0,961},{9,0,1004},{9,0,1016},{12,0,805},{12,0,852},{12,0,853},{12,0,869},{12\r
-,0,882},{12,0,896},{12,0,906},{12,0,917},{12,0,940},{15,0,170},{15,0,176},{15,0,\r
-188},{15,0,201},{15,0,205},{15,0,212},{15,0,234},{15,0,244},{18,0,181},{18,0,193\r
-},{18,0,196},{18,0,201},{18,0,202},{18,0,210},{18,0,217},{18,0,235},{18,0,236},{\r
-18,0,237},{21,0,54},{21,0,55},{21,0,58},{21,0,59},{152,0,22},{134,10,1628},{137,\r
-0,805},{5,0,813},{135,0,2046},{142,11,42},{5,0,712},{6,0,1240},{11,0,17},{13,0,\r
-321},{144,0,67},{132,0,617},{135,10,829},{6,0,320},{7,0,781},{7,0,1921},{9,0,55}\r
-,{10,0,186},{10,0,273},{10,0,664},{10,0,801},{11,0,996},{11,0,997},{13,0,157},{\r
-142,0,170},{136,0,271},{5,10,486},{135,10,1349},{18,11,91},{147,11,70},{10,0,445\r
-},{7,10,1635},{8,10,17},{138,10,295},{136,11,404},{7,0,103},{7,0,863},{11,0,184}\r
-,{145,0,62},{138,10,558},{137,0,659},{6,11,312},{6,11,1715},{10,11,584},{11,11,\r
-546},{11,11,692},{12,11,259},{12,11,295},{13,11,46},{141,11,154},{134,0,676},{\r
-132,11,588},{4,11,231},{5,11,61},{6,11,104},{7,11,729},{7,11,964},{7,11,1658},{\r
-140,11,414},{6,11,263},{138,11,757},{11,0,337},{142,0,303},{135,11,1363},{132,11\r
-,320},{140,0,506},{134,10,447},{5,0,77},{7,0,1455},{10,0,843},{147,0,73},{7,10,\r
-577},{7,10,1432},{9,10,475},{9,10,505},{9,10,526},{9,10,609},{9,10,689},{9,10,\r
-726},{9,10,735},{9,10,738},{10,10,556},{10,10,674},{10,10,684},{11,10,89},{11,10\r
-,202},{11,10,272},{11,10,380},{11,10,415},{11,10,505},{11,10,537},{11,10,550},{\r
-11,10,562},{11,10,640},{11,10,667},{11,10,688},{11,10,847},{11,10,927},{11,10,\r
-930},{11,10,940},{12,10,144},{12,10,325},{12,10,329},{12,10,389},{12,10,403},{12\r
-,10,451},{12,10,515},{12,10,604},{12,10,616},{12,10,626},{13,10,66},{13,10,131},\r
-{13,10,167},{13,10,236},{13,10,368},{13,10,411},{13,10,434},{13,10,453},{13,10,\r
-461},{13,10,474},{14,10,59},{14,10,60},{14,10,139},{14,10,152},{14,10,276},{14,\r
-10,353},{14,10,402},{15,10,28},{15,10,81},{15,10,123},{15,10,152},{18,10,136},{\r
-148,10,88},{132,0,458},{135,0,1420},{6,0,109},{10,0,382},{4,11,405},{4,10,609},{\r
-7,10,756},{7,11,817},{9,10,544},{11,10,413},{14,11,58},{14,10,307},{16,10,25},{\r
-17,11,37},{146,11,124},{6,0,330},{7,0,1084},{11,0,142},{133,11,974},{4,10,930},{\r
-133,10,947},{5,10,939},{142,11,394},{16,0,91},{145,0,87},{5,11,235},{5,10,962},{\r
-7,11,1239},{11,11,131},{140,11,370},{11,0,492},{5,10,651},{8,10,170},{9,10,61},{\r
-9,10,63},{10,10,23},{10,10,37},{10,10,834},{11,10,4},{11,10,281},{11,10,503},{11\r
-,10,677},{12,10,96},{12,10,130},{12,10,244},{14,10,5},{14,10,40},{14,10,162},{14\r
-,10,202},{146,10,133},{4,10,406},{5,10,579},{12,10,492},{150,10,15},{9,11,137},{\r
-138,11,221},{134,0,1239},{11,0,211},{140,0,145},{7,11,390},{138,11,140},{135,11,\r
-1418},{135,11,1144},{134,0,1049},{7,0,321},{6,10,17},{7,10,1001},{7,10,1982},{9,\r
-10,886},{10,10,489},{10,10,800},{11,10,782},{12,10,320},{13,10,467},{14,10,145},\r
-{14,10,387},{143,10,119},{145,10,17},{5,11,407},{11,11,489},{19,11,37},{20,11,73\r
-},{150,11,38},{133,10,458},{135,0,1985},{7,10,1983},{8,10,0},{8,10,171},{9,10,\r
-120},{9,10,732},{10,10,473},{11,10,656},{11,10,998},{18,10,0},{18,10,2},{147,10,\r
-21},{5,11,325},{7,11,1483},{8,11,5},{8,11,227},{9,11,105},{10,11,585},{140,11,\r
-614},{136,0,122},{132,0,234},{135,11,1196},{6,0,976},{6,0,1098},{134,0,1441},{7,\r
-0,253},{136,0,549},{6,11,621},{13,11,504},{144,11,19},{132,10,519},{5,0,430},{5,\r
-0,932},{6,0,131},{7,0,417},{9,0,522},{11,0,314},{141,0,390},{14,0,149},{14,0,399\r
-},{143,0,57},{5,10,907},{6,10,31},{6,11,218},{7,10,491},{7,10,530},{8,10,592},{\r
-11,10,53},{11,10,779},{12,10,167},{12,10,411},{14,10,14},{14,10,136},{15,10,72},\r
-{16,10,17},{144,10,72},{140,11,330},{7,11,454},{7,11,782},{136,11,768},{132,0,\r
-507},{10,11,676},{140,11,462},{6,0,630},{9,0,811},{4,10,208},{5,10,106},{6,10,\r
-531},{8,10,408},{9,10,188},{138,10,572},{4,0,343},{5,0,511},{134,10,1693},{134,\r
-11,164},{132,0,448},{7,0,455},{138,0,591},{135,0,1381},{12,10,441},{150,11,50},{\r
-9,10,449},{10,10,192},{138,10,740},{6,0,575},{132,10,241},{134,0,1175},{134,0,\r
-653},{134,0,1761},{134,0,1198},{132,10,259},{6,11,343},{7,11,195},{9,11,226},{10\r
-,11,197},{10,11,575},{11,11,502},{139,11,899},{7,0,1127},{7,0,1572},{10,0,297},{\r
-10,0,422},{11,0,764},{11,0,810},{12,0,264},{13,0,102},{13,0,300},{13,0,484},{14,\r
-0,147},{14,0,229},{17,0,71},{18,0,118},{147,0,120},{135,11,666},{132,0,678},{4,\r
-10,173},{5,10,312},{5,10,512},{135,10,1285},{7,10,1603},{7,10,1691},{9,10,464},{\r
-11,10,195},{12,10,279},{12,10,448},{14,10,11},{147,10,102},{16,0,99},{146,0,164}\r
-,{7,11,1125},{9,11,143},{11,11,61},{14,11,405},{150,11,21},{137,11,260},{4,10,\r
-452},{5,10,583},{5,10,817},{6,10,433},{7,10,593},{7,10,720},{7,10,1378},{8,10,\r
-161},{9,10,284},{10,10,313},{139,10,886},{132,10,547},{136,10,722},{14,0,35},{\r
-142,0,191},{141,0,45},{138,0,121},{132,0,125},{134,0,1622},{133,11,959},{8,10,\r
-420},{139,10,193},{132,0,721},{135,10,409},{136,0,145},{7,0,792},{8,0,147},{10,0\r
-,821},{11,0,970},{11,0,1021},{136,11,173},{134,11,266},{132,0,715},{7,0,1999},{\r
-138,10,308},{133,0,531},{5,0,168},{5,0,930},{8,0,74},{9,0,623},{12,0,500},{140,0\r
-,579},{144,0,65},{138,11,246},{6,0,220},{7,0,1101},{13,0,105},{142,11,314},{5,10\r
-,1002},{136,10,745},{134,0,960},{20,0,0},{148,11,0},{4,0,1005},{4,10,239},{6,10,\r
-477},{7,10,1607},{11,10,68},{139,10,617},{6,0,19},{7,0,1413},{139,0,428},{149,10\r
-,13},{7,0,96},{8,0,401},{8,0,703},{9,0,896},{136,11,300},{134,0,1595},{145,0,116\r
-},{136,0,1021},{7,0,1961},{7,0,1965},{7,0,2030},{8,0,150},{8,0,702},{8,0,737},{8\r
-,0,750},{140,0,366},{11,11,75},{142,11,267},{132,10,367},{8,0,800},{9,0,148},{9,\r
-0,872},{9,0,890},{11,0,309},{11,0,1001},{13,0,267},{13,0,323},{5,11,427},{5,11,\r
-734},{7,11,478},{136,11,52},{7,11,239},{11,11,217},{142,11,165},{132,11,323},{\r
-140,11,419},{13,0,299},{142,0,75},{6,11,87},{6,11,1734},{7,11,20},{7,11,1056},{8\r
-,11,732},{9,11,406},{9,11,911},{138,11,694},{134,0,1383},{132,10,694},{133,11,\r
-613},{137,0,779},{4,0,598},{140,10,687},{6,0,970},{135,0,424},{133,0,547},{7,11,\r
-32},{7,11,984},{8,11,85},{8,11,709},{9,11,579},{9,11,847},{9,11,856},{10,11,799}\r
-,{11,11,258},{11,11,1007},{12,11,331},{12,11,615},{13,11,188},{13,11,435},{14,11\r
-,8},{15,11,165},{16,11,27},{148,11,40},{6,0,1222},{134,0,1385},{132,0,876},{138,\r
-11,151},{135,10,213},{4,11,167},{135,11,82},{133,0,133},{6,11,24},{7,11,74},{7,\r
-11,678},{137,11,258},{5,11,62},{6,11,534},{7,11,684},{7,11,1043},{7,11,1072},{8,\r
-11,280},{8,11,541},{8,11,686},{10,11,519},{11,11,252},{140,11,282},{136,0,187},{\r
-8,0,8},{10,0,0},{10,0,818},{139,0,988},{132,11,359},{11,0,429},{15,0,51},{135,10\r
-,1672},{136,0,685},{5,11,211},{7,11,88},{136,11,627},{134,0,472},{136,0,132},{6,\r
-11,145},{141,11,336},{4,10,751},{11,10,390},{140,10,32},{6,0,938},{6,0,1060},{4,\r
-11,263},{4,10,409},{133,10,78},{137,0,874},{8,0,774},{10,0,670},{12,0,51},{4,11,\r
-916},{6,10,473},{7,10,1602},{10,10,698},{12,10,212},{13,10,307},{145,10,105},{\r
-146,0,92},{143,10,156},{132,0,830},{137,0,701},{4,11,599},{6,11,1634},{7,11,5},{\r
-7,11,55},{7,11,67},{7,11,97},{7,11,691},{7,11,979},{7,11,1697},{8,11,207},{8,11,\r
-214},{8,11,231},{8,11,294},{8,11,336},{8,11,428},{8,11,451},{8,11,460},{8,11,471\r
-},{8,11,622},{8,11,626},{8,11,679},{8,11,759},{8,11,829},{9,11,11},{9,11,246},{9\r
-,11,484},{9,11,573},{9,11,706},{9,11,762},{9,11,798},{9,11,855},{9,11,870},{9,11\r
-,912},{10,11,303},{10,11,335},{10,11,424},{10,11,461},{10,11,543},{10,11,759},{\r
-10,11,814},{11,11,59},{11,11,199},{11,11,235},{11,11,475},{11,11,590},{11,11,929\r
-},{11,11,963},{12,11,114},{12,11,182},{12,11,226},{12,11,332},{12,11,439},{12,11\r
-,575},{12,11,598},{13,11,8},{13,11,125},{13,11,194},{13,11,287},{14,11,197},{14,\r
-11,383},{15,11,53},{17,11,63},{19,11,46},{19,11,98},{19,11,106},{148,11,85},{4,0\r
-,127},{5,0,350},{6,0,356},{8,0,426},{9,0,572},{10,0,247},{139,0,312},{134,0,1215\r
-},{6,0,59},{9,0,603},{13,0,397},{7,11,1853},{138,11,437},{134,0,1762},{147,11,\r
-126},{135,10,883},{13,0,293},{142,0,56},{133,10,617},{139,10,50},{5,11,187},{7,\r
-10,1518},{139,10,694},{135,0,441},{6,0,111},{7,0,4},{8,0,163},{8,0,776},{138,0,\r
-566},{132,0,806},{4,11,215},{9,11,38},{10,11,3},{11,11,23},{11,11,127},{139,11,\r
-796},{14,0,233},{4,10,546},{135,10,2042},{135,0,1994},{134,0,1739},{135,11,1530}\r
-,{136,0,393},{5,0,297},{7,0,1038},{14,0,359},{19,0,52},{148,0,47},{135,0,309},{4\r
-,10,313},{133,10,577},{8,10,184},{141,10,433},{135,10,935},{12,10,186},{12,10,\r
-292},{14,10,100},{146,10,70},{136,0,363},{14,0,175},{11,10,402},{12,10,109},{12,\r
-10,431},{13,10,179},{13,10,206},{14,10,217},{16,10,3},{148,10,53},{5,10,886},{6,\r
-10,46},{6,10,1790},{7,10,14},{7,10,732},{7,10,1654},{8,10,95},{8,10,327},{8,10,\r
-616},{9,10,892},{10,10,598},{10,10,769},{11,10,134},{11,10,747},{12,10,378},{142\r
-,10,97},{136,0,666},{135,0,1675},{6,0,655},{134,0,1600},{135,0,808},{133,10,1021\r
-},{4,11,28},{5,11,440},{7,11,248},{11,11,833},{140,11,344},{134,11,1654},{132,0,\r
-280},{140,0,54},{4,0,421},{133,0,548},{132,10,153},{6,11,339},{135,11,923},{133,\r
-11,853},{133,10,798},{132,10,587},{6,11,249},{7,11,1234},{139,11,573},{6,10,598}\r
-,{7,10,42},{8,10,695},{10,10,212},{11,10,158},{14,10,196},{145,10,85},{7,0,249},\r
-{5,10,957},{133,10,1008},{4,10,129},{135,10,465},{6,0,254},{7,0,842},{7,0,1659},\r
-{9,0,109},{10,0,103},{7,10,908},{7,10,1201},{9,10,755},{11,10,906},{12,10,527},{\r
-146,10,7},{5,0,262},{136,10,450},{144,0,1},{10,11,201},{142,11,319},{7,11,49},{7\r
-,11,392},{8,11,20},{8,11,172},{8,11,690},{9,11,383},{9,11,845},{10,11,48},{11,11\r
-,293},{11,11,832},{11,11,920},{141,11,221},{5,11,858},{133,11,992},{134,0,805},{\r
-139,10,1003},{6,0,1630},{134,11,307},{7,11,1512},{135,11,1794},{6,11,268},{137,\r
-11,62},{135,10,1868},{133,0,671},{4,0,989},{8,0,972},{136,0,998},{132,11,423},{\r
-132,0,889},{135,0,1382},{135,0,1910},{7,10,965},{7,10,1460},{135,10,1604},{4,0,\r
-627},{5,0,775},{138,11,106},{134,11,348},{7,0,202},{11,0,362},{11,0,948},{140,0,\r
-388},{138,11,771},{6,11,613},{136,11,223},{6,0,560},{7,0,451},{8,0,389},{12,0,\r
-490},{13,0,16},{13,0,215},{13,0,351},{18,0,132},{147,0,125},{135,0,841},{136,0,\r
-566},{136,0,938},{132,11,670},{5,0,912},{6,0,1695},{140,11,55},{9,11,40},{139,11\r
-,136},{7,0,1361},{7,10,982},{10,10,32},{143,10,56},{11,11,259},{140,11,270},{5,0\r
-,236},{6,0,572},{8,0,492},{11,0,618},{144,0,56},{8,11,572},{9,11,310},{9,11,682}\r
-,{137,11,698},{134,0,1854},{5,0,190},{136,0,318},{133,10,435},{135,0,1376},{4,11\r
-,296},{6,11,352},{7,11,401},{7,11,1410},{7,11,1594},{7,11,1674},{8,11,63},{8,11,\r
-660},{137,11,74},{7,0,349},{5,10,85},{6,10,419},{7,10,305},{7,10,361},{7,10,1337\r
-},{8,10,71},{140,10,519},{4,11,139},{4,11,388},{140,11,188},{6,0,1972},{6,0,2013\r
-},{8,0,951},{10,0,947},{10,0,974},{10,0,1018},{142,0,476},{140,10,688},{135,10,\r
-740},{5,10,691},{7,10,345},{9,10,94},{140,10,169},{9,0,344},{5,10,183},{6,10,582\r
-},{10,10,679},{140,10,435},{135,10,511},{132,0,850},{8,11,441},{10,11,314},{143,\r
-11,3},{7,10,1993},{136,10,684},{4,11,747},{6,11,290},{6,10,583},{7,11,649},{7,11\r
-,1479},{135,11,1583},{133,11,232},{133,10,704},{134,0,910},{4,10,179},{5,10,198}\r
-,{133,10,697},{7,10,347},{7,10,971},{8,10,181},{138,10,711},{136,11,525},{14,0,\r
-19},{14,0,28},{144,0,29},{7,0,85},{7,0,247},{8,0,585},{138,0,163},{4,0,487},{7,\r
-11,472},{7,11,1801},{10,11,748},{141,11,458},{4,10,243},{5,10,203},{7,10,19},{7,\r
-10,71},{7,10,113},{10,10,405},{11,10,357},{142,10,240},{7,10,1450},{139,10,99},{\r
-132,11,425},{138,0,145},{147,0,83},{6,10,492},{137,11,247},{4,0,1013},{134,0,\r
-2033},{5,10,134},{6,10,408},{6,10,495},{135,10,1593},{135,0,1922},{134,11,1768},\r
-{4,0,124},{10,0,457},{11,0,121},{11,0,169},{11,0,870},{11,0,874},{12,0,214},{14,\r
-0,187},{143,0,77},{5,0,557},{135,0,1457},{139,0,66},{5,11,943},{6,11,1779},{142,\r
-10,4},{4,10,248},{4,10,665},{7,10,137},{137,10,349},{7,0,1193},{5,11,245},{6,11,\r
-576},{7,11,582},{136,11,225},{144,0,82},{7,10,1270},{139,10,612},{5,0,454},{10,0\r
-,352},{138,11,352},{18,0,57},{5,10,371},{135,10,563},{135,0,1333},{6,0,107},{7,0\r
-,638},{7,0,1632},{9,0,396},{134,11,610},{5,0,370},{134,0,1756},{4,10,374},{7,10,\r
-547},{7,10,1700},{7,10,1833},{139,10,858},{133,0,204},{6,0,1305},{9,10,311},{141\r
-,10,42},{5,0,970},{134,0,1706},{6,10,1647},{7,10,1552},{7,10,2010},{9,10,494},{\r
-137,10,509},{13,11,455},{15,11,99},{15,11,129},{144,11,68},{135,0,3},{4,0,35},{5\r
-,0,121},{5,0,483},{5,0,685},{6,0,489},{6,0,782},{6,0,1032},{7,0,1204},{136,0,394\r
-},{4,0,921},{133,0,1007},{8,11,360},{138,11,63},{135,0,1696},{134,0,1519},{132,\r
-11,443},{135,11,944},{6,10,123},{7,10,214},{9,10,728},{10,10,157},{11,10,346},{\r
-11,10,662},{143,10,106},{137,0,981},{135,10,1435},{134,0,1072},{132,0,712},{134,\r
-0,1629},{134,0,728},{4,11,298},{137,11,483},{6,0,1177},{6,0,1271},{5,11,164},{7,\r
-11,121},{142,11,189},{7,0,1608},{4,10,707},{5,10,588},{6,10,393},{13,10,106},{18\r
-,10,49},{147,10,41},{23,0,16},{151,11,16},{6,10,211},{7,10,1690},{11,10,486},{\r
-140,10,369},{133,0,485},{19,11,15},{149,11,27},{4,11,172},{9,11,611},{10,11,436}\r
-,{12,11,673},{141,11,255},{5,11,844},{10,11,484},{11,11,754},{12,11,457},{14,11,\r
-171},{14,11,389},{146,11,153},{4,0,285},{5,0,27},{5,0,317},{6,0,301},{7,0,7},{8,\r
-0,153},{10,0,766},{11,0,468},{12,0,467},{141,0,143},{134,0,1462},{9,11,263},{10,\r
-11,147},{138,11,492},{133,11,537},{6,0,1945},{6,0,1986},{6,0,1991},{134,0,2038},\r
-{134,10,219},{137,11,842},{14,0,52},{17,0,50},{5,10,582},{6,10,1646},{7,10,99},{\r
-7,10,1962},{7,10,1986},{8,10,515},{8,10,773},{9,10,23},{9,10,491},{12,10,620},{\r
-142,10,93},{138,11,97},{20,0,21},{20,0,44},{133,10,851},{136,0,819},{139,0,917},\r
-{5,11,230},{5,11,392},{6,11,420},{8,10,762},{8,10,812},{9,11,568},{9,10,910},{\r
-140,11,612},{135,0,784},{15,0,135},{143,11,135},{10,0,454},{140,0,324},{4,11,0},\r
-{5,11,41},{7,11,1459},{7,11,1469},{7,11,1618},{7,11,1859},{9,11,549},{139,11,905\r
-},{4,10,98},{7,10,1365},{9,10,422},{9,10,670},{10,10,775},{11,10,210},{13,10,26}\r
-,{13,10,457},{141,10,476},{6,0,1719},{6,0,1735},{7,0,2016},{7,0,2020},{8,0,837},\r
-{137,0,852},{133,11,696},{135,0,852},{132,0,952},{134,10,1730},{132,11,771},{138\r
-,0,568},{137,0,448},{139,0,146},{8,0,67},{138,0,419},{133,11,921},{137,10,147},{\r
-134,0,1826},{10,0,657},{14,0,297},{142,0,361},{6,0,666},{6,0,767},{134,0,1542},{\r
-139,0,729},{6,11,180},{7,11,1137},{8,11,751},{139,11,805},{4,11,183},{7,11,271},\r
-{11,11,824},{11,11,952},{13,11,278},{13,11,339},{13,11,482},{14,11,424},{148,11,\r
-99},{4,0,669},{5,11,477},{5,11,596},{6,11,505},{7,11,1221},{11,11,907},{12,11,\r
-209},{141,11,214},{135,11,1215},{5,0,402},{6,10,30},{11,10,56},{139,10,305},{7,\r
-11,564},{142,11,168},{139,0,152},{7,0,912},{135,10,1614},{4,10,150},{5,10,303},{\r
-134,10,327},{7,0,320},{8,0,51},{9,0,868},{10,0,833},{12,0,481},{12,0,570},{148,0\r
-,106},{132,0,445},{7,11,274},{11,11,263},{11,11,479},{11,11,507},{140,11,277},{\r
-10,0,555},{11,0,308},{19,0,95},{6,11,1645},{8,10,192},{10,10,78},{141,10,359},{\r
-135,10,786},{6,11,92},{6,11,188},{7,11,1269},{7,11,1524},{7,11,1876},{10,11,228}\r
-,{139,11,1020},{4,11,459},{133,11,966},{11,0,386},{6,10,1638},{7,10,79},{7,10,\r
-496},{9,10,138},{10,10,336},{12,10,412},{12,10,440},{142,10,305},{133,0,239},{7,\r
-0,83},{7,0,1990},{8,0,130},{139,0,720},{138,11,709},{4,0,143},{5,0,550},{133,0,\r
-752},{5,0,123},{6,0,530},{7,0,348},{135,0,1419},{135,0,2024},{6,11,18},{7,11,179\r
-},{7,11,721},{7,11,932},{8,11,548},{8,11,757},{9,11,54},{9,11,65},{9,11,532},{9,\r
-11,844},{10,11,113},{10,11,117},{10,11,236},{10,11,315},{10,11,430},{10,11,798},\r
-{11,11,153},{11,11,351},{11,11,375},{12,11,78},{12,11,151},{12,11,392},{14,11,\r
-248},{143,11,23},{7,10,204},{7,10,415},{8,10,42},{10,10,85},{139,10,564},{134,0,\r
-958},{133,11,965},{132,0,210},{135,11,1429},{138,11,480},{134,11,182},{139,11,\r
-345},{10,11,65},{10,11,488},{138,11,497},{4,10,3},{5,10,247},{5,10,644},{7,10,\r
-744},{7,10,1207},{7,10,1225},{7,10,1909},{146,10,147},{132,0,430},{5,10,285},{9,\r
-10,67},{13,10,473},{143,10,82},{144,11,16},{7,11,1162},{9,11,588},{10,11,260},{\r
-151,10,8},{133,0,213},{138,0,7},{135,0,801},{134,11,1786},{135,11,308},{6,0,936}\r
-,{134,0,1289},{133,0,108},{132,0,885},{133,0,219},{139,0,587},{4,0,193},{5,0,916\r
-},{6,0,1041},{7,0,364},{10,0,398},{10,0,726},{11,0,317},{11,0,626},{12,0,142},{\r
-12,0,288},{12,0,678},{13,0,313},{15,0,113},{146,0,114},{135,0,1165},{6,0,241},{9\r
-,0,342},{10,0,729},{11,0,284},{11,0,445},{11,0,651},{11,0,863},{13,0,398},{146,0\r
-,99},{7,0,907},{136,0,832},{9,0,303},{4,10,29},{6,10,532},{7,10,1628},{7,10,1648\r
-},{9,10,350},{10,10,433},{11,10,97},{11,10,557},{11,10,745},{12,10,289},{12,10,\r
-335},{12,10,348},{12,10,606},{13,10,116},{13,10,233},{13,10,466},{14,10,181},{14\r
-,10,209},{14,10,232},{14,10,236},{14,10,300},{16,10,41},{148,10,97},{7,11,423},{\r
-7,10,1692},{136,11,588},{6,0,931},{134,0,1454},{5,10,501},{7,10,1704},{9,10,553}\r
-,{11,10,520},{12,10,557},{141,10,249},{136,11,287},{4,0,562},{9,0,254},{139,0,\r
-879},{132,0,786},{14,11,32},{18,11,85},{20,11,2},{152,11,16},{135,0,1294},{7,11,\r
-723},{135,11,1135},{6,0,216},{7,0,901},{7,0,1343},{8,0,493},{134,11,403},{7,11,\r
-719},{8,11,809},{136,11,834},{5,11,210},{6,11,213},{7,11,60},{10,11,364},{139,11\r
-,135},{7,0,341},{11,0,219},{5,11,607},{8,11,326},{136,11,490},{4,11,701},{5,11,\r
-472},{5,11,639},{7,11,1249},{9,11,758},{139,11,896},{135,11,380},{135,11,1947},{\r
-139,0,130},{135,0,1734},{10,0,115},{11,0,420},{12,0,154},{13,0,404},{14,0,346},{\r
-143,0,54},{134,10,129},{4,11,386},{7,11,41},{8,11,405},{9,11,497},{11,11,110},{\r
-11,11,360},{15,11,37},{144,11,84},{141,11,282},{5,11,46},{7,11,1452},{7,11,1480}\r
-,{8,11,634},{140,11,472},{4,11,524},{136,11,810},{10,11,238},{141,11,33},{133,0,\r
-604},{5,0,1011},{136,0,701},{8,0,856},{8,0,858},{8,0,879},{12,0,702},{142,0,447}\r
-,{4,0,54},{5,0,666},{7,0,1039},{7,0,1130},{9,0,195},{138,0,302},{4,10,25},{5,10,\r
-60},{6,10,504},{7,10,614},{7,10,1155},{140,10,0},{7,10,1248},{11,10,621},{139,10\r
-,702},{133,11,997},{137,10,321},{134,0,1669},{134,0,1791},{4,10,379},{135,10,\r
-1397},{138,11,372},{5,11,782},{5,11,829},{134,11,1738},{135,0,1228},{4,10,118},{\r
-6,10,274},{6,10,361},{7,10,75},{141,10,441},{132,0,623},{9,11,279},{10,11,407},{\r
-14,11,84},{150,11,18},{137,10,841},{135,0,798},{140,10,693},{5,10,314},{6,10,221\r
-},{7,10,419},{10,10,650},{11,10,396},{12,10,156},{13,10,369},{14,10,333},{145,10\r
-,47},{135,11,1372},{7,0,122},{9,0,259},{10,0,84},{11,0,470},{12,0,541},{141,0,\r
-379},{134,0,837},{8,0,1013},{4,11,78},{5,11,96},{5,11,182},{7,11,1724},{7,11,\r
-1825},{10,11,394},{10,11,471},{11,11,532},{14,11,340},{145,11,88},{134,0,577},{\r
-135,11,1964},{132,10,913},{134,0,460},{8,0,891},{10,0,901},{10,0,919},{10,0,932}\r
-,{12,0,715},{12,0,728},{12,0,777},{14,0,457},{144,0,103},{5,0,82},{5,0,131},{7,0\r
-,1755},{8,0,31},{9,0,168},{9,0,764},{139,0,869},{136,10,475},{6,0,605},{5,10,\r
-1016},{9,11,601},{9,11,619},{10,11,505},{10,11,732},{11,11,355},{140,11,139},{7,\r
-10,602},{8,10,179},{10,10,781},{140,10,126},{134,0,1246},{6,10,329},{138,10,111}\r
-,{6,11,215},{7,11,1028},{7,11,1473},{7,11,1721},{9,11,424},{138,11,779},{5,0,278\r
-},{137,0,68},{6,0,932},{6,0,1084},{144,0,86},{4,0,163},{5,0,201},{5,0,307},{5,0,\r
-310},{6,0,335},{7,0,284},{7,0,1660},{136,0,165},{136,0,781},{134,0,707},{6,0,33}\r
-,{135,0,1244},{5,10,821},{6,11,67},{6,10,1687},{7,11,258},{7,11,1630},{9,11,354}\r
-,{9,11,675},{10,11,830},{14,11,80},{145,11,80},{6,11,141},{7,11,225},{9,11,59},{\r
-9,11,607},{10,11,312},{11,11,687},{12,11,555},{13,11,373},{13,11,494},{148,11,58\r
-},{134,0,1113},{9,0,388},{5,10,71},{7,10,1407},{9,10,704},{10,10,261},{10,10,619\r
-},{11,10,547},{11,10,619},{143,10,157},{7,0,1953},{136,0,720},{138,0,203},{7,10,\r
-2008},{9,10,337},{138,10,517},{6,0,326},{7,0,677},{137,0,425},{139,11,81},{7,0,\r
-1316},{7,0,1412},{7,0,1839},{9,0,589},{11,0,241},{11,0,676},{11,0,811},{11,0,891\r
-},{12,0,140},{12,0,346},{12,0,479},{13,0,140},{13,0,381},{14,0,188},{18,0,30},{\r
-148,0,108},{5,0,416},{6,10,86},{6,10,603},{7,10,292},{7,10,561},{8,10,257},{8,10\r
-,382},{9,10,721},{9,10,778},{11,10,581},{140,10,466},{4,10,486},{133,10,491},{\r
-134,0,1300},{132,10,72},{7,0,847},{6,10,265},{7,11,430},{139,11,46},{5,11,602},{\r
-6,11,106},{7,11,1786},{7,11,1821},{7,11,2018},{9,11,418},{137,11,763},{5,0,358},\r
-{7,0,535},{7,0,1184},{10,0,662},{13,0,212},{13,0,304},{13,0,333},{145,0,98},{5,\r
-11,65},{6,11,416},{7,11,1720},{7,11,1924},{8,11,677},{10,11,109},{11,11,14},{11,\r
-11,70},{11,11,569},{11,11,735},{15,11,153},{148,11,80},{6,0,1823},{8,0,839},{8,0\r
-,852},{8,0,903},{10,0,940},{12,0,707},{140,0,775},{135,11,1229},{6,0,1522},{140,\r
-0,654},{136,11,595},{139,0,163},{141,0,314},{132,0,978},{4,0,601},{6,0,2035},{\r
-137,10,234},{5,10,815},{6,10,1688},{134,10,1755},{133,0,946},{136,0,434},{6,10,\r
-197},{136,10,205},{7,0,411},{7,0,590},{8,0,631},{9,0,323},{10,0,355},{11,0,491},\r
-{12,0,143},{12,0,402},{13,0,73},{14,0,408},{15,0,107},{146,0,71},{7,0,1467},{8,0\r
-,328},{10,0,544},{11,0,955},{12,0,13},{13,0,320},{145,0,83},{142,0,410},{11,0,\r
-511},{13,0,394},{14,0,298},{14,0,318},{146,0,103},{6,10,452},{7,10,312},{138,10,\r
-219},{138,10,589},{4,10,333},{9,10,176},{12,10,353},{141,10,187},{135,11,329},{\r
-132,11,469},{5,0,835},{134,0,483},{134,11,1743},{5,11,929},{6,11,340},{8,11,376}\r
-,{136,11,807},{134,10,1685},{132,0,677},{5,11,218},{7,11,1610},{138,11,83},{5,11\r
-,571},{135,11,1842},{132,11,455},{137,0,70},{135,0,1405},{7,10,135},{8,10,7},{8,\r
-10,62},{9,10,243},{10,10,658},{10,10,697},{11,10,456},{139,10,756},{9,10,395},{\r
-138,10,79},{137,0,108},{6,11,161},{7,11,372},{137,11,597},{132,11,349},{132,0,\r
-777},{132,0,331},{135,10,631},{133,0,747},{6,11,432},{6,11,608},{139,11,322},{\r
-138,10,835},{5,11,468},{7,11,1809},{10,11,325},{11,11,856},{12,11,345},{143,11,\r
-104},{133,11,223},{7,10,406},{7,10,459},{8,10,606},{139,10,726},{132,11,566},{\r
-142,0,68},{4,11,59},{135,11,1394},{6,11,436},{139,11,481},{4,11,48},{5,11,271},{\r
-135,11,953},{139,11,170},{5,11,610},{136,11,457},{133,11,755},{135,11,1217},{133\r
-,10,612},{132,11,197},{132,0,505},{4,10,372},{7,10,482},{8,10,158},{9,10,602},{9\r
-,10,615},{10,10,245},{10,10,678},{10,10,744},{11,10,248},{139,10,806},{133,0,326\r
-},{5,10,854},{135,10,1991},{4,0,691},{146,0,16},{6,0,628},{9,0,35},{10,0,680},{\r
-10,0,793},{11,0,364},{13,0,357},{143,0,164},{138,0,654},{6,0,32},{7,0,385},{7,0,\r
-757},{7,0,1916},{8,0,37},{8,0,94},{8,0,711},{9,0,541},{10,0,162},{10,0,795},{11,\r
-0,989},{11,0,1010},{12,0,14},{142,0,308},{133,11,217},{6,0,152},{6,0,349},{6,0,\r
-1682},{7,0,1252},{8,0,112},{9,0,435},{9,0,668},{10,0,290},{10,0,319},{10,0,815},\r
-{11,0,180},{11,0,837},{12,0,240},{13,0,152},{13,0,219},{142,0,158},{4,0,581},{\r
-134,0,726},{5,10,195},{135,10,1685},{6,0,126},{7,0,573},{8,0,397},{142,0,44},{\r
-138,0,89},{7,10,1997},{8,10,730},{139,10,1006},{134,0,1531},{134,0,1167},{5,0,\r
-926},{12,0,203},{133,10,751},{4,11,165},{7,11,1398},{135,11,1829},{7,0,1232},{\r
-137,0,531},{135,10,821},{134,0,943},{133,0,670},{4,0,880},{139,0,231},{134,0,\r
-1617},{135,0,1957},{5,11,9},{7,11,297},{7,11,966},{140,11,306},{6,0,975},{134,0,\r
-985},{5,10,950},{5,10,994},{134,10,351},{12,11,21},{151,11,7},{5,11,146},{6,11,\r
-411},{138,11,721},{7,0,242},{135,0,1942},{6,11,177},{135,11,467},{5,0,421},{7,10\r
-,47},{137,10,684},{5,0,834},{7,0,1202},{8,0,14},{9,0,481},{137,0,880},{138,0,465\r
-},{6,0,688},{9,0,834},{132,10,350},{132,0,855},{4,0,357},{6,0,172},{7,0,143},{\r
-137,0,413},{133,11,200},{132,0,590},{7,10,1812},{13,10,259},{13,10,356},{14,10,\r
-242},{147,10,114},{133,10,967},{11,0,114},{4,10,473},{7,10,623},{8,10,808},{9,10\r
-,871},{9,10,893},{11,10,431},{12,10,112},{12,10,217},{12,10,243},{12,10,562},{12\r
-,10,663},{12,10,683},{13,10,141},{13,10,197},{13,10,227},{13,10,406},{13,10,487}\r
-,{14,10,156},{14,10,203},{14,10,224},{14,10,256},{18,10,58},{150,10,0},{138,10,\r
-286},{4,10,222},{7,10,286},{136,10,629},{5,0,169},{7,0,333},{136,0,45},{134,11,\r
-481},{132,0,198},{4,0,24},{5,0,140},{5,0,185},{7,0,1500},{11,0,565},{11,0,838},{\r
-4,11,84},{7,11,1482},{10,11,76},{138,11,142},{133,0,585},{141,10,306},{133,11,\r
-1015},{4,11,315},{5,11,507},{135,11,1370},{136,10,146},{6,0,691},{134,0,1503},{4\r
-,0,334},{133,0,593},{4,10,465},{135,10,1663},{142,11,173},{135,0,913},{12,0,116}\r
-,{134,11,1722},{134,0,1360},{132,0,802},{8,11,222},{8,11,476},{9,11,238},{11,11,\r
-516},{11,11,575},{15,11,109},{146,11,100},{6,0,308},{9,0,673},{7,10,138},{7,10,\r
-517},{139,10,238},{132,0,709},{6,0,1876},{6,0,1895},{9,0,994},{9,0,1006},{12,0,\r
-829},{12,0,888},{12,0,891},{146,0,185},{148,10,94},{4,0,228},{133,0,897},{7,0,\r
-1840},{5,10,495},{7,10,834},{9,10,733},{139,10,378},{133,10,559},{6,10,21},{6,10\r
-,1737},{7,10,1444},{136,10,224},{4,0,608},{133,0,497},{6,11,40},{135,11,1781},{\r
-134,0,1573},{135,0,2039},{6,0,540},{136,0,136},{4,0,897},{5,0,786},{133,10,519},\r
-{6,0,1878},{6,0,1884},{9,0,938},{9,0,948},{9,0,955},{9,0,973},{9,0,1012},{12,0,\r
-895},{12,0,927},{143,0,254},{134,0,1469},{133,0,999},{4,0,299},{135,0,1004},{4,0\r
-,745},{133,0,578},{136,11,574},{133,0,456},{134,0,1457},{7,0,1679},{132,10,402},\r
-{7,0,693},{8,0,180},{12,0,163},{8,10,323},{136,10,479},{11,10,580},{142,10,201},\r
-{5,10,59},{135,10,672},{132,11,354},{146,10,34},{4,0,755},{135,11,1558},{7,0,\r
-1740},{146,0,48},{4,10,85},{135,10,549},{139,0,338},{133,10,94},{134,0,1091},{\r
-135,11,469},{12,0,695},{12,0,704},{20,0,113},{5,11,830},{14,11,338},{148,11,81},\r
-{135,0,1464},{6,10,11},{135,10,187},{135,0,975},{13,0,335},{132,10,522},{134,0,\r
-1979},{5,11,496},{135,11,203},{4,10,52},{135,10,661},{7,0,1566},{8,0,269},{9,0,\r
-212},{9,0,718},{14,0,15},{14,0,132},{142,0,227},{4,0,890},{5,0,805},{5,0,819},{5\r
-,0,961},{6,0,396},{6,0,1631},{6,0,1678},{7,0,1967},{7,0,2041},{9,0,630},{11,0,8}\r
-,{11,0,1019},{12,0,176},{13,0,225},{14,0,292},{21,0,24},{4,10,383},{133,10,520},\r
-{134,11,547},{135,11,1748},{5,11,88},{137,11,239},{146,11,128},{7,11,650},{135,\r
-11,1310},{4,10,281},{5,10,38},{7,10,194},{7,10,668},{7,10,1893},{137,10,397},{\r
-135,0,1815},{9,10,635},{139,10,559},{7,0,1505},{10,0,190},{10,0,634},{11,0,792},\r
-{12,0,358},{140,0,447},{5,0,0},{6,0,536},{7,0,604},{13,0,445},{145,0,126},{7,11,\r
-1076},{9,11,80},{11,11,78},{11,11,421},{11,11,534},{140,11,545},{8,0,966},{10,0,\r
-1023},{14,11,369},{146,11,72},{135,11,1641},{6,0,232},{6,0,412},{7,0,1074},{8,0,\r
-9},{8,0,157},{8,0,786},{9,0,196},{9,0,352},{9,0,457},{10,0,337},{11,0,232},{11,0\r
-,877},{12,0,480},{140,0,546},{135,0,958},{4,0,382},{136,0,579},{4,0,212},{135,0,\r
-1206},{4,11,497},{5,11,657},{135,11,1584},{132,0,681},{8,0,971},{138,0,965},{5,\r
-10,448},{136,10,535},{14,0,16},{146,0,44},{11,0,584},{11,0,616},{14,0,275},{11,\r
-11,584},{11,11,616},{142,11,275},{136,11,13},{7,10,610},{135,10,1501},{7,11,642}\r
-,{8,11,250},{11,11,123},{11,11,137},{13,11,48},{142,11,95},{133,0,655},{17,0,67}\r
-,{147,0,74},{134,0,751},{134,0,1967},{6,0,231},{136,0,423},{5,0,300},{138,0,1016\r
-},{4,10,319},{5,10,699},{138,10,673},{6,0,237},{7,0,611},{8,0,100},{9,0,416},{11\r
-,0,335},{12,0,173},{18,0,101},{6,10,336},{8,10,552},{9,10,285},{10,10,99},{139,\r
-10,568},{134,0,1370},{7,10,1406},{9,10,218},{141,10,222},{133,10,256},{135,0,\r
-1208},{14,11,213},{148,11,38},{6,0,1219},{135,11,1642},{13,0,417},{14,0,129},{\r
-143,0,15},{10,11,545},{140,11,301},{17,10,39},{148,10,36},{133,0,199},{4,11,904}\r
-,{133,11,794},{12,0,427},{146,0,38},{134,0,949},{8,0,665},{135,10,634},{132,10,\r
-618},{135,10,259},{132,10,339},{133,11,761},{141,10,169},{132,10,759},{5,0,688},\r
-{7,0,539},{135,0,712},{7,11,386},{138,11,713},{134,0,1186},{6,11,7},{6,11,35},{7\r
-,11,147},{7,11,1069},{7,11,1568},{7,11,1575},{7,11,1917},{8,11,43},{8,11,208},{9\r
-,11,128},{9,11,866},{10,11,20},{11,11,981},{147,11,33},{7,11,893},{8,10,482},{\r
-141,11,424},{6,0,312},{6,0,1715},{10,0,584},{11,0,546},{11,0,692},{12,0,259},{12\r
-,0,295},{13,0,46},{141,0,154},{5,10,336},{6,10,341},{6,10,478},{6,10,1763},{136,\r
-10,386},{137,0,151},{132,0,588},{152,0,4},{6,11,322},{9,11,552},{11,11,274},{13,\r
-11,209},{13,11,499},{14,11,85},{15,11,126},{145,11,70},{135,10,73},{4,0,231},{5,\r
-0,61},{6,0,104},{7,0,729},{7,0,964},{7,0,1658},{140,0,414},{6,0,263},{138,0,757}\r
-,{135,10,1971},{4,0,612},{133,0,561},{132,0,320},{135,10,1344},{8,11,83},{8,11,\r
-817},{9,11,28},{9,11,29},{9,11,885},{10,11,387},{11,11,633},{11,11,740},{13,11,\r
-235},{13,11,254},{15,11,143},{143,11,146},{5,10,396},{134,10,501},{140,11,49},{\r
-132,0,225},{4,10,929},{5,10,799},{8,10,46},{136,10,740},{4,0,405},{7,0,817},{14,\r
-0,58},{17,0,37},{146,0,124},{133,0,974},{4,11,412},{133,11,581},{4,10,892},{133,\r
-10,770},{4,0,996},{134,0,2026},{4,0,527},{5,0,235},{7,0,1239},{11,0,131},{140,0,\r
-370},{9,0,16},{13,0,386},{135,11,421},{7,0,956},{7,0,1157},{7,0,1506},{7,0,1606}\r
-,{7,0,1615},{7,0,1619},{7,0,1736},{7,0,1775},{8,0,590},{9,0,324},{9,0,736},{9,0,\r
-774},{9,0,776},{9,0,784},{10,0,567},{10,0,708},{11,0,518},{11,0,613},{11,0,695},\r
-{11,0,716},{11,0,739},{11,0,770},{11,0,771},{11,0,848},{11,0,857},{11,0,931},{11\r
-,0,947},{12,0,326},{12,0,387},{12,0,484},{12,0,528},{12,0,552},{12,0,613},{13,0,\r
-189},{13,0,256},{13,0,340},{13,0,432},{13,0,436},{13,0,440},{13,0,454},{14,0,174\r
-},{14,0,220},{14,0,284},{14,0,390},{145,0,121},{135,10,158},{9,0,137},{138,0,221\r
-},{4,11,110},{10,11,415},{10,11,597},{142,11,206},{141,11,496},{135,11,205},{151\r
-,10,25},{135,11,778},{7,11,1656},{7,10,2001},{9,11,369},{10,11,338},{10,11,490},\r
-{11,11,154},{11,11,545},{11,11,775},{13,11,77},{141,11,274},{4,11,444},{10,11,\r
-146},{140,11,9},{7,0,390},{138,0,140},{135,0,1144},{134,0,464},{7,10,1461},{140,\r
-10,91},{132,10,602},{4,11,283},{135,11,1194},{5,0,407},{11,0,204},{11,0,243},{11\r
-,0,489},{12,0,293},{19,0,37},{20,0,73},{150,0,38},{7,0,1218},{136,0,303},{5,0,\r
-325},{8,0,5},{8,0,227},{9,0,105},{10,0,585},{12,0,614},{4,10,13},{5,10,567},{7,\r
-10,1498},{9,10,124},{11,10,521},{140,10,405},{135,10,1006},{7,0,800},{10,0,12},{\r
-134,11,1720},{135,0,1783},{132,10,735},{138,10,812},{4,10,170},{135,10,323},{6,0\r
-,621},{13,0,504},{144,0,89},{5,10,304},{135,10,1403},{137,11,216},{6,0,920},{6,0\r
-,1104},{9,11,183},{139,11,286},{4,0,376},{133,10,742},{134,0,218},{8,0,641},{11,\r
-0,388},{140,0,580},{7,0,454},{7,0,782},{8,0,768},{140,0,686},{137,11,33},{133,10\r
-,111},{144,0,0},{10,0,676},{140,0,462},{6,0,164},{136,11,735},{133,10,444},{150,\r
-0,50},{7,11,1862},{12,11,491},{12,11,520},{13,11,383},{14,11,244},{146,11,12},{5\r
-,11,132},{9,11,486},{9,11,715},{10,11,458},{11,11,373},{11,11,668},{11,11,795},{\r
-11,11,897},{12,11,272},{12,11,424},{12,11,539},{12,11,558},{14,11,245},{14,11,\r
-263},{14,11,264},{14,11,393},{142,11,403},{8,10,123},{15,10,6},{144,10,7},{6,0,\r
-285},{8,0,654},{11,0,749},{12,0,190},{12,0,327},{13,0,120},{13,0,121},{13,0,327}\r
-,{15,0,47},{146,0,40},{5,11,8},{6,11,89},{6,11,400},{7,11,1569},{7,11,1623},{7,\r
-11,1850},{8,11,218},{8,11,422},{9,11,570},{138,11,626},{6,11,387},{7,11,882},{\r
-141,11,111},{6,0,343},{7,0,195},{9,0,226},{10,0,197},{10,0,575},{11,0,502},{11,0\r
-,899},{6,11,224},{7,11,877},{137,11,647},{5,10,937},{135,10,100},{135,11,790},{\r
-150,0,29},{147,0,8},{134,0,1812},{149,0,8},{135,11,394},{7,0,1125},{9,0,143},{11\r
-,0,61},{14,0,405},{150,0,21},{10,11,755},{147,11,29},{9,11,378},{141,11,162},{\r
-135,10,922},{5,10,619},{133,10,698},{134,0,1327},{6,0,1598},{137,0,575},{9,11,\r
-569},{12,11,12},{12,11,81},{12,11,319},{13,11,69},{14,11,259},{16,11,87},{17,11,\r
-1},{17,11,21},{17,11,24},{18,11,15},{18,11,56},{18,11,59},{18,11,127},{18,11,154\r
-},{19,11,19},{148,11,31},{6,0,895},{135,11,1231},{5,0,959},{7,11,124},{136,11,38\r
-},{5,11,261},{7,11,78},{7,11,199},{8,11,815},{9,11,126},{138,11,342},{5,10,917},\r
-{134,10,1659},{7,0,1759},{5,11,595},{135,11,1863},{136,0,173},{134,0,266},{142,0\r
-,261},{132,11,628},{5,10,251},{5,10,956},{8,10,268},{9,10,214},{146,10,142},{7,\r
-11,266},{136,11,804},{135,11,208},{6,11,79},{7,11,1021},{135,11,1519},{11,11,704\r
-},{141,11,396},{5,10,346},{5,10,711},{136,10,390},{136,11,741},{134,11,376},{134\r
-,0,1427},{6,0,1033},{6,0,1217},{136,0,300},{133,10,624},{6,11,100},{7,11,244},{7\r
-,11,632},{7,11,1609},{8,11,178},{8,11,638},{141,11,58},{6,0,584},{5,10,783},{7,\r
-10,1998},{135,10,2047},{5,0,427},{5,0,734},{7,0,478},{136,0,52},{7,0,239},{11,0,\r
-217},{142,0,165},{134,0,1129},{6,0,168},{6,0,1734},{7,0,20},{7,0,1056},{8,0,732}\r
-,{9,0,406},{9,0,911},{138,0,694},{132,10,594},{133,11,791},{7,11,686},{8,11,33},\r
-{8,11,238},{10,11,616},{11,11,467},{11,11,881},{13,11,217},{13,11,253},{142,11,\r
-268},{137,11,476},{134,0,418},{133,0,613},{132,0,632},{132,11,447},{7,0,32},{7,0\r
-,984},{8,0,85},{8,0,709},{9,0,579},{9,0,847},{9,0,856},{10,0,799},{11,0,258},{11\r
-,0,1007},{12,0,331},{12,0,615},{13,0,188},{13,0,435},{14,0,8},{15,0,165},{16,0,\r
-27},{20,0,40},{144,11,35},{4,11,128},{5,11,415},{6,11,462},{7,11,294},{7,11,578}\r
-,{10,11,710},{139,11,86},{5,0,694},{136,0,909},{7,0,1109},{11,0,7},{5,10,37},{6,\r
-10,39},{6,10,451},{7,10,218},{7,10,1166},{7,10,1687},{8,10,662},{144,10,2},{136,\r
-11,587},{6,11,427},{7,11,1018},{138,11,692},{4,11,195},{6,10,508},{135,11,802},{\r
-4,0,167},{135,0,82},{5,0,62},{6,0,24},{6,0,534},{7,0,74},{7,0,678},{7,0,684},{7,\r
-0,1043},{7,0,1072},{8,0,280},{8,0,541},{8,0,686},{9,0,258},{10,0,519},{11,0,252}\r
-,{140,0,282},{138,0,33},{4,0,359},{133,11,738},{7,0,980},{9,0,328},{13,0,186},{\r
-13,0,364},{7,10,635},{7,10,796},{8,10,331},{9,10,330},{9,10,865},{10,10,119},{10\r
-,10,235},{11,10,111},{11,10,129},{11,10,240},{12,10,31},{12,10,66},{12,10,222},{\r
-12,10,269},{12,10,599},{12,10,684},{12,10,689},{12,10,691},{142,10,345},{137,10,\r
-527},{6,0,596},{7,0,585},{135,10,702},{134,11,1683},{133,0,211},{6,0,145},{141,0\r
-,336},{134,0,1130},{7,0,873},{6,10,37},{7,10,1666},{8,10,195},{8,10,316},{9,10,\r
-178},{9,10,276},{9,10,339},{9,10,536},{10,10,102},{10,10,362},{10,10,785},{11,10\r
-,55},{11,10,149},{11,10,773},{13,10,416},{13,10,419},{14,10,38},{14,10,41},{142,\r
-10,210},{8,0,840},{136,0,841},{132,0,263},{5,11,3},{8,11,578},{9,11,118},{10,11,\r
-705},{12,11,383},{141,11,279},{132,0,916},{133,11,229},{133,10,645},{15,0,155},{\r
-16,0,79},{8,11,102},{10,11,578},{10,11,672},{12,11,496},{13,11,408},{14,11,121},\r
-{145,11,106},{4,0,599},{5,0,592},{6,0,1634},{7,0,5},{7,0,55},{7,0,67},{7,0,97},{\r
-7,0,691},{7,0,979},{7,0,1600},{7,0,1697},{8,0,207},{8,0,214},{8,0,231},{8,0,294}\r
-,{8,0,336},{8,0,428},{8,0,471},{8,0,622},{8,0,626},{8,0,679},{8,0,759},{8,0,829}\r
-,{9,0,11},{9,0,246},{9,0,484},{9,0,573},{9,0,706},{9,0,762},{9,0,798},{9,0,855},\r
-{9,0,870},{9,0,912},{10,0,303},{10,0,335},{10,0,424},{10,0,461},{10,0,543},{10,0\r
-,759},{10,0,814},{11,0,59},{11,0,199},{11,0,235},{11,0,590},{11,0,631},{11,0,929\r
-},{11,0,963},{11,0,987},{12,0,114},{12,0,182},{12,0,226},{12,0,332},{12,0,439},{\r
-12,0,575},{12,0,598},{12,0,675},{13,0,8},{13,0,125},{13,0,194},{13,0,287},{14,0,\r
-197},{14,0,383},{15,0,53},{17,0,63},{19,0,46},{19,0,98},{19,0,106},{148,0,85},{7\r
-,0,1356},{132,10,290},{6,10,70},{7,10,1292},{10,10,762},{139,10,288},{150,11,55}\r
-,{4,0,593},{8,11,115},{8,11,350},{9,11,489},{10,11,128},{11,11,306},{12,11,373},\r
-{14,11,30},{17,11,79},{147,11,80},{135,11,1235},{134,0,1392},{4,11,230},{133,11,\r
-702},{147,0,126},{7,10,131},{7,10,422},{8,10,210},{140,10,573},{134,0,1179},{139\r
-,11,435},{139,10,797},{134,11,1728},{4,0,162},{18,11,26},{19,11,42},{20,11,43},{\r
-21,11,0},{23,11,27},{152,11,14},{132,10,936},{6,0,765},{5,10,453},{134,10,441},{\r
-133,0,187},{135,0,1286},{6,0,635},{6,0,904},{6,0,1210},{134,0,1489},{4,0,215},{8\r
-,0,890},{9,0,38},{10,0,923},{11,0,23},{11,0,127},{139,0,796},{6,0,1165},{134,0,\r
-1306},{7,0,716},{13,0,97},{141,0,251},{132,10,653},{136,0,657},{146,10,80},{5,11\r
-,622},{7,11,1032},{11,11,26},{11,11,213},{11,11,707},{12,11,380},{13,11,226},{\r
-141,11,355},{6,0,299},{5,11,70},{6,11,334},{9,11,171},{11,11,637},{12,11,202},{\r
-14,11,222},{145,11,42},{142,0,134},{4,11,23},{5,11,313},{5,11,1014},{6,11,50},{6\r
-,11,51},{7,11,142},{7,11,384},{9,11,783},{139,11,741},{4,11,141},{7,11,559},{8,\r
-11,640},{9,11,460},{12,11,183},{141,11,488},{136,11,614},{7,10,1368},{8,10,232},\r
-{8,10,361},{10,10,682},{138,10,742},{137,10,534},{6,0,1082},{140,0,658},{137,10,\r
-27},{135,0,2002},{142,10,12},{4,0,28},{5,0,440},{7,0,248},{11,0,833},{140,0,344}\r
-,{7,10,736},{139,10,264},{134,10,1657},{134,0,1654},{138,0,531},{5,11,222},{9,11\r
-,140},{138,11,534},{6,0,634},{6,0,798},{134,0,840},{138,11,503},{135,10,127},{\r
-133,0,853},{5,11,154},{7,11,1491},{10,11,379},{138,11,485},{6,0,249},{7,0,1234},\r
-{139,0,573},{133,11,716},{7,11,1570},{140,11,542},{136,10,364},{138,0,527},{4,11\r
-,91},{5,11,388},{5,11,845},{6,11,206},{6,11,252},{6,11,365},{7,11,136},{7,11,531\r
-},{8,11,264},{136,11,621},{134,0,1419},{135,11,1441},{7,0,49},{7,0,392},{8,0,20}\r
-,{8,0,172},{8,0,690},{9,0,383},{9,0,845},{10,0,48},{11,0,293},{11,0,832},{11,0,\r
-920},{11,0,984},{141,0,221},{5,0,858},{133,0,992},{5,0,728},{137,10,792},{5,10,\r
-909},{9,10,849},{138,10,805},{7,0,525},{7,0,1579},{8,0,497},{136,0,573},{6,0,268\r
-},{137,0,62},{135,11,576},{134,0,1201},{5,11,771},{5,11,863},{5,11,898},{6,11,\r
-1632},{6,11,1644},{134,11,1780},{133,11,331},{7,0,193},{7,0,1105},{10,0,495},{7,\r
-10,397},{8,10,124},{8,10,619},{9,10,305},{11,10,40},{12,10,349},{13,10,134},{13,\r
-10,295},{14,10,155},{15,10,120},{146,10,105},{138,0,106},{6,0,859},{5,11,107},{7\r
-,11,201},{136,11,518},{6,11,446},{135,11,1817},{13,0,23},{4,10,262},{135,10,342}\r
-,{133,10,641},{137,11,851},{6,0,925},{137,0,813},{132,11,504},{6,0,613},{136,0,\r
-223},{4,10,99},{6,10,250},{6,10,346},{8,10,127},{138,10,81},{136,0,953},{132,10,\r
-915},{139,11,892},{5,10,75},{9,10,517},{10,10,470},{12,10,155},{141,10,224},{4,0\r
-,666},{7,0,1017},{7,11,996},{138,11,390},{5,11,883},{133,11,975},{14,10,83},{142\r
-,11,83},{4,0,670},{5,11,922},{134,11,1707},{135,0,216},{9,0,40},{11,0,136},{135,\r
-11,787},{5,10,954},{5,11,993},{7,11,515},{137,11,91},{139,0,259},{7,0,1114},{9,0\r
-,310},{9,0,682},{10,0,440},{13,0,40},{6,10,304},{8,10,418},{11,10,341},{139,10,\r
-675},{14,0,296},{9,10,410},{139,10,425},{10,11,377},{12,11,363},{13,11,68},{13,\r
-11,94},{14,11,108},{142,11,306},{7,0,1401},{135,0,1476},{4,0,296},{6,0,475},{7,0\r
-,401},{7,0,1410},{7,0,1594},{7,0,1674},{8,0,63},{8,0,660},{137,0,74},{4,0,139},{\r
-4,0,388},{140,0,188},{132,0,797},{132,11,766},{5,11,103},{7,11,921},{8,11,580},{\r
-8,11,593},{8,11,630},{138,11,28},{4,11,911},{5,11,867},{133,11,1013},{134,10,14}\r
-,{134,0,1572},{134,10,1708},{21,0,39},{5,10,113},{6,10,243},{7,10,1865},{11,10,\r
-161},{16,10,37},{145,10,99},{7,11,1563},{141,11,182},{5,11,135},{6,11,519},{7,11\r
-,1722},{10,11,271},{11,11,261},{145,11,54},{132,10,274},{134,0,1594},{4,11,300},\r
-{5,11,436},{135,11,484},{4,0,747},{6,0,290},{7,0,649},{7,0,1479},{135,0,1583},{\r
-133,11,535},{147,11,82},{133,0,232},{137,0,887},{135,10,166},{136,0,521},{4,0,14\r
-},{7,0,472},{7,0,1801},{10,0,748},{141,0,458},{134,0,741},{134,0,992},{16,0,111}\r
-,{137,10,304},{4,0,425},{5,11,387},{7,11,557},{12,11,547},{142,11,86},{135,11,\r
-1747},{5,10,654},{135,11,1489},{7,0,789},{4,11,6},{5,11,708},{136,11,75},{6,10,\r
-273},{10,10,188},{13,10,377},{146,10,77},{6,0,1593},{4,11,303},{7,11,619},{10,11\r
-,547},{10,11,687},{11,11,122},{140,11,601},{134,0,1768},{135,10,410},{138,11,772\r
-},{11,0,233},{139,10,524},{5,0,943},{134,0,1779},{134,10,1785},{136,11,529},{132\r
-,0,955},{5,0,245},{6,0,576},{7,0,582},{136,0,225},{132,10,780},{142,0,241},{134,\r
-0,1943},{4,11,106},{7,11,310},{7,11,1785},{10,11,690},{139,11,717},{134,0,1284},\r
-{5,11,890},{133,11,988},{6,11,626},{142,11,431},{10,11,706},{145,11,32},{137,11,\r
-332},{132,11,698},{135,0,709},{5,10,948},{138,11,17},{136,0,554},{134,0,1564},{\r
-139,10,941},{132,0,443},{134,0,909},{134,11,84},{142,0,280},{4,10,532},{5,10,706\r
-},{135,10,662},{132,0,729},{5,10,837},{6,10,1651},{139,10,985},{135,10,1861},{4,\r
-0,348},{152,11,3},{5,11,986},{6,11,130},{7,11,1582},{8,11,458},{10,11,101},{10,\r
-11,318},{138,11,823},{134,0,758},{4,0,298},{137,0,848},{4,10,330},{7,10,933},{7,\r
-10,2012},{136,10,292},{7,11,1644},{137,11,129},{6,0,1422},{9,0,829},{135,10,767}\r
-,{5,0,164},{7,0,121},{142,0,189},{7,0,812},{7,0,1261},{7,0,1360},{9,0,632},{140,\r
-0,352},{135,11,1788},{139,0,556},{135,11,997},{145,10,114},{4,0,172},{9,0,611},{\r
-10,0,436},{12,0,673},{13,0,255},{137,10,883},{11,0,530},{138,10,274},{133,0,844}\r
-,{134,0,984},{13,0,232},{18,0,35},{4,10,703},{135,10,207},{132,10,571},{9,0,263}\r
-,{10,0,147},{138,0,492},{7,11,1756},{137,11,98},{5,10,873},{5,10,960},{8,10,823}\r
-,{137,10,881},{133,0,537},{132,0,859},{7,11,1046},{139,11,160},{137,0,842},{139,\r
-10,283},{5,10,33},{6,10,470},{139,10,424},{6,11,45},{7,11,433},{8,11,129},{9,11,\r
-21},{10,11,392},{11,11,79},{12,11,499},{13,11,199},{141,11,451},{135,0,1291},{\r
-135,10,1882},{7,11,558},{136,11,353},{134,0,1482},{5,0,230},{5,0,392},{6,0,420},\r
-{9,0,568},{140,0,612},{6,0,262},{7,10,90},{7,10,664},{7,10,830},{7,10,1380},{7,\r
-10,2025},{8,11,81},{8,10,448},{8,10,828},{9,11,189},{9,11,201},{11,11,478},{11,\r
-11,712},{141,11,338},{142,0,31},{5,11,353},{151,11,26},{132,0,753},{4,0,0},{5,0,\r
-41},{7,0,1459},{7,0,1469},{7,0,1859},{9,0,549},{139,0,905},{9,10,417},{137,10,\r
-493},{135,11,1113},{133,0,696},{141,11,448},{134,10,295},{132,0,834},{4,0,771},{\r
-5,10,1019},{6,11,25},{7,11,855},{7,11,1258},{144,11,32},{134,0,1076},{133,0,921}\r
-,{133,0,674},{4,11,4},{7,11,1118},{7,11,1320},{7,11,1706},{8,11,277},{9,11,622},\r
-{10,11,9},{11,11,724},{12,11,350},{12,11,397},{13,11,28},{13,11,159},{15,11,89},\r
-{18,11,5},{19,11,9},{20,11,34},{150,11,47},{134,10,208},{6,0,444},{136,0,308},{6\r
-,0,180},{7,0,1137},{8,0,751},{139,0,805},{4,0,183},{7,0,271},{11,0,824},{11,0,\r
-952},{13,0,278},{13,0,339},{13,0,482},{14,0,424},{148,0,99},{7,11,317},{135,11,\r
-569},{4,0,19},{5,0,477},{5,0,596},{6,0,505},{7,0,1221},{11,0,907},{12,0,209},{\r
-141,0,214},{135,0,1215},{6,0,271},{7,0,398},{8,0,387},{10,0,344},{7,10,448},{7,\r
-10,1629},{7,10,1813},{8,10,442},{9,10,710},{10,10,282},{138,10,722},{11,10,844},\r
-{12,10,104},{140,10,625},{134,11,255},{133,10,787},{134,0,1645},{11,11,956},{151\r
-,11,3},{6,0,92},{6,0,188},{7,0,209},{7,0,1269},{7,0,1524},{7,0,1876},{8,0,661},{\r
-10,0,42},{10,0,228},{11,0,58},{11,0,1020},{12,0,58},{12,0,118},{141,0,32},{4,0,\r
-459},{133,0,966},{4,11,536},{7,11,1141},{10,11,723},{139,11,371},{140,0,330},{\r
-134,0,1557},{7,11,285},{135,11,876},{136,10,491},{135,11,560},{6,0,18},{7,0,179}\r
-,{7,0,932},{8,0,548},{8,0,757},{9,0,54},{9,0,65},{9,0,532},{9,0,844},{10,0,113},\r
-{10,0,117},{10,0,315},{10,0,560},{10,0,622},{10,0,798},{11,0,153},{11,0,351},{11\r
-,0,375},{12,0,78},{12,0,151},{12,0,392},{12,0,666},{14,0,248},{143,0,23},{6,0,\r
-1742},{132,11,690},{4,10,403},{5,10,441},{7,10,450},{10,10,840},{11,10,101},{12,\r
-10,193},{141,10,430},{133,0,965},{134,0,182},{10,0,65},{10,0,488},{138,0,497},{\r
-135,11,1346},{6,0,973},{6,0,1158},{10,11,200},{19,11,2},{151,11,22},{4,11,190},{\r
-133,11,554},{133,10,679},{7,0,328},{137,10,326},{133,11,1001},{9,0,588},{138,0,\r
-260},{133,11,446},{135,10,1128},{135,10,1796},{147,11,119},{134,0,1786},{6,0,\r
-1328},{6,0,1985},{8,0,962},{138,0,1017},{135,0,308},{11,0,508},{4,10,574},{7,10,\r
-350},{7,10,1024},{8,10,338},{9,10,677},{138,10,808},{138,11,752},{135,10,1081},{\r
-137,11,96},{7,10,1676},{135,10,2037},{136,0,588},{132,11,304},{133,0,614},{140,0\r
-,793},{136,0,287},{137,10,297},{141,10,37},{6,11,53},{6,11,199},{7,11,1408},{8,\r
-11,32},{8,11,93},{9,11,437},{10,11,397},{10,11,629},{11,11,593},{11,11,763},{13,\r
-11,326},{145,11,35},{134,11,105},{9,11,320},{10,11,506},{138,11,794},{5,11,114},\r
-{5,11,255},{141,11,285},{140,0,290},{7,11,2035},{8,11,19},{9,11,89},{138,11,831}\r
-,{134,0,1136},{7,0,719},{8,0,796},{8,0,809},{8,0,834},{6,10,306},{7,10,1140},{7,\r
-10,1340},{8,10,133},{138,10,449},{139,10,1011},{5,0,210},{6,0,213},{7,0,60},{10,\r
-0,364},{139,0,135},{5,0,607},{8,0,326},{136,0,490},{138,11,176},{132,0,701},{5,0\r
-,472},{7,0,380},{137,0,758},{135,0,1947},{6,0,1079},{138,0,278},{138,11,391},{5,\r
-10,329},{8,10,260},{139,11,156},{4,0,386},{7,0,41},{8,0,405},{8,0,728},{9,0,497}\r
-,{11,0,110},{11,0,360},{15,0,37},{144,0,84},{5,0,46},{7,0,1452},{7,0,1480},{8,0,\r
-634},{140,0,472},{136,0,961},{4,0,524},{136,0,810},{10,0,238},{141,0,33},{132,10\r
-,657},{152,10,7},{133,0,532},{5,0,997},{135,10,1665},{7,11,594},{7,11,851},{7,11\r
-,1858},{9,11,411},{9,11,574},{9,11,666},{9,11,737},{10,11,346},{10,11,712},{11,\r
-11,246},{11,11,432},{11,11,517},{11,11,647},{11,11,679},{11,11,727},{12,11,304},\r
-{12,11,305},{12,11,323},{12,11,483},{12,11,572},{12,11,593},{12,11,602},{13,11,\r
-95},{13,11,101},{13,11,171},{13,11,315},{13,11,378},{13,11,425},{13,11,475},{14,\r
-11,63},{14,11,380},{14,11,384},{15,11,133},{18,11,112},{148,11,72},{5,11,955},{\r
-136,11,814},{134,0,1301},{5,10,66},{7,10,1896},{136,10,288},{133,11,56},{134,10,\r
-1643},{6,0,1298},{148,11,100},{5,0,782},{5,0,829},{6,0,671},{6,0,1156},{6,0,1738\r
-},{137,11,621},{4,0,306},{5,0,570},{7,0,1347},{5,10,91},{5,10,648},{5,10,750},{5\r
-,10,781},{6,10,54},{6,10,112},{6,10,402},{6,10,1732},{7,10,315},{7,10,749},{7,10\r
-,1900},{9,10,78},{9,10,508},{10,10,611},{10,10,811},{11,10,510},{11,10,728},{13,\r
-10,36},{14,10,39},{16,10,83},{17,10,124},{148,10,30},{8,10,570},{9,11,477},{141,\r
-11,78},{4,11,639},{10,11,4},{10,10,322},{10,10,719},{11,10,407},{11,11,638},{12,\r
-11,177},{148,11,57},{7,0,1823},{139,0,693},{7,0,759},{5,11,758},{8,10,125},{8,10\r
-,369},{8,10,524},{10,10,486},{11,10,13},{11,10,381},{11,10,736},{11,10,766},{11,\r
-10,845},{13,10,114},{13,10,292},{142,10,47},{7,0,1932},{6,10,1684},{6,10,1731},{\r
-7,10,356},{8,10,54},{8,10,221},{9,10,225},{9,10,356},{10,10,77},{10,10,446},{10,\r
-10,731},{12,10,404},{141,10,491},{135,11,552},{135,11,1112},{4,0,78},{5,0,96},{5\r
-,0,182},{6,0,1257},{7,0,1724},{7,0,1825},{10,0,394},{10,0,471},{11,0,532},{14,0,\r
-340},{145,0,88},{139,11,328},{135,0,1964},{132,10,411},{4,10,80},{5,10,44},{137,\r
-11,133},{5,11,110},{6,11,169},{6,11,1702},{7,11,400},{8,11,538},{9,11,184},{9,11\r
-,524},{140,11,218},{4,0,521},{5,10,299},{7,10,1083},{140,11,554},{6,11,133},{9,\r
-11,353},{12,11,628},{146,11,79},{6,0,215},{7,0,584},{7,0,1028},{7,0,1473},{7,0,\r
-1721},{9,0,424},{138,0,779},{7,0,857},{7,0,1209},{7,10,1713},{9,10,537},{10,10,\r
-165},{12,10,219},{140,10,561},{4,10,219},{6,11,93},{7,11,1422},{7,10,1761},{7,11\r
-,1851},{8,11,673},{9,10,86},{9,11,529},{140,11,43},{137,11,371},{136,0,671},{5,0\r
-,328},{135,0,918},{132,0,529},{9,11,25},{10,11,467},{138,11,559},{4,11,335},{135\r
-,11,942},{134,0,716},{134,0,1509},{6,0,67},{7,0,258},{7,0,1630},{9,0,354},{9,0,\r
-675},{10,0,830},{14,0,80},{17,0,80},{140,10,428},{134,0,1112},{6,0,141},{7,0,225\r
-},{9,0,59},{9,0,607},{10,0,312},{11,0,687},{12,0,555},{13,0,373},{13,0,494},{148\r
-,0,58},{133,10,514},{8,11,39},{10,11,773},{11,11,84},{12,11,205},{142,11,1},{8,0\r
-,783},{5,11,601},{133,11,870},{136,11,594},{4,10,55},{5,10,301},{6,10,571},{14,\r
-10,49},{146,10,102},{132,11,181},{134,11,1652},{133,10,364},{4,11,97},{5,11,147}\r
-,{6,11,286},{7,11,1362},{141,11,176},{4,10,76},{7,10,1550},{9,10,306},{9,10,430}\r
-,{9,10,663},{10,10,683},{11,10,427},{11,10,753},{12,10,334},{12,10,442},{14,10,\r
-258},{14,10,366},{143,10,131},{137,10,52},{6,0,955},{134,0,1498},{6,11,375},{7,\r
-11,169},{7,11,254},{136,11,780},{7,0,430},{11,0,46},{14,0,343},{142,11,343},{135\r
-,0,1183},{5,0,602},{7,0,2018},{9,0,418},{9,0,803},{135,11,1447},{8,0,677},{135,\r
-11,1044},{139,11,285},{4,10,656},{135,10,779},{135,10,144},{5,11,629},{135,11,\r
-1549},{135,10,1373},{138,11,209},{7,10,554},{7,10,605},{141,10,10},{5,10,838},{5\r
-,10,841},{134,10,1649},{133,10,1012},{6,0,1357},{134,0,1380},{144,0,53},{6,0,590\r
-},{7,10,365},{7,10,1357},{7,10,1497},{8,10,154},{141,10,281},{133,10,340},{132,\r
-11,420},{135,0,329},{147,11,32},{4,0,469},{10,11,429},{139,10,495},{8,10,261},{9\r
-,10,144},{9,10,466},{10,10,370},{12,10,470},{13,10,144},{142,10,348},{142,0,460}\r
-,{4,11,325},{9,10,897},{138,11,125},{6,0,1743},{6,10,248},{9,10,546},{10,10,535}\r
-,{11,10,681},{141,10,135},{4,0,990},{5,0,929},{6,0,340},{8,0,376},{8,0,807},{8,0\r
-,963},{8,0,980},{138,0,1007},{134,0,1603},{140,0,250},{4,11,714},{133,11,469},{\r
-134,10,567},{136,10,445},{5,0,218},{7,0,1610},{8,0,646},{10,0,83},{11,11,138},{\r
-140,11,40},{7,0,1512},{135,0,1794},{135,11,1216},{11,0,0},{16,0,78},{132,11,718}\r
-,{133,0,571},{132,0,455},{134,0,1012},{5,11,124},{5,11,144},{6,11,548},{7,11,15}\r
-,{7,11,153},{137,11,629},{142,11,10},{6,11,75},{7,11,1531},{8,11,416},{9,11,240}\r
-,{9,11,275},{10,11,100},{11,11,658},{11,11,979},{12,11,86},{13,11,468},{14,11,66\r
-},{14,11,207},{15,11,20},{15,11,25},{144,11,58},{132,10,577},{5,11,141},{5,11,\r
-915},{6,11,1783},{7,11,211},{7,11,698},{7,11,1353},{9,11,83},{9,11,281},{10,11,\r
-376},{10,11,431},{11,11,543},{12,11,664},{13,11,280},{13,11,428},{14,11,61},{14,\r
-11,128},{17,11,52},{145,11,81},{6,0,161},{7,0,372},{137,0,597},{132,0,349},{10,\r
-11,702},{139,11,245},{134,0,524},{134,10,174},{6,0,432},{9,0,751},{139,0,322},{\r
-147,11,94},{4,11,338},{133,11,400},{5,0,468},{10,0,325},{11,0,856},{12,0,345},{\r
-143,0,104},{133,0,223},{132,0,566},{4,11,221},{5,11,659},{5,11,989},{7,11,697},{\r
-7,11,1211},{138,11,284},{135,11,1070},{4,0,59},{135,0,1394},{6,0,436},{11,0,481}\r
-,{5,10,878},{133,10,972},{4,0,48},{5,0,271},{135,0,953},{5,0,610},{136,0,457},{4\r
-,0,773},{5,0,618},{137,0,756},{133,0,755},{135,0,1217},{138,11,507},{132,10,351}\r
-,{132,0,197},{143,11,78},{4,11,188},{7,11,805},{11,11,276},{142,11,293},{5,11,\r
-884},{139,11,991},{132,10,286},{10,0,259},{10,0,428},{7,10,438},{7,10,627},{7,10\r
-,1516},{8,10,40},{9,10,56},{9,10,294},{11,10,969},{11,10,995},{146,10,148},{4,0,\r
-356},{5,0,217},{5,0,492},{5,0,656},{8,0,544},{136,11,544},{5,0,259},{6,0,1230},{\r
-7,0,414},{7,0,854},{142,0,107},{132,0,1007},{15,0,14},{144,0,5},{6,0,1580},{132,\r
-10,738},{132,11,596},{132,0,673},{133,10,866},{6,0,1843},{135,11,1847},{4,0,165}\r
-,{7,0,1398},{135,0,1829},{135,11,1634},{147,11,65},{6,0,885},{6,0,1009},{137,0,\r
-809},{133,10,116},{132,10,457},{136,11,770},{9,0,498},{12,0,181},{10,11,361},{\r
-142,11,316},{134,11,595},{5,0,9},{7,0,297},{7,0,966},{140,0,306},{4,11,89},{5,11\r
-,489},{6,11,315},{7,11,553},{7,11,1745},{138,11,243},{134,0,1487},{132,0,437},{5\r
-,0,146},{6,0,411},{138,0,721},{5,10,527},{6,10,189},{135,10,859},{11,10,104},{11\r
-,10,554},{15,10,60},{143,10,125},{6,11,1658},{9,11,3},{10,11,154},{11,11,641},{\r
-13,11,85},{13,11,201},{141,11,346},{6,0,177},{135,0,467},{134,0,1377},{134,10,\r
-116},{136,11,645},{4,11,166},{5,11,505},{6,11,1670},{137,11,110},{133,10,487},{4\r
-,10,86},{5,10,667},{5,10,753},{6,10,316},{6,10,455},{135,10,946},{133,0,200},{\r
-132,0,959},{6,0,1928},{134,0,1957},{139,11,203},{150,10,45},{4,10,79},{7,10,1773\r
-},{10,10,450},{11,10,589},{13,10,332},{13,10,493},{14,10,183},{14,10,334},{14,10\r
-,362},{14,10,368},{14,10,376},{14,10,379},{19,10,90},{19,10,103},{19,10,127},{\r
-148,10,90},{6,0,1435},{135,11,1275},{134,0,481},{7,11,445},{8,11,307},{8,11,704}\r
-,{10,11,41},{10,11,439},{11,11,237},{11,11,622},{140,11,201},{135,11,869},{4,0,\r
-84},{7,0,1482},{10,0,76},{138,0,142},{11,11,277},{144,11,14},{135,11,1977},{4,11\r
-,189},{5,11,713},{136,11,57},{133,0,1015},{138,11,371},{4,0,315},{5,0,507},{135,\r
-0,1370},{4,11,552},{142,10,381},{9,0,759},{16,0,31},{16,0,39},{16,0,75},{18,0,24\r
-},{20,0,42},{152,0,1},{134,0,712},{134,0,1722},{133,10,663},{133,10,846},{8,0,\r
-222},{8,0,476},{9,0,238},{11,0,516},{11,0,575},{15,0,109},{146,0,100},{7,0,1402}\r
-,{7,0,1414},{12,0,456},{5,10,378},{8,10,465},{9,10,286},{10,10,185},{10,10,562},\r
-{10,10,635},{11,10,31},{11,10,393},{13,10,312},{18,10,65},{18,10,96},{147,10,89}\r
-,{4,0,986},{6,0,1958},{6,0,2032},{8,0,934},{138,0,985},{7,10,1880},{9,10,680},{\r
-139,10,798},{134,10,1770},{145,11,49},{132,11,614},{132,10,648},{5,10,945},{6,10\r
-,1656},{6,10,1787},{7,10,167},{8,10,824},{9,10,391},{10,10,375},{139,10,185},{\r
-138,11,661},{7,0,1273},{135,11,1945},{7,0,706},{7,0,1058},{138,0,538},{7,10,1645\r
-},{8,10,352},{137,10,249},{132,10,152},{11,0,92},{11,0,196},{11,0,409},{11,0,450\r
-},{11,0,666},{11,0,777},{12,0,262},{13,0,385},{13,0,393},{15,0,115},{16,0,45},{\r
-145,0,82},{133,10,1006},{6,0,40},{135,0,1781},{9,11,614},{139,11,327},{5,10,420}\r
-,{135,10,1449},{135,0,431},{10,0,97},{135,10,832},{6,0,423},{7,0,665},{135,0,\r
-1210},{7,0,237},{8,0,664},{9,0,42},{9,0,266},{9,0,380},{9,0,645},{10,0,177},{138\r
-,0,276},{7,0,264},{133,10,351},{8,0,213},{5,10,40},{7,10,598},{7,10,1638},{9,10,\r
-166},{9,10,640},{9,10,685},{9,10,773},{11,10,215},{13,10,65},{14,10,172},{14,10,\r
-317},{145,10,6},{5,11,84},{134,11,163},{8,10,60},{9,10,343},{139,10,769},{137,0,\r
-455},{133,11,410},{8,0,906},{12,0,700},{12,0,706},{140,0,729},{21,11,33},{150,11\r
-,40},{7,10,1951},{8,10,765},{8,10,772},{140,10,671},{7,10,108},{8,10,219},{8,10,\r
-388},{9,10,639},{9,10,775},{11,10,275},{140,10,464},{5,11,322},{7,11,1941},{8,11\r
-,186},{9,11,262},{10,11,187},{14,11,208},{146,11,130},{139,0,624},{8,0,574},{5,\r
-11,227},{140,11,29},{7,11,1546},{11,11,299},{142,11,407},{5,10,15},{6,10,56},{7,\r
-10,1758},{8,10,500},{9,10,730},{11,10,331},{13,10,150},{142,10,282},{7,11,1395},\r
-{8,11,486},{9,11,236},{9,11,878},{10,11,218},{11,11,95},{19,11,17},{147,11,31},{\r
-135,11,2043},{4,0,354},{146,11,4},{140,11,80},{135,0,1558},{134,10,1886},{5,10,\r
-205},{6,10,438},{137,10,711},{133,11,522},{133,10,534},{7,0,235},{7,0,1475},{15,\r
-0,68},{146,0,120},{137,10,691},{4,0,942},{6,0,1813},{8,0,917},{10,0,884},{12,0,\r
-696},{12,0,717},{12,0,723},{12,0,738},{12,0,749},{12,0,780},{16,0,97},{146,0,169\r
-},{6,10,443},{8,11,562},{9,10,237},{9,10,571},{9,10,695},{10,10,139},{11,10,715}\r
-,{12,10,417},{141,10,421},{135,0,957},{133,0,830},{134,11,1771},{146,0,23},{5,0,\r
-496},{6,0,694},{7,0,203},{7,11,1190},{137,11,620},{137,11,132},{6,0,547},{134,0,\r
-1549},{8,11,258},{9,11,208},{137,11,359},{4,0,864},{5,0,88},{137,0,239},{135,11,\r
-493},{4,11,317},{135,11,1279},{132,11,477},{4,10,578},{5,11,63},{133,11,509},{7,\r
-0,650},{135,0,1310},{7,0,1076},{9,0,80},{11,0,78},{11,0,421},{11,0,534},{140,0,\r
-545},{132,11,288},{12,0,553},{14,0,118},{133,10,923},{7,0,274},{11,0,479},{139,0\r
-,507},{8,11,89},{8,11,620},{9,11,49},{10,11,774},{11,11,628},{12,11,322},{143,11\r
-,124},{4,0,497},{135,0,1584},{7,0,261},{7,0,1115},{7,0,1354},{7,0,1404},{7,0,\r
-1588},{7,0,1705},{7,0,1902},{9,0,465},{10,0,248},{10,0,349},{10,0,647},{11,0,527\r
-},{11,0,660},{11,0,669},{12,0,529},{13,0,305},{132,10,924},{133,10,665},{136,0,\r
-13},{6,0,791},{138,11,120},{7,0,642},{8,0,250},{11,0,123},{11,0,137},{13,0,48},{\r
-142,0,95},{4,10,265},{7,10,807},{135,10,950},{5,10,93},{140,10,267},{135,0,1429}\r
-,{4,0,949},{10,0,885},{10,0,891},{10,0,900},{10,0,939},{12,0,760},{142,0,449},{\r
-139,11,366},{132,0,818},{134,11,85},{135,10,994},{7,0,330},{5,10,233},{5,10,320}\r
-,{6,10,140},{136,10,295},{4,0,1004},{8,0,982},{136,0,993},{133,10,978},{4,10,905\r
-},{6,10,1701},{137,10,843},{10,0,545},{140,0,301},{6,0,947},{134,0,1062},{134,0,\r
-1188},{4,0,904},{5,0,794},{152,10,6},{134,0,1372},{135,11,608},{5,11,279},{6,11,\r
-235},{7,11,468},{8,11,446},{9,11,637},{10,11,717},{11,11,738},{140,11,514},{132,\r
-10,509},{5,11,17},{6,11,371},{137,11,528},{132,0,693},{4,11,115},{5,11,669},{6,\r
-11,407},{8,11,311},{11,11,10},{141,11,5},{11,0,377},{7,10,273},{137,11,381},{135\r
-,0,695},{7,0,386},{138,0,713},{135,10,1041},{134,0,1291},{6,0,7},{6,0,35},{7,0,\r
-147},{7,0,1069},{7,0,1568},{7,0,1575},{7,0,1917},{8,0,43},{8,0,208},{9,0,128},{9\r
-,0,866},{10,0,20},{11,0,981},{147,0,33},{7,0,893},{141,0,424},{139,10,234},{150,\r
-11,56},{5,11,779},{5,11,807},{6,11,1655},{134,11,1676},{5,10,802},{7,10,2021},{\r
-136,10,805},{4,11,196},{5,10,167},{5,11,558},{5,10,899},{5,11,949},{6,10,410},{\r
-137,10,777},{137,10,789},{134,10,1705},{8,0,904},{140,0,787},{6,0,322},{9,0,552}\r
-,{11,0,274},{13,0,209},{13,0,499},{14,0,85},{15,0,126},{145,0,70},{135,10,10},{5\r
-,10,11},{6,10,117},{6,10,485},{7,10,1133},{9,10,582},{9,10,594},{11,10,21},{11,\r
-10,818},{12,10,535},{141,10,86},{4,10,264},{7,10,1067},{8,10,204},{8,10,385},{\r
-139,10,953},{132,11,752},{138,10,56},{133,10,470},{6,0,1808},{8,0,83},{8,0,742},\r
-{8,0,817},{9,0,28},{9,0,29},{9,0,885},{10,0,387},{11,0,633},{11,0,740},{13,0,235\r
-},{13,0,254},{15,0,143},{143,0,146},{140,0,49},{134,0,1832},{4,11,227},{5,11,159\r
-},{5,11,409},{7,11,80},{10,11,294},{10,11,479},{12,11,418},{14,11,50},{14,11,249\r
-},{142,11,295},{7,11,1470},{8,11,66},{8,11,137},{8,11,761},{9,11,638},{11,11,80}\r
-,{11,11,212},{11,11,368},{11,11,418},{12,11,8},{13,11,15},{16,11,61},{17,11,59},\r
-{19,11,28},{148,11,84},{139,10,1015},{138,11,468},{135,0,421},{6,0,415},{7,0,\r
-1049},{137,0,442},{6,11,38},{7,11,1220},{8,11,185},{8,11,256},{9,11,22},{9,11,\r
-331},{10,11,738},{11,11,205},{11,11,540},{11,11,746},{13,11,399},{13,11,465},{14\r
-,11,88},{142,11,194},{139,0,289},{133,10,715},{4,0,110},{10,0,415},{10,0,597},{\r
-142,0,206},{4,11,159},{6,11,115},{7,11,252},{7,11,257},{7,11,1928},{8,11,69},{9,\r
-11,384},{10,11,91},{10,11,615},{12,11,375},{14,11,235},{18,11,117},{147,11,123},\r
-{5,11,911},{136,11,278},{7,0,205},{7,0,2000},{8,10,794},{9,10,400},{10,10,298},{\r
-142,10,228},{135,11,1774},{4,11,151},{7,11,1567},{8,11,351},{137,11,322},{136,10\r
-,724},{133,11,990},{7,0,1539},{11,0,512},{13,0,205},{19,0,30},{22,0,36},{23,0,19\r
-},{135,11,1539},{5,11,194},{7,11,1662},{9,11,90},{140,11,180},{6,10,190},{7,10,\r
-768},{135,10,1170},{134,0,1340},{4,0,283},{135,0,1194},{133,11,425},{133,11,971}\r
-,{12,0,549},{14,10,67},{147,10,60},{135,10,1023},{134,0,1720},{138,11,587},{5,11\r
-,72},{6,11,264},{7,11,21},{7,11,46},{7,11,2013},{8,11,215},{8,11,513},{10,11,266\r
-},{139,11,22},{5,0,319},{135,0,534},{6,10,137},{9,10,75},{9,10,253},{10,10,194},\r
-{138,10,444},{7,0,1180},{20,0,112},{6,11,239},{7,11,118},{10,11,95},{11,11,603},\r
-{13,11,443},{14,11,160},{143,11,4},{134,11,431},{5,11,874},{6,11,1677},{11,10,\r
-643},{12,10,115},{143,11,0},{134,0,967},{6,11,65},{7,11,939},{7,11,1172},{7,11,\r
-1671},{9,11,540},{10,11,696},{11,11,265},{11,11,732},{11,11,928},{11,11,937},{12\r
-,11,399},{13,11,438},{149,11,19},{137,11,200},{135,0,1940},{5,10,760},{7,10,542}\r
-,{8,10,135},{136,10,496},{140,11,44},{7,11,1655},{136,11,305},{7,10,319},{7,10,\r
-355},{7,10,763},{10,10,389},{145,10,43},{136,0,735},{138,10,786},{137,11,19},{\r
-132,11,696},{5,0,132},{9,0,486},{9,0,715},{10,0,458},{11,0,373},{11,0,668},{11,0\r
-,795},{11,0,897},{12,0,272},{12,0,424},{12,0,539},{12,0,558},{14,0,245},{14,0,\r
-263},{14,0,264},{14,0,393},{142,0,403},{10,0,38},{139,0,784},{132,0,838},{4,11,\r
-302},{135,11,1766},{133,0,379},{5,0,8},{6,0,89},{6,0,400},{7,0,1569},{7,0,1623},\r
-{7,0,1850},{8,0,218},{8,0,422},{9,0,570},{10,0,626},{4,11,726},{133,11,630},{4,0\r
-,1017},{138,0,660},{6,0,387},{7,0,882},{141,0,111},{6,0,224},{7,0,877},{137,0,\r
-647},{4,10,58},{5,10,286},{6,10,319},{7,10,402},{7,10,1254},{7,10,1903},{8,10,\r
-356},{140,10,408},{135,0,790},{9,0,510},{10,0,53},{4,10,389},{9,10,181},{10,10,\r
-29},{10,10,816},{11,10,311},{11,10,561},{12,10,67},{141,10,181},{142,0,458},{6,\r
-11,118},{7,11,215},{7,11,1521},{140,11,11},{134,0,954},{135,0,394},{134,0,1367},\r
-{5,11,225},{133,10,373},{132,0,882},{7,0,1409},{135,10,1972},{135,10,1793},{4,11\r
-,370},{5,11,756},{135,11,1326},{150,11,13},{7,11,354},{10,11,410},{139,11,815},{\r
-6,11,1662},{7,11,48},{8,11,771},{10,11,116},{13,11,104},{14,11,105},{14,11,184},\r
-{15,11,168},{19,11,92},{148,11,68},{7,0,124},{136,0,38},{5,0,261},{7,0,78},{7,0,\r
-199},{8,0,815},{9,0,126},{10,0,342},{140,0,647},{4,0,628},{140,0,724},{7,0,266},\r
-{8,0,804},{7,10,1651},{145,10,89},{135,0,208},{134,0,1178},{6,0,79},{135,0,1519}\r
-,{132,10,672},{133,10,737},{136,0,741},{132,11,120},{4,0,710},{6,0,376},{134,0,\r
-606},{134,0,1347},{134,0,1494},{6,0,850},{6,0,1553},{137,0,821},{5,10,145},{134,\r
-11,593},{7,0,1311},{140,0,135},{4,0,467},{5,0,405},{134,0,544},{5,11,820},{135,\r
-11,931},{6,0,100},{7,0,244},{7,0,632},{7,0,1609},{8,0,178},{8,0,638},{141,0,58},\r
-{4,10,387},{135,10,1288},{6,11,151},{6,11,1675},{7,11,383},{151,11,10},{132,0,\r
-481},{135,10,550},{134,0,1378},{6,11,1624},{11,11,11},{12,11,422},{13,11,262},{\r
-142,11,360},{133,0,791},{4,11,43},{5,11,344},{133,11,357},{7,0,1227},{140,0,978}\r
-,{7,0,686},{8,0,33},{8,0,238},{10,0,616},{11,0,467},{11,0,881},{13,0,217},{13,0,\r
-253},{142,0,268},{137,0,857},{8,0,467},{8,0,1006},{7,11,148},{8,11,284},{141,11,\r
-63},{4,10,576},{135,10,1263},{133,11,888},{5,10,919},{134,10,1673},{20,10,37},{\r
-148,11,37},{132,0,447},{132,11,711},{4,0,128},{5,0,415},{6,0,462},{7,0,294},{7,0\r
-,578},{10,0,710},{139,0,86},{4,10,82},{5,10,333},{5,10,904},{6,10,207},{7,10,325\r
-},{7,10,1726},{8,10,101},{10,10,778},{139,10,220},{136,0,587},{137,11,440},{133,\r
-10,903},{6,0,427},{7,0,1018},{138,0,692},{4,0,195},{135,0,802},{140,10,147},{134\r
-,0,1546},{134,0,684},{132,10,705},{136,0,345},{11,11,678},{140,11,307},{133,0,\r
-365},{134,0,1683},{4,11,65},{5,11,479},{5,11,1004},{7,11,1913},{8,11,317},{9,11,\r
-302},{10,11,612},{141,11,22},{138,0,472},{4,11,261},{135,11,510},{134,10,90},{\r
-142,0,433},{151,0,28},{4,11,291},{7,11,101},{9,11,515},{12,11,152},{12,11,443},{\r
-13,11,392},{142,11,357},{140,0,997},{5,0,3},{8,0,578},{9,0,118},{10,0,705},{141,\r
-0,279},{135,11,1266},{7,10,813},{12,10,497},{141,10,56},{133,0,229},{6,10,125},{\r
-135,10,1277},{8,0,102},{10,0,578},{10,0,672},{12,0,496},{13,0,408},{14,0,121},{\r
-17,0,106},{151,10,12},{6,0,866},{134,0,1080},{136,0,1022},{4,11,130},{135,11,843\r
-},{5,11,42},{5,11,879},{7,11,245},{7,11,324},{7,11,1532},{11,11,463},{11,11,472}\r
-,{13,11,363},{144,11,52},{150,0,55},{8,0,115},{8,0,350},{9,0,489},{10,0,128},{11\r
-,0,306},{12,0,373},{14,0,30},{17,0,79},{19,0,80},{4,11,134},{133,11,372},{134,0,\r
-657},{134,0,933},{135,11,1147},{4,0,230},{133,0,702},{134,0,1728},{4,0,484},{18,\r
-0,26},{19,0,42},{20,0,43},{21,0,0},{23,0,27},{152,0,14},{7,0,185},{135,0,703},{6\r
-,0,417},{10,0,618},{7,10,1106},{9,10,770},{11,10,112},{140,10,413},{134,0,803},{\r
-132,11,644},{134,0,1262},{7,11,540},{12,10,271},{145,10,109},{135,11,123},{132,0\r
-,633},{134,11,623},{4,11,908},{5,11,359},{5,11,508},{6,11,1723},{7,11,343},{7,11\r
-,1996},{135,11,2026},{135,0,479},{10,0,262},{7,10,304},{9,10,646},{9,10,862},{11\r
-,10,696},{12,10,208},{15,10,79},{147,10,108},{4,11,341},{135,11,480},{134,0,830}\r
-,{5,0,70},{5,0,622},{6,0,334},{7,0,1032},{9,0,171},{11,0,26},{11,0,213},{11,0,\r
-637},{11,0,707},{12,0,202},{12,0,380},{13,0,226},{13,0,355},{14,0,222},{145,0,42\r
-},{135,10,981},{143,0,217},{137,11,114},{4,0,23},{4,0,141},{5,0,313},{5,0,1014},\r
-{6,0,50},{6,0,51},{7,0,142},{7,0,384},{7,0,559},{8,0,640},{9,0,460},{9,0,783},{\r
-11,0,741},{12,0,183},{141,0,488},{141,0,360},{7,0,1586},{7,11,1995},{8,11,299},{\r
-11,11,890},{140,11,674},{132,10,434},{7,0,652},{134,10,550},{7,0,766},{5,10,553}\r
-,{138,10,824},{7,0,737},{8,0,298},{136,10,452},{4,11,238},{5,11,503},{6,11,179},\r
-{7,11,2003},{8,11,381},{8,11,473},{9,11,149},{10,11,183},{15,11,45},{143,11,86},\r
-{133,10,292},{5,0,222},{9,0,655},{138,0,534},{138,10,135},{4,11,121},{5,11,156},\r
-{5,11,349},{9,11,136},{10,11,605},{14,11,342},{147,11,107},{137,0,906},{6,0,1013\r
-},{134,0,1250},{6,0,1956},{6,0,2009},{8,0,991},{144,0,120},{135,11,1192},{138,0,\r
-503},{5,0,154},{7,0,1491},{10,0,379},{138,0,485},{6,0,1867},{6,0,1914},{6,0,1925\r
-},{9,0,917},{9,0,925},{9,0,932},{9,0,951},{9,0,1007},{9,0,1013},{12,0,806},{12,0\r
-,810},{12,0,814},{12,0,816},{12,0,824},{12,0,832},{12,0,837},{12,0,863},{12,0,\r
-868},{12,0,870},{12,0,889},{12,0,892},{12,0,900},{12,0,902},{12,0,908},{12,0,933\r
-},{12,0,942},{12,0,949},{12,0,954},{15,0,175},{15,0,203},{15,0,213},{15,0,218},{\r
-15,0,225},{15,0,231},{15,0,239},{15,0,248},{15,0,252},{18,0,190},{18,0,204},{18,\r
-0,215},{18,0,216},{18,0,222},{18,0,225},{18,0,230},{18,0,239},{18,0,241},{21,0,\r
-42},{21,0,43},{21,0,44},{21,0,45},{21,0,46},{21,0,53},{24,0,27},{152,0,31},{133,\r
-0,716},{135,0,844},{4,0,91},{5,0,388},{5,0,845},{6,0,206},{6,0,252},{6,0,365},{7\r
-,0,136},{7,0,531},{136,0,621},{7,10,393},{10,10,603},{139,10,206},{6,11,80},{6,\r
-11,1694},{7,11,173},{7,11,1974},{9,11,547},{10,11,730},{14,11,18},{150,11,39},{\r
-137,0,748},{4,11,923},{134,11,1711},{4,10,912},{137,10,232},{7,10,98},{7,10,1973\r
-},{136,10,716},{14,0,103},{133,10,733},{132,11,595},{12,0,158},{18,0,8},{19,0,62\r
-},{20,0,6},{22,0,4},{23,0,2},{23,0,9},{5,11,240},{6,11,459},{7,11,12},{7,11,114}\r
-,{7,11,502},{7,11,1751},{7,11,1753},{7,11,1805},{8,11,658},{9,11,1},{11,11,959},\r
-{13,11,446},{142,11,211},{135,0,576},{5,0,771},{5,0,863},{5,0,898},{6,0,648},{6,\r
-0,1632},{6,0,1644},{134,0,1780},{133,0,331},{7,11,633},{7,11,905},{7,11,909},{7,\r
-11,1538},{9,11,767},{140,11,636},{140,0,632},{5,0,107},{7,0,201},{136,0,518},{6,\r
-0,446},{7,0,1817},{134,11,490},{9,0,851},{141,0,510},{7,11,250},{8,11,506},{136,\r
-11,507},{4,0,504},{137,10,72},{132,11,158},{4,11,140},{7,11,362},{8,11,209},{9,\r
-11,10},{9,11,160},{9,11,503},{10,11,689},{11,11,350},{11,11,553},{11,11,725},{12\r
-,11,252},{12,11,583},{13,11,192},{13,11,352},{14,11,269},{14,11,356},{148,11,50}\r
-,{6,11,597},{135,11,1318},{135,10,1454},{5,0,883},{5,0,975},{8,0,392},{148,0,7},\r
-{6,11,228},{7,11,1341},{9,11,408},{138,11,343},{11,11,348},{11,10,600},{12,11,99\r
-},{13,10,245},{18,11,1},{18,11,11},{147,11,4},{134,11,296},{5,0,922},{134,0,1707\r
-},{132,11,557},{4,11,548},{7,10,164},{7,10,1571},{9,10,107},{140,10,225},{7,11,\r
-197},{8,11,142},{8,11,325},{9,11,150},{9,11,596},{10,11,350},{10,11,353},{11,11,\r
-74},{11,11,315},{14,11,423},{143,11,141},{5,0,993},{7,0,515},{137,0,91},{4,0,131\r
-},{8,0,200},{5,10,484},{5,10,510},{6,10,434},{7,10,1000},{7,10,1098},{136,10,2},\r
-{152,0,10},{4,11,62},{5,11,83},{6,11,399},{6,11,579},{7,11,692},{7,11,846},{7,11\r
-,1015},{7,11,1799},{8,11,403},{9,11,394},{10,11,133},{12,11,4},{12,11,297},{12,\r
-11,452},{16,11,81},{18,11,19},{18,11,25},{21,11,14},{22,11,12},{151,11,18},{140,\r
-11,459},{132,11,177},{7,0,1433},{9,0,365},{137,11,365},{132,10,460},{5,0,103},{6\r
-,0,2004},{7,0,921},{8,0,580},{8,0,593},{8,0,630},{10,0,28},{5,11,411},{135,11,\r
-653},{4,10,932},{133,10,891},{4,0,911},{5,0,867},{5,0,1013},{7,0,2034},{8,0,798}\r
-,{136,0,813},{7,11,439},{10,11,727},{11,11,260},{139,11,684},{136,10,625},{5,11,\r
-208},{7,11,753},{135,11,1528},{5,0,461},{7,0,1925},{12,0,39},{13,0,265},{13,0,\r
-439},{134,10,76},{6,0,853},{8,10,92},{137,10,221},{5,0,135},{6,0,519},{7,0,1722}\r
-,{10,0,271},{11,0,261},{145,0,54},{139,11,814},{14,0,338},{148,0,81},{4,0,300},{\r
-133,0,436},{5,0,419},{5,0,687},{7,0,864},{9,0,470},{135,11,864},{9,0,836},{133,\r
-11,242},{134,0,1937},{4,10,763},{133,11,953},{132,10,622},{132,0,393},{133,10,\r
-253},{8,0,357},{10,0,745},{14,0,426},{17,0,94},{19,0,57},{135,10,546},{5,11,615}\r
-,{146,11,37},{9,10,73},{10,10,110},{14,10,185},{145,10,119},{11,0,703},{7,10,624\r
-},{7,10,916},{10,10,256},{139,10,87},{133,11,290},{5,10,212},{12,10,35},{141,10,\r
-382},{132,11,380},{5,11,52},{7,11,277},{9,11,368},{139,11,791},{133,0,387},{10,\r
-11,138},{139,11,476},{4,0,6},{5,0,708},{136,0,75},{7,0,1351},{9,0,581},{10,0,639\r
-},{11,0,453},{140,0,584},{132,0,303},{138,0,772},{135,10,1175},{4,0,749},{5,10,\r
-816},{6,11,256},{7,11,307},{7,11,999},{7,11,1481},{7,11,1732},{7,11,1738},{8,11,\r
-265},{9,11,414},{11,11,316},{12,11,52},{13,11,420},{147,11,100},{135,11,1296},{6\r
-,0,1065},{5,10,869},{5,10,968},{6,10,1626},{8,10,734},{136,10,784},{4,10,542},{6\r
-,10,1716},{6,10,1727},{7,10,1082},{7,10,1545},{8,10,56},{8,10,118},{8,10,412},{8\r
-,10,564},{9,10,888},{9,10,908},{10,10,50},{10,10,423},{11,10,685},{11,10,697},{\r
-11,10,933},{12,10,299},{13,10,126},{13,10,136},{13,10,170},{141,10,190},{134,0,\r
-226},{4,0,106},{7,0,310},{11,0,717},{133,11,723},{5,0,890},{5,0,988},{4,10,232},\r
-{9,10,202},{10,10,474},{140,10,433},{6,0,626},{142,0,431},{10,0,706},{150,0,44},\r
-{13,0,51},{6,10,108},{7,10,1003},{7,10,1181},{8,10,111},{136,10,343},{132,0,698}\r
-,{5,11,109},{6,11,1784},{7,11,1895},{12,11,296},{140,11,302},{134,0,828},{134,10\r
-,1712},{138,0,17},{7,0,1929},{4,10,133},{5,11,216},{7,10,711},{7,10,1298},{7,10,\r
-1585},{7,11,1879},{9,11,141},{9,11,270},{9,11,679},{10,11,159},{10,11,553},{11,\r
-11,197},{11,11,438},{12,11,538},{12,11,559},{13,11,193},{13,11,423},{14,11,144},\r
-{14,11,166},{14,11,167},{15,11,67},{147,11,84},{141,11,127},{7,11,1872},{137,11,\r
-81},{6,10,99},{7,10,1808},{145,10,57},{134,11,391},{5,0,689},{6,0,84},{7,0,1250}\r
-,{6,10,574},{7,10,428},{10,10,669},{11,10,485},{11,10,840},{12,10,300},{142,10,\r
-250},{7,11,322},{136,11,249},{7,11,432},{135,11,1649},{135,10,1871},{137,10,252}\r
-,{6,11,155},{140,11,234},{7,0,871},{19,0,27},{147,11,27},{140,0,498},{5,0,986},{\r
-6,0,130},{138,0,823},{6,0,1793},{7,0,1582},{8,0,458},{10,0,101},{10,0,318},{10,0\r
-,945},{12,0,734},{16,0,104},{18,0,177},{6,10,323},{135,10,1564},{5,11,632},{138,\r
-11,526},{10,0,435},{7,10,461},{136,10,775},{6,11,144},{7,11,948},{7,11,1042},{7,\r
-11,1857},{8,11,235},{8,11,461},{9,11,453},{9,11,530},{10,11,354},{17,11,77},{19,\r
-11,99},{148,11,79},{138,0,966},{7,0,1644},{137,0,129},{135,0,997},{136,0,502},{5\r
-,11,196},{6,11,486},{7,11,212},{8,11,309},{136,11,346},{7,10,727},{146,10,73},{\r
-132,0,823},{132,11,686},{135,0,1927},{4,0,762},{7,0,1756},{137,0,98},{136,10,577\r
-},{24,0,8},{4,11,30},{5,11,43},{152,11,8},{7,0,1046},{139,0,160},{7,0,492},{4,10\r
-,413},{5,10,677},{7,11,492},{8,10,432},{140,10,280},{6,0,45},{7,0,433},{8,0,129}\r
-,{9,0,21},{10,0,392},{11,0,79},{12,0,499},{13,0,199},{141,0,451},{7,0,558},{136,\r
-0,353},{4,11,220},{7,11,1535},{9,11,93},{139,11,474},{7,10,646},{7,10,1730},{11,\r
-10,446},{141,10,178},{133,0,785},{134,0,1145},{8,0,81},{9,0,189},{9,0,201},{11,0\r
-,478},{11,0,712},{141,0,338},{5,0,353},{151,0,26},{11,0,762},{132,10,395},{134,0\r
-,2024},{4,0,611},{133,0,606},{9,10,174},{10,10,164},{11,10,440},{11,10,841},{143\r
-,10,98},{134,10,426},{10,10,608},{139,10,1002},{138,10,250},{6,0,25},{7,0,855},{\r
-7,0,1258},{144,0,32},{7,11,1725},{138,11,393},{5,11,263},{134,11,414},{6,0,2011}\r
-,{133,10,476},{4,0,4},{7,0,1118},{7,0,1320},{7,0,1706},{8,0,277},{9,0,622},{10,0\r
-,9},{11,0,724},{12,0,350},{12,0,397},{13,0,28},{13,0,159},{15,0,89},{18,0,5},{19\r
-,0,9},{20,0,34},{22,0,47},{6,11,178},{6,11,1750},{8,11,251},{9,11,690},{10,11,\r
-155},{10,11,196},{10,11,373},{11,11,698},{13,11,155},{148,11,93},{5,11,97},{137,\r
-11,393},{7,0,764},{11,0,461},{12,0,172},{5,10,76},{6,10,458},{6,10,497},{7,10,\r
-868},{9,10,658},{10,10,594},{11,10,566},{12,10,338},{141,10,200},{134,0,1449},{\r
-138,11,40},{134,11,1639},{134,0,1445},{6,0,1168},{4,10,526},{7,10,1029},{135,10,\r
-1054},{4,11,191},{7,11,934},{8,11,647},{145,11,97},{132,10,636},{6,0,233},{7,10,\r
-660},{7,10,1124},{17,10,31},{19,10,22},{151,10,14},{6,10,1699},{136,11,110},{12,\r
-11,246},{15,11,162},{19,11,64},{20,11,8},{20,11,95},{22,11,24},{152,11,17},{5,11\r
-,165},{9,11,346},{138,11,655},{5,11,319},{135,11,534},{134,0,255},{9,0,216},{8,\r
-11,128},{139,11,179},{9,0,183},{139,0,286},{11,0,956},{151,0,3},{4,0,536},{7,0,\r
-1141},{10,0,723},{139,0,371},{4,10,279},{7,10,301},{137,10,362},{7,0,285},{5,11,\r
-57},{6,11,101},{6,11,1663},{7,11,132},{7,11,1048},{7,11,1154},{7,11,1415},{7,11,\r
-1507},{12,11,493},{15,11,105},{151,11,15},{5,11,459},{7,11,1073},{7,10,1743},{8,\r
-11,241},{136,11,334},{4,10,178},{133,10,399},{135,0,560},{132,0,690},{135,0,1246\r
-},{18,0,157},{147,0,63},{10,0,599},{11,0,33},{12,0,571},{149,0,1},{6,11,324},{6,\r
-11,520},{7,11,338},{7,11,1616},{7,11,1729},{8,11,228},{9,11,69},{139,11,750},{7,\r
-0,1862},{12,0,491},{12,0,520},{13,0,383},{142,0,244},{135,11,734},{134,10,1692},\r
-{10,0,448},{11,0,630},{17,0,117},{6,10,202},{7,11,705},{12,10,360},{17,10,118},{\r
-18,10,27},{148,10,67},{4,11,73},{6,11,612},{7,11,927},{7,11,1822},{8,11,217},{9,\r
-11,472},{9,11,765},{9,11,766},{10,11,408},{11,11,51},{11,11,793},{12,11,266},{15\r
-,11,158},{20,11,89},{150,11,32},{4,0,190},{133,0,554},{133,0,1001},{5,11,389},{8\r
-,11,636},{137,11,229},{5,0,446},{7,10,872},{10,10,516},{139,10,167},{137,10,313}\r
-,{132,10,224},{134,0,1313},{5,10,546},{7,10,35},{8,10,11},{8,10,12},{9,10,315},{\r
-9,10,533},{10,10,802},{11,10,166},{12,10,525},{142,10,243},{6,0,636},{137,0,837}\r
-,{5,10,241},{8,10,242},{9,10,451},{10,10,667},{11,10,598},{140,10,429},{22,10,46\r
-},{150,11,46},{136,11,472},{11,0,278},{142,0,73},{141,11,185},{132,0,868},{134,0\r
-,972},{4,10,366},{137,10,516},{138,0,1010},{5,11,189},{6,10,1736},{7,11,442},{7,\r
-11,443},{8,11,281},{12,11,174},{13,11,83},{141,11,261},{139,11,384},{6,11,2},{7,\r
-11,191},{7,11,446},{7,11,758},{7,11,1262},{7,11,1737},{8,11,22},{8,11,270},{8,11\r
-,612},{9,11,4},{9,11,167},{9,11,312},{9,11,436},{10,11,156},{10,11,216},{10,11,\r
-311},{10,11,623},{11,11,72},{11,11,330},{11,11,455},{12,11,101},{12,11,321},{12,\r
-11,504},{12,11,530},{12,11,543},{13,11,17},{13,11,156},{13,11,334},{14,11,48},{\r
-15,11,70},{17,11,60},{148,11,64},{6,10,331},{136,10,623},{135,0,1231},{132,0,304\r
-},{6,11,60},{7,11,670},{7,11,1327},{8,11,411},{8,11,435},{9,11,653},{9,11,740},{\r
-10,11,385},{11,11,222},{11,11,324},{11,11,829},{140,11,611},{7,0,506},{6,11,166}\r
-,{7,11,374},{135,11,1174},{14,11,43},{146,11,21},{135,11,1694},{135,10,1888},{5,\r
-11,206},{134,11,398},{135,11,50},{150,0,26},{6,0,53},{6,0,199},{7,0,1408},{8,0,\r
-32},{8,0,93},{10,0,397},{10,0,629},{11,0,593},{11,0,763},{13,0,326},{145,0,35},{\r
-134,0,105},{132,10,394},{4,0,843},{138,0,794},{11,0,704},{141,0,396},{5,0,114},{\r
-5,0,255},{141,0,285},{6,0,619},{7,0,898},{7,0,1092},{8,0,485},{18,0,28},{19,0,\r
-116},{135,10,1931},{9,0,145},{7,10,574},{135,10,1719},{7,0,2035},{8,0,19},{9,0,\r
-89},{138,0,831},{132,10,658},{6,11,517},{7,11,1159},{10,11,621},{139,11,192},{7,\r
-0,1933},{7,11,1933},{9,10,781},{10,10,144},{11,10,385},{13,10,161},{13,10,228},{\r
-13,10,268},{148,10,107},{136,10,374},{10,11,223},{139,11,645},{135,0,1728},{7,11\r
-,64},{7,11,289},{136,11,245},{4,10,344},{6,10,498},{139,10,323},{136,0,746},{135\r
-,10,1063},{137,10,155},{4,0,987},{6,0,1964},{6,0,1974},{6,0,1990},{136,0,995},{\r
-133,11,609},{133,10,906},{134,0,1550},{134,0,874},{5,11,129},{6,11,61},{135,11,\r
-947},{4,0,1018},{6,0,1938},{6,0,2021},{134,0,2039},{132,0,814},{11,0,126},{139,0\r
-,287},{134,0,1264},{5,0,955},{136,0,814},{141,11,506},{132,11,314},{6,0,981},{\r
-139,11,1000},{5,0,56},{8,0,892},{8,0,915},{140,0,776},{148,0,100},{10,0,4},{10,0\r
-,13},{11,0,638},{148,0,57},{148,11,74},{5,0,738},{132,10,616},{133,11,637},{136,\r
-10,692},{133,0,758},{132,10,305},{137,11,590},{5,11,280},{135,11,1226},{134,11,\r
-494},{135,0,1112},{133,11,281},{13,0,44},{14,0,214},{5,10,214},{7,10,603},{8,10,\r
-611},{9,10,686},{10,10,88},{11,10,459},{11,10,496},{12,10,463},{140,10,590},{139\r
-,0,328},{135,11,1064},{137,0,133},{7,0,168},{13,0,196},{141,0,237},{134,10,1703}\r
-,{134,0,1152},{135,0,1245},{5,0,110},{6,0,169},{6,0,1702},{7,0,400},{8,0,538},{9\r
-,0,184},{9,0,524},{140,0,218},{6,0,1816},{10,0,871},{12,0,769},{140,0,785},{132,\r
-11,630},{7,11,33},{7,11,120},{8,11,489},{9,11,319},{10,11,820},{11,11,1004},{12,\r
-11,379},{13,11,117},{13,11,412},{14,11,25},{15,11,52},{15,11,161},{16,11,47},{\r
-149,11,2},{6,0,133},{8,0,413},{9,0,353},{139,0,993},{145,10,19},{4,11,937},{133,\r
-11,801},{134,0,978},{6,0,93},{6,0,1508},{7,0,1422},{7,0,1851},{8,0,673},{9,0,529\r
-},{140,0,43},{6,0,317},{10,0,512},{4,10,737},{11,10,294},{12,10,60},{12,10,437},\r
-{13,10,64},{13,10,380},{142,10,430},{9,0,371},{7,11,1591},{144,11,43},{6,10,1758\r
-},{8,10,520},{9,10,345},{9,10,403},{142,10,350},{5,0,526},{10,10,242},{138,10,\r
-579},{9,0,25},{10,0,467},{138,0,559},{5,10,139},{7,10,1168},{138,10,539},{4,0,\r
-335},{135,0,942},{140,0,754},{132,11,365},{11,0,182},{142,0,195},{142,11,29},{5,\r
-11,7},{139,11,774},{4,11,746},{135,11,1090},{8,0,39},{10,0,773},{11,0,84},{12,0,\r
-205},{142,0,1},{5,0,601},{5,0,870},{5,11,360},{136,11,237},{132,0,181},{136,0,\r
-370},{134,0,1652},{8,0,358},{4,10,107},{7,10,613},{8,10,439},{8,10,504},{9,10,\r
-501},{10,10,383},{139,10,477},{132,10,229},{137,11,785},{4,0,97},{5,0,147},{6,0,\r
-286},{7,0,1362},{141,0,176},{6,0,537},{7,0,788},{7,0,1816},{132,10,903},{140,10,\r
-71},{6,0,743},{134,0,1223},{6,0,375},{7,0,169},{7,0,254},{8,0,780},{135,11,1493}\r
-,{7,0,1714},{4,10,47},{6,10,373},{7,10,452},{7,10,543},{7,10,1856},{9,10,6},{11,\r
-10,257},{139,10,391},{6,0,896},{136,0,1003},{135,0,1447},{137,11,341},{5,10,980}\r
-,{134,10,1754},{145,11,22},{4,11,277},{5,11,608},{6,11,493},{7,11,457},{140,11,\r
-384},{7,10,536},{7,10,1331},{136,10,143},{140,0,744},{7,11,27},{135,11,316},{18,\r
-0,126},{5,10,19},{134,10,533},{4,0,788},{11,0,41},{5,11,552},{5,11,586},{5,11,\r
-676},{6,11,448},{8,11,244},{11,11,1},{11,11,41},{13,11,3},{16,11,54},{17,11,4},{\r
-146,11,13},{4,0,985},{6,0,1801},{4,11,401},{137,11,264},{5,10,395},{5,10,951},{\r
-134,10,1776},{5,0,629},{135,0,1549},{11,10,663},{12,10,210},{13,10,166},{13,10,\r
-310},{14,10,373},{147,10,43},{9,11,543},{10,11,524},{11,11,30},{12,11,524},{14,\r
-11,315},{16,11,18},{20,11,26},{148,11,65},{4,11,205},{5,11,623},{7,11,104},{136,\r
-11,519},{5,0,293},{134,0,601},{7,11,579},{9,11,41},{9,11,244},{9,11,669},{10,11,\r
-5},{11,11,861},{11,11,951},{139,11,980},{132,11,717},{132,10,695},{7,10,497},{9,\r
-10,387},{147,10,81},{132,0,420},{142,0,37},{6,0,1134},{6,0,1900},{12,0,830},{12,\r
-0,878},{12,0,894},{15,0,221},{143,0,245},{132,11,489},{7,0,1570},{140,0,542},{8,\r
-0,933},{136,0,957},{6,0,1371},{7,0,31},{8,0,373},{5,10,284},{6,10,49},{6,10,350}\r
-,{7,10,377},{7,10,1693},{8,10,678},{9,10,161},{9,10,585},{9,10,671},{9,10,839},{\r
-11,10,912},{141,10,427},{135,11,892},{4,0,325},{138,0,125},{139,11,47},{132,10,\r
-597},{138,0,323},{6,0,1547},{7,11,1605},{9,11,473},{11,11,962},{146,11,139},{139\r
-,10,908},{7,11,819},{9,11,26},{9,11,392},{10,11,152},{10,11,226},{11,11,19},{12,\r
-11,276},{12,11,426},{12,11,589},{13,11,460},{15,11,97},{19,11,48},{148,11,104},{\r
-135,11,51},{4,0,718},{135,0,1216},{6,0,1896},{6,0,1905},{6,0,1912},{9,0,947},{9,\r
-0,974},{12,0,809},{12,0,850},{12,0,858},{12,0,874},{12,0,887},{12,0,904},{12,0,\r
-929},{12,0,948},{12,0,952},{15,0,198},{15,0,206},{15,0,220},{15,0,227},{15,0,247\r
-},{18,0,188},{21,0,48},{21,0,50},{24,0,25},{24,0,29},{7,11,761},{7,11,1051},{137\r
-,11,545},{5,0,124},{5,0,144},{6,0,548},{7,0,15},{7,0,153},{137,0,629},{135,11,\r
-606},{135,10,2014},{7,10,2007},{9,11,46},{9,10,101},{9,10,450},{10,10,66},{10,10\r
-,842},{11,10,536},{140,10,587},{6,0,75},{7,0,1531},{8,0,416},{9,0,240},{9,0,275}\r
-,{10,0,100},{11,0,658},{11,0,979},{12,0,86},{14,0,207},{15,0,20},{143,0,25},{5,0\r
-,141},{5,0,915},{6,0,1783},{7,0,211},{7,0,698},{7,0,1353},{9,0,83},{9,0,281},{10\r
-,0,376},{10,0,431},{11,0,543},{12,0,664},{13,0,280},{13,0,428},{14,0,61},{14,0,\r
-128},{17,0,52},{145,0,81},{132,11,674},{135,0,533},{149,0,6},{132,11,770},{133,0\r
-,538},{5,11,79},{7,11,1027},{7,11,1477},{139,11,52},{139,10,62},{4,0,338},{133,0\r
-,400},{5,11,789},{134,11,195},{4,11,251},{4,11,688},{7,11,513},{7,11,1284},{9,11\r
-,87},{138,11,365},{134,10,1766},{6,0,0},{7,0,84},{11,0,895},{145,0,11},{139,0,\r
-892},{4,0,221},{5,0,659},{7,0,697},{7,0,1211},{138,0,284},{133,0,989},{133,11,\r
-889},{4,11,160},{5,11,330},{7,11,1434},{136,11,174},{6,10,1665},{7,10,256},{7,10\r
-,1388},{10,10,499},{139,10,670},{7,0,848},{4,10,22},{5,10,10},{136,10,97},{138,0\r
-,507},{133,10,481},{4,0,188},{135,0,805},{5,0,884},{6,0,732},{139,0,991},{135,11\r
-,968},{11,11,636},{15,11,145},{17,11,34},{19,11,50},{151,11,20},{7,0,959},{16,0,\r
-60},{6,10,134},{7,10,437},{9,10,37},{14,10,285},{142,10,371},{7,10,486},{8,10,\r
-155},{11,10,93},{140,10,164},{134,0,1653},{7,0,337},{133,10,591},{6,0,1989},{8,0\r
-,922},{8,0,978},{133,11,374},{132,0,638},{138,0,500},{133,11,731},{5,10,380},{5,\r
-10,650},{136,10,310},{138,11,381},{4,10,364},{7,10,1156},{7,10,1187},{137,10,409\r
-},{137,11,224},{140,0,166},{134,10,482},{4,11,626},{5,11,642},{6,11,425},{10,11,\r
-202},{139,11,141},{4,10,781},{6,10,487},{7,10,926},{8,10,263},{139,10,500},{135,\r
-0,418},{4,10,94},{135,10,1265},{136,0,760},{132,10,417},{136,11,835},{5,10,348},\r
-{134,10,522},{6,0,1277},{134,0,1538},{139,11,541},{135,11,1597},{5,11,384},{8,11\r
-,455},{140,11,48},{136,0,770},{5,11,264},{134,11,184},{4,0,89},{5,0,489},{6,0,\r
-315},{7,0,553},{7,0,1745},{138,0,243},{4,10,408},{4,10,741},{135,10,500},{134,0,\r
-1396},{133,0,560},{6,0,1658},{9,0,3},{10,0,154},{11,0,641},{13,0,85},{13,0,201},\r
-{141,0,346},{135,11,1595},{5,11,633},{6,11,28},{7,11,219},{135,11,1323},{9,11,\r
-769},{140,11,185},{135,11,785},{7,11,359},{8,11,243},{140,11,175},{138,0,586},{7\r
-,0,1271},{134,10,73},{132,11,105},{4,0,166},{5,0,505},{134,0,1670},{133,10,576},\r
-{4,11,324},{138,11,104},{142,10,231},{6,0,637},{7,10,1264},{7,10,1678},{11,10,\r
-945},{12,10,341},{12,10,471},{12,10,569},{23,11,21},{151,11,23},{8,11,559},{141,\r
-11,109},{134,0,1947},{7,0,445},{8,0,307},{8,0,704},{10,0,41},{10,0,439},{11,0,\r
-237},{11,0,622},{140,0,201},{135,11,963},{135,0,1977},{4,0,189},{5,0,713},{136,0\r
-,57},{138,0,371},{135,10,538},{132,0,552},{6,0,883},{133,10,413},{6,0,923},{132,\r
-11,758},{138,11,215},{136,10,495},{7,10,54},{8,10,312},{10,10,191},{10,10,614},{\r
-140,10,567},{7,11,351},{139,11,128},{7,0,875},{6,10,468},{7,10,1478},{8,10,530},\r
-{142,10,290},{135,0,1788},{17,0,49},{133,11,918},{12,11,398},{20,11,39},{21,11,\r
-11},{150,11,41},{10,0,661},{6,10,484},{135,10,822},{135,0,1945},{134,0,794},{137\r
-,10,900},{135,10,1335},{6,10,1724},{135,10,2022},{132,11,340},{134,0,1135},{4,0,\r
-784},{133,0,745},{5,0,84},{134,0,163},{133,0,410},{4,0,976},{5,11,985},{7,11,509\r
-},{7,11,529},{145,11,96},{132,10,474},{134,0,703},{135,11,1919},{5,0,322},{8,0,\r
-186},{9,0,262},{10,0,187},{142,0,208},{135,10,1504},{133,0,227},{9,0,560},{13,0,\r
-208},{133,10,305},{132,11,247},{7,0,1395},{8,0,486},{9,0,236},{9,0,878},{10,0,\r
-218},{11,0,95},{19,0,17},{147,0,31},{7,0,2043},{8,0,672},{141,0,448},{4,11,184},\r
-{5,11,390},{6,11,337},{7,11,23},{7,11,494},{7,11,618},{7,11,1456},{8,11,27},{8,\r
-11,599},{10,11,153},{139,11,710},{135,0,466},{135,10,1236},{6,0,167},{7,0,186},{\r
-7,0,656},{10,0,643},{4,10,480},{6,10,302},{6,10,1642},{7,10,837},{7,10,1547},{7,\r
-10,1657},{8,10,429},{9,10,228},{13,10,289},{13,10,343},{147,10,101},{134,0,1428}\r
-,{134,0,1440},{5,0,412},{7,10,278},{10,10,739},{11,10,708},{141,10,348},{134,0,\r
-1118},{136,0,562},{148,11,46},{9,0,316},{139,0,256},{134,0,1771},{135,0,1190},{\r
-137,0,132},{10,11,227},{11,11,497},{11,11,709},{140,11,415},{143,0,66},{6,11,360\r
-},{7,11,1664},{136,11,478},{144,10,28},{4,0,317},{135,0,1279},{5,0,63},{133,0,\r
-509},{136,11,699},{145,10,36},{134,0,1475},{11,11,343},{142,11,127},{132,11,739}\r
-,{132,0,288},{135,11,1757},{8,0,89},{8,0,620},{9,0,608},{11,0,628},{12,0,322},{\r
-143,0,124},{134,0,1225},{7,0,1189},{4,11,67},{5,11,422},{6,10,363},{7,11,1037},{\r
-7,11,1289},{7,11,1555},{7,10,1955},{8,10,725},{9,11,741},{145,11,108},{134,0,\r
-1468},{6,0,689},{134,0,1451},{138,0,120},{151,0,1},{137,10,805},{142,0,329},{5,\r
-10,813},{135,10,2046},{135,0,226},{138,11,96},{7,0,1855},{5,10,712},{11,10,17},{\r
-13,10,321},{144,10,67},{9,0,461},{6,10,320},{7,10,781},{7,10,1921},{9,10,55},{10\r
-,10,186},{10,10,273},{10,10,664},{10,10,801},{11,10,996},{11,10,997},{13,10,157}\r
-,{142,10,170},{8,11,203},{8,10,271},{11,11,823},{11,11,846},{12,11,482},{13,11,\r
-133},{13,11,277},{13,11,302},{13,11,464},{14,11,205},{142,11,221},{135,0,1346},{\r
-4,11,449},{133,11,718},{134,0,85},{14,0,299},{7,10,103},{7,10,863},{11,10,184},{\r
-145,10,62},{4,11,355},{6,11,311},{9,11,256},{138,11,404},{137,10,659},{138,11,\r
-758},{133,11,827},{5,11,64},{140,11,581},{134,0,1171},{4,11,442},{7,11,1047},{7,\r
-11,1352},{135,11,1643},{132,0,980},{5,11,977},{6,11,288},{7,11,528},{135,11,1065\r
-},{5,0,279},{6,0,235},{7,0,468},{8,0,446},{9,0,637},{10,0,717},{11,0,738},{140,0\r
-,514},{132,0,293},{11,10,337},{142,10,303},{136,11,285},{5,0,17},{6,0,371},{9,0,\r
-528},{12,0,364},{132,11,254},{5,10,77},{7,10,1455},{10,10,843},{147,10,73},{150,\r
-0,5},{132,10,458},{6,11,12},{7,11,1219},{145,11,73},{135,10,1420},{6,10,109},{\r
-138,10,382},{135,11,125},{6,10,330},{7,10,1084},{139,10,142},{6,11,369},{6,11,\r
-502},{7,11,1036},{8,11,348},{9,11,452},{10,11,26},{11,11,224},{11,11,387},{11,11\r
-,772},{12,11,95},{12,11,629},{13,11,195},{13,11,207},{13,11,241},{14,11,260},{14\r
-,11,270},{143,11,140},{132,11,269},{5,11,480},{7,11,532},{7,11,1197},{7,11,1358}\r
-,{8,11,291},{11,11,349},{142,11,396},{150,0,48},{10,0,601},{13,0,353},{141,0,376\r
-},{5,0,779},{5,0,807},{6,0,1655},{134,0,1676},{142,11,223},{4,0,196},{5,0,558},{\r
-133,0,949},{148,11,15},{135,11,1764},{134,0,1322},{132,0,752},{139,0,737},{135,\r
-11,657},{136,11,533},{135,0,412},{4,0,227},{5,0,159},{5,0,409},{7,0,80},{8,0,556\r
-},{10,0,479},{12,0,418},{14,0,50},{14,0,123},{14,0,192},{14,0,249},{14,0,295},{\r
-143,0,27},{7,0,1470},{8,0,66},{8,0,137},{8,0,761},{9,0,638},{11,0,80},{11,0,212}\r
-,{11,0,368},{11,0,418},{12,0,8},{13,0,15},{16,0,61},{17,0,59},{19,0,28},{148,0,\r
-84},{135,10,1985},{4,11,211},{4,11,332},{5,11,335},{6,11,238},{7,11,269},{7,11,\r
-811},{7,11,1797},{8,10,122},{8,11,836},{9,11,507},{141,11,242},{6,0,683},{134,0,\r
-1252},{4,0,873},{132,10,234},{134,0,835},{6,0,38},{7,0,1220},{8,0,185},{8,0,256}\r
-,{9,0,22},{9,0,331},{10,0,738},{11,0,205},{11,0,540},{11,0,746},{13,0,465},{14,0\r
-,88},{142,0,194},{138,0,986},{5,11,1009},{12,11,582},{146,11,131},{4,0,159},{6,0\r
-,115},{7,0,252},{7,0,257},{7,0,1928},{8,0,69},{9,0,384},{10,0,91},{10,0,615},{12\r
-,0,375},{14,0,235},{18,0,117},{147,0,123},{133,0,911},{136,0,278},{5,10,430},{5,\r
-10,932},{6,10,131},{7,10,417},{9,10,522},{11,10,314},{141,10,390},{14,10,149},{\r
-14,10,399},{143,10,57},{4,0,151},{7,0,1567},{136,0,749},{5,11,228},{6,11,203},{7\r
-,11,156},{8,11,347},{137,11,265},{132,10,507},{10,0,989},{140,0,956},{133,0,990}\r
-,{5,0,194},{6,0,927},{7,0,1662},{9,0,90},{140,0,564},{4,10,343},{133,10,511},{\r
-133,0,425},{7,10,455},{138,10,591},{4,0,774},{7,11,476},{7,11,1592},{138,11,87},\r
-{5,0,971},{135,10,1381},{5,11,318},{147,11,121},{5,11,291},{7,11,765},{9,11,389}\r
-,{140,11,548},{134,10,575},{4,0,827},{12,0,646},{12,0,705},{12,0,712},{140,0,714\r
-},{139,0,752},{137,0,662},{5,0,72},{6,0,264},{7,0,21},{7,0,46},{7,0,2013},{8,0,\r
-215},{8,0,513},{10,0,266},{139,0,22},{139,11,522},{6,0,239},{7,0,118},{10,0,95},\r
-{11,0,603},{13,0,443},{14,0,160},{143,0,4},{6,0,431},{134,0,669},{7,10,1127},{7,\r
-10,1572},{10,10,297},{10,10,422},{11,10,764},{11,10,810},{12,10,264},{13,10,102}\r
-,{13,10,300},{13,10,484},{14,10,147},{14,10,229},{17,10,71},{18,10,118},{147,10,\r
-120},{5,0,874},{6,0,1677},{15,0,0},{10,11,525},{139,11,82},{6,0,65},{7,0,939},{7\r
-,0,1172},{7,0,1671},{9,0,540},{10,0,696},{11,0,265},{11,0,732},{11,0,928},{11,0,\r
-937},{141,0,438},{134,0,1350},{136,11,547},{132,11,422},{5,11,355},{145,11,0},{\r
-137,11,905},{5,0,682},{135,0,1887},{132,0,809},{4,0,696},{133,11,865},{6,0,1074}\r
-,{6,0,1472},{14,10,35},{142,10,191},{5,11,914},{134,11,1625},{133,11,234},{135,\r
-11,1383},{137,11,780},{132,10,125},{4,0,726},{133,0,630},{8,0,802},{136,0,838},{\r
-132,10,721},{6,0,1337},{7,0,776},{19,0,56},{136,10,145},{132,0,970},{7,10,792},{\r
-8,10,147},{10,10,821},{139,10,1021},{139,10,970},{8,0,940},{137,0,797},{135,11,\r
-1312},{9,0,248},{10,0,400},{7,11,816},{7,11,1241},{7,10,1999},{9,11,283},{9,11,\r
-520},{10,11,213},{10,11,307},{10,11,463},{10,11,671},{10,11,746},{11,11,401},{11\r
-,11,794},{12,11,517},{18,11,107},{147,11,115},{6,0,1951},{134,0,2040},{135,11,\r
-339},{13,0,41},{15,0,93},{5,10,168},{5,10,930},{8,10,74},{9,10,623},{12,10,500},\r
-{140,10,579},{6,0,118},{7,0,215},{7,0,1521},{140,0,11},{6,10,220},{7,10,1101},{\r
-141,10,105},{6,11,421},{7,11,61},{7,11,1540},{10,11,11},{138,11,501},{7,0,615},{\r
-138,0,251},{140,11,631},{135,0,1044},{6,10,19},{7,10,1413},{139,10,428},{133,0,\r
-225},{7,10,96},{8,10,401},{8,10,703},{137,10,896},{145,10,116},{6,11,102},{7,11,\r
-72},{15,11,142},{147,11,67},{7,10,1961},{7,10,1965},{8,10,702},{136,10,750},{7,\r
-10,2030},{8,10,150},{8,10,737},{12,10,366},{151,11,30},{4,0,370},{5,0,756},{7,0,\r
-1326},{135,11,823},{8,10,800},{9,10,148},{9,10,872},{9,10,890},{11,10,309},{11,\r
-10,1001},{13,10,267},{141,10,323},{6,0,1662},{7,0,48},{8,0,771},{10,0,116},{13,0\r
-,104},{14,0,105},{14,0,184},{15,0,168},{19,0,92},{148,0,68},{10,0,209},{135,11,\r
-1870},{7,11,68},{8,11,48},{8,11,88},{8,11,582},{8,11,681},{9,11,373},{9,11,864},\r
-{11,11,157},{11,11,336},{11,11,843},{148,11,27},{134,0,930},{4,11,88},{5,11,137}\r
-,{5,11,174},{5,11,777},{6,11,1664},{6,11,1725},{7,11,77},{7,11,426},{7,11,1317},\r
-{7,11,1355},{8,11,126},{8,11,563},{9,11,523},{9,11,750},{10,11,310},{10,11,836},\r
-{11,11,42},{11,11,318},{11,11,731},{12,11,68},{12,11,92},{12,11,507},{12,11,692}\r
-,{13,11,81},{13,11,238},{13,11,374},{18,11,138},{19,11,78},{19,11,111},{20,11,55\r
-},{20,11,77},{148,11,92},{4,11,938},{135,11,1831},{5,10,547},{7,10,424},{8,11,\r
-617},{138,11,351},{6,0,1286},{6,11,1668},{7,11,1499},{8,11,117},{9,11,314},{138,\r
-11,174},{6,0,759},{6,0,894},{7,11,707},{139,11,563},{4,0,120},{135,0,1894},{9,0,\r
-385},{149,0,17},{138,0,429},{133,11,403},{5,0,820},{135,0,931},{10,0,199},{133,\r
-10,133},{6,0,151},{6,0,1675},{7,0,383},{151,0,10},{6,0,761},{136,10,187},{8,0,\r
-365},{10,10,0},{10,10,818},{139,10,988},{4,11,44},{5,11,311},{6,11,156},{7,11,\r
-639},{7,11,762},{7,11,1827},{9,11,8},{9,11,462},{148,11,83},{4,11,346},{7,11,115\r
-},{9,11,180},{9,11,456},{138,11,363},{136,10,685},{7,0,1086},{145,0,46},{6,0,\r
-1624},{11,0,11},{12,0,422},{13,0,444},{142,0,360},{6,0,1020},{6,0,1260},{134,0,\r
-1589},{4,0,43},{5,0,344},{5,0,357},{14,0,472},{150,0,58},{6,0,1864},{6,0,1866},{\r
-6,0,1868},{6,0,1869},{6,0,1874},{6,0,1877},{6,0,1903},{6,0,1911},{9,0,920},{9,0,\r
-921},{9,0,924},{9,0,946},{9,0,959},{9,0,963},{9,0,970},{9,0,997},{9,0,1008},{9,0\r
-,1017},{12,0,795},{12,0,797},{12,0,798},{12,0,800},{12,0,803},{12,0,811},{12,0,\r
-820},{12,0,821},{12,0,839},{12,0,841},{12,0,848},{12,0,911},{12,0,921},{12,0,922\r
-},{12,0,925},{12,0,937},{12,0,944},{12,0,945},{12,0,953},{15,0,184},{15,0,191},{\r
-15,0,199},{15,0,237},{15,0,240},{15,0,243},{15,0,246},{18,0,203},{21,0,40},{21,0\r
-,52},{21,0,57},{24,0,23},{24,0,28},{152,0,30},{134,0,725},{145,11,58},{133,0,888\r
-},{137,10,874},{4,0,711},{8,10,774},{10,10,670},{140,10,51},{144,11,40},{6,11,\r
-185},{7,11,1899},{139,11,673},{137,10,701},{137,0,440},{4,11,327},{5,11,478},{7,\r
-11,1332},{8,11,753},{140,11,227},{4,10,127},{5,10,350},{6,10,356},{8,10,426},{9,\r
-10,572},{10,10,247},{139,10,312},{5,11,1020},{133,11,1022},{4,11,103},{133,11,\r
-401},{6,0,1913},{6,0,1926},{6,0,1959},{9,0,914},{9,0,939},{9,0,952},{9,0,979},{9\r
-,0,990},{9,0,998},{9,0,1003},{9,0,1023},{12,0,827},{12,0,834},{12,0,845},{12,0,\r
-912},{12,0,935},{12,0,951},{15,0,172},{15,0,174},{18,0,198},{149,0,63},{5,0,958}\r
-,{5,0,987},{4,11,499},{135,11,1421},{7,0,885},{6,10,59},{6,10,1762},{9,10,603},{\r
-141,10,397},{10,11,62},{141,11,164},{4,0,847},{135,0,326},{11,0,276},{142,0,293}\r
-,{4,0,65},{5,0,479},{5,0,1004},{7,0,1913},{8,0,317},{9,0,302},{10,0,612},{13,0,\r
-22},{132,11,96},{4,0,261},{135,0,510},{135,0,1514},{6,10,111},{7,10,4},{8,10,163\r
-},{8,10,776},{138,10,566},{4,0,291},{9,0,515},{12,0,152},{12,0,443},{13,0,392},{\r
-142,0,357},{7,11,399},{135,11,1492},{4,0,589},{139,0,282},{6,11,563},{135,10,\r
-1994},{5,10,297},{135,10,1038},{4,0,130},{7,0,843},{135,0,1562},{5,0,42},{5,0,\r
-879},{7,0,245},{7,0,324},{7,0,1532},{11,0,463},{11,0,472},{13,0,363},{144,0,52},\r
-{4,0,134},{133,0,372},{133,0,680},{136,10,363},{6,0,1997},{8,0,935},{136,0,977},\r
-{4,0,810},{135,0,1634},{135,10,1675},{7,0,1390},{4,11,910},{133,11,832},{7,10,\r
-808},{8,11,266},{139,11,578},{132,0,644},{4,0,982},{138,0,867},{132,10,280},{135\r
-,0,540},{140,10,54},{135,0,123},{134,0,1978},{4,10,421},{133,10,548},{6,0,623},{\r
-136,0,789},{4,0,908},{5,0,359},{5,0,508},{6,0,1723},{7,0,343},{7,0,1996},{135,0,\r
-2026},{134,0,1220},{4,0,341},{135,0,480},{6,10,254},{9,10,109},{138,10,103},{134\r
-,0,888},{8,11,528},{137,11,348},{7,0,1995},{8,0,299},{11,0,890},{12,0,674},{4,11\r
-,20},{133,11,616},{135,11,1094},{134,10,1630},{4,0,238},{5,0,503},{6,0,179},{7,0\r
-,2003},{8,0,381},{8,0,473},{9,0,149},{10,0,788},{15,0,45},{15,0,86},{20,0,110},{\r
-150,0,57},{133,10,671},{4,11,26},{5,11,429},{6,11,245},{7,11,704},{7,11,1379},{\r
-135,11,1474},{4,0,121},{5,0,156},{5,0,349},{9,0,431},{10,0,605},{142,0,342},{7,\r
-11,943},{139,11,614},{132,10,889},{132,11,621},{7,10,1382},{7,11,1382},{135,10,\r
-1910},{132,10,627},{133,10,775},{133,11,542},{133,11,868},{136,11,433},{6,0,1373\r
-},{7,0,1011},{11,10,362},{11,10,948},{140,10,388},{6,0,80},{7,0,173},{9,0,547},{\r
-10,0,730},{14,0,18},{22,0,39},{135,11,1495},{6,0,1694},{135,0,1974},{140,0,196},\r
-{4,0,923},{6,0,507},{6,0,1711},{7,10,451},{8,10,389},{12,10,490},{13,10,16},{13,\r
-10,215},{13,10,351},{18,10,132},{147,10,125},{6,0,646},{134,0,1047},{135,10,841}\r
-,{136,10,566},{6,0,1611},{135,0,1214},{139,0,926},{132,11,525},{132,0,595},{5,0,\r
-240},{6,0,459},{7,0,12},{7,0,114},{7,0,949},{7,0,1753},{7,0,1805},{8,0,658},{9,0\r
-,1},{11,0,959},{141,0,446},{5,10,912},{134,10,1695},{132,0,446},{7,11,62},{12,11\r
-,45},{147,11,112},{5,10,236},{6,10,572},{8,10,492},{11,10,618},{144,10,56},{5,10\r
-,190},{136,10,318},{135,10,1376},{4,11,223},{6,11,359},{11,11,3},{13,11,108},{14\r
-,11,89},{144,11,22},{132,11,647},{134,0,490},{134,0,491},{134,0,1584},{135,11,\r
-685},{138,11,220},{7,0,250},{136,0,507},{132,0,158},{4,0,140},{7,0,362},{8,0,209\r
-},{9,0,10},{9,0,160},{9,0,503},{9,0,614},{10,0,689},{11,0,327},{11,0,553},{11,0,\r
-725},{11,0,767},{12,0,252},{12,0,583},{13,0,192},{14,0,269},{14,0,356},{148,0,50\r
-},{19,0,1},{19,0,26},{150,0,9},{132,11,109},{6,0,228},{7,0,1341},{9,0,408},{138,\r
-0,343},{4,0,373},{5,0,283},{6,0,480},{7,0,609},{10,0,860},{138,0,878},{6,0,779},\r
-{134,0,1209},{4,0,557},{7,11,263},{7,11,628},{136,11,349},{132,0,548},{7,0,197},\r
-{8,0,142},{8,0,325},{9,0,150},{9,0,596},{10,0,350},{10,0,353},{11,0,74},{11,0,\r
-315},{12,0,662},{12,0,681},{14,0,423},{143,0,141},{4,11,40},{10,11,67},{11,11,\r
-117},{11,11,768},{139,11,935},{7,11,992},{8,11,301},{9,11,722},{12,11,63},{13,11\r
-,29},{14,11,161},{143,11,18},{6,0,1490},{138,11,532},{5,0,580},{7,0,378},{7,0,\r
-674},{7,0,1424},{15,0,83},{16,0,11},{15,11,83},{144,11,11},{6,0,1057},{6,0,1335}\r
-,{10,0,316},{7,10,85},{7,10,247},{8,10,585},{138,10,163},{4,0,169},{5,0,83},{6,0\r
-,399},{6,0,579},{6,0,1513},{7,0,692},{7,0,846},{7,0,1015},{7,0,1799},{8,0,403},{\r
-9,0,394},{10,0,133},{12,0,4},{12,0,297},{12,0,452},{16,0,81},{18,0,25},{21,0,14}\r
-,{22,0,12},{151,0,18},{134,0,1106},{7,0,1546},{11,0,299},{142,0,407},{134,0,1192\r
-},{132,0,177},{5,0,411},{135,0,653},{7,0,439},{10,0,727},{11,0,260},{139,0,684},\r
-{138,10,145},{147,10,83},{5,0,208},{7,0,753},{135,0,1528},{137,11,617},{135,10,\r
-1922},{135,11,825},{11,0,422},{13,0,389},{4,10,124},{10,10,457},{11,10,121},{11,\r
-10,169},{11,10,870},{12,10,214},{14,10,187},{143,10,77},{11,0,615},{15,0,58},{11\r
-,11,615},{143,11,58},{9,0,618},{138,0,482},{6,0,1952},{6,0,1970},{142,0,505},{7,\r
-10,1193},{135,11,1838},{133,0,242},{135,10,1333},{6,10,107},{7,10,638},{7,10,\r
-1632},{137,10,396},{133,0,953},{5,10,370},{134,10,1756},{5,11,28},{6,11,204},{10\r
-,11,320},{10,11,583},{13,11,502},{14,11,72},{14,11,274},{14,11,312},{14,11,344},\r
-{15,11,159},{16,11,62},{16,11,69},{17,11,30},{18,11,42},{18,11,53},{18,11,84},{\r
-18,11,140},{19,11,68},{19,11,85},{20,11,5},{20,11,45},{20,11,101},{22,11,7},{150\r
-,11,20},{4,11,558},{6,11,390},{7,11,162},{7,11,689},{9,11,360},{138,11,653},{11,\r
-0,802},{141,0,67},{133,10,204},{133,0,290},{5,10,970},{134,10,1706},{132,0,380},\r
-{5,0,52},{7,0,277},{9,0,368},{139,0,791},{5,11,856},{6,11,1672},{6,11,1757},{6,\r
-11,1781},{7,11,1150},{7,11,1425},{7,11,1453},{140,11,513},{5,11,92},{7,10,3},{10\r
-,11,736},{140,11,102},{4,0,112},{5,0,653},{5,10,483},{5,10,685},{6,10,489},{7,10\r
-,1204},{136,10,394},{132,10,921},{6,0,1028},{133,10,1007},{5,11,590},{9,11,213},\r
-{145,11,91},{135,10,1696},{10,0,138},{139,0,476},{5,0,725},{5,0,727},{135,0,1811\r
-},{4,0,979},{6,0,1821},{6,0,1838},{8,0,876},{8,0,883},{8,0,889},{8,0,893},{8,0,\r
-895},{10,0,934},{12,0,720},{14,0,459},{148,0,123},{135,11,551},{4,0,38},{6,0,435\r
-},{7,0,307},{7,0,999},{7,0,1481},{7,0,1732},{7,0,1738},{8,0,371},{9,0,414},{11,0\r
-,316},{12,0,52},{13,0,420},{147,0,100},{135,0,1296},{132,10,712},{134,10,1629},{\r
-133,0,723},{134,0,651},{136,11,191},{9,11,791},{10,11,93},{11,11,301},{16,11,13}\r
-,{17,11,23},{18,11,135},{19,11,12},{20,11,1},{20,11,12},{148,11,14},{136,11,503}\r
-,{6,11,466},{135,11,671},{6,0,1200},{134,0,1330},{135,0,1255},{134,0,986},{5,0,\r
-109},{6,0,1784},{7,0,1895},{12,0,296},{140,0,302},{135,11,983},{133,10,485},{134\r
-,0,660},{134,0,800},{5,0,216},{5,0,294},{6,0,591},{7,0,1879},{9,0,141},{9,0,270}\r
-,{9,0,679},{10,0,159},{11,0,197},{11,0,438},{12,0,538},{12,0,559},{14,0,144},{14\r
-,0,167},{15,0,67},{4,10,285},{5,10,317},{6,10,301},{7,10,7},{8,10,153},{10,10,\r
-766},{11,10,468},{12,10,467},{141,10,143},{136,0,945},{134,0,1090},{137,0,81},{\r
-12,11,468},{19,11,96},{148,11,24},{134,0,391},{138,11,241},{7,0,322},{136,0,249}\r
-,{134,0,1412},{135,11,795},{5,0,632},{138,0,526},{136,10,819},{6,0,144},{7,0,948\r
-},{7,0,1042},{8,0,235},{8,0,461},{9,0,453},{9,0,796},{10,0,354},{17,0,77},{135,\r
-11,954},{139,10,917},{6,0,940},{134,0,1228},{4,0,362},{7,0,52},{135,0,303},{6,11\r
-,549},{8,11,34},{8,11,283},{9,11,165},{138,11,475},{7,11,370},{7,11,1007},{7,11,\r
-1177},{135,11,1565},{5,11,652},{5,11,701},{135,11,449},{5,0,196},{6,0,486},{7,0,\r
-212},{8,0,309},{136,0,346},{6,10,1719},{6,10,1735},{7,10,2016},{7,10,2020},{8,10\r
-,837},{137,10,852},{6,11,159},{6,11,364},{7,11,516},{7,11,1439},{137,11,518},{\r
-135,0,1912},{135,0,1290},{132,0,686},{141,11,151},{138,0,625},{136,0,706},{138,\r
-10,568},{139,0,412},{4,0,30},{133,0,43},{8,10,67},{138,10,419},{7,0,967},{141,0,\r
-11},{12,0,758},{14,0,441},{142,0,462},{10,10,657},{14,10,297},{142,10,361},{139,\r
-10,729},{4,0,220},{135,0,1535},{7,11,501},{9,11,111},{10,11,141},{11,11,332},{13\r
-,11,43},{13,11,429},{14,11,130},{14,11,415},{145,11,102},{4,0,950},{6,0,1859},{7\r
-,0,11},{8,0,873},{12,0,710},{12,0,718},{12,0,748},{12,0,765},{148,0,124},{5,11,\r
-149},{5,11,935},{136,11,233},{142,11,291},{134,0,1579},{7,0,890},{8,10,51},{9,10\r
-,868},{10,10,833},{12,10,481},{12,10,570},{148,10,106},{141,0,2},{132,10,445},{\r
-136,11,801},{135,0,1774},{7,0,1725},{138,0,393},{5,0,263},{134,0,414},{132,11,\r
-322},{133,10,239},{7,0,456},{7,10,1990},{8,10,130},{139,10,720},{137,0,818},{5,\r
-10,123},{6,10,530},{7,10,348},{135,10,1419},{135,10,2024},{6,0,178},{6,0,1750},{\r
-8,0,251},{9,0,690},{10,0,155},{10,0,196},{10,0,373},{11,0,698},{13,0,155},{148,0\r
-,93},{5,0,97},{137,0,393},{134,0,674},{11,0,223},{140,0,168},{132,10,210},{139,\r
-11,464},{6,0,1639},{146,0,159},{139,11,2},{7,0,934},{8,0,647},{17,0,97},{19,0,59\r
-},{150,0,2},{132,0,191},{5,0,165},{9,0,346},{10,0,655},{11,0,885},{4,10,430},{\r
-135,11,357},{133,0,877},{5,10,213},{133,11,406},{8,0,128},{139,0,179},{6,11,69},\r
-{135,11,117},{135,0,1297},{11,11,43},{13,11,72},{141,11,142},{135,11,1830},{142,\r
-0,164},{5,0,57},{6,0,101},{6,0,586},{6,0,1663},{7,0,132},{7,0,1154},{7,0,1415},{\r
-7,0,1507},{12,0,493},{15,0,105},{151,0,15},{5,0,459},{7,0,1073},{8,0,241},{136,0\r
-,334},{133,11,826},{133,10,108},{5,10,219},{10,11,132},{11,11,191},{11,11,358},{\r
-139,11,460},{6,0,324},{6,0,520},{7,0,338},{7,0,1729},{8,0,228},{139,0,750},{21,0\r
-,30},{22,0,53},{4,10,193},{5,10,916},{7,10,364},{10,10,398},{10,10,726},{11,10,\r
-317},{11,10,626},{12,10,142},{12,10,288},{12,10,678},{13,10,313},{15,10,113},{\r
-146,10,114},{6,11,110},{135,11,1681},{135,0,910},{6,10,241},{7,10,907},{8,10,832\r
-},{9,10,342},{10,10,729},{11,10,284},{11,10,445},{11,10,651},{11,10,863},{13,10,\r
-398},{146,10,99},{7,0,705},{9,0,734},{5,11,1000},{7,11,733},{137,11,583},{4,0,73\r
-},{6,0,612},{7,0,927},{7,0,1822},{8,0,217},{9,0,765},{9,0,766},{10,0,408},{11,0,\r
-51},{11,0,793},{12,0,266},{15,0,158},{20,0,89},{150,0,32},{7,0,1330},{4,11,297},\r
-{6,11,529},{7,11,152},{7,11,713},{7,11,1845},{8,11,710},{8,11,717},{140,11,639},\r
-{5,0,389},{136,0,636},{134,0,1409},{4,10,562},{9,10,254},{139,10,879},{134,0,893\r
-},{132,10,786},{4,11,520},{135,11,575},{136,0,21},{140,0,721},{136,0,959},{7,11,\r
-1428},{7,11,1640},{9,11,169},{9,11,182},{9,11,367},{9,11,478},{9,11,506},{9,11,\r
-551},{9,11,648},{9,11,651},{9,11,697},{9,11,705},{9,11,725},{9,11,787},{9,11,794\r
-},{10,11,198},{10,11,214},{10,11,267},{10,11,275},{10,11,456},{10,11,551},{10,11\r
-,561},{10,11,613},{10,11,627},{10,11,668},{10,11,675},{10,11,691},{10,11,695},{\r
-10,11,707},{10,11,715},{11,11,183},{11,11,201},{11,11,244},{11,11,262},{11,11,\r
-352},{11,11,439},{11,11,493},{11,11,572},{11,11,591},{11,11,608},{11,11,611},{11\r
-,11,646},{11,11,674},{11,11,711},{11,11,751},{11,11,761},{11,11,776},{11,11,785}\r
-,{11,11,850},{11,11,853},{11,11,862},{11,11,865},{11,11,868},{11,11,898},{11,11,\r
-902},{11,11,903},{11,11,910},{11,11,932},{11,11,942},{11,11,957},{11,11,967},{11\r
-,11,972},{12,11,148},{12,11,195},{12,11,220},{12,11,237},{12,11,318},{12,11,339}\r
-,{12,11,393},{12,11,445},{12,11,450},{12,11,474},{12,11,509},{12,11,533},{12,11,\r
-591},{12,11,594},{12,11,597},{12,11,621},{12,11,633},{12,11,642},{13,11,59},{13,\r
-11,60},{13,11,145},{13,11,239},{13,11,250},{13,11,273},{13,11,329},{13,11,344},{\r
-13,11,365},{13,11,372},{13,11,387},{13,11,403},{13,11,414},{13,11,456},{13,11,\r
-478},{13,11,483},{13,11,489},{14,11,55},{14,11,57},{14,11,81},{14,11,90},{14,11,\r
-148},{14,11,239},{14,11,266},{14,11,321},{14,11,326},{14,11,327},{14,11,330},{14\r
-,11,347},{14,11,355},{14,11,401},{14,11,411},{14,11,414},{14,11,416},{14,11,420}\r
-,{15,11,61},{15,11,74},{15,11,87},{15,11,88},{15,11,94},{15,11,96},{15,11,116},{\r
-15,11,149},{15,11,154},{16,11,50},{16,11,63},{16,11,73},{17,11,2},{17,11,66},{17\r
-,11,92},{17,11,103},{17,11,112},{18,11,50},{18,11,54},{18,11,82},{18,11,86},{18,\r
-11,90},{18,11,111},{18,11,115},{18,11,156},{19,11,40},{19,11,79},{20,11,78},{149\r
-,11,22},{137,11,170},{134,0,1433},{135,11,1307},{139,11,411},{5,0,189},{7,0,442}\r
-,{7,0,443},{8,0,281},{12,0,174},{141,0,261},{6,10,216},{7,10,901},{7,10,1343},{\r
-136,10,493},{5,11,397},{6,11,154},{7,10,341},{7,11,676},{8,11,443},{8,11,609},{9\r
-,11,24},{9,11,325},{10,11,35},{11,10,219},{11,11,535},{11,11,672},{11,11,1018},{\r
-12,11,637},{144,11,30},{6,0,2},{7,0,191},{7,0,446},{7,0,1262},{7,0,1737},{8,0,22\r
-},{8,0,270},{8,0,612},{9,0,4},{9,0,312},{9,0,436},{9,0,626},{10,0,216},{10,0,311\r
-},{10,0,521},{10,0,623},{11,0,72},{11,0,330},{11,0,455},{12,0,321},{12,0,504},{\r
-12,0,530},{12,0,543},{13,0,17},{13,0,156},{13,0,334},{14,0,131},{17,0,60},{148,0\r
-,64},{7,0,354},{10,0,410},{139,0,815},{139,10,130},{7,10,1734},{137,11,631},{12,\r
-0,425},{15,0,112},{10,10,115},{11,10,420},{13,10,404},{14,10,346},{143,10,54},{6\r
-,0,60},{6,0,166},{7,0,374},{7,0,670},{7,0,1327},{8,0,411},{8,0,435},{9,0,653},{9\r
-,0,740},{10,0,385},{11,0,222},{11,0,324},{11,0,829},{140,0,611},{7,0,1611},{13,0\r
-,14},{15,0,44},{19,0,13},{148,0,76},{133,11,981},{4,11,56},{7,11,1791},{8,11,607\r
-},{8,11,651},{11,11,465},{11,11,835},{12,11,337},{141,11,480},{6,0,1478},{5,10,\r
-1011},{136,10,701},{139,0,596},{5,0,206},{134,0,398},{4,10,54},{5,10,666},{7,10,\r
-1039},{7,10,1130},{9,10,195},{138,10,302},{7,0,50},{9,11,158},{138,11,411},{135,\r
-11,1120},{6,0,517},{7,0,1159},{10,0,621},{11,0,192},{134,10,1669},{4,0,592},{6,0\r
-,600},{135,0,1653},{10,0,223},{139,0,645},{136,11,139},{7,0,64},{136,0,245},{142\r
-,0,278},{6,11,622},{135,11,1030},{136,0,604},{134,0,1502},{138,0,265},{141,11,\r
-168},{7,0,1763},{140,0,310},{7,10,798},{139,11,719},{7,11,160},{10,11,624},{142,\r
-11,279},{132,11,363},{7,10,122},{9,10,259},{10,10,84},{11,10,470},{12,10,541},{\r
-141,10,379},{5,0,129},{6,0,61},{135,0,947},{134,0,1356},{135,11,1191},{13,0,505}\r
-,{141,0,506},{11,0,1000},{5,10,82},{5,10,131},{7,10,1755},{8,10,31},{9,10,168},{\r
-9,10,764},{139,10,869},{134,0,966},{134,10,605},{134,11,292},{5,11,177},{6,11,\r
-616},{7,11,827},{9,11,525},{138,11,656},{135,11,1486},{138,11,31},{5,10,278},{\r
-137,10,68},{4,10,163},{5,10,201},{5,10,307},{5,10,310},{6,10,335},{7,10,284},{\r
-136,10,165},{6,0,839},{135,10,1660},{136,10,781},{6,10,33},{135,10,1244},{133,0,\r
-637},{4,11,161},{133,11,631},{137,0,590},{7,10,1953},{136,10,720},{5,0,280},{7,0\r
-,1226},{138,10,203},{134,0,1386},{5,0,281},{6,0,1026},{6,10,326},{7,10,677},{137\r
-,10,425},{7,11,1557},{135,11,1684},{135,0,1064},{9,11,469},{9,11,709},{12,11,512\r
-},{14,11,65},{145,11,12},{134,0,917},{10,11,229},{11,11,73},{11,11,376},{139,11,\r
-433},{7,0,555},{9,0,192},{13,0,30},{13,0,49},{15,0,150},{16,0,76},{20,0,52},{7,\r
-10,1316},{7,10,1412},{7,10,1839},{9,10,589},{11,10,241},{11,10,676},{11,10,811},\r
-{11,10,891},{12,10,140},{12,10,346},{12,10,479},{13,10,381},{14,10,188},{146,10,\r
-30},{149,0,15},{6,0,1882},{6,0,1883},{6,0,1897},{9,0,945},{9,0,1014},{9,0,1020},\r
-{12,0,823},{12,0,842},{12,0,866},{12,0,934},{15,0,242},{146,0,208},{6,0,965},{\r
-134,0,1499},{7,0,33},{7,0,120},{8,0,489},{9,0,319},{10,0,820},{11,0,1004},{12,0,\r
-379},{12,0,679},{13,0,117},{13,0,412},{14,0,25},{15,0,52},{15,0,161},{16,0,47},{\r
-149,0,2},{6,11,558},{7,11,651},{8,11,421},{9,11,0},{138,11,34},{4,0,937},{5,0,\r
-801},{7,0,473},{5,10,358},{7,10,1184},{10,10,662},{13,10,212},{13,10,304},{13,10\r
-,333},{145,10,98},{132,0,877},{6,0,693},{134,0,824},{132,0,365},{7,11,1832},{138\r
-,11,374},{5,0,7},{139,0,774},{4,0,734},{5,0,662},{134,0,430},{4,0,746},{135,0,\r
-1090},{5,0,360},{8,0,237},{10,0,231},{147,0,124},{138,11,348},{6,11,6},{7,11,81}\r
-,{7,11,771},{7,11,1731},{9,11,405},{138,11,421},{6,0,740},{137,0,822},{133,10,\r
-946},{7,0,1485},{136,0,929},{7,10,411},{8,10,631},{9,10,323},{10,10,355},{11,10,\r
-491},{12,10,143},{12,10,402},{13,10,73},{14,10,408},{15,10,107},{146,10,71},{135\r
-,10,590},{5,11,881},{133,11,885},{150,11,25},{4,0,852},{5,11,142},{134,11,546},{\r
-7,10,1467},{8,10,328},{10,10,544},{11,10,955},{13,10,320},{145,10,83},{9,0,17},{\r
-10,0,291},{11,10,511},{13,10,394},{14,10,298},{14,10,318},{146,10,103},{5,11,466\r
-},{11,11,571},{12,11,198},{13,11,283},{14,11,186},{15,11,21},{143,11,103},{134,0\r
-,1001},{4,11,185},{5,11,257},{5,11,839},{5,11,936},{7,11,171},{9,11,399},{10,11,\r
-258},{10,11,395},{10,11,734},{11,11,1014},{12,11,23},{13,11,350},{14,11,150},{\r
-147,11,6},{143,0,35},{132,0,831},{5,10,835},{134,10,483},{4,0,277},{5,0,608},{6,\r
-0,493},{7,0,457},{12,0,384},{7,11,404},{7,11,1377},{7,11,1430},{7,11,2017},{8,11\r
-,149},{8,11,239},{8,11,512},{8,11,793},{8,11,818},{9,11,474},{9,11,595},{10,11,\r
-122},{10,11,565},{10,11,649},{10,11,783},{11,11,239},{11,11,295},{11,11,447},{11\r
-,11,528},{11,11,639},{11,11,800},{11,11,936},{12,11,25},{12,11,73},{12,11,77},{\r
-12,11,157},{12,11,316},{12,11,390},{12,11,391},{12,11,394},{12,11,395},{12,11,\r
-478},{12,11,503},{12,11,592},{12,11,680},{13,11,50},{13,11,53},{13,11,132},{13,\r
-11,198},{13,11,275},{13,11,322},{13,11,415},{14,11,71},{14,11,257},{14,11,395},{\r
-15,11,71},{15,11,136},{17,11,123},{18,11,93},{147,11,58},{134,0,1351},{7,0,27},{\r
-135,0,316},{136,11,712},{136,0,984},{133,0,552},{137,0,264},{132,0,401},{6,0,710\r
-},{6,0,1111},{134,0,1343},{134,0,1211},{9,0,543},{10,0,524},{11,0,108},{11,0,653\r
-},{12,0,524},{13,0,123},{14,0,252},{16,0,18},{19,0,38},{20,0,26},{20,0,65},{21,0\r
-,3},{151,0,11},{4,0,205},{5,0,623},{7,0,104},{8,0,519},{137,0,716},{132,10,677},\r
-{4,11,377},{152,11,13},{135,11,1673},{7,0,579},{9,0,41},{9,0,244},{9,0,669},{10,\r
-0,5},{11,0,861},{11,0,951},{139,0,980},{132,0,717},{136,0,1011},{132,0,805},{4,\r
-11,180},{135,11,1906},{132,10,777},{132,10,331},{132,0,489},{6,0,1024},{4,11,491\r
-},{133,10,747},{135,11,1182},{4,11,171},{138,11,234},{4,11,586},{7,11,1186},{138\r
-,11,631},{135,0,892},{135,11,336},{9,11,931},{10,11,334},{148,11,71},{137,0,473}\r
-,{6,0,864},{12,0,659},{139,11,926},{7,0,819},{9,0,26},{9,0,392},{10,0,152},{10,0\r
-,226},{11,0,19},{12,0,276},{12,0,426},{12,0,589},{13,0,460},{15,0,97},{19,0,48},\r
-{148,0,104},{135,0,51},{133,10,326},{4,10,691},{146,10,16},{9,0,130},{11,0,765},\r
-{10,10,680},{10,10,793},{141,10,357},{133,11,765},{8,0,229},{6,10,32},{7,10,385}\r
-,{7,10,757},{7,10,1916},{8,10,94},{8,10,711},{9,10,541},{10,10,162},{10,10,795},\r
-{11,10,989},{11,10,1010},{12,10,14},{142,10,308},{7,11,474},{137,11,578},{132,0,\r
-674},{132,0,770},{5,0,79},{7,0,1027},{7,0,1477},{139,0,52},{133,11,424},{134,0,\r
-1666},{6,0,409},{6,10,349},{6,10,1682},{7,10,1252},{8,10,112},{8,11,714},{9,10,\r
-435},{9,10,668},{10,10,290},{10,10,319},{10,10,815},{11,10,180},{11,10,837},{12,\r
-10,240},{13,10,152},{13,10,219},{142,10,158},{5,0,789},{134,0,195},{4,0,251},{4,\r
-0,688},{7,0,513},{135,0,1284},{132,10,581},{9,11,420},{10,11,269},{10,11,285},{\r
-10,11,576},{11,11,397},{13,11,175},{145,11,90},{6,10,126},{7,10,573},{8,10,397},\r
-{142,10,44},{132,11,429},{133,0,889},{4,0,160},{5,0,330},{7,0,1434},{136,0,174},\r
-{7,11,18},{7,11,699},{7,11,1966},{8,11,752},{9,11,273},{9,11,412},{9,11,703},{10\r
-,11,71},{10,11,427},{10,11,508},{146,11,97},{6,0,872},{134,0,899},{133,10,926},{\r
-134,0,1126},{134,0,918},{4,11,53},{5,11,186},{135,11,752},{7,0,268},{136,0,569},\r
-{134,0,1224},{6,0,1361},{7,10,1232},{137,10,531},{8,11,575},{10,11,289},{139,11,\r
-319},{133,10,670},{132,11,675},{133,0,374},{135,10,1957},{133,0,731},{11,0,190},\r
-{15,0,49},{11,11,190},{143,11,49},{4,0,626},{5,0,506},{5,0,642},{6,0,425},{10,0,\r
-202},{139,0,141},{137,0,444},{7,10,242},{135,10,1942},{6,11,209},{8,11,468},{9,\r
-11,210},{11,11,36},{12,11,28},{12,11,630},{13,11,21},{13,11,349},{14,11,7},{145,\r
-11,13},{4,11,342},{135,11,1179},{5,10,834},{7,10,1202},{8,10,14},{9,10,481},{137\r
-,10,880},{4,11,928},{133,11,910},{4,11,318},{4,11,496},{7,11,856},{139,11,654},{\r
-136,0,835},{7,0,1526},{138,10,465},{151,0,17},{135,0,477},{4,10,357},{6,10,172},\r
-{7,10,143},{137,10,413},{6,0,1374},{138,0,994},{18,0,76},{132,10,590},{7,0,287},\r
-{8,0,355},{9,0,293},{137,0,743},{134,0,1389},{7,11,915},{8,11,247},{147,11,0},{4\r
-,11,202},{5,11,382},{6,11,454},{7,11,936},{7,11,1803},{8,11,758},{9,11,375},{9,\r
-11,895},{10,11,743},{10,11,792},{11,11,978},{11,11,1012},{142,11,109},{5,0,384},\r
-{8,0,455},{140,0,48},{132,11,390},{5,10,169},{7,10,333},{136,10,45},{5,0,264},{\r
-134,0,184},{138,11,791},{133,11,717},{132,10,198},{6,11,445},{7,11,332},{137,11,\r
-909},{136,0,1001},{4,10,24},{5,10,140},{5,10,185},{7,10,1500},{11,10,565},{139,\r
-10,838},{134,11,578},{5,0,633},{6,0,28},{135,0,1323},{132,0,851},{136,11,267},{7\r
-,0,359},{8,0,243},{140,0,175},{4,10,334},{133,10,593},{141,11,87},{136,11,766},{\r
-10,0,287},{12,0,138},{10,11,287},{140,11,138},{4,0,105},{132,0,740},{140,10,116}\r
-,{134,0,857},{135,11,1841},{6,0,1402},{137,0,819},{132,11,584},{132,10,709},{133\r
-,10,897},{5,0,224},{13,0,174},{146,0,52},{135,10,1840},{4,10,608},{133,10,497},{\r
-139,11,60},{4,0,758},{135,0,1649},{4,11,226},{4,11,326},{135,11,1770},{5,11,426}\r
-,{8,11,30},{9,11,2},{11,11,549},{147,11,122},{135,10,2039},{6,10,540},{136,10,\r
-136},{4,0,573},{8,0,655},{4,10,897},{133,10,786},{7,0,351},{139,0,128},{133,10,\r
-999},{4,10,299},{135,10,1004},{133,0,918},{132,11,345},{4,11,385},{7,11,265},{\r
-135,11,587},{133,10,456},{136,10,180},{6,0,687},{134,0,1537},{4,11,347},{5,11,\r
-423},{5,11,996},{135,11,1329},{132,10,755},{7,11,1259},{9,11,125},{11,11,65},{\r
-140,11,285},{5,11,136},{6,11,136},{136,11,644},{134,0,1525},{4,0,1009},{135,0,\r
-1139},{139,10,338},{132,0,340},{135,10,1464},{8,0,847},{10,0,861},{10,0,876},{10\r
-,0,889},{10,0,922},{10,0,929},{10,0,933},{12,0,784},{140,0,791},{139,0,176},{9,\r
-11,134},{10,11,2},{10,11,27},{10,11,333},{11,11,722},{143,11,1},{4,11,433},{133,\r
-11,719},{5,0,985},{7,0,509},{7,0,529},{145,0,96},{132,0,615},{4,10,890},{5,10,\r
-805},{5,10,819},{5,10,961},{6,10,396},{6,10,1631},{6,10,1678},{7,10,1967},{7,10,\r
-2041},{9,10,630},{11,10,8},{11,10,1019},{12,10,176},{13,10,225},{14,10,292},{149\r
-,10,24},{135,0,1919},{134,0,1131},{144,11,21},{144,11,51},{135,10,1815},{4,0,247\r
-},{7,10,1505},{10,10,190},{10,10,634},{11,10,792},{12,10,358},{140,10,447},{5,10\r
-,0},{6,10,536},{7,10,604},{13,10,445},{145,10,126},{4,0,184},{5,0,390},{6,0,337}\r
-,{7,0,23},{7,0,494},{7,0,618},{7,0,1456},{8,0,27},{8,0,599},{10,0,153},{139,0,\r
-710},{6,10,232},{6,10,412},{7,10,1074},{8,10,9},{8,10,157},{8,10,786},{9,10,196}\r
-,{9,10,352},{9,10,457},{10,10,337},{11,10,232},{11,10,877},{12,10,480},{140,10,\r
-546},{13,0,38},{135,10,958},{4,10,382},{136,10,579},{4,10,212},{135,10,1206},{4,\r
-11,555},{8,11,536},{138,11,288},{11,11,139},{139,11,171},{9,11,370},{138,11,90},\r
-{132,0,1015},{134,0,1088},{5,10,655},{135,11,977},{134,0,1585},{17,10,67},{147,\r
-10,74},{10,0,227},{11,0,497},{11,0,709},{140,0,415},{6,0,360},{7,0,1664},{136,0,\r
-478},{7,0,95},{6,10,231},{136,10,423},{140,11,65},{4,11,257},{135,11,2031},{135,\r
-11,1768},{133,10,300},{139,11,211},{136,0,699},{6,10,237},{7,10,611},{8,10,100},\r
-{9,10,416},{11,10,335},{12,10,173},{146,10,101},{14,0,26},{146,0,150},{6,0,581},\r
-{135,0,1119},{135,10,1208},{132,0,739},{6,11,83},{6,11,1733},{135,11,1389},{137,\r
-0,869},{4,0,67},{5,0,422},{7,0,1037},{7,0,1289},{7,0,1555},{9,0,741},{145,0,108}\r
-,{133,10,199},{12,10,427},{146,10,38},{136,0,464},{142,0,42},{10,0,96},{8,11,501\r
-},{137,11,696},{134,11,592},{4,0,512},{4,0,966},{5,0,342},{6,0,1855},{8,0,869},{\r
-8,0,875},{8,0,901},{144,0,26},{8,0,203},{11,0,823},{11,0,846},{12,0,482},{13,0,\r
-277},{13,0,302},{13,0,464},{14,0,205},{142,0,221},{4,0,449},{133,0,718},{7,11,\r
-1718},{9,11,95},{9,11,274},{10,11,279},{10,11,317},{10,11,420},{11,11,303},{11,\r
-11,808},{12,11,134},{12,11,367},{13,11,149},{13,11,347},{14,11,349},{14,11,406},\r
-{18,11,22},{18,11,89},{18,11,122},{147,11,47},{133,11,26},{4,0,355},{6,0,311},{9\r
-,0,256},{138,0,404},{132,11,550},{10,0,758},{6,10,312},{6,10,1715},{10,10,584},{\r
-11,10,546},{11,10,692},{12,10,259},{12,10,295},{13,10,46},{141,10,154},{136,11,\r
-822},{5,0,827},{4,11,902},{5,11,809},{6,11,122},{135,11,896},{5,0,64},{140,0,581\r
-},{4,0,442},{6,0,739},{7,0,1047},{7,0,1352},{7,0,1643},{7,11,1911},{9,11,449},{\r
-10,11,192},{138,11,740},{135,11,262},{132,10,588},{133,11,620},{5,0,977},{6,0,\r
-288},{7,0,528},{4,11,34},{5,11,574},{7,11,279},{7,11,1624},{136,11,601},{6,0,\r
-1375},{4,10,231},{5,10,61},{6,10,104},{7,10,729},{7,10,964},{7,10,1658},{140,10,\r
-414},{6,10,263},{138,10,757},{132,10,320},{4,0,254},{7,0,1309},{5,11,332},{135,\r
-11,1309},{6,11,261},{8,11,182},{139,11,943},{132,10,225},{6,0,12},{135,0,1219},{\r
-4,0,275},{12,0,376},{6,11,1721},{141,11,490},{4,11,933},{133,11,880},{6,0,951},{\r
-6,0,1109},{6,0,1181},{7,0,154},{4,10,405},{7,10,817},{14,10,58},{17,10,37},{146,\r
-10,124},{6,0,1520},{133,10,974},{134,0,1753},{6,0,369},{6,0,502},{7,0,1036},{8,0\r
-,348},{9,0,452},{10,0,26},{11,0,224},{11,0,387},{11,0,772},{12,0,95},{12,0,629},\r
-{13,0,195},{13,0,207},{13,0,241},{14,0,260},{14,0,270},{143,0,140},{132,0,269},{\r
-5,0,480},{7,0,532},{7,0,1197},{7,0,1358},{8,0,291},{11,0,349},{142,0,396},{5,10,\r
-235},{7,10,1239},{11,10,131},{140,10,370},{7,10,956},{7,10,1157},{7,10,1506},{7,\r
-10,1606},{7,10,1615},{7,10,1619},{7,10,1736},{7,10,1775},{8,10,590},{9,10,324},{\r
-9,10,736},{9,10,774},{9,10,776},{9,10,784},{10,10,567},{10,10,708},{11,10,518},{\r
-11,10,613},{11,10,695},{11,10,716},{11,10,739},{11,10,770},{11,10,771},{11,10,\r
-848},{11,10,857},{11,10,931},{11,10,947},{12,10,326},{12,10,387},{12,10,484},{12\r
-,10,528},{12,10,552},{12,10,613},{13,10,189},{13,10,256},{13,10,340},{13,10,432}\r
-,{13,10,436},{13,10,440},{13,10,454},{14,10,174},{14,10,220},{14,10,284},{14,10,\r
-390},{145,10,121},{8,11,598},{9,11,664},{138,11,441},{9,10,137},{138,10,221},{\r
-133,11,812},{148,0,15},{134,0,1341},{6,0,1017},{4,11,137},{7,11,1178},{135,11,\r
-1520},{7,10,390},{138,10,140},{7,11,1260},{135,11,1790},{137,11,191},{135,10,\r
-1144},{6,0,1810},{7,0,657},{8,0,886},{10,0,857},{14,0,440},{144,0,96},{8,0,533},\r
-{6,11,1661},{7,11,1975},{7,11,2009},{135,11,2011},{6,0,1453},{134,10,464},{132,\r
-11,715},{5,10,407},{11,10,204},{11,10,243},{11,10,489},{12,10,293},{19,10,37},{\r
-20,10,73},{150,10,38},{133,11,703},{4,0,211},{7,0,1483},{5,10,325},{8,10,5},{8,\r
-10,227},{9,10,105},{10,10,585},{140,10,614},{4,0,332},{5,0,335},{6,0,238},{7,0,\r
-269},{7,0,811},{7,0,1797},{8,0,836},{9,0,507},{141,0,242},{5,11,89},{7,11,1915},\r
-{9,11,185},{9,11,235},{9,11,496},{10,11,64},{10,11,270},{10,11,403},{10,11,469},\r
-{10,11,529},{10,11,590},{11,11,140},{11,11,860},{13,11,1},{13,11,422},{14,11,341\r
-},{14,11,364},{17,11,93},{18,11,113},{19,11,97},{147,11,113},{133,11,695},{16,0,\r
-19},{5,11,6},{6,11,183},{6,10,621},{7,11,680},{7,11,978},{7,11,1013},{7,11,1055}\r
-,{12,11,230},{13,11,172},{13,10,504},{146,11,29},{136,0,156},{133,0,1009},{6,11,\r
-29},{139,11,63},{134,0,820},{134,10,218},{7,10,454},{7,10,782},{8,10,768},{140,\r
-10,686},{5,0,228},{6,0,203},{7,0,156},{8,0,347},{9,0,265},{18,0,39},{20,0,54},{\r
-21,0,31},{22,0,3},{23,0,0},{15,11,8},{18,11,39},{20,11,54},{21,11,31},{22,11,3},\r
-{151,11,0},{7,0,1131},{135,0,1468},{144,10,0},{134,0,1276},{10,10,676},{140,10,\r
-462},{132,11,311},{134,11,1740},{7,11,170},{8,11,90},{8,11,177},{8,11,415},{11,\r
-11,714},{142,11,281},{134,10,164},{6,0,1792},{138,0,849},{150,10,50},{5,0,291},{\r
-5,0,318},{7,0,765},{9,0,389},{12,0,548},{8,11,522},{142,11,328},{11,11,91},{13,\r
-11,129},{15,11,101},{145,11,125},{4,11,494},{6,11,74},{7,11,44},{7,11,407},{8,11\r
-,551},{12,11,17},{15,11,5},{148,11,11},{4,11,276},{133,11,296},{6,10,343},{7,10,\r
-195},{7,11,1777},{9,10,226},{10,10,197},{10,10,575},{11,10,502},{139,10,899},{10\r
-,0,525},{139,0,82},{14,0,453},{4,11,7},{5,11,90},{5,11,158},{6,11,542},{7,11,221\r
-},{7,11,1574},{9,11,490},{10,11,540},{11,11,443},{139,11,757},{135,0,666},{22,10\r
-,29},{150,11,29},{4,0,422},{147,10,8},{5,0,355},{145,0,0},{6,0,1873},{9,0,918},{\r
-7,11,588},{9,11,175},{138,11,530},{143,11,31},{11,0,165},{7,10,1125},{9,10,143},\r
-{14,10,405},{150,10,21},{9,0,260},{137,0,905},{5,11,872},{6,11,57},{6,11,479},{6\r
-,11,562},{7,11,471},{7,11,1060},{9,11,447},{9,11,454},{141,11,6},{138,11,704},{\r
-133,0,865},{5,0,914},{134,0,1625},{133,0,234},{7,0,1383},{5,11,31},{6,11,614},{\r
-145,11,61},{7,11,1200},{138,11,460},{6,11,424},{135,11,1866},{136,0,306},{5,10,\r
-959},{12,11,30},{13,11,148},{14,11,87},{14,11,182},{16,11,42},{18,11,92},{148,11\r
-,70},{6,0,1919},{6,0,1921},{9,0,923},{9,0,930},{9,0,941},{9,0,949},{9,0,987},{9,\r
-0,988},{9,0,992},{12,0,802},{12,0,815},{12,0,856},{12,0,885},{12,0,893},{12,0,\r
-898},{12,0,919},{12,0,920},{12,0,941},{12,0,947},{15,0,183},{15,0,185},{15,0,189\r
-},{15,0,197},{15,0,202},{15,0,233},{18,0,218},{18,0,219},{18,0,233},{143,11,156}\r
-,{135,10,1759},{136,10,173},{13,0,163},{13,0,180},{18,0,78},{20,0,35},{5,11,13},\r
-{134,11,142},{134,10,266},{6,11,97},{7,11,116},{8,11,322},{8,11,755},{9,11,548},\r
-{10,11,714},{11,11,884},{141,11,324},{135,0,1312},{9,0,814},{137,11,676},{133,0,\r
-707},{135,0,1493},{6,0,421},{7,0,61},{7,0,1540},{10,0,11},{138,0,501},{12,0,733}\r
-,{12,0,766},{7,11,866},{135,11,1163},{137,0,341},{142,0,98},{145,11,115},{135,11\r
-,1111},{136,10,300},{136,0,1014},{8,11,1},{9,11,112},{138,11,326},{132,11,730},{\r
-5,11,488},{6,11,527},{7,11,489},{7,11,1636},{8,11,121},{8,11,144},{8,11,359},{9,\r
-11,193},{9,11,241},{9,11,336},{9,11,882},{11,11,266},{11,11,372},{11,11,944},{12\r
-,11,401},{140,11,641},{6,0,971},{134,0,1121},{6,0,102},{7,0,72},{15,0,142},{147,\r
-0,67},{151,0,30},{135,0,823},{134,0,1045},{5,10,427},{5,10,734},{7,10,478},{136,\r
-10,52},{7,0,1930},{11,10,217},{142,10,165},{6,0,1512},{135,0,1870},{9,11,31},{10\r
-,11,244},{10,11,699},{12,11,149},{141,11,497},{133,11,377},{145,11,101},{10,11,\r
-158},{13,11,13},{13,11,137},{13,11,258},{14,11,111},{14,11,225},{14,11,253},{14,\r
-11,304},{14,11,339},{14,11,417},{146,11,33},{6,0,87},{6,10,1734},{7,10,20},{7,10\r
-,1056},{8,10,732},{9,10,406},{9,10,911},{138,10,694},{134,0,1243},{137,0,245},{7\r
-,0,68},{8,0,48},{8,0,88},{8,0,582},{8,0,681},{9,0,373},{9,0,864},{11,0,157},{11,\r
-0,336},{11,0,843},{148,0,27},{8,11,663},{144,11,8},{133,10,613},{4,0,88},{5,0,\r
-137},{5,0,174},{5,0,777},{6,0,1664},{6,0,1725},{7,0,77},{7,0,426},{7,0,1317},{7,\r
-0,1355},{8,0,126},{8,0,563},{9,0,523},{9,0,750},{10,0,310},{10,0,836},{11,0,42},\r
-{11,0,318},{11,0,731},{12,0,68},{12,0,92},{12,0,507},{12,0,692},{13,0,81},{13,0,\r
-238},{13,0,374},{14,0,436},{18,0,138},{19,0,78},{19,0,111},{20,0,55},{20,0,77},{\r
-148,0,92},{141,0,418},{4,0,938},{137,0,625},{138,0,351},{5,11,843},{7,10,32},{7,\r
-10,984},{8,10,85},{8,10,709},{9,10,579},{9,10,847},{9,10,856},{10,10,799},{11,10\r
-,258},{11,10,1007},{12,10,331},{12,10,615},{13,10,188},{13,10,435},{14,10,8},{15\r
-,10,165},{16,10,27},{148,10,40},{6,0,1668},{7,0,1499},{8,0,117},{9,0,314},{138,0\r
-,174},{135,0,707},{132,11,554},{133,11,536},{5,0,403},{5,11,207},{9,11,79},{11,\r
-11,625},{145,11,7},{132,11,424},{136,11,785},{4,10,167},{135,10,82},{9,0,7},{23,\r
-0,6},{9,11,7},{151,11,6},{6,0,282},{5,10,62},{6,10,534},{7,10,74},{7,10,678},{7,\r
-10,684},{7,10,1043},{7,10,1072},{8,10,280},{8,10,541},{8,10,686},{9,10,258},{10,\r
-10,519},{11,10,252},{140,10,282},{138,10,33},{132,10,359},{4,0,44},{5,0,311},{6,\r
-0,156},{7,0,639},{7,0,762},{7,0,1827},{9,0,8},{9,0,462},{148,0,83},{7,11,769},{9\r
-,11,18},{138,11,358},{4,0,346},{7,0,115},{9,0,180},{9,0,456},{10,0,363},{4,11,\r
-896},{134,11,1777},{133,10,211},{7,0,761},{7,0,1051},{137,0,545},{6,10,145},{141\r
-,10,336},{7,11,750},{9,11,223},{11,11,27},{11,11,466},{12,11,624},{14,11,265},{\r
-146,11,61},{6,0,752},{6,0,768},{6,0,1195},{6,0,1254},{6,0,1619},{137,0,835},{6,0\r
-,1936},{8,0,930},{136,0,960},{132,10,263},{132,11,249},{12,0,653},{132,10,916},{\r
-4,11,603},{133,11,661},{8,0,344},{4,11,11},{6,11,128},{7,11,231},{7,11,1533},{\r
-138,11,725},{134,0,1483},{134,0,875},{6,0,185},{7,0,1899},{9,0,875},{139,0,673},\r
-{15,10,155},{144,10,79},{7,0,93},{7,0,210},{7,0,1223},{8,0,451},{8,0,460},{11,0,\r
-353},{11,0,475},{4,10,599},{6,10,1634},{7,10,67},{7,10,691},{7,10,979},{7,10,\r
-1697},{8,10,207},{8,10,214},{8,10,231},{8,10,294},{8,10,336},{8,10,428},{8,10,\r
-471},{8,10,622},{8,10,626},{8,10,679},{8,10,759},{8,10,829},{9,10,11},{9,10,246}\r
-,{9,10,484},{9,10,573},{9,10,706},{9,10,762},{9,10,798},{9,10,855},{9,10,870},{9\r
-,10,912},{10,10,303},{10,10,335},{10,10,424},{10,10,461},{10,10,543},{10,10,759}\r
-,{10,10,814},{11,10,59},{11,10,235},{11,10,590},{11,10,929},{11,10,963},{11,10,\r
-987},{12,10,114},{12,10,182},{12,10,226},{12,10,332},{12,10,439},{12,10,575},{12\r
-,10,598},{12,10,675},{13,10,8},{13,10,125},{13,10,194},{13,10,287},{14,10,197},{\r
-14,10,383},{15,10,53},{17,10,63},{19,10,46},{19,10,98},{19,10,106},{148,10,85},{\r
-132,11,476},{4,0,327},{5,0,478},{7,0,1332},{136,0,753},{5,0,1020},{133,0,1022},{\r
-135,11,1807},{4,0,103},{133,0,401},{4,0,499},{135,0,1421},{10,0,207},{13,0,164},\r
-{147,10,126},{9,11,20},{10,11,324},{139,11,488},{132,0,96},{9,11,280},{138,11,\r
-134},{135,0,968},{133,10,187},{135,10,1286},{5,11,112},{6,11,103},{134,11,150},{\r
-8,0,914},{10,0,3},{4,10,215},{9,10,38},{11,10,23},{11,10,127},{139,10,796},{135,\r
-0,399},{6,0,563},{137,0,224},{6,0,704},{134,0,1214},{4,11,708},{8,11,15},{9,11,\r
-50},{9,11,386},{11,11,18},{11,11,529},{140,11,228},{4,11,563},{7,11,109},{7,11,\r
-592},{7,11,637},{7,11,770},{7,11,1701},{8,11,436},{8,11,463},{9,11,60},{9,11,335\r
-},{9,11,904},{10,11,73},{11,11,434},{12,11,585},{13,11,331},{18,11,110},{148,11,\r
-60},{134,0,1559},{132,11,502},{6,11,347},{138,11,161},{4,11,33},{5,11,102},{5,11\r
-,500},{6,11,284},{7,11,1079},{7,11,1423},{7,11,1702},{8,11,470},{9,11,554},{9,11\r
-,723},{139,11,333},{7,11,246},{135,11,840},{6,11,10},{8,11,571},{9,11,739},{143,\r
-11,91},{8,0,861},{10,0,905},{12,0,730},{12,0,789},{133,11,626},{134,0,946},{5,0,\r
-746},{12,0,333},{14,0,332},{12,11,333},{142,11,332},{5,11,18},{6,11,526},{13,11,\r
-24},{13,11,110},{19,11,5},{147,11,44},{4,0,910},{5,0,832},{135,10,2002},{10,11,\r
-768},{139,11,787},{4,11,309},{5,11,462},{7,11,970},{135,11,1097},{4,10,28},{5,10\r
-,440},{7,10,248},{11,10,833},{140,10,344},{134,10,1654},{6,0,632},{6,0,652},{6,0\r
-,1272},{6,0,1384},{134,0,1560},{134,11,1704},{6,0,1393},{133,10,853},{6,10,249},\r
-{7,10,1234},{139,10,573},{5,11,86},{7,11,743},{9,11,85},{10,11,281},{10,11,432},\r
-{11,11,490},{12,11,251},{13,11,118},{14,11,378},{146,11,143},{5,11,524},{133,11,\r
-744},{134,0,1514},{10,0,201},{142,0,319},{7,0,717},{10,0,510},{7,10,392},{8,10,\r
-20},{8,10,172},{8,10,690},{9,10,383},{9,10,845},{11,10,293},{11,10,832},{11,10,\r
-920},{11,10,984},{141,10,221},{134,0,1381},{5,10,858},{133,10,992},{8,0,528},{\r
-137,0,348},{10,11,107},{140,11,436},{4,0,20},{133,0,616},{134,0,1251},{132,11,\r
-927},{10,11,123},{12,11,670},{13,11,371},{14,11,142},{146,11,94},{134,0,1163},{7\r
-,11,1149},{137,11,156},{134,0,307},{133,11,778},{7,0,1091},{135,0,1765},{5,11,\r
-502},{6,10,268},{137,10,62},{8,11,196},{10,11,283},{139,11,406},{4,0,26},{5,0,\r
-429},{6,0,245},{7,0,704},{7,0,1379},{135,0,1474},{133,11,855},{132,0,881},{4,0,\r
-621},{135,11,1596},{7,11,1400},{9,11,446},{138,11,45},{6,0,736},{138,10,106},{\r
-133,0,542},{134,0,348},{133,0,868},{136,0,433},{135,0,1495},{138,0,771},{6,10,\r
-613},{136,10,223},{138,0,215},{141,0,124},{136,11,391},{135,11,172},{132,10,670}\r
-,{140,0,55},{9,10,40},{139,10,136},{7,0,62},{147,0,112},{132,0,856},{132,11,568}\r
-,{12,0,270},{139,10,259},{8,0,572},{137,0,698},{4,11,732},{9,10,310},{137,10,682\r
-},{142,10,296},{134,0,939},{136,11,733},{135,11,1435},{7,10,1401},{135,10,1476},\r
-{6,0,352},{4,10,296},{7,10,401},{7,10,1410},{7,10,1594},{7,10,1674},{8,10,63},{8\r
-,10,660},{137,10,74},{4,11,428},{133,11,668},{4,10,139},{4,10,388},{140,10,188},\r
-{7,11,2015},{140,11,665},{132,0,647},{146,0,10},{138,0,220},{142,0,464},{132,0,\r
-109},{134,0,1746},{6,0,515},{4,10,747},{6,11,1623},{6,11,1681},{7,10,649},{7,10,\r
-1479},{135,10,1583},{133,10,232},{135,0,566},{137,10,887},{4,0,40},{10,0,67},{11\r
-,0,117},{11,0,768},{139,0,935},{132,0,801},{7,0,992},{8,0,301},{9,0,722},{12,0,\r
-63},{13,0,29},{14,0,161},{143,0,18},{139,0,923},{6,11,1748},{8,11,715},{9,11,802\r
-},{10,11,46},{10,11,819},{13,11,308},{14,11,351},{14,11,363},{146,11,67},{137,11\r
-,745},{7,0,1145},{4,10,14},{7,10,1801},{10,10,748},{141,10,458},{4,11,63},{5,11,\r
-347},{134,11,474},{135,0,568},{4,10,425},{7,11,577},{7,11,1432},{9,11,475},{9,11\r
-,505},{9,11,526},{9,11,609},{9,11,689},{9,11,726},{9,11,735},{9,11,738},{10,11,\r
-556},{10,11,674},{10,11,684},{11,11,89},{11,11,202},{11,11,272},{11,11,380},{11,\r
-11,415},{11,11,505},{11,11,537},{11,11,550},{11,11,562},{11,11,640},{11,11,667},\r
-{11,11,688},{11,11,847},{11,11,927},{11,11,930},{11,11,940},{12,11,144},{12,11,\r
-325},{12,11,329},{12,11,389},{12,11,403},{12,11,451},{12,11,515},{12,11,604},{12\r
-,11,616},{12,11,626},{13,11,66},{13,11,131},{13,11,167},{13,11,236},{13,11,368},\r
-{13,11,411},{13,11,434},{13,11,453},{13,11,461},{13,11,474},{14,11,59},{14,11,60\r
-},{14,11,139},{14,11,152},{14,11,276},{14,11,353},{14,11,402},{15,11,28},{15,11,\r
-81},{15,11,123},{15,11,152},{18,11,136},{148,11,88},{137,0,247},{135,11,1622},{9\r
-,11,544},{11,11,413},{144,11,25},{4,0,645},{7,0,825},{6,10,1768},{135,11,89},{\r
-140,0,328},{5,10,943},{134,10,1779},{134,0,1363},{5,10,245},{6,10,576},{7,10,582\r
-},{136,10,225},{134,0,1280},{5,11,824},{133,11,941},{7,11,440},{8,11,230},{139,\r
-11,106},{5,0,28},{6,0,204},{10,0,320},{10,0,583},{13,0,502},{14,0,72},{14,0,274}\r
-,{14,0,312},{14,0,344},{15,0,159},{16,0,62},{16,0,69},{17,0,30},{18,0,42},{18,0,\r
-53},{18,0,84},{18,0,140},{19,0,68},{19,0,85},{20,0,5},{20,0,45},{20,0,101},{22,0\r
-,7},{150,0,20},{4,0,558},{6,0,390},{7,0,162},{7,0,689},{9,0,360},{138,0,653},{\r
-134,0,764},{6,0,862},{137,0,833},{5,0,856},{6,0,1672},{6,0,1757},{134,0,1781},{5\r
-,0,92},{10,0,736},{140,0,102},{6,0,1927},{6,0,1944},{8,0,924},{8,0,948},{10,0,\r
-967},{138,0,978},{134,0,1479},{5,0,590},{8,0,360},{9,0,213},{138,0,63},{134,0,\r
-1521},{6,0,709},{134,0,891},{132,10,443},{13,0,477},{14,0,120},{148,0,61},{4,11,\r
-914},{5,11,800},{133,11,852},{10,11,54},{141,11,115},{4,11,918},{133,11,876},{\r
-139,11,152},{4,11,92},{133,11,274},{135,11,1901},{9,11,800},{10,11,693},{11,11,\r
-482},{11,11,734},{139,11,789},{9,0,483},{132,10,298},{6,0,1213},{141,11,498},{\r
-135,11,1451},{133,11,743},{4,0,1022},{10,0,1000},{12,0,957},{12,0,980},{12,0,\r
-1013},{14,0,481},{144,0,116},{8,0,503},{17,0,29},{4,11,49},{7,11,280},{135,11,\r
-1633},{135,0,1712},{134,0,466},{136,11,47},{5,10,164},{7,10,121},{142,10,189},{7\r
-,10,812},{7,10,1261},{7,10,1360},{9,10,632},{140,10,352},{139,10,556},{132,0,731\r
-},{5,11,272},{5,11,908},{5,11,942},{7,11,1008},{7,11,1560},{8,11,197},{9,11,47},\r
-{11,11,538},{139,11,742},{4,10,172},{9,10,611},{10,10,436},{12,10,673},{141,10,\r
-255},{133,10,844},{10,0,484},{11,0,754},{12,0,457},{14,0,171},{14,0,389},{146,0,\r
-153},{9,10,263},{10,10,147},{138,10,492},{137,11,891},{138,0,241},{133,10,537},{\r
-6,0,2005},{136,0,964},{137,10,842},{151,11,8},{4,11,407},{132,11,560},{135,11,\r
-1884},{6,0,1100},{134,0,1242},{135,0,954},{5,10,230},{5,10,392},{6,10,420},{9,10\r
-,568},{140,10,612},{4,11,475},{11,11,35},{11,11,90},{13,11,7},{13,11,71},{13,11,\r
-177},{142,11,422},{136,11,332},{135,0,1958},{6,0,549},{8,0,34},{8,0,283},{9,0,\r
-165},{138,0,475},{10,0,952},{12,0,966},{140,0,994},{5,0,652},{5,0,701},{135,0,\r
-449},{4,0,655},{7,0,850},{17,0,75},{146,0,137},{4,0,146},{7,0,1618},{8,0,670},{5\r
-,10,41},{7,10,1459},{7,10,1469},{7,10,1859},{9,10,549},{139,10,905},{133,10,696}\r
-,{6,0,159},{6,0,364},{7,0,516},{137,0,518},{135,0,1439},{6,11,222},{7,11,636},{7\r
-,11,1620},{8,11,409},{9,11,693},{139,11,77},{13,0,151},{141,11,45},{6,0,1027},{4\r
-,11,336},{132,10,771},{139,11,392},{10,11,121},{11,11,175},{149,11,16},{8,0,950}\r
-,{138,0,983},{133,10,921},{135,0,993},{6,10,180},{7,10,1137},{8,10,751},{139,10,\r
-805},{7,0,501},{9,0,111},{10,0,141},{11,0,332},{13,0,43},{13,0,429},{14,0,130},{\r
-14,0,415},{145,0,102},{4,10,183},{5,11,882},{7,10,271},{11,10,824},{11,10,952},{\r
-13,10,278},{13,10,339},{13,10,482},{14,10,424},{148,10,99},{4,10,19},{5,10,477},\r
-{5,10,596},{6,10,505},{7,10,1221},{11,10,907},{12,10,209},{141,10,214},{135,10,\r
-1215},{133,0,452},{132,11,426},{5,0,149},{136,0,233},{133,0,935},{6,11,58},{7,11\r
-,654},{7,11,745},{7,11,1969},{8,11,240},{8,11,675},{9,11,479},{9,11,731},{10,11,\r
-330},{10,11,593},{10,11,817},{11,11,32},{11,11,133},{11,11,221},{145,11,68},{12,\r
-0,582},{18,0,131},{7,11,102},{137,11,538},{136,0,801},{134,10,1645},{132,0,70},{\r
-6,10,92},{6,10,188},{7,10,1269},{7,10,1524},{7,10,1876},{10,10,228},{139,10,1020\r
-},{4,10,459},{133,10,966},{138,0,369},{16,0,36},{140,10,330},{141,11,366},{7,0,\r
-721},{10,0,236},{12,0,204},{6,10,18},{7,10,932},{8,10,757},{9,10,54},{9,10,65},{\r
-9,10,844},{10,10,113},{10,10,315},{10,10,798},{11,10,153},{12,10,151},{12,10,392\r
-},{12,10,666},{142,10,248},{7,0,241},{10,0,430},{8,10,548},{9,10,532},{10,10,117\r
-},{11,10,351},{11,10,375},{143,10,23},{134,10,1742},{133,10,965},{133,11,566},{6\r
-,11,48},{135,11,63},{134,10,182},{10,10,65},{10,10,488},{138,10,497},{6,11,114},\r
-{7,11,1224},{7,11,1556},{136,11,3},{134,0,1817},{8,11,576},{137,11,267},{6,0,\r
-1078},{144,0,16},{9,10,588},{138,10,260},{138,0,1021},{5,0,406},{134,0,2022},{\r
-133,11,933},{6,0,69},{135,0,117},{7,0,1830},{136,11,427},{4,0,432},{135,0,824},{\r
-134,10,1786},{133,0,826},{139,11,67},{133,11,759},{135,10,308},{137,0,816},{133,\r
-0,1000},{4,0,297},{6,0,529},{7,0,152},{7,0,713},{7,0,1845},{8,0,710},{8,0,717},{\r
-12,0,639},{140,0,685},{7,0,423},{136,10,588},{136,10,287},{136,0,510},{134,0,\r
-1048},{6,0,618},{7,11,56},{7,11,1989},{8,11,337},{8,11,738},{9,11,600},{10,11,\r
-483},{12,11,37},{13,11,447},{142,11,92},{4,0,520},{135,0,575},{8,0,990},{138,0,\r
-977},{135,11,774},{9,11,347},{11,11,24},{140,11,170},{136,11,379},{140,10,290},{\r
-132,11,328},{4,0,321},{134,0,569},{4,11,101},{135,11,1171},{7,0,723},{7,0,1135},\r
-{5,11,833},{136,11,744},{7,10,719},{8,10,809},{136,10,834},{8,0,921},{136,10,796\r
-},{5,10,210},{6,10,213},{7,10,60},{10,10,364},{139,10,135},{5,0,397},{6,0,154},{\r
-7,0,676},{8,0,443},{8,0,609},{9,0,24},{9,0,325},{10,0,35},{11,0,535},{11,0,672},\r
-{11,0,1018},{12,0,637},{16,0,30},{5,10,607},{8,10,326},{136,10,490},{4,10,701},{\r
-5,10,472},{6,11,9},{6,11,397},{7,11,53},{7,11,1742},{9,10,758},{10,11,632},{11,\r
-11,828},{140,11,146},{135,10,380},{135,10,1947},{148,11,109},{10,10,278},{138,11\r
-,278},{134,0,856},{7,0,139},{4,10,386},{8,10,405},{8,10,728},{9,10,497},{11,10,\r
-110},{11,10,360},{15,10,37},{144,10,84},{141,0,282},{133,0,981},{5,0,288},{7,10,\r
-1452},{7,10,1480},{8,10,634},{140,10,472},{7,0,1890},{8,11,367},{10,11,760},{14,\r
-11,79},{20,11,17},{152,11,0},{4,10,524},{136,10,810},{4,0,56},{7,0,1791},{8,0,\r
-607},{8,0,651},{11,0,465},{11,0,835},{12,0,337},{141,0,480},{10,10,238},{141,10,\r
-33},{11,11,417},{12,11,223},{140,11,265},{9,0,158},{10,0,411},{140,0,261},{133,\r
-10,532},{133,10,997},{12,11,186},{12,11,292},{14,11,100},{146,11,70},{6,0,1403},\r
-{136,0,617},{134,0,1205},{139,0,563},{4,0,242},{134,0,333},{4,11,186},{5,11,157}\r
-,{8,11,168},{138,11,6},{132,0,369},{133,11,875},{5,10,782},{5,10,829},{134,10,\r
-1738},{134,0,622},{135,11,1272},{6,0,1407},{7,11,111},{136,11,581},{7,10,1823},{\r
-139,10,693},{7,0,160},{10,0,624},{142,0,279},{132,0,363},{10,11,589},{12,11,111}\r
-,{13,11,260},{14,11,82},{18,11,63},{147,11,45},{7,11,1364},{7,11,1907},{141,11,\r
-158},{4,11,404},{4,11,659},{135,11,675},{13,11,211},{14,11,133},{14,11,204},{15,\r
-11,64},{15,11,69},{15,11,114},{16,11,10},{19,11,23},{19,11,35},{19,11,39},{19,11\r
-,51},{19,11,71},{19,11,75},{152,11,15},{4,10,78},{5,10,96},{5,10,182},{7,10,1724\r
-},{7,10,1825},{10,10,394},{10,10,471},{11,10,532},{14,10,340},{145,10,88},{135,\r
-10,1964},{133,11,391},{11,11,887},{14,11,365},{142,11,375},{5,11,540},{6,11,1697\r
-},{7,11,222},{136,11,341},{134,11,78},{9,0,601},{9,0,619},{10,0,505},{10,0,732},\r
-{11,0,355},{140,0,139},{134,0,292},{139,0,174},{5,0,177},{6,0,616},{7,0,827},{9,\r
-0,525},{138,0,656},{10,0,31},{6,10,215},{7,10,1028},{7,10,1473},{7,10,1721},{9,\r
-10,424},{138,10,779},{135,10,584},{136,11,293},{134,0,685},{135,11,1868},{133,11\r
-,460},{7,0,647},{6,10,67},{7,10,1630},{9,10,354},{9,10,675},{10,10,830},{14,10,\r
-80},{145,10,80},{4,0,161},{133,0,631},{6,10,141},{7,10,225},{9,10,59},{9,10,607}\r
-,{10,10,312},{11,10,687},{12,10,555},{13,10,373},{13,10,494},{148,10,58},{7,11,\r
-965},{7,11,1460},{135,11,1604},{136,10,783},{134,11,388},{6,0,722},{6,0,1267},{4\r
-,11,511},{9,11,333},{9,11,379},{10,11,602},{11,11,441},{11,11,723},{11,11,976},{\r
-140,11,357},{134,0,1797},{135,0,1684},{9,0,469},{9,0,709},{12,0,512},{14,0,65},{\r
-17,0,12},{5,11,938},{136,11,707},{7,0,1230},{136,0,531},{10,0,229},{11,0,73},{11\r
-,0,376},{139,0,433},{12,0,268},{12,0,640},{142,0,119},{7,10,430},{139,10,46},{6,\r
-0,558},{7,0,651},{8,0,421},{9,0,0},{10,0,34},{139,0,1008},{6,0,106},{7,0,1786},{\r
-7,0,1821},{9,0,102},{9,0,763},{5,10,602},{7,10,2018},{137,10,418},{5,0,65},{6,0,\r
-416},{7,0,1720},{7,0,1924},{10,0,109},{11,0,14},{11,0,70},{11,0,569},{11,0,735},\r
-{15,0,153},{20,0,80},{136,10,677},{135,11,1625},{137,11,772},{136,0,595},{6,11,\r
-469},{7,11,1709},{138,11,515},{7,0,1832},{138,0,374},{9,0,106},{9,0,163},{9,0,\r
-296},{10,0,167},{10,0,172},{10,0,777},{139,0,16},{6,0,6},{7,0,81},{7,0,771},{7,0\r
-,1731},{9,0,405},{138,0,421},{4,11,500},{135,11,938},{5,11,68},{134,11,383},{5,0\r
-,881},{133,0,885},{6,0,854},{6,0,1132},{6,0,1495},{6,0,1526},{6,0,1533},{134,0,\r
-1577},{4,11,337},{6,11,353},{7,11,1934},{8,11,488},{137,11,429},{7,11,236},{7,11\r
-,1795},{8,11,259},{9,11,135},{9,11,177},{10,11,825},{11,11,115},{11,11,370},{11,\r
-11,405},{11,11,604},{12,11,10},{12,11,667},{12,11,669},{13,11,76},{14,11,310},{\r
-15,11,76},{15,11,147},{148,11,23},{5,0,142},{134,0,546},{4,11,15},{5,11,22},{6,\r
-11,244},{7,11,40},{7,11,200},{7,11,906},{7,11,1199},{9,11,616},{10,11,716},{11,\r
-11,635},{11,11,801},{140,11,458},{5,0,466},{11,0,571},{12,0,198},{13,0,283},{14,\r
-0,186},{15,0,21},{15,0,103},{135,10,329},{4,0,185},{5,0,257},{5,0,839},{5,0,936}\r
-,{9,0,399},{10,0,258},{10,0,395},{10,0,734},{11,0,1014},{12,0,23},{13,0,350},{14\r
-,0,150},{19,0,6},{135,11,1735},{12,11,36},{141,11,337},{5,11,598},{7,11,791},{8,\r
-11,108},{137,11,123},{132,10,469},{7,0,404},{7,0,1377},{7,0,1430},{7,0,2017},{8,\r
-0,149},{8,0,239},{8,0,512},{8,0,793},{8,0,818},{9,0,474},{9,0,595},{10,0,122},{\r
-10,0,565},{10,0,649},{10,0,783},{11,0,239},{11,0,295},{11,0,447},{11,0,528},{11,\r
-0,639},{11,0,800},{12,0,25},{12,0,77},{12,0,157},{12,0,256},{12,0,316},{12,0,390\r
-},{12,0,391},{12,0,395},{12,0,478},{12,0,503},{12,0,592},{12,0,680},{13,0,50},{\r
-13,0,53},{13,0,132},{13,0,198},{13,0,322},{13,0,415},{13,0,511},{14,0,71},{14,0,\r
-395},{15,0,71},{15,0,136},{17,0,123},{18,0,93},{147,0,58},{136,0,712},{134,10,\r
-1743},{5,10,929},{6,10,340},{8,10,376},{136,10,807},{6,0,1848},{8,0,860},{10,0,\r
-856},{10,0,859},{10,0,925},{10,0,941},{140,0,762},{6,0,629},{6,0,906},{9,0,810},\r
-{140,0,652},{5,10,218},{7,10,1610},{138,10,83},{7,10,1512},{135,10,1794},{4,0,\r
-377},{24,0,13},{4,11,155},{7,11,1689},{11,10,0},{144,10,78},{4,11,164},{5,11,151\r
-},{5,11,730},{5,11,741},{7,11,498},{7,11,870},{7,11,1542},{12,11,213},{14,11,36}\r
-,{14,11,391},{17,11,111},{18,11,6},{18,11,46},{18,11,151},{19,11,36},{20,11,32},\r
-{20,11,56},{20,11,69},{20,11,102},{21,11,4},{22,11,8},{22,11,10},{22,11,14},{150\r
-,11,31},{7,0,1842},{133,10,571},{4,10,455},{4,11,624},{135,11,1752},{134,0,1501}\r
-,{4,11,492},{5,11,451},{6,10,161},{7,10,372},{137,10,597},{132,10,349},{4,0,180}\r
-,{135,0,1906},{135,11,835},{141,11,70},{132,0,491},{137,10,751},{6,10,432},{139,\r
-10,322},{4,0,171},{138,0,234},{6,11,113},{135,11,436},{4,0,586},{7,0,1186},{138,\r
-0,631},{5,10,468},{10,10,325},{11,10,856},{12,10,345},{143,10,104},{5,10,223},{\r
-10,11,592},{10,11,753},{12,11,317},{12,11,355},{12,11,465},{12,11,469},{12,11,\r
-560},{12,11,578},{141,11,243},{132,10,566},{135,11,520},{4,10,59},{135,10,1394},\r
-{6,10,436},{139,10,481},{9,0,931},{10,0,334},{20,0,71},{4,10,48},{5,10,271},{7,\r
-10,953},{135,11,1878},{11,0,170},{5,10,610},{136,10,457},{133,10,755},{6,0,1587}\r
-,{135,10,1217},{4,10,197},{149,11,26},{133,11,585},{137,11,521},{133,0,765},{133\r
-,10,217},{139,11,586},{133,0,424},{9,11,752},{12,11,610},{13,11,431},{16,11,59},\r
-{146,11,109},{136,0,714},{7,0,685},{132,11,307},{9,0,420},{10,0,269},{10,0,285},\r
-{10,0,576},{11,0,397},{13,0,175},{145,0,90},{132,0,429},{133,11,964},{9,11,463},\r
-{138,11,595},{7,0,18},{7,0,699},{7,0,1966},{8,0,752},{9,0,273},{9,0,412},{9,0,\r
-703},{10,0,71},{10,0,427},{138,0,508},{4,10,165},{7,10,1398},{135,10,1829},{4,0,\r
-53},{5,0,186},{7,0,752},{7,0,828},{142,0,116},{8,0,575},{10,0,289},{139,0,319},{\r
-132,0,675},{134,0,1424},{4,11,75},{5,11,180},{6,11,500},{7,11,58},{7,11,710},{\r
-138,11,645},{133,11,649},{6,11,276},{7,11,282},{7,11,879},{7,11,924},{8,11,459},\r
-{9,11,599},{9,11,754},{11,11,574},{12,11,128},{12,11,494},{13,11,52},{13,11,301}\r
-,{15,11,30},{143,11,132},{6,0,647},{134,0,1095},{5,10,9},{7,10,297},{7,10,966},{\r
-140,10,306},{132,11,200},{134,0,1334},{5,10,146},{6,10,411},{138,10,721},{6,0,\r
-209},{6,0,1141},{6,0,1288},{8,0,468},{9,0,210},{11,0,36},{12,0,28},{12,0,630},{\r
-13,0,21},{13,0,349},{14,0,7},{145,0,13},{6,10,177},{135,10,467},{4,0,342},{135,0\r
-,1179},{10,11,454},{140,11,324},{4,0,928},{133,0,910},{7,0,1838},{6,11,225},{137\r
-,11,211},{16,0,101},{20,0,115},{20,0,118},{148,0,122},{4,0,496},{135,0,856},{4,0\r
-,318},{11,0,654},{7,11,718},{139,11,102},{8,11,58},{9,11,724},{11,11,809},{13,11\r
-,113},{145,11,72},{5,10,200},{6,11,345},{135,11,1247},{8,11,767},{8,11,803},{9,\r
-11,301},{137,11,903},{7,0,915},{8,0,247},{19,0,0},{7,11,1949},{136,11,674},{4,0,\r
-202},{5,0,382},{6,0,454},{7,0,936},{7,0,1803},{8,0,758},{9,0,375},{9,0,895},{10,\r
-0,743},{10,0,792},{11,0,978},{11,0,1012},{142,0,109},{7,0,1150},{7,0,1425},{7,0,\r
-1453},{140,0,513},{134,11,259},{138,0,791},{11,0,821},{12,0,110},{12,0,153},{18,\r
-0,41},{150,0,19},{134,10,481},{132,0,796},{6,0,445},{9,0,909},{136,11,254},{10,0\r
-,776},{13,0,345},{142,0,425},{4,10,84},{7,10,1482},{10,10,76},{138,10,142},{135,\r
-11,742},{6,0,578},{133,10,1015},{6,0,1387},{4,10,315},{5,10,507},{135,10,1370},{\r
-4,0,438},{133,0,555},{136,0,766},{133,11,248},{134,10,1722},{4,11,116},{5,11,95}\r
-,{5,11,445},{7,11,1688},{8,11,29},{9,11,272},{11,11,509},{139,11,915},{135,0,541\r
-},{133,11,543},{8,10,222},{8,10,476},{9,10,238},{11,10,516},{11,10,575},{15,10,\r
-109},{146,10,100},{6,0,880},{134,0,1191},{5,11,181},{136,11,41},{134,0,1506},{\r
-132,11,681},{7,11,25},{8,11,202},{138,11,536},{139,0,983},{137,0,768},{132,0,584\r
-},{9,11,423},{140,11,89},{8,11,113},{9,11,877},{10,11,554},{11,11,83},{12,11,136\r
-},{147,11,109},{7,10,706},{7,10,1058},{138,10,538},{133,11,976},{4,11,206},{135,\r
-11,746},{136,11,526},{140,0,737},{11,10,92},{11,10,196},{11,10,409},{11,10,450},\r
-{11,10,666},{11,10,777},{12,10,262},{13,10,385},{13,10,393},{15,10,115},{16,10,\r
-45},{145,10,82},{4,0,226},{4,0,326},{7,0,1770},{4,11,319},{5,11,699},{138,11,673\r
-},{6,10,40},{135,10,1781},{5,0,426},{8,0,30},{9,0,2},{11,0,549},{147,0,122},{6,0\r
-,1161},{134,0,1329},{138,10,97},{6,10,423},{7,10,665},{135,10,1210},{7,11,13},{8\r
-,11,226},{10,11,537},{11,11,570},{11,11,605},{11,11,799},{11,11,804},{12,11,85},\r
-{12,11,516},{12,11,623},{13,11,112},{13,11,361},{14,11,77},{14,11,78},{17,11,28}\r
-,{147,11,110},{132,11,769},{132,11,551},{132,11,728},{147,0,117},{9,11,57},{9,11\r
-,459},{10,11,425},{11,11,119},{12,11,184},{12,11,371},{13,11,358},{145,11,51},{5\r
-,11,188},{5,11,814},{8,11,10},{9,11,421},{9,11,729},{10,11,609},{139,11,689},{\r
-134,11,624},{135,11,298},{135,0,462},{4,0,345},{139,10,624},{136,10,574},{4,0,\r
-385},{7,0,265},{135,0,587},{6,0,808},{132,11,528},{133,0,398},{132,10,354},{4,0,\r
-347},{5,0,423},{5,0,996},{135,0,1329},{135,10,1558},{7,0,1259},{9,0,125},{139,0,\r
-65},{5,0,136},{6,0,136},{136,0,644},{5,11,104},{6,11,173},{135,11,1631},{135,0,\r
-469},{133,10,830},{4,0,278},{5,0,465},{135,0,1367},{7,11,810},{8,11,138},{8,11,\r
-342},{9,11,84},{10,11,193},{11,11,883},{140,11,359},{5,10,496},{135,10,203},{4,0\r
-,433},{133,0,719},{6,11,95},{134,10,547},{5,10,88},{137,10,239},{6,11,406},{10,\r
-11,409},{10,11,447},{11,11,44},{140,11,100},{134,0,1423},{7,10,650},{135,10,1310\r
-},{134,0,749},{135,11,1243},{135,0,1363},{6,0,381},{7,0,645},{7,0,694},{8,0,546}\r
-,{7,10,1076},{9,10,80},{11,10,78},{11,10,421},{11,10,534},{140,10,545},{134,11,\r
-1636},{135,11,1344},{12,0,277},{7,10,274},{11,10,479},{139,10,507},{6,0,705},{6,\r
-0,783},{6,0,1275},{6,0,1481},{4,11,282},{7,11,1034},{11,11,398},{11,11,634},{12,\r
-11,1},{12,11,79},{12,11,544},{14,11,237},{17,11,10},{146,11,20},{134,0,453},{4,0\r
-,555},{8,0,536},{10,0,288},{11,0,1005},{4,10,497},{135,10,1584},{5,11,118},{5,11\r
-,499},{6,11,476},{7,11,600},{7,11,888},{135,11,1096},{138,0,987},{7,0,1107},{7,\r
-10,261},{7,10,1115},{7,10,1354},{7,10,1588},{7,10,1705},{7,10,1902},{9,10,465},{\r
-10,10,248},{10,10,349},{10,10,647},{11,10,527},{11,10,660},{11,10,669},{12,10,\r
-529},{141,10,305},{7,11,296},{7,11,596},{8,11,560},{8,11,586},{9,11,612},{11,11,\r
-100},{11,11,304},{12,11,46},{13,11,89},{14,11,112},{145,11,122},{9,0,370},{138,0\r
-,90},{136,10,13},{132,0,860},{7,10,642},{8,10,250},{11,10,123},{11,10,137},{13,\r
-10,48},{142,10,95},{135,10,1429},{137,11,321},{132,0,257},{135,0,2031},{7,0,1768\r
-},{7,11,1599},{7,11,1723},{8,11,79},{8,11,106},{8,11,190},{8,11,302},{8,11,383},\r
-{9,11,119},{9,11,233},{9,11,298},{9,11,419},{9,11,471},{10,11,181},{10,11,406},{\r
-11,11,57},{11,11,85},{11,11,120},{11,11,177},{11,11,296},{11,11,382},{11,11,454}\r
-,{11,11,758},{11,11,999},{12,11,27},{12,11,98},{12,11,131},{12,11,245},{12,11,\r
-312},{12,11,446},{12,11,454},{13,11,25},{13,11,98},{13,11,426},{13,11,508},{14,\r
-11,6},{14,11,163},{14,11,272},{14,11,277},{14,11,370},{15,11,95},{15,11,138},{15\r
-,11,167},{17,11,18},{17,11,38},{20,11,96},{149,11,32},{5,11,722},{134,11,1759},{\r
-145,11,16},{6,0,1071},{134,0,1561},{10,10,545},{140,10,301},{6,0,83},{6,0,1733},\r
-{135,0,1389},{4,0,835},{135,0,1818},{133,11,258},{4,10,904},{133,10,794},{134,0,\r
-2006},{5,11,30},{7,11,495},{8,11,134},{9,11,788},{140,11,438},{135,11,2004},{137\r
-,0,696},{5,11,50},{6,11,439},{7,11,780},{135,11,1040},{7,11,772},{7,11,1104},{7,\r
-11,1647},{11,11,269},{11,11,539},{11,11,607},{11,11,627},{11,11,706},{11,11,975}\r
-,{12,11,248},{12,11,311},{12,11,434},{12,11,600},{12,11,622},{13,11,297},{13,11,\r
-367},{13,11,485},{14,11,69},{14,11,409},{143,11,108},{5,11,1},{6,11,81},{138,11,\r
-520},{7,0,1718},{9,0,95},{9,0,274},{10,0,279},{10,0,317},{10,0,420},{11,0,303},{\r
-11,0,808},{12,0,134},{12,0,367},{13,0,149},{13,0,347},{14,0,349},{14,0,406},{18,\r
-0,22},{18,0,89},{18,0,122},{147,0,47},{5,11,482},{8,11,98},{9,11,172},{10,11,222\r
-},{10,11,700},{10,11,822},{11,11,302},{11,11,778},{12,11,50},{12,11,127},{12,11,\r
-396},{13,11,62},{13,11,328},{14,11,122},{147,11,72},{7,10,386},{138,10,713},{6,\r
-10,7},{6,10,35},{7,10,147},{7,10,1069},{7,10,1568},{7,10,1575},{7,10,1917},{8,10\r
-,43},{8,10,208},{9,10,128},{9,10,866},{10,10,20},{11,10,981},{147,10,33},{133,0,\r
-26},{132,0,550},{5,11,2},{7,11,1494},{136,11,589},{6,11,512},{7,11,797},{8,11,\r
-253},{9,11,77},{10,11,1},{10,11,129},{10,11,225},{11,11,118},{11,11,226},{11,11,\r
-251},{11,11,430},{11,11,701},{11,11,974},{11,11,982},{12,11,64},{12,11,260},{12,\r
-11,488},{140,11,690},{7,10,893},{141,10,424},{134,0,901},{136,0,822},{4,0,902},{\r
-5,0,809},{134,0,122},{6,0,807},{134,0,1366},{7,0,262},{5,11,748},{134,11,553},{\r
-133,0,620},{4,0,34},{5,0,574},{7,0,279},{7,0,1624},{136,0,601},{9,0,170},{6,10,\r
-322},{9,10,552},{11,10,274},{13,10,209},{13,10,499},{14,10,85},{15,10,126},{145,\r
-10,70},{132,0,537},{4,11,12},{7,11,420},{7,11,522},{7,11,809},{8,11,797},{141,11\r
-,88},{133,0,332},{8,10,83},{8,10,742},{8,10,817},{9,10,28},{9,10,29},{9,10,885},\r
-{10,10,387},{11,10,633},{11,10,740},{13,10,235},{13,10,254},{15,10,143},{143,10,\r
-146},{6,0,1909},{9,0,964},{12,0,822},{12,0,854},{12,0,865},{12,0,910},{12,0,938}\r
-,{15,0,169},{15,0,208},{15,0,211},{18,0,205},{18,0,206},{18,0,220},{18,0,223},{\r
-152,0,24},{140,10,49},{5,11,528},{135,11,1580},{6,0,261},{8,0,182},{139,0,943},{\r
-134,0,1721},{4,0,933},{133,0,880},{136,11,321},{5,11,266},{9,11,290},{9,11,364},\r
-{10,11,293},{11,11,606},{142,11,45},{6,0,1609},{4,11,50},{6,11,510},{6,11,594},{\r
-9,11,121},{10,11,49},{10,11,412},{139,11,834},{7,0,895},{136,11,748},{132,11,466\r
-},{4,10,110},{10,10,415},{10,10,597},{142,10,206},{133,0,812},{135,11,281},{6,0,\r
-1890},{6,0,1902},{6,0,1916},{9,0,929},{9,0,942},{9,0,975},{9,0,984},{9,0,986},{9\r
-,0,1011},{9,0,1019},{12,0,804},{12,0,851},{12,0,867},{12,0,916},{12,0,923},{15,0\r
-,194},{15,0,204},{15,0,210},{15,0,222},{15,0,223},{15,0,229},{15,0,250},{18,0,\r
-179},{18,0,186},{18,0,192},{7,10,205},{135,10,2000},{132,11,667},{135,0,778},{4,\r
-0,137},{7,0,1178},{135,0,1520},{134,0,1314},{4,11,242},{134,11,333},{6,0,1661},{\r
-7,0,1975},{7,0,2009},{135,0,2011},{134,0,1591},{4,10,283},{135,10,1194},{11,0,\r
-820},{150,0,51},{4,11,39},{5,11,36},{7,11,1843},{8,11,407},{11,11,144},{140,11,\r
-523},{134,10,1720},{4,11,510},{7,11,29},{7,11,66},{7,11,1980},{10,11,487},{10,11\r
-,809},{146,11,9},{5,0,89},{7,0,1915},{9,0,185},{9,0,235},{10,0,64},{10,0,270},{\r
-10,0,403},{10,0,469},{10,0,529},{10,0,590},{11,0,140},{11,0,860},{13,0,1},{13,0,\r
-422},{14,0,341},{14,0,364},{17,0,93},{18,0,113},{19,0,97},{147,0,113},{133,0,695\r
-},{6,0,987},{134,0,1160},{5,0,6},{6,0,183},{7,0,680},{7,0,978},{7,0,1013},{7,0,\r
-1055},{12,0,230},{13,0,172},{146,0,29},{134,11,570},{132,11,787},{134,11,518},{6\r
-,0,29},{139,0,63},{132,11,516},{136,11,821},{132,0,311},{134,0,1740},{7,0,170},{\r
-8,0,90},{8,0,177},{8,0,415},{11,0,714},{14,0,281},{136,10,735},{134,0,1961},{135\r
-,11,1405},{4,11,10},{7,11,917},{139,11,786},{5,10,132},{9,10,486},{9,10,715},{10\r
-,10,458},{11,10,373},{11,10,668},{11,10,795},{11,10,897},{12,10,272},{12,10,424}\r
-,{12,10,539},{12,10,558},{14,10,245},{14,10,263},{14,10,264},{14,10,393},{142,10\r
-,403},{11,0,91},{13,0,129},{15,0,101},{145,0,125},{135,0,1132},{4,0,494},{6,0,74\r
-},{7,0,44},{7,0,407},{12,0,17},{15,0,5},{148,0,11},{133,10,379},{5,0,270},{5,11,\r
-684},{6,10,89},{6,10,400},{7,10,1569},{7,10,1623},{7,10,1850},{8,10,218},{8,10,\r
-422},{9,10,570},{138,10,626},{4,0,276},{133,0,296},{6,0,1523},{134,11,27},{6,10,\r
-387},{7,10,882},{141,10,111},{6,10,224},{7,10,877},{137,10,647},{135,10,790},{4,\r
-0,7},{5,0,90},{5,0,158},{6,0,542},{7,0,221},{7,0,1574},{9,0,490},{10,0,540},{11,\r
-0,443},{139,0,757},{7,0,588},{9,0,175},{138,0,530},{135,10,394},{142,11,23},{134\r
-,0,786},{135,0,580},{7,0,88},{136,0,627},{5,0,872},{6,0,57},{7,0,471},{9,0,447},\r
-{137,0,454},{6,11,342},{6,11,496},{8,11,275},{137,11,206},{4,11,909},{133,11,940\r
-},{6,0,735},{132,11,891},{8,0,845},{8,0,916},{135,10,1409},{5,0,31},{134,0,614},\r
-{11,0,458},{12,0,15},{140,0,432},{8,0,330},{140,0,477},{4,0,530},{5,0,521},{7,0,\r
-1200},{10,0,460},{132,11,687},{6,0,424},{135,0,1866},{9,0,569},{12,0,12},{12,0,\r
-81},{12,0,319},{13,0,69},{14,0,259},{16,0,87},{17,0,1},{17,0,21},{17,0,24},{18,0\r
-,15},{18,0,56},{18,0,59},{18,0,127},{18,0,154},{19,0,19},{148,0,31},{7,0,1302},{\r
-136,10,38},{134,11,253},{5,10,261},{7,10,78},{7,10,199},{8,10,815},{9,10,126},{\r
-138,10,342},{5,0,595},{135,0,1863},{6,11,41},{141,11,160},{5,0,13},{134,0,142},{\r
-6,0,97},{7,0,116},{8,0,322},{8,0,755},{9,0,548},{10,0,714},{11,0,884},{13,0,324}\r
-,{7,11,1304},{138,11,477},{132,10,628},{134,11,1718},{7,10,266},{136,10,804},{\r
-135,10,208},{7,0,1021},{6,10,79},{135,10,1519},{7,0,1472},{135,0,1554},{6,11,362\r
-},{146,11,51},{7,0,1071},{7,0,1541},{7,0,1767},{7,0,1806},{11,0,162},{11,0,242},\r
-{11,0,452},{12,0,605},{15,0,26},{144,0,44},{136,10,741},{133,11,115},{145,0,115}\r
-,{134,10,376},{6,0,1406},{134,0,1543},{5,11,193},{12,11,178},{13,11,130},{145,11\r
-,84},{135,0,1111},{8,0,1},{9,0,650},{10,0,326},{5,11,705},{137,11,606},{5,0,488}\r
-,{6,0,527},{7,0,489},{7,0,1636},{8,0,121},{8,0,144},{8,0,359},{9,0,193},{9,0,241\r
-},{9,0,336},{9,0,882},{11,0,266},{11,0,372},{11,0,944},{12,0,401},{140,0,641},{\r
-135,11,174},{6,0,267},{7,10,244},{7,10,632},{7,10,1609},{8,10,178},{8,10,638},{\r
-141,10,58},{134,0,1983},{134,0,1155},{134,0,1575},{134,0,1438},{9,0,31},{10,0,\r
-244},{10,0,699},{12,0,149},{141,0,497},{133,0,377},{4,11,122},{5,11,796},{5,11,\r
-952},{6,11,1660},{6,11,1671},{8,11,567},{9,11,687},{9,11,742},{10,11,686},{11,11\r
-,356},{11,11,682},{140,11,281},{145,0,101},{11,11,0},{144,11,78},{5,11,179},{5,\r
-10,791},{7,11,1095},{135,11,1213},{8,11,372},{9,11,122},{138,11,175},{7,10,686},\r
-{8,10,33},{8,10,238},{10,10,616},{11,10,467},{11,10,881},{13,10,217},{13,10,253}\r
-,{142,10,268},{9,0,476},{4,11,66},{7,11,722},{135,11,904},{7,11,352},{137,11,684\r
-},{135,0,2023},{135,0,1836},{132,10,447},{5,0,843},{144,0,35},{137,11,779},{141,\r
-11,35},{4,10,128},{5,10,415},{6,10,462},{7,10,294},{7,10,578},{10,10,710},{139,\r
-10,86},{132,0,554},{133,0,536},{136,10,587},{5,0,207},{9,0,79},{11,0,625},{145,0\r
-,7},{7,0,1371},{6,10,427},{138,10,692},{4,0,424},{4,10,195},{135,10,802},{8,0,\r
-785},{133,11,564},{135,0,336},{4,0,896},{6,0,1777},{134,11,556},{137,11,103},{\r
-134,10,1683},{7,11,544},{8,11,719},{138,11,61},{138,10,472},{4,11,5},{5,11,498},\r
-{136,11,637},{7,0,750},{9,0,223},{11,0,27},{11,0,466},{12,0,624},{14,0,265},{146\r
-,0,61},{12,0,238},{18,0,155},{12,11,238},{146,11,155},{151,10,28},{133,11,927},{\r
-12,0,383},{5,10,3},{8,10,578},{9,10,118},{10,10,705},{141,10,279},{4,11,893},{5,\r
-11,780},{133,11,893},{4,0,603},{133,0,661},{4,0,11},{6,0,128},{7,0,231},{7,0,\r
-1533},{10,0,725},{5,10,229},{5,11,238},{135,11,1350},{8,10,102},{10,10,578},{10,\r
-10,672},{12,10,496},{13,10,408},{14,10,121},{145,10,106},{132,0,476},{134,0,1552\r
-},{134,11,1729},{8,10,115},{8,10,350},{9,10,489},{10,10,128},{11,10,306},{12,10,\r
-373},{14,10,30},{17,10,79},{19,10,80},{150,10,55},{135,0,1807},{4,0,680},{4,11,\r
-60},{7,11,760},{7,11,1800},{8,11,314},{9,11,700},{139,11,487},{4,10,230},{5,10,\r
-702},{148,11,94},{132,11,228},{139,0,435},{9,0,20},{10,0,324},{10,0,807},{139,0,\r
-488},{6,10,1728},{136,11,419},{4,10,484},{18,10,26},{19,10,42},{20,10,43},{21,10\r
-,0},{23,10,27},{152,10,14},{135,0,1431},{133,11,828},{5,0,112},{6,0,103},{6,0,\r
-150},{7,0,1303},{9,0,292},{10,0,481},{20,0,13},{7,11,176},{7,11,178},{7,11,1110}\r
-,{10,11,481},{148,11,13},{138,0,356},{4,11,51},{5,11,39},{6,11,4},{7,11,591},{7,\r
-11,849},{7,11,951},{7,11,1129},{7,11,1613},{7,11,1760},{7,11,1988},{9,11,434},{\r
-10,11,754},{11,11,25},{11,11,37},{139,11,414},{6,0,1963},{134,0,2000},{132,10,\r
-633},{6,0,1244},{133,11,902},{135,11,928},{140,0,18},{138,0,204},{135,11,1173},{\r
-134,0,867},{4,0,708},{8,0,15},{9,0,50},{9,0,386},{11,0,18},{11,0,529},{140,0,228\r
-},{134,11,270},{4,0,563},{7,0,109},{7,0,592},{7,0,637},{7,0,770},{8,0,463},{9,0,\r
-60},{9,0,335},{9,0,904},{10,0,73},{11,0,434},{12,0,585},{13,0,331},{18,0,110},{\r
-148,0,60},{132,0,502},{14,11,359},{19,11,52},{148,11,47},{6,11,377},{7,11,1025},\r
-{9,11,613},{145,11,104},{6,0,347},{10,0,161},{5,10,70},{5,10,622},{6,10,334},{7,\r
-10,1032},{9,10,171},{11,10,26},{11,10,213},{11,10,637},{11,10,707},{12,10,202},{\r
-12,10,380},{13,10,226},{13,10,355},{14,10,222},{145,10,42},{132,11,416},{4,0,33}\r
-,{5,0,102},{6,0,284},{7,0,1079},{7,0,1423},{7,0,1702},{8,0,470},{9,0,554},{9,0,\r
-723},{11,0,333},{142,11,372},{5,11,152},{5,11,197},{7,11,340},{7,11,867},{10,11,\r
-548},{10,11,581},{11,11,6},{12,11,3},{12,11,19},{14,11,110},{142,11,289},{7,0,\r
-246},{135,0,840},{6,0,10},{8,0,571},{9,0,739},{143,0,91},{6,0,465},{7,0,1465},{4\r
-,10,23},{4,10,141},{5,10,313},{5,10,1014},{6,10,50},{7,10,142},{7,10,559},{8,10,\r
-640},{9,10,460},{9,10,783},{11,10,741},{12,10,183},{141,10,488},{133,0,626},{136\r
-,0,614},{138,0,237},{7,11,34},{7,11,190},{8,11,28},{8,11,141},{8,11,444},{8,11,\r
-811},{9,11,468},{11,11,334},{12,11,24},{12,11,386},{140,11,576},{133,11,757},{5,\r
-0,18},{6,0,526},{13,0,24},{13,0,110},{19,0,5},{147,0,44},{6,0,506},{134,11,506},\r
-{135,11,1553},{4,0,309},{5,0,462},{7,0,970},{7,0,1097},{22,0,30},{22,0,33},{7,11\r
-,1385},{11,11,582},{11,11,650},{11,11,901},{11,11,949},{12,11,232},{12,11,236},{\r
-13,11,413},{13,11,501},{146,11,116},{9,0,140},{5,10,222},{138,10,534},{6,0,1056}\r
-,{137,10,906},{134,0,1704},{138,10,503},{134,0,1036},{5,10,154},{7,10,1491},{10,\r
-10,379},{138,10,485},{4,11,383},{133,10,716},{134,0,1315},{5,0,86},{7,0,743},{9,\r
-0,85},{10,0,281},{10,0,432},{11,0,825},{12,0,251},{13,0,118},{142,0,378},{8,0,\r
-264},{4,10,91},{5,10,388},{5,10,845},{6,10,206},{6,10,252},{6,10,365},{7,10,136}\r
-,{7,10,531},{136,10,621},{5,0,524},{133,0,744},{5,11,277},{141,11,247},{132,11,\r
-435},{10,0,107},{140,0,436},{132,0,927},{10,0,123},{12,0,670},{146,0,94},{7,0,\r
-1149},{9,0,156},{138,0,957},{5,11,265},{6,11,212},{135,11,28},{133,0,778},{133,0\r
-,502},{8,0,196},{10,0,283},{139,0,406},{135,10,576},{136,11,535},{134,0,1312},{5\r
-,10,771},{5,10,863},{5,10,898},{6,10,1632},{6,10,1644},{134,10,1780},{5,0,855},{\r
-5,10,331},{135,11,1487},{132,11,702},{5,11,808},{135,11,2045},{7,0,1400},{9,0,\r
-446},{138,0,45},{140,10,632},{132,0,1003},{5,11,166},{8,11,739},{140,11,511},{5,\r
-10,107},{7,10,201},{136,10,518},{6,10,446},{135,10,1817},{134,0,1532},{134,0,\r
-1097},{4,11,119},{5,11,170},{5,11,447},{7,11,1708},{7,11,1889},{9,11,357},{9,11,\r
-719},{12,11,486},{140,11,596},{9,10,851},{141,10,510},{7,0,612},{8,0,545},{8,0,\r
-568},{8,0,642},{9,0,717},{10,0,541},{10,0,763},{11,0,449},{12,0,489},{13,0,153},\r
-{13,0,296},{14,0,138},{14,0,392},{15,0,50},{16,0,6},{16,0,12},{20,0,9},{132,10,\r
-504},{4,11,450},{135,11,1158},{11,0,54},{13,0,173},{13,0,294},{5,10,883},{5,10,\r
-975},{8,10,392},{148,10,7},{13,0,455},{15,0,99},{15,0,129},{144,0,68},{135,0,172\r
-},{132,11,754},{5,10,922},{134,10,1707},{134,0,1029},{17,11,39},{148,11,36},{4,0\r
-,568},{5,10,993},{7,10,515},{137,10,91},{132,0,732},{10,0,617},{138,11,617},{134\r
-,0,974},{7,0,989},{10,0,377},{12,0,363},{13,0,68},{13,0,94},{14,0,108},{142,0,\r
-306},{136,0,733},{132,0,428},{7,0,1789},{135,11,1062},{7,0,2015},{140,0,665},{\r
-135,10,1433},{5,0,287},{7,10,921},{8,10,580},{8,10,593},{8,10,630},{138,10,28},{\r
-138,0,806},{4,10,911},{5,10,867},{5,10,1013},{7,10,2034},{8,10,798},{136,10,813}\r
-,{134,0,1539},{8,11,523},{150,11,34},{135,11,740},{7,11,238},{7,11,2033},{8,11,\r
-120},{8,11,188},{8,11,659},{9,11,598},{10,11,466},{12,11,342},{12,11,588},{13,11\r
-,503},{14,11,246},{143,11,92},{7,0,1563},{141,0,182},{5,10,135},{6,10,519},{7,10\r
-,1722},{10,10,271},{11,10,261},{145,10,54},{14,10,338},{148,10,81},{7,0,484},{4,\r
-10,300},{133,10,436},{145,11,114},{6,0,1623},{134,0,1681},{133,11,640},{4,11,201\r
-},{7,11,1744},{8,11,602},{11,11,247},{11,11,826},{145,11,65},{8,11,164},{146,11,\r
-62},{6,0,1833},{6,0,1861},{136,0,878},{134,0,1569},{8,10,357},{10,10,745},{14,10\r
-,426},{17,10,94},{147,10,57},{12,0,93},{12,0,501},{13,0,362},{14,0,151},{15,0,40\r
-},{15,0,59},{16,0,46},{17,0,25},{18,0,14},{18,0,134},{19,0,25},{19,0,69},{20,0,\r
-16},{20,0,19},{20,0,66},{21,0,23},{21,0,25},{150,0,42},{6,0,1748},{8,0,715},{9,0\r
-,802},{10,0,46},{10,0,819},{13,0,308},{14,0,351},{14,0,363},{146,0,67},{132,0,\r
-994},{4,0,63},{133,0,347},{132,0,591},{133,0,749},{7,11,1577},{10,11,304},{10,11\r
-,549},{11,11,424},{12,11,365},{13,11,220},{13,11,240},{142,11,33},{133,0,366},{7\r
-,0,557},{12,0,547},{14,0,86},{133,10,387},{135,0,1747},{132,11,907},{5,11,100},{\r
-10,11,329},{12,11,416},{149,11,29},{4,10,6},{5,10,708},{136,10,75},{7,10,1351},{\r
-9,10,581},{10,10,639},{11,10,453},{140,10,584},{7,0,89},{132,10,303},{138,10,772\r
-},{132,11,176},{5,11,636},{5,11,998},{8,11,26},{137,11,358},{7,11,9},{7,11,1508}\r
-,{9,11,317},{10,11,210},{10,11,292},{10,11,533},{11,11,555},{12,11,526},{12,11,\r
-607},{13,11,263},{13,11,459},{142,11,271},{134,0,1463},{6,0,772},{6,0,1137},{139\r
-,11,595},{7,0,977},{139,11,66},{138,0,893},{20,0,48},{148,11,48},{5,0,824},{133,\r
-0,941},{134,11,295},{7,0,1543},{7,0,1785},{10,0,690},{4,10,106},{139,10,717},{7,\r
-0,440},{8,0,230},{139,0,106},{5,10,890},{133,10,988},{6,10,626},{142,10,431},{10\r
-,11,127},{141,11,27},{17,0,32},{10,10,706},{150,10,44},{132,0,216},{137,0,332},{\r
-4,10,698},{136,11,119},{139,11,267},{138,10,17},{11,11,526},{11,11,939},{141,11,\r
-290},{7,11,1167},{11,11,934},{13,11,391},{145,11,76},{139,11,39},{134,10,84},{4,\r
-0,914},{5,0,800},{133,0,852},{10,0,416},{141,0,115},{7,0,564},{142,0,168},{4,0,\r
-918},{133,0,876},{134,0,1764},{152,0,3},{4,0,92},{5,0,274},{7,11,126},{136,11,84\r
-},{140,10,498},{136,11,790},{8,0,501},{5,10,986},{6,10,130},{7,10,1582},{8,10,\r
-458},{10,10,101},{10,10,318},{138,10,823},{6,11,64},{12,11,377},{141,11,309},{5,\r
-0,743},{138,0,851},{4,0,49},{7,0,280},{135,0,1633},{134,0,879},{136,0,47},{7,10,\r
-1644},{137,10,129},{132,0,865},{134,0,1202},{9,11,34},{139,11,484},{135,10,997},\r
-{5,0,272},{5,0,908},{5,0,942},{8,0,197},{9,0,47},{11,0,538},{139,0,742},{6,11,\r
-1700},{7,11,26},{7,11,293},{7,11,382},{7,11,1026},{7,11,1087},{7,11,2027},{8,11,\r
-24},{8,11,114},{8,11,252},{8,11,727},{8,11,729},{9,11,30},{9,11,199},{9,11,231},\r
-{9,11,251},{9,11,334},{9,11,361},{9,11,488},{9,11,712},{10,11,55},{10,11,60},{10\r
-,11,232},{10,11,332},{10,11,384},{10,11,396},{10,11,504},{10,11,542},{10,11,652}\r
-,{11,11,20},{11,11,48},{11,11,207},{11,11,291},{11,11,298},{11,11,342},{11,11,\r
-365},{11,11,394},{11,11,620},{11,11,705},{11,11,1017},{12,11,123},{12,11,340},{\r
-12,11,406},{12,11,643},{13,11,61},{13,11,269},{13,11,311},{13,11,319},{13,11,486\r
-},{14,11,234},{15,11,62},{15,11,85},{16,11,71},{18,11,119},{148,11,105},{6,0,\r
-1455},{150,11,37},{135,10,1927},{135,0,1911},{137,0,891},{7,10,1756},{137,10,98}\r
-,{7,10,1046},{139,10,160},{132,0,761},{6,11,379},{7,11,270},{7,11,1116},{8,11,\r
-176},{8,11,183},{9,11,432},{9,11,661},{12,11,247},{12,11,617},{146,11,125},{6,10\r
-,45},{7,10,433},{8,10,129},{9,10,21},{10,10,392},{11,10,79},{12,10,499},{13,10,\r
-199},{141,10,451},{4,0,407},{5,11,792},{133,11,900},{132,0,560},{135,0,183},{13,\r
-0,490},{7,10,558},{136,10,353},{4,0,475},{6,0,731},{11,0,35},{13,0,71},{13,0,177\r
-},{14,0,422},{133,10,785},{8,10,81},{9,10,189},{9,10,201},{11,10,478},{11,10,712\r
-},{141,10,338},{4,0,418},{4,0,819},{133,10,353},{151,10,26},{4,11,901},{133,11,\r
-776},{132,0,575},{7,0,818},{16,0,92},{17,0,14},{17,0,45},{18,0,75},{148,0,18},{6\r
-,0,222},{7,0,636},{7,0,1620},{8,0,409},{9,0,693},{139,0,77},{6,10,25},{7,10,855}\r
-,{7,10,1258},{144,10,32},{6,0,1880},{6,0,1887},{6,0,1918},{6,0,1924},{9,0,967},{\r
-9,0,995},{9,0,1015},{12,0,826},{12,0,849},{12,0,857},{12,0,860},{12,0,886},{12,0\r
-,932},{18,0,228},{18,0,231},{146,0,240},{134,0,633},{134,0,1308},{4,11,37},{5,11\r
-,334},{135,11,1253},{10,0,86},{4,10,4},{7,10,1118},{7,10,1320},{7,10,1706},{8,10\r
-,277},{9,10,622},{11,10,724},{12,10,350},{12,10,397},{13,10,28},{13,10,159},{15,\r
-10,89},{18,10,5},{19,10,9},{20,10,34},{150,10,47},{132,11,508},{137,11,448},{12,\r
-11,107},{146,11,31},{132,0,817},{134,0,663},{133,0,882},{134,0,914},{132,11,540}\r
-,{132,11,533},{136,11,608},{8,0,885},{138,0,865},{132,0,426},{6,0,58},{7,0,745},\r
-{7,0,1969},{8,0,399},{8,0,675},{9,0,479},{9,0,731},{10,0,330},{10,0,593},{10,0,\r
-817},{11,0,32},{11,0,133},{11,0,221},{145,0,68},{134,10,255},{7,0,102},{137,0,\r
-538},{137,10,216},{7,11,253},{136,11,549},{135,11,912},{9,10,183},{139,10,286},{\r
-11,10,956},{151,10,3},{8,11,527},{18,11,60},{147,11,24},{4,10,536},{7,10,1141},{\r
-10,10,723},{139,10,371},{133,11,920},{7,0,876},{135,10,285},{135,10,560},{132,10\r
-,690},{142,11,126},{11,10,33},{12,10,571},{149,10,1},{133,0,566},{9,0,139},{10,0\r
-,399},{11,0,469},{12,0,634},{13,0,223},{132,11,483},{6,0,48},{135,0,63},{18,0,12\r
-},{7,10,1862},{12,10,491},{12,10,520},{13,10,383},{142,10,244},{135,11,1665},{\r
-132,11,448},{9,11,495},{146,11,104},{6,0,114},{7,0,1224},{7,0,1556},{136,0,3},{4\r
-,10,190},{133,10,554},{8,0,576},{9,0,267},{133,10,1001},{133,10,446},{133,0,933}\r
-,{139,11,1009},{8,11,653},{13,11,93},{147,11,14},{6,0,692},{6,0,821},{134,0,1077\r
-},{5,11,172},{135,11,801},{138,0,752},{4,0,375},{134,0,638},{134,0,1011},{140,11\r
-,540},{9,0,96},{133,11,260},{139,11,587},{135,10,1231},{12,0,30},{13,0,148},{14,\r
-0,87},{14,0,182},{16,0,42},{20,0,70},{132,10,304},{6,0,1398},{7,0,56},{7,0,1989}\r
-,{8,0,337},{8,0,738},{9,0,600},{12,0,37},{13,0,447},{142,0,92},{138,0,666},{5,0,\r
-394},{7,0,487},{136,0,246},{9,0,437},{6,10,53},{6,10,199},{7,10,1408},{8,10,32},\r
-{8,10,93},{10,10,397},{10,10,629},{11,10,593},{11,10,763},{13,10,326},{145,10,35\r
-},{134,10,105},{9,0,320},{10,0,506},{138,10,794},{7,11,57},{8,11,167},{8,11,375}\r
-,{9,11,82},{9,11,561},{10,11,620},{10,11,770},{11,10,704},{141,10,396},{6,0,1003\r
-},{5,10,114},{5,10,255},{141,10,285},{7,0,866},{135,0,1163},{133,11,531},{132,0,\r
-328},{7,10,2035},{8,10,19},{9,10,89},{138,10,831},{8,11,194},{136,11,756},{136,0\r
-,1000},{5,11,453},{134,11,441},{4,0,101},{5,0,833},{7,0,1171},{136,0,744},{133,0\r
-,726},{136,10,746},{138,0,176},{6,0,9},{6,0,397},{7,0,53},{7,0,1742},{10,0,632},\r
-{11,0,828},{140,0,146},{135,11,22},{145,11,64},{132,0,839},{11,0,417},{12,0,223}\r
-,{140,0,265},{4,11,102},{7,11,815},{7,11,1699},{139,11,964},{5,10,955},{136,10,\r
-814},{6,0,1931},{6,0,2007},{18,0,246},{146,0,247},{8,0,198},{11,0,29},{140,0,534\r
-},{135,0,1771},{6,0,846},{7,11,1010},{11,11,733},{11,11,759},{12,11,563},{13,11,\r
-34},{14,11,101},{18,11,45},{146,11,129},{4,0,186},{5,0,157},{8,0,168},{138,0,6},\r
-{132,11,899},{133,10,56},{148,10,100},{133,0,875},{5,0,773},{5,0,991},{6,0,1635}\r
-,{134,0,1788},{6,0,1274},{9,0,477},{141,0,78},{4,0,639},{7,0,111},{8,0,581},{12,\r
-0,177},{6,11,52},{9,11,104},{9,11,559},{10,10,4},{10,10,13},{11,10,638},{12,11,\r
-308},{19,11,87},{148,10,57},{132,11,604},{4,11,301},{133,10,738},{133,10,758},{\r
-134,0,1747},{7,11,1440},{11,11,854},{11,11,872},{11,11,921},{12,11,551},{13,11,\r
-472},{142,11,367},{7,0,1364},{7,0,1907},{141,0,158},{134,0,873},{4,0,404},{4,0,\r
-659},{7,0,552},{135,0,675},{135,10,1112},{139,10,328},{7,11,508},{137,10,133},{\r
-133,0,391},{5,10,110},{6,10,169},{6,10,1702},{7,10,400},{8,10,538},{9,10,184},{9\r
-,10,524},{140,10,218},{6,11,310},{7,11,1849},{8,11,72},{8,11,272},{8,11,431},{9,\r
-11,12},{9,11,351},{10,11,563},{10,11,630},{10,11,810},{11,11,367},{11,11,599},{\r
-11,11,686},{140,11,672},{5,0,540},{6,0,1697},{136,0,668},{132,0,883},{134,0,78},\r
-{12,0,628},{18,0,79},{6,10,133},{9,10,353},{139,10,993},{6,11,181},{7,11,537},{8\r
-,11,64},{9,11,127},{10,11,496},{12,11,510},{141,11,384},{6,10,93},{7,10,1422},{7\r
-,10,1851},{8,10,673},{9,10,529},{140,10,43},{137,10,371},{134,0,1460},{134,0,962\r
-},{4,11,244},{135,11,233},{9,10,25},{10,10,467},{138,10,559},{4,10,335},{135,10,\r
-942},{133,0,460},{135,11,334},{134,11,1650},{4,0,199},{139,0,34},{5,10,601},{8,\r
-10,39},{10,10,773},{11,10,84},{12,10,205},{142,10,1},{133,10,870},{134,0,388},{\r
-14,0,474},{148,0,120},{133,11,369},{139,0,271},{4,0,511},{9,0,333},{9,0,379},{10\r
-,0,602},{11,0,441},{11,0,723},{11,0,976},{12,0,357},{132,10,181},{134,0,608},{\r
-134,10,1652},{22,0,49},{137,11,338},{140,0,988},{134,0,617},{5,0,938},{136,0,707\r
-},{132,10,97},{5,10,147},{6,10,286},{7,10,1362},{141,10,176},{6,0,756},{134,0,\r
-1149},{133,11,896},{6,10,375},{7,10,169},{7,10,254},{136,10,780},{134,0,1583},{\r
-135,10,1447},{139,0,285},{7,11,1117},{8,11,393},{136,11,539},{135,0,344},{6,0,\r
-469},{7,0,1709},{138,0,515},{5,10,629},{135,10,1549},{5,11,4},{5,11,810},{6,11,\r
-13},{6,11,538},{6,11,1690},{6,11,1726},{7,11,499},{7,11,1819},{8,11,148},{8,11,\r
-696},{8,11,791},{12,11,125},{13,11,54},{143,11,9},{135,11,1268},{137,0,404},{132\r
-,0,500},{5,0,68},{134,0,383},{11,0,216},{139,0,340},{4,11,925},{5,11,803},{8,11,\r
-698},{138,11,828},{4,0,337},{6,0,353},{7,0,1934},{8,0,488},{137,0,429},{7,0,236}\r
-,{7,0,1795},{8,0,259},{9,0,135},{9,0,177},{9,0,860},{10,0,825},{11,0,115},{11,0,\r
-370},{11,0,405},{11,0,604},{12,0,10},{12,0,667},{12,0,669},{13,0,76},{14,0,310},\r
-{15,0,76},{15,0,147},{148,0,23},{4,0,15},{4,0,490},{5,0,22},{6,0,244},{7,0,40},{\r
-7,0,200},{7,0,906},{7,0,1199},{9,0,616},{10,0,716},{11,0,635},{11,0,801},{140,0,\r
-458},{12,0,756},{132,10,420},{134,0,1504},{6,0,757},{133,11,383},{6,0,1266},{135\r
-,0,1735},{5,0,598},{7,0,791},{8,0,108},{9,0,123},{7,10,1570},{140,10,542},{142,\r
-11,410},{9,11,660},{138,11,347}\r
-};\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_STATIC_DICT_LUT_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/utf8_util.c b/BaseTools/Source/C/BrotliCompress/enc/utf8_util.c
deleted file mode 100644 (file)
index 9d21aa9..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Heuristics for deciding about the UTF8-ness of strings. */\r
-\r
-#include "./utf8_util.h"\r
-\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static size_t BrotliParseAsUTF8(\r
-    int* symbol, const uint8_t* input, size_t size) {\r
-  /* ASCII */\r
-  if ((input[0] & 0x80) == 0) {\r
-    *symbol = input[0];\r
-    if (*symbol > 0) {\r
-      return 1;\r
-    }\r
-  }\r
-  /* 2-byte UTF8 */\r
-  if (size > 1u &&\r
-      (input[0] & 0xE0) == 0xC0 &&\r
-      (input[1] & 0xC0) == 0x80) {\r
-    *symbol = (((input[0] & 0x1F) << 6) |\r
-               (input[1] & 0x3F));\r
-    if (*symbol > 0x7F) {\r
-      return 2;\r
-    }\r
-  }\r
-  /* 3-byte UFT8 */\r
-  if (size > 2u &&\r
-      (input[0] & 0xF0) == 0xE0 &&\r
-      (input[1] & 0xC0) == 0x80 &&\r
-      (input[2] & 0xC0) == 0x80) {\r
-    *symbol = (((input[0] & 0x0F) << 12) |\r
-               ((input[1] & 0x3F) << 6) |\r
-               (input[2] & 0x3F));\r
-    if (*symbol > 0x7FF) {\r
-      return 3;\r
-    }\r
-  }\r
-  /* 4-byte UFT8 */\r
-  if (size > 3u &&\r
-      (input[0] & 0xF8) == 0xF0 &&\r
-      (input[1] & 0xC0) == 0x80 &&\r
-      (input[2] & 0xC0) == 0x80 &&\r
-      (input[3] & 0xC0) == 0x80) {\r
-    *symbol = (((input[0] & 0x07) << 18) |\r
-               ((input[1] & 0x3F) << 12) |\r
-               ((input[2] & 0x3F) << 6) |\r
-               (input[3] & 0x3F));\r
-    if (*symbol > 0xFFFF && *symbol <= 0x10FFFF) {\r
-      return 4;\r
-    }\r
-  }\r
-  /* Not UTF8, emit a special symbol above the UTF8-code space */\r
-  *symbol = 0x110000 | input[0];\r
-  return 1;\r
-}\r
-\r
-/* Returns 1 if at least min_fraction of the data is UTF8-encoded.*/\r
-BROTLI_BOOL BrotliIsMostlyUTF8(\r
-    const uint8_t* data, const size_t pos, const size_t mask,\r
-    const size_t length, const double min_fraction) {\r
-  size_t size_utf8 = 0;\r
-  size_t i = 0;\r
-  while (i < length) {\r
-    int symbol;\r
-    size_t bytes_read =\r
-        BrotliParseAsUTF8(&symbol, &data[(pos + i) & mask], length - i);\r
-    i += bytes_read;\r
-    if (symbol < 0x110000) size_utf8 += bytes_read;\r
-  }\r
-  return TO_BROTLI_BOOL(size_utf8 > min_fraction * (double)length);\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/utf8_util.h b/BaseTools/Source/C/BrotliCompress/enc/utf8_util.h
deleted file mode 100644 (file)
index 8d1cf55..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Heuristics for deciding about the UTF8-ness of strings. */\r
-\r
-#ifndef BROTLI_ENC_UTF8_UTIL_H_\r
-#define BROTLI_ENC_UTF8_UTIL_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-static const double kMinUTF8Ratio = 0.75;\r
-\r
-/* Returns 1 if at least min_fraction of the bytes between pos and\r
-   pos + length in the (data, mask) ring-buffer is UTF8-encoded, otherwise\r
-   returns 0. */\r
-BROTLI_INTERNAL BROTLI_BOOL BrotliIsMostlyUTF8(\r
-    const uint8_t* data, const size_t pos, const size_t mask,\r
-    const size_t length, const double min_fraction);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_UTF8_UTIL_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/enc/write_bits.h b/BaseTools/Source/C/BrotliCompress/enc/write_bits.h
deleted file mode 100644 (file)
index 1269b28..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Copyright 2010 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Write bits into a byte array. */\r
-\r
-#ifndef BROTLI_ENC_WRITE_BITS_H_\r
-#define BROTLI_ENC_WRITE_BITS_H_\r
-\r
-#include "../common/platform.h"\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/*#define BIT_WRITER_DEBUG */\r
-\r
-/* This function writes bits into bytes in increasing addresses, and within\r
-   a byte least-significant-bit first.\r
-\r
-   The function can write up to 56 bits in one go with WriteBits\r
-   Example: let's assume that 3 bits (Rs below) have been written already:\r
-\r
-   BYTE-0     BYTE+1       BYTE+2\r
-\r
-   0000 0RRR    0000 0000    0000 0000\r
-\r
-   Now, we could write 5 or less bits in MSB by just sifting by 3\r
-   and OR'ing to BYTE-0.\r
-\r
-   For n bits, we take the last 5 bits, OR that with high bits in BYTE-0,\r
-   and locate the rest in BYTE+1, BYTE+2, etc. */\r
-static BROTLI_INLINE void BrotliWriteBits(size_t n_bits,\r
-                                          uint64_t bits,\r
-                                          size_t* BROTLI_RESTRICT pos,\r
-                                          uint8_t* BROTLI_RESTRICT array) {\r
-#if defined(BROTLI_LITTLE_ENDIAN)\r
-  /* This branch of the code can write up to 56 bits at a time,\r
-     7 bits are lost by being perhaps already in *p and at least\r
-     1 bit is needed to initialize the bit-stream ahead (i.e. if 7\r
-     bits are in *p and we write 57 bits, then the next write will\r
-     access a byte that was never initialized). */\r
-  uint8_t* p = &array[*pos >> 3];\r
-  uint64_t v = (uint64_t)(*p);  /* Zero-extend 8 to 64 bits. */\r
-  BROTLI_LOG(("WriteBits  %2d  0x%08x%08x  %10d\n", (int)n_bits,\r
-      (uint32_t)(bits >> 32), (uint32_t)(bits & 0xFFFFFFFF),\r
-      (int)*pos));\r
-  BROTLI_DCHECK((bits >> n_bits) == 0);\r
-  BROTLI_DCHECK(n_bits <= 56);\r
-  v |= bits << (*pos & 7);\r
-  BROTLI_UNALIGNED_STORE64LE(p, v);  /* Set some bits. */\r
-  *pos += n_bits;\r
-#else\r
-  /* implicit & 0xFF is assumed for uint8_t arithmetics */\r
-  uint8_t* array_pos = &array[*pos >> 3];\r
-  const size_t bits_reserved_in_first_byte = (*pos & 7);\r
-  size_t bits_left_to_write;\r
-  bits <<= bits_reserved_in_first_byte;\r
-  *array_pos++ |= (uint8_t)bits;\r
-  for (bits_left_to_write = n_bits + bits_reserved_in_first_byte;\r
-       bits_left_to_write >= 9;\r
-       bits_left_to_write -= 8) {\r
-    bits >>= 8;\r
-    *array_pos++ = (uint8_t)bits;\r
-  }\r
-  *array_pos = 0;\r
-  *pos += n_bits;\r
-#endif\r
-}\r
-\r
-static BROTLI_INLINE void BrotliWriteBitsPrepareStorage(\r
-    size_t pos, uint8_t* array) {\r
-  BROTLI_LOG(("WriteBitsPrepareStorage            %10d\n", (int)pos));\r
-  BROTLI_DCHECK((pos & 7) == 0);\r
-  array[pos >> 3] = 0;\r
-}\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_WRITE_BITS_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/include/brotli/decode.h b/BaseTools/Source/C/BrotliCompress/include/brotli/decode.h
deleted file mode 100644 (file)
index 2cd1725..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/**\r
- * @file\r
- * API for Brotli decompression.\r
- */\r
-\r
-#ifndef BROTLI_DEC_DECODE_H_\r
-#define BROTLI_DEC_DECODE_H_\r
-\r
-#include <brotli/port.h>\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/**\r
- * Opaque structure that holds decoder state.\r
- *\r
- * Allocated and initialized with ::BrotliDecoderCreateInstance.\r
- * Cleaned up and deallocated with ::BrotliDecoderDestroyInstance.\r
- */\r
-typedef struct BrotliDecoderStateStruct BrotliDecoderState;\r
-\r
-/**\r
- * Result type for ::BrotliDecoderDecompress and\r
- * ::BrotliDecoderDecompressStream functions.\r
- */\r
-typedef enum {\r
-  /** Decoding error, e.g. corrupted input or memory allocation problem. */\r
-  BROTLI_DECODER_RESULT_ERROR = 0,\r
-  /** Decoding successfully completed. */\r
-  BROTLI_DECODER_RESULT_SUCCESS = 1,\r
-  /** Partially done; should be called again with more input. */\r
-  BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT = 2,\r
-  /** Partially done; should be called again with more output. */\r
-  BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT = 3\r
-} BrotliDecoderResult;\r
-\r
-/**\r
- * Template that evaluates items of ::BrotliDecoderErrorCode.\r
- *\r
- * Example: @code {.cpp}\r
- * // Log Brotli error code.\r
- * switch (brotliDecoderErrorCode) {\r
- * #define CASE_(PREFIX, NAME, CODE) \\r
- *   case BROTLI_DECODER ## PREFIX ## NAME: \\r
- *     LOG(INFO) << "error code:" << #NAME; \\r
- *     break;\r
- * #define NEWLINE_\r
- * BROTLI_DECODER_ERROR_CODES_LIST(CASE_, NEWLINE_)\r
- * #undef CASE_\r
- * #undef NEWLINE_\r
- *   default: LOG(FATAL) << "unknown brotli error code";\r
- * }\r
- * @endcode\r
- */\r
-#define BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE, SEPARATOR)      \\r
-  BROTLI_ERROR_CODE(_, NO_ERROR, 0) SEPARATOR                              \\r
-  /* Same as BrotliDecoderResult values */                                 \\r
-  BROTLI_ERROR_CODE(_, SUCCESS, 1) SEPARATOR                               \\r
-  BROTLI_ERROR_CODE(_, NEEDS_MORE_INPUT, 2) SEPARATOR                      \\r
-  BROTLI_ERROR_CODE(_, NEEDS_MORE_OUTPUT, 3) SEPARATOR                     \\r
-                                                                           \\r
-  /* Errors caused by invalid input */                                     \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, EXUBERANT_NIBBLE, -1) SEPARATOR        \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, RESERVED, -2) SEPARATOR                \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, EXUBERANT_META_NIBBLE, -3) SEPARATOR   \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, SIMPLE_HUFFMAN_ALPHABET, -4) SEPARATOR \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, SIMPLE_HUFFMAN_SAME, -5) SEPARATOR     \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, CL_SPACE, -6) SEPARATOR                \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, HUFFMAN_SPACE, -7) SEPARATOR           \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, CONTEXT_MAP_REPEAT, -8) SEPARATOR      \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, BLOCK_LENGTH_1, -9) SEPARATOR          \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, BLOCK_LENGTH_2, -10) SEPARATOR         \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, TRANSFORM, -11) SEPARATOR              \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, DICTIONARY, -12) SEPARATOR             \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, WINDOW_BITS, -13) SEPARATOR            \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_1, -14) SEPARATOR              \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_2, -15) SEPARATOR              \\r
-  BROTLI_ERROR_CODE(_ERROR_FORMAT_, DISTANCE, -16) SEPARATOR               \\r
-                                                                           \\r
-  /* -17..-18 codes are reserved */                                        \\r
-                                                                           \\r
-  BROTLI_ERROR_CODE(_ERROR_, DICTIONARY_NOT_SET, -19) SEPARATOR            \\r
-  BROTLI_ERROR_CODE(_ERROR_, INVALID_ARGUMENTS, -20) SEPARATOR             \\r
-                                                                           \\r
-  /* Memory allocation problems */                                         \\r
-  BROTLI_ERROR_CODE(_ERROR_ALLOC_, CONTEXT_MODES, -21) SEPARATOR           \\r
-  /* Literal, insert and distance trees together */                        \\r
-  BROTLI_ERROR_CODE(_ERROR_ALLOC_, TREE_GROUPS, -22) SEPARATOR             \\r
-  /* -23..-24 codes are reserved for distinct tree groups */               \\r
-  BROTLI_ERROR_CODE(_ERROR_ALLOC_, CONTEXT_MAP, -25) SEPARATOR             \\r
-  BROTLI_ERROR_CODE(_ERROR_ALLOC_, RING_BUFFER_1, -26) SEPARATOR           \\r
-  BROTLI_ERROR_CODE(_ERROR_ALLOC_, RING_BUFFER_2, -27) SEPARATOR           \\r
-  /* -28..-29 codes are reserved for dynamic ring-buffer allocation */     \\r
-  BROTLI_ERROR_CODE(_ERROR_ALLOC_, BLOCK_TYPE_TREES, -30) SEPARATOR        \\r
-                                                                           \\r
-  /* "Impossible" states */                                                \\r
-  BROTLI_ERROR_CODE(_ERROR_, UNREACHABLE, -31)\r
-\r
-/**\r
- * Error code for detailed logging / production debugging.\r
- *\r
- * See ::BrotliDecoderGetErrorCode and ::BROTLI_LAST_ERROR_CODE.\r
- */\r
-typedef enum {\r
-#define BROTLI_COMMA_ ,\r
-#define BROTLI_ERROR_CODE_ENUM_ITEM_(PREFIX, NAME, CODE) \\r
-    BROTLI_DECODER ## PREFIX ## NAME = CODE\r
-  BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE_ENUM_ITEM_, BROTLI_COMMA_)\r
-} BrotliDecoderErrorCode;\r
-#undef BROTLI_ERROR_CODE_ENUM_ITEM_\r
-#undef BROTLI_COMMA_\r
-\r
-/**\r
- * The value of the last error code, negative integer.\r
- *\r
- * All other error code values are in the range from ::BROTLI_LAST_ERROR_CODE\r
- * to @c -1. There are also 4 other possible non-error codes @c 0 .. @c 3 in\r
- * ::BrotliDecoderErrorCode enumeration.\r
- */\r
-#define BROTLI_LAST_ERROR_CODE BROTLI_DECODER_ERROR_UNREACHABLE\r
-\r
-/** Options to be used with ::BrotliDecoderSetParameter. */\r
-typedef enum BrotliDecoderParameter {\r
-  /**\r
-   * Disable "canny" ring buffer allocation strategy.\r
-   *\r
-   * Ring buffer is allocated according to window size, despite the real size of\r
-   * the content.\r
-   */\r
-  BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION = 0,\r
-  /**\r
-   * Flag that determines if "Large Window Brotli" is used.\r
-   */\r
-  BROTLI_DECODER_PARAM_LARGE_WINDOW = 1\r
-} BrotliDecoderParameter;\r
-\r
-/**\r
- * Sets the specified parameter to the given decoder instance.\r
- *\r
- * @param state decoder instance\r
- * @param param parameter to set\r
- * @param value new parameter value\r
- * @returns ::BROTLI_FALSE if parameter is unrecognized, or value is invalid\r
- * @returns ::BROTLI_TRUE if value is accepted\r
- */\r
-BROTLI_DEC_API BROTLI_BOOL BrotliDecoderSetParameter(\r
-    BrotliDecoderState* state, BrotliDecoderParameter param, uint32_t value);\r
-\r
-/**\r
- * Creates an instance of ::BrotliDecoderState and initializes it.\r
- *\r
- * The instance can be used once for decoding and should then be destroyed with\r
- * ::BrotliDecoderDestroyInstance, it cannot be reused for a new decoding\r
- * session.\r
- *\r
- * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the\r
- * case they are both zero, default memory allocators are used. @p opaque is\r
- * passed to @p alloc_func and @p free_func when they are called. @p free_func\r
- * has to return without doing anything when asked to free a NULL pointer.\r
- *\r
- * @param alloc_func custom memory allocation function\r
- * @param free_func custom memory free function\r
- * @param opaque custom memory manager handle\r
- * @returns @c 0 if instance can not be allocated or initialized\r
- * @returns pointer to initialized ::BrotliDecoderState otherwise\r
- */\r
-BROTLI_DEC_API BrotliDecoderState* BrotliDecoderCreateInstance(\r
-    brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);\r
-\r
-/**\r
- * Deinitializes and frees ::BrotliDecoderState instance.\r
- *\r
- * @param state decoder instance to be cleaned up and deallocated\r
- */\r
-BROTLI_DEC_API void BrotliDecoderDestroyInstance(BrotliDecoderState* state);\r
-\r
-/**\r
- * Performs one-shot memory-to-memory decompression.\r
- *\r
- * Decompresses the data in @p encoded_buffer into @p decoded_buffer, and sets\r
- * @p *decoded_size to the decompressed length.\r
- *\r
- * @param encoded_size size of @p encoded_buffer\r
- * @param encoded_buffer compressed data buffer with at least @p encoded_size\r
- *        addressable bytes\r
- * @param[in, out] decoded_size @b in: size of @p decoded_buffer; \n\r
- *                 @b out: length of decompressed data written to\r
- *                 @p decoded_buffer\r
- * @param decoded_buffer decompressed data destination buffer\r
- * @returns ::BROTLI_DECODER_RESULT_ERROR if input is corrupted, memory\r
- *          allocation failed, or @p decoded_buffer is not large enough;\r
- * @returns ::BROTLI_DECODER_RESULT_SUCCESS otherwise\r
- */\r
-BROTLI_DEC_API BrotliDecoderResult BrotliDecoderDecompress(\r
-    size_t encoded_size,\r
-    const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],\r
-    size_t* decoded_size,\r
-    uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);\r
-\r
-/**\r
- * Decompresses the input stream to the output stream.\r
- *\r
- * The values @p *available_in and @p *available_out must specify the number of\r
- * bytes addressable at @p *next_in and @p *next_out respectively.\r
- * When @p *available_out is @c 0, @p next_out is allowed to be @c NULL.\r
- *\r
- * After each call, @p *available_in will be decremented by the amount of input\r
- * bytes consumed, and the @p *next_in pointer will be incremented by that\r
- * amount. Similarly, @p *available_out will be decremented by the amount of\r
- * output bytes written, and the @p *next_out pointer will be incremented by\r
- * that amount.\r
- *\r
- * @p total_out, if it is not a null-pointer, will be set to the number\r
- * of bytes decompressed since the last @p state initialization.\r
- *\r
- * @note Input is never overconsumed, so @p next_in and @p available_in could be\r
- * passed to the next consumer after decoding is complete.\r
- *\r
- * @param state decoder instance\r
- * @param[in, out] available_in @b in: amount of available input; \n\r
- *                 @b out: amount of unused input\r
- * @param[in, out] next_in pointer to the next compressed byte\r
- * @param[in, out] available_out @b in: length of output buffer; \n\r
- *                 @b out: remaining size of output buffer\r
- * @param[in, out] next_out output buffer cursor;\r
- *                 can be @c NULL if @p available_out is @c 0\r
- * @param[out] total_out number of bytes decompressed so far; can be @c NULL\r
- * @returns ::BROTLI_DECODER_RESULT_ERROR if input is corrupted, memory\r
- *          allocation failed, arguments were invalid, etc.;\r
- *          use ::BrotliDecoderGetErrorCode to get detailed error code\r
- * @returns ::BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT decoding is blocked until\r
- *          more input data is provided\r
- * @returns ::BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT decoding is blocked until\r
- *          more output space is provided\r
- * @returns ::BROTLI_DECODER_RESULT_SUCCESS decoding is finished, no more\r
- *          input might be consumed and no more output will be produced\r
- */\r
-BROTLI_DEC_API BrotliDecoderResult BrotliDecoderDecompressStream(\r
-  BrotliDecoderState* state, size_t* available_in, const uint8_t** next_in,\r
-  size_t* available_out, uint8_t** next_out, size_t* total_out);\r
-\r
-/**\r
- * Checks if decoder has more output.\r
- *\r
- * @param state decoder instance\r
- * @returns ::BROTLI_TRUE, if decoder has some unconsumed output\r
- * @returns ::BROTLI_FALSE otherwise\r
- */\r
-BROTLI_DEC_API BROTLI_BOOL BrotliDecoderHasMoreOutput(\r
-    const BrotliDecoderState* state);\r
-\r
-/**\r
- * Acquires pointer to internal output buffer.\r
- *\r
- * This method is used to make language bindings easier and more efficient:\r
- *  -# push data to ::BrotliDecoderDecompressStream,\r
- *     until ::BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT is reported\r
- *  -# use ::BrotliDecoderTakeOutput to peek bytes and copy to language-specific\r
- *     entity\r
- *\r
- * Also this could be useful if there is an output stream that is able to\r
- * consume all the provided data (e.g. when data is saved to file system).\r
- *\r
- * @attention After every call to ::BrotliDecoderTakeOutput @p *size bytes of\r
- *            output are considered consumed for all consecutive calls to the\r
- *            instance methods; returned pointer becomes invalidated as well.\r
- *\r
- * @note Decoder output is not guaranteed to be contiguous. This means that\r
- *       after the size-unrestricted call to ::BrotliDecoderTakeOutput,\r
- *       immediate next call to ::BrotliDecoderTakeOutput may return more data.\r
- *\r
- * @param state decoder instance\r
- * @param[in, out] size @b in: number of bytes caller is ready to take, @c 0 if\r
- *                 any amount could be handled; \n\r
- *                 @b out: amount of data pointed by returned pointer and\r
- *                 considered consumed; \n\r
- *                 out value is never greater than in value, unless it is @c 0\r
- * @returns pointer to output data\r
- */\r
-BROTLI_DEC_API const uint8_t* BrotliDecoderTakeOutput(\r
-    BrotliDecoderState* state, size_t* size);\r
-\r
-/**\r
- * Checks if instance has already consumed input.\r
- *\r
- * Instance that returns ::BROTLI_FALSE is considered "fresh" and could be\r
- * reused.\r
- *\r
- * @param state decoder instance\r
- * @returns ::BROTLI_TRUE if decoder has already used some input bytes\r
- * @returns ::BROTLI_FALSE otherwise\r
- */\r
-BROTLI_DEC_API BROTLI_BOOL BrotliDecoderIsUsed(const BrotliDecoderState* state);\r
-\r
-/**\r
- * Checks if decoder instance reached the final state.\r
- *\r
- * @param state decoder instance\r
- * @returns ::BROTLI_TRUE if decoder is in a state where it reached the end of\r
- *          the input and produced all of the output\r
- * @returns ::BROTLI_FALSE otherwise\r
- */\r
-BROTLI_DEC_API BROTLI_BOOL BrotliDecoderIsFinished(\r
-    const BrotliDecoderState* state);\r
-\r
-/**\r
- * Acquires a detailed error code.\r
- *\r
- * Should be used only after ::BrotliDecoderDecompressStream returns\r
- * ::BROTLI_DECODER_RESULT_ERROR.\r
- *\r
- * See also ::BrotliDecoderErrorString\r
- *\r
- * @param state decoder instance\r
- * @returns last saved error code\r
- */\r
-BROTLI_DEC_API BrotliDecoderErrorCode BrotliDecoderGetErrorCode(\r
-    const BrotliDecoderState* state);\r
-\r
-/**\r
- * Converts error code to a c-string.\r
- */\r
-BROTLI_DEC_API const char* BrotliDecoderErrorString(BrotliDecoderErrorCode c);\r
-\r
-/**\r
- * Gets a decoder library version.\r
- *\r
- * Look at BROTLI_VERSION for more information.\r
- */\r
-BROTLI_DEC_API uint32_t BrotliDecoderVersion(void);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-} /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_DEC_DECODE_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/include/brotli/encode.h b/BaseTools/Source/C/BrotliCompress/include/brotli/encode.h
deleted file mode 100644 (file)
index b26fa42..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/**\r
- * @file\r
- * API for Brotli compression.\r
- */\r
-\r
-#ifndef BROTLI_ENC_ENCODE_H_\r
-#define BROTLI_ENC_ENCODE_H_\r
-\r
-#include <brotli/port.h>\r
-#include <brotli/types.h>\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-extern "C" {\r
-#endif\r
-\r
-/** Minimal value for ::BROTLI_PARAM_LGWIN parameter. */\r
-#define BROTLI_MIN_WINDOW_BITS 10\r
-/**\r
- * Maximal value for ::BROTLI_PARAM_LGWIN parameter.\r
- *\r
- * @note equal to @c BROTLI_MAX_DISTANCE_BITS constant.\r
- */\r
-#define BROTLI_MAX_WINDOW_BITS 24\r
-/**\r
- * Maximal value for ::BROTLI_PARAM_LGWIN parameter\r
- * in "Large Window Brotli" (32-bit).\r
- */\r
-#define BROTLI_LARGE_MAX_WINDOW_BITS 30\r
-/** Minimal value for ::BROTLI_PARAM_LGBLOCK parameter. */\r
-#define BROTLI_MIN_INPUT_BLOCK_BITS 16\r
-/** Maximal value for ::BROTLI_PARAM_LGBLOCK parameter. */\r
-#define BROTLI_MAX_INPUT_BLOCK_BITS 24\r
-/** Minimal value for ::BROTLI_PARAM_QUALITY parameter. */\r
-#define BROTLI_MIN_QUALITY 0\r
-/** Maximal value for ::BROTLI_PARAM_QUALITY parameter. */\r
-#define BROTLI_MAX_QUALITY 11\r
-\r
-/** Options for ::BROTLI_PARAM_MODE parameter. */\r
-typedef enum BrotliEncoderMode {\r
-  /**\r
-   * Default compression mode.\r
-   *\r
-   * In this mode compressor does not know anything in advance about the\r
-   * properties of the input.\r
-   */\r
-  BROTLI_MODE_GENERIC = 0,\r
-  /** Compression mode for UTF-8 formatted text input. */\r
-  BROTLI_MODE_TEXT = 1,\r
-  /** Compression mode used in WOFF 2.0. */\r
-  BROTLI_MODE_FONT = 2\r
-} BrotliEncoderMode;\r
-\r
-/** Default value for ::BROTLI_PARAM_QUALITY parameter. */\r
-#define BROTLI_DEFAULT_QUALITY 11\r
-/** Default value for ::BROTLI_PARAM_LGWIN parameter. */\r
-#define BROTLI_DEFAULT_WINDOW 22\r
-/** Default value for ::BROTLI_PARAM_MODE parameter. */\r
-#define BROTLI_DEFAULT_MODE BROTLI_MODE_GENERIC\r
-\r
-/** Operations that can be performed by streaming encoder. */\r
-typedef enum BrotliEncoderOperation {\r
-  /**\r
-   * Process input.\r
-   *\r
-   * Encoder may postpone producing output, until it has processed enough input.\r
-   */\r
-  BROTLI_OPERATION_PROCESS = 0,\r
-  /**\r
-   * Produce output for all processed input.\r
-   *\r
-   * Actual flush is performed when input stream is depleted and there is enough\r
-   * space in output stream. This means that client should repeat\r
-   * ::BROTLI_OPERATION_FLUSH operation until @p available_in becomes @c 0, and\r
-   * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. If output is acquired\r
-   * via ::BrotliEncoderTakeOutput, then operation should be repeated after\r
-   * output buffer is drained.\r
-   *\r
-   * @warning Until flush is complete, client @b SHOULD @b NOT swap,\r
-   *          reduce or extend input stream.\r
-   *\r
-   * When flush is complete, output data will be sufficient for decoder to\r
-   * reproduce all the given input.\r
-   */\r
-  BROTLI_OPERATION_FLUSH = 1,\r
-  /**\r
-   * Finalize the stream.\r
-   *\r
-   * Actual finalization is performed when input stream is depleted and there is\r
-   * enough space in output stream. This means that client should repeat\r
-   * ::BROTLI_OPERATION_FINISH operation until @p available_in becomes @c 0, and\r
-   * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. If output is acquired\r
-   * via ::BrotliEncoderTakeOutput, then operation should be repeated after\r
-   * output buffer is drained.\r
-   *\r
-   * @warning Until finalization is complete, client @b SHOULD @b NOT swap,\r
-   *          reduce or extend input stream.\r
-   *\r
-   * Helper function ::BrotliEncoderIsFinished checks if stream is finalized and\r
-   * output fully dumped.\r
-   *\r
-   * Adding more input data to finalized stream is impossible.\r
-   */\r
-  BROTLI_OPERATION_FINISH = 2,\r
-  /**\r
-   * Emit metadata block to stream.\r
-   *\r
-   * Metadata is opaque to Brotli: neither encoder, nor decoder processes this\r
-   * data or relies on it. It may be used to pass some extra information from\r
-   * encoder client to decoder client without interfering with main data stream.\r
-   *\r
-   * @note Encoder may emit empty metadata blocks internally, to pad encoded\r
-   *       stream to byte boundary.\r
-   *\r
-   * @warning Until emitting metadata is complete client @b SHOULD @b NOT swap,\r
-   *          reduce or extend input stream.\r
-   *\r
-   * @warning The whole content of input buffer is considered to be the content\r
-   *          of metadata block. Do @b NOT @e append metadata to input stream,\r
-   *          before it is depleted with other operations.\r
-   *\r
-   * Stream is soft-flushed before metadata block is emitted. Metadata block\r
-   * @b MUST be no longer than than 16MiB.\r
-   */\r
-  BROTLI_OPERATION_EMIT_METADATA = 3\r
-} BrotliEncoderOperation;\r
-\r
-/** Options to be used with ::BrotliEncoderSetParameter. */\r
-typedef enum BrotliEncoderParameter {\r
-  /**\r
-   * Tune encoder for specific input.\r
-   *\r
-   * ::BrotliEncoderMode enumerates all available values.\r
-   */\r
-  BROTLI_PARAM_MODE = 0,\r
-  /**\r
-   * The main compression speed-density lever.\r
-   *\r
-   * The higher the quality, the slower the compression. Range is\r
-   * from ::BROTLI_MIN_QUALITY to ::BROTLI_MAX_QUALITY.\r
-   */\r
-  BROTLI_PARAM_QUALITY = 1,\r
-  /**\r
-   * Recommended sliding LZ77 window size.\r
-   *\r
-   * Encoder may reduce this value, e.g. if input is much smaller than\r
-   * window size.\r
-   *\r
-   * Window size is `(1 << value) - 16`.\r
-   *\r
-   * Range is from ::BROTLI_MIN_WINDOW_BITS to ::BROTLI_MAX_WINDOW_BITS.\r
-   */\r
-  BROTLI_PARAM_LGWIN = 2,\r
-  /**\r
-   * Recommended input block size.\r
-   *\r
-   * Encoder may reduce this value, e.g. if input is much smaller than input\r
-   * block size.\r
-   *\r
-   * Range is from ::BROTLI_MIN_INPUT_BLOCK_BITS to\r
-   * ::BROTLI_MAX_INPUT_BLOCK_BITS.\r
-   *\r
-   * @note Bigger input block size allows better compression, but consumes more\r
-   *       memory. \n The rough formula of memory used for temporary input\r
-   *       storage is `3 << lgBlock`.\r
-   */\r
-  BROTLI_PARAM_LGBLOCK = 3,\r
-  /**\r
-   * Flag that affects usage of "literal context modeling" format feature.\r
-   *\r
-   * This flag is a "decoding-speed vs compression ratio" trade-off.\r
-   */\r
-  BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING = 4,\r
-  /**\r
-   * Estimated total input size for all ::BrotliEncoderCompressStream calls.\r
-   *\r
-   * The default value is 0, which means that the total input size is unknown.\r
-   */\r
-  BROTLI_PARAM_SIZE_HINT = 5,\r
-  /**\r
-   * Flag that determines if "Large Window Brotli" is used.\r
-   */\r
-  BROTLI_PARAM_LARGE_WINDOW = 6,\r
-  /**\r
-   * Recommended number of postfix bits (NPOSTFIX).\r
-   *\r
-   * Encoder may change this value.\r
-   *\r
-   * Range is from 0 to ::BROTLI_MAX_NPOSTFIX.\r
-   */\r
-  BROTLI_PARAM_NPOSTFIX = 7,\r
-  /**\r
-   * Recommended number of direct distance codes (NDIRECT).\r
-   *\r
-   * Encoder may change this value.\r
-   *\r
-   * Range is from 0 to (15 << NPOSTFIX) in steps of (1 << NPOSTFIX).\r
-   */\r
-  BROTLI_PARAM_NDIRECT = 8\r
-} BrotliEncoderParameter;\r
-\r
-/**\r
- * Opaque structure that holds encoder state.\r
- *\r
- * Allocated and initialized with ::BrotliEncoderCreateInstance.\r
- * Cleaned up and deallocated with ::BrotliEncoderDestroyInstance.\r
- */\r
-typedef struct BrotliEncoderStateStruct BrotliEncoderState;\r
-\r
-/**\r
- * Sets the specified parameter to the given encoder instance.\r
- *\r
- * @param state encoder instance\r
- * @param param parameter to set\r
- * @param value new parameter value\r
- * @returns ::BROTLI_FALSE if parameter is unrecognized, or value is invalid\r
- * @returns ::BROTLI_FALSE if value of parameter can not be changed at current\r
- *          encoder state (e.g. when encoding is started, window size might be\r
- *          already encoded and therefore it is impossible to change it)\r
- * @returns ::BROTLI_TRUE if value is accepted\r
- * @warning invalid values might be accepted in case they would not break\r
- *          encoding process.\r
- */\r
-BROTLI_ENC_API BROTLI_BOOL BrotliEncoderSetParameter(\r
-    BrotliEncoderState* state, BrotliEncoderParameter param, uint32_t value);\r
-\r
-/**\r
- * Creates an instance of ::BrotliEncoderState and initializes it.\r
- *\r
- * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the\r
- * case they are both zero, default memory allocators are used. @p opaque is\r
- * passed to @p alloc_func and @p free_func when they are called. @p free_func\r
- * has to return without doing anything when asked to free a NULL pointer.\r
- *\r
- * @param alloc_func custom memory allocation function\r
- * @param free_func custom memory free function\r
- * @param opaque custom memory manager handle\r
- * @returns @c 0 if instance can not be allocated or initialized\r
- * @returns pointer to initialized ::BrotliEncoderState otherwise\r
- */\r
-BROTLI_ENC_API BrotliEncoderState* BrotliEncoderCreateInstance(\r
-    brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);\r
-\r
-/**\r
- * Deinitializes and frees ::BrotliEncoderState instance.\r
- *\r
- * @param state decoder instance to be cleaned up and deallocated\r
- */\r
-BROTLI_ENC_API void BrotliEncoderDestroyInstance(BrotliEncoderState* state);\r
-\r
-/**\r
- * Calculates the output size bound for the given @p input_size.\r
- *\r
- * @warning Result is only valid if quality is at least @c 2 and, in\r
- *          case ::BrotliEncoderCompressStream was used, no flushes\r
- *          (::BROTLI_OPERATION_FLUSH) were performed.\r
- *\r
- * @param input_size size of projected input\r
- * @returns @c 0 if result does not fit @c size_t\r
- */\r
-BROTLI_ENC_API size_t BrotliEncoderMaxCompressedSize(size_t input_size);\r
-\r
-/**\r
- * Performs one-shot memory-to-memory compression.\r
- *\r
- * Compresses the data in @p input_buffer into @p encoded_buffer, and sets\r
- * @p *encoded_size to the compressed length.\r
- *\r
- * @note If ::BrotliEncoderMaxCompressedSize(@p input_size) returns non-zero\r
- *       value, then output is guaranteed to be no longer than that.\r
- *\r
- * @param quality quality parameter value, e.g. ::BROTLI_DEFAULT_QUALITY\r
- * @param lgwin lgwin parameter value, e.g. ::BROTLI_DEFAULT_WINDOW\r
- * @param mode mode parameter value, e.g. ::BROTLI_DEFAULT_MODE\r
- * @param input_size size of @p input_buffer\r
- * @param input_buffer input data buffer with at least @p input_size\r
- *        addressable bytes\r
- * @param[in, out] encoded_size @b in: size of @p encoded_buffer; \n\r
- *                 @b out: length of compressed data written to\r
- *                 @p encoded_buffer, or @c 0 if compression fails\r
- * @param encoded_buffer compressed data destination buffer\r
- * @returns ::BROTLI_FALSE in case of compression error\r
- * @returns ::BROTLI_FALSE if output buffer is too small\r
- * @returns ::BROTLI_TRUE otherwise\r
- */\r
-BROTLI_ENC_API BROTLI_BOOL BrotliEncoderCompress(\r
-    int quality, int lgwin, BrotliEncoderMode mode, size_t input_size,\r
-    const uint8_t input_buffer[BROTLI_ARRAY_PARAM(input_size)],\r
-    size_t* encoded_size,\r
-    uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(*encoded_size)]);\r
-\r
-/**\r
- * Compresses input stream to output stream.\r
- *\r
- * The values @p *available_in and @p *available_out must specify the number of\r
- * bytes addressable at @p *next_in and @p *next_out respectively.\r
- * When @p *available_out is @c 0, @p next_out is allowed to be @c NULL.\r
- *\r
- * After each call, @p *available_in will be decremented by the amount of input\r
- * bytes consumed, and the @p *next_in pointer will be incremented by that\r
- * amount. Similarly, @p *available_out will be decremented by the amount of\r
- * output bytes written, and the @p *next_out pointer will be incremented by\r
- * that amount.\r
- *\r
- * @p total_out, if it is not a null-pointer, will be set to the number\r
- * of bytes compressed since the last @p state initialization.\r
- *\r
- *\r
- *\r
- * Internally workflow consists of 3 tasks:\r
- *  -# (optionally) copy input data to internal buffer\r
- *  -# actually compress data and (optionally) store it to internal buffer\r
- *  -# (optionally) copy compressed bytes from internal buffer to output stream\r
- *\r
- * Whenever all 3 tasks can't move forward anymore, or error occurs, this\r
- * method returns the control flow to caller.\r
- *\r
- * @p op is used to perform flush, finish the stream, or inject metadata block.\r
- * See ::BrotliEncoderOperation for more information.\r
- *\r
- * Flushing the stream means forcing encoding of all input passed to encoder and\r
- * completing the current output block, so it could be fully decoded by stream\r
- * decoder. To perform flush set @p op to ::BROTLI_OPERATION_FLUSH.\r
- * Under some circumstances (e.g. lack of output stream capacity) this operation\r
- * would require several calls to ::BrotliEncoderCompressStream. The method must\r
- * be called again until both input stream is depleted and encoder has no more\r
- * output (see ::BrotliEncoderHasMoreOutput) after the method is called.\r
- *\r
- * Finishing the stream means encoding of all input passed to encoder and\r
- * adding specific "final" marks, so stream decoder could determine that stream\r
- * is complete. To perform finish set @p op to ::BROTLI_OPERATION_FINISH.\r
- * Under some circumstances (e.g. lack of output stream capacity) this operation\r
- * would require several calls to ::BrotliEncoderCompressStream. The method must\r
- * be called again until both input stream is depleted and encoder has no more\r
- * output (see ::BrotliEncoderHasMoreOutput) after the method is called.\r
- *\r
- * @warning When flushing and finishing, @p op should not change until operation\r
- *          is complete; input stream should not be swapped, reduced or\r
- *          extended as well.\r
- *\r
- * @param state encoder instance\r
- * @param op requested operation\r
- * @param[in, out] available_in @b in: amount of available input; \n\r
- *                 @b out: amount of unused input\r
- * @param[in, out] next_in pointer to the next input byte\r
- * @param[in, out] available_out @b in: length of output buffer; \n\r
- *                 @b out: remaining size of output buffer\r
- * @param[in, out] next_out compressed output buffer cursor;\r
- *                 can be @c NULL if @p available_out is @c 0\r
- * @param[out] total_out number of bytes produced so far; can be @c NULL\r
- * @returns ::BROTLI_FALSE if there was an error\r
- * @returns ::BROTLI_TRUE otherwise\r
- */\r
-BROTLI_ENC_API BROTLI_BOOL BrotliEncoderCompressStream(\r
-    BrotliEncoderState* state, BrotliEncoderOperation op, size_t* available_in,\r
-    const uint8_t** next_in, size_t* available_out, uint8_t** next_out,\r
-    size_t* total_out);\r
-\r
-/**\r
- * Checks if encoder instance reached the final state.\r
- *\r
- * @param state encoder instance\r
- * @returns ::BROTLI_TRUE if encoder is in a state where it reached the end of\r
- *          the input and produced all of the output\r
- * @returns ::BROTLI_FALSE otherwise\r
- */\r
-BROTLI_ENC_API BROTLI_BOOL BrotliEncoderIsFinished(BrotliEncoderState* state);\r
-\r
-/**\r
- * Checks if encoder has more output.\r
- *\r
- * @param state encoder instance\r
- * @returns ::BROTLI_TRUE, if encoder has some unconsumed output\r
- * @returns ::BROTLI_FALSE otherwise\r
- */\r
-BROTLI_ENC_API BROTLI_BOOL BrotliEncoderHasMoreOutput(\r
-    BrotliEncoderState* state);\r
-\r
-/**\r
- * Acquires pointer to internal output buffer.\r
- *\r
- * This method is used to make language bindings easier and more efficient:\r
- *  -# push data to ::BrotliEncoderCompressStream,\r
- *     until ::BrotliEncoderHasMoreOutput returns BROTL_TRUE\r
- *  -# use ::BrotliEncoderTakeOutput to peek bytes and copy to language-specific\r
- *     entity\r
- *\r
- * Also this could be useful if there is an output stream that is able to\r
- * consume all the provided data (e.g. when data is saved to file system).\r
- *\r
- * @attention After every call to ::BrotliEncoderTakeOutput @p *size bytes of\r
- *            output are considered consumed for all consecutive calls to the\r
- *            instance methods; returned pointer becomes invalidated as well.\r
- *\r
- * @note Encoder output is not guaranteed to be contiguous. This means that\r
- *       after the size-unrestricted call to ::BrotliEncoderTakeOutput,\r
- *       immediate next call to ::BrotliEncoderTakeOutput may return more data.\r
- *\r
- * @param state encoder instance\r
- * @param[in, out] size @b in: number of bytes caller is ready to take, @c 0 if\r
- *                 any amount could be handled; \n\r
- *                 @b out: amount of data pointed by returned pointer and\r
- *                 considered consumed; \n\r
- *                 out value is never greater than in value, unless it is @c 0\r
- * @returns pointer to output data\r
- */\r
-BROTLI_ENC_API const uint8_t* BrotliEncoderTakeOutput(\r
-    BrotliEncoderState* state, size_t* size);\r
-\r
-\r
-/**\r
- * Gets an encoder library version.\r
- *\r
- * Look at BROTLI_VERSION for more information.\r
- */\r
-BROTLI_ENC_API uint32_t BrotliEncoderVersion(void);\r
-\r
-#if defined(__cplusplus) || defined(c_plusplus)\r
-}  /* extern "C" */\r
-#endif\r
-\r
-#endif  /* BROTLI_ENC_ENCODE_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/include/brotli/port.h b/BaseTools/Source/C/BrotliCompress/include/brotli/port.h
deleted file mode 100644 (file)
index 6e43998..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/* Copyright 2016 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Macros for compiler / platform specific API declarations. */\r
-\r
-#ifndef BROTLI_COMMON_PORT_H_\r
-#define BROTLI_COMMON_PORT_H_\r
-\r
-/* The following macros were borrowed from https://github.com/nemequ/hedley\r
- * with permission of original author - Evan Nemerson <evan@nemerson.com> */\r
-\r
-/* >>> >>> >>> hedley macros */\r
-\r
-#define BROTLI_MAKE_VERSION(major, minor, revision) \\r
-  (((major) * 1000000) + ((minor) * 1000) + (revision))\r
-\r
-#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)\r
-#define BROTLI_GNUC_VERSION \\r
-  BROTLI_MAKE_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)\r
-#elif defined(__GNUC__)\r
-#define BROTLI_GNUC_VERSION BROTLI_MAKE_VERSION(__GNUC__, __GNUC_MINOR__, 0)\r
-#endif\r
-\r
-#if defined(BROTLI_GNUC_VERSION)\r
-#define BROTLI_GNUC_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_GNUC_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_GNUC_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000)\r
-#define BROTLI_MSVC_VERSION                                \\r
-  BROTLI_MAKE_VERSION((_MSC_FULL_VER / 10000000),          \\r
-                      (_MSC_FULL_VER % 10000000) / 100000, \\r
-                      (_MSC_FULL_VER % 100000) / 100)\r
-#elif defined(_MSC_FULL_VER)\r
-#define BROTLI_MSVC_VERSION                              \\r
-  BROTLI_MAKE_VERSION((_MSC_FULL_VER / 1000000),         \\r
-                      (_MSC_FULL_VER % 1000000) / 10000, \\r
-                      (_MSC_FULL_VER % 10000) / 10)\r
-#elif defined(_MSC_VER)\r
-#define BROTLI_MSVC_VERSION \\r
-  BROTLI_MAKE_VERSION(_MSC_VER / 100, _MSC_VER % 100, 0)\r
-#endif\r
-\r
-#if !defined(_MSC_VER)\r
-#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) (0)\r
-#elif defined(_MSC_VER) && (_MSC_VER >= 1400)\r
-#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \\r
-  (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))\r
-#elif defined(_MSC_VER) && (_MSC_VER >= 1200)\r
-#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \\r
-  (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))\r
-#else\r
-#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \\r
-  (_MSC_VER >= ((major * 100) + (minor)))\r
-#endif\r
-\r
-#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)\r
-#define BROTLI_INTEL_VERSION                   \\r
-  BROTLI_MAKE_VERSION(__INTEL_COMPILER / 100,  \\r
-                      __INTEL_COMPILER % 100,  \\r
-                      __INTEL_COMPILER_UPDATE)\r
-#elif defined(__INTEL_COMPILER)\r
-#define BROTLI_INTEL_VERSION \\r
-  BROTLI_MAKE_VERSION(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)\r
-#endif\r
-\r
-#if defined(BROTLI_INTEL_VERSION)\r
-#define BROTLI_INTEL_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_INTEL_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_INTEL_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__PGI) && \\r
-    defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)\r
-#define BROTLI_PGI_VERSION \\r
-  BROTLI_MAKE_VERSION(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)\r
-#endif\r
-\r
-#if defined(BROTLI_PGI_VERSION)\r
-#define BROTLI_PGI_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_PGI_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_PGI_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)\r
-#define BROTLI_SUNPRO_VERSION                                       \\r
-  BROTLI_MAKE_VERSION(                                              \\r
-    (((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), \\r
-    (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf),   \\r
-    (__SUNPRO_C & 0xf) * 10)\r
-#elif defined(__SUNPRO_C)\r
-#define BROTLI_SUNPRO_VERSION                  \\r
-  BROTLI_MAKE_VERSION((__SUNPRO_C >> 8) & 0xf, \\r
-                      (__SUNPRO_C >> 4) & 0xf, \\r
-                      (__SUNPRO_C) & 0xf)\r
-#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)\r
-#define BROTLI_SUNPRO_VERSION                                         \\r
-  BROTLI_MAKE_VERSION(                                                \\r
-    (((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), \\r
-    (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf),   \\r
-    (__SUNPRO_CC & 0xf) * 10)\r
-#elif defined(__SUNPRO_CC)\r
-#define BROTLI_SUNPRO_VERSION                   \\r
-  BROTLI_MAKE_VERSION((__SUNPRO_CC >> 8) & 0xf, \\r
-                      (__SUNPRO_CC >> 4) & 0xf, \\r
-                      (__SUNPRO_CC) & 0xf)\r
-#endif\r
-\r
-#if defined(BROTLI_SUNPRO_VERSION)\r
-#define BROTLI_SUNPRO_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_SUNPRO_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_SUNPRO_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)\r
-#define BROTLI_ARM_VERSION                                       \\r
-  BROTLI_MAKE_VERSION((__ARMCOMPILER_VERSION / 1000000),         \\r
-                      (__ARMCOMPILER_VERSION % 1000000) / 10000, \\r
-                      (__ARMCOMPILER_VERSION % 10000) / 100)\r
-#elif defined(__CC_ARM) && defined(__ARMCC_VERSION)\r
-#define BROTLI_ARM_VERSION                                 \\r
-  BROTLI_MAKE_VERSION((__ARMCC_VERSION / 1000000),         \\r
-                      (__ARMCC_VERSION % 1000000) / 10000, \\r
-                      (__ARMCC_VERSION % 10000) / 100)\r
-#endif\r
-\r
-#if defined(BROTLI_ARM_VERSION)\r
-#define BROTLI_ARM_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_ARM_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_ARM_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__ibmxl__)\r
-#define BROTLI_IBM_VERSION                    \\r
-  BROTLI_MAKE_VERSION(__ibmxl_version__,      \\r
-                      __ibmxl_release__,      \\r
-                      __ibmxl_modification__)\r
-#elif defined(__xlC__) && defined(__xlC_ver__)\r
-#define BROTLI_IBM_VERSION \\r
-  BROTLI_MAKE_VERSION(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)\r
-#elif defined(__xlC__)\r
-#define BROTLI_IBM_VERSION BROTLI_MAKE_VERSION(__xlC__ >> 8, __xlC__ & 0xff, 0)\r
-#endif\r
-\r
-#if defined(BROTLI_IBM_VERSION)\r
-#define BROTLI_IBM_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_IBM_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_IBM_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__TI_COMPILER_VERSION__)\r
-#define BROTLI_TI_VERSION                                         \\r
-  BROTLI_MAKE_VERSION((__TI_COMPILER_VERSION__ / 1000000),        \\r
-                      (__TI_COMPILER_VERSION__ % 1000000) / 1000, \\r
-                      (__TI_COMPILER_VERSION__ % 1000))\r
-#endif\r
-\r
-#if defined(BROTLI_TI_VERSION)\r
-#define BROTLI_TI_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_TI_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_TI_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__IAR_SYSTEMS_ICC__)\r
-#if __VER__ > 1000\r
-#define BROTLI_IAR_VERSION                     \\r
-  BROTLI_MAKE_VERSION((__VER__ / 1000000),     \\r
-                      (__VER__ / 1000) % 1000, \\r
-                      (__VER__ % 1000))\r
-#else\r
-#define BROTLI_IAR_VERSION BROTLI_MAKE_VERSION(VER / 100, __VER__ % 100, 0)\r
-#endif\r
-#endif\r
-\r
-#if defined(BROTLI_IAR_VERSION)\r
-#define BROTLI_IAR_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_IAR_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_IAR_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__TINYC__)\r
-#define BROTLI_TINYC_VERSION \\r
-  BROTLI_MAKE_VERSION(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)\r
-#endif\r
-\r
-#if defined(BROTLI_TINYC_VERSION)\r
-#define BROTLI_TINYC_VERSION_CHECK(major, minor, patch) \\r
-  (BROTLI_TINYC_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))\r
-#else\r
-#define BROTLI_TINYC_VERSION_CHECK(major, minor, patch) (0)\r
-#endif\r
-\r
-#if defined(__has_attribute)\r
-#define BROTLI_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \\r
-  __has_attribute(attribute)\r
-#else\r
-#define BROTLI_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \\r
-  BROTLI_GNUC_VERSION_CHECK(major, minor, patch)\r
-#endif\r
-\r
-#if defined(__has_builtin)\r
-#define BROTLI_GNUC_HAS_BUILTIN(builtin, major, minor, patch) \\r
-  __has_builtin(builtin)\r
-#else\r
-#define BROTLI_GNUC_HAS_BUILTIN(builtin, major, minor, patch) \\r
-  BROTLI_GNUC_VERSION_CHECK(major, minor, patch)\r
-#endif\r
-\r
-#if defined(_WIN32) || defined(__CYGWIN__)\r
-#define BROTLI_PUBLIC\r
-#elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) ||                         \\r
-    BROTLI_TI_VERSION_CHECK(8, 0, 0) ||                             \\r
-    BROTLI_INTEL_VERSION_CHECK(16, 0, 0) ||                         \\r
-    BROTLI_ARM_VERSION_CHECK(4, 1, 0) ||                            \\r
-    BROTLI_IBM_VERSION_CHECK(13, 1, 0) ||                           \\r
-    BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) ||                        \\r
-    (BROTLI_TI_VERSION_CHECK(7, 3, 0) &&                            \\r
-     defined(__TI_GNU_ATTRIBUTE_SUPPORT__) && defined(__TI_EABI__))\r
-#define BROTLI_PUBLIC __attribute__ ((visibility ("default")))\r
-#else\r
-#define BROTLI_PUBLIC\r
-#endif\r
-\r
-#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \\r
-    !defined(__STDC_NO_VLA__) && !defined(__cplusplus) &&         \\r
-    !defined(__PGI) && !defined(__PGIC__) && !defined(__TINYC__)\r
-#define BROTLI_ARRAY_PARAM(name) (name)\r
-#else\r
-#define BROTLI_ARRAY_PARAM(name)\r
-#endif\r
-\r
-/* <<< <<< <<< end of hedley macros. */\r
-\r
-#if defined(BROTLI_SHARED_COMPILATION)\r
-#if defined(_WIN32)\r
-#if defined(BROTLICOMMON_SHARED_COMPILATION)\r
-#define BROTLI_COMMON_API __declspec(dllexport)\r
-#else\r
-#define BROTLI_COMMON_API __declspec(dllimport)\r
-#endif  /* BROTLICOMMON_SHARED_COMPILATION */\r
-#if defined(BROTLIDEC_SHARED_COMPILATION)\r
-#define BROTLI_DEC_API __declspec(dllexport)\r
-#else\r
-#define BROTLI_DEC_API __declspec(dllimport)\r
-#endif  /* BROTLIDEC_SHARED_COMPILATION */\r
-#if defined(BROTLIENC_SHARED_COMPILATION)\r
-#define BROTLI_ENC_API __declspec(dllexport)\r
-#else\r
-#define BROTLI_ENC_API __declspec(dllimport)\r
-#endif  /* BROTLIENC_SHARED_COMPILATION */\r
-#else  /* _WIN32 */\r
-#define BROTLI_COMMON_API BROTLI_PUBLIC\r
-#define BROTLI_DEC_API BROTLI_PUBLIC\r
-#define BROTLI_ENC_API BROTLI_PUBLIC\r
-#endif  /* _WIN32 */\r
-#else  /* BROTLI_SHARED_COMPILATION */\r
-#define BROTLI_COMMON_API\r
-#define BROTLI_DEC_API\r
-#define BROTLI_ENC_API\r
-#endif\r
-\r
-#endif  /* BROTLI_COMMON_PORT_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/include/brotli/types.h b/BaseTools/Source/C/BrotliCompress/include/brotli/types.h
deleted file mode 100644 (file)
index 513e701..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/**\r
- * @file\r
- * Common types used in decoder and encoder API.\r
- */\r
-\r
-#ifndef BROTLI_COMMON_TYPES_H_\r
-#define BROTLI_COMMON_TYPES_H_\r
-\r
-#include <stddef.h>  /* for size_t */\r
-\r
-#if defined(_MSC_VER) && (_MSC_VER < 1600)\r
-typedef __int8 int8_t;\r
-typedef unsigned __int8 uint8_t;\r
-typedef __int16 int16_t;\r
-typedef unsigned __int16 uint16_t;\r
-typedef __int32 int32_t;\r
-typedef unsigned __int32 uint32_t;\r
-typedef unsigned __int64 uint64_t;\r
-typedef __int64 int64_t;\r
-#else\r
-#include <stdint.h>\r
-#endif  /* defined(_MSC_VER) && (_MSC_VER < 1600) */\r
-\r
-/**\r
- * A portable @c bool replacement.\r
- *\r
- * ::BROTLI_BOOL is a "documentation" type: actually it is @c int, but in API it\r
- * denotes a type, whose only values are ::BROTLI_TRUE and ::BROTLI_FALSE.\r
- *\r
- * ::BROTLI_BOOL values passed to Brotli should either be ::BROTLI_TRUE or\r
- * ::BROTLI_FALSE, or be a result of ::TO_BROTLI_BOOL macros.\r
- *\r
- * ::BROTLI_BOOL values returned by Brotli should not be tested for equality\r
- * with @c true, @c false, ::BROTLI_TRUE, ::BROTLI_FALSE, but rather should be\r
- * evaluated, for example: @code{.cpp}\r
- * if (SomeBrotliFunction(encoder, BROTLI_TRUE) &&\r
- *     !OtherBrotliFunction(decoder, BROTLI_FALSE)) {\r
- *   bool x = !!YetAnotherBrotliFunction(encoder, TO_BROLTI_BOOL(2 * 2 == 4));\r
- *   DoSomething(x);\r
- * }\r
- * @endcode\r
- */\r
-#define BROTLI_BOOL int\r
-/** Portable @c true replacement. */\r
-#define BROTLI_TRUE 1\r
-/** Portable @c false replacement. */\r
-#define BROTLI_FALSE 0\r
-/** @c bool to ::BROTLI_BOOL conversion macros. */\r
-#define TO_BROTLI_BOOL(X) (!!(X) ? BROTLI_TRUE : BROTLI_FALSE)\r
-\r
-#define BROTLI_MAKE_UINT64_T(high, low) ((((uint64_t)(high)) << 32) | low)\r
-\r
-#define BROTLI_UINT32_MAX (~((uint32_t)0))\r
-#define BROTLI_SIZE_MAX (~((size_t)0))\r
-\r
-/**\r
- * Allocating function pointer type.\r
- *\r
- * @param opaque custom memory manager handle provided by client\r
- * @param size requested memory region size; can not be @c 0\r
- * @returns @c 0 in the case of failure\r
- * @returns a valid pointer to a memory region of at least @p size bytes\r
- *          long otherwise\r
- */\r
-typedef void* (*brotli_alloc_func)(void* opaque, size_t size);\r
-\r
-/**\r
- * Deallocating function pointer type.\r
- *\r
- * This function @b SHOULD do nothing if @p address is @c 0.\r
- *\r
- * @param opaque custom memory manager handle provided by client\r
- * @param address memory region pointer returned by ::brotli_alloc_func, or @c 0\r
- */\r
-typedef void (*brotli_free_func)(void* opaque, void* address);\r
-\r
-#endif  /* BROTLI_COMMON_TYPES_H_ */\r
diff --git a/BaseTools/Source/C/BrotliCompress/tools/brotli.c b/BaseTools/Source/C/BrotliCompress/tools/brotli.c
deleted file mode 100644 (file)
index b0246e1..0000000
+++ /dev/null
@@ -1,1143 +0,0 @@
-/* Copyright 2014 Google Inc. All Rights Reserved.\r
-\r
-   Distributed under MIT license.\r
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
-*/\r
-\r
-/* Command line interface for Brotli library. */\r
-\r
-#include <errno.h>\r
-#include <fcntl.h>\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <sys/stat.h>\r
-#include <sys/types.h>\r
-#include <time.h>\r
-\r
-#include "../common/constants.h"\r
-#include "../common/version.h"\r
-#include <brotli/decode.h>\r
-#include <brotli/encode.h>\r
-\r
-#if !defined(_WIN32)\r
-#include <unistd.h>\r
-#include <utime.h>\r
-#define MAKE_BINARY(FILENO) (FILENO)\r
-#else\r
-#include <io.h>\r
-#include <share.h>\r
-#include <sys/utime.h>\r
-\r
-#define MAKE_BINARY(FILENO) (_setmode((FILENO), _O_BINARY), (FILENO))\r
-\r
-#if !defined(__MINGW32__)\r
-#define STDIN_FILENO _fileno(stdin)\r
-#define STDOUT_FILENO _fileno(stdout)\r
-#define S_IRUSR S_IREAD\r
-#define S_IWUSR S_IWRITE\r
-#endif\r
-\r
-#define fdopen _fdopen\r
-#define isatty _isatty\r
-#define unlink _unlink\r
-#define utimbuf _utimbuf\r
-#define utime _utime\r
-\r
-#define fopen ms_fopen\r
-#define open ms_open\r
-\r
-#define chmod(F, P) (0)\r
-#define chown(F, O, G) (0)\r
-\r
-#if defined(_MSC_VER) && (_MSC_VER >= 1400)\r
-#define fseek _fseeki64\r
-#define ftell _ftelli64\r
-#endif\r
-\r
-static FILE* ms_fopen(const char* filename, const char* mode) {\r
-  FILE* result = 0;\r
-  fopen_s(&result, filename, mode);\r
-  return result;\r
-}\r
-\r
-static int ms_open(const char* filename, int oflag, int pmode) {\r
-  int result = -1;\r
-  _sopen_s(&result, filename, oflag | O_BINARY, _SH_DENYNO, pmode);\r
-  return result;\r
-}\r
-#endif  /* WIN32 */\r
-\r
-typedef enum {\r
-  COMMAND_COMPRESS,\r
-  COMMAND_DECOMPRESS,\r
-  COMMAND_HELP,\r
-  COMMAND_INVALID,\r
-  COMMAND_TEST_INTEGRITY,\r
-  COMMAND_NOOP,\r
-  COMMAND_VERSION\r
-} Command;\r
-\r
-#define DEFAULT_LGWIN 24\r
-#define DEFAULT_SUFFIX ".br"\r
-#define MAX_OPTIONS 20\r
-#define DECODE_HEADER_SIZE 0x10\r
-#define GAP_MEM_BLOCK 0x1000\r
-\r
-typedef struct {\r
-  /* Parameters */\r
-  int gmem;\r
-  int quality;\r
-  int lgwin;\r
-  BROTLI_BOOL force_overwrite;\r
-  BROTLI_BOOL junk_source;\r
-  BROTLI_BOOL copy_stat;\r
-  BROTLI_BOOL verbose;\r
-  BROTLI_BOOL write_to_stdout;\r
-  BROTLI_BOOL test_integrity;\r
-  BROTLI_BOOL decompress;\r
-  BROTLI_BOOL large_window;\r
-  const char* output_path;\r
-  const char* suffix;\r
-  int not_input_indices[MAX_OPTIONS];\r
-  size_t longest_path_len;\r
-  size_t input_count;\r
-\r
-  /* Inner state */\r
-  int argc;\r
-  char** argv;\r
-  char* modified_path;  /* Storage for path with appended / cut suffix */\r
-  int iterator;\r
-  int ignore;\r
-  BROTLI_BOOL iterator_error;\r
-  uint8_t* buffer;\r
-  uint8_t* input;\r
-  uint8_t* output;\r
-  const char* current_input_path;\r
-  const char* current_output_path;\r
-  int64_t input_file_length;  /* -1, if impossible to calculate */\r
-  FILE* fin;\r
-  FILE* fout;\r
-\r
-  /* I/O buffers */\r
-  size_t available_in;\r
-  const uint8_t* next_in;\r
-  size_t available_out;\r
-  uint8_t* next_out;\r
-} Context;\r
-\r
-/* Parse up to 5 decimal digits. */\r
-static BROTLI_BOOL ParseInt(const char* s, int low, int high, int* result) {\r
-  int value = 0;\r
-  int i;\r
-  for (i = 0; i < 5; ++i) {\r
-    char c = s[i];\r
-    if (c == 0) break;\r
-    if (s[i] < '0' || s[i] > '9') return BROTLI_FALSE;\r
-    value = (10 * value) + (c - '0');\r
-  }\r
-  if (i == 0) return BROTLI_FALSE;\r
-  if (i > 1 && s[0] == '0') return BROTLI_FALSE;\r
-  if (s[i] != 0) return BROTLI_FALSE;\r
-  if (value < low || value > high) return BROTLI_FALSE;\r
-  *result = value;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-/* Returns "base file name" or its tail, if it contains '/' or '\'. */\r
-static const char* FileName(const char* path) {\r
-  const char* separator_position = strrchr(path, '/');\r
-  if (separator_position) path = separator_position + 1;\r
-  separator_position = strrchr(path, '\\');\r
-  if (separator_position) path = separator_position + 1;\r
-  return path;\r
-}\r
-\r
-/* Detect if the program name is a special alias that infers a command type. */\r
-static Command ParseAlias(const char* name) {\r
-  /* TODO: cast name to lower case? */\r
-  const char* unbrotli = "unbrotli";\r
-  size_t unbrotli_len = strlen(unbrotli);\r
-  name = FileName(name);\r
-  /* Partial comparison. On Windows there could be ".exe" suffix. */\r
-  if (strncmp(name, unbrotli, unbrotli_len) == 0) {\r
-    char terminator = name[unbrotli_len];\r
-    if (terminator == 0 || terminator == '.') return COMMAND_DECOMPRESS;\r
-  }\r
-  return COMMAND_COMPRESS;\r
-}\r
-\r
-static Command ParseParams(Context* params) {\r
-  int argc = params->argc;\r
-  char** argv = params->argv;\r
-  int i;\r
-  int next_option_index = 0;\r
-  size_t input_count = 0;\r
-  size_t longest_path_len = 1;\r
-  BROTLI_BOOL command_set = BROTLI_FALSE;\r
-  BROTLI_BOOL gmem_set = BROTLI_FALSE;\r
-  BROTLI_BOOL quality_set = BROTLI_FALSE;\r
-  BROTLI_BOOL output_set = BROTLI_FALSE;\r
-  BROTLI_BOOL keep_set = BROTLI_FALSE;\r
-  BROTLI_BOOL lgwin_set = BROTLI_FALSE;\r
-  BROTLI_BOOL suffix_set = BROTLI_FALSE;\r
-  BROTLI_BOOL after_dash_dash = BROTLI_FALSE;\r
-  Command command = ParseAlias(argv[0]);\r
-\r
-  for (i = 1; i < argc; ++i) {\r
-    const char* arg = argv[i];\r
-    /* C99 5.1.2.2.1: "members argv[0] through argv[argc-1] inclusive shall\r
-       contain pointers to strings"; NULL and 0-length are not forbidden. */\r
-    size_t arg_len = arg ? strlen(arg) : 0;\r
-\r
-    if (arg_len == 0) {\r
-      params->not_input_indices[next_option_index++] = i;\r
-      continue;\r
-    }\r
-\r
-    /* Too many options. The expected longest option list is:\r
-       "-q 0 -w 10 -o f -D d -S b -d -f -k -n -v --", i.e. 16 items in total.\r
-       This check is an additional guard that is never triggered, but provides\r
-       a guard for future changes. */\r
-    if (next_option_index > (MAX_OPTIONS - 2)) {\r
-      fprintf(stderr, "too many options passed\n");\r
-      return COMMAND_INVALID;\r
-    }\r
-\r
-    /* Input file entry. */\r
-    if (after_dash_dash || arg[0] != '-' || arg_len == 1) {\r
-      input_count++;\r
-      if (longest_path_len < arg_len) longest_path_len = arg_len;\r
-      continue;\r
-    }\r
-\r
-    /* Not a file entry. */\r
-    params->not_input_indices[next_option_index++] = i;\r
-\r
-    /* '--' entry stop parsing arguments. */\r
-    if (arg_len == 2 && arg[1] == '-') {\r
-      after_dash_dash = BROTLI_TRUE;\r
-      continue;\r
-    }\r
-\r
-    /* Simple / coalesced options. */\r
-    if (arg[1] != '-') {\r
-      size_t j;\r
-      for (j = 1; j < arg_len; ++j) {\r
-        char c = arg[j];\r
-        if (c >= '0' && c <= '9') {\r
-          if (quality_set) {\r
-            fprintf(stderr, "quality already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          quality_set = BROTLI_TRUE;\r
-          params->quality = c - '0';\r
-          continue;\r
-        } else if (c == 'c') {\r
-          if (output_set) {\r
-            fprintf(stderr, "write to standard output already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          output_set = BROTLI_TRUE;\r
-          params->write_to_stdout = BROTLI_TRUE;\r
-          continue;\r
-        } else if (c == 'd') {\r
-          if (command_set) {\r
-            fprintf(stderr, "command already set when parsing -d\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          command_set = BROTLI_TRUE;\r
-          command = COMMAND_DECOMPRESS;\r
-          continue;\r
-        } else if (c == 'f') {\r
-          if (params->force_overwrite) {\r
-            fprintf(stderr, "force output overwrite already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          params->force_overwrite = BROTLI_TRUE;\r
-          continue;\r
-        } else if (c == 'h') {\r
-          /* Don't parse further. */\r
-          return COMMAND_HELP;\r
-        } else if (c == 'j' || c == 'k') {\r
-          if (keep_set) {\r
-            fprintf(stderr, "argument --rm / -j or --keep / -n already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          keep_set = BROTLI_TRUE;\r
-          params->junk_source = TO_BROTLI_BOOL(c == 'j');\r
-          continue;\r
-        } else if (c == 'n') {\r
-          if (!params->copy_stat) {\r
-            fprintf(stderr, "argument --no-copy-stat / -n already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          params->copy_stat = BROTLI_FALSE;\r
-          continue;\r
-        } else if (c == 't') {\r
-          if (command_set) {\r
-            fprintf(stderr, "command already set when parsing -t\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          command_set = BROTLI_TRUE;\r
-          command = COMMAND_TEST_INTEGRITY;\r
-          continue;\r
-        } else if (c == 'v') {\r
-          if (params->verbose) {\r
-            fprintf(stderr, "argument --verbose / -v already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          params->verbose = BROTLI_TRUE;\r
-          continue;\r
-        } else if (c == 'V') {\r
-          /* Don't parse further. */\r
-          return COMMAND_VERSION;\r
-        } else if (c == 'Z') {\r
-          if (quality_set) {\r
-            fprintf(stderr, "quality already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          quality_set = BROTLI_TRUE;\r
-          params->quality = 11;\r
-          continue;\r
-        }\r
-        /* o/q/w/D/S with parameter is expected */\r
-        if (c != 'o' && c != 'q' && c != 'w' && c != 'D' && c != 'S') {\r
-          fprintf(stderr, "invalid argument -%c\n", c);\r
-          return COMMAND_INVALID;\r
-        }\r
-        if (j + 1 != arg_len) {\r
-          fprintf(stderr, "expected parameter for argument -%c\n", c);\r
-          return COMMAND_INVALID;\r
-        }\r
-        i++;\r
-        if (i == argc || !argv[i] || argv[i][0] == 0) {\r
-          fprintf(stderr, "expected parameter for argument -%c\n", c);\r
-          return COMMAND_INVALID;\r
-        }\r
-        params->not_input_indices[next_option_index++] = i;\r
-        if (c == 'o') {\r
-          if (output_set) {\r
-            fprintf(stderr, "write to standard output already set (-o)\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          params->output_path = argv[i];\r
-        } else if (c == 'g') {\r
-          gmem_set = ParseInt(argv[i], 1, 0x10, &params->gmem);\r
-          if (!gmem_set) {\r
-            fprintf(stderr, "error parsing gmem value [%s]\n", argv[i]);\r
-            return COMMAND_INVALID;\r
-          }\r
-        } else if (c == 'q') {\r
-          if (quality_set) {\r
-            fprintf(stderr, "quality already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          quality_set = ParseInt(argv[i], BROTLI_MIN_QUALITY,\r
-                                 BROTLI_MAX_QUALITY, &params->quality);\r
-          if (!quality_set) {\r
-            fprintf(stderr, "error parsing quality value [%s]\n", argv[i]);\r
-            return COMMAND_INVALID;\r
-          }\r
-        } else if (c == 'w') {\r
-          if (lgwin_set) {\r
-            fprintf(stderr, "lgwin parameter already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          lgwin_set = ParseInt(argv[i], 0,\r
-                               BROTLI_MAX_WINDOW_BITS, &params->lgwin);\r
-          if (!lgwin_set) {\r
-            fprintf(stderr, "error parsing lgwin value [%s]\n", argv[i]);\r
-            return COMMAND_INVALID;\r
-          }\r
-          if (params->lgwin != 0 && params->lgwin < BROTLI_MIN_WINDOW_BITS) {\r
-            fprintf(stderr,\r
-                    "lgwin parameter (%d) smaller than the minimum (%d)\n",\r
-                    params->lgwin, BROTLI_MIN_WINDOW_BITS);\r
-            return COMMAND_INVALID;\r
-          }\r
-        } else if (c == 'S') {\r
-          if (suffix_set) {\r
-            fprintf(stderr, "suffix already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          suffix_set = BROTLI_TRUE;\r
-          params->suffix = argv[i];\r
-        }\r
-      }\r
-    } else {  /* Double-dash. */\r
-      arg = &arg[2];\r
-      if (strcmp("best", arg) == 0) {\r
-        if (quality_set) {\r
-          fprintf(stderr, "quality already set\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        quality_set = BROTLI_TRUE;\r
-        params->quality = 11;\r
-      } else if (strcmp("decompress", arg) == 0) {\r
-        if (command_set) {\r
-          fprintf(stderr, "command already set when parsing --decompress\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        command_set = BROTLI_TRUE;\r
-        command = COMMAND_DECOMPRESS;\r
-      } else if (strcmp("force", arg) == 0) {\r
-        if (params->force_overwrite) {\r
-          fprintf(stderr, "force output overwrite already set\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        params->force_overwrite = BROTLI_TRUE;\r
-      } else if (strcmp("help", arg) == 0) {\r
-        /* Don't parse further. */\r
-        return COMMAND_HELP;\r
-      } else if (strcmp("keep", arg) == 0) {\r
-        if (keep_set) {\r
-          fprintf(stderr, "argument --rm / -j or --keep / -n already set\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        keep_set = BROTLI_TRUE;\r
-        params->junk_source = BROTLI_FALSE;\r
-      } else if (strcmp("no-copy-stat", arg) == 0) {\r
-        if (!params->copy_stat) {\r
-          fprintf(stderr, "argument --no-copy-stat / -n already set\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        params->copy_stat = BROTLI_FALSE;\r
-      } else if (strcmp("rm", arg) == 0) {\r
-        if (keep_set) {\r
-          fprintf(stderr, "argument --rm / -j or --keep / -n already set\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        keep_set = BROTLI_TRUE;\r
-        params->junk_source = BROTLI_TRUE;\r
-      } else if (strcmp("stdout", arg) == 0) {\r
-        if (output_set) {\r
-          fprintf(stderr, "write to standard output already set\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        output_set = BROTLI_TRUE;\r
-        params->write_to_stdout = BROTLI_TRUE;\r
-      } else if (strcmp("test", arg) == 0) {\r
-        if (command_set) {\r
-          fprintf(stderr, "command already set when parsing --test\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        command_set = BROTLI_TRUE;\r
-        command = COMMAND_TEST_INTEGRITY;\r
-      } else if (strcmp("verbose", arg) == 0) {\r
-        if (params->verbose) {\r
-          fprintf(stderr, "argument --verbose / -v already set\n");\r
-          return COMMAND_INVALID;\r
-        }\r
-        params->verbose = BROTLI_TRUE;\r
-      } else if (strcmp("version", arg) == 0) {\r
-        /* Don't parse further. */\r
-        return COMMAND_VERSION;\r
-      } else {\r
-        /* key=value */\r
-        const char* value = strrchr(arg, '=');\r
-        size_t key_len;\r
-        if (!value || value[1] == 0) {\r
-          fprintf(stderr, "must pass the parameter as --%s=value\n", arg);\r
-          return COMMAND_INVALID;\r
-        }\r
-        key_len = (size_t)(value - arg);\r
-        value++;\r
-        if (strncmp("lgwin", arg, key_len) == 0) {\r
-          if (lgwin_set) {\r
-            fprintf(stderr, "lgwin parameter already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          lgwin_set = ParseInt(value, 0,\r
-                               BROTLI_MAX_WINDOW_BITS, &params->lgwin);\r
-          if (!lgwin_set) {\r
-            fprintf(stderr, "error parsing lgwin value [%s]\n", value);\r
-            return COMMAND_INVALID;\r
-          }\r
-          if (params->lgwin != 0 && params->lgwin < BROTLI_MIN_WINDOW_BITS) {\r
-            fprintf(stderr,\r
-                    "lgwin parameter (%d) smaller than the minimum (%d)\n",\r
-                    params->lgwin, BROTLI_MIN_WINDOW_BITS);\r
-            return COMMAND_INVALID;\r
-          }\r
-        } else if (strncmp("large_window", arg, key_len) == 0) {\r
-          /* This option is intentionally not mentioned in help. */\r
-          if (lgwin_set) {\r
-            fprintf(stderr, "lgwin parameter already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          lgwin_set = ParseInt(value, 0,\r
-                               BROTLI_LARGE_MAX_WINDOW_BITS, &params->lgwin);\r
-          if (!lgwin_set) {\r
-            fprintf(stderr, "error parsing lgwin value [%s]\n", value);\r
-            return COMMAND_INVALID;\r
-          }\r
-          if (params->lgwin != 0 && params->lgwin < BROTLI_MIN_WINDOW_BITS) {\r
-            fprintf(stderr,\r
-                    "lgwin parameter (%d) smaller than the minimum (%d)\n",\r
-                    params->lgwin, BROTLI_MIN_WINDOW_BITS);\r
-            return COMMAND_INVALID;\r
-          }\r
-        } else if (strncmp("output", arg, key_len) == 0) {\r
-          if (output_set) {\r
-            fprintf(stderr,\r
-                    "write to standard output already set (--output)\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          params->output_path = value;\r
-        } else if (strncmp("gap", arg, key_len) == 0) {\r
-          gmem_set = ParseInt(value, 1, 0x10, &params->gmem);\r
-          if (!gmem_set) {\r
-            fprintf(stderr, "error parsing gmem value [%s]\n", value);\r
-            return COMMAND_INVALID;\r
-          }\r
-        } else if (strncmp("quality", arg, key_len) == 0) {\r
-          if (quality_set) {\r
-            fprintf(stderr, "quality already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          quality_set = ParseInt(value, BROTLI_MIN_QUALITY,\r
-                                 BROTLI_MAX_QUALITY, &params->quality);\r
-          if (!quality_set) {\r
-            fprintf(stderr, "error parsing quality value [%s]\n", value);\r
-            return COMMAND_INVALID;\r
-          }\r
-        } else if (strncmp("suffix", arg, key_len) == 0) {\r
-          if (suffix_set) {\r
-            fprintf(stderr, "suffix already set\n");\r
-            return COMMAND_INVALID;\r
-          }\r
-          suffix_set = BROTLI_TRUE;\r
-          params->suffix = value;\r
-        } else {\r
-          fprintf(stderr, "invalid parameter: [%s]\n", arg);\r
-          return COMMAND_INVALID;\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  params->input_count = input_count;\r
-  params->longest_path_len = longest_path_len;\r
-  params->decompress = (command == COMMAND_DECOMPRESS);\r
-  params->test_integrity = (command == COMMAND_TEST_INTEGRITY);\r
-\r
-  if (input_count > 1 && output_set) return COMMAND_INVALID;\r
-  if (params->test_integrity) {\r
-    if (params->output_path) return COMMAND_INVALID;\r
-    if (params->write_to_stdout) return COMMAND_INVALID;\r
-  }\r
-  if (strchr(params->suffix, '/') || strchr(params->suffix, '\\')) {\r
-    return COMMAND_INVALID;\r
-  }\r
-\r
-  return command;\r
-}\r
-\r
-static void PrintVersion(void) {\r
-  int major = BROTLI_VERSION >> 24;\r
-  int minor = (BROTLI_VERSION >> 12) & 0xFFF;\r
-  int patch = BROTLI_VERSION & 0xFFF;\r
-  fprintf(stdout, "brotli %d.%d.%d\n", major, minor, patch);\r
-}\r
-\r
-static void PrintHelp(const char* name, BROTLI_BOOL error) {\r
-  FILE* media = error ? stderr : stdout;\r
-  /* String is cut to pieces with length less than 509, to conform C90 spec. */\r
-  fprintf(media,\r
-"Usage: %s [OPTION]... [FILE]...\n",\r
-          name);\r
-  fprintf(media,\r
-"Options:\n"\r
-"  -#                          compression level (0-9)\n"\r
-"  -c, --stdout                write on standard output\n"\r
-"  -d, --decompress            decompress\n"\r
-"  -f, --force                 force output file overwrite\n"\r
-"  -h, --help                  display this help and exit\n");\r
-  fprintf(media,\r
-"  -j, --rm                    remove source file(s)\n"\r
-"  -k, --keep                  keep source file(s) (default)\n"\r
-"  -n, --no-copy-stat          do not copy source file(s) attributes\n"\r
-"  -o FILE, --output=FILE      output file (only if 1 input file)\n");\r
-  fprintf(media,\r
-"  -g NUM, --gap=NUM           scratch memory gap level (1-16)\n");\r
-  fprintf(media,\r
-"  -q NUM, --quality=NUM       compression level (%d-%d)\n",\r
-          BROTLI_MIN_QUALITY, BROTLI_MAX_QUALITY);\r
-  fprintf(media,\r
-"  -t, --test                  test compressed file integrity\n"\r
-"  -v, --verbose               verbose mode\n");\r
-  fprintf(media,\r
-"  -w NUM, --lgwin=NUM         set LZ77 window size (0, %d-%d)\n",\r
-          BROTLI_MIN_WINDOW_BITS, BROTLI_MAX_WINDOW_BITS);\r
-  fprintf(media,\r
-"                              window size = 2**NUM - 16\n"\r
-"                              0 lets compressor choose the optimal value\n");\r
-  fprintf(media,\r
-"  -S SUF, --suffix=SUF        output file suffix (default:'%s')\n",\r
-          DEFAULT_SUFFIX);\r
-  fprintf(media,\r
-"  -V, --version               display version and exit\n"\r
-"  -Z, --best                  use best compression level (11) (default)\n"\r
-"Simple options could be coalesced, i.e. '-9kf' is equivalent to '-9 -k -f'.\n"\r
-"With no FILE, or when FILE is -, read standard input.\n"\r
-"All arguments after '--' are treated as files.\n");\r
-}\r
-\r
-static const char* PrintablePath(const char* path) {\r
-  return path ? path : "con";\r
-}\r
-\r
-static BROTLI_BOOL OpenInputFile(const char* input_path, FILE** f) {\r
-  *f = NULL;\r
-  if (!input_path) {\r
-    *f = fdopen(MAKE_BINARY(STDIN_FILENO), "rb");\r
-    return BROTLI_TRUE;\r
-  }\r
-  *f = fopen(input_path, "rb");\r
-  if (!*f) {\r
-    fprintf(stderr, "failed to open input file [%s]: %s\n",\r
-            PrintablePath(input_path), strerror(errno));\r
-    return BROTLI_FALSE;\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_BOOL OpenOutputFile(const char* output_path, FILE** f,\r
-                                  BROTLI_BOOL force) {\r
-  int fd;\r
-  *f = NULL;\r
-  if (!output_path) {\r
-    *f = fdopen(MAKE_BINARY(STDOUT_FILENO), "wb");\r
-    return BROTLI_TRUE;\r
-  }\r
-  fd = open(output_path, O_CREAT | (force ? 0 : O_EXCL) | O_WRONLY | O_TRUNC,\r
-            S_IRUSR | S_IWUSR);\r
-  if (fd < 0) {\r
-    fd = open(output_path, (force ? 0 : O_EXCL) | O_WRONLY | O_TRUNC,\r
-              S_IRUSR | S_IWUSR);\r
-    if (fd < 0) {\r
-      fprintf(stderr, "failed to open output file [%s]: %s\n",\r
-              PrintablePath(output_path), strerror(errno));\r
-      return BROTLI_FALSE;\r
-    }\r
-  }\r
-\r
-  *f = fdopen(fd, "wb");\r
-  if (!*f) {\r
-    fprintf(stderr, "failed to open output file [%s]: %s\n",\r
-            PrintablePath(output_path), strerror(errno));\r
-    return BROTLI_FALSE;\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static int64_t FileSize(const char* path) {\r
-  FILE* f = fopen(path, "rb");\r
-  int64_t retval;\r
-  if (f == NULL) {\r
-    return -1;\r
-  }\r
-  if (fseek(f, 0L, SEEK_END) != 0) {\r
-    fclose(f);\r
-    return -1;\r
-  }\r
-  retval = ftell(f);\r
-  if (fclose(f) != 0) {\r
-    return -1;\r
-  }\r
-  return retval;\r
-}\r
-\r
-/* Copy file times and permissions.\r
-   TODO: this is a "best effort" implementation; honest cross-platform\r
-   fully featured implementation is way too hacky; add more hacks by request. */\r
-static void CopyStat(const char* input_path, const char* output_path) {\r
-  struct stat statbuf;\r
-  struct utimbuf times;\r
-  int res;\r
-  if (input_path == 0 || output_path == 0) {\r
-    return;\r
-  }\r
-  if (stat(input_path, &statbuf) != 0) {\r
-    return;\r
-  }\r
-  times.actime = statbuf.st_atime;\r
-  times.modtime = statbuf.st_mtime;\r
-  utime(output_path, &times);\r
-  res = chmod(output_path, statbuf.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO));\r
-  if (res != 0) {\r
-    fprintf(stderr, "setting access bits failed for [%s]: %s\n",\r
-            PrintablePath(output_path), strerror(errno));\r
-  }\r
-  res = chown(output_path, (uid_t)-1, statbuf.st_gid);\r
-  if (res != 0) {\r
-    fprintf(stderr, "setting group failed for [%s]: %s\n",\r
-            PrintablePath(output_path), strerror(errno));\r
-  }\r
-  res = chown(output_path, statbuf.st_uid, (gid_t)-1);\r
-  if (res != 0) {\r
-    fprintf(stderr, "setting user failed for [%s]: %s\n",\r
-            PrintablePath(output_path), strerror(errno));\r
-  }\r
-}\r
-\r
-int64_t input_file_length = 0;\r
-\r
-static BROTLI_BOOL NextFile(Context* context) {\r
-  const char* arg;\r
-  size_t arg_len;\r
-\r
-  /* Iterator points to last used arg; increment to search for the next one. */\r
-  context->iterator++;\r
-\r
-  context->input_file_length = -1;\r
-\r
-  /* No input path; read from console. */\r
-  if (context->input_count == 0) {\r
-    if (context->iterator > 1) return BROTLI_FALSE;\r
-    context->current_input_path = NULL;\r
-    /* Either write to the specified path, or to console. */\r
-    context->current_output_path = context->output_path;\r
-    return BROTLI_TRUE;\r
-  }\r
-\r
-  /* Skip option arguments. */\r
-  while (context->iterator == context->not_input_indices[context->ignore]) {\r
-    context->iterator++;\r
-    context->ignore++;\r
-  }\r
-\r
-  /* All args are scanned already. */\r
-  if (context->iterator >= context->argc) return BROTLI_FALSE;\r
-\r
-  /* Iterator now points to the input file name. */\r
-  arg = context->argv[context->iterator];\r
-  arg_len = strlen(arg);\r
-  /* Read from console. */\r
-  if (arg_len == 1 && arg[0] == '-') {\r
-    context->current_input_path = NULL;\r
-    context->current_output_path = context->output_path;\r
-    return BROTLI_TRUE;\r
-  }\r
-\r
-  if (context->current_input_path == NULL) {\r
-    context->current_input_path = arg;\r
-  }\r
-  context->input_file_length = FileSize(context->current_input_path);\r
-  context->current_output_path = context->output_path;\r
-  if (!context->decompress) {\r
-    input_file_length += context->input_file_length;\r
-  }\r
-\r
-  if (context->output_path) return BROTLI_TRUE;\r
-  if (context->write_to_stdout) return BROTLI_TRUE;\r
-\r
-  strcpy(context->modified_path, arg);\r
-  context->current_output_path = context->modified_path;\r
-  /* If output is not specified, input path suffix should match. */\r
-  if (context->decompress) {\r
-    size_t suffix_len = strlen(context->suffix);\r
-    char* name = (char*)FileName(context->modified_path);\r
-    char* name_suffix;\r
-    size_t name_len = strlen(name);\r
-    if (name_len < suffix_len + 1) {\r
-      fprintf(stderr, "empty output file name for [%s] input file\n",\r
-              PrintablePath(arg));\r
-      context->iterator_error = BROTLI_TRUE;\r
-      return BROTLI_FALSE;\r
-    }\r
-    name_suffix = name + name_len - suffix_len;\r
-    if (strcmp(context->suffix, name_suffix) != 0) {\r
-      fprintf(stderr, "input file [%s] suffix mismatch\n",\r
-              PrintablePath(arg));\r
-      context->iterator_error = BROTLI_TRUE;\r
-      return BROTLI_FALSE;\r
-    }\r
-    name_suffix[0] = 0;\r
-    return BROTLI_TRUE;\r
-  } else {\r
-    strcpy(context->modified_path + arg_len, context->suffix);\r
-    return BROTLI_TRUE;\r
-  }\r
-}\r
-\r
-static BROTLI_BOOL OpenFiles(Context* context) {\r
-  BROTLI_BOOL is_ok = OpenInputFile(context->current_input_path, &context->fin);\r
-  if (context->decompress) {\r
-    //\r
-    // skip the decoder data header\r
-    //\r
-    fseek(context->fin, DECODE_HEADER_SIZE, SEEK_SET);\r
-  }\r
-  if (!context->test_integrity && is_ok && context->fout == NULL) {\r
-    is_ok = OpenOutputFile(\r
-        context->current_output_path, &context->fout, context->force_overwrite);\r
-  }\r
-  if (!context->decompress) {\r
-    //\r
-    // append the decoder data header\r
-    //\r
-    fseek(context->fout, DECODE_HEADER_SIZE, SEEK_SET);\r
-  }\r
-  return is_ok;\r
-}\r
-\r
-static BROTLI_BOOL CloseFiles(Context* context, BROTLI_BOOL success) {\r
-  BROTLI_BOOL is_ok = BROTLI_TRUE;\r
-  if (!context->test_integrity && context->fout) {\r
-    if (!success && context->current_output_path) {\r
-      unlink(context->current_output_path);\r
-    }\r
-    if (fclose(context->fout) != 0) {\r
-      if (success) {\r
-        fprintf(stderr, "fclose failed [%s]: %s\n",\r
-                PrintablePath(context->current_output_path), strerror(errno));\r
-      }\r
-      is_ok = BROTLI_FALSE;\r
-    }\r
-\r
-    /* TOCTOU violation, but otherwise it is impossible to set file times. */\r
-    if (success && is_ok && context->copy_stat) {\r
-      CopyStat(context->current_input_path, context->current_output_path);\r
-    }\r
-  }\r
-\r
-  if (context->fin) {\r
-    if (fclose(context->fin) != 0) {\r
-      if (is_ok) {\r
-        fprintf(stderr, "fclose failed [%s]: %s\n",\r
-                PrintablePath(context->current_input_path), strerror(errno));\r
-      }\r
-      is_ok = BROTLI_FALSE;\r
-    }\r
-  }\r
-  if (success && context->junk_source && context->current_input_path) {\r
-    unlink(context->current_input_path);\r
-  }\r
-\r
-  context->fin = NULL;\r
-  context->fout = NULL;\r
-\r
-  return is_ok;\r
-}\r
-\r
-static const size_t kFileBufferSize = 1 << 16;\r
-\r
-static void InitializeBuffers(Context* context) {\r
-  context->available_in = 0;\r
-  context->next_in = NULL;\r
-  context->available_out = kFileBufferSize;\r
-  context->next_out = context->output;\r
-}\r
-\r
-static BROTLI_BOOL HasMoreInput(Context* context) {\r
-  return feof(context->fin) ? BROTLI_FALSE : BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_BOOL ProvideInput(Context* context) {\r
-  context->available_in =\r
-      fread(context->input, 1, kFileBufferSize, context->fin);\r
-  context->next_in = context->input;\r
-  if (ferror(context->fin)) {\r
-    fprintf(stderr, "failed to read input [%s]: %s\n",\r
-            PrintablePath(context->current_input_path), strerror(errno));\r
-    return BROTLI_FALSE;\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-/* Internal: should be used only in Provide-/Flush-Output. */\r
-static BROTLI_BOOL WriteOutput(Context* context) {\r
-  size_t out_size = (size_t)(context->next_out - context->output);\r
-  if (out_size == 0) return BROTLI_TRUE;\r
-  if (context->test_integrity) return BROTLI_TRUE;\r
-\r
-  fwrite(context->output, 1, out_size, context->fout);\r
-  if (ferror(context->fout)) {\r
-    fprintf(stderr, "failed to write output [%s]: %s\n",\r
-            PrintablePath(context->current_output_path), strerror(errno));\r
-    return BROTLI_FALSE;\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_BOOL ProvideOutput(Context* context) {\r
-  if (!WriteOutput(context)) return BROTLI_FALSE;\r
-  context->available_out = kFileBufferSize;\r
-  context->next_out = context->output;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_BOOL FlushOutput(Context* context) {\r
-  if (!WriteOutput(context)) return BROTLI_FALSE;\r
-  context->available_out = 0;\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_BOOL DecompressFile(Context* context, BrotliDecoderState* s) {\r
-  BrotliDecoderResult result = BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT;\r
-  InitializeBuffers(context);\r
-  for (;;) {\r
-    if (result == BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT) {\r
-      if (!HasMoreInput(context)) {\r
-        fprintf(stderr, "corrupt input [%s]\n",\r
-                PrintablePath(context->current_input_path));\r
-        return BROTLI_FALSE;\r
-      }\r
-      if (!ProvideInput(context)) return BROTLI_FALSE;\r
-    } else if (result == BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT) {\r
-      if (!ProvideOutput(context)) return BROTLI_FALSE;\r
-    } else if (result == BROTLI_DECODER_RESULT_SUCCESS) {\r
-      if (!FlushOutput(context)) return BROTLI_FALSE;\r
-      if (context->available_in != 0 || HasMoreInput(context)) {\r
-        fprintf(stderr, "corrupt input [%s]\n",\r
-                PrintablePath(context->current_input_path));\r
-        return BROTLI_FALSE;\r
-      }\r
-      return BROTLI_TRUE;\r
-    } else {\r
-      fprintf(stderr, "corrupt input [%s]\n",\r
-              PrintablePath(context->current_input_path));\r
-      return BROTLI_FALSE;\r
-    }\r
-\r
-    result = BrotliDecoderDecompressStream(s, &context->available_in,\r
-        &context->next_in, &context->available_out, &context->next_out, 0);\r
-  }\r
-}\r
-\r
-/* Default brotli_alloc_func */\r
-void* BrotliAllocFunc(void* opaque, size_t size) {\r
-  *(size_t *)opaque = *(size_t *) opaque + size; \r
-  return malloc(size);\r
-}\r
-\r
-/* Default brotli_free_func */\r
-void BrotliFreeFunc(void* opaque, void* address) {\r
-  free(address);\r
-}\r
-\r
-size_t scratch_buffer_size = 0;\r
-\r
-static BROTLI_BOOL DecompressFiles(Context* context) {\r
-  while (NextFile(context)) {\r
-    BROTLI_BOOL is_ok = BROTLI_TRUE;\r
-    BrotliDecoderState* s = BrotliDecoderCreateInstance(BrotliAllocFunc, BrotliFreeFunc, &scratch_buffer_size);\r
-    if (!s) {\r
-      fprintf(stderr, "out of memory\n");\r
-      return BROTLI_FALSE;\r
-    }\r
-    /* This allows decoding "large-window" streams. Though it creates\r
-       fragmentation (new builds decode streams that old builds don't),\r
-       it is better from used experience perspective. */\r
-    BrotliDecoderSetParameter(s, BROTLI_DECODER_PARAM_LARGE_WINDOW, 1u);\r
-    is_ok = OpenFiles(context);\r
-    if (is_ok && !context->current_input_path &&\r
-        !context->force_overwrite && isatty(STDIN_FILENO)) {\r
-      fprintf(stderr, "Use -h help. Use -f to force input from a terminal.\n");\r
-      is_ok = BROTLI_FALSE;\r
-    }\r
-    if (is_ok) is_ok = DecompressFile(context, s);\r
-    BrotliDecoderDestroyInstance(s);\r
-    if (!CloseFiles(context, is_ok)) is_ok = BROTLI_FALSE;\r
-    if (!is_ok) return BROTLI_FALSE;\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-static BROTLI_BOOL CompressFile(Context* context, BrotliEncoderState* s) {\r
-  BROTLI_BOOL is_eof = BROTLI_FALSE;\r
-  InitializeBuffers(context);\r
-  for (;;) {\r
-    if (context->available_in == 0 && !is_eof) {\r
-      if (!ProvideInput(context)) return BROTLI_FALSE;\r
-      is_eof = !HasMoreInput(context);\r
-    }\r
-\r
-    if (!BrotliEncoderCompressStream(s,\r
-        is_eof ? BROTLI_OPERATION_FINISH : BROTLI_OPERATION_PROCESS,\r
-        &context->available_in, &context->next_in,\r
-        &context->available_out, &context->next_out, NULL)) {\r
-      /* Should detect OOM? */\r
-      fprintf(stderr, "failed to compress data [%s]\n",\r
-              PrintablePath(context->current_input_path));\r
-      return BROTLI_FALSE;\r
-    }\r
-\r
-    if (context->available_out == 0) {\r
-      if (!ProvideOutput(context)) return BROTLI_FALSE;\r
-    }\r
-\r
-    if (BrotliEncoderIsFinished(s)) {\r
-      return FlushOutput(context);\r
-    }\r
-  }\r
-}\r
-\r
-static BROTLI_BOOL CompressFiles(Context* context) {\r
-  while (NextFile(context)) {\r
-    BROTLI_BOOL is_ok = BROTLI_TRUE;\r
-    BrotliEncoderState* s = BrotliEncoderCreateInstance(NULL, NULL, NULL);\r
-    if (!s) {\r
-      fprintf(stderr, "out of memory\n");\r
-      return BROTLI_FALSE;\r
-    }\r
-    BrotliEncoderSetParameter(s,\r
-        BROTLI_PARAM_QUALITY, (uint32_t)context->quality);\r
-    if (context->lgwin > 0) {\r
-      /* Specified by user. */\r
-      /* Do not enable "large-window" extension, if not required. */\r
-      if (context->lgwin > BROTLI_MAX_WINDOW_BITS) {\r
-        BrotliEncoderSetParameter(s, BROTLI_PARAM_LARGE_WINDOW, 1u);\r
-      }\r
-      BrotliEncoderSetParameter(s,\r
-          BROTLI_PARAM_LGWIN, (uint32_t)context->lgwin);\r
-    } else {\r
-      /* 0, or not specified by user; could be chosen by compressor. */\r
-      uint32_t lgwin = DEFAULT_LGWIN;\r
-      /* Use file size to limit lgwin. */\r
-      if (context->input_file_length >= 0) {\r
-        int32_t size = 1 << BROTLI_MIN_WINDOW_BITS;\r
-        lgwin = BROTLI_MIN_WINDOW_BITS;\r
-        while (size < context->input_file_length) {\r
-          size <<= 1;\r
-          lgwin++;\r
-          if (lgwin == BROTLI_MAX_WINDOW_BITS) break;\r
-        }\r
-      }\r
-      BrotliEncoderSetParameter(s, BROTLI_PARAM_LGWIN, lgwin);\r
-    }\r
-    if (context->input_file_length > 0) {\r
-      uint32_t size_hint = context->input_file_length < (1 << 30) ?\r
-          (uint32_t)context->input_file_length : (1u << 30);\r
-      BrotliEncoderSetParameter(s, BROTLI_PARAM_SIZE_HINT, size_hint);\r
-    }\r
-    is_ok = OpenFiles(context);\r
-    if (is_ok && !context->current_output_path &&\r
-        !context->force_overwrite && isatty(STDOUT_FILENO)) {\r
-      fprintf(stderr, "Use -h help. Use -f to force output to a terminal.\n");\r
-      is_ok = BROTLI_FALSE;\r
-    }\r
-    if (is_ok) is_ok = CompressFile(context, s);\r
-    BrotliEncoderDestroyInstance(s);\r
-    if (!CloseFiles(context, is_ok)) is_ok = BROTLI_FALSE;\r
-    if (!is_ok) return BROTLI_FALSE;\r
-  }\r
-  return BROTLI_TRUE;\r
-}\r
-\r
-int main(int argc, char** argv) {\r
-  Command command;\r
-  Context context;\r
-  Context context_dec;\r
-  BROTLI_BOOL is_ok = BROTLI_TRUE;\r
-  int i;\r
-\r
-  context.quality = 11;\r
-  context.lgwin = -1;\r
-  context.gmem = 1;\r
-  context.force_overwrite = BROTLI_FALSE;\r
-  context.junk_source = BROTLI_FALSE;\r
-  context.copy_stat = BROTLI_TRUE;\r
-  context.test_integrity = BROTLI_FALSE;\r
-  context.verbose = BROTLI_FALSE;\r
-  context.write_to_stdout = BROTLI_FALSE;\r
-  context.decompress = BROTLI_FALSE;\r
-  context.large_window = BROTLI_FALSE;\r
-  context.output_path = NULL;\r
-  context.suffix = DEFAULT_SUFFIX;\r
-  for (i = 0; i < MAX_OPTIONS; ++i) context.not_input_indices[i] = 0;\r
-  context.longest_path_len = 1;\r
-  context.input_count = 0;\r
-\r
-  context.argc = argc;\r
-  context.argv = argv;\r
-  context.modified_path = NULL;\r
-  context.iterator = 0;\r
-  context.ignore = 0;\r
-  context.iterator_error = BROTLI_FALSE;\r
-  context.buffer = NULL;\r
-  context.current_input_path = NULL;\r
-  context.current_output_path = NULL;\r
-  context.fin = NULL;\r
-  context.fout = NULL;\r
-\r
-  command = ParseParams(&context);\r
-\r
-  if (command == COMMAND_COMPRESS || command == COMMAND_DECOMPRESS ||\r
-      command == COMMAND_TEST_INTEGRITY) {\r
-    if (is_ok) {\r
-      size_t modified_path_len =\r
-          context.longest_path_len + strlen(context.suffix) + 1;\r
-      context.modified_path = (char*)malloc(modified_path_len);\r
-      context.buffer = (uint8_t*)malloc(kFileBufferSize * 2);\r
-      if (!context.modified_path || !context.buffer) {\r
-        fprintf(stderr, "out of memory\n");\r
-        is_ok = BROTLI_FALSE;\r
-      } else {\r
-        context.input = context.buffer;\r
-        context.output = context.buffer + kFileBufferSize;\r
-      }\r
-    }\r
-  }\r
-\r
-  if (!is_ok) command = COMMAND_NOOP;\r
-\r
-  switch (command) {\r
-    case COMMAND_NOOP:\r
-      break;\r
-\r
-    case COMMAND_VERSION:\r
-      PrintVersion();\r
-      break;\r
-\r
-    case COMMAND_COMPRESS:\r
-      memcpy (&context_dec, &context, sizeof (context));\r
-      is_ok = CompressFiles(&context);\r
-      if (!is_ok) {\r
-        break;\r
-      }\r
-      context_dec.decompress  = BROTLI_TRUE;\r
-      context_dec.input_count = 1;\r
-      context_dec.current_input_path = context_dec.output_path;\r
-      context_dec.fout = tmpfile ();\r
-      is_ok = DecompressFiles(&context_dec);\r
-      if (!is_ok) {\r
-        break;\r
-      }\r
-      //\r
-      // fill decoder header\r
-      //\r
-      context_dec.fout = fopen(context_dec.output_path, "rb+");  /* open output_path file and add in head info */\r
-      fwrite(&input_file_length, 1, sizeof(int64_t), context_dec.fout);\r
-      scratch_buffer_size += context.gmem * GAP_MEM_BLOCK;  /* there is a memory gap between IA32 and X64 environment*/\r
-      scratch_buffer_size += kFileBufferSize * 2;\r
-      fwrite(&scratch_buffer_size, 1, sizeof(int64_t), context_dec.fout);\r
-      if (fclose(context_dec.fout) != 0) {\r
-        fprintf(stderr, "failed to update ouptut file: %s\n", context_dec.output_path);\r
-        is_ok = 0;\r
-      }\r
-      break;\r
-\r
-    case COMMAND_DECOMPRESS:\r
-    case COMMAND_TEST_INTEGRITY:\r
-      is_ok = DecompressFiles(&context);\r
-      break;\r
-\r
-    case COMMAND_HELP:\r
-    case COMMAND_INVALID:\r
-    default:\r
-      is_ok = (command == COMMAND_HELP);\r
-      PrintHelp(FileName(argv[0]), is_ok);\r
-      break;\r
-  }\r
-\r
-  if (context.iterator_error) is_ok = BROTLI_FALSE;\r
-\r
-  free(context.modified_path);\r
-  free(context.buffer);\r
-\r
-  if (!is_ok) exit(1);\r
-  return 0;\r
-}\r
diff --git a/BaseTools/Source/C/BrotliCompress/tools/brotli.md b/BaseTools/Source/C/BrotliCompress/tools/brotli.md
deleted file mode 100644 (file)
index c029869..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-brotli(1) -- brotli, unbrotli - compress or decompress files
-================================================================
-
-SYNOPSIS
---------
-
-`brotli` [*OPTION|FILE*]...
-
-`unbrotli` is equivalent to `brotli --decompress`
-
-DESCRIPTION
------------
-`brotli` is a generic-purpose lossless compression algorithm that compresses
-data using a combination of a modern variant of the **LZ77** algorithm, Huffman
-coding and 2-nd order context modeling, with a compression ratio comparable to
-the best currently available general-purpose compression methods. It is similar
-in speed with deflate but offers more dense compression.
-
-`brotli` command line syntax similar to `gzip (1)` and `zstd (1)`.
-Unlike `gzip (1)`, source files are preserved by default. It is possible to
-remove them after processing by using the `--rm` _option_.
-
-Arguments that look like "`--name`" or "`--name=value`" are _options_. Every
-_option_ has a short form "`-x`" or "`-x value`". Multiple short form _options_
-could be coalesced:
-
-* "`--decompress --stdout --suffix=.b`" works the same as
-* "`-d -s -S .b`" and
-* "`-dsS .b`"
-
-`brotli` has 3 operation modes:
-
-* default mode is compression;
-* `--decompress` option activates decompression mode;
-* `--test` option switches to integrity test mode; this option is equivalent to
-  "`--decompress --stdout`" except that the decompressed data is discarded
-  instead of being written to standard output.
-
-Every non-option argument is a _file_ entry. If no _files_ are given or _file_
-is "`-`", `brotli` reads from standard input. All arguments after "`--`" are
-_file_ entries.
-
-Unless `--stdout` or `--output` is specified, _files_ are written to a new file
-whose name is derived from the source _file_ name:
-
-* when compressing, a suffix is appended to the source filename to
-  get the target filename
-* when decompressing, a suffix is removed from the source filename to
-  get the target filename
-
-Default suffix is `.br`, but it could be specified with `--suffix` option.
-
-Conflicting or duplicate _options_ are not allowed.
-
-OPTIONS
--------
-
-* `-#`:
-    compression level (0-9); bigger values cause denser, but slower compression
-* `-c`, `--stdout`:
-    write on standard output
-* `-d`, `--decompress`:
-    decompress mode
-* `-f`, `--force`:
-    force output file overwrite
-* `-h`, `--help`:
-    display this help and exit
-* `-j`, `--rm`:
-    remove source file(s); `gzip (1)`-like behaviour
-* `-k`, `--keep`:
-    keep source file(s); `zstd (1)`-like behaviour
-* `-n`, `--no-copy-stat`:
-    do not copy source file(s) attributes
-* `-o FILE`, `--output=FILE`
-    output file; valid only if there is a single input entry
-* `-q NUM`, `--quality=NUM`:
-    compression level (0-11); bigger values cause denser, but slower compression
-* `-t`, `--test`:
-    test file integrity mode
-* `-v`, `--verbose`:
-    increase output verbosity
-* `-w NUM`, `--lgwin=NUM`:
-    set LZ77 window size (0, 10-24) (default: 22); window size is
-    `(2**NUM - 16)`; 0 lets compressor decide over the optimal value; bigger
-    windows size improve density; decoder might require up to window size
-    memory to operate
-* `-S SUF`, `--suffix=SUF`:
-    output file suffix (default: `.br`)
-* `-V`, `--version`:
-    display version and exit
-* `-Z`, `--best`:
-    use best compression level (default); same as "`-q 11`"
-
-SEE ALSO
---------
-
-`brotli` file format is defined in
-[RFC 7932](https://www.ietf.org/rfc/rfc7932.txt).
-
-`brotli` is open-sourced under the
-[MIT License](https://opensource.org/licenses/MIT).
-
-Mailing list: https://groups.google.com/forum/#!forum/brotli
-
-BUGS
-----
-Report bugs at: https://github.com/google/brotli/issues
index 5f4e4c2bcbc39705caa7f1c72419f9118b1f35b7..843046365425e81ceaf31904e85718733a895bcb 100644 (file)
--- a/Readme.md
+++ b/Readme.md
@@ -57,7 +57,7 @@ for the UEFI and PI specifications from www.uefi.org.
 The majority of the content in the EDK II open source project uses a\r
 [BSD-2-Clause Plus Patent License](License.txt).  The EDK II open source project\r
 contains the following components that are covered by additional licenses:\r
-* [BaseTools/Source/C/BrotliCompress](BaseTools/Source/C/BrotliCompress/LICENSE)\r
+* [BaseTools/Source/C/BrotliCompress/brotli](https://github.com/google/brotli/blob/master/LICENSE)\r
 * [MdeModulePkg/Library/BrotliCustomDecompressLib/brotli](https://github.com/google/brotli/blob/master/LICENSE)\r
 * [BaseTools/Source/C/LzmaCompress](BaseTools/Source/C/LzmaCompress/LZMA-SDK-README.txt)\r
 * [MdeModulePkg/Library/LzmaCustomDecompressLib](MdeModulePkg/Library/LzmaCustomDecompressLib/LZMA-SDK-README.txt)\r
@@ -201,6 +201,7 @@ as possible as we can. Currently EDK II contains the following submodules
 - ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3\r
 - MdeModulePkg/Universal/RegularExpressionDxe/oniguruma\r
 - MdeModulePkg/Library/BrotliCustomDecompressLib/brotli\r
+- BaseTools/Source/C/BrotliCompress/brotli\r
 \r
 ArmSoftFloatLib is actually required by OpensslLib. It's inevitable\r
 in openssl-1.1.1 (since stable201905) for floating point parameter\r