You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ti...@apache.org on 2023/08/15 08:10:13 UTC

[curator-site] 01/01: initialize

This is an automated email from the ASF dual-hosted git repository.

tison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/curator-site.git

commit c17329ad4f61439818f63a6f1d4b110537511a2d
Author: tison <wa...@gmail.com>
AuthorDate: Mon Aug 14 14:47:17 2023 +0800

    initialize
    
    Signed-off-by: tison <wa...@gmail.com>
---
 .asf.yaml                                        |    41 +
 .editorconfig                                    |     6 +
 .github/workflows/deploy.yml                     |    43 +
 .gitignore                                       |    36 +
 .yarnrc.yml                                      |     1 +
 README.md                                        |    29 +
 babel.config.js                                  |     3 +
 community/history.md                             |    13 +
 community/index.md                               |    66 +
 community/new-committers.md                      |   156 +
 community/releasing-curator.md                   |   199 +
 community/submitting-pull-requests.md            |    41 +
 community/team.md                                |    21 +
 docs/about.md                                    |    48 +
 docs/assets/ph-quote.png                         |   Bin 0 -> 35331 bytes
 docs/async-details.md                            |   192 +
 docs/async.md                                    |    51 +
 docs/breaking-changes.md                         |    16 +
 docs/client.md                                   |    71 +
 docs/errors.md                                   |    47 +
 docs/examples.md                                 |    15 +
 docs/framework.md                                |   135 +
 docs/getting-started.md                          |    72 +
 docs/logging.md                                  |    13 +
 docs/migrations.md                               |    88 +
 docs/modeled-components.md                       |   150 +
 docs/modeled-typed.md                            |    75 +
 docs/modeled.md                                  |    53 +
 docs/recipes-barrier.md                          |    43 +
 docs/recipes-curator-cache.md                    |    45 +
 docs/recipes-distributed-atomic-long.md          |    66 +
 docs/recipes-distributed-delay-queue.md          |    73 +
 docs/recipes-distributed-id-queue.md             |    46 +
 docs/recipes-distributed-priority-queue.md       |    84 +
 docs/recipes-distributed-queue.md                |    78 +
 docs/recipes-double-barrier.md                   |    46 +
 docs/recipes-group-member.md                     |    57 +
 docs/recipes-leader-election.md                  |    74 +
 docs/recipes-leader-latch.md                     |    84 +
 docs/recipes-multi-shared-lock.md                |    39 +
 docs/recipes-node-cache.md                       |    41 +
 docs/recipes-path-cache.md                       |    67 +
 docs/recipes-persistent-node.md                  |    53 +
 docs/recipes-persistent-ttl-node.md              |    45 +
 docs/recipes-persistent-watcher.md               |    42 +
 docs/recipes-shared-counter.md                   |    72 +
 docs/recipes-shared-lock.md                      |    55 +
 docs/recipes-shared-reentrant-lock.md            |    87 +
 docs/recipes-shared-reentrant-read-write-lock.md |    46 +
 docs/recipes-shared-semaphore.md                 |   106 +
 docs/recipes-simple-distributed-queue.md         |    60 +
 docs/recipes-tree-cache.md                       |    45 +
 docs/recipes.md                                  |    71 +
 docs/schema.md                                   |   134 +
 docs/service-discovery-server.md                 |    93 +
 docs/service-discovery.md                        |   125 +
 docs/tech-note-01.md                             |    33 +
 docs/tech-note-02.md                             |    17 +
 docs/tech-note-03.md                             |    17 +
 docs/tech-note-04.md                             |    15 +
 docs/tech-note-05.md                             |     5 +
 docs/tech-note-06.md                             |     7 +
 docs/tech-note-07.md                             |    14 +
 docs/tech-note-08.md                             |    13 +
 docs/tech-note-09.md                             |     9 +
 docs/tech-note-10.md                             |    27 +
 docs/tech-note-11.md                             |    14 +
 docs/tech-note-12.md                             |    27 +
 docs/tech-note-13.md                             |    32 +
 docs/tech-note-14.md                             |    42 +
 docs/tech-note-15.md                             |    80 +
 docs/tech-notes.md                               |    19 +
 docs/utilities.md                                |    62 +
 docs/zk-compatibility-34.md                      |    79 +
 docusaurus.config.js                             |   132 +
 package.json                                     |    49 +
 sidebars.js                                      |    84 +
 sidebarsCommunity.js                             |    20 +
 src/components/Committers/index.module.css       |     4 +
 src/components/Committers/index.tsx              |    61 +
 src/css/custom.css                               |    30 +
 src/pages/download.md                            |   162 +
 src/pages/index.module.css                       |    27 +
 src/pages/index.tsx                              |     7 +
 static/.asf.yaml                                 |    41 +
 static/.nojekyll                                 |     0
 static/img/asf-logo.svg                          |   210 +
 static/img/curator-logo.svg                      |  7897 +++++++++++++++
 static/img/favicon.ico                           |   Bin 0 -> 1595 bytes
 tsconfig.json                                    |     7 +
 yarn.lock                                        | 11259 +++++++++++++++++++++
 91 files changed, 24060 insertions(+)

diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..9cebda0
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,41 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+github:
+  description: "Apache Curator Website"
+  homepage: https://curator.apache.org/
+  features:
+    issues: false
+    projects: false
+    wiki: false
+  labels:
+    - curator
+  enabled_merge_buttons:
+    squash:  true
+    merge:   false
+    rebase:  false
+  protected_branches:
+    main: {}
+    asf-site: {}
+
+publish:
+  whoami: asf-site
+
+notifications:
+  commits:      commits@curator.apache.org
+  pullrequests: commits@curator.apache.org
+  jobs:         commits@curator.apache.org
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..589f816
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,6 @@
+root = true
+
+[*]
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..0521e78
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,43 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+name: Pages
+
+on:
+  push:
+    branches:
+      - main
+  pull_request:
+
+jobs:
+  deploy:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions/setup-node@v3
+        with:
+          node-version: 19.x
+          cache: yarn
+      - run: corepack enable
+      - run: yarn install --frozen-lockfile
+      - run: yarn build
+      - uses: peaceiris/actions-gh-pages@v3
+        if: github.event_name != 'pull_request'
+        with:
+          github_token: ${{ secrets.GITHUB_TOKEN }}
+          publish_dir: ./build
+          publish_branch: asf-site
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..53ea518
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Dependencies
+/node_modules
+/.yarn
+
+# Production
+/build
+
+# Generated files
+.docusaurus
+.cache-loader
+
+# Misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/.yarnrc.yml b/.yarnrc.yml
new file mode 100644
index 0000000..3186f3f
--- /dev/null
+++ b/.yarnrc.yml
@@ -0,0 +1 @@
+nodeLinker: node-modules
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3e0be83
--- /dev/null
+++ b/README.md
@@ -0,0 +1,29 @@
+# Apache Curator Official Website
+
+This project keeps all sources used for building the Apache Curator official website, which is served at https://curator.apache.org/.
+
+## Prerequisite
+
+The Apache Curator website is powered by [Docusaurus 2](https://docusaurus.io/) and is built with Node 19 and Yarn 3. Check the [deployment workflow](.github/workflows/deploy.yml) for concrete requirements and instructions.
+
+## Installation
+
+```shell
+yarn
+```
+
+## Local Development
+
+```shell
+yarn start
+```
+
+This command starts a local development server and opens a browser window. Most changes are reflected live without having to restart the server.
+
+## Build
+
+```shell
+yarn build
+```
+
+This command generates static content into the `build` directory and can be served using any static content hosting service.
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..e00595d
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+  presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
+};
diff --git a/community/history.md b/community/history.md
new file mode 100644
index 0000000..6750c3b
--- /dev/null
+++ b/community/history.md
@@ -0,0 +1,13 @@
+# Project History
+
+Curator was initially developed by Jordan Zimmerman at Netflix to make writing ZooKeeper-based applications easier and more reliable. Curator was open-sourced by Netflix on GitHub as an Apache 2.0 licensed project in July 2011. During this time Curator has been formally released many times and has gained widespread adoption.
+
+The Curator Incubator Proposal was presented in February 2013 and was formally accepted into the Incubator in March 2013.
+
+Curator graduated to a Top Level Project in September 2013.
+
+## Rationale
+
+New users of ZooKeeper are surprised to learn that a significant amount of connection management must be done manually. For example, when the ZooKeeper client connects to the ensemble it must negotiate a new session, etc. This takes some time. If you use a ZooKeeper client API before the connection process has completed, ZooKeeper will throw an exception. These types of exceptions are referred to as "recoverable" errors. Curator automatically handles connection management, greatly simpli [...]
+
+The ZooKeeper documentation describes many possible uses for ZooKeeper calling each a "recipe". While the distribution comes bundled with a few implementations of these recipes, most ZooKeeper users will need to manually implement one or more of the recipes. Implementing a ZooKeeper recipe is not trivial. Besides the connection handling issues, there are numerous edge cases that are not well documented that must be considered. For example, many recipes require that an ephemeral-sequentia [...]
diff --git a/community/index.md b/community/index.md
new file mode 100644
index 0000000..6bc2741
--- /dev/null
+++ b/community/index.md
@@ -0,0 +1,66 @@
+---
+id: community
+title: Community
+---
+
+Every volunteer project obtains its strength from the people involved in it. We invite you to participate as much or as little as you choose.
+
+You can:
+
+* Use our project and provide a feedback.
+* Provide us with the use-cases.
+* Report bugs and submit patches.
+* Contribute code, documentation.
+
+## Mailing list
+
+| Name                       | Desc                            | Subscribe                                                | Unsubscribe                                                  | Post                                   | Archive                                                                  |
+|----------------------------|---------------------------------|----------------------------------------------------------|--------------------------------------------------------------|----------------------------------------|--------------------------------------------------------------------------|
+| user@curator.apache.org    | Usage issues and questions      | [Subscribe](mailto:user-subscribe@curator.apache.org)    | [Unsubscribe](mailto:user-unsubscribe@curator.apache.org)    | [Post](mailto:user@curator.apache.org) | [Archive](https://lists.apache.org/list.html?user@curator.apache.org)    |
+| dev@curator.apache.org     | Development related discussions | [Subscribe](mailto:dev-subscribe@curator.apache.org)     | [Unsubscribe](mailto:dev-unsubscribe@curator.apache.org)     | [Post](mailto:dev@curator.apache.org)  | [Archive](https://lists.apache.org/list.html?dev@curator.apache.org)     |
+| commits@curator.apache.org | All commits to our repositories | [Subscribe](mailto:commits-subscribe@curator.apache.org) | [Unsubscribe](mailto:commits-unsubscribe@curator.apache.org) | Read only list                         | [Archive](https://lists.apache.org/list.html?commits@curator.apache.org) |
+
+
+Please make sure you are subscribed to the mailing list you are posting to!
+
+If you are not subscribed to the mailing list, your message will either be rejected or you won't receive the response.
+
+### How to subscribe to a mailing list
+
+Before you can post a message to a mailing list, you need to subscribe to the list first.
+
+1. Send an email without any contents or subject to listname-subscribe@curator.apache.org. (replace listname with dev or user)
+2. Wait till you receive an email with the subject "confirm subscribe to listname@curator.apache.org". Reply to that email, without editing the subject or including any contents.
+3. Wait till you receive an email with the subject "WELCOME to listname@curator.apache.org".
+
+If you email us with a code snippet, make sure that:
+
+* you do not link to files in external services as such files can change, get deleted or the link might break and thus make an archived email thread useless
+* you paste text instead of screenshots of text
+* you keep formatting when pasting code in order to keep the code readable
+* there are enough import statements to avoid ambiguities
+
+## Issue tracker
+
+We use JIRA to track all code related issues: https://issues.apache.org/jira/browse/CURATOR
+
+You must have a [JIRA account](https://selfserve.apache.org/jira-account.html) in order to log cases and issues.
+
+### Bug reports
+
+Found bug? Enter an issue in the issue tracker.
+
+Before submitting an issue, please:
+
+* Verify that the bug does in fact exist.
+* Search the issue tracker to verify there is no existing issue reporting the bug you've found.
+* Consider tracking down the bug yourself in the source code of Curator and submitting a patch along with your bug report. This is a great time saver for the Curator developers and helps ensure the bug will be fixed quickly.
+
+### Enhancement
+
+Enhancements or new feature proposals are also welcome. The more concrete and rationale the proposal is, the greater the chance it will be incorporated into future releases.
+
+## Source code
+
+* Curator core repository: https://github.com/apache/curator
+* Curator website repository: https://github.com/apache/curator-website
diff --git a/community/new-committers.md b/community/new-committers.md
new file mode 100644
index 0000000..fa5fbcf
--- /dev/null
+++ b/community/new-committers.md
@@ -0,0 +1,156 @@
+# New Committers
+
+Welcome to Apache Curator!
+
+For new committers,
+
+* An Apache account will have been set up for you. Subscribe to all the Curator mailing lists by going [here](index.md#mailing-list)
+* Have a look at the general information on the Apache committers' page: http://www.apache.org/dev/#committers
+* Make sure to `svn checkout` the ASF committers repository: https://svn.apache.org/repos/private/committers
+* Add an entry for yourself to https://svn.apache.org/repos/private/committers/info/. The information there is used to generate the public information about ASF committers on the people.apache.org home page: http://people.apache.org/
+* Prepare for being a committer. See the next section.
+
+As your first commit, add yourself to the committers list in [the site source file](https://github.com/apache/curator-site/blob/main/src/components/Committers/index.tsx). This will make your name show up in the "team list" when the website is generated triggered by new commit.
+
+As always, do not hesitate to ask if you have any questions or have problems with your account.
+
+## Setting up
+
+Curator is built using Maven and Git. You should be familiar with both of these tools. For publishing, you also need to install GPG and create a key that is available from a well known public site.
+
+### GPG
+
+Download GPG from http://www.gnupg.org/download/.
+
+* Generate [PGP code signing keys](http://www.apache.org/dev/release-signing.html#generate)
+* Ensure that your [PGP signing keys](http://www.apache.org/dev/release-signing.html#generate) are available in the KEYS file that is in the release directory (see [SVN Setup](#svn-setup)).
+
+If you are not already a member of the [Web Of Trust](http://www.apache.org/dev/release-signing.html#web-of-trust) (WOT) it would be a good idea to do so. You can read more about key signing [here](http://people.apache.org/~henkp/sig/pgp-key-signing.txt).
+
+Ensure that you have set up your ssh keys on people.apache.org, otherwise you'll have to enter your login password a number of times (best use ssh-agent for this as well). A good overview of this process can be found [here](http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/) (ssh-copy-id and ssh-agent in particular).
+
+:::note
+
+When doing a release you will be asked for your PGP password multiple times unless you set up the gpg-agent. Mac users have reported trouble getting gpg-agent to work. You can also set your gpg-password in the Maven settings file (see below).
+
+:::
+
+### Maven Settings
+
+Your Maven settings (`~/.m2/settings.xml`) file should have the following (Note that `curator-website-checkout-path` is used as a temporary path when deploying the Curator website):
+
+```xml
+<settings>
+    ...
+    <servers>
+        ...
+        <server>
+            <id>apache.website.svnpub</id>
+            <username>Your Apache Username</username>
+            <privateKey>${user.home}/.ssh/id_rsa</privateKey>
+        </server>
+
+        <server>
+            <id>apache.releases.https</id>
+            <username>Your Apache Username</username>
+            <password>APACHE-PASSWORD-ENCODED</password>
+        </server>
+
+        <server>
+            <id>apache.snapshots.https</id>
+            <username>Your Apache Username</username>
+            <password>APACHE-PASSWORD-ENCODED</password>
+        </server>
+        ...
+    </servers>
+
+    <profiles>
+        <profile>
+            <properties>
+                ...
+    	        <gpg.keyname>id-of-your-pgp-key</gpg.keyname>
+                <gpg.passphrase>your-pgp-password</gpg.passphrase> <!-- use this if pgp-agent doesn't work for you -->
+                ...
+            </properties>
+            ...
+        </profile>
+        ...
+    </profiles>
+    ...
+</settings>
+```
+
+:::note
+
+You can store encrypted passwords your settings.xml if you want. Read the details here: http://maven.apache.org/guides/mini/guide-encryption.html
+
+:::
+
+### SVN Setup
+
+While Curator mainly uses git for source control, certain components required by Apache use SVN. You should check out the following SVN projects into unique local directories:
+
+* Staging directory: svn co https://dist.apache.org/repos/dist/dev/curator/
+* Release directory: svn co https://dist.apache.org/repos/dist/release/curator/
+
+You must add your GPG key to the KEYS file in "repos/dist/release/curator/" and commit the changes. E.g. (replace NAME with the username you used to generate the keys):
+
+```shell
+cd DIST RELEASE CURATOR directory
+(gpg --list-sigs NAME && gpg --armor --export NAME) >> KEYS
+svn commit -m "Added my keys"
+```
+
+## Development
+
+### GitHub Flow
+
+Curator loosely uses [GitHub Flow](http://scottchacon.com/2011/08/31/github-flow.html). The short form:
+
+* Anything in the master branch is deployable
+* The upcoming release is always "master"
+* To work on something new, create a descriptively named branch off of the upcoming release - usually the ID of the Jira issue (e.g. CURATOR-16)
+  * Commit to that branch locally and regularly push your work to the same named branch on the server
+  * When you need feedback or help, or you think the branch is ready for merging, send an email on dev@curator.apache.org and ask for the branch to be reviewed
+  * After someone else has reviewed and signed off on the feature, merge it into "master"
+
+#### Code Style
+
+Curator uses [Spotless](https://github.com/diffplug/spotless) to automatically apply code style. The configured style is derived from the [Palantir](https://github.com/palantir/palantir-java-format) style.
+
+You can run the following command to automatically apply code style:
+
+```shell
+./mvnw spotless:apply
+```
+
+### Versioning
+
+Curator uses [semantic versioning](http://semver.org/). The best description of this is from Curator committer [Eric Tschetter](http://www.quora.com/What-is-semantic-versioning):
+
+:::info
+
+Essentially, it tells you the API compatibility between multiple dependencies. For example,
+
+If you have version 1.0.0 and 1.0.1, you can use either one and you will not run into errors due to API conflicts (i.e. in Java, no ClassNotFound or NoSuchMethod type exceptions)
+
+If you have 1.0.0 and 1.1.0, you can replace 1.0.0 with 1.1.0, and you will not have errors due to API conflicts. If you try to swap 1.0.0 in place of something that depends on 1.1.0, however, you *might* have errors due to API conflicts. I.e. you can go forward without errors, but not backwards
+
+If you have 1.0.0 and 2.0.0, you will likely have errors due to API conflicts if you replace either one with the other.
+
+:::
+
+Make sure you choose an appropriate version for each release. The Maven build will output messages if there are API compatibility issues (look for the "clirr-maven-plugin" messages).
+
+### GitHub Mirror and Pull Requests
+
+Curator's source is mirrored on GitHub at: https://github.com/apache/curator. Non-committers are [asked to fork this repository and submit pull requests](submitting-pull-requests.md) (PR) for changes. When a PR is received, a Curator committer can test and possibly merge it by:
+
+* Create a branch for the PR: `git checkout -b <branch name>` - the branch name is usually the JIRA ID of the issue
+* Pull the changes from the PR: `git pull https://github.com/<users-name>/curator.git <branch>` (or you can use `gh pr checkout <pr-number>` with [GitHub CLI](https://cli.github.com/)).
+* Test, updated, etc. the change. Periodically push the change to the main repo. For the initial push: `git push -u origin <branch name>`
+* If the change is accepted, merge it into the master branch and push the master branch. This will automatically close the GitHub PR. NOTE: Please use `git merge --squash` as this makes it easier to read the history and do cherry-pick.
+
+### Maven Checks
+
+Regardless of which IDE you use, you should periodically perform a `mvn clean install` to validate that the various configured checks are passing as well as the unit tests.
diff --git a/community/releasing-curator.md b/community/releasing-curator.md
new file mode 100644
index 0000000..3d2a609
--- /dev/null
+++ b/community/releasing-curator.md
@@ -0,0 +1,199 @@
+# Releasing Curator
+
+First of all, read the [New Committers](new-committers.md) guide to set up all necessary configs.
+
+To release Curator, the following steps must be followed:
+
+1. The binary artifacts must be staged
+2. The Apache release must be staged
+3. The release must be voted on
+4. If the vote succeeds:
+   * The Apache release must be promoted
+   * The binary artifacts must be released
+
+## Prepare the Release
+
+1. Do a dry run of the release/prepare step by executing `mvn -P apache-release release:prepare -DdryRun=true`. The dry run will not commit any changes back to Git and gives you the opportunity to verify that the release process will complete as expected. If you need to cancel, execute `mvn release:clean` and then reset via `git reset --hard`.
+2. Verify that the release process completed as expected:
+   * The release plugin will create `pom.xml.tag` files which contain the changes that would have been committed to SVN. The only differences between `pom.xml.tag` and its corresponding `pom.xml` file should be the version number.
+   * If other formatting changes have been made you should review the changes and then commit and push them.
+   * Once any failures or required updates have been committed to svn, rollback the release prepare files: `mvn release:rollback`
+3. Execute the release/prepare step for real this time
+   * You'll be prompted for the same version information and optionally your GPG
+   * passphrase again
+   * mvn -P apache-release release:prepare
+   * mvn -P apache-release release:perform
+   * git push --tags
+4. Verify the staged artifacts in the Apache Nexus repository:
+   * Go to: https://repository.apache.org/index.html
+   * Login
+   * Select Staging Repositories under the Build Promotion section on the left hand side
+   * Select the repository from the main window
+   * Select the content tab at the bottom of the screen and navigate through the artifact tree and double check things.
+5. Close the Nexus staging repo by clicking on the curator repo and clicking the "Close" button.
+
+:::caution
+
+DO NOT release the binaries yet.
+
+:::
+
+## Stage the Apache Release
+
+1. At the root of your Curator directory, find the target directory.
+2. In the directory you will now find 3 files that need to be staged:
+   * apache-curator-X.X.X-source-release.zip
+   * apache-curator-X.X.X-source-release.zip.asc
+   * apache-curator-X.X.X-source-release.zip.sha512
+3. These files must be put into the staging directory (svn co https://dist.apache.org/repos/dist/dev/curator/)
+   * Create a directory for the release
+   * `cp` the files to this directory
+   * Remove any old release directories via: `svn rm`
+   * Add the new directory via: `svn add`
+   * Commit via: `svn commit`
+
+## Initiate a Vote On the Release
+
+Create a VOTE email thread on dev@curator.apache.org to record votes as replies (see [Example Emails](#example-emails)).
+
+* The release needs 3 +1 votes from the PMC
+* If the Vote succeeds, you can promote the release
+* Regardless of the vote result, send a RESULT VOTE email (see [Example Emails](#example-emails)).
+* In the rare case that the release needs to be canceled:
+  * Go to: https://repository.apache.org/index.html and "drop" the build.
+  * Send a CANCEL VOTE email (see [Example Emails](#example-emails)).
+  * If you need to delete the tag, run `git tag -d <tag>` and `git push origin :refs/tags/<tag>`.
+
+## Promote the Release
+
+1. These files must be put into the release directory (svn co https://dist.apache.org/repos/dist/release/curator/)
+   * Create a directory for the release
+   * `cp` the files to this directory and then `svn commit`
+2. Release the binary artifacts
+   * Go to: https://repository.apache.org/index.html
+   * Select the curator release and click the "Release" button.
+3. Announce the release (see [Example Emails](#example-emails)) to these mailing lists. Remember to use your apache.org email address to send the email:
+   * user@curator.apache.org
+   * dev@curator.apache.org
+   * announce@apache.org
+   * user@zookeeper.apache.org
+4. Update the Download page: https://curator.apache.org/download
+   * Update the "Current release" section with the new release
+   * Add the new release to the "History" section
+   * Make sure all links to downloads, release notes, etc. are "https"
+5. You MUST publish the Curator Website (see below) prior to the next step
+6. Update the Apache Reporter Tool: https://reporter.apache.org/addrelease.html?curator
+7. Mark the version as released in JIRA
+   1. Go here: https://issues.apache.org/jira/browse/CURATOR/?selectedTab=com.atlassian.jira.jira-projects-plugin:versions-panel
+   2. Click the "Manage Versions" button
+   3. Set the release date for the version
+   4. Create a new Version and set the start date
+   5. Exit administration mode by clicking "Overview" in the near-top-left area
+
+## Clean Up Old Releases
+
+Per http://www.apache.org/dev/release.html#when-to-archive - remove old releases from the https://dist.apache.org/repos/dist/release/curator/ and https://dist.apache.org/repos/dist/dev/curator/ repos using `svn rm`.
+
+## Example Emails
+
+### Release Vote Email Example
+
+```text
+To: dev@curator.apache.org
+Subject: [VOTE] Release Apache Curator version X.X.X
+
+Hello,
+
+This is the vote for Apache Curator version X.X.X
+
+*** Please download, test and vote within approx. 72 hours
+
+Note that we are voting upon the source (tag) and binaries are provided for convenience.
+
+Link to release notes:
+https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12326663
+
+Staging repo:
+https://dist.apache.org/repos/dist/dev/curator/X.X.X/
+
+Binary artifacts:
+https://repository.apache.org/content/repositories/orgapachecurator-NNNN
+
+The tag to be voted upon:
+https://github.com/apache/curator/releases/tag/apache-curator-X.X.X
+
+Curator's KEYS file containing PGP keys we use to sign the release:
+https://www.apache.org/dist/curator/KEYS
+
+[ ] +1  approve
+[ ] +0  no opinion
+[ ] -1  disapprove (and reason why)
+```
+
+### Release Vote Result Email
+
+```text
+To: dev@curator.apache.org
+Subject: [RESULT] [VOTE] Release Apache Curator x.y.z
+
+Hello,
+
+The vote to release Curator x.y.z has passed/failed.
+
++1 (binding):
+
+    Patrick Hunt
+    John Galt
+
++1 (non binding):
+
+    Jordan Zimmerman
+    Jay Zarfoss
+
+...if vote was successful..
+I will promote the artifacts to the central repo.
+```
+
+### Release Announcement Email Example
+
+```text
+To: announce@apache.org, user@curator.apache.org, dev@curator.apache.org, user@zookeeper.apache.org
+Subject: [ANNOUNCE] Apache Curator x.y.z released
+
+Hello,
+
+The Apache Curator  team is pleased to announce the  release of version x.y.z. Apache  Curator is a Java/JVM client  library for Apache ZooKeeper[1], a distributed  coordination service. Apache Curator includes a  high-level API framework and utilities to  make using Apache ZooKeeper much easier  and more reliable. It also includes  recipes for common use cases and  extensions such as service discovery and a Java 8 asynchronous DSL. For more details, please visit the project website: htt [...]
+
+The download page for Apache Curator is here:
+https://curator.apache.org/releases.html
+
+The binary artifacts for Curator are available from Maven Central and its mirrors.
+
+For general information on Apache Curator, please visit the project website:
+https://curator.apache.org
+
+Release Notes:
+
+<<PASTE RELEASE NOTES FROM JIRA HERE>>
+
+
+Regards,
+
+The Curator Team
+
+[1] Apache ZooKeeper https://zookeeper.apache.org/
+```
+
+### Cancel Vote Email Example
+
+```text
+To: dev@curator.apache.org
+Subject: [CANCEL] [VOTE] Release Apache Curator version X.X.X
+
+Hello,
+
+The vote for Apache Curator version X.X.X has been canceled due to [reason].
+
+Regards,
+The Curator Team
+```
diff --git a/community/submitting-pull-requests.md b/community/submitting-pull-requests.md
new file mode 100644
index 0000000..2e441a5
--- /dev/null
+++ b/community/submitting-pull-requests.md
@@ -0,0 +1,41 @@
+# Submitting Pull Requests
+
+## Creating A Pull Request
+
+Apache Curator uses the [Git version control system](https://docs.github.com/en/get-started/quickstart/set-up-git).
+
+Curator also uses Apache's GitHub mirroring. All source code/bug fix submissions should be made via GitHub Pull Request.
+
+[Create your Pull Request](https://help.github.com/articles/creating-a-pull-request) against the latest revision of the files by forking the mirrored project at https://github.com/apache/curator (keep your fork in sync from then on).
+
+You must also create an issue in [Curator's Issue Tracker](https://issues.apache.org/jira/browse/CURATOR) (reference the Pull Request in the issue) and create a git branch with the same name as the Issue. All discussion, comments, etc. regarding the Pull Request should be in the Issue Tracker and/or GitHub and not by email.
+
+* Fork the Curator project from GitHub
+* Create a branch with the same name as the JIRA Issue number (e.g. CURATOR-1234) in your fork and push it to GitHub
+* Create a Pull Request in GitHub. The name of the Pull Request should be in the form: `[CURATOR-XXX]` Summary of the Issue
+* The Apache infrastructure tools will automatically add a reference to your PR in the JIRA Issue
+
+## Apache Contribution Guide
+
+Please read the [Apache Contribution Guide](http://www.apache.org/foundation/getinvolved.html).
+
+## Tools and Libraries
+
+Curator uses the following tools and libraries:
+
+* Java 8
+* [Maven](http://maven.apache.org/)
+* [Jira](https://www.atlassian.com/software/jira)
+* [TestNG](http://testng.org/doc/index.html)
+* [SLF4J](http://www.slf4j.org/)
+* [Google Guava](https://code.google.com/p/guava-libraries/)
+
+## Style and Development Guide
+
+* Use spaces not tabs.
+* Match the style of the Curator files. Any patches will be re-formatted to match Curator style.
+* There must be a JIRA Issue created for your change.
+* Create a git branch with the same name as the Issue.
+* All submissions must have TestNG tests.
+* All submissions must have proper Apache license headers. Run the following command to make sure all files have headers: `docker run --rm -v $(pwd):/github/workspace ghcr.io/korandoru/hawkeye-native:v3 format`.
+* The simpler and smaller the change the more likely it is to be accepted.
diff --git a/community/team.md b/community/team.md
new file mode 100644
index 0000000..9056bcd
--- /dev/null
+++ b/community/team.md
@@ -0,0 +1,21 @@
+# Project Team
+
+A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.
+
+The project team comprises Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.
+
+## Members
+
+The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.
+
+Note that the list could be outdated. Please find the most up-to-date list [here](https://people.apache.org/phonebook.html?project=curator).
+
+````mdx-code-block
+import Committers from "../src/components/Committers";
+
+<Committers/>
+````
+
+## Contributors
+
+You can find most Curator contributors on the [contributor graph](https://github.com/apache/curator/graphs/contributors).
diff --git a/docs/about.md b/docs/about.md
new file mode 100644
index 0000000..e0db6b2
--- /dev/null
+++ b/docs/about.md
@@ -0,0 +1,48 @@
+---
+sidebar_label: 'About'
+---
+
+# Welcome to Apache Curator
+
+## What is Curator?
+
+Curator is a keeper or custodian of a museum or other collection - A ZooKeeper Keeper.
+
+Apache Curator is a Java/JVM client library for [Apache ZooKeeper](https://zookeeper.apache.org/), a distributed coordination service. It includes a high level API framework and utilities to make using Apache ZooKeeper much easier and more reliable. It also includes recipes for common use cases and extensions such as service discovery and a Java 8 asynchronous DSL.
+
+![Patrick Hunt's Quote](assets/ph-quote.png)
+
+## Download
+
+[Download Apache Curator](/download) from the release page.
+
+## Important Compatibility Updates
+
+Version 5.0 of Curator has a few breaking changes. Please read the details here: [Curator 5.0 Breaking Changes](breaking-changes.md).
+
+## Getting Started
+
+See the page for quick start: [Getting Started](getting-started.md).
+
+## Stack Overflow
+
+There's lots of great help on Stack Overflow:
+
+* [Main "Apache Curator" tag](https://stackoverflow.com/questions/tagged/apache-curator)
+
+## Maven / Artifacts
+
+Curator binaries are published to Maven Central. Curator consists of several artifacts. Which artifacts to use depends on your needs. For most users, the only artifact you need is curator-recipes.
+
+For OSGi users, there's another set of artifacts of classifier osgi available in Maven Central. These artifacts are not shaded, thus no package relocation is performed inside, so hopefully they could start as bundles when their dependencies are fulfilled by dedicated bundles, e.g. guava.
+
+| GroupID/Org        | ArtifactID/Name            | Description                                                                                                                                                         |
+|--------------------|----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| org.apache.curator | curator-recipes            | All of the recipes. Note: this artifact has dependencies on client and framework and, so, Maven (or whatever tool you're using) should pull those in automatically. |
+| org.apache.curator | curator-async              | Asynchronous DSL with O/R modeling, migrations and many other features.                                                                                             |
+| org.apache.curator | curator-framework          | The Curator Framework high level API. This is built on top of the client and  should pull it in automatically.                                                      |
+| org.apache.curator | curator-client             | The Curator Client - replacement for the ZooKeeper class in the ZK distribution.                                                                                    |
+| org.apache.curator | curator-test               | Contains the TestingServer, the TestingCluster and a few other tools useful for  testing.                                                                           |
+| org.apache.curator | curator-examples           | Example usages of various Curator features.                                                                                                                         |
+| org.apache.curator | curator-x-discovery	       | A Service Discovery implementation built on the Curator Framework.                                                                                                  |
+| org.apache.curator | curator-x-discovery-server | A RESTful server that can be used with Curator Discovery.                                                                                                           |
diff --git a/docs/assets/ph-quote.png b/docs/assets/ph-quote.png
new file mode 100644
index 0000000..28da024
Binary files /dev/null and b/docs/assets/ph-quote.png differ
diff --git a/docs/async-details.md b/docs/async-details.md
new file mode 100644
index 0000000..085d9e9
--- /dev/null
+++ b/docs/async-details.md
@@ -0,0 +1,192 @@
+---
+displayed_sidebar: docs
+---
+
+# Curator Async Usage
+
+With this DSL you can do asynchronous tasks in a more natural, functional way using [Java 8 lambdas](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html). For example:
+
+```java
+// let "client" be a CuratorFramework instance
+AsyncCuratorFramework async = AsyncCuratorFramework.wrap(client);
+async.checkExists().forPath(somePath).thenAccept(stat -> mySuccessOperation(stat));
+```
+
+## Usage
+
+:::note
+
+To use Curator Async, you should be familiar with Java 8's lambdas, CompletedFuture and CompletionStage.
+
+:::
+
+Create a [CuratorFramework](framework.md) instance in the normal way. You then wrap this instance using AsyncCuratorFramework. i.e.,
+
+```java
+// let "client" be a CuratorFramework instance
+AsyncCuratorFramework async = AsyncCuratorFramework.wrap(client);
+```
+
+AsyncCuratorFramework has most of the same builder methods that CuratorFramework does with some important differences:
+
+* AsyncCuratorFramework builders return AsyncStage instances
+* AsyncCuratorFramework builders have no checked exceptions
+* Many of the builder methods have been simplified/clarified
+* All builders invoke the asynchronous versions of ZooKeeper APIs
+* Watchers also use CompletionStages - see below for details
+
+### AsyncStage
+
+AsyncStage instances extend Java 8's CompletionStage. CompletionStage objects can be "completed" with a success value or an exception. The parameterized type of the AsyncStage will be whatever the builder used would naturally return as a success value. E.g. the async getData() builder's AsyncStage is parameterized with "byte[]".
+
+### Watchers
+
+ZooKeeper's watchers also get the CompletionStage treatment in Curator Async. To add a watcher, call watched() prior to starting the appropriate builders. E.g.,
+
+```java
+async.watched().getData().forPath(path) ...
+```
+
+Thus, a data watcher will be set on the specified path. You access the CompletionStage for the watcher by using the event() method of AsyncStage. Here is a complete example:
+
+```java
+async.watched().getData().forPath(path).event().thenAccept(watchedEvent -> watchWasTriggered(watchedEvent));
+```
+
+ZooKeeper calls watchers when there is a connection loss. This can make using the CompletionStage somewhat complicated (see AsyncEventException below). If you are not interested in watcher connection problems, you can tell Curator Async to not send them by calling:
+
+```java
+// only complete the CompletionStage when the watcher is successfully triggered
+// i.e. don't complete on connection issues
+async.with(WatchMode.successOnly).watched()...
+```
+
+### AsyncEventException
+
+When an async watcher fails the exception set in the CompletionStage will be of type `AsyncEventException`. This exception allows you to see the KeeperState that caused the trigger and allows you to reset the completion stage. Reset is needed because ZooKeeper temporarily triggers watchers when there is a connection event (unless `WatchMode.successOnly` is used). However, the watcher stays set for the original operation. Use `AsyncEventException#reset` to start a new completion stage tha [...]
+
+E.g.,
+
+```java
+AsyncStage stage = ...
+stage.event().exceptionally(e -> {
+    AsyncEventException asyncEx = (AsyncEventException) e;
+
+    // ... note a connection problem ...
+
+    asyncEx.reset().thenAccept(watchedEvent -> watchWasTriggered(watchedEvent));
+});
+```
+
+### AsyncResult
+
+As a convenience, you can use `AsyncResult` to combine ZooKeeper method value, the ZooKeeper result code and any exception in one object allowing you to not worry about exceptional completions. i.e. the `CompletionStage` returned by `AsyncResult.of()` always completes successfully with an AsyncResult object.
+
+AsyncResult has methods to get either the method result (a path, Stat, etc.), a KeeperException code or a general exception:
+
+```java
+Optional<T> getValue();
+KeeperException.Code getCode();
+Optional<Throwable> getException();
+```
+
+Use AsyncResult by wrapping an `AsyncStage` value. i.e.,
+
+```java
+CompletionStage<AsyncResult<Stat>> resultStage = AsyncResult.of(async.checkExists().forPath(path));
+resultStage.thenAccept(result -> {
+    if ( result.getValue().isPresent() ) {
+        // ...
+    } else if ( result.getCode() == KeeperException.Code.NOAUTH ) {
+        // ...
+    }
+    // etc.
+});
+```
+
+## Examples
+
+### Create a sequential ZNode
+
+Create a sequential ZNode and, once successfully completed, set a watcher on the ZNode.
+
+:::caution
+
+This code does not deal with errors. Should a connection problem occur or another exception occur, the completion lambda will never be called.
+
+:::
+
+```java
+async.create()
+    .withMode(PERSISTENT_SEQUENTIAL)
+    .forPath(path)
+    .thenCompose(actualPath -> async.watched()
+                                .getData()
+                                .forPath(actualPath)
+                                .thenApply(() -> watchTriggered()));
+
+```
+
+### AsyncStage canonical usage
+
+This is the canonical way to deal with AsyncStage. Use the `handle()` method which provides both the success value and the exception. The exception will be non-null on error.
+
+```java
+async.create().withOptions(EnumSet.of(doProtected)).forPath(path).handle((actualPath, exception) -> {
+    if (exception != null) {
+        // handle problem
+    } else {
+        // actualPath is the path created
+    }
+    return null;
+});
+```
+
+### Simplified usage via AsyncResult
+
+```java
+AsyncResult.of(async.create().withOptions(EnumSet.of(doProtected)).forPath(path)).thenAccept(result -> {
+    if (result.getRawValue() != null) {
+        // result.getRawValue() is the path created
+    } else {
+        // ...
+    }
+});
+```
+
+### Using executors
+
+Your completion routines can operate in a separate thread if you provide an executor.
+
+```java
+async.create()
+    .withOptions(EnumSet.of(createParentsIfNeeded))
+    .forPath("/a/b/c")
+    .thenAcceptAsync(path -> handleCreate(path), executor);
+```
+
+### Separate handlers
+
+This example shows specifying separate completion handlers for success and exception.
+
+```java
+AsyncStage<byte[]> stage = async.getData().forPath("/my/path");
+stage.exceptionally(e -> {
+    if (e instanceof KeeperException.NoNodeException) {
+        // handle no node
+    } else {
+        // handle other
+    }
+    return null;
+});
+stage.thenAccept(data -> processData(data));
+```
+
+### Synchronous usage
+
+CompletionStage provides a blocking method as well so that you can block to get the result of an operation. i.e. this makes it possible to use the async APIs in a synchronous way.
+
+```java
+// NOTE: get() specifies a checked exception
+async.create().forPath("/foo").toCompletableFuture().get();
+```
diff --git a/docs/async.md b/docs/async.md
new file mode 100644
index 0000000..4923eae
--- /dev/null
+++ b/docs/async.md
@@ -0,0 +1,51 @@
+# Curator Async
+
+## Packaging
+
+Curator Async is in its own package in Maven Central: curator-x-async
+
+## What Is Curator Async?
+
+Curator Async is a [DSL](https://en.wikipedia.org/wiki/Domain-specific_language) that wraps existing `CuratorFramework` instances. This DSL is entirely asynchronous and uses [Java 8's CompletionStage](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletionStage.html) mechanism for chaining, composing, etc. Additionally, Curator's original DSL has been cleaned up and simplified, in particular for operations such as `create()`.
+
+With this DSL you can do asynchronous tasks in a more natural, functional way using [Java 8 lambdas](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html).
+
+The Curator Async package also contains a strongly typed DSL and strongly typed Cache Recipe wrappers that allows you to map a ZooKeeper path to a serializable class as opposed to raw byte arrays.
+
+## [Curator Async](async-details.md)
+
+With this DSL you can do asynchronous tasks in a more natural, functional way using Java 8 lambdas. For example:
+
+```java
+// let "client" be a CuratorFramework instance
+AsyncCuratorFramework async = AsyncCuratorFramework.wrap(client);
+async.checkExists().forPath(somePath).thenAccept(stat -> mySuccessOperation(stat));
+```
+
+See [Curator Async](async-details.md) for details.
+
+## [Modeled Curator](modeled.md)
+
+This is a strongly typed DSL that allows you to map a Curator-style client to:
+
+* A ZooKeeper path (supporting parameterized substitutions)
+* A serializer for the data stored at the path
+* Options for how nodes should be created (sequential, compressed data, ttl, etc.)
+* ACLs for the nodes at the path
+* Options for how to delete nodes (guaranteed, deleting children, etc.)
+
+For example:
+
+```java
+ModeledFramework<Foo> modeled = ModeledFramework.wrap(client, fooModelSpec);
+modeled.set(new Foo());
+```
+
+See [Modeled Curator](modeled.md) for details.
+
+## [Migrations](migrations.md)
+
+Curator Migrations allow you pre-apply transactions in a staged manner so that you can ensure a consistent state for parts of your ZooKeeper node hierarchy in a manner similar to database migration utilities.
+
+See [Migrations](migrations.md) for details.
+
diff --git a/docs/breaking-changes.md b/docs/breaking-changes.md
new file mode 100644
index 0000000..e5513c6
--- /dev/null
+++ b/docs/breaking-changes.md
@@ -0,0 +1,16 @@
+# Breaking Changes
+
+## Curator 5.0 Breaking Changes
+
+Curator 5.0 contains a few non-backward compatible/breaking changes from previous versions.
+
+* ZooKeeper 3.4.x is no longer supported (the associated `Compatibility` classes/methods have been removed). If you still need to use Curator with ZooKeeper 3.4.x you will need to use a previous version. [Click here for details](zk-compatibility-34.md).
+* The old `ListenerContainer` classes have been removed so as not to leak Guava classes into Curator APIs. Instead, use the new `StandardListenerManager`.
+* Exhibitor support has been removed.
+* `ConnectionHandlingPolicy` and related classes have been removed.
+* The `Reaper` and `ChildReaper` classes/recipes have been removed. You should use ZooKeeper container nodes instead.
+* `newPersistentEphemeralNode()` and `newPathChildrenCache()` were removed from `GroupMember`.
+* `ServiceCacheBuilder<T> executorService(CloseableExecutorService executorService)` was removed from `ServiceCacheBuilder`.
+* `ServiceProviderBuilder<T> executorService(CloseableExecutorService executorService)` was removed from `ServiceProviderBuilder`.
+* `static boolean shouldRetry(int rc)` was removed from `RetryLoop`.
+* `static boolean isRetryException(Throwable exception)` was removed from `RetryLoop`.
diff --git a/docs/client.md b/docs/client.md
new file mode 100644
index 0000000..90cfcfa
--- /dev/null
+++ b/docs/client.md
@@ -0,0 +1,71 @@
+# Client
+
+## IMPORTANT NOTE
+
+The Curator Client is a low-level API. It is strongly recommended that you use the Curator [Framework](framework.md) instead of directly using CuratorZookeeperClient.
+
+## Background
+
+CuratorZookeeperClient is a wrapper around ZooKeeper's Java client that makes client access to ZooKeeper much simpler and less error prone. It provides the following features:
+
+* Continuous connection management - ZooKeeper has many caveats regarding connection management (see the ZooKeeper FAQ for details). CuratorZookeeperClient takes care of most of them automatically.
+* Operation retry utilities - a method for retrying operations is provided
+* Test ZooKeeper server - an in-process, self-contained ZooKeeper test server is provided that can be used for test cases and experimentation
+
+## Method Documentation
+
+| Method                          | Description                                                                                                                                                                                                                                                                                                                                                        |
+|---------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Constructor                     | Create a connection to a given ZooKeeper cluster. You can pass in an optional watcher. You must provide a Retry Policy.                                                                                                                                                                                                                                            |
+| getZooKeeper()                  | Returns the managed ZooKeeper instance. **IMPORTANT NOTES**: a) It takes time for a connection to complete, you should validate that the connection is complete before using other methods. b) The managed ZooKeeper instance can change due to certain events. Do not hold on to the instance for long periods. Always get a fresh reference from getZooKeeper(). |
+| isConnected()                   | Returns true if the ZooKeeper client is currently connected (this can always change due to errors)                                                                                                                                                                                                                                                                 |
+| blockUntilConnectedOrTimedOut() | A convenience method that blocks until the initial connection is successful or times out                                                                                                                                                                                                                                                                           |
+| close()                         | Close the connection                                                                                                                                                                                                                                                                                                                                               |
+| setRetryPolicy()                | Change the retry policy                                                                                                                                                                                                                                                                                                                                            |
+| newRetryLoop()                  | Allocate a new Retry Loop - see details below                                                                                                                                                                                                                                                                                                                      |
+
+## Retry Loop
+
+For a variety of reasons, operations on a ZooKeeper cluster can fail. Best practices dictate that these operations should be retried. The Retry Loop mechanism provides the means to do this. **Every operation should be wrapped in a retry loop**. Here's the canonical usage:
+
+```java
+RetryLoop retryLoop = client.newRetryLoop();
+while (retryLoop.shouldContinue()) {
+   try {
+       // perform your work
+       ...
+       // it's important to re-get the ZK instance as there may have been an error and the instance was re-created
+       ZooKeeper zk = client.getZookeeper();
+       retryLoop.markComplete();
+   } catch (Exception e) {
+       retryLoop.takeException(e);
+   }
+}
+```
+
+The Retry Loop maintains a count of retries and determines if a given error is retry-able. If an operation is a candidate for retrying, the Retry Policy is invoked to determine if the retry should proceed.
+
+As a convenience, RetryLoop has a static method that takes a Callable to perform a complete retry loop on. E.g.,
+
+```java
+RetryLoop.callWithRetry(client, new Callable<Void>() {
+      @Override
+      public Void call() throws Exception {
+          // do your work here - it will get retried if needed
+          return null;
+      }
+});
+```
+
+## Retry Policies
+
+A retry policy is a mechanism to alter retry behavior. It is abstracted by the RetryPolicy interface which has one method: `public boolean allowRetry(int retryCount, long elapsedTimeMs);`. Before a retry is attempted, allowRetry() is called with the current retry count and the elapsed time of the operation. If the policy allows it, the retry is attempted. If not, an exception is thrown.
+
+Several retry policy implementations are provided (in the package org.apache.curator.retry):
+
+| Policy Name             | Description                                                                                |
+|-------------------------|--------------------------------------------------------------------------------------------|
+| ExponentialBackoffRetry | Retry policy that retries a set number of times with increasing sleep time between retries |
+| RetryNTimes             | Retry policy that retries a max number of times                                            |
+| RetryOneTime            | A retry policy that retries only once                                                      |
+| RetryUntilElapsed       | A retry policy that retries until a given amount of time elapses                           |
diff --git a/docs/errors.md b/docs/errors.md
new file mode 100644
index 0000000..fe9a1cd
--- /dev/null
+++ b/docs/errors.md
@@ -0,0 +1,47 @@
+# Error Handling
+
+## Background
+
+ZooKeeper is a very low level system that requires users to do a lot of housekeeping. See:
+
+* https://wiki.apache.org/hadoop/ZooKeeper/FAQ
+
+The Curator [Framework](framework.md) is designed to hide as much of the details/tedium of this housekeeping as is possible.
+
+## Connection Guarantees
+
+The Curator Framework constantly monitors the connection to the ZooKeeper ensemble. Further every operation is wrapped in a retry mechanism. Thus, the following guarantees can be made:
+
+* Every Curator operation properly waits until the ZooKeeper connection is established
+* Every Curator Framework operation (create, getData, etc.) is guaranteed to manage connection loss and/or session expiration per the currently set retry policy
+* If the connection is temporarily lost, Curator will attempt to retry the operation until it succeeds per the currently set retry policy
+* All Curator recipes attempt to deal with connection issues in an appropriate way
+
+## Notifications
+
+Curator exposes several listenable interfaces for clients to monitor the state of the ZooKeeper connection.
+
+`ConnectionStateListener` is called when there are connection disruptions. Clients can monitor these changes and take appropriate action. These are the possible state changes:
+
+| State Change | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 [...]
+|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| CONNECTED    | Sent for the first successful connection to the server. NOTE: You will only get one of these messages for any CuratorFramework instance.                                                                                                                                                                                                                                                                                                                                                    [...]
+| READONLY     | The connection has gone into read-only mode. This can only happen if you pass true for CuratorFrameworkFactory.Builder.canBeReadOnly(). See the ZooKeeper doc regarding read only connections: https://wiki.apache.org/hadoop/ZooKeeper/GSoCReadOnlyMode. The connection will remain in read only mode until another state change is sent.                                                                                                                                                  [...]
+| SUSPENDED    | There has been a loss of connection. Leaders, locks, etc. should suspend until the connection is re-established.                                                                                                                                                                                                                                                                                                                                                                            [...]
+| RECONNECTED  | A suspended or lost connection has been re-established.                                                                                                                                                                                                                                                                                                                                                                                                                                     [...]
+| LOST         | Curator will set the LOST state when it believes that the ZooKeeper session has expired. ZooKeeper connections have a session. When the session expires, clients must take appropriate action. In Curator, this is complicated by the fact that Curator internally manages the ZooKeeper connection. Curator will set the LOST state when any of the following occurs: a) ZooKeeper returns a Watcher.Event.KeeperState.Expired or KeeperException.Code.SESSIONEXPIRED; b) Curator closes t [...]
+
+`UnhandledErrorListener` is called when a background task, etc. catches an exception. In general, Curator users shouldn't care about these as they are logged. However, you can listen for them if you choose.
+
+## Error Policy
+
+Curator has a pluggable error policy. The default policy takes the conservative approach of treating connection states SUSPENDED and LOST the same way. i.e. when a recipe sees the state change to SUSPENDED it will assume that the ZooKeeper session is lost and will clean up any watchers, nodes, etc. You can choose, however, a more aggressive approach by setting the error policy to only treat LOST (i.e. true session loss) as an error state. Do this in the CuratorFrameworkFactory via: `conn [...]
+
+## Recipes
+
+In general, the recipes attempt to deal with errors and connection issues. See the doc for each recipe for details on how it deals with errors.
+
+
+
+
+
diff --git a/docs/examples.md b/docs/examples.md
new file mode 100644
index 0000000..f94a274
--- /dev/null
+++ b/docs/examples.md
@@ -0,0 +1,15 @@
+# Examples
+
+This module contains example usages of various Curator features. Each directory in the module is a separate example.
+
+| Directory | Description                                             |
+|-----------|---------------------------------------------------------|
+| leader    | Example leader selector code                            |
+| cache     | Example CuratorCache usage                              |
+| locking   | Example of using InterProcessMutex                      |
+| discovery | Example usage of the Curator's ServiceDiscovery         |
+| framework | A few examples of how to use the CuratorFramework class |
+| async     | Example AsyncCuratorFramework code                      |
+| modeled   | ModeledFramework and Modeled Cache examples             |
+
+See the [examples source repo](https://github.com/apache/curator/tree/master/curator-examples/src/main/java) for each example.
diff --git a/docs/framework.md b/docs/framework.md
new file mode 100644
index 0000000..4294289
--- /dev/null
+++ b/docs/framework.md
@@ -0,0 +1,135 @@
+# Framework
+
+The Curator Framework is a high-level API that greatly simplifies using ZooKeeper. It adds many features that build on ZooKeeper and handles the complexity of managing connections to the ZooKeeper cluster and retrying operations. Some of the features are:
+
+* Automatic connection management:
+    * There are potential error cases that require ZooKeeper clients to recreate a connection and/or retry operations. Curator automatically and transparently (mostly) handles these cases.
+    * Watches for NodeDataChanged events and calls updateServerList() as needed.
+    * Watches are automatically removed by Curator recipes
+* Cleaner API:
+  * simplifies the raw ZooKeeper methods, events, etc.
+  * provides a modern, fluent interface
+* Recipe implementations (see [Recipes](recipes.md)):
+  * Leader election
+  * Shared lock
+  * Path cache and watcher
+  * Distributed Queue
+  * Distributed Priority Queue
+  * ...
+
+A Java 8 asynchronous version of CuratorFramework is also available: [Curator Async](async.md).
+
+## Allocating a Curator Framework Instance
+
+CuratorFrameworks are allocated using the CuratorFrameworkFactory which provides both factory methods and a builder for creating instances. IMPORTANT: CuratorFramework instances are fully thread-safe. You should share one CuratorFramework per ZooKeeper cluster in your application.
+
+The factory methods (newClient()) provide a simplified way of creating an instance. The Builder gives control over all parameters. Once you have a CuratorFramework instance, you must call the start() method. At the end of your application, you should call close().
+
+## CuratorFramework API
+
+The CuratorFramework uses a Fluent-style interface. Operations are constructed using builders returned by the CuratorFramework instance. When strung together, the methods form sentence-like statements. e.g.,
+
+```java
+client.create().forPath("/head", new byte[0]);
+client.delete().inBackground().forPath("/head");
+client.create().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath("/head/child", new byte[0]);
+client.getData().watched().inBackground().forPath("/test");
+```
+
+### Methods
+
+| Method          | Description                                                                                                                                                           |
+|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| create()        | Begins a create operation. Call additional methods (mode or background) and finalize the operation by calling forPath()                                               |
+| delete()        | Begins a delete operation. Call additional methods (version or background) and finalize the operation by calling forPath()                                            |
+| checkExists()   | Begins an operation to check that a ZNode exists. Call additional methods (watch or background) and finalize the operation by calling forPath()                       |
+| getData()       | Begins an operation to get a ZNode's data. Call additional methods (watch, background or get stat) and finalize the operation by calling forPath()                    |
+| setData()       | Begins an operation to set a ZNode's data. Call additional methods (version or background) and finalize the operation by calling forPath()                            |
+| getChildren()   | Begins an operation to get a ZNode's list of children ZNodes. Call additional methods (watch, background or get stat) and finalize the operation by calling forPath() |
+| transactionOp() | Used to allocate operations to be used with transaction().                                                                                                            |
+| transaction()   | Atomically submit a set of operations as a transaction.                                                                                                               |
+| getACL()        | Begins an operation to return a ZNode's ACL settings. Call additional methods and finalize the operation by calling forPath()                                         |
+| setACL()        | Begins an operation to set a ZNode's ACL settings. Call additional methods and finalize the operation by calling forPath()                                            |
+| getConfig()     | Begins an operation to return the last committed configuration. Call additional methods and finalize the operation by calling forEnsemble()                           |
+| reconfig()      | Begins an operation to change the configuration. Call additional methods and finalize the operation by calling forEnsemble()                                          |
+
+### Notifications
+
+Notifications for background operations and watches are published via the ClientListener interface. You register listeners with the CuratorFramework instance using the addListener() method. The listener implements two methods:
+
+
+| Method           | Description                                                                                        |
+|------------------|----------------------------------------------------------------------------------------------------|
+| eventReceived()  | A background operation has completed or a watch has triggered. Examine the given event for details |
+
+### CuratorEvent
+
+The CuratorEvent object is a super-set POJO that can hold every type of background notification and triggered watch. The useful fields of CuratorEvent depend on the type of event which is exposed via the getType() method.
+
+
+| Event Type  | Event Methods                                        |
+|-------------|------------------------------------------------------|
+| CREATE      | getResultCode() and getPath()                        |
+| DELETE      | getResultCode() and getPath()                        |
+| EXISTS      | getResultCode(), getPath() and getStat()             |
+| GET_DATA    | getResultCode(), getPath(), getStat() and getData()  |
+| SET_DATA    | getResultCode(), getPath() and getStat()             |
+| CHILDREN    | getResultCode(), getPath(), getStat(), getChildren() |
+| SYNC        | getResultCode(), getStat()                           |
+| GET_ACL     | getResultCode(), getACLList()                        |
+| SET_ACL     | getResultCode()                                      |
+| TRANSACTION | getResultCode(), getOpResults()                      |
+| WATCHED     | getWatchedEvent()                                    |
+| GET_CONFIG  | getResultCode(), getData()                           |
+| RECONFIG    | getResultCode(), getData()                           |
+
+## Namespaces
+
+Because a ZooKeeper cluster is a shared environment, it's vital that a namespace convention is observed so that various applications that use a given cluster don't use conflicting ZK paths.
+
+The CuratorFramework has a concept of a "namespace". You set the namespace when creating a CuratorFramework instance (via the Builder). The CuratorFramework will then prepend the namespace to all paths when one of its APIs is called. i.e.,
+
+```java
+CuratorFramework client = CuratorFrameworkFactory.builder().namespace("MyApp") ... build();
+client.create().forPath("/test", data);
+// node was actually written to: "/MyApp/test"
+```
+
+## Temporary Connections
+
+Temporary CuratorFramework instances are meant for single requests to ZooKeeper ensembles over a failure prone network such as a WAN. The APIs available from CuratorTempFramework are limited. Further, the connection will be closed after a period of inactivity.
+
+This is based on an idea mentioned in a post by Camille Fournier: http://whilefalse.blogspot.com/2012/12/building-global-highly-available.html.
+
+### Creating a CuratorTempFramework
+
+CuratorTempFramework instances are created via the CuratorFrameworkFactory just like normal CuratorFramework instances. However, instead of calling the `build()` method, call `buildTemp()`. `buildTemp()` creates a CuratorTempFramework instance that closes itself after 3 minutes of inactivity. There is an alternate version of `buildTemp()` that allows you to specify the inactivity period.
+
+### Limited API
+
+CuratorTempFramework instances provide the following methods:
+
+```java
+/**
+ * Stop the client
+ */
+public void     close();
+
+/**
+ * Start a transaction builder
+ *
+ * @return builder object
+ * @throws Exception errors
+ */
+public CuratorTransaction inTransaction() throws Exception;
+
+/**
+ * Start a get data builder
+ *
+ * @return builder object
+ * @throws Exception errors
+ */
+public TempGetDataBuilder getData() throws Exception;
+```
+
+
diff --git a/docs/getting-started.md b/docs/getting-started.md
new file mode 100644
index 0000000..b03760c
--- /dev/null
+++ b/docs/getting-started.md
@@ -0,0 +1,72 @@
+# Getting Started
+
+## Learn ZooKeeper
+
+Curator users are assumed to know ZooKeeper. A good place to start is here: https://zookeeper.apache.org/doc/current/zookeeperStarted.html
+
+## Using Curator
+
+The Curator JARs are available from Maven Central. The various artifacts are listed on the [main page](about.md). Users of Maven, Gradle, Ant, etc. can easily include Curator into their build script.
+
+Most users will want to use one of Curator's pre-built recipes. So, the curator-recipes is the correct artifact to use. If you only want a wrapper around ZooKeeper that adds connection management and retry policies, use curator-framework.
+
+## Getting a Connection
+
+Curator uses [Fluent Style](https://en.wikipedia.org/wiki/Fluent_interface). If you haven't used this before, it might seem odd, so it's suggested that you familiarize yourself with the style.
+
+Curator connection instances (`CuratorFramework`) are allocated from the `CuratorFrameworkFactory`. You only need **one** `CuratorFramework` object for each ZooKeeper cluster you are connecting to:
+
+```java
+CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy)
+```
+
+This will create a connection to a ZooKeeper cluster using default values. The only thing that you need to specify is the retry policy. For most cases, you should use:
+
+```java
+RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3)
+CuratorFramework client = CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy);
+client.start();
+```
+
+The client must be started (and closed when no longer needed).
+
+## Calling ZooKeeper Directly
+
+Once you have a CuratorFramework instance, you can make direct calls to ZooKeeper in a similar way to using the raw ZooKeeper object provided in the ZooKeeper distribution. E.g.:
+
+```java
+client.create().forPath("/my/path", myData)
+```
+
+The benefit here is that Curator manages the ZooKeeper connection and will retry operations if there are connection problems.
+
+## Recipes
+
+### Distributed Lock
+
+```java
+InterProcessMutex lock = new InterProcessMutex(client, lockPath);
+if (lock.acquire(maxWait, waitUnit)) {
+    try {
+        // do some work inside of the critical section here
+    } finally {
+        lock.release();
+    }
+}
+```
+
+### Leader Election
+
+```java
+LeaderSelectorListener listener = new LeaderSelectorListenerAdapter() {
+    public void takeLeadership(CuratorFramework client) throws Exception {
+        // this callback will get called when you are the leader
+        // do whatever leader work you need to and only exit
+        // this method when you want to relinquish leadership
+    }
+}
+
+LeaderSelector selector = new LeaderSelector(client, path, listener);
+selector.autoRequeue();  // not required, but this is behavior that you will probably expect
+selector.start();
+```
diff --git a/docs/logging.md b/docs/logging.md
new file mode 100644
index 0000000..2631eb0
--- /dev/null
+++ b/docs/logging.md
@@ -0,0 +1,13 @@
+# Logging and Tracing
+
+## Details
+
+Curator is logging and tracing neutral. The Curator code is instrumented with logging and tracers but uses a driver mechanism that allows easy integration into your preferred logging and tracing frameworks.
+
+## Logging
+
+Curator uses SLF4J (https://www.slf4j.org/) for logging. SLF4J is a facade over logging that allows you to plug in any (or no) logging framework. See the SLF4J website for details.
+
+## Tracing
+
+Connect Curator tracing to your tracing framework via an instance of `TracerDriver` or `AdvancedTracerDriver`. Curator calls the various methods (e.g. `addTrace()` or `addCount()`) and your instance proxies the calls to your tracing framework. Inform Curator of your tracing driver instance by calling `CuratorZookeeperClient.setTracerDriver()`.
diff --git a/docs/migrations.md b/docs/migrations.md
new file mode 100644
index 0000000..45f9b0a
--- /dev/null
+++ b/docs/migrations.md
@@ -0,0 +1,88 @@
+# Migrations
+
+Curator Migrations allow you pre-apply transactions in a staged manner so that you can ensure a consistent state for parts of your ZooKeeper node hierarchy in a manner similar to database migration utilities.
+
+## Background and Usage
+
+:::note
+
+To use Migrations, you should be familiar with Java 8's lambdas, CompletedFuture and CompletionStage.
+
+:::
+
+A "migration" is a set of operations to be performed in a transaction. A "migration set" is a list of migrations. Combined, this can be used to ensure an initial state for your ZooKeeper nodes as well as supporting upgrading/modifying existing state.
+
+For example, given a brand-new ZooKeeper instance you might want to populate a few nodes and data. E.g.,
+
+```java
+CuratorOp op1 = client.transactionOp().create().forPath("/parent");
+CuratorOp op2 = client.transactionOp().create().forPath("/parent/one");
+CuratorOp op3 = client.transactionOp().create().forPath("/parent/two");
+CuratorOp op4 = client.transactionOp().create().forPath("/parent/three");
+CuratorOp op5 = client.transactionOp().create().forPath("/main", someData);
+```
+
+All five of these operations would be combined into a migration and set:
+
+```java
+Migration migration = () -> Arrays.asList(op1, op2, op3, op4, op5);
+MigrationSet set = MigrationSet.build("main", Collections.singletonList(migration));
+```
+
+This set can then be passed to a `MigrationManager` for processing. The MigrationManager checks to see if the migration has been applied already and, if not, processes the transaction.
+
+At a future date, the migration set could be expanded to update/modify things. E.g.,
+
+```java
+CuratorOp newOp1 = client.transactionOp().create().forPath("/new");
+CuratorOp newOp2 = client.transactionOp().delete().forPath("/main");    // maybe this is no longer needed
+```
+
+This would be combined with the previous migration:
+
+```java
+Migration initialMigration = () -> Arrays.asList(op1, op2, op3, op4, op5);
+Migration newMigration = () -> Arrays.asList(newOp1, newOp2);
+MigrationSet set = MigrationSet.build("main", Arrays.asList(initialMigration, newMigration));
+```
+
+When this set is run, the MigrationManager will perform both migration operations on new ZooKeeper databases but only the second "newMigration" on ZK databases that already have the first migration applied.
+
+## Details/Reference
+
+### Migration
+
+A Migration is a wrapper around a list of operations that constitute one stage in a migration set and are applied as a single transaction.
+
+### MigrationSet
+
+A MigrationSet is an ordered list of Migrations. Curator keeps track of which migrations in a set have been previously applied and only processes un-applied migrations. Each migration set must have a unique identifier. Create a MigrationSet via its builder:
+
+```java
+MigrationSet set = MigrationSet.build(migrationId, migrations);
+```
+
+### MigrationManager
+
+The MigrationManager processes MigrationSets. Usually, you'd run this only on new ZooKeeper databases or as part of a maintenance operation to update the ZooKeeper database. E.g.,
+
+```java
+MigrationManager manager = new MigrationManager(
+    client,
+    lockPath,       // base path for locks used by the manager
+    metaDataPath,   // base path to store the meta data
+    executor,       // the executor to use
+    lockMax         // max time to wait for locks
+);
+manager.migrate(set).exceptionally(e -> {
+    if (e instanceof MigrationException) {
+        // migration checksum failed, etc.
+    } else {
+        // some other kind of error
+    }
+    return null;
+});
+```
+
+* Each migration in the set is applied in a single transaction i.e. all operations that comprise a migration set (the sum of all individual migration operations) are sent to ZooKeeper as a single transaction.
+* MigrationManager stores a hash of all operations in a migration so that it can be compared for future operations. i.e. if, in the future, a migration set is attempted but the hash of one of the previous migrations does not match, the stage completes exceptionally with `MigrationException`.
diff --git a/docs/modeled-components.md b/docs/modeled-components.md
new file mode 100644
index 0000000..dc56de6
--- /dev/null
+++ b/docs/modeled-components.md
@@ -0,0 +1,150 @@
+# Modeled Curator - Components
+
+Modeled Curator components are intended to allow you to model your ZooKeeper usage early in your application so that the majority of the code that interacts with ZooKeeper doesn't need to be concerned with paths, byte arrays, ACLs, options, etc. The [Pub-Sub Example](https://github.com/apache/curator/tree/master/curator-examples/src/main/java/pubsub) can give you some ideas on how to accomplish this.
+
+## ZPath
+
+Instead of using raw string paths, Modeled Curator defines the `ZPath` interface that abstracts ZooKeeper paths. ZPaths can be simple static paths or can contain parameters that can be replaced as needed.
+
+To build a simple static path, use:
+
+```java
+ZPath path = ZPath.parse("/my/static/path");
+```
+
+To build a path with parameters, use. `ZPath.parseWithIds()` using the value "{XXXX}" to denote a parameter. You can then use the `resolve()` method to replace the parameters. The value between "{}" can be any value. E.g.,
+
+```java
+ZPath path = ZPath.parseWithIds("/foo/{first param}/bar/{second param}");
+ZPath resolvedPath = path.resolve(param1, param2);
+```
+
+### NodeName
+
+Parameters are resolved by calling `toString()` on the parameter. You can use `NodeName` to change this behavior. If a parameter implements `NodeName` the `nodeName()` method is used as the parameter value.
+
+### Partial Resolution
+
+ZPaths can be partially resolved. E.g.,
+
+```java
+ZPath path = ZPath.parseWithIds("/foo/{type}/bar/{id}");
+ZPath partial = path.resolve("standard");
+// partial is now "/foo/standard/bar/{id}"
+```
+
+[ModeledFramework](#ModeledFramework) takes advantage of this. See below for details.
+
+## ModelSpec
+
+A `ModelSpec` contains all the metadata needed to operate on a ZooKeeper path:
+
+* A ZPath
+* A serializer for the data stored at the path
+* Options for how nodes should be created (sequential, compressed data, ttl, etc.)
+* ACLs for the nodes at the path
+* Options for how to delete nodes (guaranteed, deleting children, etc.)
+
+ModelSpec instances are created via a builder. The builder sets defaults that should be useful for most applications but you can alter any of these as needed.
+
+```java
+// a standard model spec for the given path and serializer
+// the model spec will have no ACLs and the options:
+// * createParentsAsContainers
+// * setDataIfExists
+// * DeleteOption.guaranteed
+ModelSpec<MyModel> spec = ModelSpec.builder(path, JacksonModelSerializer.build(MyModel.class)).build();
+```
+
+As a convenience, ModelSpec provides `resolve()` methods in case the ZPath used has parameters. E.g.,
+
+```java
+ZPath path = ZPath.parseWithIds("/foo/{id}/bar/{id}");
+ModelSpec<MyModel> spec = ModelSpec.builder(path, JacksonModelSerializer.build(MyModel.class)).build();
+ModelSpec<MyModel> resolvedSpec = spec.resolve(param1, param2);
+```
+
+### JacksonModelSerializer
+
+A Jackson serializer, `JacksonModelSerializer`, is included. However, the Jackson dependency for it is specified as "provided" in the curator-x-async Maven POM file to avoid adding a new dependency to Curator. Therefore, if you wish to use the JacksonModelSerializer you must manually add the dependency to your build system.
+
+E.g., for Maven:
+
+```xml
+<dependency>
+    <groupId>com.fasterxml.jackson.core</groupId>
+    <artifactId>jackson-databind</artifactId>
+    <version>${jackson.version}</version>
+</dependency>
+```
+
+## ModeledFramework
+
+`ModeledFramework` ties together all the metadata into a Curator-style instance that is used to perform ZooKeeper operations. E.g.,
+
+```java
+ModeledFramework<MyModel> modeledClient = ModeledFramework.wrap(client, myModelSpec);
+MyModel instance = ...;
+modeledClient.set(instance);
+```
+
+The "set" call in the above example is the equivalent of:
+
+```java
+MyModel instance = ...;
+String path = "/foo/bar/" + instance.getId();
+byte[] data = serializer.serialize(instance);
+client.create()
+    .withOptions(Sets.newHashSet(CreateOption.createParentsAsContainers, CreateOption.setDataIfExists))
+    .forPath(path, data);
+```
+
+To get a value:
+
+```java
+ModeledFramework<MyModel> modeledClient = ModeledFramework.wrap(client, myModelSpec);
+modeledClient.read().whenComplete((value, e) -> {
+    if (e != null) {
+        // handle the error
+    } else {
+        // "value" is the MyModel instance
+    }
+});
+```
+
+The "read" call in the above example is the equivalent of:
+
+```java
+String path = "/foo/bar/" + instanceId;
+client.getData().forPath(path).whenComplete((data, e) -> {
+    if (e != null) {
+        // handle the error
+    } else {
+        // NOTE: you must deal with possible deserialization problems
+        // caused by clients that write bad data
+        // If all of your code uses ModeledFramework you can guarantee that
+        // the data is always correctly written
+        MyModel model = serializer.deserialize(data);
+        // ...
+    }
+});
+```
+
+### Partially Resolved ZPaths and Set/Update
+
+ModeledFramework's various `set` and `update` methods check for unresolved ZPaths. If the current modelSpec has an unresolved ZPath when set/update is called, it is automatically resolved using the model instance being set/updated. E.g.,
+
+```java
+ZPath path = ZPath.parseWithIds("/root/{type}/instance/{id}");
+ModelSpec<MyModel> modelSpec = ModelSpec.builder(path, serializer);
+ModeledFramework<MyModel> modeledClient = ModeledFramework.wrap(modelSpec, client, modelSpec);
+String currentType = ...;
+MyModel model = ...;
+modeledClient.resolved(currentType).set(model); // internally, ModeledFramework calls ZPath.resolved()
+                                                // using "model" as the argument to get the actual ZPath
+
+```
+
+## Caching and Typed Parameters
+
+In addition to the above features, Modeled Curator supports Integrated Caching, Typed Parameters and Versioning. See [Caching and Typed Parameters](modeled-typed.md) for details.
diff --git a/docs/modeled-typed.md b/docs/modeled-typed.md
new file mode 100644
index 0000000..2b5a258
--- /dev/null
+++ b/docs/modeled-typed.md
@@ -0,0 +1,75 @@
+# Modeled Curator - Caching, Typed Parameters and Versioning
+
+In addition to its [main features](modeled-components.md) Modeled Curator also supports integrated caching, typed parameters and versioning.
+
+## Caching
+
+`ModeledFramework` instances can be wrapped with a facade that uses a Curator cache internally. All read operations use this cache instead of making direct ZooKeeper calls. You can also listen for node changes. E.g.,
+
+```java
+ModeledFramework<MyModel> modeledClient = ModeledFramework.wrap(client, myModelSpec);
+CachedModeledFramework<MyModel> cached = modeledClient.cached();
+cached.start();
+
+// reads come from the cache
+cached.read().whenComplete(...) ...
+
+cached.listenable.addListener((type, path, stat, model) -> {
+    // type is NODE_ADDED, NODE_UPDATED, etc.
+});
+```
+
+### Unresolved Paths and Caching
+
+If the last node in the ModelSpec's path is a parameter, CachedModeledFramework will automatically listen to the parent path. E.g.,
+
+```java
+ZPath path = ZPath.parseWithIds("/root/instance/{id}");
+ModelSpec<MyModel> modelSpec = ModelSpec.builder(path, serializer);
+ModeledFramework<MyModel> modeledClient = ModeledFramework.wrap(modelSpec, client, modelSpec);
+
+CachedModeledFramework<MyModel> cached = modeledClient.cached();
+cached.start(); // automatically listens to "/root/instance" and below
+```
+
+## Typed Parameters
+
+The "resolve" methods in ZPath et al. consume untyped Objects. Ideally, we should be able to specify parameters in a strongly typed manner. Modeled Curator's "type" templates provide this. You can specify typed parameters for ZPaths, ModelSpecs and ModeledFramework. The [Pub-Sub Example](https://github.com/apache/curator/tree/master/curator-examples/src/main/java/pubsub) shows how to use typed parameters with ModeledFramework.
+
+Typed interfaces are provided for up to 10 parameters and are named `TypedZPath`, `TypedZPath2`, `TypedModelSpec`, `TypedModelSpec2`, `TypedModeledFramework`, `TypedModeledFramework2`, etc.
+
+Here's an example of a TypedModeledFramework that models a Person and uses two parameters to generate the path, a Group and an Organization:
+
+```java
+TypedModeledFramework2<Person, Group, Organization> clientTemplate = TypedModeledFramework2.from(
+    ModeledFrameworkBuilder.build(),
+    personModelSpec
+);
+
+...
+
+Group group = ...
+Organization organization = ...
+ModeledFramework<Person> modeledClient = clientTemplate.resolve(asyncClient, group, organization);
+client.set(person);
+```
+
+TypedZPath and TypedModelSpec work similarly.
+
+## Versioning
+
+Modeled Curator supports associating a ZNode version with a model object via the `Versioned` interface and the `VersionedModeledFramework` APIs. To read a model along with its ZNode version use:
+
+```java
+ModeledFramework<Person> client = ...
+
+client.versioned().read().whenComplete((value, e) -> {
+    if ( value != null ) {
+        // value's type is Versioned<Person>
+        Person personModel = value.model();
+        int znodeVersion = value.version();
+    }
+});
+```
+
+`VersionedModeledFramework` has set/update APIs which automatically use the version from the `Versioned` instance.
diff --git a/docs/modeled.md b/docs/modeled.md
new file mode 100644
index 0000000..d12c314
--- /dev/null
+++ b/docs/modeled.md
@@ -0,0 +1,53 @@
+---
+sidebar_label: 'Strongly Typed Models'
+---
+
+# Modeled Curator
+
+This is a strongly typed DSL that allows you to map a Curator-style client to:
+
+* A ZooKeeper path (supporting parameterized substitutions)
+* A serializer for the data stored at the path
+* Options for how nodes should be created (sequential, compressed data, ttl, etc.)
+* ACLs for the nodes at the path
+* Options for how to delete nodes (guaranteed, deleting children, etc.)
+
+For example:
+
+```java
+ModeledFramework<Foo> modeled = ModeledFramework.wrap(client, fooModelSpec);
+modeled.set(new Foo());
+```
+
+This ModeledFramework instance knows the path to use, how to serialize the "Foo" instance, which create options and ACLs to use, etc.
+
+## Background and Usage
+
+:::note
+
+To use Modeled Curator, you should be familiar with Java 8's lambdas, CompletedFuture and CompletionStage. You should also be familiar with [Curator Async](async.md) as Modeled Curator is based on it.
+
+:::
+
+Modeled Curator consists of the components:
+
+* [ZPath](modeled-components.md#zpath)
+* [ModelSpec](modeled-components.md#modelspec)
+* [ModeledFramework](modeled-components.md#modeledframework)
+
+Additional functionality is provided by:
+
+* [CachedModeledFramework](modeled-typed.md#caching)
+* [Typed Parameter Templates](modeled-typed.md#typed-parameters)
+* [Versioning](modeled-typed.md#versioning)
+
+## Example
+
+A complete example usage of Modeled Curator along with CachedModeledFramework and Typed Parameter Templates can be found here: https://github.com/apache/curator/tree/master/curator-examples/src/main/java/pubsub.
+
+## Details
+
+For more details see:
+
+* [Components](modeled-components.md)
+* [Caching, Typed Parameters and Versioning](modeled-typed.md)
diff --git a/docs/recipes-barrier.md b/docs/recipes-barrier.md
new file mode 100644
index 0000000..b967c06
--- /dev/null
+++ b/docs/recipes-barrier.md
@@ -0,0 +1,43 @@
+---
+sidebar_label: 'Barrier'
+---
+
+# Recipe: Barrier
+
+##  Description
+
+An implementation of the Distributed Barrier ZK recipe.
+
+Distributed systems use barriers to block processing of a set of nodes until a condition is met at which time all the nodes are allowed to proceed.
+
+##  Participating Classes
+
+* DistributedBarrier
+
+##  Creating a DistributedBarrier
+
+```java
+// Parameters:
+// client - client
+// barrierPath - path to use as the barrier
+public DistributedBarrier(CuratorFramework client, String barrierPath);
+```
+
+##  General Usage
+
+To wait on the barrier:
+
+```java
+public void waitOnBarrier();
+```
+
+There are utilities for setting/removing the barrier:
+
+```java
+setBarrier();
+removeBarrier();
+```
+
+## Error Handling
+
+DistributedBarrier instances watch for connection loss and will throw an exception from `waitOnBarrier()`.
diff --git a/docs/recipes-curator-cache.md b/docs/recipes-curator-cache.md
new file mode 100644
index 0000000..2faf2b9
--- /dev/null
+++ b/docs/recipes-curator-cache.md
@@ -0,0 +1,45 @@
+---
+sidebar_label: 'Curator Cache'
+---
+
+# Recipe: Curator Cache
+
+:::note
+
+CuratorCache requires ZooKeeper 3.6+
+
+:::
+
+## Description
+
+A utility that attempts to keep the data from a node locally cached. Optionally the entire tree of children below the node can also be cached. Will respond to update/create/delete events, pull down the data, etc. You can register listeners that will get notified when changes occur.
+
+## Participating Classes
+
+* CuratorCache
+* CuratorCacheListener
+* ChildData
+
+## Creating a CuratorCache
+
+```java
+// Parameters:
+// client - the client
+// path - path to watch
+// options - empty or one or more options
+CuratorCache.build(CuratorFramework client, String path, Options... options);
+```
+
+There is a builder factory available for additional options when building the cache instance. See `CuratorCacheBuilder` for details.
+
+## General Usage
+
+The cache must be started by calling `start()`. Call `close()` when you are through with the cache.
+
+At any time, call the various accessor methods to get the current state of the cache. You can also register to be notified when a change occurs by calling `listenable()` and then registering a listener for events.
+
+See the examples for an example usage.
+
+## Error Handling
+
+CuratorCache instances internally monitor connection losses, etc. automatically rebuilding the cache on reconnection.
diff --git a/docs/recipes-distributed-atomic-long.md b/docs/recipes-distributed-atomic-long.md
new file mode 100644
index 0000000..e8fe0ca
--- /dev/null
+++ b/docs/recipes-distributed-atomic-long.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: 'Distributed Atomic Long'
+---
+
+# Recipe: Distributed Atomic Long
+
+## Description
+
+A counter that attempts atomic increments. It first tries using optimistic locking. If that fails, an optional InterProcessMutex is taken. For both optimistic and mutex, a retry policy is used to retry the increment.
+
+##  Participating Classes
+
+* DistributedAtomicLong
+* AtomicValue
+* PromotedToLock
+
+## Creating a DistributedAtomicLong
+
+### Optimistic mode only
+
+```java
+// Creates the counter in optimistic mode only - i.e. the promotion to a mutex is not done
+// Parameters:
+// client - the client
+// counterPath - path to hold the counter value
+// retryPolicy - the retry policy to use
+public DistributedAtomicLong(CuratorFramework client, String counterPath, RetryPolicy retryPolicy);
+```
+
+### Mutex promotion mode
+
+```java
+// Creates the counter in mutex promotion mode. The optimistic lock will be tried first using the given retry policy.
+// If the increment does not succeed, a InterProcessMutex will be tried with its own retry policy
+//
+// Parameters:
+// client - the client
+// counterPath - path to hold the counter value
+// retryPolicy - the retry policy to use
+// promotedToLock - the arguments for the mutex promotion
+public DistributedAtomicLong(
+    CuratorFramework client,
+    String counterPath,
+    RetryPolicy retryPolicy,
+    PromotedToLock promotedToLock
+);
+```
+
+##  General Usage
+
+### Perform an operation on the counter
+
+* `get()`
+* `increment()`
+* `decrement()`
+* `add()`
+* `subtract()`
+
+### Examine the result AtomicValue
+
+* You **must** first check `succeeded()` which returns true if the operation succeeded. If false is returned, the operation failed and the atomic was not updated.
+* If the operation succeeded, you can get the value prior to the operation via `preValue()` and the value after the operation `postValue()`.
+
+## Error Handling
+
+All the atomic instances access the ZooKeeper server for each method call. Therefore, the standard retry mechanism will be applied and any errors executing the operations will result in an Exception being thrown.
diff --git a/docs/recipes-distributed-delay-queue.md b/docs/recipes-distributed-delay-queue.md
new file mode 100644
index 0000000..1e67a7a
--- /dev/null
+++ b/docs/recipes-distributed-delay-queue.md
@@ -0,0 +1,73 @@
+---
+sidebar_label: 'Distributed Delay Queue'
+---
+
+# Recipe: Distributed Delay Queue
+
+:::caution
+
+We recommend that you do NOT use ZooKeeper for Queues. Please see [Tech Note 4](tech-note-04.md) for details.
+
+:::
+
+## Description
+
+An implementation of a Distributed Delay Queue. A Delay Queue is similar to a Priority Queue. When items are added to the queue, a delay value is given. The item will not be sent to a consumer until the time elapses.
+
+## Participating Classes
+
+* QueueBuilder
+* QueueConsumer
+* QueueSerializer
+* DistributedDelayQueue
+
+## Creating a DistributedDelayQueue
+
+```java
+public static <T> QueueBuilder<T> builder(
+    CuratorFramework client,
+    QueueConsumer<T> consumer,
+    QueueSerializer<T> serializer,
+    java.lang.String queuePath
+);
+// Parameters:
+// client - the curator client
+// consumer - message consumer
+// serializer - serializer to use for items
+// queuePath - path to store queue
+```
+
+```java
+QueueBuilder<MessageType> builder = QueueBuilder.builder(client, consumer, serializer, path);
+// ... more builder method calls as needed ...
+DistributedDelayQueue<MessageType> queue = builder.buildDelayQueue();
+```
+
+## General Usage
+
+
+The queue must be started via the `start()` method. Call `close()` when you are done with the queue.
+
+To add messages to the queue:
+
+```java
+queue.put(aMessage, delayUntilEpoch);
+```
+
+The consumer (`QueueConsumer.consumeMessage()`) will get called as messages arrive. `delayUntilEpoch` is a future epoch (milliseconds) when this item will be available to consumers.
+
+## Lock Safety
+
+In the general usage case, the message is removed from the queue prior to the consumer being called. A more atomic mode is provided that removes the item from the queue only after the consumer successfully returns. To enable this mode, call the `lockPath()` method of the Queue Builder. This uses a lock to make the message recoverable. A lock is held while the message is being processed - this prevents other processes from taking the message. The message will not be removed from the queue [...]
+
+## Data Format
+
+Same as [Distributed Queue](recipes-distributed-queue.md).
+
+## Error Handling
+
+The `QueueConsumer` class extends `ConnectionStateListener`. When the queue is started, it adds the listener to the Curator instance. Users of the `DistributedPriorityQueue` must pay attention to any connection state changes.
+
+If the SUSPENDED state is reported, the instance must assume that, until it receives a RECONNECTED state, the queue is no longer being updated. If the LOST state is reported, the queue is permanently down.
+
+
diff --git a/docs/recipes-distributed-id-queue.md b/docs/recipes-distributed-id-queue.md
new file mode 100644
index 0000000..706472b
--- /dev/null
+++ b/docs/recipes-distributed-id-queue.md
@@ -0,0 +1,46 @@
+---
+sidebar_label: 'Distributed ID Queue'
+---
+
+# Recipe: Distributed ID Queue
+
+:::caution
+
+We recommend that you do NOT use ZooKeeper for Queues. Please see [Tech Note 4](tech-note-04.md) for details.
+
+:::
+
+## Description
+
+This is an alternate version of [Distributed Queue](recipes-distributed-queue.md) that supports assigning IDs to the items added to the queue. Items put into the queue are guaranteed to be ordered (by means of ZK's PERSISTENTSEQUENTIAL node). If a single consumer takes items out of the queue, they will be ordered FIFO. If ordering is important, use a LeaderSelector to nominate a single consumer.
+
+## Participating Classes
+
+* QueueBuilder
+* QueueConsumer
+* QueueSerializer
+* DistributedQueue
+
+## Creating a DistributedIdQueue
+
+See [Distributed Queue](recipes-distributed-queue.md) for details of using the builder, the only difference is to use the `buildIdQueue()` method.
+
+## General Usage
+
+The queue must be started via the `start()` method. Call `close()` when you are done with the queue.
+
+To add messages to the queue:
+
+```java
+queue.put(aMessage, messageId);
+```
+
+To remove messages from the queue:
+
+```java
+int numberRemoved = queue.remove(messageId);
+```
+
+Your consumer (`QueueConsumer.consumeMessage()`) will get called as messages arrive.
+
+The lock safety and error handling are the same as for [Distributed Queue](recipes-distributed-queue.md).
diff --git a/docs/recipes-distributed-priority-queue.md b/docs/recipes-distributed-priority-queue.md
new file mode 100644
index 0000000..3eaf53f
--- /dev/null
+++ b/docs/recipes-distributed-priority-queue.md
@@ -0,0 +1,84 @@
+---
+sidebar_label: 'Distributed Priority Queue'
+---
+
+# Recipe: Distributed Priority Queue
+
+:::caution
+
+We recommend that you do NOT use ZooKeeper for Queues. Please see [Tech Note 4](tech-note-04.md) for details.
+
+:::
+
+## Description
+
+An implementation of the Distributed Priority Queue ZK recipe.
+
+## Participating Classes
+
+* QueueBuilder
+* QueueConsumer
+* QueueSerializer
+* DistributedPriorityQueue
+
+## Creating a DistributedPriorityQueue
+
+```java
+public static <T> QueueBuilder<T> builder(
+    CuratorFramework client,
+    QueueConsumer<T> consumer,
+    QueueSerializer<T> serializer,
+    java.lang.String queuePath
+);
+// Parameters:
+// client - the curator client
+// consumer - message consumer
+// serializer - serializer to use for items
+// queuePath - path to store queue
+```
+
+```java
+QueueBuilder<MessageType> builder = QueueBuilder.builder(client, consumer, serializer, path);
+// ... more builder method calls as needed ...
+DistributedPriorityQueue<MessageType> queue = builder.buildPriorityQueue(minItemsBeforeRefresh);
+```
+
+```java
+public DistributedPriorityQueue<T> buildPriorityQueue(int minItemsBeforeRefresh);
+// Parameters:
+// minItemsBeforeRefresh - minimum items to process before refreshing the item list
+```
+
+Build a DistributedPriorityQueue from the current builder values.
+
+When the priority queue detects an item addition/removal, it will stop processing its current list of items and refresh the list. minItemsBeforeRefresh modifies this. It determines the minimum number of items from the active list that will get processed before a refresh.
+
+Due to a quirk in the way ZooKeeper notifies changes, the queue will get an item addition/remove notification after every item is processed. This can lead to poor performance. Set minItemsBeforeRefresh to the value your application can tolerate being out of sync.
+
+For example: if the queue sees 10 items to process, it will end up making 10 calls to ZooKeeper to check status. You can control this by setting minItemsBeforeRefresh to 10 (or more) and the queue will only refresh with ZooKeeper after 10 items are processed
+
+## General Usage
+
+The queue must be started via the `start()` method. Call `close()` when you are done with the queue.
+
+To add messages to the queue:
+
+```java
+queue.put(aMessage, priority);
+```
+
+The consumer (`QueueConsumer.consumeMessage()`) will get called as messages arrive.
+
+## Lock Safety
+
+In the general usage case, the message is removed from the queue prior to the consumer being called. A more atomic mode is provided that removes the item from the queue only after the consumer successfully returns. To enable this mode, call the `lockPath()` method of the Queue Builder. This uses a lock to make the message recoverable. A lock is held while the message is being processed - this prevents other processes from taking the message. The message will not be removed from the queue [...]
+
+## Data Format
+
+Same as [Distributed Queue](recipes-distributed-queue.md#data-format).
+
+## Error Handling
+
+The `QueueConsumer` class extends `ConnectionStateListener`. When the queue is started, it adds the listener to the Curator instance. Users of the `DistributedPriorityQueue` must pay attention to any connection state changes.
+
+If the SUSPENDED state is reported, the instance must assume that, until it receives a RECONNECTED state, the queue is no longer being updated. If the LOST state is reported, the queue is permanently down.
diff --git a/docs/recipes-distributed-queue.md b/docs/recipes-distributed-queue.md
new file mode 100644
index 0000000..01d8ab0
--- /dev/null
+++ b/docs/recipes-distributed-queue.md
@@ -0,0 +1,78 @@
+---
+sidebar_label: 'Distributed Queue'
+---
+
+# Recipe: Distributed Queue
+
+:::caution
+
+We recommend that you do NOT use ZooKeeper for Queues. Please see [Tech Note 4](tech-note-04.md) for details.
+
+:::
+
+## Description
+
+An implementation of the Distributed Queue ZK recipe. Items put into the queue are guaranteed to be ordered (by means of ZK's PERSISTENTSEQUENTIAL node). If a single consumer takes items out of the queue, they will be ordered FIFO. If ordering is important, use a LeaderSelector to nominate a single consumer.
+
+## Participating Classes
+
+* QueueBuilder
+* QueueConsumer
+* QueueSerializer
+* DistributedQueue
+
+### Creating a DistributedQueue
+
+```java
+public static <T> QueueBuilder<T> builder(
+    CuratorFramework client,
+    QueueConsumer<T> consumer,
+    QueueSerializer<T> serializer,
+    java.lang.String queuePath
+);
+// Parameters:
+// client - the curator client
+// consumer - functor to receive messages
+// serializer - serializer to use for items
+// queuePath - path to store queue
+```
+
+```java
+QueueBuilder<MessageType>    builder = QueueBuilder.builder(client, consumer, serializer, path);
+// ... more builder method calls as needed ...
+DistributedQueue<MessageType queue = builder.build();
+```
+
+## General Usage
+
+The queue must be started via the `start()` method. Call `close()` when you are done with the queue.
+
+To add messages to the queue:
+
+```java
+queue.put(aMessage);
+```
+
+Your consumer (`QueueConsumer.consumeMessage()`) will get called as messages arrive.
+
+## Lock Safety
+
+In the general usage case, the message is removed from the queue prior to the consumer being called. A more atomic mode is provided that removes the item from the queue only after the consumer successfully returns. To enable this mode, call the `lockPath()` method of the Queue Builder. This uses a lock to make the message recoverable. A lock is held while the message is being processed - this prevents other processes from taking the message. The message will not be removed from the queue [...]
+
+## Data Format
+
+The Distributed queue writes messages using this format:
+
+| Offset | Size | Description                                     |
+|--------|------|-------------------------------------------------|
+| 0      | 4    | Format version. Currently 0x00010001            |
+| 4      | 1    | Opcode: 0x01 = message, 0x02 = End of data      |
+| 5      | 4    | Message byte length                             |
+| 9      | n    | Message: serialized message bytes               |
+| 9 + n  | ...  | Next set of opcode-size-bytes until end of data |
+
+## Error Handling
+
+The `QueueConsumer` class extends `ConnectionStateListener`. When the queue is started, it adds the listener to the Curator instance. Users of the `DistributedQueue` must pay attention to any connection state changes.
+
+If the SUSPENDED state is reported, the instance must assume that, until it receives a RECONNECTED state, the queue is no longer being updated. If the LOST state is reported, the queue is permanently down.
diff --git a/docs/recipes-double-barrier.md b/docs/recipes-double-barrier.md
new file mode 100644
index 0000000..296669b
--- /dev/null
+++ b/docs/recipes-double-barrier.md
@@ -0,0 +1,46 @@
+---
+sidebar_label: 'Double Barrier'
+---
+
+# Recipe: Double Barrier
+
+##  Description
+
+An implementation of the Distributed Double Barrier ZK recipe.
+
+Double barriers enable clients to synchronize the beginning and the end of a computation. When enough processes have
+joined the barrier, processes start their computation and leave the barrier once they have finished.
+
+##  Participating Classes
+
+* DistributedDoubleBarrier
+
+## Creating a DistributedBarrier
+
+```java
+// Creates the barrier abstraction. memberQty is the number of members in the barrier. When enter() is called,
+// it blocks until all members have entered. When leave() is called, it blocks until all members have left.
+// Parameters:
+// client - the client
+// barrierPath - path to use
+// memberQty - the number of members in the barrier
+public DistributedDoubleBarrier(CuratorFramework client, String barrierPath, int memberQty);
+```
+
+##  General Usage
+
+To enter on the barrier:
+
+```java
+public void enter();
+```
+
+To leave on the barrier:
+
+```java
+public void leave();
+```
+
+## Error Handling
+
+DistributedDoubleBarrier instances watch for connection loss and will throw an exception from `enter()` and/or `leave()`.
diff --git a/docs/recipes-group-member.md b/docs/recipes-group-member.md
new file mode 100644
index 0000000..5bf89e6
--- /dev/null
+++ b/docs/recipes-group-member.md
@@ -0,0 +1,57 @@
+---
+sidebar_label: 'Group Member'
+---
+
+# Recipe: Group Member
+
+## Description
+
+Group membership management. Adds this instance into a group and keeps a cache of members in the group.
+
+## Participating Classes
+
+* GroupMember
+* PersistentNode
+* PathChildrenCache
+
+## Creating a GroupMember
+
+```java
+// Parameters:
+// client - client instance
+// membershipPath - the path to use for membership
+// thisId - ID of this group member. MUST be unique for the group
+// payload - the payload to write in our member node
+public GroupMember(
+    CuratorFramework client,
+    String membershipPath,
+    String thisId,
+    byte[] payload
+);
+```
+
+## General Usage
+
+GroupMember must be started:
+
+```java
+group.start();
+```
+
+When you are through with the GroupMember instance, you should call close:
+
+```java
+group.close();
+```
+
+... this will remove the instance from the group.
+
+You can get a current view of the members by calling:
+
+```java
+group.getCurrentMembers();
+```
+
+## Error Handling
+
+GroupMember instances internally handle all error states recreating the node as necessary.
diff --git a/docs/recipes-leader-election.md b/docs/recipes-leader-election.md
new file mode 100644
index 0000000..6996938
--- /dev/null
+++ b/docs/recipes-leader-election.md
@@ -0,0 +1,74 @@
+---
+sidebar_label: 'Leader Election'
+---
+
+# Recipe: Leader Election
+
+## Description
+
+In distributed computing, leader election is the process of designating a single process as the organizer of some task distributed among several computers (nodes). Before the task is begun, all network nodes are unaware which node will serve as the "leader," or coordinator, of the task. After a leader election algorithm has been run, however, each node throughout the network recognizes a particular, unique node as the task leader.
+
+:::note
+
+Curator has two leader election recipes. Which one to use depends on your requirements.
+
+:::
+
+## Participating Classes
+
+* LeaderSelector
+* LeaderSelectorListener
+* LeaderSelectorListenerAdapter
+* CancelLeadershipException
+
+### Creating a LeaderSelector
+
+```java
+// Parameters:
+// client - the client
+// mutexPath - the path for this leadership group
+// listener - listener
+public LeaderSelector(CuratorFramework client, String mutexPath, LeaderSelectorListener listener);
+```
+
+```
+// Parameters:
+// client - the client
+// mutexPath - the path for this leadership group
+// threadFactory - factory to use for making internal threads
+// executor - the executor to run in
+// listener - listener
+public LeaderSelector(
+    CuratorFramework client,
+    String mutexPath,
+    ThreadFactory threadFactory,
+    Executor executor,
+    LeaderSelectorListener listener
+);
+```
+
+## General Usage
+
+LeaderSelectors must be started:
+
+```java
+leaderSelector.start();
+```
+
+Once started, the `takeLeadership()` of your listener will be called when you have leadership. Your `takeLeadership()` method should only return when leadership is being relinquished.
+
+When you are through with the LeaderSelector instance, you should call close:
+
+```java
+leaderSelector.close();
+```
+
+## Error Handling
+
+The `LeaderSelectorListener` class extends `ConnectionStateListener`. When the LeaderSelector is started, it adds the listener to the Curator instance. Users of the `LeaderSelector` must pay attention to any connection state changes. If an instance becomes the leader, it should respond to notification of being SUSPENDED or LOST. If the SUSPENDED state is reported, the instance must assume that it might no longer be the leader until it receives a RECONNECTED state. If the LOST state is re [...]
+
+:::caution
+
+The recommended action for receiving SUSPENDED or LOST is to throw `CancelLeadershipException`. This will cause the LeaderSelector instance to attempt to interrupt and cancel the thread that is executing the `takeLeadership` method. Because this is so important, you should consider extending `LeaderSelectorListenerAdapter`. `LeaderSelectorListenerAdapter` has the recommended handling already written for you.
+
+:::
diff --git a/docs/recipes-leader-latch.md b/docs/recipes-leader-latch.md
new file mode 100644
index 0000000..aad8fbe
--- /dev/null
+++ b/docs/recipes-leader-latch.md
@@ -0,0 +1,84 @@
+---
+sidebar_label: 'Leader Latch'
+---
+
+# Recipe: Leader Latch
+
+## Description
+
+In distributed computing, leader election is the process of designating a single process as the organizer of some task distributed among several computers (nodes). Before the task is begun, all network nodes are unaware which node will serve as the "leader", or coordinator, of the task. After a leader election algorithm has been run, however, each node throughout the network recognizes a particular, unique node as the task leader.
+
+:::note
+
+Curator has two leader election recipes. Which one to use depends on your requirements.
+
+:::
+
+## Participating Classes
+
+* LeaderLatch
+
+## Creating a LeaderLatch
+
+```java
+// Parameters:
+// client - the client
+// latchPath - the path for this leadership group
+public LeaderLatch(CuratorFramework client, String latchPath);
+```
+
+```java
+// Parameters:
+// client - the client
+// latchPath - the path for this leadership group
+// id - participant ID
+public LeaderLatch(CuratorFramework client, String latchPath, String id);
+```
+
+## General Usage
+
+LeaderLatches must be started:
+
+```java
+leaderLatch.start();
+```
+
+Once started, the LeaderLatch will negotiate with any other LeaderLatch participants that use the same latch path and randomly choose one of them to be the leader. At any time, you can determine if a given instance is the leader by calling:
+
+```java
+// Return true if leadership is currently held by this instance
+public boolean hasLeadership();
+```
+
+Similar to the JDK's CountDownLatch, LeaderLatch has methods that block until leadership is acquired:
+
+```java
+// Causes the current thread to wait until this instance acquires leadership
+// unless the thread is interrupted or closed.
+public void await() throws InterruptedException, EOFException;
+```
+
+```java
+// Causes the current thread to wait until this instance acquires leadership unless
+// the thread is interrupted, the specified waiting time elapses or the instance is closed.
+
+// Parameters:
+// timeout - the maximum time to wait
+// unit - the time unit of the timeout argument
+// Returns:
+// true if the count reached zero and false if the waiting time elapsed before the count
+// reached zero or the instances was closed
+public boolean await(long timeout, TimeUnit unit) throws InterruptedException
+```
+
+When you are through with the LeaderLatch instance, you must call close. This removes the instance from the leader election and releases leadership if the instance has it. Once leadership is released, another participating instance (if any) will be chosen as leader.
+
+```java
+leaderLatch.close();
+```
+
+## Error Handling
+
+LeaderLatch instances add a ConnectionStateListener to watch for connection problems. If SUSPENDED or LOST is reported, the LeaderLatch that is the leader will report that it is no longer the leader (i.e. there will not be a leader until the connection is re-established). If a LOST connection is RECONNECTED, the LeaderLatch will delete its previous ZNode and create a new one.
+
+Users of LeaderLatch must take account that connection issues can cause leadership to be lost. i.e. hasLeadership() returns true but some time later the connection is SUSPENDED or LOST. At that point hasLeadership() will return false. It is highly recommended that LeaderLatch users register a ConnectionStateListener.
diff --git a/docs/recipes-multi-shared-lock.md b/docs/recipes-multi-shared-lock.md
new file mode 100644
index 0000000..78b011a
--- /dev/null
+++ b/docs/recipes-multi-shared-lock.md
@@ -0,0 +1,39 @@
+---
+sidebar_label: 'Multi Shared Lock'
+---
+
+# Recipe: Multi Shared Lock
+
+## Description
+
+A container that manages multiple locks as a single entity. When acquire() is called, all the locks are acquired. If that fails, any paths that were acquired are released. Similarly, when release() is called, all locks are released (failures are ignored).
+
+## Participating Classes
+
+* InterProcessMultiLock
+* InterProcessLock
+
+### Creating a InterProcessMultiLock
+
+```java
+// Creates a multi lock of any type of inter process lock
+// Parameters:
+// locks - the locks
+public InterProcessMultiLock(List<InterProcessLock> locks);
+```
+
+```java
+// Creates a multi lock of InterProcessMutexes
+// Parameters:
+// client - client
+// paths - list of paths to manage in the order that they are to be locked
+public InterProcessMultiLock(CuratorFramework client, List<String> paths);
+```
+
+## General Usage
+
+The usage is the same as for [Shared Lock](recipes-shared-lock.md). However, When `acquire()` is called, all the locks are acquired. If that fails, any paths that were acquired are released. Similarly, when `release()` is called, all locks are released (failures are ignored).
+
+## Error Handling
+
+It is strongly recommended that you add a `ConnectionStateListener` and watch for SUSPENDED and LOST state changes. If a SUSPENDED state is reported you cannot be certain that you still hold the lock unless you subsequently receive a RECONNECTED state. If a LOST state is reported it is certain that you no longer hold the lock.
diff --git a/docs/recipes-node-cache.md b/docs/recipes-node-cache.md
new file mode 100644
index 0000000..96e4059
--- /dev/null
+++ b/docs/recipes-node-cache.md
@@ -0,0 +1,41 @@
+---
+sidebar_label: 'Node Cache'
+---
+
+# Recipe: Node Cache
+
+## Description
+
+A Node Cache is used to watch a ZNode. Whenever the data is modified or the ZNode is deleted, the Node Cache will change its state to contain the current data (or null if ZNode was deleted).
+
+## Participating Classes
+
+* NodeCache
+* NodeCacheListener
+* ChildData
+
+## Creating a NodeChildrenCache
+
+```java
+// Parameters:
+// client - the client
+// path - path to cache
+public NodeCache(CuratorFramework client, String path);
+```
+
+## General Usage
+
+The cache must be started by calling `start()`. Call `close()` when you are through with the cache.
+
+At any time, call `getCurrentData()` to get the current state of the cache. You can also register to be notified when a change occurs by calling `getListenable()` and then:
+
+```java
+// Add a change listener
+// Parameters:
+// listener - the listener
+public void addListener(NodeCacheListener listener);
+```
+
+## Error Handling
+
+NodeCache instances internally monitor a `ConnectionStateListener`.
diff --git a/docs/recipes-path-cache.md b/docs/recipes-path-cache.md
new file mode 100644
index 0000000..074decf
--- /dev/null
+++ b/docs/recipes-path-cache.md
@@ -0,0 +1,67 @@
+---
+sidebar_label: 'Path Cache'
+---
+
+# Recipe: Path Cache
+
+## Description
+
+A Path Cache is used to watch a ZNode. Whenever a child is added, updated or removed, the Path Cache will change its state to contain the current set of children, the children's data and the children's state.
+
+## Participating Classes
+
+* PathChildrenCache
+* PathChildrenCacheEvent
+* PathChildrenCacheListener
+* ChildData
+
+## Creating a PathChildrenCache
+
+```
+// Parameters:
+// client - the client
+// path - path to watch
+// cacheData - if true, node contents are cached in addition to the stat
+public PathChildrenCache(CuratorFramework client, String path, boolean cacheData);
+```
+
+## General Usage
+
+The cache must be started by calling `start()`. Call `close()` when you are through with the cache.
+
+There are two versions of `start()`. The no-arg version gives default behavior. The other version takes an enumeration that allows you to control how the initial cache is warmed:
+
+```java
+public enum StartMode {
+    /**
+     * cache will _not_ be primed. i.e. it will start empty and you will receive
+     * events for all nodes added, etc.
+     */
+    NORMAL,
+
+    /**
+     * rebuild() will be called before this method returns in
+     * order to get an initial view of the node.
+     */
+    BUILD_INITIAL_CACHE,
+
+    /**
+     * After cache is primed with initial values (in the background) a
+     * PathChildrenCacheEvent.Type.INITIALIZED event will be posted
+     */
+    POST_INITIALIZED_EVENT
+}
+```
+
+At any time, call `getCurrentData()` to get the current state of the cache. You can also register to be notified when a change occurs by calling `getListenable()` and then:
+
+```java
+// Add a change listener
+// Parameters:
+// listener - the listener
+public void addListener(PathChildrenCacheListener listener)
+```
+
+## Error Handling
+
+PathChildrenCache instances internally monitor a `ConnectionStateListener`. If the connection state changes, the cache is reset (the `PathChildrenCacheListener` will receive a RESET).
diff --git a/docs/recipes-persistent-node.md b/docs/recipes-persistent-node.md
new file mode 100644
index 0000000..61c0b29
--- /dev/null
+++ b/docs/recipes-persistent-node.md
@@ -0,0 +1,53 @@
+---
+sidebar_label: 'Persistent Node'
+---
+
+# Recipe: Persistent Node
+
+## Description
+
+A persistent node is a node that attempts to stay present in ZooKeeper, even through connection and session interruptions.
+
+## Participating Classes
+
+* PersistentNode
+
+## Creating a PersistentNode
+
+```java
+// Parameters:
+// client - client instance
+// mode - creation mode
+// useProtection - if true, call CreateBuilder.withProtection()
+// basePath - the base path for the node
+// data - data for the node
+// useParentCreation - if true, call CreateBuilder.creatingParentContainersIfNeeded()
+public PersistentNode(
+    CuratorFramework client,
+    CreateMode mode,
+    boolean useProtection,
+    String basePath,
+    byte[] data,
+    boolean useParentCreation
+);
+```
+
+## General Usage
+
+PersistentNodes must be started:
+
+```java
+node.start();
+```
+
+When you are through with the PersistentNode instance, you should call close:
+
+```java
+node.close();
+```
+
+... this will delete the node
+
+## Error Handling
+
+PersistentNode instances internally handle all error states recreating the node as necessary.
diff --git a/docs/recipes-persistent-ttl-node.md b/docs/recipes-persistent-ttl-node.md
new file mode 100644
index 0000000..9371036
--- /dev/null
+++ b/docs/recipes-persistent-ttl-node.md
@@ -0,0 +1,45 @@
+---
+sidebar_label: 'Persistent TTL Node'
+---
+
+# Recipe: Persistent TTL Node
+
+## Description
+
+PersistentTtlNode is useful when you need to create a TTL node but don't want to keep it alive manually by periodically setting data - PersistentTtlNode does that for you. Further the keep-alive is done in a way that does not generate watch triggers on the parent node. It also provides similar guarantees that a [Persistent Node](recipes-persistent-node.md) does: the node attempts to stay present in ZooKeeper, even through connection and session interruptions.
+
+## Participating Classes
+
+* PersistentNode
+* PersistentTtlNode
+
+## Creating a PersistentTtlNode
+
+```
+// Parameters:
+// client - client instance
+// path path for the parent ZNode
+// ttlMs max ttl for the node in milliseconds
+// initData - initData for the node
+public PersistentTtlNode(CuratorFramework client, String path, long ttlMs, byte[] initData);
+```
+
+## General Usage
+
+PersistentTtlNode must be started:
+
+```java
+node.start();
+```
+
+When you are through with the PersistentTtlNode instance, you should call close:
+
+```java
+node.close();
+```
+
+... this will NOT delete the node immediately. The node will get deleted based on the ttl.
+
+## Error Handling
+
+PersistentTtlNode instances internally handle all error states recreating the node as necessary.
diff --git a/docs/recipes-persistent-watcher.md b/docs/recipes-persistent-watcher.md
new file mode 100644
index 0000000..bdc10f6
--- /dev/null
+++ b/docs/recipes-persistent-watcher.md
@@ -0,0 +1,42 @@
+---
+sidebar_label: 'Persistent Recursive Watcher'
+---
+
+# Recipe: Persistent Recursive Watcher
+
+:::note
+
+PersistentWatcher requires ZooKeeper 3.6+
+
+:::
+
+## Description
+
+A managed persistent watcher. The watch will be managed such that it stays set through connection lapses, etc.
+
+## Participating Classes
+
+* PersistentWatcher
+
+## Creating a PersistentWatcher
+
+```java
+// Parameters:
+// client - the client
+// basePath - path to set the watch on
+// recursive - ZooKeeper persistent watches can optionally be recursive
+public PersistentWatcher(CuratorFramework client, String basePath, boolean recursive);
+```
+
+## General Usage
+
+The instance must be started by calling `start()`. Call `close()` when you want to remove the watch.
+
+PersistentWatcher presents two listener types:
+
+* `Listenable<Watcher> getListenable()` - Use this to add watchers. These will behave in the same manner that watchers added via `ZooKeeper.addWatch()` behave.
+* `Listenable<Runnable> getResetListenable()` - The `Runnable`s added with this get called once the Persistent Watcher has been successfully set(or reset after a connection partition).
+
+## Error Handling
+
+PersistentWatcher instances internally monitor connection losses, etc. automatically resetting on reconnection.
diff --git a/docs/recipes-shared-counter.md b/docs/recipes-shared-counter.md
new file mode 100644
index 0000000..7bf8f6e
--- /dev/null
+++ b/docs/recipes-shared-counter.md
@@ -0,0 +1,72 @@
+---
+sidebar_label: 'Shared Counter'
+---
+
+# Recipe: Shared Counter
+
+## Description
+
+Manages a shared integer. All clients watching the same path will have the up-to-date value of the shared integer (considering ZK's normal consistency guarantees).
+
+## Participating Classes
+
+* SharedCount
+* SharedCountReader
+* SharedCountListener
+
+## Creating a SharedCounter
+
+```java
+// Parameters:
+// client - the client
+// path - the shared path - i.e. where the shared count is stored
+// seedValue - the initial value for the count iff the path has not yet been created
+public SharedCount(CuratorFramework client, String path, int seedValue);
+```
+
+## General Usage
+
+SharedCounts must be started:
+
+```java
+count.start();
+```
+
+When you are through with the instance, you should call close:
+
+```java
+count.close();
+```
+
+```java
+// Return the current value of the count
+int getCount();
+```
+
+```
+// Add a listener for changes to the count
+void addListener(SharedCountListener listener);
+```
+
+```
+// Change the shared count value irrespective of its previous state
+public void setCount(int newCount);
+```
+
+```
+// Changes the shared count only if its value has not changed since this client last read it. If the count
+// has changed, the value is not set and this client's view of the value is updated. i.e. if the count is
+// not successful you can get the updated value by calling getCount().
+// Parameters:
+// newCount - the new value to attempt
+// Returns:
+// true if the change attempt was successful, false if not. If the change was not successful, getCount()
+// will return the updated value
+public boolean trySetCount(int newCount);
+```
+
+## Error Handling
+
+The `SharedCountListener` class extends `ConnectionStateListener`. When the SharedCount is started, it adds the listener to the Curator instance. Users of the `SharedCount` must pay attention to any connection state changes.
+
+If the SUSPENDED state is reported, the instance must assume that, until it receives a RECONNECTED state, the count is no longer accurate and isn't being updated. If the LOST state is reported, the count is permanently down.
diff --git a/docs/recipes-shared-lock.md b/docs/recipes-shared-lock.md
new file mode 100644
index 0000000..050c962
--- /dev/null
+++ b/docs/recipes-shared-lock.md
@@ -0,0 +1,55 @@
+---
+sidebar_label: 'Shared Lock'
+---
+
+# Recipe: Shared Lock
+
+## Description
+
+Fully distributed locks that are globally synchronous, meaning at any snapshot in time no two clients think they hold the same lock. Note: unlike InterProcessMutex this lock is *not* reentrant.
+
+## Participating Classes
+
+* InterProcessSemaphoreMutex
+
+## Create an InterProcessSemaphoreMutex
+
+```java
+// Parameters:
+// client - client
+// path - the path to lock
+public InterProcessSemaphoreMutex(CuratorFramework client, String path);
+```
+
+## General Usage
+
+To acquire the lock, use one of the acquire methods:
+
+```java
+// Acquire the mutex - blocking until it's available. Must be balanced by a call to release().
+public void acquire();
+```
+
+```java
+// Acquire the mutex - blocks until it's available or the given time expires. Must be balanced by a call to release().
+//
+// Parameters:
+// time - time to wait
+// unit - time unit
+// Returns:
+// true if the mutex was acquired, false otherwise
+public boolean acquire(long time, TimeUnit unit);
+```
+
+To release the mutex, call:
+
+```java
+// Perform one release of the mutex if the calling thread is the same thread that acquired it.
+public void release();
+```
+
+## Error Handling
+
+It is strongly recommended that you add a `ConnectionStateListener` and watch for SUSPENDED and LOST state changes.
+
+If a SUSPENDED state is reported you cannot be certain that you still hold the lock unless you subsequently receive a RECONNECTED state. If a LOST state is reported it is certain that you no longer hold the lock.
diff --git a/docs/recipes-shared-reentrant-lock.md b/docs/recipes-shared-reentrant-lock.md
new file mode 100644
index 0000000..6322023
--- /dev/null
+++ b/docs/recipes-shared-reentrant-lock.md
@@ -0,0 +1,87 @@
+---
+sidebar_label: 'Shared Reentrant Lock'
+---
+
+# Recipe: Shared Reentrant Lock
+
+## Description
+
+Fully distributed locks that are globally synchronous, meaning at any snapshot in time no two clients think they hold the same lock.
+
+## Participating Classes
+
+* InterProcessMutex
+
+## Create an InterProcessMutex
+
+```java
+// Parameters:
+// client - client
+// path - the path to lock
+public InterProcessMutex(CuratorFramework client, String path);
+```
+
+## General Usage
+
+To acquire the lock, use one of the acquire methods:
+
+```java
+Acquire the mutex - blocking until it's available. Note: the same thread can call acquire
+re-entrantly. Each call to acquire must be balanced by a call to release()
+public void acquire();
+```
+
+```java
+// Acquire the mutex - blocks until it's available or the given time expires. Note: the same thread can
+// call acquire re-entrantly. Each call to acquire that returns true must be balanced by a call to release()
+//
+// Parameters:
+// time - time to wait
+// unit - time unit
+// Returns:
+// true if the mutex was acquired, false otherwise
+public boolean acquire(long time, TimeUnit unit);
+```
+
+To release the mutex, call:
+
+```java
+// Perform one release of the mutex if the calling thread is the same thread that acquired it. If the
+// thread had made multiple calls to acquire, the mutex will still be held when this method returns.
+public void release();
+```
+
+:::note
+
+A InterProcessMutex instance is reusable. i.e. don't create a new instance every time. Re-use a single instance.
+
+:::
+
+## Revoking
+
+InterProcessMutex supports a cooperative revocation mechanism as described on the ZooKeeper recipes wiki.
+
+To make a mutex revocable, call:
+
+```java
+// Make the lock revocable. Your listener will get called when another process/thread wants you to release the lock. Revocation is cooperative.
+// Parameters:
+// listener - the listener
+public void makeRevocable(RevocationListener<T> listener);
+```
+
+To ask for a lock to revoke/release, use the static method in the `Revoker` class:
+
+```java
+// Utility to mark a lock for revocation. Assuming that the lock has been registered
+// with a RevocationListener, it will get called and the lock should be released. Note,
+// however, that revocation is cooperative.
+// Parameters:
+// client - the client
+// path - the path of the lock - usually from something like InterProcessMutex.getParticipantNodes()
+public static void attemptRevoke(CuratorFramework client, String path) throws Exception;
+```
+
+## Error Handling
+
+It is strongly recommended that you add a `ConnectionStateListener` and watch for SUSPENDED and LOST state changes. If a SUSPENDED state is reported you cannot be certain that you still hold the lock unless you subsequently receive a RECONNECTED state. If a LOST state is reported it is certain that you no longer hold the lock.
diff --git a/docs/recipes-shared-reentrant-read-write-lock.md b/docs/recipes-shared-reentrant-read-write-lock.md
new file mode 100644
index 0000000..18691c4
--- /dev/null
+++ b/docs/recipes-shared-reentrant-read-write-lock.md
@@ -0,0 +1,46 @@
+---
+sidebar_label: 'Shared Reentrant Read Write Lock'
+---
+
+# Recipe: Shared Reentrant Read Write Lock
+
+## Description
+
+A re-entrant read/write mutex that works across JVMs. Uses Zookeeper to hold the lock. All processes in all JVMs that use the same lock path will achieve an inter-process critical section. Further, this mutex is "fair" - each user will get the mutex in the order requested (from ZK's point of view).
+
+A read write lock maintains a pair of associated locks, one for read-only operations and one for writing. The read lock may be held simultaneously by multiple reader processes, so long as there are no writers. The write lock is exclusive.
+
+### Reentrancy
+
+This lock allows both readers and writers to reacquire read or write locks in the style of a re-entrant lock. Non-re-entrant readers are not allowed until all write locks held by the writing thread/process have been released. Additionally, a writer can acquire the read lock, but not vice-versa. If a reader tries to acquire the write lock it will never succeed.
+
+### Lock Downgrading
+
+Reentrancy also allows downgrading from the write lock to a read lock, by acquiring the write lock, then the read lock and then releasing the write lock. However, upgrading from a read lock to the write lock is not possible.
+
+## Participating Classes
+
+* InterProcessReadWriteLock
+* InterProcessLock
+
+## Create an InterProcessReadWriteLock
+
+```java
+// Parameters:
+// client - the client
+// basePath - path to use for locking
+public InterProcessReadWriteLock(CuratorFramework client, String basePath);
+```
+
+## General Usage
+
+Access either the read lock or the write lock and then use the methods as described for [Shared lock](recipes-shared-lock.md).
+
+```java
+public InterProcessLock readLock();
+public InterProcessLock writeLock();
+```
+
+## Error Handling
+
+It is strongly recommended that you add a `ConnectionStateListener` and watch for SUSPENDED and LOST state changes. If a SUSPENDED state is reported you cannot be certain that you still hold the lock unless you subsequently receive a RECONNECTED state. If a LOST state is reported it is certain that you no longer hold the lock.
diff --git a/docs/recipes-shared-semaphore.md b/docs/recipes-shared-semaphore.md
new file mode 100644
index 0000000..b782fcc
--- /dev/null
+++ b/docs/recipes-shared-semaphore.md
@@ -0,0 +1,106 @@
+---
+sidebar_label: 'Shared Semaphore'
+---
+
+# Recipe: Shared Semaphore
+
+## Description
+
+A counting semaphore that works across JVMs. All processes in all JVMs that use the same lock path will achieve an inter-process limited set of leases. Further, this semaphore is mostly "fair" - each user will get a lease in the order requested (from ZK's point of view).
+
+There are two modes for determining the max leases for the semaphore. In the first mode the max leases is a convention maintained by the users of a given path. In the second mode a SharedCountReader is used as the method for semaphores of a given path to determine the max leases.
+
+If a SharedCountReader is not used, no internal checks are done to prevent Process A acting as if there are 10 leases and Process B acting as if there are 20. Therefore, make sure that all instances in all processes use the same numberOfLeases value.
+
+The various acquire methods return Lease objects that represent acquired leases. Clients must take care to close lease objects (ideally in a `finally` block) else the lease will be lost. However, if the client session drops (crash, etc.), any leases held by the client are automatically closed and made available to other clients.
+
+## Participating Classes
+
+* InterProcessSemaphoreV2
+* Lease
+* SharedCountReader
+
+## Creating an InterProcessSemaphoreV2
+
+```java
+// Parameters:
+// client - client
+// path - the path to lock
+// numberOfLeases - the number of leases allowed by this semaphore
+public InterProcessSemaphoreV2(
+    CuratorFramework client,
+    String path,
+    int numberOfLeases
+);
+```
+
+```java
+// Parameters:
+// client - the client
+// path - path for the semaphore
+// count - the shared count to use for the max leases
+public InterProcessSemaphoreV2(
+    CuratorFramework client,
+    String path,
+    SharedCountReader count
+);
+```
+
+## General Usage
+
+To acquire one lease/usage, use one of the acquire methods:
+
+```java
+// Acquire a lease. If no leases are available, this method blocks until either the maximum number of
+/ leases is increased or another client/process closes a lease.
+// The client must close the lease when it is done with it. You should do this in a finally block.
+public Lease acquire();
+```
+
+```java
+// Acquire qty leases. If there are not enough leases available, this method blocks until either the
+// maximum number of leases is increased enough or other clients/processes close enough leases.
+// The client must close the leases when it is done with them. You should do this in a finally block.
+// NOTE: You can use returnAll(Collection) for this.
+// Parameters:
+// qty - number of leases to acquire
+public Collection<Lease> acquire(int qty);
+```
+
+```java
+// Acquire a lease. If no leases are available, this method blocks until either the maximum number of
+// leases is increased or another client/process closes a lease. However, this method will only block
+// to a maximum of the time parameters given.
+// The client must close the lease when it is done with it. You should do this in a finally block.
+// Parameters:
+// time - time to wait
+// unit - time unit
+// Returns:
+// the new lease or null if time ran out
+public Lease acquire(long time, TimeUnit unit);
+```
+
+```java
+// Acquire qty leases. If there are not enough leases available, this method blocks until either the
+// maximum number of leases is increased enough or other clients/processes close enough leases. However,
+// this method will only block to a maximum of the time parameters given. If time expires before all
+// leases are acquired, the subset of acquired leases are automatically closed.
+// The client must close the leases when it is done with them. You should do this in a finally block.
+// NOTE: You can use returnAll(Collection) for this.
+// Parameters:
+// qty - number of leases to acquire
+// time - time to wait
+// unit - time unit
+public Collection<Lease> acquire(int qty, long time, TimeUnit unit);
+```
+
+`Lease` instances can either be closed directly or you can use these convenience methods:
+
+```java
+public void returnAll(Collection<Lease> leases);
+public void returnLease(Lease lease);
+```
+
+## Error Handling
+
+It is strongly recommended that you add a `ConnectionStateListener` and watch for SUSPENDED and LOST state changes. If a SUSPENDED state is reported you cannot be certain that you still hold the lock unless you subsequently receive a RECONNECTED state. If a LOST state is reported it is certain that you no longer hold the lock.
diff --git a/docs/recipes-simple-distributed-queue.md b/docs/recipes-simple-distributed-queue.md
new file mode 100644
index 0000000..582c306
--- /dev/null
+++ b/docs/recipes-simple-distributed-queue.md
@@ -0,0 +1,60 @@
+---
+sidebar_label: 'Simple Distributed Queue'
+---
+
+# Recipe: Simple Distributed Queue
+
+:::caution
+
+We recommend that you do NOT use ZooKeeper for Queues. Please see [Tech Note 4](tech-note-04.md) for details.
+
+:::
+
+## Description
+
+A drop-in replacement for the DistributedQueue that comes with the ZK distribution.
+
+## Participating Classes
+
+* SimpleDistributedQueue
+
+## Usage
+
+### Creating a SimpleDistributedQueue
+
+```java
+// Parameters:
+// client - the client
+// path - path to store queue nodes
+public SimpleDistributedQueue(CuratorFramework client, String path);
+```
+
+### Add to the queue
+
+```java
+// Inserts data into queue.
+// Parameters:
+// data - the data
+// Returns:
+// true if data was successfully added
+public boolean offer(byte[] data) throws Exception;
+```
+
+### Take from the queue
+
+```java
+// Removes the head of the queue and returns it, blocks until it succeeds.
+// Returns:
+// The former head of the queue
+public byte[] take() throws Exception;
+```
+
+:::note
+
+See also the Javadoc for additional methods.
+
+:::
+
+## Error Handling
+
+It is strongly recommended that you add a `ConnectionStateListener` and watch for SUSPENDED and LOST state changes.
diff --git a/docs/recipes-tree-cache.md b/docs/recipes-tree-cache.md
new file mode 100644
index 0000000..1817389
--- /dev/null
+++ b/docs/recipes-tree-cache.md
@@ -0,0 +1,45 @@
+---
+sidebar_label: 'Tree Cache'
+---
+
+# Recipe: Tree Cache
+
+## Description
+
+A utility that attempts to keep all data from all children of a ZK path locally cached. This class will watch the ZK path, respond to update/create/delete events, pull down the data, etc. You can register a listener that will get notified when changes occur.
+
+## Participating Classes
+
+* TreeCache
+* TreeCacheListener
+* TreeCacheEvent
+* ChildData
+
+## Creating a TreeCache
+
+```java
+// Parameters:
+// client - the client
+// path - path to watch
+// cacheData - if true, node contents are cached in addition to the stat
+public TreeCache(CuratorFramework client, String path, boolean cacheData);
+```
+
+## General Usage
+
+The cache must be started by calling `start()`. Call `close()` when you are through with the cache.
+
+At any time, call `getCurrentChildren()` to get the current state of the cache. Alternatively, call `getCurrentData()` to get the data for a given path that's being monitored.
+
+You can also register to be notified when a change occurs by calling `getListenable()` and then:
+
+```java
+// Add a change listener
+// Parameters:
+// listener - the listener
+public void addListener(TreeCacheListener listener);
+```
+
+## Error Handling
+
+TreeCache instances internally monitor a `ConnectionStateListener`. If the connection state changes, the cache will receive messages detailing the change.
diff --git a/docs/recipes.md b/docs/recipes.md
new file mode 100644
index 0000000..8702810
--- /dev/null
+++ b/docs/recipes.md
@@ -0,0 +1,71 @@
+# Recipes
+
+Curator implements all the recipes listed on the ZooKeeper recipes doc (except two phase commit). Click on the recipe name below for detailed documentation.
+
+:::caution
+
+Curator recipes will automatically create parent nodes of paths given to the recipe as `CreateMode.CONTAINER`. Also, see [Tech Note 7](tech-note-07.md) regarding "Curator Recipes Own Their ZNode/Paths".
+
+:::
+
+## Elections
+
+[Leader Latch](recipes-leader-latch.md) - In distributed computing, leader election is the process of designating a single process as the organizer of some task distributed among several computers (nodes). Before the task is begun, all network nodes are unaware which node will serve as the "leader," or coordinator, of the task. After a leader election algorithm has been run, however, each node throughout the network recognizes a particular, unique node as the task leader.
+
+[Leader Election](recipes-leader-election.md) - Initial Curator leader election recipe.
+
+## Locks
+
+[Shared Reentrant Lock](recipes-shared-reentrant-lock.md) - Fully distributed locks that are globally synchronous, meaning at any snapshot in time no two clients think they hold the same lock.
+
+[Shared Lock](recipes-shared-lock.md) - Similar to Shared Reentrant Lock but not reentrant.
+
+[Shared Reentrant Read Write Lock](recipes-shared-reentrant-read-write-lock.md) - A re-entrant read/write mutex that works across JVMs. A read write lock maintains a pair of associated locks, one for read-only operations and one for writing. The read lock may be held simultaneously by multiple reader processes, so long as there are no writers. The write lock is exclusive.
+
+[Shared Semaphore](recipes-shared-semaphore.md) - A counting semaphore that works across JVMs. All processes in all JVMs that use the same lock path will achieve an inter-process limited set of leases. Further, this semaphore is mostly "fair" - each user will get a lease in the order requested (from ZK's point of view).
+
+[Multi Shared Lock](recipes-multi-shared-lock.md) - A container that manages multiple locks as a single entity. When acquire() is called, all the locks are acquired. If that fails, any paths that were acquired are released. Similarly, when release() is called, all locks are released (failures are ignored).
+
+## Barriers
+
+[Barrier](recipes-barrier.md) - Distributed systems use barriers to block processing of a set of nodes until a condition is met at which time all the nodes are allowed to proceed.
+
+[Double Barrier](recipes-double-barrier.md) - Double barriers enable clients to synchronize the beginning and the end of a computation. When enough processes have joined the barrier, processes start their computation and leave the barrier once they have finished.
+
+## Counters
+
+[Shared Counter](recipes-shared-counter.md) - Manages a shared integer. All clients watching the same path will have the up-to-date value of the shared integer (considering ZK's normal consistency guarantees).
+
+[Distributed Atomic Long](recipes-distributed-atomic-long.md) - A counter that attempts atomic increments. It first tries using optimistic locking. If that fails, an optional InterProcessMutex is taken. For both optimistic and mutex, a retry policy is used to retry the increment.
+
+## Caches
+
+[Curator Cache](recipes-curator-cache.md) - A utility that attempts to keep the data from a node locally cached. Optionally the entire tree of children below the node can also be cached. Will respond to update/create/delete events, pull down the data, etc. You can register listeners that will get notified when changes occur.
+
+[Path Cache](recipes-path-cache.md) - (For preZooKeeper 3.6.x) A Path Cache is used to watch a ZNode. Whenever a child is added, updated or removed, the Path Cache will change its state to contain the current set of children, the children's data and the children's state. Path caches in the Curator Framework are provided by the PathChildrenCache class. Changes to the path are passed to registered PathChildrenCacheListener instances.
+
+[Node Cache](recipes-node-cache.md) - (For preZooKeeper 3.6.x) A utility that attempts to keep the data from a node locally cached. This class will watch the node, respond to update/create/delete events, pull down the data, etc. You can register a listener that will get notified when changes occur.
+
+[Tree Cache](recipes-tree-cache.md) - (For preZooKeeper 3.6.x) A utility that attempts to keep all data from all children of a ZK path locally cached. This class will watch the ZK path, respond to update/create/delete events, pull down the data, etc. You can register a listener that will get notified when changes occur.
+
+## Nodes/Watches
+
+[Persistent Recursive Watcher](recipes-persistent-watcher.md) - A managed persistent recursive watcher. The watch will be managed such that it stays set through connection lapses, etc.
+
+[Persistent Node](recipes-persistent-node.md) - A node that attempts to stay present in ZooKeeper, even through connection and session interruptions.
+
+[Persistent TTL Node](recipes-persistent-ttl-node.md) - Useful when you need to create a TTL node but don't want to keep it alive manually by periodically setting data.
+
+[Group Member](recipes-group-member.md) - Group membership management. Adds this instance into a group and keeps a cache of
+
+## Queues
+
+[Distributed Queue](recipes-distributed-queue.md) - An implementation of the Distributed Queue ZK recipe. Items put into the queue are guaranteed to be ordered (by means of ZK's PERSISTENTSEQUENTIAL node). If a single consumer takes items out of the queue, they will be ordered FIFO. If ordering is important, use a LeaderSelector to nominate a single consumer.
+
+[Distributed ID Queue](recipes-distributed-id-queue.md) - A version of DistributedQueue that allows IDs to be associated with queue items. Items can then be removed from the queue if needed.
+
+[Distributed Priority Queue](recipes-distributed-priority-queue.md) - An implementation of the Distributed Priority Queue ZK recipe.
+
+[Distributed Delay Queue](recipes-distributed-delay-queue.md) - An implementation of a Distributed Delay Queue.
+
+[Simple Distributed Queue](recipes-simple-distributed-queue.md) - A drop-in replacement for the DistributedQueue that comes with the ZK distribution.
diff --git a/docs/schema.md b/docs/schema.md
new file mode 100644
index 0000000..f410990
--- /dev/null
+++ b/docs/schema.md
@@ -0,0 +1,134 @@
+# Schema Support
+
+In larger ZooKeeper applications you will end with many paths to ZNodes that have specific meanings and uses. E.g. "/myapp/clients/clusters/instances" or "/myapp/writers/locks". These paths can become unwieldy and difficult to reason about. Ideally, you should have a simple way to commonly refer to these paths, a way to validate how they are used, and a way to document what they are used for.
+
+Curator provides a mechanism to:
+
+* Document your ZooKeeper paths
+* Validate operations on ZooKeeper paths
+* Map a simple string to a ZooKeeper path
+
+When a Curator operation violates a schema, `SchemaViolation` is thrown.
+
+## Schema and SchemaSet
+
+The basic specification is the Schema class:
+
+| Field           | Type            | Required | Description                                           |
+|-----------------|-----------------|----------|-------------------------------------------------------|
+| name            | String          | Y        | A unique name for this schema                         |
+| path            | String          | Y        | A full path to a ZNode or a regex pattern to a ZNode  |
+| documentation   | String          | N        | User displayable documentation for this schema        |
+| schemaValidator | SchemaValidator | N        | see below                                             |
+| ephemeral       | can/must/cannot | N        | Whether the schema allows for ephemerals at the path  |
+| sequential      | can/must/cannot | N        | Whether the schema allows for sequentials at the path |
+| watched         | can/must/cannot | N        | Whether the schema allows for watchers at the path    |
+| canBeDeleted    | true/false      | N        | Whether the schema allows the path to be deleted      |
+| metadata        | map             | N        | Any fields-to-values you want                         |
+
+All the Schema instances are combined into a SchemaSet and this can be set in the CuratorFrameworkFactory when creating a CuratorFramework instance. Schemas in a SchemaSet are applied in the following order:
+
+1. Exact match on full path (i.e. nonregex)
+2. Match on the first regex path, searched in the order given to the SchemaSet constructor
+
+### SchemaValidator
+
+SchemaValidators are used to optionally validate a ZNode operation when the node is created or modified. It is a functor of the form:
+
+```java
+boolean isValid(Schema schema, String path, byte[] data, List<ACL> acl);
+```
+
+## Getting ZNode paths/schemas by name
+
+Use SchemaSets to access ZNode paths by a simple name. E.g.,
+
+```java
+CuratorFramework client = ...;
+String path = SchemaSet.getNamedPath(client, "locks");
+client.create().forPath(path);
+```
+
+## Loading JSON Schema from a file/stream
+
+An optional utility is provided to load SchemaSets from a JSON file or stream: SchemaSetLoader.
+
+:::note
+
+To avoid adding a new dependency to Curator, the Jackson library has been used with "provided" scope. You will need to add a dependency to jackson-core and jackson-databind to your project.
+
+:::
+
+The JSON stream should be an array of schemas:
+
+```json
+[
+   {
+       "name": "name",                       // required - name of the schema
+       "path": "path or pattern",            // required - full path or regex pattern
+       "isRegex": true/false,                // optional - true if path is a regular expression - default is false
+       "schemaValidator": "name",            // optional - name of a schema validator - default is no validator
+       "documentation": "docs",              // optional - user displayable docs - default is ""
+       "ephemeral": "allowance",             // optional - "can", "must" or "cannot" - default is "can"
+       "sequential": "allowance",            // optional - "can", "must" or "cannot" - default is "can"
+       "watched": "allowance",               // optional - "can", "must" or "cannot" - default is "can"
+       "canBeDeleted": true/false,           // optional - true if ZNode at path can be deleted - default is true
+       "metadata": {                         // optional - any fields -> values that you want
+           "field1": "value1",
+           "field2": "value2"
+       }
+   }
+]
+```
+
+## Examples
+
+### Example 1
+
+```json
+[
+    {
+        "name": "test",
+        "path": "/a/b/c",
+        "ephemeral": "must",
+        "sequential": "cannot",
+        "metadata": {
+            "origin": "outside",
+            "type": "large"
+        }
+    }
+]
+```
+
+* This SchemaSet has only 1 schema
+* The schema applies only to the path "/a/b/c"
+* The ZNode "/a/b/c" must be ephemeral, cannot be sequential, can be watched, and can be deleted
+
+### Example 2
+
+```json
+[
+    {
+        "name": "test",
+        "path": "/a/b/c",
+        "ephemeral": "must",
+        "sequential": "cannot"
+    },
+
+    {
+        "name": "test2",
+        "path": "/a/.*",
+        "isRegex": true,
+        "schemaValidator": "test",
+        "ephemeral": "cannot",
+        "canBeDeleted": false
+    }
+]
+```
+
+* This SchemaSet has 2 schemas
+* The first schema applies only to the path "/a/b/c"
+* The ZNode "/a/b/c" must be ephemeral, cannot be sequential, can be watched, and can be deleted
+* The second schema is regex and applies to any path that matches the expression "/a/.*"
+* The ZNodes that match "/a/.*" cannot be ephemeral, can be sequential, can be watched, and cannot be deleted
+* The second schema also has a schema validator. The schema validator named "test" (configured when constructing the SchemaSetLoader) will be called to validate ZNodes that match "/a/.*".
diff --git a/docs/service-discovery-server.md b/docs/service-discovery-server.md
new file mode 100644
index 0000000..abc3ef8
--- /dev/null
+++ b/docs/service-discovery-server.md
@@ -0,0 +1,93 @@
+# Service Discovery Server
+
+## Packaging
+
+Curator Service Discovery is in its own package in Maven Central: curator-x-discovery-server
+
+## Description
+
+The Service Discovery Server bridges non-Java or legacy applications with the [Curator Service Discovery](service-discovery.md). It exposes RESTful web services to register, remove, query, etc. services.
+
+The Service Discovery Server provides JAX-RS components that can be incorporated into a container of your choice (Tomcat, Jetty, etc.). You can also choose any JAX-RS provider (Jersey, RESTEasy, etc.).
+
+## Deploying the Server
+
+The server must be combined with a JAX-RS implementation (Jersey, etc.) and a container (Tomcat, Jetty, etc.).
+
+Several singletons need to be injected:
+
+* ServiceDiscovery
+* DiscoveryContext
+* JsonServiceInstanceMarshaller
+* JsonServiceInstancesMarshaller
+* JsonServiceNamesMarshaller
+
+Additionally, the JAX-RS Resource class must be injected. Due to how most JAX-RS implementations are written, you must create a concrete class that extends this using your payload type. The concrete class should have the base path that you'd like to use. Because the JAX-RS implementation can create a new instance of the resource for every request, your concrete class must use a context resolver to access the DiscoveryContext. Or, if you are using an IoC framework, you can access it that way.
+
+Here's a version that has no payload (i.e. a `Void` payload):
+
+```java
+@Path("/")
+public class MyResource extends DiscoveryResource<Void> {
+   public MyResource(@Context ContextResolver<DiscoveryContext<Void>> resolver) {
+       // note: this may not work with all JAX-RS implementations
+       super(resolver.getContext(DiscoveryContext.class));
+   }
+}
+```
+
+## REST
+
+Clients must make appropriate REST calls to register themselves and send periodic heartbeats. They can also find services via REST calls:
+
+### putService
+
+* Method: PUT
+* Path: v1/service/{name}/{id}
+* Request Entity: ServiceInstance
+* Response Entity: n/a
+* Description: {name} is the service name, {id} is the instance id. The request entity is a ServiceInstance. This method registers a service instance. If the ServiceType is STATIC, the instance is registered only for the pre-defined period (defined in the DiscoveryContext). STATIC services must call putService at least once per period. PERMANENT services are registered until they are manually deleted.
+
+### removeService
+
+* Method: DELETE
+* Path: v1/service/{name}/{id}
+* Request Entity: n/a
+* Response Entity: n/a
+* Description: {name} is the service name, {id} is the instance id. The specified service is deleted/unregistered.
+
+### get
+
+* Method: GET
+* Path: v1/service/{name}/{id}
+* Request Entity: n/a
+* Response Entity: ServiceInstance
+* Description: {name} is the service name, {id} is the instance id. Returns the complete ServiceInstance for the specified service. 404 is returned if not found.
+
+### getAllNames
+
+* Method: GET
+* Path: v1/service
+* Request Entity: n/a
+* Response Entity: ServiceNames
+* Description: Returns all currently registered service names.
+
+### getAll
+
+* Method: GET
+* Path: v1/service/{name}
+* Request Entity: n/a
+* Response Entity: ServiceInstances
+* Description: {name} is the service name. Returns all service instances for the named service.
+
+### getAny
+
+* Method: GET
+* Path: v1/anyservice/{name}
+* Request Entity: n/a
+* Response Entity: ServiceInstance
+* Description: {name} is the service name. Return a random instance from the given service or 404.
+
+## JSON specs
+
+The JSON specifications for the REST entities are documented here: https://github.com/apache/curator/blob/master/curator-x-discovery-server/README.txt.
diff --git a/docs/service-discovery.md b/docs/service-discovery.md
new file mode 100644
index 0000000..026cedb
--- /dev/null
+++ b/docs/service-discovery.md
@@ -0,0 +1,125 @@
+# Service Discovery
+
+## Packaging
+
+Curator Service Discovery is in its own package in Maven Central: curator-x-discovery
+
+## What Is a Discovery Service?
+
+In SOA/distributed systems, services need to find each other. i.e. a web service might need to find a caching service, etc. DNS can be used for this but it is nowhere near flexible enough for services that are constantly changing. A Service Discovery system provides a mechanism for:
+
+* Services to register their availability
+* Locating a single instance of a particular service
+* Notifying when the instances of a service change
+
+## Curator Service Discovery
+
+### ServiceInstance
+
+A service instance is represented by the class: `ServiceInstance`. ServiceInstances have a name, id, address, port and/or ssl port, and an optional payload (user defined). ServiceInstances are serialized and stored in ZooKeeper in the following way:
+
+```text
+base path
+       |_______ service A name
+                    |__________ instance 1 id --> (serialized ServiceInstance)
+                    |__________ instance 2 id --> (serialized ServiceInstance)
+                    |__________ ...
+       |_______ service B name
+                    |__________ instance 1 id --> (serialized ServiceInstance)
+                    |__________ instance 2 id --> (serialized ServiceInstance)
+                    |__________ ...
+       |_______ ...
+```
+
+### ServiceProvider
+
+The main abstraction class is `ServiceProvider`. It encapsulates the discovery service for a particular named service along with a provider strategy. A provider strategy is a scheme for selecting one instance from a set of instances for a given service. There are three bundled strategies: Round Robin, Random and Sticky (always selects the same one).
+
+ServiceProviders are allocated by using a `ServiceProviderBuilder`. You obtain a ServiceProviderBuilder from the ServiceDiscovery (see below). The ServiceProviderBuilder allows you to set the service name and several other optional values.
+
+The ServiceProvider must be started by calling `start()`. When finished you should call `close()`. The only method in ServiceProvider is:
+
+```java
+public ServiceInstance<T> getInstance() throws Exception;
+// Return an instance for a single use. IMPORTANT: users should not hold on to the instance
+// returned. A fresh instance should always be retrieved.
+```
+
+:::note
+
+When using Curator 2.x (Zookeeper 3.4.x) it's essential that service provider objects are cached by your application and reused. Since the internal NamespaceWatcher objects added by the service provider cannot be removed in Zookeeper 3.4.x, creating a fresh service provider for each call to the same service will eventually exhaust the memory of the JVM.
+
+:::
+
+### ServiceDiscovery
+
+In order to allocate a ServiceProvider, you must have a ServiceDiscovery. It is created by a `ServiceDiscoveryBuilder`.
+
+You must call `start()` on the object and, when done with it, call `close()`.
+
+### Instance Stability
+
+If a particular instance has an I/O error, etc. you should call `ServiceProvider.noteError()` passing in the instance. The ServiceProvider will temporarily consider instances that have errors to be "down". The thresholds and timeouts for down instances are set via the `DownInstancePolicy` which can be passed to `ServiceProviderBuilder` (note: a default DownInstancePolicy is used if you don't specify one).
+
+## Low Level APIs
+
+The ServiceProvider API is all you should need for most purposes. However, for finer grained control, you can use these methods:
+
+### Registering/Unregistering Services
+
+Normally, you pass your application's service descriptor to the ServiceDiscovery constructor and it will get registered/unregistered automatically. If, though, you need to manually do this, use these methods:
+
+```java
+// Register/re-register/update a service instance
+// Parameters:
+// service - service to add
+public void registerService(ServiceInstance<T> service) throws Exception;
+
+// Unregister/remove a service instance
+// Parameters:
+// service - the service
+public void unregisterService(ServiceInstance<T> service) throws Exception;
+```
+
+### Querying for Services
+
+You can query for all service names, all instances of a particular service, or single service instance.
+
+```java
+// Return the names of all known services
+public Collection<String> queryForNames() throws Exception;
+
+// Return all known instances for the given service
+// Parameters:
+// name - name of the service
+public Collection<ServiceInstance<T>> queryForInstances(String name) throws Exception;
+
+// Return the service instance POJO or null if not found
+// Parameters:
+// name - name of the service
+// id - ID of the instance
+public ServiceInstance<T> queryForInstance(String name, String id) throws Exception;
+```
+
+### Service Cache
+
+Each of the above query methods calls ZooKeeper directly. If you need more than occasional querying of services you can use the `ServiceCache`. It caches in memory the list of instances for a particular service. It uses a Watcher to keep the list up to date.
+
+You allocate a ServiceCache via the builder returned by `ServiceDiscovery.serviceCacheBuilder()`. The ServiceCache object must be started by calling `start()` and, when done, you should call `close()`. You can get the currently known list of instances for the service by calling:
+
+```java
+// Return the current list of instances. NOTE: there is no guarantee of freshness. This is merely
+// the last known list of instances. However, the list is updated via a ZooKeeper watcher so it
+// should be fresh within a window of a second or two.
+public Collection<ServiceInstance<T>> getInstances();
+```
+
+ServiceCache supports a listener that gets notified when Watcher has updated the list of instances:
+
+```java
+/** Listener for changes to a service cache */
+public interface ServiceCacheListener extends ConnectionStateListener {
+    /** Called when the cache has changed (instances added/deleted, etc.) */
+    public void cacheChanged();
+}
+```
diff --git a/docs/tech-note-01.md b/docs/tech-note-01.md
new file mode 100644
index 0000000..90caf94
--- /dev/null
+++ b/docs/tech-note-01.md
@@ -0,0 +1,33 @@
+# Tech Note 1
+
+ZooKeeper's watches are single threaded.
+
+## Details
+
+When your watcher is called, it should return as quickly as possible. All ZooKeeper watchers are serialized - processed by a single thread. Thus, **no other watchers can be processed while your watcher is running**. For example, a Curator user had a watcher handler something like this:
+
+```java
+InterProcessMutex lock = ...;
+
+public void process(WatchedEvent event) {
+    lock.acquire();
+    // ...
+}
+```
+
+This **cannot work**. Curator's InterProcessMutex relies on ZooKeeper watchers getting notified. The code above, however, is holding on to the ZooKeeper watcher processing thread. The way to fix this is to run the code that needs a lock in a separate thread. e.g.
+
+```java
+InterProcessMutex lock = ...;
+ExecutorService service = ...;
+
+public void process(WatchedEvent event) {
+    service.submit(new Callable<Void>() {
+        @Override
+        public Void call() throws Exception {
+            lock.acquire();
+            // ...
+        }
+    });
+}
+```
diff --git a/docs/tech-note-02.md b/docs/tech-note-02.md
new file mode 100644
index 0000000..5053aa5
--- /dev/null
+++ b/docs/tech-note-02.md
@@ -0,0 +1,17 @@
+# Tech Note 2
+
+InterProcessMutex acquire() can be used to return immediately if lock can't be acquired.
+
+## Details
+
+It's not obvious from the docs, but calling InterProcessMutex.acquire(0, unit) will return immediately (i.e. without any waiting) if the lock cannot be acquired.
+
+For example:
+
+```java
+InterProcessMutex lock = ...;
+boolean didLock = lock.acquire(0, TimeUnit.any);
+if (!didLock) {
+    // comes back immediately
+}
+```
diff --git a/docs/tech-note-03.md b/docs/tech-note-03.md
new file mode 100644
index 0000000..f28e793
--- /dev/null
+++ b/docs/tech-note-03.md
@@ -0,0 +1,17 @@
+# Tech Note 3
+
+Dealing with session failure.
+
+## Details
+
+ZooKeeper's clients maintain a session with the server ensemble. Ephemeral nodes are tied to this session. When writing ZooKeeper-based applications you must deal with session expirations (due to network partitions, server crashes, etc.). This ZooKeeper FAQ discusses it: http://wiki.apache.org/hadoop/ZooKeeper/FAQ#A3
+
+For the most part, Curator shields you from the details of session management. However, Curator's behavior can be modified. By default, Curator treats session failures the same way that it treats connection failures: i.e. the current retry policy is checked and, if permitted, operations are retried.
+
+There are use-cases, though, where a series of operations must be tied to the ZooKeeper session. For example, an ephemeral node is created as a kind of marker then several other ZooKeeper operations are performed. If the session were to fail at any point, the entire operation should fail. Curator's default behavior does not do this. When you need this behavior, use:
+
+```java
+SessionFailRetryLoop
+```
+
+This is similar to the standard retry loop but if a session fails, any future Curator methods (in the same thread) will also fail.
diff --git a/docs/tech-note-04.md b/docs/tech-note-04.md
new file mode 100644
index 0000000..c01e986
--- /dev/null
+++ b/docs/tech-note-04.md
@@ -0,0 +1,15 @@
+# Tech Note 4
+
+ZooKeeper makes a very bad Queue source.
+
+## Details
+
+The ZooKeeper recipes page lists Queues as a possible use-case for ZooKeeper. Curator includes several Queue recipes. In our experience, however, it is a bad idea to use ZooKeeper as a Queue:
+
+ZooKeeper has a 1MB transport limitation. In practice this means that ZNodes must be relatively small. Typically, queues can contain many thousands of messages.
+
+ZooKeeper can slow down considerably on startup if there are many large ZNodes. This will be common if you are using ZooKeeper for queues. You will need to significantly increase initLimit and syncLimit.
+
+If a ZNode gets too big it can be extremely difficult to clean. getChildren() will fail on the node. At Netflix, we had to create a special-purpose program that had a huge value for `jute.maxbuffer` in order to get the nodes and delete them. ZooKeeper can start to perform badly if there are many nodes with thousands of children.
+
+The ZooKeeper database is kept entirely in memory. So, you can never have more messages than can fit in memory.
diff --git a/docs/tech-note-05.md b/docs/tech-note-05.md
new file mode 100644
index 0000000..66bc531
--- /dev/null
+++ b/docs/tech-note-05.md
@@ -0,0 +1,5 @@
+# Tech Note 5
+
+Porting Netflix Curator code to Apache Curator.
+
+The APIs in Apache Curator are exactly the same as Netflix Curator. The only difference is the package names. Simply replace `com.netflix.curator*` with `org.apache.curator.*`.
diff --git a/docs/tech-note-06.md b/docs/tech-note-06.md
new file mode 100644
index 0000000..4c18a0d
--- /dev/null
+++ b/docs/tech-note-06.md
@@ -0,0 +1,7 @@
+# Tech Note 6
+
+Friends don't let friends write ZooKeeper recipes
+
+## Details
+
+Writing ZooKeeper code is on par with the difficulty in writing concurrent language code. As we all know [Concurrency is Hard](https://www.google.com/search?q=concurrency+is+hard&aq=f&oq=concurrency+is+hard)! For ZooKeeper in particular, there are numerous edge case and undocumented behaviors that you must know in order to write correct recipes. In light of this, we **strongly** suggest you use one of the existing [Curator pre-built recipes](recipes.md) instead of writing raw ZooKeeper c [...]
diff --git a/docs/tech-note-07.md b/docs/tech-note-07.md
new file mode 100644
index 0000000..bd43529
--- /dev/null
+++ b/docs/tech-note-07.md
@@ -0,0 +1,14 @@
+# Tech Note 7
+
+Curator Recipes Own Their ZNode/Paths
+
+## Details
+
+Do not use paths passed to Curator recipes. Curator recipes rely on owning those paths and the ZNodes in those paths. For example, do not add your own ZNodes to the path passed to LeaderSelector, etc.
+
+```java
+selector = new LeaderSelector(client, "/leader", listener);
+client.create().forPath("/leader/mynode");   // THIS IS NOT SUPPORTED!
+```
+
+Also, do not delete nodes that have been "given" to a Curator recipe.
diff --git a/docs/tech-note-08.md b/docs/tech-note-08.md
new file mode 100644
index 0000000..9927f86
--- /dev/null
+++ b/docs/tech-note-08.md
@@ -0,0 +1,13 @@
+# Tech Note 8
+
+Controlling Curator Logging
+
+## Details
+
+Curator logging can be customized. Use the following switches via the command line (`-D`) or via `System.setProperty()`:
+
+| Switch                                                      | Description                                                                                                                                                              |
+|-------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| curator-dont-log-connection-problems=true                   | Normally, connection issues are logged as the warning "Connection attempt unsuccessful..." or the error "Connection timed out...". This switch turns these messages off. |
+| curator-log-events=true                                     | All ZooKeeper events will be logged as DEBUG.                                                                                                                            |
+| curator-log-only-first-connection-issue-as-error-level=true | When this switch is enabled, the first connection issue is logged as ERROR. Additional connection issues are logged as DEBUG until the connection is restored.           |
diff --git a/docs/tech-note-09.md b/docs/tech-note-09.md
new file mode 100644
index 0000000..b8c294a
--- /dev/null
+++ b/docs/tech-note-09.md
@@ -0,0 +1,9 @@
+# Tech Note 9
+
+**NOTE: PathChildrenCache now uses getData() instead of checkExists().**
+
+Curator 2.5.0 changes internal behavior for PathChildrenCache. Now, regardless of whether "cacheData" is set to true, PathChildrenCache will always call getData on the nodes.
+
+This is due to [CURATOR-107](https://issues.apache.org/jira/browse/CURATOR-107). It's been shown that using `checkExists()` with watchers can cause a type of memory leak as watchers will be left dangling on non-existent ZNodes. Calling `getData()` works around this issue.
+
+However, it's possible that this change will affect performance. If you would like the old behavior of using `checkExists()`, you can set a system property: add `-Dcurator-path-children-cache-use-exists=true` to your command line or call `System.setProperty("curator-path-children-cache-use-exists", "true")`.
diff --git a/docs/tech-note-10.md b/docs/tech-note-10.md
new file mode 100644
index 0000000..36588ae
--- /dev/null
+++ b/docs/tech-note-10.md
@@ -0,0 +1,27 @@
+# Tech Note 10
+
+**JVM pauses can cause unexpected client state with improperly chosen session timeouts.**
+
+## Background
+
+Discussions: https://lists.apache.org/thread/1q7vhy8p3v3mxq3159w4tr9x15ywbcrr
+
+ZooKeeper/Curator recipes rely on a consistent view of the state of the ensemble. ZooKeeper's clients maintain a session with the server they are connected to. Clients maintain periodic heartbeats to the server to maintain this session. If a heartbeat is missed, the client goes into Disconnected state. When this happens, Curator goes into SUSPENDED via the ConnectionStateListener. Any locks, etc. must be considered temporarily lost while the connection is SUSPENDED (see the [Error Handli [...]
+
+The implication of this is that great care must be taken to tune your JVM and choose an appropriate session timeout. Here's an example of what can happen if this is not done:
+
+* A session timeout of 3 seconds is used
+* Client A creates a Curator InterProcessMutex and acquires the lock
+* Client B also creates a Curator InterProcessMutex for the same path and is blocked waiting for the lock to release
+* Client A's JVM has a stop-the-world GC for 10 seconds
+  * Client A's session will have lapsed due to missed heartbeats
+  * ZooKeeper will delete Client A's EPHEMERAL node representing its InterProcessMutex lock
+  * Client B's watcher will fire, and it will successfully gain the lock
+* After the GC, Client A will un-pause
+* For a short period of time, **BOTH CLIENT A AND CLIENT B WILL BELIEVE THEY ARE THE LOCK HOLDER**
+
+The remedy for this is tune your JVM so that GC pauses (or other kinds of pauses) do not exceed your session timeout. JVM tuning is beyond the scope of this Tech Note. The default Curator session timeout is 60 seconds. Very low session timeouts should be considered risky.
+
+## Summary
+
+There is always an edge case where VM pauses might exceed your client heartbeat and cause a client misperception about it’s state for a short period of time once the VM un-pauses. In practice, a tuned VM that has been running within known bounds for a reasonable period will not exhibit this behavior. Session timeout must match this known bounds in order to have consistent client state.
diff --git a/docs/tech-note-11.md b/docs/tech-note-11.md
new file mode 100644
index 0000000..be25a9c
--- /dev/null
+++ b/docs/tech-note-11.md
@@ -0,0 +1,14 @@
+# Tech Note 11
+
+Curator internally wraps Watchers.
+
+## Details
+
+When you set Watchers using Curator, your Watcher instance is not passed directly to ZooKeeper. Instead, it is wrapped in a special-purpose Curator Watcher (the internal class, NamespaceWatcher). Normally, this is not an issue and is transparent to your client code. However, if you bypass Curator and set a Watcher directly with the ZooKeeper handle, ZooKeeper will not recognize it as the same Watcher set via Curator and that watcher will get called twice when it triggers.
+
+```java
+Watcher myWatcher = ...;
+curator.getData().usingWatcher(myWatcher).forPath(path);
+curator.getZookeeperClient().getZooKeeper().getData(path, myWatcher, stat);
+// myWatcher will get called twice when the data for path is changed
+```
diff --git a/docs/tech-note-12.md b/docs/tech-note-12.md
new file mode 100644
index 0000000..a94e83f
--- /dev/null
+++ b/docs/tech-note-12.md
@@ -0,0 +1,27 @@
+# Tech Note 12
+
+Curator connection semantics
+
+:::tip
+
+Note: Please see [Tech Note 14](tech-note-14.md) as well.
+
+:::
+
+## Details
+
+The following events occur in the life cycle of a connection between Curator and Zookeeper.
+
+CONNECTED: This occurs when Curator initially connects to Zookeeper. It will only ever be seen once per Curator instance.
+
+SUSPENDED: This occurs as soon as Curator determines that it has lost its connection to Zookeeper
+
+LOST: The meaning of a LOST even varies between Curator 2.X and Curator 3.X.
+
+In all versions of Curator, a LOST event may be explicitly received from Zookeeper if Curator attempts to use a session that has been timed out by Zookeeper.
+
+In Curator 2.X a LOST event will occur when Curator gives up retrying an operation. The number of retries is determined by the specified retry policy. A LOST event of this type does not necessarily mean that the session on the server has been lost, but it must be assumed to be so.
+
+In Curator 3.x, Curator attempts to simulate server side session loss, by starting a timer (set to the negotiated session timeout length) upon receiving the SUSPENDED event. If the timer expires before Curator re-establishes a connection to Zookeeper then Curator will publish a LOST event. It can be assumed that if this LOST event is received that the session has timed out on the server (though this is not guaranteed as Curator has no connection to the server at this point to confirm this).
+
+RECONNECTED: This occurs once a connection has been reestablished to Zookeeper.
diff --git a/docs/tech-note-13.md b/docs/tech-note-13.md
new file mode 100644
index 0000000..1cd4852
--- /dev/null
+++ b/docs/tech-note-13.md
@@ -0,0 +1,32 @@
+# Tech Note 13
+
+Guava usage in Curator
+
+## Details
+
+Since Curator was created at Netflix it has used Google's popular Guava library. Due to the many versions of Guava used in projects that also use Curator there has always been the potential for conflicts. Recent versions of Guava removed some APIs that Curator uses internally and Curator users were getting ClassNotFoundException, etc. [CURATOR-200](https://issues.apache.org/jira/browse/CURATOR-200) addresses these issues by shading Guava into Curator.
+
+### Shaded But Not Gone
+
+Unfortunately, a few of Curator's public APIs use Guava classes (e.g. ListenerContainer's use of Guava's Function). Breaking public APIs would cause as much harm as solving the Guava problem. So, it was decided to shade all Guava except for these three classes:
+
+* com.google.common.base.Function
+* com.google.common.base.Predicate
+* com.google.common.reflect.TypeToken
+
+The implication of this is that Curator still has a hard dependency on Guava but only for these three classes. What this means for Curator users is that you can use whatever version of Guava your project needs without concern about ClassNotFoundException, NoSuchMethodException, etc.
+
+## Summary
+
+* All but three Guava classes are completed shaded into Curator
+* Curator still has a hard dependency on Guava, but you should be able to use whatever version of Guava your project needs
+
+## Test
+
+Note, this project proves the shaded version of Guava: https://github.com/Randgalt/curator-guava-example
+
+## Comment
+
+For those still not convinced. Here's a disassembly of ListenerContainer.class from Curator 3.3.0. You can see that various Guava classes like MoreExecutors are shaded.
+
+Disassembly: https://gist.github.com/Randgalt/3fcdca337a2f8527a3f7ee871852f456
diff --git a/docs/tech-note-14.md b/docs/tech-note-14.md
new file mode 100644
index 0000000..844059d
--- /dev/null
+++ b/docs/tech-note-14.md
@@ -0,0 +1,42 @@
+# Tech Note 14
+
+Session expiration in Curator
+
+## Background
+
+As noted in [Tech Note 12](tech-note-12.md), Since 3.x Curator attempts to simulate server side session loss by starting a timer (set to the negotiated session timeout length) upon receiving the SUSPENDED event. This Tech Note expands on this, explains some non-obvious edge cases, and suggests strategies on how to handle them.
+
+## ZooKeeper's Session Handling
+
+The ZooKeeper client (which Curator wraps) and the ZooKeeper server maintain a session that's used for ephemeral nodes, etc. The session is maintained by the sending of heartbeat events. You can read more details here: [ZooKeeper Programmer's Guide](https://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#ch_zkSessions). If the server doesn't receive a heartbeat from the client within 2/3 of a session length, the server closes the connection which ultimately results in the clie [...]
+
+## Curator
+
+When Curator receives a `KeeperState.Disconnected` message it changes its state to SUSPENDED (see [Tech Note 12](tech-note-12.md), [Error Handling](errors.md), etc.). As always, our recommendation is to treat SUSPENDED as a complete connection loss. Exit all locks, leaders, etc. That said, since 3.x, Curator tries to simulate session expiration by starting an internal timer when `KeeperState.Disconnected` is received. If the timer expires before the connection is repaired, Curator change [...]
+
+The astute reader will realize that setting the timer to the full value of the session timeout may not be the correct value. This is due to the fact that the server closes the connection when 2/3 of a session have already elapsed. Thus, the server may close a session well before Curator's timer elapses. This is further complicated by the fact that the client has no way of knowing why the connection was closed. There are at least three possible reasons for a client connection to close:
+
+1. The server has not received a heartbeat within 2/3 of a session
+2. The server crashed
+3. Some kind of general TCP error which causes a connection to fail
+
+In situation 1, the correct value for Curator's timer is 1/3 of a session - i.e. Curator should switch to LOST if the connection is not repaired within 1/3 of a session as 2/3 of the session has already lapsed from the server's point of view. In situations 2 and 3 however, Curator's timer should be the full value of the session (possibly plus some "slop" value). In truth, there is no way to completely emulate in the client the session timing as managed by the ZooKeeper server. So, again, [...]
+
+## Recommendations
+
+* Treat SUSPENDED as a complete connection loss. This will cause more instability in your application but is the safest option
+* Use Curator's default session simulation which uses an internal timer of 100% of the negotiated session timeout - this is the default in Curator since 3.x
+* If your application demands it, you can instruct Curator's session timer to use 33% of the session timeout (see below). Note: this assumes that connection losses are the result of missed heartbeats with the server which isn't always the case.
+
+## Changing Curator's Session Timer
+
+Note: due to [CURATOR-460](https://issues.apache.org/jira/browse/CURATOR-460) changing the session timer has not worked. This will be fixed when CURATOR-460 is released.
+
+Curator's session timer is handled via the ConnectionHandlingPolicy. You can substitute a 33% session timer using the `StandardConnectionHandlingPolicy` when creating Curator instances via the Factory. E.g.,
+
+```java
+CuratorFramework client = CuratorFrameworkFactory.builder()
+    .connectionHandlingPolicy(new StandardConnectionHandlingPolicy(33))
+        ...other methods...
+    .build();
+```
diff --git a/docs/tech-note-15.md b/docs/tech-note-15.md
new file mode 100644
index 0000000..c29ba60
--- /dev/null
+++ b/docs/tech-note-15.md
@@ -0,0 +1,80 @@
+# Tech Note 15
+
+API Changes in Curator 5.0.0 and how to workaround them if you need binary compatibility.
+
+## Breaking Changes
+
+Apache Curator 5.0.0 includes a number of breaking changes that require recompilation. If you are in a situation where you want to use Curator 5.0.0 but must include a third party dependency that was compiled with an earlier version of Curator you can run into the following exception:
+
+```text
+java.lang.NoSuchMethodError: org.apache.curator.framework.recipes.cache.PathChildrenCache.getListenable()Lorg/apache/curator/framework/listen/ListenerContainer;
+at binary.Curator50Test.run(Curator50Test.java:26)
+at test.Test.main(Test.java:9)
+at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.lang.reflect.Method.invoke(Method.java:498)
+at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
+at java.lang.Thread.run(Thread.java:748)
+```
+
+This occurs because the return value of PathChildrenCache.getListenable() has changed in Curator 5.0.0 (note: the full list of breaking changes can be found [here](breaking-changes.md)). You can work around this problem by creating a mini-JAR containing older versions of the changed Curator classes and making sure that that JAR is earlier in your classpath than the Curator 5.0.0 JARs. To create this JAR in Maven see below. If the community needs it, the Apache Curator team will consider  [...]
+
+## Maven Snippet
+
+```xml
+<plugin>
+<groupId>org.apache.maven.plugins</groupId>
+<artifactId>maven-dependency-plugin</artifactId>
+<version>3.1.2</version>
+<executions>
+    <execution>
+        <id>unpack</id>
+        <phase>compile</phase>
+        <goals>
+            <goal>unpack</goal>
+        </goals>
+        <configuration>
+            <artifactItems>
+                <artifactItem>
+                    <groupId>org.apache.curator</groupId>
+                    <artifactId>curator-recipes</artifactId>
+                    <version>4.3.0</version>
+                    <type>jar</type>
+                    <overWrite>false</overWrite>
+                    <outputDirectory>${project.build.directory}/classes</outputDirectory>
+                    <destFileName>curator-4_0-recipes.jar</destFileName>
+                    <includes>
+                        org/apache/curator/framework/recipes/cache/NodeCache*.*,
+                        org/apache/curator/framework/recipes/cache/PathChildrenCache*.*,
+                        org/apache/curator/framework/recipes/cache/*Operation.*,
+                        org/apache/curator/framework/recipes/locks/ChildReaper*
+                        org/apache/curator/framework/recipes/locks/Reaper*,
+                        org/apache/curator/framework/recipes/nodes/PersistentNode*,
+                        org/apache/curator/framework/recipes/queue/DistributedDelayQueue*,
+                        org/apache/curator/framework/recipes/queue/DistributedIdQueue*,
+                        org/apache/curator/framework/recipes/queue/DistributedPriorityQueue*,
+                        org/apache/curator/framework/recipes/queue/DistributedQueue*,
+                        org/apache/curator/framework/recipes/queue/QueueBase*,
+                        org/apache/curator/framework/recipes/shared/SharedValue*,
+                        org/apache/curator/framework/recipes/shared/SharedValueReader*
+                    </includes>
+                </artifactItem>
+                <artifactItem>
+                    <groupId>org.apache.curator</groupId>
+                    <artifactId>curator-framework</artifactId>
+                    <version>4.3.0</version>
+                    <type>jar</type>
+                    <overWrite>false</overWrite>
+                    <outputDirectory>${project.build.directory}/classes</outputDirectory>
+                    <destFileName>curator-4_0-recipes.jar</destFileName>
+                    <includes>
+                        org/apache/curator/framework/listen/ListenerContainer*
+                    </includes>
+                </artifactItem>
+            </artifactItems>
+        </configuration>
+    </execution>
+</executions>
+</plugin>
+```
diff --git a/docs/tech-notes.md b/docs/tech-notes.md
new file mode 100644
index 0000000..e28a03c
--- /dev/null
+++ b/docs/tech-notes.md
@@ -0,0 +1,19 @@
+# Tech Notes
+
+Various questions, issues, etc. come up from time to time. Answers and workarounds will be collected here as Tech Notes.
+
+* [TN1](tech-note-01.md): ZooKeeper watches are single threaded.
+* [TN2](tech-note-02.md): InterProcessMutex acquire() can be used to return immediately if lock can't be acquired.
+* [TN3](tech-note-03.md): Dealing with session failure.
+* [TN4](tech-note-04.md): ZooKeeper makes a very bad Queue source.
+* [TN5](tech-note-05.md): The APIs in Apache Curator are exactly the same as Netflix Curator.
+* [TN6](tech-note-06.md): Friends don't let friends write ZooKeeper recipes
+* [TN7](tech-note-07.md): Do not use paths passed to Curator recipes.
+* [TN8](tech-note-08.md): Curator logging can be customized.
+* [TN9](tech-note-09.md): NOTE: PathChildrenCache now uses getData() instead of checkExists().
+* [TN10](tech-note-10.md): JVM pauses can cause unexpected client state with improperly chosen session timeouts.
+* [TN11](tech-note-11.md): Curator internally wraps Watchers.
+* [TN12](tech-note-12.md): Curator connection semantics
+* [TN13](tech-note-13.md): Guava usage in Curator
+* [TN14](tech-note-14.md): Session expiration in Curator
+* [TN15](tech-note-15.md): API Changes in Curator 5.0.0 and how to workaround them if you need binary compatibility.
diff --git a/docs/utilities.md b/docs/utilities.md
new file mode 100644
index 0000000..4347e8a
--- /dev/null
+++ b/docs/utilities.md
@@ -0,0 +1,62 @@
+# Utilities
+
+## Test Server
+
+In the curator-test sub-model the `TestingServer` class is provided. This class creates a local, in-process ZooKeeper server that can be used for testing.
+
+## Test Cluster
+
+In the curator-test sub-model the `TestingCluster` class is provided. This class creates an internally running ensemble of ZooKeeper servers.
+
+## ZKPaths
+
+Various static methods to help with using ZooKeeper ZNode paths:
+
+* getNodeFromPath: Given a full path, return the node name. i.e. "/one/two/three" will return "three"
+* mkdirs: Make sure all the nodes in the path are created.
+* getSortedChildren: Return the children of the given path sorted by sequence number
+* makePath: Given a parent path and a child node, create a combined full path
+
+## Circuit Breaking ConnectionStateListener
+
+During network outages ZooKeeper can become very noisy sending connection/disconnection events in rapid succession. Curator recipes respond to these messages by resetting state, etc. E.g. LeaderLatch must delete its lock node and try to recreate it in order to try to re-obtain leadership, etc.
+
+This noisy herding can be avoided by using the circuit breaking listener. When it receives ConnectionState.SUSPENDED, the circuit becomes "open" (based on the provided RetryPolicy) and will ignore future connection state changes until RetryPolicy timeout has elapsed. Note: however, if the connection goes from ConnectionState.SUSPENDED to ConnectionState.LOST the first LOST state is sent.
+
+When the circuit is closed, all connection state changes are forwarded to the managed listener. When the first disconnected state is received, the circuit becomes open. The state change that caused the circuit to open is sent to the managed listener and the RetryPolicy will be used to get a delay amount. While the delay is active, the circuit breaker will store state changes but will not forward them to the managed listener (except, however, the first time the state changes from SUSPENDE [...]
+
+You can enable the Circuit Breaking ConnectionStateListener during creation of your CuratorFramework instance. E.g.,
+
+```java
+ConnectionStateListenerManagerFactory factory = ConnectionStateListenerManagerFactory.circuitBreaking(...retry policy for circuit breaking...);
+CuratorFramework client = CuratorFrameworkFactory.builder()
+   .connectionStateListenerManagerFactory(factory)
+   ... etc ...
+   .build();
+// all connection state listeners set for "client" will get circuit breaking behavior
+```
+
+## Locker
+
+Curator's Locker uses Java 7's try-with-resources feature to making using Curator locks safer:
+
+```java
+InterProcessMutex mutex = new InterProcessMutex(...) // or any InterProcessLock
+try (Locker locker = new Locker(mutex, maxTimeout, unit)) {
+   // do work
+}
+```
+
+## BlockingQueueConsumer
+
+See: [DistributedQueue](recipes-distributed-queue.md) and [DistributedPriorityQueue](recipes-distributed-priority-queue.md).
+
+A queue consumer that provides behavior similar to a JDK's BlockingQueue.
+
+## QueueSharder
+
+Due to limitations in ZooKeeper's transport layer, a single queue will break if it has more than 10K-ish items in it. This class provides a facade over multiple distributed queues. It monitors the queues and if any one of them goes over a threshold, a new queue is added. Puts are distributed amongst the queues.
+
+## WatcherRemoveCuratorFramework
+
+Curator has a utility that makes it easy to set watchers and remove them at a later date. It is used for all Curator recipes. From your CuratorFramework instance, call `newWatcherRemoveCuratorFramework()`. When using this proxy instance any watchers that are set are recorded. You can then call `removeWatchers()` to remove those watchers. See the Curator source code for usage details.
diff --git a/docs/zk-compatibility-34.md b/docs/zk-compatibility-34.md
new file mode 100644
index 0000000..4b727b4
--- /dev/null
+++ b/docs/zk-compatibility-34.md
@@ -0,0 +1,79 @@
+---
+sidebar_label: 'ZooKeeper 3.4.x'
+---
+
+# ZooKeeper Version 3.4.x Compatibility
+
+````mdx-code-block
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+````
+
+ZooKeeper 3.4.x is now at end-of-life. Consequently, the latest versions of Curator have removed support for it. If you wish to use Curator with ZooKeeper 3.4.x you should pin to version 4.2.x of Curator. Curator 4.2.x supports ZooKeeper 3.4.x ensembles in a soft-compatibility mode. To use this mode you must exclude ZooKeeper when adding Curator to your dependency management tool.
+
+<Tabs>
+<TabItem value="maven" label="Maven" default>
+
+```xml
+<dependency>
+    <groupId>org.apache.curator</groupId>
+    <artifactId>curator-recipes</artifactId>
+    <version>4.2.0</version>
+    <exclusions>
+        <exclusion>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>zookeeper</artifactId>
+        </exclusion>
+    </exclusions>
+</dependency>
+```
+
+</TabItem>
+<TabItem value="gradle" label="Gradle" default>
+
+```groovy
+compile('org.apache.curator:curator-recipes:$curatorVersion') {
+  exclude group: 'org.apache.zookeeper', module: 'zookeeper'
+}
+```
+
+</TabItem>
+</Tabs>
+
+You must add a dependency on ZooKeeper 3.4.x also.
+
+Curator will detect which ZooKeeper library is in use and automatically set ZooKeeper 3.4 compatibility mode as needed. In this mode, all features not supported by 3.4 are disabled. It is up to your application code to "do the right thing" and not use these features. Use the `isZk34CompatibilityMode()` method to determine which mode Curator is using at runtime.
+
+## Testing With ZooKeeper 3.4.x
+
+If you wish to use Curator's `TestingServer` with ZooKeeper 3.4.x you must use the older version of it (in addition to the instructions above):
+
+<Tabs>
+<TabItem value="maven" label="Maven" default>
+
+```xml
+<dependency>
+    <groupId>org.apache.curator</groupId>
+    <artifactId>curator-test</artifactId>
+    <version>2.12.0</version>
+    <exclusions>
+        <exclusion>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>zookeeper</artifactId>
+        </exclusion>
+    </exclusions>
+    <scope>test</scope>
+</dependency>
+```
+
+</TabItem>
+<TabItem value="gradle" label="Gradle" default>
+
+```groovy
+testCompile('org.apache.curator:curator-test:2.12.0') {
+  exclude group: 'org.apache.zookeeper', module: 'zookeeper'
+}
+```
+
+</TabItem>
+</Tabs>
diff --git a/docusaurus.config.js b/docusaurus.config.js
new file mode 100644
index 0000000..3b4a179
--- /dev/null
+++ b/docusaurus.config.js
@@ -0,0 +1,132 @@
+// @ts-check
+// Note: type annotations allow type checking and IDEs autocompletion
+
+const lightCodeTheme = require('prism-react-renderer/themes/github');
+const darkCodeTheme = require('prism-react-renderer/themes/dracula');
+
+/** @type {import('@docusaurus/types').Config} */
+const config = {
+    title: 'Apache Curator',
+    tagline: 'A Java/JVM client library for Apache ZooKeeper',
+    url: 'https://curator.apache.org',
+    baseUrl: '/',
+    onBrokenLinks: 'throw',
+    onBrokenMarkdownLinks: 'throw',
+    favicon: 'img/favicon.ico',
+
+    presets: [
+        [
+            'classic',
+            /** @type {import('@docusaurus/preset-classic').Options} */
+            ({
+                docs: {
+                    path: 'docs',
+                    routeBasePath: "/docs",
+                    showLastUpdateAuthor: true,
+                    showLastUpdateTime: true,
+                    sidebarPath: require.resolve('./sidebars.js'),
+                    editUrl: 'https://github.com/apache/curator-site/tree/main/',
+                },
+                // FIXME - uncomment once we write the first blog
+                // blog: {
+                //     showReadingTime: true,
+                //     editUrl: 'https://github.com/apache/curator-site/tree/main/',
+                // },
+                theme: {
+                    customCss: require.resolve('./src/css/custom.css'),
+                },
+            }),
+        ],
+    ],
+
+    themeConfig:
+    /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
+        ({
+            image: 'img/docusaurus-social-card.jpg',
+            colorMode: {
+                defaultMode: 'light',
+                disableSwitch: true
+            },
+            navbar: {
+                logo: {
+                    alt: 'Apache Curator',
+                    src: 'img/curator-logo.svg',
+                },
+                items: [
+                    {type: 'doc', docId: 'about', position: 'right', label: 'Documentation'},
+                    {type: 'doc', docId: 'community', position: 'right', label: 'Community', docsPluginId: 'community'},
+                    {to: '/download', label: 'Download', position: 'right'},
+                    // FIXME - uncomment once we write the first blog
+                    // {to: '/blog', label: 'Blog', position: 'right'},
+                    {
+                        href: 'https://github.com/apache/curator',
+                        position: 'right',
+                        className: 'header-github-link',
+                        'aria-label': 'GitHub repository',
+                    },
+                    {type: 'search', position: 'right'},
+                    {
+                        type: 'dropdown',
+                        label: 'ASF',
+                        position: 'right',
+                        items: [
+                            {label: 'Foundation', to: 'https://www.apache.org/'},
+                            {label: 'License', to: 'https://www.apache.org/licenses/'},
+                            {label: 'Events', to: 'https://www.apache.org/events/current-event'},
+                            {label: 'Security', to: 'https://www.apache.org/security/'},
+                            {label: 'Sponsorship', to: 'https://www.apache.org/foundation/sponsorship.html'},
+                            {label: 'Privacy', to: 'https://privacy.apache.org/policies/privacy-policy-public.html'},
+                            {label: 'Thanks', to: 'https://www.apache.org/foundation/thanks.html'}
+                        ],
+                    },
+                ],
+            },
+            footer: {
+                style: 'dark',
+                logo: {
+                    height: '128px',
+                    alt: 'Apache logo',
+                    src: 'img/asf-logo.svg',
+                    href: 'https://www.apache.org/'
+                },
+                copyright: 'Apache Curator, the Apache feather logo, and the Apache Curator project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.',
+            },
+            prism: {
+                theme: lightCodeTheme,
+                darkTheme: darkCodeTheme,
+                additionalLanguages: [
+                    'groovy',
+                    'java',
+                    'properties',
+                ],
+            },
+        }),
+
+    plugins: [
+        [
+            '@docusaurus/plugin-content-docs',
+            {
+                id: 'community',
+                path: 'community',
+                routeBasePath: 'community',
+                sidebarPath: require.resolve('./sidebarsCommunity.js'),
+                editUrl: 'https://github.com/apache/curator-site/tree/main/',
+            },
+        ],
+        [require.resolve("docusaurus-plugin-image-zoom"), {}],
+    ],
+
+    themes: [
+        [
+            require.resolve("@easyops-cn/docusaurus-search-local"),
+            {
+                hashed: true,
+                indexDocs: true,
+                indexPages: true,
+                language: ["en"],
+            }
+        ],
+    ]
+};
+
+module.exports = config;
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..a6ed029
--- /dev/null
+++ b/package.json
@@ -0,0 +1,49 @@
+{
+  "name": "curator-site",
+  "version": "0.0.0",
+  "private": true,
+  "scripts": {
+    "docusaurus": "docusaurus",
+    "start": "docusaurus start",
+    "build": "docusaurus build",
+    "swizzle": "docusaurus swizzle",
+    "deploy": "docusaurus deploy",
+    "clear": "docusaurus clear",
+    "serve": "docusaurus serve",
+    "write-translations": "docusaurus write-translations",
+    "write-heading-ids": "docusaurus write-heading-ids",
+    "typecheck": "tsc"
+  },
+  "dependencies": {
+    "@docusaurus/core": "2.4.1",
+    "@docusaurus/preset-classic": "2.4.1",
+    "@easyops-cn/docusaurus-search-local": "^0.26.1",
+    "@mdx-js/react": "^1.6.22",
+    "clsx": "^1.2.1",
+    "docusaurus-plugin-image-zoom": "^0.1.1",
+    "prism-react-renderer": "^1.3.5",
+    "react": "^17.0.2",
+    "react-dom": "^17.0.2"
+  },
+  "devDependencies": {
+    "@docusaurus/module-type-aliases": "2.4.1",
+    "@tsconfig/docusaurus": "^1.0.5",
+    "typescript": "^4.7.4"
+  },
+  "browserslist": {
+    "production": [
+      ">0.5%",
+      "not dead",
+      "not op_mini all"
+    ],
+    "development": [
+      "last 1 chrome version",
+      "last 1 firefox version",
+      "last 1 safari version"
+    ]
+  },
+  "engines": {
+    "node": ">=16.14"
+  },
+  "packageManager": "yarn@3.6.1"
+}
diff --git a/sidebars.js b/sidebars.js
new file mode 100644
index 0000000..dabc210
--- /dev/null
+++ b/sidebars.js
@@ -0,0 +1,84 @@
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+const sidebars = {
+    docs: [
+        'about',
+        'getting-started',
+        'examples',
+        {
+            type: 'category',
+            label: 'Recipes',
+            link: {type: 'doc', id: 'recipes'},
+            collapsed: true,
+            collapsible: true,
+            items: [
+                'recipes-leader-latch',
+                'recipes-leader-election',
+                'recipes-shared-reentrant-lock',
+                'recipes-shared-lock',
+                'recipes-shared-reentrant-read-write-lock',
+                'recipes-shared-semaphore',
+                'recipes-multi-shared-lock',
+                'recipes-barrier',
+                'recipes-double-barrier',
+                'recipes-shared-counter',
+                'recipes-distributed-atomic-long',
+                'recipes-curator-cache',
+                'recipes-path-cache',
+                'recipes-node-cache',
+                'recipes-tree-cache',
+                'recipes-persistent-watcher',
+                'recipes-persistent-node',
+                'recipes-persistent-ttl-node',
+                'recipes-group-member',
+                'recipes-distributed-queue',
+                'recipes-distributed-id-queue',
+                'recipes-distributed-priority-queue',
+                'recipes-distributed-delay-queue',
+                'recipes-simple-distributed-queue',
+            ],
+        },
+        'async',
+        'modeled',
+        'migrations',
+        'schema',
+        {type: 'html', defaultStyle: true, value: 'LOW LEVEL'},
+        'framework',
+        'utilities',
+        'client',
+        {type: 'html', defaultStyle: true, value: 'DETAILS'},
+        'errors',
+        'logging',
+        {
+            type: 'category',
+            label: 'Tech Notes',
+            link: {type: 'doc', id: 'tech-notes'},
+            collapsed: true,
+            collapsible: true,
+            items: [
+                'tech-note-01',
+                'tech-note-02',
+                'tech-note-03',
+                'tech-note-04',
+                'tech-note-05',
+                'tech-note-06',
+                'tech-note-07',
+                'tech-note-08',
+                'tech-note-09',
+                'tech-note-10',
+                'tech-note-11',
+                'tech-note-12',
+                'tech-note-13',
+                'tech-note-14',
+                'tech-note-15',
+            ],
+        },
+        'zk-compatibility-34',
+        'breaking-changes',
+        {type: 'link', label: 'Wiki', href: 'https://cwiki.apache.org/confluence/display/CURATOR'},
+        {type: 'html', defaultStyle: true, value: 'EXTENSIONS'},
+        'service-discovery',
+        'service-discovery-server',
+    ],
+};
+
+module.exports = sidebars;
diff --git a/sidebarsCommunity.js b/sidebarsCommunity.js
new file mode 100644
index 0000000..d5b398a
--- /dev/null
+++ b/sidebarsCommunity.js
@@ -0,0 +1,20 @@
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+const sidebars = {
+    community: [
+        'community',
+        'team',
+        'history',
+        'submitting-pull-requests',
+        {
+            type: 'category',
+            label: 'Committers',
+            collapsed: false,
+            items: [
+                'new-committers',
+                'releasing-curator',
+            ]
+        }
+    ],
+};
+
+module.exports = sidebars;
diff --git a/src/components/Committers/index.module.css b/src/components/Committers/index.module.css
new file mode 100644
index 0000000..67034dc
--- /dev/null
+++ b/src/components/Committers/index.module.css
@@ -0,0 +1,4 @@
+.contributorAvatar {
+    width: 50px;
+    border-radius: 50%;
+}
diff --git a/src/components/Committers/index.tsx b/src/components/Committers/index.tsx
new file mode 100644
index 0000000..00819c3
--- /dev/null
+++ b/src/components/Committers/index.tsx
@@ -0,0 +1,61 @@
+import React from "react"
+import styles from "./index.module.css"
+
+type CommitterData = {
+    name: string,
+    apacheId: string,
+    githubId: string,
+    url: string,
+    timezone: string,
+}
+
+// sorted by apacheId
+const committers: CommitterData[] = [
+    {name: 'Jordan Zimmerman', apacheId: 'randgalt', githubId: 'Randgalt', url: 'https://people.apache.org/~randgalt', timezone: '-5'},
+    {name: 'Jay Zarfoss', apacheId: 'zarfide', githubId: 'zarfide', url: 'https://www.linkedin.com/pub/jay-zarfoss/34/56/a19', timezone: '-8'},
+    {name: 'Eric Tschetter', apacheId: 'cheddar', githubId: 'cheddar', url: '', timezone: '-6'},
+    {name: 'Ioannis Canellos', apacheId: 'iocanel', githubId: 'iocanel', url: 'https://iocanel.blogspot.com', timezone: '+2'},
+    {name: 'Cameron McKenzie', apacheId: 'cammckenzie', githubId: 'cammckenzie', url: 'https://people.apache.org/~cammckenzie', timezone: '+10'},
+    {name: 'Scott Blum', apacheId: 'dragonsinth', githubId: 'dragonsinth', url: 'https://github.com/dragonsinth', timezone: '-5'},
+    {name: 'Mike Drob', apacheId: 'mdrob', githubId: 'madrob', url: 'https://people.apache.org/~mdrob', timezone: '-6'},
+    {name: 'Patrick Hunt', apacheId: 'phunt', githubId: 'phunt', url: 'https://www.linkedin.com/pub/patrick-hunt/2/5b2/24a', timezone: '-8'},
+    {name: 'Mahadev Konar', apacheId: 'mahadev', githubId: 'mahadevkonar', url: 'https://www.linkedin.com/in/mahadevkonar', timezone: '-8'},
+    {name: 'Luciano Resende', apacheId: 'lresende', githubId: 'lresende', url: 'https://people.apache.org/~lresende', timezone: '-8'},
+    {name: 'Enis Söztutar', apacheId: 'enis', githubId: 'enis', url: 'https://people.apache.org/~enis', timezone: '-8'},
+    {name: 'Fangmin Lyu', apacheId: 'fangmin', githubId: 'lvfangmin', url: 'https://people.apache.org/~fangmin', timezone: '-8'},
+    {name: 'Shay Shimony', apacheId: 'shayshim', githubId: 'shayshim', url: 'https://people.apache.org/~shayshim', timezone: '+2'},
+    {name: 'Enrico Olivelli', apacheId: 'eolivelli', githubId: 'eolivelli', url: 'https://people.apache.org/~eolivelli', timezone: '+1'},
+    {name: 'Zili Chen', apacheId: 'tison', githubId: 'tisonkun', url: 'https://tisonkun.org', timezone: '+8'},
+]
+
+export default function Committers(): React.JSX.Element {
+    return <>
+        <table>
+            <thead>
+            <tr>
+                <th><b>Avatar</b></th>
+                <th><b>Name</b></th>
+                <th><b>Apache ID</b></th>
+                <th><b>GitHub ID</b></th>
+                <th><b>URL</b></th>
+                <th><b>Time Zone</b></th>
+            </tr>
+            </thead>
+            <tbody>
+            {committers
+                .sort((c0, c1) => c0.apacheId.localeCompare(c1.apacheId))
+                .map(v => (
+                    <tr key={v.name}>
+                        <td><img width={64} className={styles.contributorAvatar}
+                                 src={`https://github.com/${v.githubId}.png`} alt={v.name}/></td>
+                        <td>{v.name}</td>
+                        <td>{v.apacheId}</td>
+                        <td><a target={"_blank"} href={`https://github.com/${v.githubId}`}>{v.githubId}</a></td>
+                        <td><a target={"_blank"} href={`${v.url}`}>{v.url}</a></td>
+                        <td>{v.timezone}</td>
+                    </tr>
+                ))}
+            </tbody>
+        </table>
+    </>
+}
diff --git a/src/css/custom.css b/src/css/custom.css
new file mode 100644
index 0000000..fdfeb22
--- /dev/null
+++ b/src/css/custom.css
@@ -0,0 +1,30 @@
+/**
+ * Any CSS included here will be global. The classic template
+ * bundles Infima by default. Infima is a CSS framework designed to
+ * work well for content-centric websites.
+ */
+
+/* You can override the default Infima variables here. */
+:root {
+    --ifm-color-primary: #3071a9;
+    --ifm-code-font-size: 95%;
+    --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
+    --ifm-footer-background-color:rgba(115, 150, 233, 0.61);
+}
+
+[data-theme='dark'] {
+  --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
+}
+
+.header-github-link:hover {
+    opacity: 0.6;
+}
+
+.header-github-link::before {
+    content: '';
+    width: 24px;
+    height: 24px;
+    display: flex;
+    background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1. [...]
+    no-repeat;
+}
diff --git a/src/pages/download.md b/src/pages/download.md
new file mode 100644
index 0000000..bf65c6b
--- /dev/null
+++ b/src/pages/download.md
@@ -0,0 +1,162 @@
+---
+hide_table_of_contents: true
+---
+
+# Apache Curator Releases
+
+## Download
+
+The current release can be [downloaded using these links](#current-release).
+
+Older releases are available from the [archive](https://archive.apache.org/dist/curator/).
+
+You can verify the integrity of a downloaded release using the PGP signatures and hashes hosted at the main Apache distribution site. For additional information, refer to the Apache documentation for [verifying the integrity of Apache project releases](https://www.apache.org/info/verification.html). The binary artifacts for Curator are available from [Maven Central](https://central.sonatype.com/search?q=org.apache.curator) and its mirrors.
+
+## Current release
+
+* Current release: [apache-curator-5.5.0-source-release.zip](https://downloads.apache.org/curator/5.5.0/apache-curator-5.5.0-source-release.zip)
+* PGP: [apache-curator-5.5.0-source-release.zip.asc](https://downloads.apache.org/curator/5.5.0/apache-curator-5.5.0-source-release.zip.asc)
+* SHA-512: [apache-curator-5.5.0-source-release.zip.sha512](https://downloads.apache.org/curator/5.5.0/apache-curator-5.5.0-source-release.zip.sha512)
+* Keys: [KEYS](https://downloads.apache.org/curator/KEYS)
+
+## History
+
+Below is a detailed historical list of releases.
+
+Starting from 4.1.0, Apache Curator maintains only the current version and do monotonic releases; that is, no backport.
+
+### 2023-04-28 Release 5.5.0 available
+
+See [Curator 5.5.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12352495) for details.
+
+### 2022-11-02 Release 5.4.0 available
+
+See [Curator 5.4.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12352051) for details.
+
+### 2022-07-04 Release 5.3.0 available
+
+See [Curator 5.3.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12351883) for details.
+
+### 2022-03-17 Release 5.2.1 available
+
+See [Curator 5.2.1 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12350448) for details.
+
+### 2021-07-26 Release 5.2.0 available
+
+See [Curator 5.2.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12348543&projectId=12314425) for details.
+
+### 2020-07-03 Release 5.1.0 available
+
+See [Curator 5.1.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12348338) for details.
+
+### 2020-05-28 Release 5.0.0 available
+
+Curator 5.0 contains a few non-backward compatible/breaking changes from previous versions. Read the [Breaking Changes](/docs/breaking-changes) page for details.
+
+See [Curator 5.0.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12347240&projectId=12314425) for details.
+
+### 2020-02-29 Release 4.3.0 available
+
+See [Curator 4.3.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12345141) for details.
+
+### 2019-03-06 Release 4.2.0 available
+
+See [Curator 4.2.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12344625) for details.
+
+### 2018-12-19 Release 4.1.0 available
+
+See [Curator 4.1.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12342759&projectId=12314425) for details.
+
+### 2018-12-04 Release 2.13.0 available
+
+This is the last release of the 2.x branch. From now on, Apache Curator does not do backport.
+
+See [Curator 2.13.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12339848) for details.
+
+### 2018-02-11 Release 4.0.1 available
+
+See [Curator 4.0.1 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12341261) for details.
+
+### 2017-07-29 Release 4.0.0 available
+
+See [Curator 4.0.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12339847) for details.
+
+### 2017-03-07 Release 3.3.0 and 2.12.0 available
+
+See [Curator 3.3.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12338713) and [Curator 2.12.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12338714) for details.
+
+### 2016-11-14 Release 3.2.1 and 2.11.1 available
+
+See [Curator 3.2.1 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12336949) and [Curator 2.11.1 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12336950) for details.
+
+### 2016-06-23 Release 3.2.0 and 2.11.0 available
+
+See [Curator 3.2.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12335829) and [Curator 2.11.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12335828) for details.
+
+### 2016-02-14 Release 3.1.0 and 2.10.0 available
+
+See [Curator 3.1.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12333884) and [Curator 2.10.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12333942) for details.
+
+### 2015-11-02 Release 2.9.1 available
+
+See [Curator 2.9.1 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12333324) for details.
+
+### 2015-10-14 Release 3.0.0 available
+
+See [Curator 3.0.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12326664) for details.
+
+### 2015-09-10 Release 2.9.0 available
+
+See [Curator 2.9.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12332392) for details.
+
+### 2015-05-11 Release 2.8.0 available
+
+See [Curator 2.8.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12329300) for details.
+
+### 2015-01-16 Release 2.7.1 available
+
+See [Curator 2.7.1 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12328938) for details.
+
+### 2014-11-03 Release 2.7.0 available
+
+See [Curator 2.7.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12327442) for details.
+
+### 2014-07-11 Release 2.6.0 available
+
+See [Curator 2.6.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12327098) for details.
+
+### 2014-05-28 Release 2.5.0 available
+
+See [Curator 2.5.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12326663) for details.
+
+### 2014-04-24 Release 2.4.2 available
+
+See [Curator 2.4.2 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12326537) for details.
+
+### 2014-03-10 Release 2.4.1 available
+
+See [Curator 2.4.1 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12326180) for details.
+
+### 2014-02-09 Release 2.4.0 available
+
+See [Curator 2.4.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12325558) for details.
+
+### 2013-11-07 Release 2.3.0 available
+
+See [Curator 2.3.0 Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12324984) for details.
+
+### 2013-08-08 Release 2.2.0-incubating available
+
+See [Curator 2.2.0-incubating Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12324635) for details.
+
+### 2013-07-01 Release 2.1.0-incubating available
+
+See [Curator 2.1.0-incubating Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12324401) for details.
+
+### 2013-05-31 Release 2.0.1-incubating available
+
+See [Curator 2.0.1-incubating Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12324348) for details.
+
+### 2013-05-09 Release 2.0.0 available
+
+This is the first release of Apache Curator (it's numbered 2.0.0 because Apache Curator is a continuation of Netflix Curator which was in version 1.x).
diff --git a/src/pages/index.module.css b/src/pages/index.module.css
new file mode 100644
index 0000000..59f1db6
--- /dev/null
+++ b/src/pages/index.module.css
@@ -0,0 +1,27 @@
+/**
+ * CSS files with the .module.css suffix will be treated as CSS modules
+ * and scoped locally.
+ */
+
+.heroBanner {
+    padding: 4rem 0;
+    text-align: center;
+    position: relative;
+    overflow: hidden;
+}
+
+@media screen and (max-width: 996px) {
+    .heroBanner {
+        padding: 2rem;
+    }
+}
+
+.buttons {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.buttons a:first-child {
+    margin-right: 1rem;
+}
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
new file mode 100644
index 0000000..c405783
--- /dev/null
+++ b/src/pages/index.tsx
@@ -0,0 +1,7 @@
+import {Redirect} from "@docusaurus/router";
+import React from "react";
+import useBaseUrl from "@docusaurus/useBaseUrl";
+
+export default function Homepage(): React.JSX.Element {
+    return <Redirect to={useBaseUrl("docs/about")}/>
+}
diff --git a/static/.asf.yaml b/static/.asf.yaml
new file mode 100644
index 0000000..9cebda0
--- /dev/null
+++ b/static/.asf.yaml
@@ -0,0 +1,41 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+github:
+  description: "Apache Curator Website"
+  homepage: https://curator.apache.org/
+  features:
+    issues: false
+    projects: false
+    wiki: false
+  labels:
+    - curator
+  enabled_merge_buttons:
+    squash:  true
+    merge:   false
+    rebase:  false
+  protected_branches:
+    main: {}
+    asf-site: {}
+
+publish:
+  whoami: asf-site
+
+notifications:
+  commits:      commits@curator.apache.org
+  pullrequests: commits@curator.apache.org
+  jobs:         commits@curator.apache.org
diff --git a/static/.nojekyll b/static/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/static/img/asf-logo.svg b/static/img/asf-logo.svg
new file mode 100644
index 0000000..620694c
--- /dev/null
+++ b/static/img/asf-logo.svg
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890" xml:space="preserve">
+<path fill="#6D6E71" d="M7104.7,847.8c15.3,15.3,22.9,33.7,22.9,55.2c0,21.5-7.6,39.9-22.9,55.4c-15.3,15.4-33.8,23.1-55.6,23.1
+	c-21.8,0-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2c0-21.5,7.6-39.9,22.9-55.4c15.3-15.4,33.7-23.1,55.4-23.1
+	C7070.9,824.9,7089.4,832.5,7104.7,847.8z M7098.1,951.9c13.3-13.6,20-29.8,20-48.7s-6.6-35-19.8-48.5
+	c-13.2-13.4-29.4-20.1-48.6-20.1c-19.2,0-35.4,6.7-48.7,20.2c-13.3,13.5-19.9,29.7-19.9,48.7c0,19,6.6,35.2,19.7,48.6
+	c13.1,13.4,29.3,20.1,48.5,20.1S7084.7,965.4,7098.1,951.9z M7087.1,888.1c0,14-6.1,22.8-18.4,26.4l22.5,30.5h-18.2l-20.3-28.3
+	h-18.6v28.3h-14.7v-84.6h31.8c12.8,0,22,2.2,27.6,6.6C7084.4,871.4,7087.1,878.4,7087.1,888.1z M7068.2,900c3-2.4,4.4-6.5,4.4-12
+	c0-5.5-1.5-9.4-4.5-11.6c-3-2.2-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7,903.6,7065.3,902.4,7068.2,900z"/>
+<path fill="#6D6E71" d="M1803.6,499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/>
+<path fill="#6D6E71" d="M2082.2,655.2v-76.9h-105.2v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7H2082.2z"/>
+<path fill="#6D6E71" d="M2241.4,499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/>
+<path fill="#D22128" d="M1574.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H1574.5z M2032.6,970
+	l-205.1,493.2h404.7L2032.6,970z"/>
+<path fill="#D22128" d="M2596.9,1852.4V854.8H3010c171.4,0,295.1,158.8,295.1,313.3c0,163-115.2,316.1-286.6,316.1h-324.6v368.1
+	H2596.9z M2693.9,1397.1h318.9c118,0,193.9-108.2,193.9-229c0-125.1-92.7-226.2-202.3-226.2h-310.5V1397.1z"/>
+<path fill="#D22128" d="M3250.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H3250.5z M3708.6,970
+	l-205.1,493.2h404.7L3708.6,970z"/>
+<path fill="#D22128" d="M4637.3,849.1c177,0,306.3,89.9,368.1,217.8l-78.7,47.8c-63.2-132.1-186.9-177-295.1-177
+	c-238.9,0-369.5,213.6-369.5,414.5c0,220.6,161.6,420.1,373.7,420.1c112.4,0,244.5-56.2,307.7-185.5l81.5,42.1
+	c-64.6,148.9-241.7,231.8-394.8,231.8c-274,0-466.5-261.3-466.5-514.2C4163.8,1106.3,4336.6,849.1,4637.3,849.1z"/>
+<path fill="#D22128" d="M5949.1,854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/>
+<path fill="#D22128" d="M6844.6,1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/>
+<path fill="#6D6E71" d="M1667.6,2063.6c11.8,3.5,22.2,8.3,31,14.2l-10.3,22.6c-9-6-18.6-10.4-28.9-13.4c-10.2-2.9-20-4.4-29.2-4.4
+	c-13.6,0-24.5,2.4-32.6,7.3c-8.1,4.9-12.2,11.8-12.2,20.7c0,7.6,2.3,14,6.8,19c4.5,5,10.2,8.9,17,11.7c6.8,2.8,16.1,6,28,9.6
+	c14.4,4.6,26,8.9,34.7,12.9c8.8,4,16.3,9.9,22.5,17.8c6.2,7.8,9.3,18.2,9.3,31c0,11.7-3.2,21.8-9.5,30.6
+	c-6.3,8.7-15.3,15.5-26.8,20.3c-11.6,4.8-24.9,7.2-40,7.2c-15.1,0-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6
+	c9.6,9.4,20.7,16.7,33.3,21.9c12.6,5.2,24.8,7.8,36.8,7.8c15.3,0,27.3-3,36.1-8.9c8.8-5.9,13.2-13.9,13.2-23.9
+	c0-7.8-2.3-14.3-6.9-19.4c-4.6-5.1-10.3-9-17.1-11.9c-6.8-2.8-16.1-6-28-9.6c-14.2-4.2-25.7-8.3-34.6-12.2
+	c-8.9-3.9-16.4-9.7-22.5-17.5c-6.1-7.7-9.2-17.9-9.2-30.6c0-10.9,3-20.4,9-28.6c6-8.2,14.6-14.6,25.6-19.1
+	c11.1-4.5,23.8-6.8,38.2-6.8C1643.8,2058.3,1655.7,2060.1,1667.6,2063.6z"/>
+<path fill="#6D6E71" d="M1980.1,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+	C1944.8,2058.6,1963.2,2063.3,1980.1,2072.8z M1881.9,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+	c-13-7.4-27.2-11.2-42.6-11.2C1909.4,2081.5,1895.1,2085.2,1881.9,2092.7z"/>
+<path fill="#6D6E71" d="M2186.5,2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/>
+<path fill="#6D6E71" d="M2491.6,2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/>
+<path fill="#6D6E71" d="M2871.8,2269.8l-56.8-177.4l-57.6,177.4h-24.5l-70.5-210.6h25.9l57.9,182.7l57.1-182.4l24.1-0.3l57.7,182.7
+	l57.1-182.7h25l-70.6,210.6H2871.8z"/>
+<path fill="#6D6E71" d="M3087.3,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6h-26.1l-23.5-53.2H3087.3z M3144.5,2086.6
+	l-46.9,106.8h94.4L3144.5,2086.6z"/>
+<path fill="#6D6E71" d="M3461.1,2202.7c-6,0.4-10.7,0.6-14.1,0.6h-56v66.5H3367v-210.6h80c26.2,0,46.6,6.2,61.2,18.5
+	c14.5,12.3,21.8,29.8,21.8,52.3c0,17.2-4.1,31.7-12.2,43.3c-8.1,11.6-19.8,20-35,25l49.2,71.5h-27.3L3461.1,2202.7z M3491.3,2167.6
+	c10.3-8.4,15.5-20.8,15.5-37c0-15.9-5.2-27.9-15.5-36c-10.3-8.1-25.1-12.2-44.3-12.2h-56v97.8h56
+	C3466.2,2180.2,3481,2176,3491.3,2167.6z"/>
+<path fill="#6D6E71" d="M3688.3,2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/>
+<path fill="#6D6E71" d="M4147,2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/>
+<path fill="#6D6E71" d="M4523.3,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+	C4488.1,2058.6,4506.5,2063.3,4523.3,2072.8z M4425.2,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+	c-13-7.4-27.2-11.2-42.6-11.2C4452.6,2081.5,4438.3,2085.2,4425.2,2092.7z"/>
+<path fill="#6D6E71" d="M4854.7,2247.7c-15.7,15.5-37.3,23.3-64.8,23.3c-27.7,0-49.4-7.8-65.1-23.3c-15.7-15.5-23.6-37-23.6-64.6
+	v-124h24.1v124c0,20.3,5.8,36.1,17.3,47.5c11.6,11.4,27.3,17.1,47.3,17.1c20.1,0,35.8-5.7,47.1-17c11.4-11.3,17-27.2,17-47.7v-124
+	h24.1v124C4878.2,2210.7,4870.4,2232.2,4854.7,2247.7z"/>
+<path fill="#6D6E71" d="M5169.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H5169.5z"/>
+<path fill="#6D6E71" d="M5478.4,2073.1c16.4,9.3,29.4,21.9,38.9,37.9c9.6,16,14.3,33.9,14.3,53.5s-4.8,37.6-14.3,53.6
+	c-9.5,16.1-22.6,28.7-39.3,37.9c-16.6,9.2-35.2,13.8-55.5,13.8h-84.3v-210.6h85.2C5443.7,2059.2,5462,2063.8,5478.4,2073.1z
+	 M5362.3,2246.9h61.4c15.5,0,29.6-3.5,42.3-10.6c12.7-7.1,22.8-16.9,30.2-29.5c7.4-12.5,11.1-26.5,11.1-42
+	c0-15.5-3.8-29.4-11.3-41.9c-7.5-12.5-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5V2246.9z"/>
+<path fill="#6D6E71" d="M5668.6,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6H5807l-23.5-53.2H5668.6z M5725.8,2086.6
+	l-46.9,106.8h94.4L5725.8,2086.6z"/>
+<path fill="#6D6E71" d="M5991,2082.4v187.4H5967v-187.4h-68.4v-23.2h161.4v23.2H5991z"/>
+<path fill="#6D6E71" d="M6175.9,2269.8v-210.6h24.1v210.6H6175.9z"/>
+<path fill="#6D6E71" d="M6493.7,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+	C6458.5,2058.6,6476.9,2063.3,6493.7,2072.8z M6395.6,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+	c-13-7.4-27.2-11.2-42.6-11.2C6423,2081.5,6408.8,2085.2,6395.6,2092.7z"/>
+<path fill="#6D6E71" d="M6826.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H6826.5z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0" style="stop-color:#F69923"/>
+	<stop  offset="0.3123" style="stop-color:#F79A23"/>
+	<stop  offset="0.8383" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M1230.1,13.7c-45.3,26.8-120.6,102.5-210.5,212.3l82.6,155.9c58-82.9,116.9-157.5,176.3-221.2
+	c4.6-5.1,7-7.5,7-7.5c-2.3,2.5-4.6,5-7,7.5c-19.2,21.2-77.5,89.2-165.5,224.4c84.7-4.2,214.9-21.6,321.1-39.7
+	c31.6-177-31-258-31-258S1323.4-41.4,1230.1,13.7z"/>
+<path fill="none" d="M1090.2,903.1c0.6-0.1,1.2-0.2,1.8-0.3l-11.9,1.3c-0.7,0.3-1.4,0.7-2.1,1
+	C1082.1,904.4,1086.2,903.7,1090.2,903.1z"/>
+<path fill="none" d="M1005.9,1182.3c-6.7,1.5-13.7,2.7-20.7,3.7C992.3,1185,999.2,1183.8,1005.9,1182.3z"/>
+<path fill="none" d="M432.9,1808.8c0.9-2.3,1.8-4.7,2.6-7c18.2-48,36.2-94.7,54-140.1c20-51,39.8-100.4,59.3-148.3
+	c20.6-50.4,40.9-99.2,60.9-146.3c21-49.4,41.7-97,62-142.8c16.5-37.3,32.8-73.4,48.9-108.3c5.4-11.7,10.7-23.2,16-34.6
+	c10.5-22.7,21-44.8,31.3-66.5c9.5-20,19-39.6,28.3-58.8c3.1-6.4,6.2-12.8,9.3-19.1c0.5-1,1-2,1.5-3.1l-10.2,1.1l-8-15.9
+	c-0.8,1.6-1.6,3.1-2.4,4.6c-14.5,28.8-28.9,57.9-43.1,87.2c-8.2,16.9-16.4,34-24.6,51c-22.6,47.4-44.8,95.2-66.6,143.3
+	c-22.1,48.6-43.7,97.5-64.9,146.5c-20.8,48.1-41.3,96.2-61.2,144.2c-20,48-39.5,95.7-58.5,143.2c-19.9,49.5-39.2,98.7-58,147.2
+	c-4.2,10.9-8.5,21.9-12.7,32.8c-15,39.2-29.7,77.8-44,116l12.7,25.1l11.4-1.2c0.4-1.1,0.8-2.3,1.3-3.4
+	C396.7,1905.4,414.9,1856.4,432.9,1808.8z"/>
+<path fill="none" d="M980,1186.8L980,1186.8c0.1,0,0.1,0,0.1-0.1C980.1,1186.8,980.1,1186.8,980,1186.8z"/>
+<path fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6
+	C942,1325.2,947.3,1324.1,952.6,1323z"/>
+<path opacity="0.35" fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6
+	C942,1325.2,947.3,1324.1,952.6,1323z"/>
+<path fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1c1.8-0.2,3.5-0.5,5.2-0.8
+	c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>
+<path opacity="0.35" fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1
+	c1.8-0.2,3.5-0.5,5.2-0.8c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0.3233" style="stop-color:#9E2064"/>
+	<stop  offset="0.6302" style="stop-color:#C92037"/>
+	<stop  offset="0.7514" style="stop-color:#CD2335"/>
+	<stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M858.6,784.7c25.1-46.9,50.5-92.8,76.2-137.4c26.7-46.4,53.7-91.3,80.9-134.7
+	c1.6-2.6,3.2-5.2,4.8-7.7c27-42.7,54.2-83.7,81.6-122.9L1019.5,226c-6.2,7.6-12.5,15.3-18.8,23.2c-23.8,29.7-48.6,61.6-73.9,95.5
+	c-28.6,38.2-58,78.9-87.8,121.7c-27.6,39.5-55.5,80.9-83.5,123.7c-23.8,36.5-47.7,74-71.4,112.5c-0.9,1.4-1.8,2.9-2.6,4.3
+	l107.5,212.3C811.8,873.6,835.1,828.7,858.6,784.7z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0" style="stop-color:#282662"/>
+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>
+	<stop  offset="0.7882" style="stop-color:#9F2064"/>
+	<stop  offset="0.9487" style="stop-color:#CD2032"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M369,1981c-14.2,39.1-28.5,78.9-42.9,119.6c-0.2,0.6-0.4,1.2-0.6,1.8c-2,5.7-4.1,11.5-6.1,17.2
+	c-9.7,27.4-18,52.1-37.3,108.2c31.7,14.5,57.1,52.5,81.1,95.6c-2.6-44.7-21-86.6-56.2-119.1c156.1,7,290.6-32.4,360.1-146.6
+	c6.2-10.2,11.9-20.9,17-32.2c-31.6,40.1-70.8,57.1-144.5,53c-0.2,0.1-0.3,0.1-0.5,0.2c0.2-0.1,0.3-0.1,0.5-0.2
+	c108.6-48.6,163.1-95.3,211.2-172.6c11.4-18.3,22.5-38.4,33.8-60.6c-94.9,97.5-205,125.3-320.9,104.2l-86.9,9.5
+	C374.4,1966.3,371.7,1973.6,369,1981z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0.3233" style="stop-color:#9E2064"/>
+	<stop  offset="0.6302" style="stop-color:#C92037"/>
+	<stop  offset="0.7514" style="stop-color:#CD2335"/>
+	<stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" d="M409.6,1786.3c18.8-48.5,38.1-97.7,58-147.2c19-47.4,38.5-95.2,58.5-143.2
+	c20-48,40.4-96.1,61.2-144.2c21.2-49,42.9-97.8,64.9-146.5c21.8-48.1,44-95.9,66.6-143.3c8.1-17.1,16.3-34.1,24.6-51
+	c14.2-29.3,28.6-58.4,43.1-87.2c0.8-1.6,1.6-3.1,2.4-4.6L681.4,706.8c-1.8,2.9-3.5,5.8-5.3,8.6c-25.1,40.9-50,82.7-74.4,125.4
+	c-24.7,43.1-49,87.1-72.7,131.7c-20,37.6-39.6,75.6-58.6,113.9c-3.8,7.8-7.6,15.5-11.3,23.2c-23.4,48.2-44.6,94.8-63.7,139.5
+	c-21.7,50.7-40.7,99.2-57.5,145.1c-11,30.2-21,59.4-30.1,87.4c-7.5,24-14.7,47.9-21.5,71.8c-16,56.3-29.9,112.4-41.2,168.3
+	L353,1935.1c14.3-38.1,28.9-76.8,44-116C401.1,1808.2,405.4,1797.3,409.6,1786.3z"/>
+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0" style="stop-color:#282662"/>
+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>
+	<stop  offset="0.7882" style="stop-color:#9F2064"/>
+	<stop  offset="0.9487" style="stop-color:#CD2032"/>
+</linearGradient>
+<path fill="url(#SVGID_5_)" d="M243.5,1729.4c-13.6,68.2-23.2,136.2-28,203.8c-0.2,2.4-0.4,4.7-0.5,7.1
+	c-33.7-54-124-106.8-123.8-106.2c64.6,93.7,113.7,186.7,120.9,278c-34.6,7.1-82-3.2-136.8-23.3c57.1,52.5,100,67,116.7,70.9
+	c-52.5,3.3-107.1,39.3-162.1,80.8c80.5-32.8,145.5-45.8,192.1-35.3C148.1,2414.2,74.1,2645,0,2890c22.7-6.7,36.2-21.9,43.9-42.6
+	c13.2-44.4,100.8-335.6,238-718.2c3.9-10.9,7.8-21.8,11.8-32.9c1.1-3,2.2-6.1,3.3-9.2c14.5-40.1,29.5-81.1,45.1-122.9
+	c3.5-9.5,7.1-19,10.7-28.6c0.1-0.2,0.1-0.4,0.2-0.6l-107.9-213.2C244.6,1724.4,244,1726.9,243.5,1729.4z"/>
+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0.3233" style="stop-color:#9E2064"/>
+	<stop  offset="0.6302" style="stop-color:#C92037"/>
+	<stop  offset="0.7514" style="stop-color:#CD2335"/>
+	<stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_6_)" d="M805.6,937c-3.1,6.3-6.2,12.7-9.3,19.1c-9.3,19.2-18.8,38.8-28.3,58.8
+	c-10.3,21.7-20.7,43.9-31.3,66.5c-5.3,11.4-10.6,22.9-16,34.6c-16.1,35-32.4,71.1-48.9,108.3c-20.3,45.8-41,93.4-62,142.8
+	c-20,47.1-40.3,95.9-60.9,146.3c-19.5,47.9-39.3,97.3-59.3,148.3c-17.8,45.4-35.9,92.1-54,140.1c-0.9,2.3-1.8,4.7-2.6,7
+	c-18,47.6-36.2,96.6-54.6,146.8c-0.4,1.1-0.8,2.3-1.3,3.4l86.9-9.5c-1.7-0.3-3.5-0.5-5.2-0.9c103.9-13,242.1-90.6,331.4-186.5
+	c41.1-44.2,78.5-96.3,113-157.3c25.7-45.4,49.8-95.8,72.8-151.5c20.1-48.7,39.4-101.4,58-158.6c-23.9,12.6-51.2,21.8-81.4,28.2
+	c-5.3,1.1-10.7,2.2-16.1,3.1c-5.5,1-11,1.8-16.6,2.6l0,0l0,0c0.1,0,0.1-0.1,0.2-0.1c96.9-37.3,158-109.2,202.4-197.4
+	c-25.5,17.4-66.9,40.1-116.6,51.1c-6.7,1.5-13.7,2.7-20.7,3.7c-1.7,0.3-3.5,0.6-5.2,0.8l0,0l0,0c0.1,0,0.1,0,0.1-0.1
+	c0,0,0.1,0,0.1,0l0,0c33.6-14.1,62-29.8,86.6-48.4c5.3-4,10.4-8.1,15.3-12.3c7.5-6.5,14.7-13.3,21.5-20.5c4.4-4.6,8.6-9.3,12.7-14.2
+	c9.6-11.5,18.7-23.9,27.1-37.3c2.6-4.1,5.1-8.3,7.6-12.6c3.2-6.2,6.3-12.3,9.3-18.3c13.5-27.2,24.4-51.5,33-72.8
+	c4.3-10.6,8.1-20.5,11.3-29.7c1.3-3.7,2.5-7.2,3.7-10.6c3.4-10.2,6.2-19.3,8.4-27.3c3.3-12,5.3-21.5,6.4-28.4l0,0l0,0
+	c-3.3,2.6-7.1,5.2-11.3,7.7c-29.3,17.5-79.5,33.4-119.9,40.8l79.8-8.8l-79.8,8.8c-0.6,0.1-1.2,0.2-1.8,0.3c-4,0.7-8.1,1.3-12.2,2
+	c0.7-0.3,1.4-0.7,2.1-1l-273,29.9C806.6,935,806.1,936,805.6,937z"/>
+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0.3233" style="stop-color:#9E2064"/>
+	<stop  offset="0.6302" style="stop-color:#C92037"/>
+	<stop  offset="0.7514" style="stop-color:#CD2335"/>
+	<stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_7_)" d="M1112.9,385.1c-24.3,37.3-50.8,79.6-79.4,127.5c-1.5,2.5-3,5.1-4.5,7.6
+	c-24.6,41.5-50.8,87.1-78.3,137c-23.8,43.1-48.5,89.3-74.3,139c-22.4,43.3-45.6,89.2-69.4,137.8l273-29.9
+	c79.5-36.6,115.1-69.7,149.6-117.6c9.2-13.2,18.4-27,27.5-41.3c28-43.8,55.6-92,80.1-139.9c23.7-46.3,44.7-92.2,60.7-133.5
+	c10.2-26.3,18.4-50.8,24.1-72.3c5-19,8.9-36.9,11.9-54.1C1327.9,363.5,1197.6,380.9,1112.9,385.1z"/>
+<path fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<path opacity="0.35" fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0.3233" style="stop-color:#9E2064"/>
+	<stop  offset="0.6302" style="stop-color:#C92037"/>
+	<stop  offset="0.7514" style="stop-color:#CD2335"/>
+	<stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_8_)" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<path fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<path opacity="0.35" fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0.3233" style="stop-color:#9E2064"/>
+	<stop  offset="0.6302" style="stop-color:#C92037"/>
+	<stop  offset="0.7514" style="stop-color:#CD2335"/>
+	<stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_9_)" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<path fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7
+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+<path opacity="0.35" fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7
+	L980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+	<stop  offset="0.3233" style="stop-color:#9E2064"/>
+	<stop  offset="0.6302" style="stop-color:#C92037"/>
+	<stop  offset="0.7514" style="stop-color:#CD2335"/>
+	<stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_10_)" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7
+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+</svg>
diff --git a/static/img/curator-logo.svg b/static/img/curator-logo.svg
new file mode 100644
index 0000000..7f3cccf
--- /dev/null
+++ b/static/img/curator-logo.svg
@@ -0,0 +1,7897 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="svg24281"
+   xml:space="preserve"
+   width="642.66669"
+   height="241.33333"
+   viewBox="0 0 642.66669 241.33333"
+   sodipodi:docname="curator.svg"
+   inkscape:version="1.0.1 (1.0.1+r73)"><metadata
+     id="metadata24287"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs24285"><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24333"><path
+         d="m 289.883,738.082 h 81.4844 v 2.36328 H 289.883 Z"
+         id="path24331" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24345"><path
+         d="m 262.91,739.879 h 137.227 v 2.36719 H 262.91 Z"
+         id="path24343" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24357"><path
+         d="m 237.738,741.684 h 162.395 v 2.36719 H 237.738 Z"
+         id="path24355" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24369"><path
+         d="m 223.355,743.484 h 174.984 v 2.36719 H 223.355 Z"
+         id="path24367" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24381"><path
+         d="M 207.172,745.285 H 398.34 v 2.36719 H 207.172 Z"
+         id="path24379" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24393"><path
+         d="m 192.785,747.086 h 203.754 v 2.36719 H 192.785 Z"
+         id="path24391" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24405"><path
+         d="m 181.996,748.887 h 214.543 v 2.36719 H 181.996 Z"
+         id="path24403" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24417"><path
+         d="m 181.996,750.688 h 212.746 v 5.97266 H 181.996 Z"
+         id="path24415" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24429"><path
+         d="m 183.793,756.09 h 209.148 v 4.17188 H 183.793 Z"
+         id="path24427" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24441"><path
+         d="m 183.793,759.695 h 207.352 v 5.96875 H 183.793 Z"
+         id="path24439" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24453"><path
+         d="m 183.793,765.098 h 205.555 v 5.96875 H 183.793 Z"
+         id="path24451" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24465"><path
+         d="m 183.793,770.5 h 203.754 v 4.16797 H 183.793 Z"
+         id="path24463" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24477"><path
+         d="m 181.996,774.102 h 205.555 v 2.36719 H 181.996 Z"
+         id="path24475" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24489"><path
+         d="M 181.996,775.906 H 385.75 v 4.16797 H 181.996 Z"
+         id="path24487" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24501"><path
+         d="m 181.996,779.504 h 201.957 v 2.36719 H 181.996 Z"
+         id="path24499" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24513"><path
+         d="m 180.195,781.309 h 203.754 v 4.16797 H 180.195 Z"
+         id="path24511" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24525"><path
+         d="m 180.195,784.91 h 201.957 v 2.36719 H 180.195 Z"
+         id="path24523" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24537"><path
+         d="m 178.398,786.711 h 203.754 v 4.17188 H 178.398 Z"
+         id="path24535" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24549"><path
+         d="m 178.398,790.313 h 201.957 v 2.36719 H 178.398 Z"
+         id="path24547" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24561"><path
+         d="m 176.602,792.113 h 203.754 v 5.96875 H 176.602 Z"
+         id="path24559" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24573"><path
+         d="m 174.805,797.516 h 203.754 v 5.97266 H 174.805 Z"
+         id="path24571" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24585"><path
+         d="m 173.004,802.922 h 203.754 v 5.96875 H 173.004 Z"
+         id="path24583" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24597"><path
+         d="m 173.004,808.324 h 201.957 v 2.36719 H 173.004 Z"
+         id="path24595" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24609"><path
+         d="m 171.207,810.125 h 203.754 v 5.96875 H 171.207 Z"
+         id="path24607" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24621"><path
+         d="m 169.41,815.531 h 203.754 v 5.96875 H 169.41 Z"
+         id="path24619" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24633"><path
+         d="m 167.609,820.934 h 205.555 v 2.36719 H 167.609 Z"
+         id="path24631" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24645"><path
+         d="m 167.609,822.734 h 203.754 v 4.16797 H 167.609 Z"
+         id="path24643" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24657"><path
+         d="m 165.813,826.336 h 205.555 v 4.17188 H 165.813 Z"
+         id="path24655" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24669"><path
+         d="m 165.813,829.941 h 203.754 v 4.16797 H 165.813 Z"
+         id="path24667" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24681"><path
+         d="m 164.016,833.543 h 205.551 v 5.96875 H 164.016 Z"
+         id="path24679" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24693"><path
+         d="M 162.219,838.945 H 367.77 v 4.17188 H 162.219 Z"
+         id="path24691" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24705"><path
+         d="M 160.418,842.547 H 367.77 v 4.17188 H 160.418 Z"
+         id="path24703" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24717"><path
+         d="m 158.621,846.152 h 209.148 v 2.36719 H 158.621 Z"
+         id="path24715" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24729"><path
+         d="m 158.621,847.949 h 207.352 v 2.36719 H 158.621 Z"
+         id="path24727" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24741"><path
+         d="m 156.824,849.75 h 209.148 v 2.36719 H 156.824 Z"
+         id="path24739" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24753"><path
+         d="m 155.023,851.555 h 210.949 v 2.36719 H 155.023 Z"
+         id="path24751" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24765"><path
+         d="m 153.227,853.355 h 212.746 v 2.36719 H 153.227 Z"
+         id="path24763" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24777"><path
+         d="m 151.43,855.156 h 214.539 v 2.36719 H 151.43 Z"
+         id="path24775" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24789"><path
+         d="m 149.629,856.957 h 214.543 v 2.36719 H 149.629 Z"
+         id="path24787" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24801"><path
+         d="m 147.832,858.758 h 216.34 v 2.36719 h -216.34 z"
+         id="path24799" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24813"><path
+         d="m 144.234,860.559 h 219.938 v 2.36719 H 144.234 Z"
+         id="path24811" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24825"><path
+         d="m 140.641,862.359 h 223.531 v 2.36719 H 140.641 Z"
+         id="path24823" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24837"><path
+         d="m 135.246,864.164 h 228.926 v 2.36328 H 135.246 Z"
+         id="path24835" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24849"><path
+         d="m 126.254,865.961 h 237.918 v 2.36719 H 126.254 Z"
+         id="path24847" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24861"><path
+         d="m 106.473,867.766 h 255.898 v 2.36719 H 106.473 Z"
+         id="path24859" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24873"><path
+         d="m 84.8945,869.566 h 277.477 v 2.36719 H 84.8945 Z"
+         id="path24871" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24885"><path
+         d="m 68.7148,871.363 h 293.66 v 2.36719 h -293.66 z"
+         id="path24883" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24897"><path
+         d="m 61.5195,873.168 h 300.852 v 2.36719 H 61.5195 Z"
+         id="path24895" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24909"><path
+         d="m 56.125,874.969 h 306.246 v 2.36719 H 56.125 Z"
+         id="path24907" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24921"><path
+         d="m 52.5313,876.77 h 309.844 v 2.36719 H 52.5313 Z"
+         id="path24919" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24933"><path
+         d="m 50.7305,878.57 h 311.641 v 2.36719 H 50.7305 Z"
+         id="path24931" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24945"><path
+         d="m 47.1367,880.371 h 315.238 v 2.36719 H 47.1367 Z"
+         id="path24943" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24957"><path
+         d="m 45.3359,882.176 h 315.238 v 2.36328 H 45.3359 Z"
+         id="path24955" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24969"><path
+         d="m 43.5391,883.973 h 317.035 v 2.36719 H 43.5391 Z"
+         id="path24967" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24981"><path
+         d="m 41.7422,885.777 h 318.832 v 2.36719 H 41.7422 Z"
+         id="path24979" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath24993"><path
+         d="m 39.9414,887.578 h 320.633 v 4.16797 H 39.9414 Z"
+         id="path24991" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25005"><path
+         d="m 38.1445,891.18 h 322.43 v 2.36719 h -322.43 z"
+         id="path25003" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25017"><path
+         d="m 36.3477,892.98 h 324.227 v 4.16797 H 36.3477 Z"
+         id="path25015" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25029"><path
+         d="m 34.5469,896.582 h 324.227 v 4.17188 H 34.5469 Z"
+         id="path25027" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25041"><path
+         d="m 32.75,900.184 h 326.027 v 7.77344 H 32.75 Z"
+         id="path25039" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25053"><path
+         d="m 30.9531,907.391 h 327.824 v 16.7773 H 30.9531 Z"
+         id="path25051" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25065"><path
+         d="m 30.9531,923.602 h 326.027 v 22.1797 H 30.9531 Z"
+         id="path25063" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25077"><path
+         d="m 32.75,945.215 h 324.227 v 25.7813 H 32.75 Z"
+         id="path25075" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25089"><path
+         d="m 32.75,970.43 h 326.027 v 25.7852 H 32.75 Z"
+         id="path25087" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25101"><path
+         d="m 34.5469,995.648 h 326.027 v 16.7773 H 34.5469 Z"
+         id="path25099" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25113"><path
+         d="m 34.5469,1011.86 h 327.824 v 13.1758 H 34.5469 Z"
+         id="path25111" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25125"><path
+         d="m 34.5469,1024.46 h 329.625 v 4.168 H 34.5469 Z"
+         id="path25123" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25137"><path
+         d="m 36.3477,1028.07 h 327.824 v 5.9688 H 36.3477 Z"
+         id="path25135" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25149"><path
+         d="m 38.1445,1033.47 h 326.027 v 2.3672 H 38.1445 Z"
+         id="path25147" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25161"><path
+         d="m 38.1445,1035.27 h 327.824 v 4.168 H 38.1445 Z"
+         id="path25159" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25173"><path
+         d="m 39.9414,1038.88 h 326.027 v 4.1719 H 39.9414 Z"
+         id="path25171" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25185"><path
+         d="m 41.7422,1042.48 h 324.227 v 2.3672 H 41.7422 Z"
+         id="path25183" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25197"><path
+         d="m 43.5391,1044.28 h 324.227 v 2.3672 H 43.5391 Z"
+         id="path25195" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25209"><path
+         d="m 45.3359,1046.08 h 322.43 v 4.1719 h -322.43 z"
+         id="path25207" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25221"><path
+         d="m 47.1367,1049.68 h 320.633 v 2.3672 H 47.1367 Z"
+         id="path25219" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25233"><path
+         d="m 50.7305,1051.48 h 317.035 v 2.3672 H 50.7305 Z"
+         id="path25231" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25245"><path
+         d="m 52.5313,1053.29 h 317.035 v 2.3672 H 52.5313 Z"
+         id="path25243" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25257"><path
+         d="m 54.3281,1055.09 h 315.238 v 2.3672 H 54.3281 Z"
+         id="path25255" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25269"><path
+         d="m 57.9258,1056.89 h 311.641 v 2.3672 H 57.9258 Z"
+         id="path25267" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25281"><path
+         d="m 61.5195,1058.69 h 308.043 v 2.3672 H 61.5195 Z"
+         id="path25279" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25293"><path
+         d="m 65.1172,1060.49 h 304.449 v 2.3672 H 65.1172 Z"
+         id="path25291" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25305"><path
+         d="m 74.1094,1062.29 h 297.254 v 2.3672 H 74.1094 Z"
+         id="path25303" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25317"><path
+         d="m 92.0859,1064.09 h 279.277 v 2.3672 H 92.0859 Z"
+         id="path25315" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25329"><path
+         d="m 110.07,1065.89 h 261.293 v 2.3633 H 110.07 Z"
+         id="path25327" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25341"><path
+         d="m 128.051,1067.69 h 243.313 v 2.3672 H 128.051 Z"
+         id="path25339" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25353"><path
+         d="M 144.234,1069.5 H 373.16 v 2.3672 H 144.234 Z"
+         id="path25351" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25365"><path
+         d="m 151.43,1071.3 h 221.734 v 2.3672 H 151.43 Z"
+         id="path25363" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25377"><path
+         d="m 156.824,1073.09 h 216.34 v 2.3672 h -216.34 z"
+         id="path25375" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25389"><path
+         d="m 160.418,1074.9 h 212.746 v 2.3672 H 160.418 Z"
+         id="path25387" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25401"><path
+         d="m 162.219,1076.7 h 212.742 v 2.3672 H 162.219 Z"
+         id="path25399" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25413"><path
+         d="m 165.813,1078.5 h 209.148 v 2.3672 H 165.813 Z"
+         id="path25411" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25425"><path
+         d="m 167.609,1080.3 h 207.352 v 2.3672 H 167.609 Z"
+         id="path25423" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25437"><path
+         d="m 169.41,1082.11 h 205.551 v 2.3672 H 169.41 Z"
+         id="path25435" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25449"><path
+         d="m 171.207,1083.9 h 205.555 v 2.3672 H 171.207 Z"
+         id="path25447" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25461"><path
+         d="m 173.004,1085.7 h 203.754 v 4.1719 H 173.004 Z"
+         id="path25459" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25473"><path
+         d="m 174.805,1089.31 h 203.754 v 4.168 H 174.805 Z"
+         id="path25471" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25485"><path
+         d="m 176.602,1092.91 h 201.957 v 4.168 H 176.602 Z"
+         id="path25483" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25497"><path
+         d="m 178.398,1096.51 h 201.957 v 5.9688 H 178.398 Z"
+         id="path25495" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25509"><path
+         d="m 178.398,1101.91 h 203.754 v 2.3672 H 178.398 Z"
+         id="path25507" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25521"><path
+         d="m 180.195,1103.71 h 201.957 v 4.1719 H 180.195 Z"
+         id="path25519" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25533"><path
+         d="m 180.195,1107.32 h 203.754 v 5.9727 H 180.195 Z"
+         id="path25531" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25545"><path
+         d="M 180.195,1112.72 H 385.75 v 2.3672 H 180.195 Z"
+         id="path25543" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25557"><path
+         d="M 181.996,1114.52 H 385.75 v 4.1719 H 181.996 Z"
+         id="path25555" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25569"><path
+         d="m 181.996,1118.13 h 205.555 v 5.9687 H 181.996 Z"
+         id="path25567" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25581"><path
+         d="m 181.996,1123.53 h 207.352 v 2.3672 H 181.996 Z"
+         id="path25579" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25593"><path
+         d="m 183.793,1125.33 h 205.555 v 2.3672 H 183.793 Z"
+         id="path25591" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25605"><path
+         d="m 183.793,1127.13 h 207.352 v 5.9687 H 183.793 Z"
+         id="path25603" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25617"><path
+         d="m 183.793,1132.54 h 209.148 v 4.168 H 183.793 Z"
+         id="path25615" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25629"><path
+         d="m 183.793,1136.14 h 210.949 v 2.3672 H 183.793 Z"
+         id="path25627" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25641"><path
+         d="m 185.59,1137.94 h 209.148 v 4.1719 H 185.59 Z"
+         id="path25639" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25653"><path
+         d="m 185.59,1141.54 h 210.949 v 4.1719 H 185.59 Z"
+         id="path25651" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25665"><path
+         d="m 185.59,1145.14 h 212.746 v 5.9687 H 185.59 Z"
+         id="path25663" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25677"><path
+         d="m 187.391,1150.55 h 212.746 v 4.168 H 187.391 Z"
+         id="path25675" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25689"><path
+         d="m 187.391,1154.15 h 214.543 v 4.1719 H 187.391 Z"
+         id="path25687" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25701"><path
+         d="m 187.391,1157.75 h 216.344 v 4.168 H 187.391 Z"
+         id="path25699" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25713"><path
+         d="m 187.391,1161.36 h 218.141 v 2.3672 H 187.391 Z"
+         id="path25711" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25725"><path
+         d="m 189.188,1163.16 h 216.344 v 2.3672 H 189.188 Z"
+         id="path25723" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25737"><path
+         d="m 189.188,1164.95 h 218.141 v 5.9727 H 189.188 Z"
+         id="path25735" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25749"><path
+         d="m 189.188,1170.36 h 219.938 v 4.1719 H 189.188 Z"
+         id="path25747" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25761"><path
+         d="m 189.188,1173.96 h 221.738 v 4.168 H 189.188 Z"
+         id="path25759" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25773"><path
+         d="m 189.188,1177.56 h 223.535 v 2.3672 H 189.188 Z"
+         id="path25771" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25785"><path
+         d="M 189.188,1179.37 H 414.52 v 4.168 H 189.188 Z"
+         id="path25783" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25797"><path
+         d="m 189.188,1182.97 h 227.133 v 2.3672 H 189.188 Z"
+         id="path25795" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25809"><path
+         d="m 187.391,1184.77 h 228.93 v 2.3672 h -228.93 z"
+         id="path25807" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25821"><path
+         d="m 187.391,1186.57 h 230.727 v 4.168 H 187.391 Z"
+         id="path25819" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25833"><path
+         d="m 185.59,1190.17 h 234.324 v 4.1719 H 185.59 Z"
+         id="path25831" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25845"><path
+         d="m 183.793,1193.77 h 237.922 v 4.1719 H 183.793 Z"
+         id="path25843" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25857"><path
+         d="m 181.996,1197.38 h 241.516 v 2.3672 H 181.996 Z"
+         id="path25855" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25869"><path
+         d="m 180.195,1199.18 h 243.316 v 2.3633 H 180.195 Z"
+         id="path25867" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25881"><path
+         d="m 180.195,1200.98 h 245.113 v 2.3672 H 180.195 Z"
+         id="path25879" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25893"><path
+         d="m 178.398,1202.78 h 248.711 v 2.3672 H 178.398 Z"
+         id="path25891" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25905"><path
+         d="M 174.805,1204.58 H 427.11 v 2.3672 H 174.805 Z"
+         id="path25903" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25917"><path
+         d="m 173.004,1206.38 h 255.902 v 2.3672 H 173.004 Z"
+         id="path25915" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25929"><path
+         d="m 171.207,1208.18 h 257.699 v 2.3672 H 171.207 Z"
+         id="path25927" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25941"><path
+         d="m 167.609,1209.98 h 263.094 v 2.3672 H 167.609 Z"
+         id="path25939" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25953"><path
+         d="m 165.813,1211.79 h 264.891 v 2.3672 H 165.813 Z"
+         id="path25951" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25965"><path
+         d="M 162.219,1213.59 H 432.5 v 2.3672 H 162.219 Z"
+         id="path25963" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25977"><path
+         d="m 158.621,1215.39 h 275.68 v 2.3633 h -275.68 z"
+         id="path25975" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath25989"><path
+         d="m 155.023,1217.19 h 279.273 v 2.3672 H 155.023 Z"
+         id="path25987" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26001"><path
+         d="m 153.227,1218.99 h 282.871 v 2.3672 H 153.227 Z"
+         id="path25999" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26013"><path
+         d="m 149.629,1220.79 h 288.266 v 2.3672 H 149.629 Z"
+         id="path26011" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26025"><path
+         d="m 146.035,1222.59 h 291.859 v 2.3672 H 146.035 Z"
+         id="path26023" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26037"><path
+         d="m 144.234,1224.39 h 295.457 v 2.3672 H 144.234 Z"
+         id="path26035" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26049"><path
+         d="m 140.641,1226.2 h 300.852 v 2.3672 H 140.641 Z"
+         id="path26047" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26061"><path
+         d="m 137.043,1228 h 304.449 v 2.3672 H 137.043 Z"
+         id="path26059" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26073"><path
+         d="m 135.246,1229.8 h 308.043 v 2.3672 H 135.246 Z"
+         id="path26071" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26085"><path
+         d="m 131.648,1231.6 h 313.438 v 2.3672 H 131.648 Z"
+         id="path26083" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26097"><path
+         d="m 128.051,1233.4 h 317.035 v 2.3672 H 128.051 Z"
+         id="path26095" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26109"><path
+         d="m 126.254,1235.2 h 320.633 v 2.3672 H 126.254 Z"
+         id="path26107" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26121"><path
+         d="m 122.656,1237 h 326.027 v 2.3672 H 122.656 Z"
+         id="path26119" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26133"><path
+         d="m 119.063,1238.8 h 329.625 v 2.3672 H 119.063 Z"
+         id="path26131" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26145"><path
+         d="m 117.262,1240.61 h 333.219 v 2.3672 H 117.262 Z"
+         id="path26143" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26157"><path
+         d="m 115.465,1242.41 h 336.816 v 2.3672 H 115.465 Z"
+         id="path26155" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26169"><path
+         d="m 113.664,1244.21 h 338.613 v 2.3633 H 113.664 Z"
+         id="path26167" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26181"><path
+         d="m 111.867,1246.01 h 342.211 v 2.3672 H 111.867 Z"
+         id="path26179" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26193"><path
+         d="m 110.07,1247.81 h 345.809 v 2.3672 H 110.07 Z"
+         id="path26191" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26205"><path
+         d="m 108.27,1249.61 h 349.402 v 2.3672 H 108.27 Z"
+         id="path26203" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26217"><path
+         d="m 106.473,1251.41 h 351.203 v 2.3672 H 106.473 Z"
+         id="path26215" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26229"><path
+         d="m 106.473,1253.21 h 353 v 2.3672 h -353 z"
+         id="path26227" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26241"><path
+         d="m 104.676,1255.02 h 356.598 v 2.3672 H 104.676 Z"
+         id="path26239" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26253"><path
+         d="m 102.875,1256.82 h 360.191 v 4.168 H 102.875 Z"
+         id="path26251" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26265"><path
+         d="m 102.875,1260.42 h 361.992 v 2.3672 H 102.875 Z"
+         id="path26263" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26277"><path
+         d="m 101.078,1262.22 h 365.586 v 2.3672 H 101.078 Z"
+         id="path26275" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26289"><path
+         d="m 101.078,1264.02 h 367.387 v 2.3672 H 101.078 Z"
+         id="path26287" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26301"><path
+         d="m 101.078,1265.82 h 369.184 v 2.3672 H 101.078 Z"
+         id="path26299" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26313"><path
+         d="m 99.2813,1267.63 h 370.98 v 2.3672 h -370.98 z"
+         id="path26311" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26325"><path
+         d="m 99.2813,1269.42 h 372.777 v 2.3672 H 99.2813 Z"
+         id="path26323" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26337"><path
+         d="m 99.2813,1271.23 h 374.578 v 2.3672 H 99.2813 Z"
+         id="path26335" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26349"><path
+         d="m 99.2813,1273.03 h 376.375 v 2.3672 H 99.2813 Z"
+         id="path26347" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26361"><path
+         d="m 99.2813,1274.83 h 378.172 v 4.1719 H 99.2813 Z"
+         id="path26359" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26373"><path
+         d="m 99.2813,1278.43 h 379.969 v 2.3672 H 99.2813 Z"
+         id="path26371" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26385"><path
+         d="m 99.2813,1280.23 h 381.77 v 2.3672 h -381.77 z"
+         id="path26383" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26397"><path
+         d="m 99.2813,1282.03 h 383.566 v 2.3672 H 99.2813 Z"
+         id="path26395" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26409"><path
+         d="m 99.2813,1283.84 h 385.363 v 2.3672 H 99.2813 Z"
+         id="path26407" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26421"><path
+         d="m 101.078,1285.63 h 385.363 v 2.3672 H 101.078 Z"
+         id="path26419" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26433"><path
+         d="m 101.078,1287.43 h 387.164 v 2.3672 H 101.078 Z"
+         id="path26431" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26445"><path
+         d="m 101.078,1289.24 h 388.961 v 2.3672 H 101.078 Z"
+         id="path26443" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26457"><path
+         d="m 102.875,1291.04 h 387.164 v 2.3672 H 102.875 Z"
+         id="path26455" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26469"><path
+         d="m 102.875,1292.84 h 388.961 v 2.3672 H 102.875 Z"
+         id="path26467" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26481"><path
+         d="m 102.875,1294.64 h 390.758 v 2.3672 H 102.875 Z"
+         id="path26479" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26493"><path
+         d="m 104.676,1296.44 h 390.758 v 2.3672 H 104.676 Z"
+         id="path26491" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26505"><path
+         d="m 104.676,1298.24 h 392.559 v 2.3672 H 104.676 Z"
+         id="path26503" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26517"><path
+         d="m 106.473,1300.04 h 392.559 v 2.3672 H 106.473 Z"
+         id="path26515" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26529"><path
+         d="m 106.473,1301.85 h 394.355 v 2.3633 H 106.473 Z"
+         id="path26527" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26541"><path
+         d="m 108.27,1303.64 h 394.355 v 2.3672 H 108.27 Z"
+         id="path26539" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26553"><path
+         d="m 108.27,1305.45 h 396.152 v 2.3672 H 108.27 Z"
+         id="path26551" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26565"><path
+         d="m 110.07,1307.25 h 396.152 v 2.3672 H 110.07 Z"
+         id="path26563" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26577"><path
+         d="m 111.867,1309.05 h 396.152 v 2.3672 H 111.867 Z"
+         id="path26575" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26589"><path
+         d="M 111.867,1310.85 H 509.82 v 2.3672 H 111.867 Z"
+         id="path26587" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26601"><path
+         d="m 113.664,1312.65 h 397.953 v 2.3672 H 113.664 Z"
+         id="path26599" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26613"><path
+         d="m 113.664,1314.45 h 399.75 v 2.3672 h -399.75 z"
+         id="path26611" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26625"><path
+         d="m 115.465,1316.25 h 399.75 v 2.3672 h -399.75 z"
+         id="path26623" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26637"><path
+         d="m 115.465,1318.05 h 401.547 v 2.3672 H 115.465 Z"
+         id="path26635" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26649"><path
+         d="m 117.262,1319.86 h 401.547 v 2.3672 H 117.262 Z"
+         id="path26647" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26661"><path
+         d="M 117.262,1321.66 H 520.61 v 2.3672 H 117.262 Z"
+         id="path26659" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26673"><path
+         d="m 119.063,1323.46 h 403.348 v 2.3672 H 119.063 Z"
+         id="path26671" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26685"><path
+         d="m 119.063,1325.26 h 406.941 v 2.3672 H 119.063 Z"
+         id="path26683" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26697"><path
+         d="M 120.859,1327.06 H 527.8 v 2.3672 H 120.859 Z"
+         id="path26695" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26709"><path
+         d="m 120.859,1328.86 h 408.742 v 2.3672 H 120.859 Z"
+         id="path26707" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26721"><path
+         d="m 122.656,1330.66 h 408.742 v 2.3672 H 122.656 Z"
+         id="path26719" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26733"><path
+         d="m 122.656,1332.46 h 410.539 v 2.3672 H 122.656 Z"
+         id="path26731" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26745"><path
+         d="m 124.457,1334.27 h 410.539 v 2.3672 H 124.457 Z"
+         id="path26743" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26757"><path
+         d="m 124.457,1336.07 h 412.336 v 2.3672 H 124.457 Z"
+         id="path26755" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26769"><path
+         d="m 126.254,1337.87 h 414.137 v 2.3672 H 126.254 Z"
+         id="path26767" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26781"><path
+         d="m 126.254,1339.67 h 415.934 v 2.3672 H 126.254 Z"
+         id="path26779" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26793"><path
+         d="m 128.051,1341.47 h 415.934 v 2.3672 H 128.051 Z"
+         id="path26791" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26805"><path
+         d="m 129.852,1343.27 h 415.934 v 2.3633 H 129.852 Z"
+         id="path26803" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26817"><path
+         d="m 129.852,1345.07 h 417.73 v 2.3672 h -417.73 z"
+         id="path26815" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26829"><path
+         d="m 131.648,1346.88 h 419.527 v 2.3672 H 131.648 Z"
+         id="path26827" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26841"><path
+         d="m 131.648,1348.68 h 421.328 v 2.3672 H 131.648 Z"
+         id="path26839" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26853"><path
+         d="m 133.445,1350.48 h 421.328 v 2.3672 H 133.445 Z"
+         id="path26851" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26865"><path
+         d="m 133.445,1352.28 h 424.922 v 2.3672 H 133.445 Z"
+         id="path26863" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26877"><path
+         d="m 135.246,1354.08 h 424.922 v 2.3672 H 135.246 Z"
+         id="path26875" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26889"><path
+         d="m 135.246,1355.88 h 426.719 v 2.3672 H 135.246 Z"
+         id="path26887" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26901"><path
+         d="m 137.043,1357.68 h 428.52 v 2.3672 h -428.52 z"
+         id="path26899" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26913"><path
+         d="m 137.043,1359.48 h 430.316 v 2.3633 H 137.043 Z"
+         id="path26911" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26925"><path
+         d="m 138.84,1361.28 h 430.316 v 2.3672 H 138.84 Z"
+         id="path26923" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26937"><path
+         d="m 138.84,1363.09 h 433.914 v 2.3672 H 138.84 Z"
+         id="path26935" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26949"><path
+         d="m 140.641,1364.89 h 433.914 v 2.3672 H 140.641 Z"
+         id="path26947" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26961"><path
+         d="m 140.641,1366.69 h 437.508 v 2.3672 H 140.641 Z"
+         id="path26959" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26973"><path
+         d="m 142.438,1368.49 h 437.508 v 2.3672 H 142.438 Z"
+         id="path26971" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26985"><path
+         d="m 142.438,1370.29 h 439.309 v 2.3672 H 142.438 Z"
+         id="path26983" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath26997"><path
+         d="m 144.234,1372.09 h 441.105 v 2.3672 H 144.234 Z"
+         id="path26995" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27009"><path
+         d="m 144.234,1373.89 h 442.902 v 2.3672 H 144.234 Z"
+         id="path27007" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27021"><path
+         d="m 146.035,1375.7 h 444.703 v 2.3672 H 146.035 Z"
+         id="path27019" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27033"><path
+         d="m 147.832,1377.49 h 446.5 v 2.3672 h -446.5 z"
+         id="path27031" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27045"><path
+         d="m 147.832,1379.29 h 448.297 v 2.3672 H 147.832 Z"
+         id="path27043" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27057"><path
+         d="m 149.629,1381.1 h 450.098 v 2.3672 H 149.629 Z"
+         id="path27055" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27069"><path
+         d="m 149.629,1382.9 h 451.895 v 2.3672 H 149.629 Z"
+         id="path27067" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27081"><path
+         d="m 151.43,1384.7 h 92.2695 v 2.3672 H 151.43 Z"
+         id="path27079" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27093"><path
+         d="m 266.508,1384.7 h 7.75781 v 2.3672 H 266.508 Z"
+         id="path27091" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27105"><path
+         d="m 297.078,1384.7 h 308.043 v 2.3672 H 297.078 Z"
+         id="path27103" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27117"><path
+         d="m 151.43,1386.5 h 86.875 v 2.3672 H 151.43 Z"
+         id="path27115" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27129"><path
+         d="m 302.473,1386.5 h 306.246 v 2.3672 H 302.473 Z"
+         id="path27127" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27141"><path
+         d="m 153.227,1388.3 h 79.6836 v 2.3672 H 153.227 Z"
+         id="path27139" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27153"><path
+         d="m 306.07,1388.3 h 304.449 v 2.3672 H 306.07 Z"
+         id="path27151" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27165"><path
+         d="m 153.227,1390.1 h 76.0898 v 2.3672 H 153.227 Z"
+         id="path27163" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27177"><path
+         d="m 309.664,1390.1 h 304.449 v 2.3672 H 309.664 Z"
+         id="path27175" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27189"><path
+         d="m 155.023,1391.9 h 68.8945 v 2.3672 H 155.023 Z"
+         id="path27187" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27201"><path
+         d="m 311.465,1391.9 h 306.246 v 2.3672 H 311.465 Z"
+         id="path27199" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27213"><path
+         d="m 156.824,1393.71 h 61.7031 v 2.3672 H 156.824 Z"
+         id="path27211" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27225"><path
+         d="m 313.262,1393.71 h 308.043 v 2.3672 H 313.262 Z"
+         id="path27223" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27237"><path
+         d="m 156.824,1395.5 h 56.3086 v 2.3672 H 156.824 Z"
+         id="path27235" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27249"><path
+         d="m 315.059,1395.5 h 308.043 v 2.3672 H 315.059 Z"
+         id="path27247" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27261"><path
+         d="m 158.621,1397.31 h 50.9141 v 2.3672 H 158.621 Z"
+         id="path27259" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27273"><path
+         d="m 316.859,1397.31 h 309.844 v 2.3672 H 316.859 Z"
+         id="path27271" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27285"><path
+         d="m 160.418,1399.11 h 43.7188 v 2.3672 H 160.418 Z"
+         id="path27283" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27297"><path
+         d="m 318.656,1399.11 h 311.641 v 2.3672 H 318.656 Z"
+         id="path27295" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27309"><path
+         d="m 162.219,1400.91 h 36.5273 v 2.3633 H 162.219 Z"
+         id="path27307" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27321"><path
+         d="m 320.453,1400.91 h 313.438 v 2.3633 H 320.453 Z"
+         id="path27319" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27333"><path
+         d="m 165.813,1402.71 h 27.5391 v 2.3672 H 165.813 Z"
+         id="path27331" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27345"><path
+         d="m 320.453,1402.71 h 317.035 v 2.3672 H 320.453 Z"
+         id="path27343" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27357"><path
+         d="m 167.609,1404.51 h 22.1445 v 2.3672 H 167.609 Z"
+         id="path27355" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27369"><path
+         d="m 322.254,1404.51 h 318.832 v 2.3672 H 322.254 Z"
+         id="path27367" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27381"><path
+         d="m 171.207,1406.31 h 13.1523 v 2.3672 H 171.207 Z"
+         id="path27379" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27393"><path
+         d="m 324.051,1406.31 h 320.633 v 2.3672 H 324.051 Z"
+         id="path27391" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27405"><path
+         d="m 174.805,1408.11 h 4.16406 v 2.3672 H 174.805 Z"
+         id="path27403" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27417"><path
+         d="m 324.051,1408.11 h 324.227 v 2.3672 H 324.051 Z"
+         id="path27415" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27429"><path
+         d="m 325.848,1409.91 h 326.027 v 2.3672 H 325.848 Z"
+         id="path27427" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27441"><path
+         d="m 327.648,1411.72 h 329.621 v 2.3633 H 327.648 Z"
+         id="path27439" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27453"><path
+         d="m 327.648,1413.52 h 333.219 v 2.3672 H 327.648 Z"
+         id="path27451" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27465"><path
+         d="m 329.445,1415.32 h 335.016 v 2.3672 H 329.445 Z"
+         id="path27463" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27477"><path
+         d="m 331.242,1417.12 h 336.816 v 2.3672 H 331.242 Z"
+         id="path27475" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27489"><path
+         d="m 331.242,1418.92 h 342.207 v 2.3672 H 331.242 Z"
+         id="path27487" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27501"><path
+         d="m 333.043,1420.72 h 344.004 v 2.3672 H 333.043 Z"
+         id="path27499" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27513"><path
+         d="m 334.84,1422.52 h 347.602 v 2.3672 H 334.84 Z"
+         id="path27511" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27525"><path
+         d="m 336.637,1424.32 h 349.398 v 2.3672 H 336.637 Z"
+         id="path27523" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27537"><path
+         d="M 336.637,1426.13 H 691.43 v 2.3672 H 336.637 Z"
+         id="path27535" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27549"><path
+         d="m 1046.91,1426.13 h 2.3633 v 2.3672 h -2.3633 z"
+         id="path27547" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27561"><path
+         d="m 338.438,1427.93 h 358.391 v 2.3633 H 338.438 Z"
+         id="path27559" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27573"><path
+         d="m 1041.51,1427.93 h 9.5586 v 2.3633 h -9.5586 z"
+         id="path27571" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27585"><path
+         d="m 340.234,1429.73 h 360.188 v 2.3672 H 340.234 Z"
+         id="path27583" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27597"><path
+         d="m 1036.12,1429.73 h 16.75 v 2.3672 h -16.75 z"
+         id="path27595" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27609"><path
+         d="m 340.234,1431.53 h 365.582 v 2.3672 H 340.234 Z"
+         id="path27607" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27621"><path
+         d="m 1030.72,1431.53 h 22.1406 v 2.3672 H 1030.72 Z"
+         id="path27619" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27633"><path
+         d="m 342.031,1433.33 h 369.184 v 2.3672 H 342.031 Z"
+         id="path27631" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27645"><path
+         d="m 1025.33,1433.33 h 29.3359 v 2.3672 H 1025.33 Z"
+         id="path27643" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27657"><path
+         d="m 343.828,1435.13 h 372.781 v 2.3672 H 343.828 Z"
+         id="path27655" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27669"><path
+         d="m 1019.93,1435.13 h 36.5273 v 2.3672 H 1019.93 Z"
+         id="path27667" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27681"><path
+         d="m 343.828,1436.93 h 379.973 v 2.3672 H 343.828 Z"
+         id="path27679" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27693"><path
+         d="m 1014.54,1436.93 h 43.7188 v 2.3672 H 1014.54 Z"
+         id="path27691" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27705"><path
+         d="m 345.629,1438.73 h 383.566 v 2.3672 H 345.629 Z"
+         id="path27703" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27717"><path
+         d="m 1007.35,1438.73 h 50.9141 v 2.3672 H 1007.35 Z"
+         id="path27715" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27729"><path
+         d="m 347.426,1440.54 h 388.961 v 2.3672 H 347.426 Z"
+         id="path27727" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27741"><path
+         d="m 1001.95,1440.54 h 58.1055 v 2.3672 H 1001.95 Z"
+         id="path27739" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27753"><path
+         d="m 347.426,1442.34 h 396.152 v 2.3672 H 347.426 Z"
+         id="path27751" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27765"><path
+         d="m 994.762,1442.34 h 67.0977 v 2.3672 H 994.762 Z"
+         id="path27763" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27777"><path
+         d="M 349.223,1444.14 H 750.77 v 2.3672 H 349.223 Z"
+         id="path27775" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27789"><path
+         d="m 987.566,1444.14 h 74.2891 v 2.3672 H 987.566 Z"
+         id="path27787" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27801"><path
+         d="m 351.02,1445.94 h 406.941 v 2.3672 H 351.02 Z"
+         id="path27799" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27813"><path
+         d="m 978.574,1445.94 h 85.0781 v 2.3672 H 978.574 Z"
+         id="path27811" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27825"><path
+         d="m 351.02,1447.74 h 415.934 v 2.3672 H 351.02 Z"
+         id="path27823" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27837"><path
+         d="m 971.383,1447.74 h 94.0703 v 2.3672 H 971.383 Z"
+         id="path27835" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27849"><path
+         d="m 352.82,1449.54 h 423.129 v 2.3672 H 352.82 Z"
+         id="path27847" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27861"><path
+         d="m 962.391,1449.54 h 104.859 v 2.3672 H 962.391 Z"
+         id="path27859" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27873"><path
+         d="m 354.617,1451.34 h 432.117 v 2.3672 H 354.617 Z"
+         id="path27871" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27885"><path
+         d="m 949.805,1451.34 h 117.449 v 2.3672 H 949.805 Z"
+         id="path27883" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27897"><path
+         d="M 354.617,1453.14 H 799.32 v 2.3672 H 354.617 Z"
+         id="path27895" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27909"><path
+         d="m 939.02,1453.14 h 130.031 v 2.3672 H 939.02 Z"
+         id="path27907" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27921"><path
+         d="m 356.414,1454.95 h 457.289 v 2.3672 H 356.414 Z"
+         id="path27919" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27933"><path
+         d="m 924.633,1454.95 h 146.215 v 2.3672 H 924.633 Z"
+         id="path27931" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27945"><path
+         d="m 358.215,1456.75 h 477.07 v 2.3672 h -477.07 z"
+         id="path27943" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27957"><path
+         d="m 903.055,1456.75 h 169.59 v 2.3672 h -169.59 z"
+         id="path27955" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27969"><path
+         d="m 358.215,1458.55 h 716.219 v 2.3633 H 358.215 Z"
+         id="path27967" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27981"><path
+         d="m 360.012,1460.35 h 714.422 v 2.3672 H 360.012 Z"
+         id="path27979" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath27993"><path
+         d="m 360.012,1462.15 h 716.219 v 2.3672 H 360.012 Z"
+         id="path27991" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28005"><path
+         d="m 360.012,1463.95 h 718.016 v 2.3672 H 360.012 Z"
+         id="path28003" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28017"><path
+         d="m 361.809,1465.75 h 718.016 v 2.3672 H 361.809 Z"
+         id="path28015" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28029"><path
+         d="m 361.809,1467.55 h 719.816 v 4.168 H 361.809 Z"
+         id="path28027" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28041"><path
+         d="m 361.809,1471.15 h 721.613 v 2.3672 H 361.809 Z"
+         id="path28039" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28053"><path
+         d="m 361.809,1472.96 h 723.414 v 2.3672 H 361.809 Z"
+         id="path28051" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28065"><path
+         d="m 361.809,1474.76 h 725.211 v 2.3672 H 361.809 Z"
+         id="path28063" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28077"><path
+         d="m 363.609,1476.56 h 725.211 v 2.3672 H 363.609 Z"
+         id="path28075" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28089"><path
+         d="m 361.809,1478.36 h 727.008 v 2.3672 H 361.809 Z"
+         id="path28087" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28101"><path
+         d="m 361.809,1480.16 h 728.809 v 2.3672 H 361.809 Z"
+         id="path28099" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28113"><path
+         d="m 361.809,1481.96 h 730.605 v 2.3672 H 361.809 Z"
+         id="path28111" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28125"><path
+         d="m 361.809,1483.76 h 732.402 v 2.3672 H 361.809 Z"
+         id="path28123" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28137"><path
+         d="m 361.809,1485.57 h 734.203 v 2.3633 H 361.809 Z"
+         id="path28135" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28149"><path
+         d="m 361.809,1487.36 h 736 v 4.1719 h -736 z"
+         id="path28147" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28161"><path
+         d="m 360.012,1490.97 h 739.598 v 2.3672 H 360.012 Z"
+         id="path28159" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28173"><path
+         d="m 360.012,1492.77 h 741.395 v 2.3672 H 360.012 Z"
+         id="path28171" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28185"><path
+         d="m 358.215,1494.57 h 744.992 v 2.3672 H 358.215 Z"
+         id="path28183" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28197"><path
+         d="m 358.215,1496.37 h 746.789 v 2.3672 H 358.215 Z"
+         id="path28195" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28209"><path
+         d="m 356.414,1498.17 h 750.387 v 2.3672 H 356.414 Z"
+         id="path28207" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28221"><path
+         d="m 356.414,1499.97 h 752.184 v 2.3672 H 356.414 Z"
+         id="path28219" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28233"><path
+         d="m 354.617,1501.77 h 755.781 v 2.3672 H 354.617 Z"
+         id="path28231" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28245"><path
+         d="m 352.82,1503.57 h 757.578 v 2.3672 H 352.82 Z"
+         id="path28243" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28257"><path
+         d="m 352.82,1505.38 h 759.375 v 2.3672 H 352.82 Z"
+         id="path28255" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28269"><path
+         d="m 351.02,1507.18 h 762.973 v 2.3672 H 351.02 Z"
+         id="path28267" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28281"><path
+         d="m 349.223,1508.98 h 766.566 v 2.3672 H 349.223 Z"
+         id="path28279" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28293"><path
+         d="m 349.223,1510.78 h 768.367 v 2.3672 H 349.223 Z"
+         id="path28291" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28305"><path
+         d="m 347.426,1512.58 h 771.961 v 2.3672 H 347.426 Z"
+         id="path28303" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28317"><path
+         d="m 345.629,1514.38 h 775.555 v 2.3672 H 345.629 Z"
+         id="path28315" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28329"><path
+         d="m 345.629,1516.18 h 777.352 v 2.3672 H 345.629 Z"
+         id="path28327" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28341"><path
+         d="m 343.828,1517.98 h 780.953 v 2.3672 H 343.828 Z"
+         id="path28339" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28353"><path
+         d="m 342.031,1519.79 h 784.547 v 2.3672 H 342.031 Z"
+         id="path28351" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28365"><path
+         d="m 342.031,1521.59 h 786.348 v 2.3672 H 342.031 Z"
+         id="path28363" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28377"><path
+         d="m 340.234,1523.39 h 789.938 v 2.3672 H 340.234 Z"
+         id="path28375" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28389"><path
+         d="m 338.438,1525.19 h 791.738 v 2.3672 H 338.438 Z"
+         id="path28387" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28401"><path
+         d="m 338.438,1526.99 h 793.535 v 2.3633 H 338.438 Z"
+         id="path28399" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28413"><path
+         d="m 336.637,1528.79 h 797.133 v 2.3672 H 336.637 Z"
+         id="path28411" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28425"><path
+         d="m 334.84,1530.59 h 800.727 v 2.3672 H 334.84 Z"
+         id="path28423" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28437"><path
+         d="m 334.84,1532.39 h 802.527 v 2.3672 H 334.84 Z"
+         id="path28435" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28449"><path
+         d="m 333.043,1534.2 h 806.121 v 2.3672 H 333.043 Z"
+         id="path28447" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28461"><path
+         d="m 331.242,1536 h 809.719 v 2.3672 H 331.242 Z"
+         id="path28459" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28473"><path
+         d="m 331.242,1537.8 h 811.52 v 2.3672 h -811.52 z"
+         id="path28471" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28485"><path
+         d="m 329.445,1539.6 h 815.113 v 2.3672 H 329.445 Z"
+         id="path28483" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28497"><path
+         d="m 327.648,1541.4 h 818.711 v 2.3672 H 327.648 Z"
+         id="path28495" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28509"><path
+         d="m 327.648,1543.2 h 820.508 v 2.3672 H 327.648 Z"
+         id="path28507" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28521"><path
+         d="m 325.848,1545 h 824.105 v 2.3672 H 325.848 Z"
+         id="path28519" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28533"><path
+         d="m 324.051,1546.8 h 827.703 v 2.3672 H 324.051 Z"
+         id="path28531" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28545"><path
+         d="m 324.051,1548.61 h 829.5 v 2.3672 h -829.5 z"
+         id="path28543" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28557"><path
+         d="m 322.254,1550.41 h 833.098 v 2.3672 H 322.254 Z"
+         id="path28555" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28569"><path
+         d="m 322.254,1552.21 h 834.895 v 2.3672 H 322.254 Z"
+         id="path28567" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28581"><path
+         d="m 320.453,1554.01 h 838.492 v 2.3672 H 320.453 Z"
+         id="path28579" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28593"><path
+         d="m 320.453,1555.81 h 840.289 v 2.3672 H 320.453 Z"
+         id="path28591" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28605"><path
+         d="m 320.453,1557.61 h 843.887 v 2.3672 H 320.453 Z"
+         id="path28603" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28617"><path
+         d="m 318.656,1559.41 h 847.48 v 2.3672 h -847.48 z"
+         id="path28615" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28629"><path
+         d="m 318.656,1561.21 h 849.281 v 2.3672 H 318.656 Z"
+         id="path28627" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28641"><path
+         d="m 318.656,1563.01 h 851.078 v 2.3672 H 318.656 Z"
+         id="path28639" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28653"><path
+         d="m 316.859,1564.82 h 854.672 v 2.3672 H 316.859 Z"
+         id="path28651" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28665"><path
+         d="m 316.859,1566.62 h 856.469 v 2.3672 H 316.859 Z"
+         id="path28663" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28677"><path
+         d="m 316.859,1568.42 h 858.27 v 2.3672 h -858.27 z"
+         id="path28675" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28689"><path
+         d="m 316.859,1570.22 h 860.066 v 2.3672 H 316.859 Z"
+         id="path28687" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28701"><path
+         d="m 316.859,1572.02 h 861.863 v 2.3672 H 316.859 Z"
+         id="path28699" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28713"><path
+         d="m 316.859,1573.82 h 863.664 v 2.3672 H 316.859 Z"
+         id="path28711" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28725"><path
+         d="m 316.859,1575.62 h 865.461 v 2.3672 H 316.859 Z"
+         id="path28723" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28737"><path
+         d="m 316.859,1577.43 h 869.059 v 2.3672 H 316.859 Z"
+         id="path28735" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28749"><path
+         d="m 318.656,1579.22 h 869.059 v 2.3672 H 318.656 Z"
+         id="path28747" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28761"><path
+         d="m 318.656,1581.02 h 870.855 v 2.3672 H 318.656 Z"
+         id="path28759" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28773"><path
+         d="m 318.656,1582.83 h 872.652 v 2.3672 H 318.656 Z"
+         id="path28771" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28785"><path
+         d="m 318.656,1584.63 h 874.453 v 2.3633 H 318.656 Z"
+         id="path28783" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28797"><path
+         d="m 320.453,1586.43 h 874.453 v 2.3672 H 320.453 Z"
+         id="path28795" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28809"><path
+         d="M 320.453,1588.23 H 1198.5 v 2.3672 H 320.453 Z"
+         id="path28807" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28821"><path
+         d="m 322.254,1590.03 h 878.047 v 2.3672 H 322.254 Z"
+         id="path28819" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28833"><path
+         d="m 322.254,1591.83 h 879.848 v 2.3672 H 322.254 Z"
+         id="path28831" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28845"><path
+         d="m 324.051,1593.63 h 879.848 v 2.3672 H 324.051 Z"
+         id="path28843" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28857"><path
+         d="m 324.051,1595.44 h 881.645 v 2.3672 H 324.051 Z"
+         id="path28855" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28869"><path
+         d="m 325.848,1597.23 h 881.645 v 2.3672 H 325.848 Z"
+         id="path28867" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28881"><path
+         d="m 327.648,1599.04 h 885.242 v 2.3672 H 327.648 Z"
+         id="path28879" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28893"><path
+         d="m 329.445,1600.84 h 883.441 v 2.3672 H 329.445 Z"
+         id="path28891" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28905"><path
+         d="m 331.242,1602.64 h 189.367 v 2.3672 H 331.242 Z"
+         id="path28903" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28917"><path
+         d="m 529.039,1602.64 h 18.5469 v 2.3672 H 529.039 Z"
+         id="path28915" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28929"><path
+         d="M 559.609,1602.64 H 1207.5 v 2.3672 H 559.609 Z"
+         id="path28927" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28941"><path
+         d="m 333.043,1604.44 h 176.781 v 2.3672 H 333.043 Z"
+         id="path28939" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28953"><path
+         d="m 536.23,1604.44 h 4.16406 v 2.3672 H 536.23 Z"
+         id="path28951" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28965"><path
+         d="m 566.801,1604.44 h 637.102 v 2.3672 H 566.801 Z"
+         id="path28963" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28977"><path
+         d="m 334.84,1606.24 h 171.387 v 2.3672 H 334.84 Z"
+         id="path28975" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath28989"><path
+         d="m 572.195,1606.24 h 626.313 v 2.3672 H 572.195 Z"
+         id="path28987" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29001"><path
+         d="m 336.637,1608.04 h 165.992 v 2.3672 H 336.637 Z"
+         id="path28999" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29013"><path
+         d="m 575.793,1608.04 h 619.117 v 2.3672 H 575.793 Z"
+         id="path29011" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29025"><path
+         d="m 338.438,1609.84 h 160.598 v 2.3672 H 338.438 Z"
+         id="path29023" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29037"><path
+         d="m 579.387,1609.84 h 610.129 v 2.3672 H 579.387 Z"
+         id="path29035" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29049"><path
+         d="m 342.031,1611.64 h 155.207 v 2.3672 H 342.031 Z"
+         id="path29047" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29061"><path
+         d="m 581.188,1611.64 h 602.934 v 2.3672 H 581.188 Z"
+         id="path29059" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29073"><path
+         d="m 343.828,1613.45 h 151.609 v 2.3633 H 343.828 Z"
+         id="path29071" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29085"><path
+         d="m 584.781,1613.45 h 595.746 v 2.3633 H 584.781 Z"
+         id="path29083" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29097"><path
+         d="m 347.426,1615.25 h 146.215 v 2.3672 H 347.426 Z"
+         id="path29095" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29109"><path
+         d="m 588.379,1615.25 h 588.551 v 2.3672 H 588.379 Z"
+         id="path29107" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29121"><path
+         d="M 349.223,1617.05 H 491.84 v 2.3672 H 349.223 Z"
+         id="path29119" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29133"><path
+         d="m 591.977,1617.05 h 583.156 v 2.3672 H 591.977 Z"
+         id="path29131" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29145"><path
+         d="m 351.02,1618.85 h 139.023 v 2.3672 H 351.02 Z"
+         id="path29143" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29157"><path
+         d="m 593.773,1618.85 h 577.762 v 2.3672 H 593.773 Z"
+         id="path29155" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29169"><path
+         d="m 354.617,1620.65 h 133.629 v 2.3672 H 354.617 Z"
+         id="path29167" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29181"><path
+         d="m 597.367,1620.65 h 572.371 v 2.3672 H 597.367 Z"
+         id="path29179" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29193"><path
+         d="m 356.414,1622.45 h 130.035 v 2.3672 H 356.414 Z"
+         id="path29191" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29205"><path
+         d="m 600.965,1622.45 h 566.977 v 2.3672 H 600.965 Z"
+         id="path29203" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29217"><path
+         d="m 358.215,1624.25 h 126.434 v 2.3672 H 358.215 Z"
+         id="path29215" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29229"><path
+         d="m 602.762,1624.25 h 563.383 v 2.3672 H 602.762 Z"
+         id="path29227" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29241"><path
+         d="m 361.809,1626.05 h 121.043 v 2.3672 H 361.809 Z"
+         id="path29239" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29253"><path
+         d="m 606.359,1626.05 h 559.785 v 2.3672 H 606.359 Z"
+         id="path29251" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29265"><path
+         d="m 363.609,1627.86 h 117.445 v 2.3672 H 363.609 Z"
+         id="path29263" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29277"><path
+         d="m 609.953,1627.86 h 554.391 v 2.3672 H 609.953 Z"
+         id="path29275" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29289"><path
+         d="m 365.406,1629.66 h 113.852 v 2.3633 H 365.406 Z"
+         id="path29287" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29301"><path
+         d="m 613.551,1629.66 h 548.996 v 2.3633 H 613.551 Z"
+         id="path29299" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29313"><path
+         d="m 369.004,1631.46 h 108.457 v 2.3672 H 369.004 Z"
+         id="path29311" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29325"><path
+         d="m 615.348,1631.46 h 547.195 v 2.3672 H 615.348 Z"
+         id="path29323" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29337"><path
+         d="M 370.801,1633.26 H 475.66 v 2.3672 H 370.801 Z"
+         id="path29335" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29349"><path
+         d="m 618.945,1633.26 h 541.801 v 2.3672 H 618.945 Z"
+         id="path29347" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29361"><path
+         d="M 372.598,1635.06 H 473.86 v 2.3672 H 372.598 Z"
+         id="path29359" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29373"><path
+         d="m 622.543,1635.06 h 538.207 v 2.3672 H 622.543 Z"
+         id="path29371" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29385"><path
+         d="m 376.195,1636.86 h 95.8672 v 2.3672 H 376.195 Z"
+         id="path29383" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29397"><path
+         d="m 626.137,1636.86 h 534.609 v 2.3672 H 626.137 Z"
+         id="path29395" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29409"><path
+         d="m 377.992,1638.66 h 92.2734 v 2.3672 H 377.992 Z"
+         id="path29407" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29421"><path
+         d="m 627.938,1638.66 h 531.012 v 2.3672 H 627.938 Z"
+         id="path29419" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29433"><path
+         d="m 379.793,1640.46 h 88.6758 v 2.3672 H 379.793 Z"
+         id="path29431" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29445"><path
+         d="m 631.531,1640.46 h 527.418 v 2.3672 H 631.531 Z"
+         id="path29443" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29457"><path
+         d="m 383.391,1642.27 h 83.2813 v 2.3633 H 383.391 Z"
+         id="path29455" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29469"><path
+         d="m 633.332,1642.27 h 525.617 v 2.3633 H 633.332 Z"
+         id="path29467" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29481"><path
+         d="m 385.188,1644.07 h 79.6836 v 2.3672 H 385.188 Z"
+         id="path29479" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29493"><path
+         d="m 636.926,1644.07 h 522.023 v 2.3672 H 636.926 Z"
+         id="path29491" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29505"><path
+         d="m 386.984,1645.87 h 76.0898 v 2.3672 H 386.984 Z"
+         id="path29503" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29517"><path
+         d="m 638.727,1645.87 h 518.426 v 2.3672 H 638.727 Z"
+         id="path29515" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29529"><path
+         d="m 390.582,1647.67 h 70.6953 v 2.3672 H 390.582 Z"
+         id="path29527" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29541"><path
+         d="m 640.523,1647.67 h 516.629 v 4.168 H 640.523 Z"
+         id="path29539" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29553"><path
+         d="m 392.379,1649.47 h 67.0977 v 2.3672 H 392.379 Z"
+         id="path29551" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29565"><path
+         d="m 395.977,1651.27 h 61.7031 v 2.3672 H 395.977 Z"
+         id="path29563" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29577"><path
+         d="m 642.32,1651.27 h 514.828 v 2.3672 H 642.32 Z"
+         id="path29575" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29589"><path
+         d="m 397.773,1653.07 h 58.1055 v 2.3672 H 397.773 Z"
+         id="path29587" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29601"><path
+         d="m 644.121,1653.07 h 513.031 v 4.168 H 644.121 Z"
+         id="path29599" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29613"><path
+         d="m 399.574,1654.87 h 54.5078 v 2.3672 H 399.574 Z"
+         id="path29611" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29625"><path
+         d="m 403.168,1656.68 h 49.1133 v 2.3672 H 403.168 Z"
+         id="path29623" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29637"><path
+         d="m 645.918,1656.68 h 511.234 v 2.3672 H 645.918 Z"
+         id="path29635" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29649"><path
+         d="m 404.969,1658.48 h 45.5195 v 2.3672 H 404.969 Z"
+         id="path29647" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29661"><path
+         d="m 645.918,1658.48 h 513.031 v 2.3672 H 645.918 Z"
+         id="path29659" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29673"><path
+         d="m 406.766,1660.28 h 41.9219 v 2.3672 H 406.766 Z"
+         id="path29671" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29685"><path
+         d="m 410.363,1662.08 h 36.5273 v 2.3672 H 410.363 Z"
+         id="path29683" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29697"><path
+         d="m 647.719,1660.28 h 511.234 v 5.9727 H 647.719 Z"
+         id="path29695" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29709"><path
+         d="m 412.16,1663.88 h 34.7305 v 2.3672 H 412.16 Z"
+         id="path29707" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29721"><path
+         d="m 413.957,1665.68 h 29.3359 v 2.3672 H 413.957 Z"
+         id="path29719" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29733"><path
+         d="m 417.555,1667.48 h 23.9414 v 2.3672 H 417.555 Z"
+         id="path29731" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29745"><path
+         d="m 419.352,1669.29 h 20.3477 v 2.3672 H 419.352 Z"
+         id="path29743" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29757"><path
+         d="m 649.516,1665.68 h 509.434 v 7.7734 H 649.516 Z"
+         id="path29755" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29769"><path
+         d="m 422.949,1671.09 h 13.1523 v 2.3633 H 422.949 Z"
+         id="path29767" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29781"><path
+         d="m 424.746,1672.88 h 7.76172 v 2.3672 H 424.746 Z"
+         id="path29779" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29793"><path
+         d="m 649.516,1672.88 h 511.234 v 11.375 H 649.516 Z"
+         id="path29791" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29805"><path
+         d="M 649.516,1683.69 H 853.27 v 2.3672 H 649.516 Z"
+         id="path29803" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29817"><path
+         d="m 874.281,1683.69 h 9.55859 v 2.3672 H 874.281 Z"
+         id="path29815" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29829"><path
+         d="m 904.852,1683.69 h 255.898 v 2.3672 H 904.852 Z"
+         id="path29827" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29841"><path
+         d="m 649.516,1685.49 h 196.563 v 2.3672 H 649.516 Z"
+         id="path29839" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29853"><path
+         d="m 928.23,1685.49 h 232.523 v 2.3672 H 928.23 Z"
+         id="path29851" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29865"><path
+         d="m 649.516,1687.3 h 192.965 v 2.3633 H 649.516 Z"
+         id="path29863" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29877"><path
+         d="m 951.602,1687.3 h 210.949 v 2.3633 H 951.602 Z"
+         id="path29875" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29889"><path
+         d="m 649.516,1689.09 h 189.367 v 2.3672 H 649.516 Z"
+         id="path29887" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29901"><path
+         d="m 964.191,1689.09 h 198.359 v 2.3672 H 964.191 Z"
+         id="path29899" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29913"><path
+         d="m 647.719,1690.9 h 187.57 v 2.3672 h -187.57 z"
+         id="path29911" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29925"><path
+         d="m 969.586,1690.9 h 192.965 v 2.3672 H 969.586 Z"
+         id="path29923" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29937"><path
+         d="m 647.719,1692.7 h 185.773 v 2.3672 H 647.719 Z"
+         id="path29935" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29949"><path
+         d="m 973.18,1692.7 h 189.371 v 2.3672 H 973.18 Z"
+         id="path29947" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29961"><path
+         d="m 647.719,1694.5 h 183.973 v 2.3672 H 647.719 Z"
+         id="path29959" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29973"><path
+         d="m 976.777,1694.5 h 185.773 v 2.3672 H 976.777 Z"
+         id="path29971" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29985"><path
+         d="m 647.719,1696.3 h 182.176 v 2.3672 H 647.719 Z"
+         id="path29983" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath29997"><path
+         d="m 978.574,1696.3 h 183.977 v 2.3672 H 978.574 Z"
+         id="path29995" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30009"><path
+         d="m 647.719,1698.1 h 180.379 v 2.3672 H 647.719 Z"
+         id="path30007" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30021"><path
+         d="m 982.172,1698.1 h 180.379 v 2.3672 H 982.172 Z"
+         id="path30019" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30033"><path
+         d="m 983.969,1699.9 h 178.582 v 2.3672 H 983.969 Z"
+         id="path30031" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30045"><path
+         d="m 647.719,1699.9 h 178.578 v 4.1719 H 647.719 Z"
+         id="path30043" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30057"><path
+         d="m 985.77,1701.7 h 178.578 v 4.1719 H 985.77 Z"
+         id="path30055" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30069"><path
+         d="m 645.918,1703.5 h 178.578 v 4.168 H 645.918 Z"
+         id="path30067" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30081"><path
+         d="m 987.566,1705.3 h 176.781 v 2.3672 H 987.566 Z"
+         id="path30079" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30093"><path
+         d="m 645.918,1707.11 h 176.781 v 4.1719 H 645.918 Z"
+         id="path30091" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30105"><path
+         d="m 989.363,1707.11 h 174.984 v 4.1719 H 989.363 Z"
+         id="path30103" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30117"><path
+         d="m 991.164,1710.71 h 173.184 v 4.168 H 991.164 Z"
+         id="path30115" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30129"><path
+         d="m 645.918,1710.71 h 174.984 v 5.9688 H 645.918 Z"
+         id="path30127" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30141"><path
+         d="m 992.961,1714.31 h 171.387 v 2.3672 H 992.961 Z"
+         id="path30139" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30153"><path
+         d="m 992.961,1716.11 h 173.184 v 4.168 H 992.961 Z"
+         id="path30151" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30165"><path
+         d="m 644.121,1716.11 h 174.984 v 5.9688 H 644.121 Z"
+         id="path30163" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30177"><path
+         d="m 994.762,1719.71 h 171.387 v 5.9688 H 994.762 Z"
+         id="path30175" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30189"><path
+         d="m 644.121,1721.52 h 173.184 v 5.9688 H 644.121 Z"
+         id="path30187" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30201"><path
+         d="m 996.559,1725.12 h 169.59 v 5.9687 h -169.59 z"
+         id="path30199" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30213"><path
+         d="m 644.121,1726.92 h 171.387 v 4.168 H 644.121 Z"
+         id="path30211" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30225"><path
+         d="m 642.32,1730.52 h 173.188 v 2.3672 H 642.32 Z"
+         id="path30223" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30237"><path
+         d="m 998.355,1730.52 h 167.793 v 5.9688 H 998.355 Z"
+         id="path30235" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30249"><path
+         d="m 642.32,1732.32 h 171.391 v 5.9688 H 642.32 Z"
+         id="path30247" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30261"><path
+         d="m 1000.16,1735.93 h 165.992 v 5.9688 H 1000.16 Z"
+         id="path30259" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30273"><path
+         d="m 642.32,1737.73 h 169.594 v 5.9688 H 642.32 Z"
+         id="path30271" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30285"><path
+         d="m 1001.95,1741.33 h 164.195 v 2.3672 H 1001.95 Z"
+         id="path30283" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30297"><path
+         d="m 1001.95,1743.13 h 162.395 v 4.168 H 1001.95 Z"
+         id="path30295" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30309"><path
+         d="m 642.32,1743.13 h 167.793 v 5.9687 H 642.32 Z"
+         id="path30307" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30321"><path
+         d="m 1003.75,1746.73 h 160.598 v 2.3672 H 1003.75 Z"
+         id="path30319" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30333"><path
+         d="m 1003.75,1748.54 h 158.801 v 4.168 H 1003.75 Z"
+         id="path30331" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30345"><path
+         d="m 642.32,1748.54 h 165.996 v 5.9688 H 642.32 Z"
+         id="path30343" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30357"><path
+         d="m 1005.55,1752.14 h 155.203 v 2.3672 H 1005.55 Z"
+         id="path30355" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30369"><path
+         d="m 642.32,1753.94 h 164.199 v 2.3672 H 642.32 Z"
+         id="path30367" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30381"><path
+         d="m 1005.55,1753.94 h 153.406 v 4.168 H 1005.55 Z"
+         id="path30379" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30393"><path
+         d="m 644.121,1755.74 h 162.398 v 4.168 H 644.121 Z"
+         id="path30391" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30405"><path
+         d="m 1005.55,1757.54 h 151.609 v 2.3672 H 1005.55 Z"
+         id="path30403" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30417"><path
+         d="m 644.121,1759.34 h 160.602 v 2.3672 H 644.121 Z"
+         id="path30415" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30429"><path
+         d="m 1007.35,1759.34 h 148.012 v 2.3672 H 1007.35 Z"
+         id="path30427" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30441"><path
+         d="m 1007.35,1761.14 h 146.215 v 2.3672 H 1007.35 Z"
+         id="path30439" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30453"><path
+         d="m 645.918,1761.14 h 158.805 v 4.168 H 645.918 Z"
+         id="path30451" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30465"><path
+         d="m 1007.35,1762.94 h 144.418 v 2.3672 H 1007.35 Z"
+         id="path30463" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30477"><path
+         d="m 647.719,1764.74 h 155.203 v 2.3672 H 647.719 Z"
+         id="path30475" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30489"><path
+         d="m 1009.14,1764.74 h 140.82 v 2.3672 h -140.82 z"
+         id="path30487" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30501"><path
+         d="m 1009.14,1766.55 h 137.223 v 2.3672 H 1009.14 Z"
+         id="path30499" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30513"><path
+         d="m 649.516,1766.55 h 153.406 v 4.168 H 649.516 Z"
+         id="path30511" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30525"><path
+         d="m 1009.14,1768.35 h 135.426 v 2.3672 H 1009.14 Z"
+         id="path30523" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30537"><path
+         d="m 651.313,1770.15 h 149.813 v 2.3672 H 651.313 Z"
+         id="path30535" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30549"><path
+         d="m 1010.95,1770.15 h 130.031 v 2.3672 H 1010.95 Z"
+         id="path30547" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30561"><path
+         d="m 653.113,1771.95 h 148.012 v 2.3672 H 653.113 Z"
+         id="path30559" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30573"><path
+         d="m 1010.95,1771.95 h 124.637 v 2.3672 H 1010.95 Z"
+         id="path30571" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30585"><path
+         d="m 654.91,1773.75 h 146.215 v 2.3672 H 654.91 Z"
+         id="path30583" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30597"><path
+         d="m 1012.74,1773.75 h 117.445 v 2.3672 H 1012.74 Z"
+         id="path30595" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30609"><path
+         d="m 656.707,1775.55 h 142.617 v 2.3672 H 656.707 Z"
+         id="path30607" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30621"><path
+         d="m 1012.74,1775.55 h 110.25 v 2.3672 h -110.25 z"
+         id="path30619" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30633"><path
+         d="m 658.508,1777.35 h 140.82 v 2.3672 h -140.82 z"
+         id="path30631" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30645"><path
+         d="m 1014.54,1777.35 h 101.258 v 2.3672 H 1014.54 Z"
+         id="path30643" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30657"><path
+         d="m 660.305,1779.16 h 137.223 v 2.3672 H 660.305 Z"
+         id="path30655" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30669"><path
+         d="m 1014.54,1779.16 h 95.8672 v 2.3672 H 1014.54 Z"
+         id="path30667" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30681"><path
+         d="m 663.902,1780.95 h 133.629 v 2.3672 H 663.902 Z"
+         id="path30679" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30693"><path
+         d="m 1016.34,1780.95 h 86.875 v 2.3672 h -86.875 z"
+         id="path30691" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30705"><path
+         d="M 667.496,1782.76 H 795.73 v 2.3672 H 667.496 Z"
+         id="path30703" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30717"><path
+         d="m 1018.14,1782.76 h 77.8867 v 2.3672 H 1018.14 Z"
+         id="path30715" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30729"><path
+         d="m 671.094,1784.56 h 124.637 v 2.3672 H 671.094 Z"
+         id="path30727" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30741"><path
+         d="m 1018.14,1784.56 h 70.6953 v 2.3672 H 1018.14 Z"
+         id="path30739" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30753"><path
+         d="m 676.488,1786.36 h 117.445 v 2.3633 H 676.488 Z"
+         id="path30751" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30765"><path
+         d="m 1019.93,1786.36 h 63.5 v 2.3633 h -63.5 z"
+         id="path30763" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30777"><path
+         d="m 687.277,1788.16 h 106.652 v 2.3672 H 687.277 Z"
+         id="path30775" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30789"><path
+         d="m 1021.73,1788.16 h 54.5078 v 2.3672 H 1021.73 Z"
+         id="path30787" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30801"><path
+         d="m 696.266,1789.96 h 95.8672 v 2.3672 H 696.266 Z"
+         id="path30799" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30813"><path
+         d="m 1023.53,1789.96 h 45.5195 v 2.3672 H 1023.53 Z"
+         id="path30811" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30825"><path
+         d="m 705.258,1791.76 h 85.0781 v 2.3672 H 705.258 Z"
+         id="path30823" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30837"><path
+         d="m 1025.33,1791.76 h 36.5273 v 2.3672 H 1025.33 Z"
+         id="path30835" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30849"><path
+         d="m 714.246,1793.56 h 74.2891 v 2.3672 H 714.246 Z"
+         id="path30847" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30861"><path
+         d="m 1028.93,1793.56 h 27.5352 v 2.3672 H 1028.93 Z"
+         id="path30859" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30873"><path
+         d="m 725.035,1795.36 h 61.7031 v 2.3672 H 725.035 Z"
+         id="path30871" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30885"><path
+         d="m 1032.52,1795.36 h 16.75 v 2.3672 h -16.75 z"
+         id="path30883" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30897"><path
+         d="m 734.027,1797.17 h 50.9141 v 2.3633 H 734.027 Z"
+         id="path30895" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30909"><path
+         d="m 1036.12,1797.17 h 5.9609 v 2.3633 h -5.9609 z"
+         id="path30907" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30921"><path
+         d="m 743.02,1798.96 h 38.3242 v 2.3672 H 743.02 Z"
+         id="path30919" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30933"><path
+         d="m 752.012,1800.77 h 27.5352 v 2.3672 H 752.012 Z"
+         id="path30931" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30945"><path
+         d="m 762.801,1802.57 h 13.1523 v 2.3672 H 762.801 Z"
+         id="path30943" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30957"><path
+         d="m 681.305,789.324 h 5.96094 v 4.16016 H 681.305 Z"
+         id="path30955" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30969"><path
+         d="m 679.508,792.918 h 13.1523 v 2.36719 H 679.508 Z"
+         id="path30967" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30981"><path
+         d="m 677.707,794.715 h 20.3438 v 2.36719 H 677.707 Z"
+         id="path30979" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath30993"><path
+         d="m 677.707,796.512 h 25.7383 v 2.36719 H 677.707 Z"
+         id="path30991" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31005"><path
+         d="m 675.91,798.313 h 31.1328 v 2.36328 H 675.91 Z"
+         id="path31003" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31017"><path
+         d="m 674.113,800.109 h 38.3242 v 2.36719 H 674.113 Z"
+         id="path31015" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31029"><path
+         d="m 672.313,801.906 h 45.5195 v 2.36719 H 672.313 Z"
+         id="path31027" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31041"><path
+         d="m 670.516,803.703 h 50.9141 v 2.36719 H 670.516 Z"
+         id="path31039" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31053"><path
+         d="m 670.516,805.504 h 56.3047 v 2.36328 H 670.516 Z"
+         id="path31051" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31065"><path
+         d="m 668.719,807.301 h 61.6992 v 2.36328 H 668.719 Z"
+         id="path31063" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31077"><path
+         d="m 666.922,809.098 h 68.8945 v 2.36719 H 666.922 Z"
+         id="path31075" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31089"><path
+         d="m 666.922,810.895 h 72.4883 v 2.36719 H 666.922 Z"
+         id="path31087" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31101"><path
+         d="m 665.121,812.695 h 77.8828 v 2.36328 H 665.121 Z"
+         id="path31099" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31113"><path
+         d="m 663.324,814.492 h 85.0742 v 2.36328 H 663.324 Z"
+         id="path31111" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31125"><path
+         d="m 663.324,816.289 h 88.6719 v 2.36328 H 663.324 Z"
+         id="path31123" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31137"><path
+         d="m 661.527,818.09 h 94.0664 v 2.36328 H 661.527 Z"
+         id="path31135" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31149"><path
+         d="m 659.727,819.887 h 99.4609 v 2.36328 H 659.727 Z"
+         id="path31147" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31161"><path
+         d="m 659.727,821.684 h 104.855 v 2.36328 H 659.727 Z"
+         id="path31159" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31173"><path
+         d="m 657.93,823.48 h 110.246 v 2.36328 H 657.93 Z"
+         id="path31171" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31185"><path
+         d="m 657.93,825.277 h 113.844 v 2.36328 H 657.93 Z"
+         id="path31183" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31197"><path
+         d="m 656.133,827.078 h 119.234 v 2.36328 H 656.133 Z"
+         id="path31195" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31209"><path
+         d="m 656.133,828.875 h 122.832 v 2.36328 H 656.133 Z"
+         id="path31207" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31221"><path
+         d="m 654.336,830.672 h 128.223 v 2.36328 H 654.336 Z"
+         id="path31219" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31233"><path
+         d="m 652.535,832.469 h 133.621 v 2.36328 H 652.535 Z"
+         id="path31231" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31245"><path
+         d="M 652.535,834.266 H 789.75 v 2.36328 H 652.535 Z"
+         id="path31243" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31257"><path
+         d="m 650.738,836.063 h 142.609 v 2.36328 H 650.738 Z"
+         id="path31255" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31269"><path
+         d="m 650.738,837.863 h 146.207 v 2.36328 H 650.738 Z"
+         id="path31267" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31281"><path
+         d="m 648.941,839.66 h 151.598 v 2.36328 H 648.941 Z"
+         id="path31279" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31293"><path
+         d="m 648.941,841.457 h 155.191 v 2.36328 H 648.941 Z"
+         id="path31291" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31305"><path
+         d="m 647.145,843.254 h 160.586 v 2.36328 H 647.145 Z"
+         id="path31303" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31317"><path
+         d="m 647.145,845.051 h 164.184 v 2.36328 H 647.145 Z"
+         id="path31315" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31329"><path
+         d="m 645.344,846.852 h 169.582 v 2.36328 H 645.344 Z"
+         id="path31327" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31341"><path
+         d="m 645.344,848.648 h 171.379 v 2.36328 H 645.344 Z"
+         id="path31339" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31353"><path
+         d="m 645.344,850.445 h 174.977 v 2.36328 H 645.344 Z"
+         id="path31351" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31365"><path
+         d="m 643.547,852.242 h 180.371 v 2.36328 H 643.547 Z"
+         id="path31363" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31377"><path
+         d="m 643.547,854.039 h 183.965 v 2.36328 H 643.547 Z"
+         id="path31375" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31389"><path
+         d="m 641.75,855.84 h 189.355 v 2.36328 H 641.75 Z"
+         id="path31387" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31401"><path
+         d="m 641.75,857.637 h 191.152 v 2.36328 H 641.75 Z"
+         id="path31399" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31413"><path
+         d="M 641.75,859.434 H 836.5 v 2.36328 H 641.75 Z"
+         id="path31411" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31425"><path
+         d="m 639.953,861.23 h 200.145 v 2.36328 H 639.953 Z"
+         id="path31423" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31437"><path
+         d="m 639.953,863.027 h 203.742 v 2.36328 H 639.953 Z"
+         id="path31435" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31449"><path
+         d="m 638.152,864.828 h 209.137 v 2.36328 H 638.152 Z"
+         id="path31447" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31461"><path
+         d="M 638.152,866.625 H 849.09 v 2.36328 H 638.152 Z"
+         id="path31459" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31473"><path
+         d="m 638.152,868.422 h 214.531 v 2.36328 H 638.152 Z"
+         id="path31471" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31485"><path
+         d="m 636.355,870.219 h 219.922 v 2.36328 H 636.355 Z"
+         id="path31483" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31497"><path
+         d="m 636.355,872.016 h 223.52 v 2.36719 h -223.52 z"
+         id="path31495" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31509"><path
+         d="m 636.355,873.816 h 225.316 v 2.36328 H 636.355 Z"
+         id="path31507" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31521"><path
+         d="m 636.355,875.613 h 228.914 v 2.36719 H 636.355 Z"
+         id="path31519" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31533"><path
+         d="m 634.559,877.41 h 232.508 v 2.36719 H 634.559 Z"
+         id="path31531" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31545"><path
+         d="m 634.559,879.207 h 236.102 v 2.36719 H 634.559 Z"
+         id="path31543" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31557"><path
+         d="m 634.559,881.004 h 239.699 v 2.36719 H 634.559 Z"
+         id="path31555" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31569"><path
+         d="m 632.758,882.805 h 243.297 v 2.36328 H 632.758 Z"
+         id="path31567" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31581"><path
+         d="m 632.758,884.602 h 246.895 v 2.36719 H 632.758 Z"
+         id="path31579" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31593"><path
+         d="m 632.758,886.398 h 250.488 v 2.36719 H 632.758 Z"
+         id="path31591" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31605"><path
+         d="m 632.758,888.199 h 252.289 v 2.36328 H 632.758 Z"
+         id="path31603" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31617"><path
+         d="m 630.961,889.996 h 257.68 v 2.36328 h -257.68 z"
+         id="path31615" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31629"><path
+         d="m 630.961,891.793 h 259.477 v 2.36328 H 630.961 Z"
+         id="path31627" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31641"><path
+         d="m 630.961,893.59 h 263.074 v 2.36719 H 630.961 Z"
+         id="path31639" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31653"><path
+         d="m 630.961,895.391 h 266.668 v 2.36328 H 630.961 Z"
+         id="path31651" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31665"><path
+         d="M 629.164,897.188 H 899.43 v 2.36328 H 629.164 Z"
+         id="path31663" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31677"><path
+         d="m 629.164,898.984 h 273.859 v 2.36328 H 629.164 Z"
+         id="path31675" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31689"><path
+         d="m 629.164,900.781 h 275.66 v 2.36328 h -275.66 z"
+         id="path31687" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31701"><path
+         d="m 629.164,902.582 h 279.254 v 2.36328 H 629.164 Z"
+         id="path31699" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31713"><path
+         d="m 629.164,904.379 h 282.852 v 2.36328 H 629.164 Z"
+         id="path31711" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31725"><path
+         d="m 627.367,906.176 h 286.449 v 2.36328 H 627.367 Z"
+         id="path31723" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31737"><path
+         d="M 627.367,907.973 H 917.41 v 2.36328 H 627.367 Z"
+         id="path31735" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31749"><path
+         d="m 627.367,909.77 h 291.844 v 2.36328 H 627.367 Z"
+         id="path31747" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31761"><path
+         d="m 627.367,911.57 h 295.438 v 2.36328 H 627.367 Z"
+         id="path31759" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31773"><path
+         d="m 627.367,913.367 h 297.234 v 2.36328 H 627.367 Z"
+         id="path31771" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31785"><path
+         d="m 627.367,915.164 h 300.832 v 2.36328 H 627.367 Z"
+         id="path31783" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31797"><path
+         d="m 627.367,916.961 h 302.629 v 2.36328 H 627.367 Z"
+         id="path31795" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31809"><path
+         d="m 627.367,918.758 h 306.227 v 2.36328 H 627.367 Z"
+         id="path31807" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31821"><path
+         d="m 625.566,920.555 h 309.828 v 2.36328 H 625.566 Z"
+         id="path31819" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31833"><path
+         d="m 625.566,922.355 h 313.422 v 2.36328 H 625.566 Z"
+         id="path31831" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31845"><path
+         d="m 625.566,924.152 h 315.219 v 2.36328 H 625.566 Z"
+         id="path31843" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31857"><path
+         d="m 625.566,925.949 h 318.816 v 2.36328 H 625.566 Z"
+         id="path31855" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31869"><path
+         d="m 625.566,927.746 h 320.613 v 2.36328 H 625.566 Z"
+         id="path31867" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31881"><path
+         d="m 625.566,929.543 h 324.211 v 2.36328 H 625.566 Z"
+         id="path31879" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31893"><path
+         d="m 625.566,931.344 h 326.008 v 2.36328 H 625.566 Z"
+         id="path31891" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31905"><path
+         d="m 625.566,933.141 h 329.602 v 2.36328 H 625.566 Z"
+         id="path31903" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31917"><path
+         d="m 625.566,934.938 h 331.402 v 2.36328 H 625.566 Z"
+         id="path31915" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31929"><path
+         d="m 625.566,936.734 h 333.199 v 2.36328 H 625.566 Z"
+         id="path31927" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31941"><path
+         d="m 625.566,938.531 h 336.793 v 2.36328 H 625.566 Z"
+         id="path31939" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31953"><path
+         d="M 625.566,940.332 H 964.16 v 2.36328 H 625.566 Z"
+         id="path31951" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31965"><path
+         d="m 625.566,942.129 h 342.188 v 2.36328 H 625.566 Z"
+         id="path31963" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31977"><path
+         d="M 625.566,943.926 H 969.55 v 2.36328 H 625.566 Z"
+         id="path31975" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath31989"><path
+         d="m 625.566,945.723 h 347.582 v 2.36328 H 625.566 Z"
+         id="path31987" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32001"><path
+         d="m 625.566,947.52 h 349.379 v 2.36719 H 625.566 Z"
+         id="path31999" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32013"><path
+         d="m 625.566,949.32 h 352.977 v 2.36328 H 625.566 Z"
+         id="path32011" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32025"><path
+         d="m 625.566,951.117 h 354.773 v 2.36328 H 625.566 Z"
+         id="path32023" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32037"><path
+         d="m 625.566,952.914 h 358.371 v 2.36328 H 625.566 Z"
+         id="path32035" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32049"><path
+         d="m 625.566,954.711 h 360.168 v 2.36719 H 625.566 Z"
+         id="path32047" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32061"><path
+         d="m 625.566,956.508 h 363.766 v 2.36719 H 625.566 Z"
+         id="path32059" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32073"><path
+         d="m 625.566,958.309 h 365.563 v 2.36328 H 625.566 Z"
+         id="path32071" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32085"><path
+         d="m 625.566,960.105 h 367.359 v 2.36719 H 625.566 Z"
+         id="path32083" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32097"><path
+         d="m 625.566,961.902 h 370.957 v 2.36719 H 625.566 Z"
+         id="path32095" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32109"><path
+         d="M 625.566,963.699 H 998.32 v 2.36719 H 625.566 Z"
+         id="path32107" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32121"><path
+         d="m 625.566,965.5 h 376.352 v 2.36328 H 625.566 Z"
+         id="path32119" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32133"><path
+         d="m 625.566,967.297 h 378.148 v 2.36328 H 625.566 Z"
+         id="path32131" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32145"><path
+         d="m 625.566,969.094 h 381.746 v 2.36719 H 625.566 Z"
+         id="path32143" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32157"><path
+         d="m 625.566,970.891 h 383.543 v 2.36719 H 625.566 Z"
+         id="path32155" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32169"><path
+         d="m 625.566,972.691 h 387.141 v 2.36328 H 625.566 Z"
+         id="path32167" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32181"><path
+         d="m 625.566,974.488 h 388.938 v 2.36328 H 625.566 Z"
+         id="path32179" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32193"><path
+         d="m 627.367,976.285 h 390.73 v 2.36328 h -390.73 z"
+         id="path32191" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32205"><path
+         d="m 627.367,978.082 h 392.531 v 2.36719 H 627.367 Z"
+         id="path32203" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32217"><path
+         d="m 627.367,979.883 h 396.125 v 2.36328 H 627.367 Z"
+         id="path32215" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32229"><path
+         d="m 627.367,981.68 h 397.926 v 2.36328 H 627.367 Z"
+         id="path32227" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32241"><path
+         d="m 627.367,983.477 h 401.52 v 2.36328 h -401.52 z"
+         id="path32239" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32253"><path
+         d="m 627.367,985.273 h 403.316 v 2.36328 H 627.367 Z"
+         id="path32251" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32265"><path
+         d="m 627.367,987.074 h 406.914 v 2.36328 H 627.367 Z"
+         id="path32263" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32277"><path
+         d="m 629.164,988.871 h 406.914 v 2.36328 H 629.164 Z"
+         id="path32275" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32289"><path
+         d="m 629.164,990.668 h 408.711 v 2.36328 H 629.164 Z"
+         id="path32287" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32301"><path
+         d="m 629.164,992.465 h 412.309 v 2.36328 H 629.164 Z"
+         id="path32299" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32313"><path
+         d="m 629.164,994.262 h 414.105 v 2.36328 H 629.164 Z"
+         id="path32311" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32325"><path
+         d="m 629.164,996.063 h 417.703 v 2.36328 H 629.164 Z"
+         id="path32323" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32337"><path
+         d="m 630.961,997.859 h 417.703 v 2.3633 H 630.961 Z"
+         id="path32335" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32349"><path
+         d="m 630.961,999.656 h 421.301 v 2.3633 H 630.961 Z"
+         id="path32347" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32361"><path
+         d="m 630.961,1001.45 h 423.098 v 2.3633 H 630.961 Z"
+         id="path32359" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32373"><path
+         d="m 630.961,1003.25 h 426.691 v 2.3633 H 630.961 Z"
+         id="path32371" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32385"><path
+         d="m 632.758,1005.05 h 428.496 v 2.3633 H 632.758 Z"
+         id="path32383" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32397"><path
+         d="m 632.758,1006.85 h 430.293 v 2.3633 H 632.758 Z"
+         id="path32395" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32409"><path
+         d="m 632.758,1008.64 h 433.887 v 2.3633 H 632.758 Z"
+         id="path32407" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32421"><path
+         d="m 632.758,1010.44 h 435.688 v 2.3633 H 632.758 Z"
+         id="path32419" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32433"><path
+         d="m 634.559,1012.24 h 437.48 v 2.3633 h -437.48 z"
+         id="path32431" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32445"><path
+         d="m 634.559,1014.04 h 439.277 v 2.3633 H 634.559 Z"
+         id="path32443" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32457"><path
+         d="m 634.559,1015.84 h 442.875 v 2.3633 H 634.559 Z"
+         id="path32455" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32469"><path
+         d="m 634.559,1017.63 h 444.672 v 2.3633 H 634.559 Z"
+         id="path32467" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32481"><path
+         d="m 636.355,1019.43 h 446.473 v 2.3633 H 636.355 Z"
+         id="path32479" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32493"><path
+         d="m 636.355,1021.23 h 448.27 v 2.3633 h -448.27 z"
+         id="path32491" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32505"><path
+         d="m 636.355,1023.02 h 451.863 v 2.3633 H 636.355 Z"
+         id="path32503" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32517"><path
+         d="m 638.152,1024.82 h 453.664 v 2.3633 H 638.152 Z"
+         id="path32515" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32529"><path
+         d="m 638.152,1026.62 h 455.461 v 2.3633 H 638.152 Z"
+         id="path32527" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32541"><path
+         d="m 638.152,1028.42 h 459.059 v 2.3633 H 638.152 Z"
+         id="path32539" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32553"><path
+         d="m 639.953,1030.21 h 459.055 v 2.3633 H 639.953 Z"
+         id="path32551" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32565"><path
+         d="m 639.953,1032.01 h 462.652 v 2.3672 H 639.953 Z"
+         id="path32563" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32577"><path
+         d="m 641.75,1033.81 h 464.449 v 2.3633 H 641.75 Z"
+         id="path32575" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32589"><path
+         d="m 641.75,1035.61 h 466.246 v 2.3633 H 641.75 Z"
+         id="path32587" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32601"><path
+         d="m 641.75,1037.41 h 469.844 v 2.3672 H 641.75 Z"
+         id="path32599" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32613"><path
+         d="m 643.547,1039.2 h 471.645 v 2.3672 H 643.547 Z"
+         id="path32611" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32625"><path
+         d="m 643.547,1041 h 473.441 v 2.3672 H 643.547 Z"
+         id="path32623" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32637"><path
+         d="m 643.547,1042.8 h 477.039 v 2.3633 H 643.547 Z"
+         id="path32635" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32649"><path
+         d="m 645.344,1044.6 h 478.836 v 2.3672 H 645.344 Z"
+         id="path32647" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32661"><path
+         d="m 645.344,1046.39 h 480.637 v 2.3672 H 645.344 Z"
+         id="path32659" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32673"><path
+         d="m 647.145,1048.19 h 482.43 v 2.3672 h -482.43 z"
+         id="path32671" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32685"><path
+         d="m 647.145,1049.99 h 486.027 v 2.3633 H 647.145 Z"
+         id="path32683" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32697"><path
+         d="m 648.941,1051.79 h 487.824 v 2.3633 H 648.941 Z"
+         id="path32695" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32709"><path
+         d="m 648.941,1053.59 h 489.621 v 2.3672 H 648.941 Z"
+         id="path32707" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32721"><path
+         d="m 650.738,1055.39 h 491.422 v 2.3633 H 650.738 Z"
+         id="path32719" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32733"><path
+         d="m 650.738,1057.18 h 495.02 v 2.3633 h -495.02 z"
+         id="path32731" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32745"><path
+         d="m 652.535,1058.98 h 496.816 v 2.3633 H 652.535 Z"
+         id="path32743" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32757"><path
+         d="m 652.535,1060.78 h 498.617 v 2.3633 H 652.535 Z"
+         id="path32755" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32769"><path
+         d="m 654.336,1062.58 h 500.41 v 2.3633 h -500.41 z"
+         id="path32767" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32781"><path
+         d="m 654.336,1064.38 h 504.008 v 2.3633 H 654.336 Z"
+         id="path32779" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32793"><path
+         d="m 656.133,1066.17 h 505.809 v 2.3633 H 656.133 Z"
+         id="path32791" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32805"><path
+         d="m 657.93,1067.97 h 507.605 v 2.3633 H 657.93 Z"
+         id="path32803" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32817"><path
+         d="m 657.93,1069.77 h 511.203 v 2.3633 H 657.93 Z"
+         id="path32815" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32829"><path
+         d="m 659.727,1071.57 h 513 v 2.3633 h -513 z"
+         id="path32827" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32841"><path
+         d="m 659.727,1073.36 h 516.598 v 2.3633 H 659.727 Z"
+         id="path32839" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32853"><path
+         d="m 661.527,1075.16 h 518.395 v 2.3633 H 661.527 Z"
+         id="path32851" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32865"><path
+         d="m 663.324,1076.96 h 520.191 v 2.3633 H 663.324 Z"
+         id="path32863" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32877"><path
+         d="m 663.324,1078.75 h 523.789 v 2.3633 H 663.324 Z"
+         id="path32875" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32889"><path
+         d="m 665.121,1080.55 h 525.586 v 2.3633 H 665.121 Z"
+         id="path32887" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32901"><path
+         d="m 665.121,1082.35 h 529.184 v 2.3633 H 665.121 Z"
+         id="path32899" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32913"><path
+         d="m 666.922,1084.15 h 530.977 v 2.3633 H 666.922 Z"
+         id="path32911" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32925"><path
+         d="m 668.719,1085.95 h 401.523 v 2.3633 H 668.719 Z"
+         id="path32923" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32937"><path
+         d="m 1075.07,1085.95 h 126.426 v 2.3633 H 1075.07 Z"
+         id="path32935" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32949"><path
+         d="m 670.516,1087.74 h 399.727 v 2.3633 H 670.516 Z"
+         id="path32947" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32961"><path
+         d="m 1076.87,1087.74 h 128.227 v 2.3633 H 1076.87 Z"
+         id="path32959" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32973"><path
+         d="m 670.516,1089.54 h 397.93 v 2.3633 h -397.93 z"
+         id="path32971" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32985"><path
+         d="m 1080.47,1089.54 h 128.227 v 2.3633 H 1080.47 Z"
+         id="path32983" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath32997"><path
+         d="m 672.313,1091.34 h 394.332 v 2.3633 H 672.313 Z"
+         id="path32995" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33009"><path
+         d="m 1082.27,1091.34 h 130.023 v 2.3633 H 1082.27 Z"
+         id="path33007" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33021"><path
+         d="m 674.113,1093.14 h 390.734 v 2.3633 H 674.113 Z"
+         id="path33019" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33033"><path
+         d="m 1085.86,1093.14 h 131.82 v 2.3633 h -131.82 z"
+         id="path33031" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33045"><path
+         d="m 675.91,1094.93 h 388.938 v 2.3633 H 675.91 Z"
+         id="path33043" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33057"><path
+         d="m 1087.66,1094.93 h 133.621 v 2.3633 H 1087.66 Z"
+         id="path33055" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33069"><path
+         d="m 675.91,1096.73 h 387.141 v 2.3633 H 675.91 Z"
+         id="path33067" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33081"><path
+         d="m 1089.46,1096.73 h 137.215 v 2.3633 H 1089.46 Z"
+         id="path33079" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33093"><path
+         d="m 677.707,1098.53 h 383.543 v 2.3633 H 677.707 Z"
+         id="path33091" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33105"><path
+         d="m 1093.05,1098.53 h 137.215 v 2.3633 H 1093.05 Z"
+         id="path33103" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33117"><path
+         d="m 679.508,1100.33 h 379.949 v 2.3633 H 679.508 Z"
+         id="path33115" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33129"><path
+         d="m 1094.85,1100.33 h 139.016 v 2.3633 H 1094.85 Z"
+         id="path33127" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33141"><path
+         d="m 1098.45,1102.13 h 140.813 v 2.3633 H 1098.45 Z"
+         id="path33139" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33153"><path
+         d="m 681.305,1102.13 h 376.352 v 4.1602 H 681.305 Z"
+         id="path33151" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33165"><path
+         d="m 1100.25,1103.92 h 142.609 v 2.3633 H 1100.25 Z"
+         id="path33163" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33177"><path
+         d="m 683.102,1105.72 h 372.754 v 2.3633 H 683.102 Z"
+         id="path33175" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33189"><path
+         d="m 1103.84,1105.72 h 144.406 v 2.3633 H 1103.84 Z"
+         id="path33187" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33201"><path
+         d="m 684.902,1107.52 h 369.16 v 2.3672 h -369.16 z"
+         id="path33199" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33213"><path
+         d="m 1105.64,1107.52 h 146.207 v 2.3672 H 1105.64 Z"
+         id="path33211" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33225"><path
+         d="m 686.699,1109.32 h 365.563 v 2.3633 H 686.699 Z"
+         id="path33223" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33237"><path
+         d="m 1109.24,1109.32 h 148.004 v 2.3633 H 1109.24 Z"
+         id="path33235" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33249"><path
+         d="m 688.496,1111.11 h 361.965 v 2.3633 H 688.496 Z"
+         id="path33247" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33261"><path
+         d="m 1111.04,1111.11 h 151.602 v 2.3633 H 1111.04 Z"
+         id="path33259" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33273"><path
+         d="m 690.297,1112.91 h 358.371 v 2.3633 H 690.297 Z"
+         id="path33271" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33285"><path
+         d="m 1114.63,1112.91 h 151.602 v 2.3633 H 1114.63 Z"
+         id="path33283" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33297"><path
+         d="m 692.094,1114.71 h 354.773 v 2.3633 H 692.094 Z"
+         id="path33295" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33309"><path
+         d="m 1116.43,1114.71 h 155.195 v 2.3633 H 1116.43 Z"
+         id="path33307" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33321"><path
+         d="m 693.891,1116.5 h 351.18 v 2.3672 h -351.18 z"
+         id="path33319" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33333"><path
+         d="m 1120.03,1116.5 h 156.992 v 2.3672 H 1120.03 Z"
+         id="path33331" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33345"><path
+         d="m 695.688,1118.3 h 347.582 v 2.3633 H 695.688 Z"
+         id="path33343" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33357"><path
+         d="m 1121.82,1118.3 h 160.59 v 2.3633 h -160.59 z"
+         id="path33355" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33369"><path
+         d="m 697.488,1120.1 h 343.984 v 2.3633 H 697.488 Z"
+         id="path33367" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33381"><path
+         d="m 1125.42,1120.1 h 162.391 v 2.3633 H 1125.42 Z"
+         id="path33379" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33393"><path
+         d="m 699.285,1121.9 h 340.391 v 2.3672 H 699.285 Z"
+         id="path33391" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33405"><path
+         d="m 1127.22,1121.9 h 165.98 v 2.3672 h -165.98 z"
+         id="path33403" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33417"><path
+         d="m 701.082,1123.7 h 336.793 v 2.3672 H 701.082 Z"
+         id="path33415" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33429"><path
+         d="m 1130.81,1123.7 h 167.781 v 2.3672 H 1130.81 Z"
+         id="path33427" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33441"><path
+         d="m 702.883,1125.5 h 333.199 v 2.3633 H 702.883 Z"
+         id="path33439" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33453"><path
+         d="m 1132.61,1125.5 h 171.375 v 2.3633 H 1132.61 Z"
+         id="path33451" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33465"><path
+         d="m 704.68,1127.29 h 329.602 v 2.3672 H 704.68 Z"
+         id="path33463" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33477"><path
+         d="m 1136.21,1127.29 h 173.176 v 2.3672 H 1136.21 Z"
+         id="path33475" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33489"><path
+         d="m 706.477,1129.09 h 326.004 v 2.3672 H 706.477 Z"
+         id="path33487" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33501"><path
+         d="m 1138.01,1129.09 h 178.566 v 2.3672 H 1138.01 Z"
+         id="path33499" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33513"><path
+         d="m 708.277,1130.89 h 322.41 v 2.3672 h -322.41 z"
+         id="path33511" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33525"><path
+         d="m 1141.6,1130.89 h 182.164 v 2.3672 H 1141.6 Z"
+         id="path33523" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33537"><path
+         d="m 710.074,1132.68 h 318.813 v 2.3672 H 710.074 Z"
+         id="path33535" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33549"><path
+         d="m 1143.4,1132.68 h 185.758 v 2.3672 H 1143.4 Z"
+         id="path33547" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33561"><path
+         d="m 713.668,1134.48 h 311.621 v 2.3633 H 713.668 Z"
+         id="path33559" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33573"><path
+         d="m 1147,1134.48 h 189.355 v 2.3633 H 1147 Z"
+         id="path33571" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33585"><path
+         d="m 715.469,1136.28 h 308.023 v 2.3633 H 715.469 Z"
+         id="path33583" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33597"><path
+         d="m 1148.79,1136.28 h 194.75 v 2.3633 h -194.75 z"
+         id="path33595" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33609"><path
+         d="m 717.266,1138.08 h 304.43 v 2.3672 h -304.43 z"
+         id="path33607" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33621"><path
+         d="m 1152.39,1138.08 h 198.348 v 2.3672 H 1152.39 Z"
+         id="path33619" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33633"><path
+         d="m 719.063,1139.88 h 300.836 v 2.3633 H 719.063 Z"
+         id="path33631" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33645"><path
+         d="m 1154.19,1139.88 h 205.539 v 2.3633 H 1154.19 Z"
+         id="path33643" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33657"><path
+         d="m 722.66,1141.68 h 293.641 v 2.3633 H 722.66 Z"
+         id="path33655" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33669"><path
+         d="m 1157.79,1141.68 h 209.133 v 2.3633 H 1157.79 Z"
+         id="path33667" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33681"><path
+         d="m 724.457,1143.47 h 290.047 v 2.3633 H 724.457 Z"
+         id="path33679" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33693"><path
+         d="m 1159.58,1143.47 h 216.328 v 2.3633 H 1159.58 Z"
+         id="path33691" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33705"><path
+         d="m 726.258,1145.27 h 286.449 v 2.3633 H 726.258 Z"
+         id="path33703" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33717"><path
+         d="m 1161.38,1145.27 h 223.52 v 2.3633 h -223.52 z"
+         id="path33715" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33729"><path
+         d="m 729.852,1147.07 h 281.059 v 2.3633 H 729.852 Z"
+         id="path33727" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33741"><path
+         d="m 1164.98,1147.07 h 228.914 v 2.3633 H 1164.98 Z"
+         id="path33739" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33753"><path
+         d="m 731.652,1148.87 h 275.66 v 2.3633 h -275.66 z"
+         id="path33751" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33765"><path
+         d="m 1166.78,1148.87 h 237.902 v 2.3633 H 1166.78 Z"
+         id="path33763" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33777"><path
+         d="m 735.246,1150.66 h 268.473 v 2.3633 H 735.246 Z"
+         id="path33775" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33789"><path
+         d="m 1170.37,1150.66 h 246.895 v 2.3633 H 1170.37 Z"
+         id="path33787" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33801"><path
+         d="m 737.043,1152.46 h 264.875 v 2.3633 H 737.043 Z"
+         id="path33799" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33813"><path
+         d="m 1172.17,1152.46 h 257.68 v 2.3633 h -257.68 z"
+         id="path33811" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33825"><path
+         d="m 740.641,1154.26 h 257.684 v 2.3633 H 740.641 Z"
+         id="path33823" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33837"><path
+         d="m 1175.77,1154.26 h 268.469 v 2.3633 H 1175.77 Z"
+         id="path33835" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33849"><path
+         d="m 742.438,1156.06 h 254.086 v 2.3633 H 742.438 Z"
+         id="path33847" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33861"><path
+         d="m 1177.56,1156.06 h 282.852 v 2.3633 H 1177.56 Z"
+         id="path33859" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33873"><path
+         d="M 746.035,1157.86 H 992.93 v 2.3633 H 746.035 Z"
+         id="path33871" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33885"><path
+         d="m 1181.16,1157.86 h 302.629 v 2.3633 H 1181.16 Z"
+         id="path33883" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33897"><path
+         d="m 749.633,1159.65 h 239.703 v 2.3633 H 749.633 Z"
+         id="path33895" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33909"><path
+         d="m 1182.96,1159.65 h 333.199 v 2.3633 H 1182.96 Z"
+         id="path33907" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33921"><path
+         d="m 751.43,1161.45 h 236.105 v 2.3633 H 751.43 Z"
+         id="path33919" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33933"><path
+         d="m 1186.55,1161.45 h 414.105 v 2.3633 H 1186.55 Z"
+         id="path33931" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33945"><path
+         d="m 755.027,1163.25 h 228.914 v 2.3633 H 755.027 Z"
+         id="path33943" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33957"><path
+         d="m 1188.35,1163.25 h 415.906 v 2.3633 H 1188.35 Z"
+         id="path33955" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33969"><path
+         d="m 758.621,1165.05 h 221.723 v 2.3633 H 758.621 Z"
+         id="path33967" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33981"><path
+         d="m 1191.95,1165.05 h 415.906 v 2.3633 H 1191.95 Z"
+         id="path33979" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath33993"><path
+         d="m 762.219,1166.84 h 214.527 v 2.3633 H 762.219 Z"
+         id="path33991" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34005"><path
+         d="m 1193.75,1166.84 h 415.906 v 2.3633 H 1193.75 Z"
+         id="path34003" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34017"><path
+         d="m 767.613,1168.64 h 205.539 v 2.3633 H 767.613 Z"
+         id="path34015" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34029"><path
+         d="m 1197.34,1168.64 h 415.91 v 2.3633 h -415.91 z"
+         id="path34027" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34041"><path
+         d="m 771.207,1170.44 h 198.348 v 2.3633 H 771.207 Z"
+         id="path34039" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34053"><path
+         d="m 1199.14,1170.44 h 417.703 v 2.3633 H 1199.14 Z"
+         id="path34051" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34065"><path
+         d="M 774.805,1172.23 H 964.16 v 2.3633 H 774.805 Z"
+         id="path34063" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34077"><path
+         d="m 1202.73,1172.23 h 415.91 v 2.3633 h -415.91 z"
+         id="path34075" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34089"><path
+         d="m 778.398,1174.03 h 182.164 v 2.3633 H 778.398 Z"
+         id="path34087" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34101"><path
+         d="m 1204.54,1174.03 h 417.703 v 2.3633 H 1204.54 Z"
+         id="path34099" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34113"><path
+         d="m 783.793,1175.83 h 171.375 v 2.3633 H 783.793 Z"
+         id="path34111" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34125"><path
+         d="m 1208.13,1175.83 h 415.91 v 2.3633 h -415.91 z"
+         id="path34123" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34137"><path
+         d="m 789.188,1177.63 h 162.387 v 2.3633 H 789.188 Z"
+         id="path34135" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34149"><path
+         d="m 1209.93,1177.63 h 417.707 v 2.3633 H 1209.93 Z"
+         id="path34147" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34161"><path
+         d="M 794.582,1179.43 H 946.18 v 2.3633 H 794.582 Z"
+         id="path34159" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34173"><path
+         d="m 1213.52,1179.43 h 417.703 v 2.3633 H 1213.52 Z"
+         id="path34171" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34185"><path
+         d="m 799.977,1181.22 h 139.012 v 2.3633 H 799.977 Z"
+         id="path34183" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34197"><path
+         d="m 1215.32,1181.22 h 417.707 v 2.3633 H 1215.32 Z"
+         id="path34195" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34209"><path
+         d="m 807.168,1183.02 h 126.426 v 2.3633 H 807.168 Z"
+         id="path34207" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34221"><path
+         d="m 1218.92,1183.02 h 417.703 v 2.3633 H 1218.92 Z"
+         id="path34219" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34233"><path
+         d="m 814.359,1184.82 h 112.047 v 2.3633 H 814.359 Z"
+         id="path34231" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34245"><path
+         d="m 1220.71,1184.82 h 419.504 v 2.3633 H 1220.71 Z"
+         id="path34243" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34257"><path
+         d="m 821.555,1186.62 h 97.6602 v 2.3633 H 821.555 Z"
+         id="path34255" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34269"><path
+         d="m 1224.31,1186.62 h 417.707 v 2.3633 H 1224.31 Z"
+         id="path34267" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34281"><path
+         d="m 832.34,1188.41 h 76.0859 v 2.3633 H 832.34 Z"
+         id="path34279" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34293"><path
+         d="m 1226.11,1188.41 h 419.504 v 2.3633 H 1226.11 Z"
+         id="path34291" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34305"><path
+         d="m 843.129,1190.21 h 50.9102 v 2.3633 H 843.129 Z"
+         id="path34303" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34317"><path
+         d="m 1229.7,1190.21 h 417.707 v 2.3633 H 1229.7 Z"
+         id="path34315" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34329"><path
+         d="m 1231.5,1192.01 h 419.504 v 2.3672 H 1231.5 Z"
+         id="path34327" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34341"><path
+         d="m 1235.1,1193.81 h 419.504 v 2.3633 H 1235.1 Z"
+         id="path34339" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34353"><path
+         d="m 1236.89,1195.61 h 419.504 v 2.3633 H 1236.89 Z"
+         id="path34351" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34365"><path
+         d="m 1238.7,1197.4 h 421.301 v 2.3633 H 1238.7 Z"
+         id="path34363" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34377"><path
+         d="m 1242.29,1199.2 h 421.301 v 2.3633 H 1242.29 Z"
+         id="path34375" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34389"><path
+         d="m 1244.09,1201 h 421.301 v 2.3672 H 1244.09 Z"
+         id="path34387" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34401"><path
+         d="m 1247.68,1202.8 h 419.504 v 2.3633 H 1247.68 Z"
+         id="path34399" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34413"><path
+         d="m 1249.48,1204.59 h 421.301 v 2.3633 H 1249.48 Z"
+         id="path34411" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34425"><path
+         d="m 1253.08,1206.39 h 419.504 v 2.3672 H 1253.08 Z"
+         id="path34423" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34437"><path
+         d="m 1254.88,1208.19 h 417.703 v 2.3672 H 1254.88 Z"
+         id="path34435" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34449"><path
+         d="m 1258.47,1209.99 h 417.703 v 2.3633 H 1258.47 Z"
+         id="path34447" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34461"><path
+         d="m 1260.27,1211.79 h 415.906 v 2.3672 H 1260.27 Z"
+         id="path34459" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34473"><path
+         d="m 1263.87,1213.58 h 414.109 v 2.3672 H 1263.87 Z"
+         id="path34471" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34485"><path
+         d="m 1265.66,1215.38 h 412.313 v 2.3672 H 1265.66 Z"
+         id="path34483" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34497"><path
+         d="m 1269.26,1217.18 h 410.512 v 2.3672 H 1269.26 Z"
+         id="path34495" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34509"><path
+         d="m 1271.06,1218.98 h 408.715 v 2.3633 H 1271.06 Z"
+         id="path34507" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34521"><path
+         d="m 1274.66,1220.77 h 406.914 v 2.3633 H 1274.66 Z"
+         id="path34519" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34533"><path
+         d="m 1276.45,1222.57 h 405.117 v 2.3672 H 1276.45 Z"
+         id="path34531" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34545"><path
+         d="m 1280.05,1224.37 h 403.32 v 2.3633 h -403.32 z"
+         id="path34543" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34557"><path
+         d="m 1281.85,1226.17 h 401.523 v 2.3633 H 1281.85 Z"
+         id="path34555" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34569"><path
+         d="m 1285.45,1227.96 h 397.926 v 2.3633 H 1285.45 Z"
+         id="path34567" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34581"><path
+         d="m 1287.24,1229.76 h 396.129 v 2.3633 H 1287.24 Z"
+         id="path34579" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34593"><path
+         d="m 1290.84,1231.56 h 394.328 v 2.3633 H 1290.84 Z"
+         id="path34591" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34605"><path
+         d="m 1292.64,1233.36 h 392.531 v 4.1602 H 1292.64 Z"
+         id="path34603" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34617"><path
+         d="m 1290.84,1236.95 h 394.328 v 2.3633 H 1290.84 Z"
+         id="path34615" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34629"><path
+         d="m 1289.04,1238.75 h 396.129 v 4.1602 H 1289.04 Z"
+         id="path34627" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34641"><path
+         d="m 1287.24,1242.35 h 396.129 v 2.3633 H 1287.24 Z"
+         id="path34639" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34653"><path
+         d="m 1285.45,1244.14 h 397.926 v 4.1602 H 1285.45 Z"
+         id="path34651" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34665"><path
+         d="m 1283.64,1247.74 h 399.727 v 2.3633 H 1283.64 Z"
+         id="path34663" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34677"><path
+         d="m 1281.85,1249.54 h 401.523 v 2.3633 H 1281.85 Z"
+         id="path34675" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34689"><path
+         d="m 1280.05,1251.34 h 401.52 v 4.1602 h -401.52 z"
+         id="path34687" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34701"><path
+         d="m 1278.25,1254.93 h 403.32 v 2.3633 h -403.32 z"
+         id="path34699" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34713"><path
+         d="m 1276.45,1256.73 h 403.32 v 2.3633 h -403.32 z"
+         id="path34711" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34725"><path
+         d="m 1274.66,1258.52 h 405.117 v 2.3633 H 1274.66 Z"
+         id="path34723" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34737"><path
+         d="m 1274.66,1260.32 h 403.32 v 2.3633 h -403.32 z"
+         id="path34735" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34749"><path
+         d="m 1272.86,1262.12 h 405.117 v 2.3633 H 1272.86 Z"
+         id="path34747" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34761"><path
+         d="m 1271.06,1263.92 h 405.117 v 2.3633 H 1271.06 Z"
+         id="path34759" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34773"><path
+         d="m 1269.26,1265.71 h 406.914 v 2.3633 H 1269.26 Z"
+         id="path34771" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34785"><path
+         d="m 1267.46,1267.51 h 406.914 v 4.1602 H 1267.46 Z"
+         id="path34783" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34797"><path
+         d="m 1265.66,1271.11 h 408.715 v 2.3633 H 1265.66 Z"
+         id="path34795" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34809"><path
+         d="m 1263.87,1272.91 h 408.715 v 2.3633 H 1263.87 Z"
+         id="path34807" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34821"><path
+         d="m 1262.07,1274.7 h 410.512 v 2.3633 H 1262.07 Z"
+         id="path34819" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34833"><path
+         d="m 1260.27,1276.5 h 410.516 v 4.1641 H 1260.27 Z"
+         id="path34831" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34845"><path
+         d="m 1258.47,1280.1 h 410.512 v 2.3633 H 1258.47 Z"
+         id="path34843" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34857"><path
+         d="m 1256.68,1281.89 h 412.309 v 2.3633 H 1256.68 Z"
+         id="path34855" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34869"><path
+         d="m 1254.88,1283.69 h 412.309 v 2.3633 H 1254.88 Z"
+         id="path34867" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34881"><path
+         d="m 1253.08,1285.49 h 414.109 v 2.3672 H 1253.08 Z"
+         id="path34879" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34893"><path
+         d="m 1251.28,1287.29 h 415.906 v 2.3633 H 1251.28 Z"
+         id="path34891" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34905"><path
+         d="m 1249.48,1289.09 h 415.906 v 2.3672 H 1249.48 Z"
+         id="path34903" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34917"><path
+         d="m 1247.68,1290.88 h 417.707 v 2.3672 H 1247.68 Z"
+         id="path34915" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34929"><path
+         d="m 1245.89,1292.68 h 417.703 v 2.3633 H 1245.89 Z"
+         id="path34927" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34941"><path
+         d="m 1244.09,1294.48 h 419.5 v 2.3633 h -419.5 z"
+         id="path34939" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34953"><path
+         d="m 1244.09,1296.28 h 417.703 v 2.3672 H 1244.09 Z"
+         id="path34951" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34965"><path
+         d="m 1242.29,1298.07 h 419.504 v 2.3672 H 1242.29 Z"
+         id="path34963" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34977"><path
+         d="m 1240.49,1299.87 h 421.301 v 2.3672 H 1240.49 Z"
+         id="path34975" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath34989"><path
+         d="m 1238.7,1301.67 h 421.301 v 2.3633 H 1238.7 Z"
+         id="path34987" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35001"><path
+         d="m 1236.89,1303.47 h 423.102 v 2.3633 H 1236.89 Z"
+         id="path34999" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35013"><path
+         d="m 1235.1,1305.27 h 423.098 v 2.3633 H 1235.1 Z"
+         id="path35011" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35025"><path
+         d="m 1233.3,1307.07 h 424.898 v 2.3633 H 1233.3 Z"
+         id="path35023" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35037"><path
+         d="m 1231.5,1308.86 h 424.895 v 2.3633 H 1231.5 Z"
+         id="path35035" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35049"><path
+         d="m 1229.7,1310.66 h 426.695 v 2.3633 H 1229.7 Z"
+         id="path35047" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35061"><path
+         d="m 1227.91,1312.46 h 426.695 v 2.3633 H 1227.91 Z"
+         id="path35059" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35073"><path
+         d="m 1226.11,1314.25 h 428.492 v 2.3633 H 1226.11 Z"
+         id="path35071" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35085"><path
+         d="m 1224.31,1316.05 h 430.293 v 2.3633 H 1224.31 Z"
+         id="path35083" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35097"><path
+         d="m 1222.51,1317.85 h 430.293 v 2.3633 H 1222.51 Z"
+         id="path35095" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35109"><path
+         d="m 1220.71,1319.65 h 432.086 v 2.3633 H 1220.71 Z"
+         id="path35107" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35121"><path
+         d="m 1218.92,1321.45 h 432.086 v 2.3633 H 1218.92 Z"
+         id="path35119" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35133"><path
+         d="m 1217.12,1323.24 h 433.887 v 2.3633 H 1217.12 Z"
+         id="path35131" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35145"><path
+         d="m 1213.52,1325.04 h 435.684 v 2.3633 H 1213.52 Z"
+         id="path35143" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35157"><path
+         d="m 1211.73,1326.84 h 437.48 v 2.3633 h -437.48 z"
+         id="path35155" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35169"><path
+         d="m 1209.93,1328.64 h 437.484 v 2.3633 H 1209.93 Z"
+         id="path35167" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35181"><path
+         d="m 1208.13,1330.43 h 439.281 v 2.3633 H 1208.13 Z"
+         id="path35179" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35193"><path
+         d="m 1206.33,1332.23 h 441.078 v 2.3633 H 1206.33 Z"
+         id="path35191" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35205"><path
+         d="m 1204.54,1334.03 h 441.074 v 2.3633 H 1204.54 Z"
+         id="path35203" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35217"><path
+         d="m 1200.94,1335.83 h 444.672 v 2.3633 H 1200.94 Z"
+         id="path35215" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35229"><path
+         d="m 1199.14,1337.63 h 444.672 v 2.3633 H 1199.14 Z"
+         id="path35227" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35241"><path
+         d="m 1197.34,1339.42 h 446.473 v 2.3633 H 1197.34 Z"
+         id="path35239" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35253"><path
+         d="m 1195.54,1341.22 h 446.473 v 2.3633 H 1195.54 Z"
+         id="path35251" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35265"><path
+         d="m 1193.75,1343.02 h 448.27 v 2.3633 h -448.27 z"
+         id="path35263" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35277"><path
+         d="m 1191.95,1344.82 h 450.066 v 2.3633 H 1191.95 Z"
+         id="path35275" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35289"><path
+         d="m 1188.35,1346.61 h 451.863 v 2.3633 H 1188.35 Z"
+         id="path35287" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35301"><path
+         d="m 1186.55,1348.41 h 453.66 v 2.3633 h -453.66 z"
+         id="path35299" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35313"><path
+         d="m 1184.76,1350.21 h 453.66 v 2.3633 h -453.66 z"
+         id="path35311" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35325"><path
+         d="m 1181.16,1352 h 322.41 v 2.3633 h -322.41 z"
+         id="path35323" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35337"><path
+         d="m 1526.38,1352 h 16.75 v 2.3633 h -16.75 z"
+         id="path35335" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35349"><path
+         d="m 1565.94,1352 h 72.4844 v 2.3633 H 1565.94 Z"
+         id="path35347" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35361"><path
+         d="m 1179.36,1353.8 h 318.813 v 2.3633 H 1179.36 Z"
+         id="path35359" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35373"><path
+         d="m 1533.57,1353.8 h 4.1641 v 2.3633 h -4.1641 z"
+         id="path35371" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35385"><path
+         d="m 1571.33,1353.8 h 65.293 v 2.3633 h -65.293 z"
+         id="path35383" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35397"><path
+         d="m 1177.56,1355.6 h 317.016 v 2.3633 H 1177.56 Z"
+         id="path35395" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35409"><path
+         d="m 1576.73,1355.6 h 59.8984 v 2.3633 H 1576.73 Z"
+         id="path35407" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35421"><path
+         d="m 1173.97,1357.4 h 318.813 v 2.3633 H 1173.97 Z"
+         id="path35419" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35433"><path
+         d="m 1580.32,1357.4 h 54.5078 v 2.3633 H 1580.32 Z"
+         id="path35431" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35445"><path
+         d="m 1172.17,1359.2 h 317.016 v 2.3672 H 1172.17 Z"
+         id="path35443" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35457"><path
+         d="m 1585.71,1359.2 h 47.3164 v 2.3672 H 1585.71 Z"
+         id="path35455" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35469"><path
+         d="m 1170.37,1360.99 h 317.016 v 2.3672 H 1170.37 Z"
+         id="path35467" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35481"><path
+         d="m 1591.11,1360.99 h 40.125 v 2.3672 h -40.125 z"
+         id="path35479" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35493"><path
+         d="m 1166.78,1362.79 h 318.813 v 2.3633 H 1166.78 Z"
+         id="path35491" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35505"><path
+         d="m 1594.71,1362.79 h 34.7266 v 2.3633 H 1594.71 Z"
+         id="path35503" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35517"><path
+         d="m 1164.98,1364.59 h 318.813 v 2.3633 H 1164.98 Z"
+         id="path35515" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35529"><path
+         d="m 1600.1,1364.59 h 27.5391 v 2.3633 H 1600.1 Z"
+         id="path35527" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35541"><path
+         d="m 1161.38,1366.39 h 320.609 v 2.3633 H 1161.38 Z"
+         id="path35539" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35553"><path
+         d="m 1603.7,1366.39 h 22.1445 v 2.3633 H 1603.7 Z"
+         id="path35551" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35565"><path
+         d="m 1159.58,1368.18 h 320.609 v 2.3672 H 1159.58 Z"
+         id="path35563" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35577"><path
+         d="m 1609.09,1368.18 h 14.9492 v 2.3672 H 1609.09 Z"
+         id="path35575" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35589"><path
+         d="m 1157.79,1369.98 h 320.609 v 2.3672 H 1157.79 Z"
+         id="path35587" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35601"><path
+         d="m 1614.48,1369.98 h 5.9609 v 2.3672 h -5.9609 z"
+         id="path35599" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35613"><path
+         d="m 1154.19,1371.78 h 322.41 v 2.3633 h -322.41 z"
+         id="path35611" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35625"><path
+         d="m 1152.39,1373.58 h 324.207 v 2.3672 H 1152.39 Z"
+         id="path35623" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35637"><path
+         d="m 1148.79,1375.38 h 326.004 v 2.3672 H 1148.79 Z"
+         id="path35635" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35649"><path
+         d="m 1147,1377.18 h 326.004 v 2.3633 H 1147 Z"
+         id="path35647" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35661"><path
+         d="m 1143.4,1378.97 h 327.805 v 2.3633 H 1143.4 Z"
+         id="path35659" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35673"><path
+         d="m 1139.8,1380.77 h 329.602 v 2.3672 H 1139.8 Z"
+         id="path35671" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35685"><path
+         d="m 1138.01,1382.57 h 329.602 v 2.3672 H 1138.01 Z"
+         id="path35683" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35697"><path
+         d="m 1134.41,1384.36 h 331.398 v 2.3672 H 1134.41 Z"
+         id="path35695" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35709"><path
+         d="m 1130.81,1386.16 h 333.199 v 2.3633 H 1130.81 Z"
+         id="path35707" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35721"><path
+         d="m 1129.02,1387.96 h 333.199 v 2.3633 H 1129.02 Z"
+         id="path35719" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35733"><path
+         d="m 1125.42,1389.76 h 334.996 v 2.3633 H 1125.42 Z"
+         id="path35731" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35745"><path
+         d="m 1121.82,1391.56 h 336.793 v 2.3633 H 1121.82 Z"
+         id="path35743" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35757"><path
+         d="m 1120.03,1393.36 h 336.793 v 2.3633 H 1120.03 Z"
+         id="path35755" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35769"><path
+         d="m 1118.23,1395.15 h 336.793 v 2.3633 H 1118.23 Z"
+         id="path35767" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35781"><path
+         d="m 1120.03,1396.95 h 333.199 v 2.3633 H 1120.03 Z"
+         id="path35779" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35793"><path
+         d="m 1121.82,1398.75 h 329.602 v 2.3633 H 1121.82 Z"
+         id="path35791" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35805"><path
+         d="m 1123.62,1400.55 h 327.805 v 2.3633 H 1123.62 Z"
+         id="path35803" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35817"><path
+         d="m 1123.62,1402.34 h 326.004 v 2.3633 H 1123.62 Z"
+         id="path35815" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35829"><path
+         d="m 1125.42,1404.14 h 322.41 v 2.3633 h -322.41 z"
+         id="path35827" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35841"><path
+         d="m 1127.22,1405.94 h 318.813 v 2.3633 H 1127.22 Z"
+         id="path35839" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35853"><path
+         d="m 1129.02,1407.73 h 315.219 v 2.3633 H 1129.02 Z"
+         id="path35851" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35865"><path
+         d="m 1130.81,1409.54 h 311.621 v 2.3633 H 1130.81 Z"
+         id="path35863" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35877"><path
+         d="m 1130.81,1411.33 h 309.824 v 2.3633 H 1130.81 Z"
+         id="path35875" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35889"><path
+         d="m 1132.61,1413.13 h 306.227 v 2.3633 H 1132.61 Z"
+         id="path35887" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35901"><path
+         d="m 1134.41,1414.93 h 304.43 v 2.3633 h -304.43 z"
+         id="path35899" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35913"><path
+         d="m 1136.21,1416.72 h 300.832 v 4.1602 H 1136.21 Z"
+         id="path35911" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35925"><path
+         d="m 1138.01,1420.32 h 297.234 v 2.3633 H 1138.01 Z"
+         id="path35923" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35937"><path
+         d="m 1139.8,1422.12 h 295.438 v 2.3633 H 1139.8 Z"
+         id="path35935" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35949"><path
+         d="m 1141.6,1423.91 h 291.844 v 2.3633 H 1141.6 Z"
+         id="path35947" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35961"><path
+         d="m 1143.4,1425.71 h 290.043 v 4.1602 H 1143.4 Z"
+         id="path35959" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35973"><path
+         d="m 1145.2,1429.31 h 286.449 v 2.3633 H 1145.2 Z"
+         id="path35971" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35985"><path
+         d="m 1147,1431.11 h 284.648 v 2.3633 H 1147 Z"
+         id="path35983" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath35997"><path
+         d="m 1148.79,1432.9 h 282.852 v 2.3633 H 1148.79 Z"
+         id="path35995" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36009"><path
+         d="m 1150.59,1434.7 h 281.055 v 2.3633 H 1150.59 Z"
+         id="path36007" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36021"><path
+         d="m 1152.39,1436.5 h 279.254 v 4.1641 H 1152.39 Z"
+         id="path36019" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36033"><path
+         d="m 1154.19,1440.09 h 277.457 v 2.3633 H 1154.19 Z"
+         id="path36031" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36045"><path
+         d="m 1155.99,1441.89 h 275.66 v 2.3633 h -275.66 z"
+         id="path36043" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36057"><path
+         d="m 1157.79,1443.69 h 273.859 v 2.3672 H 1157.79 Z"
+         id="path36055" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36069"><path
+         d="m 1159.58,1445.48 h 272.063 v 2.3672 H 1159.58 Z"
+         id="path36067" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36081"><path
+         d="m 1161.38,1447.29 h 270.266 v 2.3633 H 1161.38 Z"
+         id="path36079" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36093"><path
+         d="m 1163.18,1449.08 h 270.266 v 2.3633 H 1163.18 Z"
+         id="path36091" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36105"><path
+         d="m 1164.98,1450.88 h 268.469 v 4.1641 H 1164.98 Z"
+         id="path36103" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36117"><path
+         d="m 1166.78,1454.47 h 268.469 v 2.3672 H 1166.78 Z"
+         id="path36115" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36129"><path
+         d="m 1168.57,1456.27 h 266.668 v 2.3633 H 1168.57 Z"
+         id="path36127" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36141"><path
+         d="m 1170.37,1458.07 h 266.668 v 2.3672 H 1170.37 Z"
+         id="path36139" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36153"><path
+         d="m 1172.17,1459.87 h 264.871 v 2.3672 H 1172.17 Z"
+         id="path36151" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36165"><path
+         d="m 1173.97,1461.67 h 264.871 v 2.3633 H 1173.97 Z"
+         id="path36163" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36177"><path
+         d="m 1175.77,1463.46 h 263.074 v 2.3633 H 1175.77 Z"
+         id="path36175" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36189"><path
+         d="m 1177.56,1465.26 h 263.074 v 2.3672 H 1177.56 Z"
+         id="path36187" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36201"><path
+         d="m 1179.36,1467.06 h 263.074 v 4.1641 H 1179.36 Z"
+         id="path36199" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36213"><path
+         d="m 1181.16,1470.66 h 263.074 v 2.3633 H 1181.16 Z"
+         id="path36211" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36225"><path
+         d="m 1182.96,1472.45 h 263.074 v 2.3633 H 1182.96 Z"
+         id="path36223" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36237"><path
+         d="m 1184.76,1474.25 h 261.273 v 2.3633 H 1184.76 Z"
+         id="path36235" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36249"><path
+         d="m 1186.55,1476.05 h 261.273 v 2.3633 H 1186.55 Z"
+         id="path36247" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36261"><path
+         d="m 1188.35,1477.85 h 261.273 v 2.3633 H 1188.35 Z"
+         id="path36259" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36273"><path
+         d="m 1190.15,1479.64 h 259.48 v 2.3633 h -259.48 z"
+         id="path36271" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36285"><path
+         d="m 1191.95,1481.44 h 259.477 v 2.3633 H 1191.95 Z"
+         id="path36283" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36297"><path
+         d="m 1193.75,1483.24 h 259.477 v 2.3633 H 1193.75 Z"
+         id="path36295" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36309"><path
+         d="m 1195.54,1485.04 h 257.68 v 2.3633 h -257.68 z"
+         id="path36307" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36321"><path
+         d="m 1197.34,1486.84 h 257.684 v 2.3633 H 1197.34 Z"
+         id="path36319" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36333"><path
+         d="m 1199.14,1488.63 h 255.879 v 2.3633 H 1199.14 Z"
+         id="path36331" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36345"><path
+         d="m 1200.94,1490.43 h 255.879 v 2.3633 H 1200.94 Z"
+         id="path36343" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36357"><path
+         d="m 1202.73,1492.23 h 255.883 v 2.3633 H 1202.73 Z"
+         id="path36355" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36369"><path
+         d="m 1204.54,1494.03 h 254.082 v 2.3633 H 1204.54 Z"
+         id="path36367" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36381"><path
+         d="m 1206.33,1495.82 h 254.082 v 2.3633 H 1206.33 Z"
+         id="path36379" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36393"><path
+         d="m 1208.13,1497.62 h 254.086 v 2.3633 H 1208.13 Z"
+         id="path36391" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36405"><path
+         d="m 1209.93,1499.42 h 252.289 v 2.3633 H 1209.93 Z"
+         id="path36403" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36417"><path
+         d="m 1211.73,1501.21 h 252.285 v 2.3633 H 1211.73 Z"
+         id="path36415" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36429"><path
+         d="m 1213.52,1503.02 h 252.285 v 2.3633 H 1213.52 Z"
+         id="path36427" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36441"><path
+         d="m 1215.32,1504.81 h 250.488 v 2.3633 H 1215.32 Z"
+         id="path36439" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36453"><path
+         d="m 1218.92,1506.61 h 248.688 v 2.3633 H 1218.92 Z"
+         id="path36451" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36465"><path
+         d="m 1220.71,1508.41 h 248.691 v 2.3633 H 1220.71 Z"
+         id="path36463" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36477"><path
+         d="m 1222.51,1510.2 h 246.895 v 2.3633 H 1222.51 Z"
+         id="path36475" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36489"><path
+         d="m 1224.31,1512 h 246.895 v 2.3633 H 1224.31 Z"
+         id="path36487" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36501"><path
+         d="m 1226.11,1513.8 h 246.895 v 2.3633 H 1226.11 Z"
+         id="path36499" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36513"><path
+         d="m 1227.91,1515.6 h 245.098 v 2.3633 H 1227.91 Z"
+         id="path36511" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36525"><path
+         d="m 1229.7,1517.39 h 245.098 v 2.3633 H 1229.7 Z"
+         id="path36523" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36537"><path
+         d="m 1231.5,1519.19 h 243.297 v 2.3633 H 1231.5 Z"
+         id="path36535" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36549"><path
+         d="m 1233.3,1520.99 h 243.297 v 2.3633 H 1233.3 Z"
+         id="path36547" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36561"><path
+         d="m 1236.89,1522.79 h 239.703 v 2.3633 H 1236.89 Z"
+         id="path36559" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36573"><path
+         d="m 1238.7,1524.59 h 239.703 v 2.3633 H 1238.7 Z"
+         id="path36571" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36585"><path
+         d="m 1240.49,1526.38 h 239.703 v 2.3633 H 1240.49 Z"
+         id="path36583" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36597"><path
+         d="m 1242.29,1528.18 h 237.902 v 2.3672 H 1242.29 Z"
+         id="path36595" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36609"><path
+         d="m 1244.09,1529.98 h 236.105 v 2.3672 H 1244.09 Z"
+         id="path36607" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36621"><path
+         d="m 1245.89,1531.78 h 234.309 v 2.3633 H 1245.89 Z"
+         id="path36619" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36633"><path
+         d="m 1247.68,1533.57 h 234.309 v 2.3633 H 1247.68 Z"
+         id="path36631" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36645"><path
+         d="m 1251.28,1535.37 h 230.711 v 2.3633 H 1251.28 Z"
+         id="path36643" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36657"><path
+         d="m 1253.08,1537.17 h 228.914 v 2.3672 H 1253.08 Z"
+         id="path36655" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36669"><path
+         d="m 1254.88,1538.96 h 227.117 v 2.3672 H 1254.88 Z"
+         id="path36667" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36681"><path
+         d="m 1256.68,1540.77 h 225.316 v 2.3672 H 1256.68 Z"
+         id="path36679" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36693"><path
+         d="m 1260.27,1542.56 h 221.723 v 2.3672 H 1260.27 Z"
+         id="path36691" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36705"><path
+         d="m 1262.07,1544.36 h 219.922 v 2.3672 H 1262.07 Z"
+         id="path36703" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36717"><path
+         d="m 1263.87,1546.16 h 218.125 v 2.3633 H 1263.87 Z"
+         id="path36715" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36729"><path
+         d="m 1265.66,1547.96 h 216.328 v 2.3633 H 1265.66 Z"
+         id="path36727" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36741"><path
+         d="m 1267.46,1549.75 h 214.527 v 2.3672 H 1267.46 Z"
+         id="path36739" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36753"><path
+         d="m 1271.06,1551.55 h 210.934 v 2.3672 H 1271.06 Z"
+         id="path36751" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36765"><path
+         d="m 1272.86,1553.35 h 207.336 v 2.3633 H 1272.86 Z"
+         id="path36763" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36777"><path
+         d="m 1274.66,1555.15 h 205.539 v 2.3633 H 1274.66 Z"
+         id="path36775" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36789"><path
+         d="m 1276.45,1556.95 h 203.742 v 2.3633 H 1276.45 Z"
+         id="path36787" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36801"><path
+         d="m 1280.05,1558.74 h 198.348 v 2.3633 H 1280.05 Z"
+         id="path36799" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36813"><path
+         d="m 1281.85,1560.54 h 196.551 v 2.3633 H 1281.85 Z"
+         id="path36811" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36825"><path
+         d="m 1283.64,1562.34 h 192.953 v 2.3633 H 1283.64 Z"
+         id="path36823" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36837"><path
+         d="m 1287.24,1564.14 h 189.355 v 2.3633 H 1287.24 Z"
+         id="path36835" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36849"><path
+         d="m 1289.04,1565.93 h 185.762 v 2.3633 H 1289.04 Z"
+         id="path36847" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36861"><path
+         d="m 1290.84,1567.73 h 183.961 v 2.3633 H 1290.84 Z"
+         id="path36859" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36873"><path
+         d="M 1294.43,1569.53 H 1473 v 2.3633 h -178.57 z"
+         id="path36871" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36885"><path
+         d="m 1296.23,1571.33 h 174.973 v 2.3633 H 1296.23 Z"
+         id="path36883" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36897"><path
+         d="m 1299.83,1573.13 h 169.582 v 2.3633 H 1299.83 Z"
+         id="path36895" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36909"><path
+         d="m 1301.63,1574.92 h 165.984 v 2.3633 H 1301.63 Z"
+         id="path36907" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36921"><path
+         d="m 1303.43,1576.72 h 162.387 v 2.3633 H 1303.43 Z"
+         id="path36919" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36933"><path
+         d="m 1307.02,1578.52 h 156.996 v 2.3633 H 1307.02 Z"
+         id="path36931" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36945"><path
+         d="m 1308.82,1580.32 h 153.398 v 2.3633 H 1308.82 Z"
+         id="path36943" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36957"><path
+         d="m 1312.41,1582.11 h 146.207 v 2.3633 H 1312.41 Z"
+         id="path36955" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36969"><path
+         d="m 1314.21,1583.91 h 142.609 v 2.3633 H 1314.21 Z"
+         id="path36967" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36981"><path
+         d="m 1316.01,1585.71 h 139.016 v 2.3633 H 1316.01 Z"
+         id="path36979" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath36993"><path
+         d="m 1319.61,1587.51 h 133.621 v 2.3633 H 1319.61 Z"
+         id="path36991" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37005"><path
+         d="m 1321.41,1589.3 h 130.023 v 2.3633 H 1321.41 Z"
+         id="path37003" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37017"><path
+         d="m 1325,1591.1 h 124.629 v 2.3633 H 1325 Z"
+         id="path37015" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37029"><path
+         d="m 1328.6,1592.9 h 117.438 v 2.3633 H 1328.6 Z"
+         id="path37027" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37041"><path
+         d="m 1330.39,1594.7 h 113.84 v 2.3633 h -113.84 z"
+         id="path37039" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37053"><path
+         d="m 1333.99,1596.49 h 108.445 v 2.3672 H 1333.99 Z"
+         id="path37051" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37065"><path
+         d="m 1335.79,1598.29 h 104.852 v 2.3633 H 1335.79 Z"
+         id="path37063" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37077"><path
+         d="m 1339.39,1600.09 h 99.457 v 2.3633 h -99.457 z"
+         id="path37075" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37089"><path
+         d="m 1341.18,1601.89 h 95.8594 v 2.3633 H 1341.18 Z"
+         id="path37087" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37101"><path
+         d="m 1344.78,1603.68 h 88.668 v 2.3633 h -88.668 z"
+         id="path37099" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37113"><path
+         d="m 1348.38,1605.48 h 83.2734 v 2.3672 H 1348.38 Z"
+         id="path37111" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37125"><path
+         d="m 1350.18,1607.28 h 79.6758 v 2.3633 H 1350.18 Z"
+         id="path37123" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37137"><path
+         d="m 1353.77,1609.08 h 74.2852 v 2.3633 H 1353.77 Z"
+         id="path37135" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37149"><path
+         d="m 1355.57,1610.88 h 70.6875 v 2.3672 H 1355.57 Z"
+         id="path37147" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37161"><path
+         d="m 1359.16,1612.67 h 65.293 v 2.3672 h -65.293 z"
+         id="path37159" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37173"><path
+         d="m 1362.76,1614.47 h 58.1016 v 2.3633 H 1362.76 Z"
+         id="path37171" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37185"><path
+         d="m 1366.36,1616.27 h 52.707 v 2.3633 h -52.707 z"
+         id="path37183" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37197"><path
+         d="m 1368.16,1618.07 h 49.1094 v 2.3633 H 1368.16 Z"
+         id="path37195" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37209"><path
+         d="m 1371.75,1619.86 h 43.7188 v 2.3672 H 1371.75 Z"
+         id="path37207" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37221"><path
+         d="m 1375.35,1621.66 h 38.3242 v 2.3672 H 1375.35 Z"
+         id="path37219" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37233"><path
+         d="m 1378.94,1623.46 h 32.9336 v 2.3633 H 1378.94 Z"
+         id="path37231" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37245"><path
+         d="m 1382.54,1625.26 h 25.7383 v 2.3672 H 1382.54 Z"
+         id="path37243" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37257"><path
+         d="m 1384.34,1627.05 h 22.1445 v 2.3672 H 1384.34 Z"
+         id="path37255" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37269"><path
+         d="m 1387.93,1628.86 h 16.7461 v 2.3633 H 1387.93 Z"
+         id="path37267" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37281"><path
+         d="m 1391.53,1630.65 h 11.3555 v 2.3633 H 1391.53 Z"
+         id="path37279" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37293"><path
+         d="m 1395.13,1632.45 h 5.9609 v 2.3633 h -5.9609 z"
+         id="path37291" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37307"><path
+         d="m 184.262,1132.73 h 7.75391 v 2.3672 H 184.262 Z"
+         id="path37305" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37319"><path
+         d="m 184.262,1134.53 h 14.9453 v 2.3672 H 184.262 Z"
+         id="path37317" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37331"><path
+         d="m 184.262,1136.33 h 20.3398 v 2.3672 H 184.262 Z"
+         id="path37329" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37343"><path
+         d="m 184.262,1138.13 h 27.5273 v 2.3672 H 184.262 Z"
+         id="path37341" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37355"><path
+         d="m 186.063,1139.93 h 31.1211 v 2.3672 H 186.063 Z"
+         id="path37353" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37367"><path
+         d="m 186.063,1141.73 h 38.3086 v 2.3672 H 186.063 Z"
+         id="path37365" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37379"><path
+         d="m 186.063,1143.54 h 43.6992 v 2.3672 H 186.063 Z"
+         id="path37377" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37391"><path
+         d="m 186.063,1145.33 h 50.8906 v 2.3672 H 186.063 Z"
+         id="path37389" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37403"><path
+         d="m 186.063,1147.13 h 58.082 v 2.3672 h -58.082 z"
+         id="path37401" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37415"><path
+         d="m 186.063,1148.94 h 65.2695 v 2.3672 H 186.063 Z"
+         id="path37413" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37427"><path
+         d="m 186.063,1150.74 h 72.457 v 2.3672 h -72.457 z"
+         id="path37425" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37439"><path
+         d="m 187.859,1152.54 h 77.8516 v 2.3672 H 187.859 Z"
+         id="path37437" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37451"><path
+         d="m 187.859,1154.34 h 85.0391 v 2.3672 H 187.859 Z"
+         id="path37449" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37463"><path
+         d="m 187.859,1156.14 h 92.2305 v 2.3672 H 187.859 Z"
+         id="path37461" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37475"><path
+         d="m 187.859,1157.94 h 99.418 v 2.3633 h -99.418 z"
+         id="path37473" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37487"><path
+         d="m 187.859,1159.74 h 106.609 v 2.3672 H 187.859 Z"
+         id="path37485" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37499"><path
+         d="m 187.859,1161.54 h 113.797 v 2.3672 H 187.859 Z"
+         id="path37497" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37511"><path
+         d="m 187.859,1163.34 h 120.984 v 2.3672 H 187.859 Z"
+         id="path37509" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37523"><path
+         d="m 189.656,1165.14 h 126.379 v 2.3672 H 189.656 Z"
+         id="path37521" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37535"><path
+         d="m 189.656,1166.94 h 135.363 v 2.3672 H 189.656 Z"
+         id="path37533" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37547"><path
+         d="m 189.656,1168.74 h 142.555 v 2.3672 H 189.656 Z"
+         id="path37545" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37559"><path
+         d="m 189.656,1170.54 h 149.742 v 2.3672 H 189.656 Z"
+         id="path37557" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37571"><path
+         d="M 189.656,1172.34 H 346.59 v 2.3672 H 189.656 Z"
+         id="path37569" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37583"><path
+         d="m 189.656,1174.14 h 165.918 v 2.3672 H 189.656 Z"
+         id="path37581" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37595"><path
+         d="m 189.656,1175.95 h 173.109 v 2.3672 H 189.656 Z"
+         id="path37593" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37607"><path
+         d="M 189.656,1177.75 H 371.75 v 2.3672 H 189.656 Z"
+         id="path37605" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37619"><path
+         d="m 189.656,1179.55 h 191.082 v 2.3672 H 189.656 Z"
+         id="path37617" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37631"><path
+         d="m 189.656,1181.35 h 198.273 v 2.3672 H 189.656 Z"
+         id="path37629" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37643"><path
+         d="m 187.859,1183.15 h 209.055 v 2.3672 H 187.859 Z"
+         id="path37641" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37655"><path
+         d="m 187.859,1184.95 h 218.039 v 2.3672 H 187.859 Z"
+         id="path37653" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37667"><path
+         d="m 187.859,1186.75 h 225.23 v 2.3633 h -225.23 z"
+         id="path37665" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37679"><path
+         d="m 186.063,1188.55 h 232.418 v 2.3672 H 186.063 Z"
+         id="path37677" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath37691"><path
+         d="m 186.063,1190.35 h 234.219 v 4.168 H 186.063 Z"
+         id="path37689" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
... 14700 lines suppressed ...