Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • add-types
  • ci-run-on-release
  • dispatch-check
  • main
  • v0.1.0
  • v0.2.0
  • v0.3.0
  • v0.3.1
  • v0.4.0
  • v0.5.0
  • v0.5.1
  • v1.0.0
12 results

Target

Select target project
  • wotsubo/PSBoardDataBase
1 result
Select Git revision
  • add-types
  • ci-run-on-release
  • dispatch-check
  • main
  • v0.1.0
  • v0.2.0
  • v0.3.0
  • v0.3.1
  • v0.4.0
  • v0.5.0
  • v0.5.1
  • v1.0.0
12 results
Show changes
Commits on Source (78)
Showing
with 5420 additions and 41 deletions
variables:
CI_JULIA_CACHE_DIR: ${CI_PROJECT_DIR}/julia_pkg
JULIA_DEPOT_PATH: ${CI_JULIA_CACHE_DIR}
cache:
key:
files:
- Project.toml
- docs/Project.toml
prefix: ${CI_JOB_NAME}
paths:
- ${CI_JULIA_CACHE_DIR}
.script:
script:
- |
......@@ -21,28 +32,34 @@ Julia 1.10:
extends:
- .script
- .coverage
Julia 1.11:
image: julia:1.11
extends:
- .script
- .coverage
pages:
image: julia:1.10
image: julia:1.11
stage: deploy
script:
- |
julia --project=docs -e '
using Pkg
@info "Pkg status before dev" Pkg.status() pwd()
Pkg.develop(PackageSpec(path=pwd()))
Pkg.instantiate()
using Documenter: doctest
using PSBoardDataBase
doctest(PSBoardDataBase)
@info "Pkg status after dev" Pkg.status()
include("docs/make.jl")'
- mkdir -p public
- mv docs/build public/dev
- ls docs/src -R
- mv docs/src/assets/*.html public
artifacts:
paths:
- public
only:
- main
CompatHelper:
image: julia:1.10 # Set to the Julia version you want to use
image: julia:1.11 # Set to the Julia version you want to use
stage: test # You can place this in any stage that makes sense for your setup
only:
- schedules
......
......@@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.2.0] - 2024-10-23
- Julia v1.11 was released and v1.10 is new LTS
- This package will support both of them
### Added
- Add `versions` table to store version information of converter(this software)
- Add `skew` column to `qaqc_positions` table
- Add `DownloadCSVs` module and functions which downloads the latest CSVs from Google sheets
- Add `ClockParser` module and `get_skew` function
- Add `lvds_tx_skew` column to `qaqc_single_run_result` table and related functions in `import_data.jl`
- Add example Pluto notebook which plots clock skew histogram
- Add `count_riseup` to count rise up in clock result
- Add example app using Pluto
- Add `DispatchChecker` module
- Add `is_dispatchable` which checks given PSBoard is ready to dispatch
- Add `interactive_dispatch_checker` which provide interactive session for QAQC
### Changed
- Set download functions in `DownloadCSVs` as default CSV locations in `create_database_from_exported_csvs`
- Replaced CSV files used in test to newly add `DownloadCSVs` functions
- `create_database_from_exported_csvs` now requires `slavelog_dir` to get skew from slave logs
- CI runs on v1.10 and v1.11
### Deleted
- CSV files manually exported from Google Sheets
## [0.1.0]
### Added
......@@ -15,5 +45,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Docs on the database and example of querying the database.
- Docs on the internal (Julia implementation)
[unreleased]: https://gitlab.cern.ch/wotsubo/PSBoardDataBase/~/compare/v0.1.0...main
[unreleased]: https://gitlab.cern.ch/wotsubo/PSBoardDataBase/-/compare/v0.2.0...main
[0.2.0]: https://gitlab.cern.ch/wotsubo/PSBoardDataBase/~/compare/v0.1.0...v0.2.0
[0.1.0]: https://gitlab.cern.ch/wotsubo/PSBoardDataBase/~/tags/v0.1.0
name = "PSBoardDataBase"
uuid = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5"
authors = ["Wataru Otsubo <wotsubo@icepp.s.u-tokyo.ac.jp>"]
version = "0.1.0"
version = "0.2.0"
[deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
......@@ -9,6 +9,8 @@ DBInterface = "a10d1c49-ce27-4219-8d33-6db1a4562965"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
SQLite = "0aa819cd-b072-5ff4-a722-6bc24af294d9"
Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
......@@ -23,6 +25,7 @@ CSV = "0.10"
DBInterface = "2"
DataFrames = "1"
Documenter = "1"
Downloads = "1"
SQLite = "1"
Tables = "1"
......
......@@ -8,3 +8,7 @@ PS Boardに関する(特にQAQCの結果に関する)データベース。
[ドキュメント(主にデータベースを扱うパッケージに関する)](http://psboard-database.docs.cern.ch/dev/)
PS Board QAQCに関しては[こちら](https://gitlab.cern.ch/dhashimo/PS_Board_QAQC)
解析結果の例
- 結果一覧閲覧用簡易アプリケーション: https://psboard-database.docs.cern.ch/get_results.html
- skewを複数回測定した個体に関する統計調査: https://psboard-database.docs.cern.ch/skew_stats.html
......@@ -2,7 +2,7 @@
julia_version = "1.10.5"
manifest_format = "2.0"
project_hash = "ee8312616d887d85f460636f9710488be4490a26"
project_hash = "7a44705ce6faa370eeecb49dce927460b0d7fd20"
[[deps.ANSIColoredPrinters]]
git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c"
......@@ -67,10 +67,10 @@ uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.16.0"
[[deps.DataFrames]]
deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8"
deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6"
uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
version = "1.6.1"
version = "1.7.0"
[[deps.DataStructures]]
deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
......@@ -154,9 +154,9 @@ version = "1.3.1"
[[deps.Git_jll]]
deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"]
git-tree-sha1 = "d18fb8a1f3609361ebda9bf029b60fd0f120c809"
git-tree-sha1 = "ea372033d09e4552a04fd38361cd019f9003f4f4"
uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb"
version = "2.44.0+2"
version = "2.46.2+0"
[[deps.IOCapture]]
deps = ["Logging", "Random"]
......@@ -292,9 +292,9 @@ version = "0.3.23+4"
[[deps.OpenSSL_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1b35263570443fdd9e76c76b7062116e2f374ab8"
git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10"
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
version = "3.0.15+0"
version = "3.0.15+1"
[[deps.OrderedCollections]]
git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5"
......@@ -307,8 +307,8 @@ uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
version = "10.42.0+1"
[[deps.PSBoardDataBase]]
deps = ["CSV", "DBInterface", "DataFrames", "Dates", "Documenter", "SQLite", "Tables"]
path = ".."
deps = ["CSV", "DBInterface", "DataFrames", "Dates", "Documenter", "Downloads", "SQLite", "Tables"]
path = "/home/qwjyh/Documents/school/lab/PSBoard_QAQC/PSBoardDataBase"
uuid = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5"
version = "0.1.0"
weakdeps = ["InteractiveUtils"]
......@@ -347,9 +347,9 @@ version = "1.4.3"
[[deps.PrettyTables]]
deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"]
git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7"
git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34"
uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
version = "2.3.2"
version = "2.4.0"
[[deps.Printf]]
deps = ["Unicode"]
......@@ -420,9 +420,9 @@ version = "1.10.0"
[[deps.StringManipulation]]
deps = ["PrecompileTools"]
git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5"
git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3"
uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e"
version = "0.3.4"
version = "0.4.0"
[[deps.SuiteSparse_jll]]
deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
......
[deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
DocInventories = "43dc2714-ed3b-44b5-b226-857eda1aa7de"
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
DocumenterInterLinks = "d12716ef-a0f6-4df4-a9f1-a5a34e75c656"
......
```@meta
CurrentModule = PSBoardDataBase
```
# Index
```@contents
Pages = ["about_software.md"]
Depth = 4
```
# このリポジトリのソフトウェアについての説明
このリポジトリにあるのは、JATHub masterのログファイル、及びGoogle SheetsからエクスポートしたCSVファイルからデータベースを作成するためのコードである。
メインの関数は[`create_database_from_exported_csvs`](@ref)である。
!!! info
**TLDR**;
データベースがほしいときは_Masterのログ_と_Slaveのログ_を用意して、[`create_database_from_exported_csvs`](@ref)
```julia
create_database_from_exported_csvs(
"database_name.db";
masterlog_dir = "dir/to/master/logs",
slavelog_dir = "dir/to/slave/logs"
)
```
## 動かし方
[Julia](https://julialang.org)[juliaup](https://github.com/JuliaLang/juliaup)でインストールする。
リポジトリのルート(`Project.toml`がある)で
......@@ -25,10 +44,66 @@ backspaceでjulianモードに戻り(左側が`julia>`になってる)、`using
# テストについて
テストでは実際にデータベースを作成している。
デフォルトでは全部は実行しないが、master log fileをおき、かつ環境変数`LOCAL_TEST`を設定することで、master log fileが必要な工程まで含めて実行できる。[^1]
デフォルトでは全部は実行しないが、master logとslave logをおき、かつ環境変数`LOCAL_TEST`を設定することで、すべての工程を実行できる。[^1]
用意するものの詳細は下に書いてある。
Pkgモード(`]`を押す)で`test`とうつと実行できる。
環境変数の設定は`ENV["LOCAL_TEST"] = "1"`とでも書く。
自動でsqlite browserを開く設定になっている。
[^1]: master log fileはgitには入れたくないので、このような形態をとっている。
## Master logを用意する
[`start-shiftwork`](https://gitlab.cern.ch/dhashimo/PS_Board_QAQC/-/blob/master/Software_Test/ShiftWorks/script/start-shiftwork?ref_type=heads)が生成するログファイル(同じリポジトリの`../log`のところ、通常はJATHub Masterにある)を`test/input/`以下に置く。
以下のようにする。
```sh
$ tree -L 2 test/input/
test/input/
└── log
├── 100.log
├── 101_long.log
├── 102_long.log
├── 103.log
├── 104_long.log
├── 105.log
├── 106_long.log
├── 107.log
├── 108_long.log
├── 109_long.log
├── 110.log
...
```
## Slave logを用意する
同様にJATHub slaveで作られるログも用意する。
これはskewを抽出するのに使われる。
最悪なくてもいいのでそのときは空のディレクトリを関数に渡す。
```sh
tree -L 2 test/input/slavelogs/ | head -n 10
test/input/slavelogs/
└── main
├── 101_28_longrun.txt
├── 101_29.txt
├── 101_29_clk.txt
├── 103_28_longrun.txt
├── 103_29.txt
├── 103_29_clk.txt
├── 103_89.txt
├── 103_89_clk.txt
```
## Coverage Reportの出し方
```julia
using LocalCoverage
html_coverage(generate_coverage(), open = true)
```
Full testのほうが当然だがcoverageが高くなる。
# 新しいQAQCキャンペーン時に更新すべき内容
- [`PSBoardDataBase.insert_qaqc_campaign_id`](@ref): キャンペーンの日時
......@@ -48,3 +123,21 @@ Modules = [PSBoardDataBase]
```@autodocs
Modules = [QaqcMasterLog]
```
## `DownloadCSVs`
```@autodocs
Modules = [DownloadCSVs]
```
## `ClockParser`
```@autodocs
Modules = [ClockParser]
```
## `DispatchChecker`
```@autodocs
Modules = [DispatchChecker]
```
<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=device-width"><meta charset="utf-8">
<meta name="pluto-insertion-spot-meta">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="white"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#2a2928"><meta name="color-scheme" content="light dark"><link rel="icon" type="image/png" sizes="16x16" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/favicon-16x16.347d2855.png" integrity="sha384-3qsGeVLdddzV9oIkj3PhXXQX2CZCjOD/CiyrPQOX6InOWw3HAHClrsQhPfX9uRAj" crossorigin="anonymous"><link rel="icon" type="image/png" sizes="32x32" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/favicon-32x32.8789add4.png" integrity="sha384-cOe5vSoBIgKNgkUL27p9RpsGVY0uBg9PejLccDy+fR8ZD1Iv5dF1MGHjIZAIZwm6" crossorigin="anonymous"><link rel="icon" type="image/png" sizes="96x96" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/favicon-96x96.48689391.png" integrity="sha384-TN49cYb8GyNmrZT14bsYXXo4l1x1NJeJ/EHuVAauAKsNPopPHLojijs9jFT4Vs8c" crossorigin="anonymous"><link rel="pluto-logo-big" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/logo.004c1d7c.svg" integrity="sha384-GkQkODcGxsrSRJCkeakBXihum0GUM44cwBgKyutDimectXCbCgj6Vu3jlrueqEcN" crossorigin="anonymous"><link rel="pluto-logo-small" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/favicon_unsaturated.d1387b25.svg" integrity="sha384-omwjH+Qy3hpAVf5FYd/pkaDBuVAfsEDRN7eBxEA8Ek00OAWP+aiV+GpEYk3I7lyo" crossorigin="anonymous"><script type="module" src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.7330d793.js" integrity="sha384-+mLMSKQxWEYKJeUt5VTdKTDfzHvui0mdMSd+iIQKYybm+6crs+6FeCr73c8yxir6" crossorigin="anonymous"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.a682089f.css" integrity="sha384-aiiX4sVkuHqwZaQ4OOVV08zw55gY7JuiYbhRxwmatQyIdMKMsuW2vzbC0paOjVVj" crossorigin="anonymous"><script defer="">console.log("Pluto.jl, by Fons van der Plas (https://github.com/fonsp), Mikołaj Bochenski (https://github.com/malyvsen), Michiel Dral (https://github.com/dralletje) and friends 🌈");</script><script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.b8733d72.js" defer="" integrity="sha384-84yPd6AGZ/1IUiaBlssipmMKMFz9WGFQ+u8vYZ9cWicH6bZm7ZOej+kLDXnIIAQJ" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.9f9dc874.js" defer="" integrity="sha384-tkFo1EK72I9JvoTmHFa199dfRzW8mkXPUkHb/N7UhYI+bxKzX3Kh8LNCZz1ltsFF" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.90ede145.js" defer="" integrity="sha384-CuNU9gQg6fa/yynNqNWjHWzPm4nj+d7O6+HXsNGSqClhs/bYQIbBC3Lw/kh8Ukui" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.912b6bfb.js" defer="" integrity="sha384-FRiqeyJfF9LJm/u55iNTcaVZ8AlzYtWo/26uURlz+Iu3ZPUiXXTMnAlu1+rO5HR0" crossorigin="anonymous"></script><script id="iframe-resizer-content-window-script" src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.6386bd9d.js" crossorigin="anonymous" defer="" integrity="sha384-tgN2a0VDi/lCYwZuDqT7L+A/Y/9kpxf3HV7zv2BJ5Fu7zW0EClq0nM4crfK3TRPs"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.d9776a27.css" type="text/css" integrity="sha384-RK45/h2gdicn8pxD8WqZf1w7pzM3CCb9HD3xyGUreTljRGubIpCJhUckT0KahxtR" crossorigin="anonymous"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.52bd66ba.css" type="text/css" media="all" data-pluto-file="hide-ui" integrity="sha384-mZn6RuXF1UXCTqkld9/QJshMPUFGT/EBEcr0lZfUV7TULrxk0fZqe+YHXMk+6Qb0" crossorigin="anonymous"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.d0a5b1f0.css" type="text/css" integrity="sha384-oUdA9RJhs9IlGgJOs6m3tNmyOqOLTPOfpCXeXLUex2W5KOLfSAdyT5HoVuwUEFDQ" crossorigin="anonymous"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.a79fcc8f.css" type="text/css" integrity="sha384-P7YcsNGWMp1f9Ffi+2kw3mrU2zVCb1nf0E/MJE+UDCc1OOXZUYC6ihS3Jagwyl2h" crossorigin="anonymous"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.09b09a3f.css" type="text/css" integrity="sha384-dHB2VzrvTc7+CLgp62sndIQSbzeitJhO8vZnxV2zNlO4GHz83BZPqsY+0nTAF7WO" crossorigin="anonymous"><script data-pluto-file="launch-parameters">
window.pluto_notebook_id = undefined;
window.pluto_isolated_cell_ids = undefined;
window.pluto_notebookfile = "data:text/julia;charset=utf-8;base64,IyMjIEEgUGx1dG8uamwgbm90ZWJvb2sgIyMjCiMgdjAuMTkuNDYKCnVzaW5nIE1hcmtkb3duCnVzaW5nIEludGVyYWN0aXZlVXRpbHMKCiMgVGhpcyBQbHV0byBub3RlYm9vayB1c2VzIEBiaW5kIGZvciBpbnRlcmFjdGl2aXR5LiBXaGVuIHJ1bm5pbmcgdGhpcyBub3RlYm9vayBvdXRzaWRlIG9mIFBsdXRvLCB0aGUgZm9sbG93aW5nICdtb2NrIHZlcnNpb24nIG9mIEBiaW5kIGdpdmVzIGJvdW5kIHZhcmlhYmxlcyBhIGRlZmF1bHQgdmFsdWUgKGluc3RlYWQgb2YgYW4gZXJyb3IpLgptYWNybyBiaW5kKGRlZiwgZWxlbWVudCkKICAgIHF1b3RlCiAgICAgICAgbG9jYWwgaXYgPSB0cnkgQmFzZS5sb2FkZWRfbW9kdWxlc1tCYXNlLlBrZ0lkKEJhc2UuVVVJRCgiNmU2OTZjNzItNjU0Mi0yMDY3LTcyNjUtNDIyMDZjNzU2MTUwIiksICJBYnN0cmFjdFBsdXRvRGluZ2V0amVzIildLkJvbmRzLmluaXRpYWxfdmFsdWUgY2F0Y2g7IGIgLT4gbWlzc2luZzsgZW5kCiAgICAgICAgbG9jYWwgZWwgPSAkKGVzYyhlbGVtZW50KSkKICAgICAgICBnbG9iYWwgJChlc2MoZGVmKSkgPSBDb3JlLmFwcGxpY2FibGUoQmFzZS5nZXQsIGVsKSA/IEJhc2UuZ2V0KGVsKSA6IGl2KGVsKQogICAgICAgIGVsCiAgICBlbmQKZW5kCgojIOKVlOKVkOKVoSBkM2M5NTMxNi03ZmZiLTExZWYtMWUyYy0yOTM0Zjg5YTIzMzYKYmVnaW4KCXVzaW5nIFBsdXRvVUkKCXVzaW5nIEh5cGVydGV4dExpdGVyYWw6IEBodGwKCXVzaW5nIFNRTGl0ZQoJdXNpbmcgREJJbnRlcmZhY2UKCXVzaW5nIERhdGFGcmFtZXMKCXVzaW5nIERhdGVzCmVuZAoKIyDilZTilZDilaEgMzNiNzA1MTYtNzY4Ny00NjNiLWE2NTQtMmNkZTNmMjUzOGFhCm1kIiIiCiMg6Kmm6aiT57WQ5p6c5LiA6Kan44Gu5Y+W5b6XCiIiIgoKIyDilZTilZDilaEgMTVkNTVmNmUtYjhjZS00OTE2LWE4ZmEtYzliMDdiMGNjODZhCm1kIiIiClBTQm9hcmQgaWTjgpLlhaXlips6ICQoQGJpbmQgcHNiaWQgTnVtYmVyRmllbGQoMDo5OTk5OTksIGRlZmF1bHQgPSAxNjQpKQoiIiIKCiMg4pWU4pWQ4pWhIDg0NDBhMWRlLTEyZmUtNGJiNy05MDdmLTUyZjkzMzkzNGVjMAptZCIiIgox5Zue6Kmm6aiTCiIiIgoKIyDilZTilZDilaEgMDI5OWQ1YjctOGI5Zi00NGFlLWEyY2YtM2RiMzZlMWY4NTdhCm1kIiIiCjEwMOWbnuippumokwoiIiIKCiMg4pWU4pWQ4pWhIDdhMTFlNDYwLThkNmYtNDU0Yy04ZmU2LTMzYzU5ZWViNDkzNwptZCIiIgpydW4KIiIiCgojIOKVlOKVkOKVoSAxMjg3YjQ3OS1jY2U5LTRlYjEtOTQ5Yi05ZGE3ZDAzMjljMjQKbWQiIiIK5Ye66I2354q25rOBCiIiIjsKCiMg4pWU4pWQ4pWhIDFkOTBjNjg3LTdlNjctNDNlZC1iNWJmLTY4ZWY5MDQwZGM5NQptZCIiIgojIDEwMOWbnuOBmOOCg+OBquOBhOippumokwoiIiIKCiMg4pWU4pWQ4pWhIGVjMmQ0MGY3LTFlMDYtNDE0ZC05YTc3LTllMzQ4OWJhMjcxYwptZCIiIgojIOOBneOBruS7luOCs+ODvOODiQoiIiIKCiMg4pWU4pWQ4pWhIDMxYjc0ODI4LWZkYzctNGIwNC04YmUwLWVhNDQ4MjBmOTU1NQpUYWJsZU9mQ29udGVudHMoKQoKIyDilZTilZDilaEgYmIxNjdhNWUtYjIzYS00ZjA1LTliYTYtMzY4YTQ4ZjljMTIwCiMgQGh0bCgiIiIKIyA8c3R5bGU+CiMgCUBtZWRpYSBzY3JlZW4gewojIAkJbWFpbiB7CiMgCQkJbWFyZ2luOiAwIGF1dG87CiMgCQkJbWF4LXdpZHRoOiAxMDAwcHg7CiMgCQkJcGFkZGluZy1sZWZ0OiBtYXgoMTYwcHgsIDEwJSk7CiMgCQkJcGFkZGluZy1yaWdodDogbWF4KDE2MHB4LCAxMCUpOwojIAkJfQojIAl9CiMgPC9zdHlsZT4KIyAiIiIpCgojIOKVlOKVkOKVoSAzYTFhYTNkOC1iZWEwLTQ2Y2ItYjA3ZS04OGU5NDg0ZTc1YzYKZnVuY3Rpb24gY29sc192aXNpYmlsaXR5X3RvZ2dsZShkZikKCWNvbHMgPSBuYW1lcyhkZikKCXNpbmdsZV9zaG93X2NvbHMgPSBEaWN0KGNvbHMgLj0+IGZpbGwodHJ1ZSwgbGVuZ3RoKGNvbHMpKSkKCVBsdXRvVUkuY29tYmluZSgpIGRvIENoaWxkCgkJQGh0bCgiIiIKCQkJPHRhYmxlPgoJCQkJPHRyPgoJCQkJCTx0aD4g44Kz44Op44OgIDwvdGg+CgkJCQkJPHRoPiDooajnpLogPC90aD4KCQkJCTwvdHI+CgkJCQkkKFsKCQkJCQlAaHRsKCIiIgoJCQkJCQk8dHI+CgkJCQkJCQk8dGQ+ICQobmFtZSkgPC90ZD4KCQkJCQkJCTx0ZD4gJChDaGlsZChDaGVja0JveChkZWZhdWx0ID0gdHJ1ZSkpKSA8L3RkPgoJCQkJCQk8L3RyPgoJCQkJCSIiIikKCQkJCQkJZm9yIG5hbWUgaW4gY29scwoJCQkJXSkKCQkJPC90YWJsZT4KCQkiIiIpCgllbmQKZW5kCgojIOKVlOKVkOKVoSA0ZDYyOTAwYS0wODEwLTQ5ZDEtODYzMi1hOWU3NTQ0ZjM4MWIKZGIgPSBTUUxpdGUuREIoIi4uL3BzYm9hcmRfcWFxYy5kYiIpCgojIOKVlOKVkOKVoSA5MTFhNWFlOC01ODAwLTRkMjAtOWQ3My1iY2M3MjA1ZDM1MDEKU1FMaXRlLnRhYmxlcyhkYikKCiMg4pWU4pWQ4pWhIDZkYTFlZmJlLWU1YTAtNDM3Ni1iOGVhLWVkMjFmMDlkYTA4NApxYXFjX3NpbmdsZV9yZXN1bHQgPSBEQkludGVyZmFjZS5leGVjdXRlKAoJZGIsCglzcWwiIiIKCXNlbGVjdCAqIGZyb20gcWFxY19zaW5nbGVfcnVuX3Jlc3VsdHMKCSIiIgopIHw+IERhdGFGcmFtZQoKIyDilZTilZDilaEgYTg1YjRmMTktODJlNC00MGQ1LWFmOWYtZDUyODY1NzhiMWZiCkBiaW5kIHNpbmdsZV9yZXN1bHRfZm9yX2lkX3Nob3dfY29scyBjb2xzX3Zpc2liaWxpdHlfdG9nZ2xlKHFhcWNfc2luZ2xlX3Jlc3VsdCkKCiMg4pWU4pWQ4pWhIDk1MTNmMDE3LTc5MDUtNDk1ZC1hN2ViLTZjYTU5MjczMDhkZApzaW5nbGVfcmVzdWx0X2Zvcl9pZCA9IGZpbHRlcigKCTpwc2JvYXJkX2lkID0+ID09KHBzYmlkKSwKCXFhcWNfc2luZ2xlX3Jlc3VsdCwKKTsKCiMg4pWU4pWQ4pWhIDIzMTY3OTcxLTQ2NzEtNGYxOC04NGRmLTcyYTdkYzU5MzhlMQpxYXFjX3Bvc2l0aW9ucyA9IERCSW50ZXJmYWNlLmV4ZWN1dGUoCglkYiwKCXNxbCIiIgoJc2VsZWN0ICogZnJvbSBxYXFjX3Bvc2l0aW9ucwoJIiIiCikgfD4gRGF0YUZyYW1lCgojIOKVlOKVkOKVoSAxOTJjNDdhMy03MjAyLTQzNTEtODYzOC1lYzQ5ZWNiOTAxYzUKc2luZ2xlX3Jlc3VsdF9mb3JfaWRfc2hvdyA9IGxldAoJZGYgPSBsZWZ0am9pbigKCQlzaW5nbGVfcmVzdWx0X2Zvcl9pZCwKCQlxYXFjX3Bvc2l0aW9uc1s6LCBbOmlkLCA6bmFtZV1dLAoJCW9uID0gOnBvc2l0aW9uID0+IDppZCwKCSlbOiwgTm90KDpwb3NpdGlvbildCglyZW5hbWUhKGRmLCA6bmFtZSA9PiA6cG9zaXRpb24pCglkZgplbmQ7CgojIOKVlOKVkOKVoSBhN2MxYWU4OC0zNGRjLTQ0NWMtYWQyYy0zODc5MTkyZDEzYzcKc2luZ2xlX3Jlc3VsdF9mb3JfaWRfc2hvd1shLCBjb2xsZWN0KHNpbmdsZV9yZXN1bHRfZm9yX2lkX3Nob3dfY29scyldCgojIOKVlOKVkOKVoSA2MmRkZWI5MS1lMDA3LTQ0MDctYjRkYy0xYjczOTI0ODA3ODEKcWFxY19ydW5zID0gbGV0CglkZiA9IERCSW50ZXJmYWNlLmV4ZWN1dGUoCgkJZGIsCgkJc3FsIiIiCgkJc2VsZWN0ICogZnJvbSBxYXFjX3J1bnMKCQkiIiIKCSkgfD4gRGF0YUZyYW1lCgl0cmFuc2Zvcm0hKGRmLCA6cnVuX2RhdGV0aW1lID0+IEJ5Um93KHBhc3NtaXNzaW5nKERhdGVUaW1lKSkgPT4gOnJ1bl9kYXRldGltZSkKCXRyYW5zZm9ybSEoCgkJZGYsCgkJOnNoaWZ0c2NyaXB0X3ZlciA9PiBCeVJvdyhwYXNzbWlzc2luZyhWZXJzaW9uTnVtYmVyKSkgPT4gOnNoaWZ0c2NyaXB0X3ZlcgoJKQoJZGYKZW5kCgojIOKVlOKVkOKVoSBhNzdjY2Y2Yi1kYjY3LTRhMDctODMzYS0yMTBhZmNjYzM5ZTUKcWFxY19leHRyYV9ydW5fcmVzdWx0cyA9IERCSW50ZXJmYWNlLmV4ZWN1dGUoCglkYiwKCXNxbCIiIgoJc2VsZWN0ICogZnJvbSBxYXFjX2V4dHJhX3J1bl9yZXN1bHRzCgkiIiIKKSB8PiBEYXRhRnJhbWUKCiMg4pWU4pWQ4pWhIDFlOWFiNmIwLWIyNWQtNDRhZC05MmFlLWYxMmY5MmQ5MWQ1ZQpleHRyYV9yZXN1bHRfZm9yX2lkID0gZmlsdGVyKAoJOnBzYm9hcmRfaWQgPT4gPT0ocHNiaWQpLAoJcWFxY19leHRyYV9ydW5fcmVzdWx0cywKKTsKCiMg4pWU4pWQ4pWhIGVkN2M0MGZlLWY5NjYtNGFmYi1hOTYyLTg5NmM5ZjEwOTk0NgpmaWx0ZXIoCgk6aWQgPT4g4oiIKFtzaW5nbGVfcmVzdWx0X2Zvcl9pZC5ydW5pZDsgZXh0cmFfcmVzdWx0X2Zvcl9pZC5ydW5pZDtdKSwKCXFhcWNfcnVucwopCgojIOKVlOKVkOKVoSA1MTM3MGFiYi1mMGZiLTRhZTAtYjQ4OC1iZjlmYzc3NjU3N2MKZXh0cmFfcmVzdWx0X2Zvcl9pZF9zaG93ID0gbGV0CglkZiA9IGxlZnRqb2luKAoJCWV4dHJhX3Jlc3VsdF9mb3JfaWQsCgkJcWFxY19wb3NpdGlvbnNbOiwgWzppZCwgOm5hbWVdXSwKCQlvbiA9IDpwb3NpdGlvbiA9PiA6aWQsCgkpWzosIE5vdCg6cG9zaXRpb24pXQoJcmVuYW1lIShkZiwgOm5hbWUgPT4gOnBvc2l0aW9uKQoJZGYKZW5kOwoKIyDilZTilZDilaEgNDU4MjhiYjQtZTlmNS00NmQ1LThmNDgtODgyODRmMzE4Y2M0CkBiaW5kIGV4dHJhX3Jlc3VsdF9mb3JfaWRfc2hvd19jb2xzIGNvbHNfdmlzaWJpbGl0eV90b2dnbGUoZXh0cmFfcmVzdWx0X2Zvcl9pZF9zaG93KQoKIyDilZTilZDilaEgNmNlYjE5OGUtZWRkMy00OTU0LWIxZmYtYmVlZjMzYzNmMjA1CmV4dHJhX3Jlc3VsdF9mb3JfaWRfc2hvd1shLCBjb2xsZWN0KGV4dHJhX3Jlc3VsdF9mb3JfaWRfc2hvd19jb2xzKV0KCiMg4pWU4pWQ4pWhIDA1MThhZjQ0LTg3OGUtNDA1Mi1iNGQ0LWU3ZmIzYzM1ZWZlYQpsZXQKCWRmID0gZmlsdGVyKAoJCTpudW1fdGVzdHMgPT4gIT0oMTAwKSwKCQlxYXFjX2V4dHJhX3J1bl9yZXN1bHRzLAoJKQoJdW5pcXVlIShkZiwgOnJ1bmlkKS5ydW5pZAplbmQKCiMg4pWU4pWQ4pWhIGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MApxYXFjX3Jlc2lzdGFuY2VfY2hlY2sgPSBsZXQKCWRmID0gREJJbnRlcmZhY2UuZXhlY3V0ZSgKCQlkYiwKCQlzcWwiIiIKCQlzZWxlY3QgKiBmcm9tIHFhcWNfcmVzaXN0YW5jZV9jaGVjawoJCSIiIgoJKSB8PiBEYXRhRnJhbWUKCXRyYW5zZm9ybSEoCgkJZGYsCgkJOnBhc3NlZCA9PiBCeVJvdyhCb29sKSA9PiA6cGFzc2VkCgkpCglkZgplbmQKCiMg4pWU4pWQ4pWhIDc5NzAzNzQ1LTZjMGUtNDIwMS1hNThkLWU3NTk5NGZhYjRlNApxYXFjX2Rpc3BhdGNoID0gREJJbnRlcmZhY2UuZXhlY3V0ZSgKCWRiLAoJc3FsIiIiCglzZWxlY3QgKiBmcm9tIHFhcWNfZGlzcGF0Y2gKCSIiIgopIHw+IERhdGFGcmFtZQoKIyDilZTilZDilaEgYjUzZWRlOGMtNDE0ZS00MGI1LThmMzAtZmVkZjQ3YTUzMGFjCmxldAoJcGFzc2VkID0gZmlsdGVyKAoJCTpwc2JfaWQgPT4gPT0ocHNiaWQpLAoJCXFhcWNfcmVzaXN0YW5jZV9jaGVjawoJKS5wYXNzZWQKCXJlc2lzdGFuY2Vfc3RhdHVzID0gaWYgaXNlbXB0eShwYXNzZWQpCgkJIiIKCWVsc2VpZiBhbGwocGFzc2VkKQoJCSJPSyIKCWVsc2UKCQkiRkFJTCIKCWVuZAoJZGlzcGF0Y2hfc3RhdHVzID0gbGV0CgkJaWYgY29tYmluZSgKCQkJcWFxY19kaXNwYXRjaCwKCQkJOnBzYl9pZCA9PiAodiAtPiBhbnkoPT0ocHNiaWQpLCB2KSkgPT4gOmRpc3BhdGNoZWQKCQkpLmRpc3BhdGNoZWQgfD4gZmlyc3QKCQkJIua4iCIKCQllbHNlCgkJCSLmnKoiCgkJZW5kCgllbmQKCW1kIiIiCgnmirXmipflgKTjg4bjgrnjg4g6ICQocmVzaXN0YW5jZV9zdGF0dXMpIFwKCeWHuuiNt+eKtuazgTogJChkaXNwYXRjaF9zdGF0dXMpCgkiIiIKZW5kCgojIOKVlOKVkOKVoSAxOTliNDVmNi0xZTYzLTQzOTItYWY2YS02YTVlZDgzYmY0NjcKZmlsdGVyKAoJOnBzYl9pZCA9PiA9PShwc2JpZCksCglxYXFjX2Rpc3BhdGNoCik7CgojIOKVlOKVkOKVoSAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDEKUExVVE9fUFJPSkVDVF9UT01MX0NPTlRFTlRTID0gIiIiCltkZXBzXQpEQkludGVyZmFjZSA9ICJhMTBkMWM0OS1jZTI3LTQyMTktOGQzMy02ZGIxYTQ1NjI5NjUiCkRhdGFGcmFtZXMgPSAiYTkzYzZmMDAtZTU3ZC01Njg0LWI3YjYtZDgxOTNmM2U0NmMwIgpEYXRlcyA9ICJhZGUyY2E3MC0zODkxLTU5NDUtOThmYi1kYzA5OTQzMmUwNmEiCkh5cGVydGV4dExpdGVyYWwgPSAiYWMxMTkyYTgtZjRiMy00YmZlLWJhMjItYWY1YjkyY2QzYWIyIgpQbHV0b1VJID0gIjdmOTA0ZGZlLWI4NWUtNGZmNi1iNDYzLWRhZTIyOTIzOTZhOCIKU1FMaXRlID0gIjBhYTgxOWNkLWIwNzItNWZmNC1hNzIyLTZiYzI0YWYyOTRkOSIKCltjb21wYXRdCkRCSW50ZXJmYWNlID0gIn4yLjYuMSIKRGF0YUZyYW1lcyA9ICJ+MS43LjAiCkh5cGVydGV4dExpdGVyYWwgPSAifjAuOS41IgpQbHV0b1VJID0gIn4wLjcuNjAiClNRTGl0ZSA9ICJ+MS42LjEiCiIiIgoKIyDilZTilZDilaEgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAyClBMVVRPX01BTklGRVNUX1RPTUxfQ09OVEVOVFMgPSAiIiIKIyBUaGlzIGZpbGUgaXMgbWFjaGluZS1nZW5lcmF0ZWQgLSBlZGl0aW5nIGl0IGRpcmVjdGx5IGlzIG5vdCBhZHZpc2VkCgpqdWxpYV92ZXJzaW9uID0gIjEuMTAuNSIKbWFuaWZlc3RfZm9ybWF0ID0gIjIuMCIKcHJvamVjdF9oYXNoID0gImY5NGI4ZGMxMjQ0ODBjN2RjMjFmZmZhZTI2MThhZWI4MWY1ZDMyMzciCgpbW2RlcHMuQWJzdHJhY3RQbHV0b0RpbmdldGplc11dCmRlcHMgPSBbIlBrZyJdCmdpdC10cmVlLXNoYTEgPSAiNmUxZDJhMzVmMmY5MGE0YmM3YzJlZDk4MDc5YjJiYTA5YzM1YjgzYSIKdXVpZCA9ICI2ZTY5NmM3Mi02NTQyLTIwNjctNzI2NS00MjIwNmM3NTYxNTAiCnZlcnNpb24gPSAiMS4zLjIiCgpbW2RlcHMuQXJnVG9vbHNdXQp1dWlkID0gIjBkYWQ4NGM1LWQxMTItNDJlNi04ZDI4LWVmMTJkYWJiNzg5ZiIKdmVyc2lvbiA9ICIxLjEuMSIKCltbZGVwcy5BcnRpZmFjdHNdXQp1dWlkID0gIjU2ZjIyZDcyLWZkNmQtOThmMS0wMmYwLTA4ZGRjMDkwN2MzMyIKCltbZGVwcy5CYXNlNjRdXQp1dWlkID0gIjJhMGY0NGUzLTZjODMtNTViZC04N2U0LWIxOTc4ZDk4YmQ1ZiIKCltbZGVwcy5Db2xvclR5cGVzXV0KZGVwcyA9IFsiRml4ZWRQb2ludE51bWJlcnMiLCAiUmFuZG9tIl0KZ2l0LXRyZWUtc2hhMSA9ICJiMTBkMGI2NTY0MWQ1N2I4YjRkNWUyMzQ0NDY1ODJkZTUwNDcwNTBkIgp1dWlkID0gIjNkYTAwMmY3LTU5ODQtNWE2MC1iOGE2LWNiYjY2YzBiMzMzZiIKdmVyc2lvbiA9ICIwLjExLjUiCgpbW2RlcHMuQ29tcGF0XV0KZGVwcyA9IFsiVE9NTCIsICJVVUlEcyJdCmdpdC10cmVlLXNoYTEgPSAiOGFlOGQzMmUwOWYwZGNmNDJhMzZiOTBkNGUxN2Y1ZGQyZTRjNDIxNSIKdXVpZCA9ICIzNGRhMjE4NS1iMjliLTVjMTMtYjBjNy1hY2YxNzI1MTNkMjAiCnZlcnNpb24gPSAiNC4xNi4wIgp3ZWFrZGVwcyA9IFsiRGF0ZXMiLCAiTGluZWFyQWxnZWJyYSJdCgogICAgW2RlcHMuQ29tcGF0LmV4dGVuc2lvbnNdCiAgICBDb21wYXRMaW5lYXJBbGdlYnJhRXh0ID0gIkxpbmVhckFsZ2VicmEiCgpbW2RlcHMuQ29tcGlsZXJTdXBwb3J0TGlicmFyaWVzX2psbF1dCmRlcHMgPSBbIkFydGlmYWN0cyIsICJMaWJkbCJdCnV1aWQgPSAiZTY2ZTAwNzgtNzAxNS01NDUwLTkyZjctMTVmYmQ5NTdmMmFlIgp2ZXJzaW9uID0gIjEuMS4xKzAiCgpbW2RlcHMuQ3JheW9uc11dCmdpdC10cmVlLXNoYTEgPSAiMjQ5ZmUzOGFiZjc2ZDQ4NTYzZTJmNDU1NmJlYmQyMTVhYTMxN2UxNSIKdXVpZCA9ICJhOGNjNWIwZS0wZmZhLTVhZDQtOGMxNC05MjNkM2VlMTczNWYiCnZlcnNpb24gPSAiNC4xLjEiCgpbW2RlcHMuREJJbnRlcmZhY2VdXQpnaXQtdHJlZS1zaGExID0gImE0NDQ0MDRiM2Y5NGRlYWE0M2NhMmE1OGUxODE1M2E4MjY5NTI4MmIiCnV1aWQgPSAiYTEwZDFjNDktY2UyNy00MjE5LThkMzMtNmRiMWE0NTYyOTY1Igp2ZXJzaW9uID0gIjIuNi4xIgoKW1tkZXBzLkRhdGFBUEldXQpnaXQtdHJlZS1zaGExID0gImFiZTgzZjNhMmYxYjg1N2FhYzcwZWY4YjI2OTA4MGFmMTc3NjRiYmUiCnV1aWQgPSAiOWE5NjJmOWMtNmRmMC0xMWU5LTBlNWQtYzU0NmI4YjVlZThhIgp2ZXJzaW9uID0gIjEuMTYuMCIKCltbZGVwcy5EYXRhRnJhbWVzXV0KZGVwcyA9IFsiQ29tcGF0IiwgIkRhdGFBUEkiLCAiRGF0YVN0cnVjdHVyZXMiLCAiRnV0dXJlIiwgIklubGluZVN0cmluZ3MiLCAiSW52ZXJ0ZWRJbmRpY2VzIiwgIkl0ZXJhdG9ySW50ZXJmYWNlRXh0ZW5zaW9ucyIsICJMaW5lYXJBbGdlYnJhIiwgIk1hcmtkb3duIiwgIk1pc3NpbmdzIiwgIlBvb2xlZEFycmF5cyIsICJQcmVjb21waWxlVG9vbHMiLCAiUHJldHR5VGFibGVzIiwgIlByaW50ZiIsICJSYW5kb20iLCAiUmVleHBvcnQiLCAiU2VudGluZWxBcnJheXMiLCAiU29ydGluZ0FsZ29yaXRobXMiLCAiU3RhdGlzdGljcyIsICJUYWJsZVRyYWl0cyIsICJUYWJsZXMiLCAiVW5pY29kZSJdCmdpdC10cmVlLXNoYTEgPSAiZmI2MWI0ODEyYzQ5MzQzZDdlZjBiNTMzYmE5ODJjNDYwMjE5MzhhNiIKdXVpZCA9ICJhOTNjNmYwMC1lNTdkLTU2ODQtYjdiNi1kODE5M2YzZTQ2YzAiCnZlcnNpb24gPSAiMS43LjAiCgpbW2RlcHMuRGF0YVN0cnVjdHVyZXNdXQpkZXBzID0gWyJDb21wYXQiLCAiSW50ZXJhY3RpdmVVdGlscyIsICJPcmRlcmVkQ29sbGVjdGlvbnMiXQpnaXQtdHJlZS1zaGExID0gIjFkMGExNDAzNmFjYjEwNGQ5ZTg5Njk4YmQ0MDhmNjNhYjU4Y2RjODIiCnV1aWQgPSAiODY0ZWRiM2ItOTljYy01ZTc1LThkMmQtODI5Y2IwYTljZmU4Igp2ZXJzaW9uID0gIjAuMTguMjAiCgpbW2RlcHMuRGF0YVZhbHVlSW50ZXJmYWNlc11dCmdpdC10cmVlLXNoYTEgPSAiYmZjMTE4N2I3OTI4OTYzN2ZhMGVmNmQ0NDM2ZWJkZmU2OTA1Y2JkNiIKdXVpZCA9ICJlMmQxNzBhMC05ZDI4LTU0YmUtODBmMC0xMDZiYmUyMGE0NjQiCnZlcnNpb24gPSAiMS4wLjAiCgpbW2RlcHMuRGF0ZXNdXQpkZXBzID0gWyJQcmludGYiXQp1dWlkID0gImFkZTJjYTcwLTM4OTEtNTk0NS05OGZiLWRjMDk5NDMyZTA2YSIKCltbZGVwcy5Eb3dubG9hZHNdXQpkZXBzID0gWyJBcmdUb29scyIsICJGaWxlV2F0Y2hpbmciLCAiTGliQ1VSTCIsICJOZXR3b3JrT3B0aW9ucyJdCnV1aWQgPSAiZjQzYTI0MWYtYzIwYS00YWQ0LTg1MmMtZjZiMTI0Nzg2MWM2Igp2ZXJzaW9uID0gIjEuNi4wIgoKW1tkZXBzLkZpbGVXYXRjaGluZ11dCnV1aWQgPSAiN2IxZjYwNzktNzM3YS01OGRjLWI4YmMtN2EyY2E1YzFiNWVlIgoKW1tkZXBzLkZpeGVkUG9pbnROdW1iZXJzXV0KZGVwcyA9IFsiU3RhdGlzdGljcyJdCmdpdC10cmVlLXNoYTEgPSAiMDU4ODJkNjk5NWFlNWMxMmJiNWYzNmRkMmVkM2Y2MWM5OGNiYjE3MiIKdXVpZCA9ICI1M2M0OGMxNy00YTdkLTVjYTItOTBjNS03OWI3ODk2ZWVhOTMiCnZlcnNpb24gPSAiMC44LjUiCgpbW2RlcHMuRnV0dXJlXV0KZGVwcyA9IFsiUmFuZG9tIl0KdXVpZCA9ICI5ZmE4NDk3Yi0zMzNiLTUzNjItOWU4ZC00ZDA2NTZlODc4MjAiCgpbW2RlcHMuSHlwZXJzY3JpcHRdXQpkZXBzID0gWyJUZXN0Il0KZ2l0LXRyZWUtc2hhMSA9ICIxNzkyNjdjZmE1ZTcxMjc2MGNkNDNkY2FlMzg1ZDdlYTkwY2MyNWE0Igp1dWlkID0gIjQ3ZDJlZDJiLTM2ZGUtNTBjZi1iZjg3LTQ5YzJjZjRiOGI5MSIKdmVyc2lvbiA9ICIwLjAuNSIKCltbZGVwcy5IeXBlcnRleHRMaXRlcmFsXV0KZGVwcyA9IFsiVHJpY2tzIl0KZ2l0LXRyZWUtc2hhMSA9ICI3MTM0ODEwYjFhZmNlMDRiYmMxMDQ1Y2ExOTg1ZmJlODFjZTE3NjUzIgp1dWlkID0gImFjMTE5MmE4LWY0YjMtNGJmZS1iYTIyLWFmNWI5MmNkM2FiMiIKdmVyc2lvbiA9ICIwLjkuNSIKCltbZGVwcy5JT0NhcHR1cmVdXQpkZXBzID0gWyJMb2dnaW5nIiwgIlJhbmRvbSJdCmdpdC10cmVlLXNoYTEgPSAiYjZkNmJmZGQ3Y2UyNWIwZjliMmY2YjNkZDU2YjI2NzNhNjZjODc3MCIKdXVpZCA9ICJiNWY4MWU1OS02NTUyLTRkMzItYjFmMC1jMDcxYjAyMWJmODkiCnZlcnNpb24gPSAiMC4yLjUiCgpbW2RlcHMuSW5saW5lU3RyaW5nc11dCmdpdC10cmVlLXNoYTEgPSAiNDU1MjFkMzEyMzhlODdlZTlmOTczMjU2MWJmZWUxMmQ0ZWViZDUyZCIKdXVpZCA9ICI4NDJkZDgyYi0xZTg1LTQzZGMtYmYyOS01ZDBlZTlkZmZjNDgiCnZlcnNpb24gPSAiMS40LjIiCgogICAgW2RlcHMuSW5saW5lU3RyaW5ncy5leHRlbnNpb25zXQogICAgQXJyb3dUeXBlc0V4dCA9ICJBcnJvd1R5cGVzIgogICAgUGFyc2Vyc0V4dCA9ICJQYXJzZXJzIgoKICAgIFtkZXBzLklubGluZVN0cmluZ3Mud2Vha2RlcHNdCiAgICBBcnJvd1R5cGVzID0gIjMxZjczNGY4LTE4OGEtNGNlMC04NDA2LWM4YTA2YmQ4OTFjZCIKICAgIFBhcnNlcnMgPSAiNjlkZTBhNjktMWRkZC01MDE3LTkzNTktMmJmMGIwMmRjOWYwIgoKW1tkZXBzLkludGVyYWN0aXZlVXRpbHNdXQpkZXBzID0gWyJNYXJrZG93biJdCnV1aWQgPSAiYjc3ZTBhNGMtZDI5MS01N2EwLTkwZTgtOGRiMjVhMjdhMjQwIgoKW1tkZXBzLkludmVydGVkSW5kaWNlc11dCmdpdC10cmVlLXNoYTEgPSAiMGRjN2I1MGI4ZDQzNjQ2MWJlMDEzMDBmZDhjZDQ1YWEwMjc0YjAzOCIKdXVpZCA9ICI0MWFiMTU4NC0xZDM4LTViYmYtOTEwNi1mMTFjNmM1OGI0OGYiCnZlcnNpb24gPSAiMS4zLjAiCgpbW2RlcHMuSXRlcmF0b3JJbnRlcmZhY2VFeHRlbnNpb25zXV0KZ2l0LXRyZWUtc2hhMSA9ICJhM2YyNDY3N2MyMWY1YmJlOWQyYTcxNGY5NWRjZDU4MzM3ZmIyODU2Igp1dWlkID0gIjgyODk5NTEwLTQ3NzktNTAxNC04NTJlLTAzZTQzNmNmMzIxZCIKdmVyc2lvbiA9ICIxLjAuMCIKCltbZGVwcy5KTExXcmFwcGVyc11dCmRlcHMgPSBbIkFydGlmYWN0cyIsICJQcmVmZXJlbmNlcyJdCmdpdC10cmVlLXNoYTEgPSAiZjM4OTY3NGM5OWJmY2RlMTdkYzU3NDU0MDExYWE0NGQ1YTI2MGE0MCIKdXVpZCA9ICI2OTJiM2JjZC0zYzg1LTRiMWYtYjEwOC1mMTNjZTBlYjMyMTAiCnZlcnNpb24gPSAiMS42LjAiCgpbW2RlcHMuSlNPTl1dCmRlcHMgPSBbIkRhdGVzIiwgIk1tYXAiLCAiUGFyc2VycyIsICJVbmljb2RlIl0KZ2l0LXRyZWUtc2hhMSA9ICIzMWU5OTZmMGExNWM3YjI4MGJhOWY3NjYzNmIzZmY5ZTJhZTU4YzlhIgp1dWlkID0gIjY4MmMwNmEwLWRlNmEtNTRhYi1hMTQyLWM4YjFjZjc5Y2RlNiIKdmVyc2lvbiA9ICIwLjIxLjQiCgpbW2RlcHMuTGFUZVhTdHJpbmdzXV0KZ2l0LXRyZWUtc2hhMSA9ICI1MDkwMWViYzM3NWVkNDFkYmY4MDU4ZGEyNmY5ZGU0NDJmZWJiYmVjIgp1dWlkID0gImI5NjRmYTlmLTA0NDktNWI1Ny1hNWMyLWQzZWE2NWY0MDQwZiIKdmVyc2lvbiA9ICIxLjMuMSIKCltbZGVwcy5MaWJDVVJMXV0KZGVwcyA9IFsiTGliQ1VSTF9qbGwiLCAiTW96aWxsYUNBQ2VydHNfamxsIl0KdXVpZCA9ICJiMjcwMzJjMi1hM2U3LTUwYzgtODBjZC0yZDM2ZGJjYmZkMjEiCnZlcnNpb24gPSAiMC42LjQiCgpbW2RlcHMuTGliQ1VSTF9qbGxdXQpkZXBzID0gWyJBcnRpZmFjdHMiLCAiTGliU1NIMl9qbGwiLCAiTGliZGwiLCAiTWJlZFRMU19qbGwiLCAiWmxpYl9qbGwiLCAibmdodHRwMl9qbGwiXQp1dWlkID0gImRlYWM5YjQ3LThiYzctNTkwNi1hMGZlLTM1YWM1NmRjODRjMCIKdmVyc2lvbiA9ICI4LjQuMCswIgoKW1tkZXBzLkxpYkdpdDJdXQpkZXBzID0gWyJCYXNlNjQiLCAiTGliR2l0Ml9qbGwiLCAiTmV0d29ya09wdGlvbnMiLCAiUHJpbnRmIiwgIlNIQSJdCnV1aWQgPSAiNzZmODU0NTAtNTIyNi01YjVhLThlYWEtNTI5YWQwNDViNDMzIgoKW1tkZXBzLkxpYkdpdDJfamxsXV0KZGVwcyA9IFsiQXJ0aWZhY3RzIiwgIkxpYlNTSDJfamxsIiwgIkxpYmRsIiwgIk1iZWRUTFNfamxsIl0KdXVpZCA9ICJlMzdkYWY2Ny01OGE0LTU5MGEtOGU5OS1iMDI0NWRkMmZmYzUiCnZlcnNpb24gPSAiMS42LjQrMCIKCltbZGVwcy5MaWJTU0gyX2psbF1dCmRlcHMgPSBbIkFydGlmYWN0cyIsICJMaWJkbCIsICJNYmVkVExTX2psbCJdCnV1aWQgPSAiMjk4MTZiNWEtYjlhYi01NDZmLTkzM2MtZWRhZDE4ODZkZmE4Igp2ZXJzaW9uID0gIjEuMTEuMCsxIgoKW1tkZXBzLkxpYmRsXV0KdXVpZCA9ICI4ZjM5OWRhMy0zNTU3LTU2NzUtYjVmZi1mYjgzMmM5N2NiZGIiCgpbW2RlcHMuTGluZWFyQWxnZWJyYV1dCmRlcHMgPSBbIkxpYmRsIiwgIk9wZW5CTEFTX2psbCIsICJsaWJibGFzdHJhbXBvbGluZV9qbGwiXQp1dWlkID0gIjM3ZTJlNDZkLWY4OWQtNTM5ZC1iNGVlLTgzOGZjY2NjOWM4ZSIKCltbZGVwcy5Mb2dnaW5nXV0KdXVpZCA9ICI1NmRkYjAxNi04NTdiLTU0ZTEtYjgzZC1kYjRkNThkYjU1NjgiCgpbW2RlcHMuTUlNRXNdXQpnaXQtdHJlZS1zaGExID0gIjY1ZjI4YWQ0YjU5NGFlYmUyMjE1N2Q2ZmFjODY5Nzg2YTI1NWI3ZWIiCnV1aWQgPSAiNmM2ZTJlNmMtMzAzMC02MzJkLTczNjktMmQ2YzY5NjE2ZDY1Igp2ZXJzaW9uID0gIjAuMS40IgoKW1tkZXBzLk1hcmtkb3duXV0KZGVwcyA9IFsiQmFzZTY0Il0KdXVpZCA9ICJkNmY0Mzc2ZS1hZWY1LTUwNWEtOTZjMS05YzAyNzM5NDYwN2EiCgpbW2RlcHMuTWJlZFRMU19qbGxdXQpkZXBzID0gWyJBcnRpZmFjdHMiLCAiTGliZGwiXQp1dWlkID0gImM4ZmZkOWMzLTMzMGQtNTg0MS1iNzhlLTA4MTdkNzE0NWZhMSIKdmVyc2lvbiA9ICIyLjI4LjIrMSIKCltbZGVwcy5NaXNzaW5nc11dCmRlcHMgPSBbIkRhdGFBUEkiXQpnaXQtdHJlZS1zaGExID0gImVjNGY3ZmJlYWIwNWQ3NzQ3YmRmOThlYjc0ZDEzMGEyYTJlZDI5OGQiCnV1aWQgPSAiZTFkMjlkN2EtYmJkYy01Y2YyLTlhYzAtZjEyZGUyYzMzZTI4Igp2ZXJzaW9uID0gIjEuMi4wIgoKW1tkZXBzLk1tYXBdXQp1dWlkID0gImE2M2FkMTE0LTdlMTMtNTA4NC05NTRmLWZlMDEyYzY3NzgwNCIKCltbZGVwcy5Nb3ppbGxhQ0FDZXJ0c19qbGxdXQp1dWlkID0gIjE0YTM2MDZkLWY2MGQtNTYyZS05MTIxLTEyZDk3MmNkODE1OSIKdmVyc2lvbiA9ICIyMDIzLjEuMTAiCgpbW2RlcHMuTmV0d29ya09wdGlvbnNdXQp1dWlkID0gImNhNTc1OTMwLWMyZTMtNDNhOS1hY2U0LTFlOTg4YjJjMTkwOCIKdmVyc2lvbiA9ICIxLjIuMCIKCltbZGVwcy5PcGVuQkxBU19qbGxdXQpkZXBzID0gWyJBcnRpZmFjdHMiLCAiQ29tcGlsZXJTdXBwb3J0TGlicmFyaWVzX2psbCIsICJMaWJkbCJdCnV1aWQgPSAiNDUzNjYyOWEtYzUyOC01YjgwLWJkNDYtZjgwZDUxYzViMzYzIgp2ZXJzaW9uID0gIjAuMy4yMys0IgoKW1tkZXBzLk9yZGVyZWRDb2xsZWN0aW9uc11dCmdpdC10cmVlLXNoYTEgPSAiZGZkZjU1MTlmMjM1NTE2MjIwNTc5Zjk0OTY2NGYxYmY0NGU3NDFjNSIKdXVpZCA9ICJiYWM1NThlMS01ZTcyLTVlYmMtOGZlZS1hYmU4YTQ2OWY1NWQiCnZlcnNpb24gPSAiMS42LjMiCgpbW2RlcHMuUGFyc2Vyc11dCmRlcHMgPSBbIkRhdGVzIiwgIlByZWNvbXBpbGVUb29scyIsICJVVUlEcyJdCmdpdC10cmVlLXNoYTEgPSAiODQ4OTkwNWJjZGJjZmFjNjRkMWRhYTUxY2EwN2MwZDhmMDI4MzgyMSIKdXVpZCA9ICI2OWRlMGE2OS0xZGRkLTUwMTctOTM1OS0yYmYwYjAyZGM5ZjAiCnZlcnNpb24gPSAiMi44LjEiCgpbW2RlcHMuUGtnXV0KZGVwcyA9IFsiQXJ0aWZhY3RzIiwgIkRhdGVzIiwgIkRvd25sb2FkcyIsICJGaWxlV2F0Y2hpbmciLCAiTGliR2l0MiIsICJMaWJkbCIsICJMb2dnaW5nIiwgIk1hcmtkb3duIiwgIlByaW50ZiIsICJSRVBMIiwgIlJhbmRvbSIsICJTSEEiLCAiU2VyaWFsaXphdGlvbiIsICJUT01MIiwgIlRhciIsICJVVUlEcyIsICJwN3ppcF9qbGwiXQp1dWlkID0gIjQ0Y2ZlOTVhLTFlYjItNTJlYS1iNjcyLWUyYWZkZjY5Yjc4ZiIKdmVyc2lvbiA9ICIxLjEwLjAiCgpbW2RlcHMuUGx1dG9VSV1dCmRlcHMgPSBbIkFic3RyYWN0UGx1dG9EaW5nZXRqZXMiLCAiQmFzZTY0IiwgIkNvbG9yVHlwZXMiLCAiRGF0ZXMiLCAiRml4ZWRQb2ludE51bWJlcnMiLCAiSHlwZXJzY3JpcHQiLCAiSHlwZXJ0ZXh0TGl0ZXJhbCIsICJJT0NhcHR1cmUiLCAiSW50ZXJhY3RpdmVVdGlscyIsICJKU09OIiwgIkxvZ2dpbmciLCAiTUlNRXMiLCAiTWFya2Rvd24iLCAiUmFuZG9tIiwgIlJlZXhwb3J0IiwgIlVSSXMiLCAiVVVJRHMiXQpnaXQtdHJlZS1zaGExID0gImViYTQ4MTBkNWU2YTAxZjYxMmI5NDhjOWZhOTRmOTA1YjQ5MDg3YjAiCnV1aWQgPSAiN2Y5MDRkZmUtYjg1ZS00ZmY2LWI0NjMtZGFlMjI5MjM5NmE4Igp2ZXJzaW9uID0gIjAuNy42MCIKCltbZGVwcy5Qb29sZWRBcnJheXNdXQpkZXBzID0gWyJEYXRhQVBJIiwgIkZ1dHVyZSJdCmdpdC10cmVlLXNoYTEgPSAiMzZkOGI0Yjg5OTYyOGZiOTJjMjc0OWViNDg4ZDg4NGE5MjY2MTRkMyIKdXVpZCA9ICIyZGZiNjNlZS1jYzM5LTVkZDUtOTViZC04ODZiZjA1OWQ3MjAiCnZlcnNpb24gPSAiMS40LjMiCgpbW2RlcHMuUHJlY29tcGlsZVRvb2xzXV0KZGVwcyA9IFsiUHJlZmVyZW5jZXMiXQpnaXQtdHJlZS1zaGExID0gIjVhYTM2ZjcwNDlhNjNhMTUyOGZlOGY3YzNmMjExMzQxM2ZmZDRlMWYiCnV1aWQgPSAiYWVhN2JlMDEtNmE2YS00MDgzLTg4NTYtOGE2ZTY3MDRkODJhIgp2ZXJzaW9uID0gIjEuMi4xIgoKW1tkZXBzLlByZWZlcmVuY2VzXV0KZGVwcyA9IFsiVE9NTCJdCmdpdC10cmVlLXNoYTEgPSAiOTMwNmY2MDg1MTY1ZDI3MGY3ZTNkYjAyYWYyNmE0MDBkNTgwZjVjNiIKdXVpZCA9ICIyMTIxNmM2YS0yZTczLTY1NjMtNmU2NS03MjY1NjY2NTcyNTAiCnZlcnNpb24gPSAiMS40LjMiCgpbW2RlcHMuUHJldHR5VGFibGVzXV0KZGVwcyA9IFsiQ3JheW9ucyIsICJMYVRlWFN0cmluZ3MiLCAiTWFya2Rvd24iLCAiUHJlY29tcGlsZVRvb2xzIiwgIlByaW50ZiIsICJSZWV4cG9ydCIsICJTdHJpbmdNYW5pcHVsYXRpb24iLCAiVGFibGVzIl0KZ2l0LXRyZWUtc2hhMSA9ICIxMTAxY2Q0NzU4MzM3MDZlNGQwZTdiMTIyMjE4MjU3MTc4ZjQ4ZjM0Igp1dWlkID0gIjA4YWJlOGQyLTBkMGMtNTc0OS1hZGZhLThhMmFjMTQwYWYwZCIKdmVyc2lvbiA9ICIyLjQuMCIKCltbZGVwcy5QcmludGZdXQpkZXBzID0gWyJVbmljb2RlIl0KdXVpZCA9ICJkZTA4NThkYS02MzAzLTVlNjctODc0NC01MWVkZGVlZWI4ZDciCgpbW2RlcHMuUkVQTF1dCmRlcHMgPSBbIkludGVyYWN0aXZlVXRpbHMiLCAiTWFya2Rvd24iLCAiU29ja2V0cyIsICJVbmljb2RlIl0KdXVpZCA9ICIzZmEwY2Q5Ni1lZWYxLTU2NzYtOGE2MS1iM2I4NzU4YmJmZmIiCgpbW2RlcHMuUmFuZG9tXV0KZGVwcyA9IFsiU0hBIl0KdXVpZCA9ICI5YTNmODI4NC1hMmM5LTVmMDItOWExMS04NDU5ODBhMWZkNWMiCgpbW2RlcHMuUmVleHBvcnRdXQpnaXQtdHJlZS1zaGExID0gIjQ1ZTQyODQyMTY2NjA3M2VhYjZmMmRhNWM5ZDMxMGQ5OWJiMTJmOWIiCnV1aWQgPSAiMTg5YTM4NjctMzA1MC01MmRhLWE4MzYtZTYzMGJhOTBhYjY5Igp2ZXJzaW9uID0gIjEuMi4yIgoKW1tkZXBzLlNIQV1dCnV1aWQgPSAiZWE4ZTkxOWMtMjQzYy01MWFmLTg4MjUtYWFhNjNjZDcyMWNlIgp2ZXJzaW9uID0gIjAuNy4wIgoKW1tkZXBzLlNRTGl0ZV1dCmRlcHMgPSBbIkRCSW50ZXJmYWNlIiwgIlJhbmRvbSIsICJTUUxpdGVfamxsIiwgIlNlcmlhbGl6YXRpb24iLCAiVGFibGVzIiwgIldlYWtSZWZTdHJpbmdzIl0KZ2l0LXRyZWUtc2hhMSA9ICIzOGI4MmRiYzUyYjdkYjQwYmVhMTgyNjg4YzdhMTEwM2QwNjk0OGE0Igp1dWlkID0gIjBhYTgxOWNkLWIwNzItNWZmNC1hNzIyLTZiYzI0YWYyOTRkOSIKdmVyc2lvbiA9ICIxLjYuMSIKCltbZGVwcy5TUUxpdGVfamxsXV0KZGVwcyA9IFsiQXJ0aWZhY3RzIiwgIkpMTFdyYXBwZXJzIiwgIkxpYmRsIiwgIlpsaWJfamxsIl0KZ2l0LXRyZWUtc2hhMSA9ICIwMDRmZmZiZTI3MTFhYmRjNzI2M2E5ODBiYmIxYWY5NjIwNzgxZGQ5Igp1dWlkID0gIjc2ZWQ0M2FlLTlhNWQtNWE2Mi04Yzc1LTMwMTg2YjgxMGNlOCIKdmVyc2lvbiA9ICIzLjQ1LjMrMCIKCltbZGVwcy5TZW50aW5lbEFycmF5c11dCmRlcHMgPSBbIkRhdGVzIiwgIlJhbmRvbSJdCmdpdC10cmVlLXNoYTEgPSAiZmYxMWFjZmZkYjA4MjQ5MzY1NzU1MDk1OWQ0ZmViNGI2MTQ5ZTczYSIKdXVpZCA9ICI5MWM1MTE1NC0zZWM0LTQxYTMtYTI0Zi0zZjIzZTIwZDYxNWMiCnZlcnNpb24gPSAiMS40LjUiCgpbW2RlcHMuU2VyaWFsaXphdGlvbl1dCnV1aWQgPSAiOWU4OGI0MmEtZjgyOS01YjBjLWJiZTktOWU5MjMxOTgxNjZiIgoKW1tkZXBzLlNvY2tldHNdXQp1dWlkID0gIjY0NjJmZTBiLTI0ZGUtNTYzMS04Njk3LWRkOTQxZjkwZGVjYyIKCltbZGVwcy5Tb3J0aW5nQWxnb3JpdGhtc11dCmRlcHMgPSBbIkRhdGFTdHJ1Y3R1cmVzIl0KZ2l0LXRyZWUtc2hhMSA9ICI2NmUwYThlNjcyYTBiZGZjYTJjM2Y1OTM3ZWZiODUzOGI5ZGRjMDg1Igp1dWlkID0gImEyYWYxMTY2LWEwOGYtNWY2NC04NDZjLTk0YTBkM2NlZjQ4YyIKdmVyc2lvbiA9ICIxLjIuMSIKCltbZGVwcy5TcGFyc2VBcnJheXNdXQpkZXBzID0gWyJMaWJkbCIsICJMaW5lYXJBbGdlYnJhIiwgIlJhbmRvbSIsICJTZXJpYWxpemF0aW9uIiwgIlN1aXRlU3BhcnNlX2psbCJdCnV1aWQgPSAiMmYwMTE4NGUtZTIyYi01ZGY1LWFlNjMtZDkzZWJhYjY5ZWFmIgp2ZXJzaW9uID0gIjEuMTAuMCIKCltbZGVwcy5TdGF0aXN0aWNzXV0KZGVwcyA9IFsiTGluZWFyQWxnZWJyYSIsICJTcGFyc2VBcnJheXMiXQp1dWlkID0gIjEwNzQ1YjE2LTc5Y2UtMTFlOC0xMWY5LTdkMTNhZDMyYTNiMiIKdmVyc2lvbiA9ICIxLjEwLjAiCgpbW2RlcHMuU3RyaW5nTWFuaXB1bGF0aW9uXV0KZGVwcyA9IFsiUHJlY29tcGlsZVRvb2xzIl0KZ2l0LXRyZWUtc2hhMSA9ICJhNmIxNjc1YTUzNmM1YWQxYTYwZTVhNTE1M2UxZmVlMTJlYjE0NmUzIgp1dWlkID0gIjg5MmEzZWRhLTdiNDItNDM2Yy04OTI4LWVhYjEyYTAyY2YwZSIKdmVyc2lvbiA9ICIwLjQuMCIKCltbZGVwcy5TdWl0ZVNwYXJzZV9qbGxdXQpkZXBzID0gWyJBcnRpZmFjdHMiLCAiTGliZGwiLCAibGliYmxhc3RyYW1wb2xpbmVfamxsIl0KdXVpZCA9ICJiZWE4N2Q0YS03ZjViLTU3NzgtOWFmZS04Y2M0NTE4NDg0NmMiCnZlcnNpb24gPSAiNy4yLjErMSIKCltbZGVwcy5UT01MXV0KZGVwcyA9IFsiRGF0ZXMiXQp1dWlkID0gImZhMjY3ZjFmLTYwNDktNGYxNC1hYTU0LTMzYmFmYWUxZWQ3NiIKdmVyc2lvbiA9ICIxLjAuMyIKCltbZGVwcy5UYWJsZVRyYWl0c11dCmRlcHMgPSBbIkl0ZXJhdG9ySW50ZXJmYWNlRXh0ZW5zaW9ucyJdCmdpdC10cmVlLXNoYTEgPSAiYzA2YjJmNTM5ZGYxYzZlZmE3OTQ0ODZhYmZiNmVkMjAyMjU2MWEzOSIKdXVpZCA9ICIzNzgzYmRiOC00YTk4LTViNmItYWY5YS01NjVmMjlhNWZlOWMiCnZlcnNpb24gPSAiMS4wLjEiCgpbW2RlcHMuVGFibGVzXV0KZGVwcyA9IFsiRGF0YUFQSSIsICJEYXRhVmFsdWVJbnRlcmZhY2VzIiwgIkl0ZXJhdG9ySW50ZXJmYWNlRXh0ZW5zaW9ucyIsICJPcmRlcmVkQ29sbGVjdGlvbnMiLCAiVGFibGVUcmFpdHMiXQpnaXQtdHJlZS1zaGExID0gIjU5OGNkN2MxZjY4ZDFlMjA1Njg5YjFjMmZlNjVhOWY4NTg0NmYyOTciCnV1aWQgPSAiYmQzNjlhZjYtYWVjMS01YWQwLWIxNmEtZjdjYzUwMDgxNjFjIgp2ZXJzaW9uID0gIjEuMTIuMCIKCltbZGVwcy5UYXJdXQpkZXBzID0gWyJBcmdUb29scyIsICJTSEEiXQp1dWlkID0gImE0ZTU2OWE2LWU4MDQtNGZhNC1iMGYzLWVlZjdhMWQ1YjEzZSIKdmVyc2lvbiA9ICIxLjEwLjAiCgpbW2RlcHMuVGVzdF1dCmRlcHMgPSBbIkludGVyYWN0aXZlVXRpbHMiLCAiTG9nZ2luZyIsICJSYW5kb20iLCAiU2VyaWFsaXphdGlvbiJdCnV1aWQgPSAiOGRmZWQ2MTQtZTIyYy01ZTA4LTg1ZTEtNjVjNTIzNGYwYjQwIgoKW1tkZXBzLlRyaWNrc11dCmdpdC10cmVlLXNoYTEgPSAiNzgyMmI5N2U5OWExNjcyYmZiMWI0OWI2NjhhNmQ0NmQ1OGQ4Y2JjYiIKdXVpZCA9ICI0MTBhNGI0ZC00OWU0LTRmYmMtYWI2ZC1jYjcxYjE3YjM3NzUiCnZlcnNpb24gPSAiMC4xLjkiCgpbW2RlcHMuVVJJc11dCmdpdC10cmVlLXNoYTEgPSAiNjdkYjZjYzdiMzgyMWUxOWViZTc1NzkxYTlkZDE5YzliMTE4OGYyYiIKdXVpZCA9ICI1YzI3NDdmOC1iN2VhLTRmZjItYmEyZS01NjNiZmQzNmIxZDQiCnZlcnNpb24gPSAiMS41LjEiCgpbW2RlcHMuVVVJRHNdXQpkZXBzID0gWyJSYW5kb20iLCAiU0hBIl0KdXVpZCA9ICJjZjcxMThhNy02OTc2LTViMWEtOWEzOS03YWRjNzJmNTkxYTQiCgpbW2RlcHMuVW5pY29kZV1dCnV1aWQgPSAiNGVjMGE4M2UtNDkzZS01MGUyLWI5YWMtOGY3MmFjZjVhOGY1IgoKW1tkZXBzLldlYWtSZWZTdHJpbmdzXV0KZGVwcyA9IFsiRGF0YUFQSSIsICJJbmxpbmVTdHJpbmdzIiwgIlBhcnNlcnMiXQpnaXQtdHJlZS1zaGExID0gImIxYmUyODU1ZWQ5ZWQ4ZWFjNTRlNWNhZmYyYWZjZGI0NDJkNTJjMjMiCnV1aWQgPSAiZWExMGQzNTMtM2Y3My01MWY4LWEyNmMtMzNjMWNiMzUxYWE1Igp2ZXJzaW9uID0gIjEuNC4yIgoKW1tkZXBzLlpsaWJfamxsXV0KZGVwcyA9IFsiTGliZGwiXQp1dWlkID0gIjgzNzc1YTU4LTFmMWQtNTEzZi1iMTk3LWQ3MTM1NGFiMDA3YSIKdmVyc2lvbiA9ICIxLjIuMTMrMSIKCltbZGVwcy5saWJibGFzdHJhbXBvbGluZV9qbGxdXQpkZXBzID0gWyJBcnRpZmFjdHMiLCAiTGliZGwiXQp1dWlkID0gIjhlODUwYjkwLTg2ZGItNTM0Yy1hMGQzLTE0NzgxNzZjN2Q5MyIKdmVyc2lvbiA9ICI1LjExLjArMCIKCltbZGVwcy5uZ2h0dHAyX2psbF1dCmRlcHMgPSBbIkFydGlmYWN0cyIsICJMaWJkbCJdCnV1aWQgPSAiOGU4NTBlZGUtNzY4OC01MzM5LWEwN2MtMzAyYWNkMmFhZjhkIgp2ZXJzaW9uID0gIjEuNTIuMCsxIgoKW1tkZXBzLnA3emlwX2psbF1dCmRlcHMgPSBbIkFydGlmYWN0cyIsICJMaWJkbCJdCnV1aWQgPSAiM2YxOWU5MzMtMzNkOC01M2IzLWFhYWItYmQ1MTEwYzNiN2EwIgp2ZXJzaW9uID0gIjE3LjQuMCsyIgoiIiIKCiMg4pWU4pWQ4pWhIENlbGwgb3JkZXI6CiMg4pWf4pSAMzNiNzA1MTYtNzY4Ny00NjNiLWE2NTQtMmNkZTNmMjUzOGFhCiMg4pWf4pSAMTVkNTVmNmUtYjhjZS00OTE2LWE4ZmEtYzliMDdiMGNjODZhCiMg4pWf4pSAYjUzZWRlOGMtNDE0ZS00MGI1LThmMzAtZmVkZjQ3YTUzMGFjCiMg4pWf4pSAODQ0MGExZGUtMTJmZS00YmI3LTkwN2YtNTJmOTMzOTM0ZWMwCiMg4pWf4pSAYTdjMWFlODgtMzRkYy00NDVjLWFkMmMtMzg3OTE5MmQxM2M3CiMg4pWf4pSAMDI5OWQ1YjctOGI5Zi00NGFlLWEyY2YtM2RiMzZlMWY4NTdhCiMg4pWg4pWQNmNlYjE5OGUtZWRkMy00OTU0LWIxZmYtYmVlZjMzYzNmMjA1CiMg4pWf4pSAN2ExMWU0NjAtOGQ2Zi00NTRjLThmZTYtMzNjNTllZWI0OTM3CiMg4pWf4pSAZWQ3YzQwZmUtZjk2Ni00YWZiLWE5NjItODk2YzlmMTA5OTQ2CiMg4pWf4pSAYTg1YjRmMTktODJlNC00MGQ1LWFmOWYtZDUyODY1NzhiMWZiCiMg4pWg4pWQNDU4MjhiYjQtZTlmNS00NmQ1LThmNDgtODgyODRmMzE4Y2M0CiMg4pWf4pSAMTkyYzQ3YTMtNzIwMi00MzUxLTg2MzgtZWM0OWVjYjkwMWM1CiMg4pWf4pSANTEzNzBhYmItZjBmYi00YWUwLWI0ODgtYmY5ZmM3NzY1NzdjCiMg4pWf4pSAMTI4N2I0NzktY2NlOS00ZWIxLTk0OWItOWRhN2QwMzI5YzI0CiMg4pWf4pSAMTk5YjQ1ZjYtMWU2My00MzkyLWFmNmEtNmE1ZWQ4M2JmNDY3CiMg4pWf4pSAOTUxM2YwMTctNzkwNS00OTVkLWE3ZWItNmNhNTkyNzMwOGRkCiMg4pWf4pSAMWU5YWI2YjAtYjI1ZC00NGFkLTkyYWUtZjEyZjkyZDkxZDVlCiMg4pWf4pSAMWQ5MGM2ODctN2U2Ny00M2VkLWI1YmYtNjhlZjkwNDBkYzk1CiMg4pWg4pWQMDUxOGFmNDQtODc4ZS00MDUyLWI0ZDQtZTdmYjNjMzVlZmVhCiMg4pWf4pSAZWMyZDQwZjctMWUwNi00MTRkLTlhNzctOWUzNDg5YmEyNzFjCiMg4pWg4pWQZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM2CiMg4pWg4pWQMzFiNzQ4MjgtZmRjNy00YjA0LThiZTAtZWE0NDgyMGY5NTU1CiMg4pWg4pWQYmIxNjdhNWUtYjIzYS00ZjA1LTliYTYtMzY4YTQ4ZjljMTIwCiMg4pWg4pWQM2ExYWEzZDgtYmVhMC00NmNiLWIwN2UtODhlOTQ4NGU3NWM2CiMg4pWg4pWQNGQ2MjkwMGEtMDgxMC00OWQxLTg2MzItYTllNzU0NGYzODFiCiMg4pWg4pWQOTExYTVhZTgtNTgwMC00ZDIwLTlkNzMtYmNjNzIwNWQzNTAxCiMg4pWg4pWQNmRhMWVmYmUtZTVhMC00Mzc2LWI4ZWEtZWQyMWYwOWRhMDg0CiMg4pWg4pWQMjMxNjc5NzEtNDY3MS00ZjE4LTg0ZGYtNzJhN2RjNTkzOGUxCiMg4pWg4pWQNjJkZGViOTEtZTAwNy00NDA3LWI0ZGMtMWI3MzkyNDgwNzgxCiMg4pWg4pWQYTc3Y2NmNmItZGI2Ny00YTA3LTgzM2EtMjEwYWZjY2MzOWU1CiMg4pWg4pWQZTMxMmQ0OGQtOWQ4ZC00ZjQyLWIxMzQtN2ZlMzAyM2RmMjcwCiMg4pWg4pWQNzk3MDM3NDUtNmMwZS00MjAxLWE1OGQtZTc1OTk0ZmFiNGU0CiMg4pWf4pSAMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxCiMg4pWf4pSAMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAyCg==";
window.pluto_disable_ui = true;
window.pluto_slider_server_url = undefined;
window.pluto_binder_url = "https://mybinder.org/v2/gh/fonsp/pluto-on-binder/v0.19.46";
window.pluto_statefile = "data:;base64,3gASpWJvbmRzg75zaW5nbGVfcmVzdWx0X2Zvcl9pZF9zaG93X2NvbHOBpXZhbHVln8PDw8PDw8PDw8PDw8PDw6Vwc2JpZIGldmFsdWXM671leHRyYV9yZXN1bHRfZm9yX2lkX3Nob3dfY29sc4GldmFsdWXcABLDw8PDw8PDw8PDw8PDw8PDw8OsY2VsbF9yZXN1bHRz3gAg2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmGKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R52ao8ZGl2IGNsYXNzPSJtYXJrZG93biI+PHA+UFNCb2FyZCBpZOOCkuWFpeWKmzogPGJvbmQgZGVmPSJwc2JpZCIgdW5pcXVlX2lkPSJtNzFVUG0vM01Xa3UiPjxpbnB1dCB0eXBlPSdudW1iZXInIG1pbj0nMCcgc3RlcD0nMScgbWF4PSc5OTk5OTknIHZhbHVlPScxNjQnPjwvYm9uZD48L3A+CjwvZGl2PqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8EbkJQDbBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkMTVkNTVmNmUtYjhjZS00OTE2LWE4ZmEtYzliMDdiMGNjODZhuWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOABLgYLVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDE5OWI0NWY2LTFlNjMtNDM5Mi1hZjZhLTZhNWVkODNiZjQ2N4qmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmgpG1pbWWqdGV4dC9wbGFpbqxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8GPzZRk7BwZXJzaXN0X2pzX3N0YXRlw7doYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkMTk5YjQ1ZjYtMWU2My00MzkyLWFmNmEtNmE1ZWQ4M2JmNDY3uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXN92G1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SRhODViNGYxOS04MmU0LTQwZDUtYWY5Zi1kNTI4NjU3OGIxZmKKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R52hLkPGJvbmQgZGVmPSJzaW5nbGVfcmVzdWx0X2Zvcl9pZF9zaG93X2NvbHMiIHVuaXF1ZV9pZD0ibFh5MkxwSWRpOEQvIj48c3BhbiBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz4JPHRhYmxlPgoJCTx0cj4KCQkJPHRoPiDjgrPjg6njg6AgPC90aD4KCQkJPHRoPiDooajnpLogPC90aD4KCQk8L3RyPgoJCQk8dHI+CgkJPHRkPiBpZCA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naWlwdXVtc2Jhcicgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gcnVuaWQgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2lpcHV1bXNiYXInIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IHBzYm9hcmRfaWQgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2lpcHV1bXNiYXInIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IGRhdWdodGVyYm9hcmRfaWQgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2lpcHV1bXNiYXInIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IHBvc2l0aW9uIDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdpaXB1dW1zYmFyJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiByZXNpc3RhbmNlX3Rlc3RfcGFzc2VkIDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdpaXB1dW1zYmFyJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBxc3BpcCA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naWlwdXVtc2Jhcicgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gcmVjb3YgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2lpcHV1bXNiYXInIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IHBvd2VyIDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdpaXB1dW1zYmFyJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBjbG9jayA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naWlwdXVtc2Jhcicgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gYXNkdHAgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2lpcHV1bXNiYXInIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IHJlc2V0IDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdpaXB1dW1zYmFyJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBxYXFjX3Jlc3VsdCA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naWlwdXVtc2Jhcicgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gbHZkc190eF9za2V3IDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdpaXB1dW1zYmFyJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBub3RlIDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdpaXB1dW1zYmFyJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+CgoJPC90YWJsZT4KPHNjcmlwdCBpZD0naWlwdXVtc2Jhcic+CmNvbnN0IGRpdiA9IGN1cnJlbnRTY3JpcHQucGFyZW50RWxlbWVudApsZXQga2V5ID0gImlpcHV1bXNiYXIiCmNvbnN0IGlucHV0cyA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKGBwbC1jb21iaW5lZC1jaGlsZFtrZXk9JyR7a2V5fSddID4gKjpmaXJzdC1jaGlsZGApCgpjb25zdCB2YWx1ZXMgPSBBcnJheShpbnB1dHMubGVuZ3RoKQoKaW5wdXRzLmZvckVhY2goYXN5bmMgKGVsLGkpID0+IHsKCWVsLm9uaW5wdXQgPSAoZSkgPT4gewoJCWUuc3RvcFByb3BhZ2F0aW9uKCkKCX0KCWNvbnN0IGdlbiA9IEdlbmVyYXRvcnMuaW5wdXQoZWwpCgl3aGlsZSh0cnVlKSB7CgkJdmFsdWVzW2ldID0gYXdhaXQgZ2VuLm5leHQoKS52YWx1ZQoJCWRpdi5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaW5wdXQiLCB7fSkpCgl9Cn0pCgoKbGV0IHNldF9pbnB1dF92YWx1ZSA9ICgoKSA9PiB7CglsZXQgcmVzdWx0ID0gbnVsbAoJdHJ5IHsKCXJlc3VsdCA9IHNldEJvdW5kRWxlbWVudFZhbHVlTGlrZVBsdXRvCn0gY2F0Y2ggKGUpIHsKCXJlc3VsdCA9ICgoaW5wdXQsIG5ld192YWx1ZSkgPT4gewoJLy8gZmFsbGJhY2sgaW4gY2FzZSBodHRwczovL2dpdGh1Yi5jb20vZm9uc3AvUGx1dG8uamwvcHVsbC8xNzU1IGlzIG5vdCBhdmFpbGFibGUKICAgIGlmIChuZXdfdmFsdWUgPT0gbnVsbCkgewogICAgICAgIC8vQHRzLWlnbm9yZQogICAgICAgIGlucHV0LnZhbHVlID0gbmV3X3ZhbHVlCiAgICAgICAgcmV0dXJuCiAgICB9CiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7CiAgICAgICAgc3dpdGNoIChpbnB1dC50eXBlKSB7CiAgICAgICAgICAgIGNhc2UgInJhbmdlIjoKICAgICAgICAgICAgY2FzZSAibnVtYmVyIjogewogICAgICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlQXNOdW1iZXIgIT09IG5ld192YWx1ZSkgewogICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlQXNOdW1iZXIgPSBuZXdfdmFsdWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgImRhdGUiOiB7CiAgICAgICAgICAgICAgICBpZiAoaW5wdXQudmFsdWVBc0RhdGUgPT0gbnVsbCB8fCBOdW1iZXIoaW5wdXQudmFsdWVBc0RhdGUpICE9PSBOdW1iZXIobmV3X3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlQXNEYXRlID0gbmV3X3ZhbHVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICJjaGVja2JveCI6IHsKICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGVja2VkICE9PSBuZXdfdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gbmV3X3ZhbHVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICJmaWxlIjogewogICAgICAgICAgICAgICAgLy8gQ2FuJ3Qgc2V0IGZpbGVzIDooCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoaW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCAmJiBpbnB1dC5tdWx0aXBsZSkgewogICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiBBcnJheS5mcm9tKGlucHV0Lm9wdGlvbnMpKSB7CiAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IG5ld192YWx1ZS5pbmNsdWRlcyhvcHRpb24udmFsdWUpCiAgICAgICAgfQogICAgICAgIHJldHVybgogICAgfQogICAgLy9AdHMtaWdub3JlCiAgICBpZiAoaW5wdXQudmFsdWUgIT09IG5ld192YWx1ZSkgewogICAgICAgIC8vQHRzLWlnbm9yZQogICAgICAgIGlucHV0LnZhbHVlID0gbmV3X3ZhbHVlCiAgICB9Cn0pCn0KcmV0dXJuIHJlc3VsdAp9KSgpCgoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGRpdiwgJ3ZhbHVlJywgewoJZ2V0OiAoKSA9PiB2YWx1ZXMsCglzZXQ6IChuZXd2YWxzKSA9PiB7CgkJaWYoIW5ld3ZhbHMpIHsKCQkJcmV0dXJuCgkJfQoJCWlucHV0cy5mb3JFYWNoKChlbCwgaSkgPT4gewoJCQl2YWx1ZXNbaV0gPSBuZXd2YWxzW2ldCgkJCXNldF9pbnB1dF92YWx1ZShlbCwgbmV3dmFsc1tpXSkKCQl9KQp9LAoJY29uZmlndXJhYmxlOiB0cnVlLAp9KTsKCjwvc2NyaXB0Pjwvc3Bhbj48L2JvbmQ+pG1pbWWpdGV4dC9odG1srHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwXMMSyZsHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SRhODViNGYxOS04MmU0LTQwZDUtYWY5Zi1kNTI4NjU3OGIxZmK5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AEtrAtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkOTUxM2YwMTctNzkwNS00OTVkLWE3ZWItNmNhNTkyNzMwOGRkiqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keaCkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwY/NoA9sHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQ5NTEzZjAxNy03OTA1LTQ5NWQtYTdlYi02Y2E1OTI3MzA4ZGS5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AAQavtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkNDU4MjhiYjQtZTlmNS00NmQ1LThmNDgtODgyODRmMzE4Y2M0iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedoVMDxib25kIGRlZj0iZXh0cmFfcmVzdWx0X2Zvcl9pZF9zaG93X2NvbHMiIHVuaXF1ZV9pZD0iL0hGS0FMQTY1cUVjIj48c3BhbiBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz4JPHRhYmxlPgoJCTx0cj4KCQkJPHRoPiDjgrPjg6njg6AgPC90aD4KCQkJPHRoPiDooajnpLogPC90aD4KCQk8L3RyPgoJCQk8dHI+CgkJPHRkPiBpZCA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gcnVuaWQgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2h6eHh1amZkeHAnIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IHBzYm9hcmRfaWQgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2h6eHh1amZkeHAnIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IG51bV90ZXN0cyA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gaW5zdWZmaWNpZW50X3Jlc2V0X3dpdGhfMTAgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2h6eHh1amZkeHAnIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IHJlc2V0X2ZhaWxlZF90aG91Z2hfcmVjb25maWdfZG9uZSA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gYWx3YXlzX2hpdF9mbGFnX3RydWUgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2h6eHh1amZkeHAnIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IGRhY19pc18wIDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdoenh4dWpmZHhwJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBiY2lkX3NoaWZ0IDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdoenh4dWpmZHhwJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBlZmZpY2llbmN5Xzk5cGVyY2VudCA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gYmNpZF9mYWlsXzExMSA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gYmNpZF9mYWlsXzAwMCA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gbG93X2VmZmljaWVuY3kgPC90ZD4KCQk8dGQ+IDxwbC1jb21iaW5lZC1jaGlsZCBrZXk9J2h6eHh1amZkeHAnIHN0eWxlPSdkaXNwbGF5OiBjb250ZW50czsnPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD48L3BsLWNvbWJpbmVkLWNoaWxkPiA8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+IGJjaWRfZmFpbCA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gaW52YWxpZF9yZWdpc3Rlcl92YWx1ZSA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD4gcG93ZXJfb3V0X29mX3JhbmdlIDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdoenh4dWpmZHhwJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBub3RlIDwvdGQ+CgkJPHRkPiA8cGwtY29tYmluZWQtY2hpbGQga2V5PSdoenh4dWpmZHhwJyBzdHlsZT0nZGlzcGxheTogY29udGVudHM7Jz48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+PC9wbC1jb21iaW5lZC1jaGlsZD4gPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPiBwb3NpdGlvbiA8L3RkPgoJCTx0ZD4gPHBsLWNvbWJpbmVkLWNoaWxkIGtleT0naHp4eHVqZmR4cCcgc3R5bGU9J2Rpc3BsYXk6IGNvbnRlbnRzOyc+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPjwvcGwtY29tYmluZWQtY2hpbGQ+IDwvdGQ+Cgk8L3RyPgoKCTwvdGFibGU+CjxzY3JpcHQgaWQ9J2h6eHh1amZkeHAnPgpjb25zdCBkaXYgPSBjdXJyZW50U2NyaXB0LnBhcmVudEVsZW1lbnQKbGV0IGtleSA9ICJoenh4dWpmZHhwIgpjb25zdCBpbnB1dHMgPSBkaXYucXVlcnlTZWxlY3RvckFsbChgcGwtY29tYmluZWQtY2hpbGRba2V5PScke2tleX0nXSA+ICo6Zmlyc3QtY2hpbGRgKQoKY29uc3QgdmFsdWVzID0gQXJyYXkoaW5wdXRzLmxlbmd0aCkKCmlucHV0cy5mb3JFYWNoKGFzeW5jIChlbCxpKSA9PiB7CgllbC5vbmlucHV0ID0gKGUpID0+IHsKCQllLnN0b3BQcm9wYWdhdGlvbigpCgl9Cgljb25zdCBnZW4gPSBHZW5lcmF0b3JzLmlucHV0KGVsKQoJd2hpbGUodHJ1ZSkgewoJCXZhbHVlc1tpXSA9IGF3YWl0IGdlbi5uZXh0KCkudmFsdWUKCQlkaXYuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImlucHV0Iiwge30pKQoJfQp9KQoKCmxldCBzZXRfaW5wdXRfdmFsdWUgPSAoKCkgPT4gewoJbGV0IHJlc3VsdCA9IG51bGwKCXRyeSB7CglyZXN1bHQgPSBzZXRCb3VuZEVsZW1lbnRWYWx1ZUxpa2VQbHV0bwp9IGNhdGNoIChlKSB7CglyZXN1bHQgPSAoKGlucHV0LCBuZXdfdmFsdWUpID0+IHsKCS8vIGZhbGxiYWNrIGluIGNhc2UgaHR0cHM6Ly9naXRodWIuY29tL2ZvbnNwL1BsdXRvLmpsL3B1bGwvMTc1NSBpcyBub3QgYXZhaWxhYmxlCiAgICBpZiAobmV3X3ZhbHVlID09IG51bGwpIHsKICAgICAgICAvL0B0cy1pZ25vcmUKICAgICAgICBpbnB1dC52YWx1ZSA9IG5ld192YWx1ZQogICAgICAgIHJldHVybgogICAgfQogICAgaWYgKGlucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkgewogICAgICAgIHN3aXRjaCAoaW5wdXQudHlwZSkgewogICAgICAgICAgICBjYXNlICJyYW5nZSI6CiAgICAgICAgICAgIGNhc2UgIm51bWJlciI6IHsKICAgICAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZUFzTnVtYmVyICE9PSBuZXdfdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZUFzTnVtYmVyID0gbmV3X3ZhbHVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICJkYXRlIjogewogICAgICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlQXNEYXRlID09IG51bGwgfHwgTnVtYmVyKGlucHV0LnZhbHVlQXNEYXRlKSAhPT0gTnVtYmVyKG5ld192YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZUFzRGF0ZSA9IG5ld192YWx1ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSAiY2hlY2tib3giOiB7CiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hlY2tlZCAhPT0gbmV3X3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IG5ld192YWx1ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSAiZmlsZSI6IHsKICAgICAgICAgICAgICAgIC8vIENhbid0IHNldCBmaWxlcyA6KAogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQgJiYgaW5wdXQubXVsdGlwbGUpIHsKICAgICAgICBmb3IgKGxldCBvcHRpb24gb2YgQXJyYXkuZnJvbShpbnB1dC5vcHRpb25zKSkgewogICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBuZXdfdmFsdWUuaW5jbHVkZXMob3B0aW9uLnZhbHVlKQogICAgICAgIH0KICAgICAgICByZXR1cm4KICAgIH0KICAgIC8vQHRzLWlnbm9yZQogICAgaWYgKGlucHV0LnZhbHVlICE9PSBuZXdfdmFsdWUpIHsKICAgICAgICAvL0B0cy1pZ25vcmUKICAgICAgICBpbnB1dC52YWx1ZSA9IG5ld192YWx1ZQogICAgfQp9KQp9CnJldHVybiByZXN1bHQKfSkoKQoKCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkaXYsICd2YWx1ZScsIHsKCWdldDogKCkgPT4gdmFsdWVzLAoJc2V0OiAobmV3dmFscykgPT4gewoJCWlmKCFuZXd2YWxzKSB7CgkJCXJldHVybgoJCX0KCQlpbnB1dHMuZm9yRWFjaCgoZWwsIGkpID0+IHsKCQkJdmFsdWVzW2ldID0gbmV3dmFsc1tpXQoJCQlzZXRfaW5wdXRfdmFsdWUoZWwsIG5ld3ZhbHNbaV0pCgkJfSkKfSwKCWNvbmZpZ3VyYWJsZTogdHJ1ZSwKfSk7Cgo8L3NjcmlwdD48L3NwYW4+PC9ib25kPqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8GPzfu+rBwZXJzaXN0X2pzX3N0YXRlw7doYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkNDU4MjhiYjQtZTlmNS00NmQ1LThmNDgtODgyODRmMzE4Y2M0uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOABJhi7VwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MIqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmDpHJvd3OckgGTkqExqnRleHQvcGxhaW6SozEwMqp0ZXh0L3BsYWlukqVmYWxzZap0ZXh0L3BsYWlukgKTkqEyqnRleHQvcGxhaW6SozEwMKp0ZXh0L3BsYWlukqVmYWxzZap0ZXh0L3BsYWlukgOTkqEzqnRleHQvcGxhaW6Sojc2qnRleHQvcGxhaW6SpHRydWWqdGV4dC9wbGFpbpIEk5KhNKp0ZXh0L3BsYWlukqI3Nap0ZXh0L3BsYWlukqR0cnVlqnRleHQvcGxhaW6SBZOSoTWqdGV4dC9wbGFpbpKiNzSqdGV4dC9wbGFpbpKkdHJ1Zap0ZXh0L3BsYWlukgaTkqE2qnRleHQvcGxhaW6SojczqnRleHQvcGxhaW6SpHRydWWqdGV4dC9wbGFpbpIHk5KhN6p0ZXh0L3BsYWlukqI2OKp0ZXh0L3BsYWlukqR0cnVlqnRleHQvcGxhaW6SCJOSoTiqdGV4dC9wbGFpbpKiNjeqdGV4dC9wbGFpbpKkdHJ1Zap0ZXh0L3BsYWlukgmTkqE5qnRleHQvcGxhaW6SojY2qnRleHQvcGxhaW6SpHRydWWqdGV4dC9wbGFpbpIKk5KiMTCqdGV4dC9wbGFpbpKiNjWqdGV4dC9wbGFpbpKkdHJ1Zap0ZXh0L3BsYWlupG1vcmWSzQNhk5KjODY1qnRleHQvcGxhaW6SozgzNKp0ZXh0L3BsYWlukqR0cnVlqnRleHQvcGxhaW6ob2JqZWN0aWSwYWE2MTdiZmQyYWYwMTcwMaZzY2hlbWGCpW5hbWVzk6JpZKZwc2JfaWSmcGFzc2VkpXR5cGVzk6VJbnQ2NKVJbnQ2NKRCb29spG1pbWXZImFwcGxpY2F0aW9uL3ZuZC5wbHV0by50YWJsZStvYmplY3Sscm9vdGFzc2lnbmVltXFhcWNfcmVzaXN0YW5jZV9jaGVja7JsYXN0X3J1bl90aW1lc3RhbXDLQdm/BG5BY+CwcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MLlkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgA1eVK1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SQwNTE4YWY0NC04NzhlLTQwNTItYjRkNC1lN2ZiM2MzNWVmZWGKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R5haZwcmVmaXilSW50NjSoZWxlbWVudHORkgGSojk5qnRleHQvcGxhaW6kdHlwZaVBcnJheaxwcmVmaXhfc2hvcnSgqG9iamVjdGlksDNjYTMzYmIwMDRmMzdhMTSkbWltZdkhYXBwbGljYXRpb24vdm5kLnBsdXRvLnRyZWUrb2JqZWN0rHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwRuQNE9sHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQwNTE4YWY0NC04NzhlLTQwNTItYjRkNC1lN2ZiM2MzNWVmZWG5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AA6xxtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkMTkyYzQ3YTMtNzIwMi00MzUxLTg2MzgtZWM0OWVjYjkwMWM1iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keaCkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwY/NrdWsHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQxOTJjNDdhMy03MjAyLTQzNTEtODYzOC1lYzQ5ZWNiOTAxYzW5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4ABIlotXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkMzFiNzQ4MjgtZmRjNy00YjA0LThiZTAtZWE0NDgyMGY5NTU1iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedpNjDxzY3JpcHQ+CgkKLy8gTG9hZCB0aGUgbGlicmFyeSBmb3IgY29uc2lzdGVudCBzbW9vdGggc2Nyb2xsaW5nCmNvbnN0IHtkZWZhdWx0OiBzY3JvbGxJbnRvVmlld30gPSBhd2FpdCBpbXBvcnQoImRhdGE6dGV4dC9qYXZhc2NyaXB0O2Jhc2U2NCxkbUZ5SUZFOVpUMCtJbTlpYW1WamRDSTlQWFI1Y0dWdlppQmxKaVp1ZFd4c0lUMWxKaVl4UFQwOVpTNXViMlJsVkhsd1pTeFZQU2hsTEhRcFBUNG9JWFI4ZkNKb2FXUmtaVzRpSVQwOVpTa21KaUoyYVhOcFlteGxJaUU5UFdVbUppSmpiR2x3SWlFOVBXVXNRVDBvWlN4MEtUMCtlMmxtS0dVdVkyeHBaVzUwU0dWcFoyaDBQR1V1YzJOeWIyeHNTR1ZwWjJoMGZIeGxMbU5zYVdWdWRGZHBaSFJvUEdVdWMyTnliMnhzVjJsa2RHZ3BlMnhsZENCc1BXZGxkRU52YlhCMWRHVmtVM1I1YkdVb1pTeHVkV3hzS1R0eVpYUjFjbTRnVlNoc0xtOTJaWEptYkc5M1dTeDBLWHg4VlNoc0xtOTJaWEptYkc5M1dDeDBLWHg4S0dVOVBudHNaWFFnZEQwb1pUMCtlMmxtS0NGbExtOTNibVZ5Ukc5amRXMWxiblI4ZkNGbExtOTNibVZ5Ukc5amRXMWxiblF1WkdWbVlYVnNkRlpwWlhjcGNtVjBkWEp1SUc1MWJHdzdkSEo1ZTNKbGRIVnliaUJsTG05M2JtVnlSRzlqZFcxbGJuUXVaR1ZtWVhWc2RGWnBaWGN1Wm5KaGJXVkZiR1Z0Wlc1MGZXTmhkR05vZTNKbGRIVnliaUJ1ZFd4c2ZYMHBLR1VwTzNKbGRIVnliaUVoZENZbUtIUXVZMnhwWlc1MFNHVnBaMmgwUEdVdWMyTnliMnhzU0dWcFoyaDBmSHgwTG1Oc2FXVnVkRmRwWkhSb1BHVXVjMk55YjJ4c1YybGtkR2dwZlNrb1pTbDljbVYwZFhKdUlURjlMRmc5S0dVc2RDeHNMRzhzYml4eUxHa3NjeWs5UG5JOFpTWW1hVDUwZkh4eVBtVW1KbWs4ZEQ4d09uSThQV1VtSm5NOFBXeDhmR2srUFhRbUpuTStQV3cvY2kxbExXODZhVDUwSmlaelBHeDhmSEk4WlNZbWN6NXNQMmt0ZEN0dU9qQXNKRDFsUFQ1bExuQmhjbVZ1ZEVWc1pXMWxiblEvUHlobExtZGxkRkp2YjNST2IyUmxLQ2t1YUc5emRIeDhiblZzYkNrc2RIUTlLR1VzZENrOVBudDJZWElnYkN4dkxHNHNjanRwWmloMGVYQmxiMllnWkc5amRXMWxiblErSW5VaUtYSmxkSFZ5Ymx0ZE8yeGxkSHR6WTNKdmJHeE5iMlJsT21rc1lteHZZMnM2Y3l4cGJteHBibVU2WVN4aWIzVnVaR0Z5ZVRwb0xITnJhWEJQZG1WeVpteHZkMGhwWkdSbGJrVnNaVzFsYm5Sek9uVjlQWFFzWnowaVpuVnVZM1JwYjI0aVBUMTBlWEJsYjJZZ2FEOW9PbVU5UG1VaFBUMW9PMmxtS0NGUktHVXBLWFJvY205M0lGUjVjR1ZGY25KdmNpZ2lTVzUyWVd4cFpDQjBZWEpuWlhRaUtUdHNaWFFnZGoxa2IyTjFiV1Z1ZEM1elkzSnZiR3hwYm1kRmJHVnRaVzUwZkh4a2IyTjFiV1Z1ZEM1a2IyTjFiV1Z1ZEVWc1pXMWxiblFzYlQxYlhTeDNQV1U3Wm05eUtEdFJLSGNwSmlabktIY3BPeWw3YVdZb0tIYzlKQ2gzS1NrOVBUMTJLWHR0TG5CMWMyZ29keWs3WW5KbFlXdDliblZzYkNFOWR5WW1kejA5UFdSdlkzVnRaVzUwTG1KdlpIa21Ka0VvZHlrbUppRkJLR1J2WTNWdFpXNTBMbVJ2WTNWdFpXNTBSV3hsYldWdWRDbDhmRzUxYkd3aFBYY21Ka0VvZHl4MUtTWW1iUzV3ZFhOb0tIY3BmV3hsZENCWFBXNTFiR3doUFNodlBXNTFiR3c5UFNoc1BYZHBibVJ2ZHk1MmFYTjFZV3hXYVdWM2NHOXlkQ2svZG05cFpDQXdPbXd1ZDJsa2RHZ3BQMjg2YVc1dVpYSlhhV1IwYUN4SVBXNTFiR3doUFNoeVBXNTFiR3c5UFNodVBYZHBibVJ2ZHk1MmFYTjFZV3hXYVdWM2NHOXlkQ2svZG05cFpDQXdPbTR1YUdWcFoyaDBLVDl5T21sdWJtVnlTR1ZwWjJoMExIdHpZM0p2Ykd4WU9sOHNjMk55YjJ4c1dUcDRmVDEzYVc1a2IzY3NlMmhsYVdkb2REcEZMSGRwWkhSb09sUXNkRzl3T2s0c2NtbG5hSFE2VEN4aWIzUjBiMjA2V1N4c1pXWjBPa045UFdVdVoyVjBRbTkxYm1ScGJtZERiR2xsYm5SU1pXTjBLQ2tzVWowaWMzUmhjblFpUFQwOWMzeDhJbTVsWVhKbGMzUWlQVDA5Y3o5T09pSmxibVFpUFQwOWN6OVpPazRyUlM4eUxGWTlJbU5sYm5SbGNpSTlQVDFoUDBNclZDOHlPaUpsYm1RaVBUMDlZVDlNT2tNc1FqMWJYVHRtYjNJb2JHVjBJRVE5TUR0RVBHMHViR1Z1WjNSb08wUXJLeWw3YkdWMElFODliVnRFWFN4N2FHVnBaMmgwT21vc2QybGtkR2c2U1N4MGIzQTZVeXh5YVdkb2REcHhMR0p2ZEhSdmJUcDZMR3hsWm5RNlJuMDlUeTVuWlhSQ2IzVnVaR2x1WjBOc2FXVnVkRkpsWTNRb0tUdHBaaWdpYVdZdGJtVmxaR1ZrSWowOVBXa21KazQrUFRBbUprTStQVEFtSmxrOFBVZ21Ka3c4UFZjbUprNCtQVk1tSmxrOFBYb21Ka00rUFVZbUprdzhQWEVwWW5KbFlXczdiR1YwSUVjOVoyVjBRMjl0Y0hWMFpXUlRkSGxzWlNoUEtTeEtQWEJoY25ObFNXNTBLRWN1WW05eVpHVnlUR1ZtZEZkcFpIUm9MREV3S1N4TFBYQmhjbk5sU1c1MEtFY3VZbTl5WkdWeVZHOXdWMmxrZEdnc01UQXBMRkE5Y0dGeWMyVkpiblFvUnk1aWIzSmtaWEpTYVdkb2RGZHBaSFJvTERFd0tTeGFQWEJoY25ObFNXNTBLRWN1WW05eVpHVnlRbTkwZEc5dFYybGtkR2dzTVRBcExHVmxQVEFzWlhROU1DeGxiRDBpYjJabWMyVjBWMmxrZEdnaWFXNGdUejlQTG05bVpuTmxkRmRwWkhSb0xVOHVZMnhwWlc1MFYybGtkR2d0U2kxUU9qQXNaVzg5SW05bVpuTmxkRWhsYVdkb2RDSnBiaUJQUDA4dWIyWm1jMlYwU0dWcFoyaDBMVTh1WTJ4cFpXNTBTR1ZwWjJoMExVc3RXam93TEdWdVBTSnZabVp6WlhSWGFXUjBhQ0pwYmlCUFB6QTlQVDFQTG05bVpuTmxkRmRwWkhSb1B6QTZTUzlQTG05bVpuTmxkRmRwWkhSb09qQXNaWEk5SW05bVpuTmxkRWhsYVdkb2RDSnBiaUJQUHpBOVBUMVBMbTltWm5ObGRFaGxhV2RvZEQ4d09tb3ZUeTV2Wm1aelpYUklaV2xuYUhRNk1EdHBaaWgyUFQwOVR5bGxaVDBpYzNSaGNuUWlQVDA5Y3o5U09pSmxibVFpUFQwOWN6OVNMVWc2SW01bFlYSmxjM1FpUFQwOWN6OVlLSGdzZUN0SUxFZ3NTeXhhTEhnclVpeDRLMUlyUlN4RktUcFNMVWd2TWl4bGREMGljM1JoY25RaVBUMDlZVDlXT2lKalpXNTBaWElpUFQwOVlUOVdMVmN2TWpvaVpXNWtJajA5UFdFL1ZpMVhPbGdvWHl4ZksxY3NWeXhLTEZBc1h5dFdMRjhyVml0VUxGUXBMR1ZsUFUxaGRHZ3ViV0Y0S0RBc1pXVXJlQ2tzWlhROVRXRjBhQzV0WVhnb01DeGxkQ3RmS1R0bGJITmxlMlZsUFNKemRHRnlkQ0k5UFQxelAxSXRVeTFMT2lKbGJtUWlQVDA5Y3o5U0xYb3JXaXRsYnpvaWJtVmhjbVZ6ZENJOVBUMXpQMWdvVXl4NkxHb3NTeXhhSzJWdkxGSXNVaXRGTEVVcE9sSXRLRk1yYWk4eUtTdGxieTh5TEdWMFBTSnpkR0Z5ZENJOVBUMWhQMVl0UmkxS09pSmpaVzUwWlhJaVBUMDlZVDlXTFNoR0swa3ZNaWtyWld3dk1qb2laVzVrSWowOVBXRS9WaTF4SzFBclpXdzZXQ2hHTEhFc1NTeEtMRkFyWld3c1ZpeFdLMVFzVkNrN2JHVjBlM05qY205c2JFeGxablE2Wldrc2MyTnliMnhzVkc5d09tVmtmVDFQTzJWbFBVMWhkR2d1YldGNEtEQXNUV0YwYUM1dGFXNG9aV1FyWldVdlpYSXNUeTV6WTNKdmJHeElaV2xuYUhRdGFpOWxjaXRsYnlrcExHVjBQVTFoZEdndWJXRjRLREFzVFdGMGFDNXRhVzRvWldrclpYUXZaVzRzVHk1elkzSnZiR3hYYVdSMGFDMUpMMlZ1SzJWc0tTa3NVaXM5WldRdFpXVXNWaXM5WldrdFpYUjlRaTV3ZFhOb0tIdGxiRHBQTEhSdmNEcGxaU3hzWldaME9tVjBmU2w5Y21WMGRYSnVJRUo5TEdZOVpUMCtlM1poY2lCME8zSmxkSFZ5YmlFeFBUMDlaVDk3WW14dlkyczZJbVZ1WkNJc2FXNXNhVzVsT2lKdVpXRnlaWE4wSW4wNktIUTlaU2s5UFQxUFltcGxZM1FvZENrbUpqQWhQVDFQWW1wbFkzUXVhMlY1Y3loMEtTNXNaVzVuZEdnL1pUcDdZbXh2WTJzNkluTjBZWEowSWl4cGJteHBibVU2SW01bFlYSmxjM1FpZlgwN1puVnVZM1JwYjI0Z1l5aGxMSFFwZTNaaGNpQnNPMmxtS0NGbExtbHpRMjl1Ym1WamRHVmtmSHdoS0dVOVBudHNaWFFnZEQxbE8yWnZjaWc3ZENZbWRDNXdZWEpsYm5ST2IyUmxPeWw3YVdZb2RDNXdZWEpsYm5ST2IyUmxQVDA5Wkc5amRXMWxiblFwY21WMGRYSnVJVEE3ZEQxMExuQmhjbVZ1ZEU1dlpHVWdhVzV6ZEdGdVkyVnZaaUJUYUdGa2IzZFNiMjkwUDNRdWNHRnlaVzUwVG05a1pTNW9iM04wT25RdWNHRnlaVzUwVG05a1pYMXlaWFIxY200aE1YMHBLR1VwS1hKbGRIVnlianRwWmlnaWIySnFaV04wSWowOWRIbHdaVzltS0d3OWRDa21KaUptZFc1amRHbHZiaUk5UFhSNWNHVnZaaUJzTG1KbGFHRjJhVzl5S1hKbGRIVnliaUIwTG1KbGFHRjJhVzl5S0hSMEtHVXNkQ2twTzJ4bGRDQnZQU0ppYjI5c1pXRnVJajA5ZEhsd1pXOW1JSFI4Zkc1MWJHdzlQWFEvZG05cFpDQXdPblF1WW1Wb1lYWnBiM0k3Wm05eUtHeGxkSHRsYkRwdUxIUnZjRHB5TEd4bFpuUTZhWDF2WmlCMGRDaGxMR1lvZENrcEtXNHVjMk55YjJ4c0tIdDBiM0E2Y2l4c1pXWjBPbWtzWW1Wb1lYWnBiM0k2YjMwcGZYWmhjaUJrTEhBOUtDazlQaWhrZkh3b1pEMGljR1Z5Wm05eWJXRnVZMlVpYVc0Z2QybHVaRzkzUDNCbGNtWnZjbTFoYm1ObExtNXZkeTVpYVc1a0tIQmxjbVp2Y20xaGJtTmxLVHBFWVhSbExtNXZkeWtzWkNncEtUdG1kVzVqZEdsdmJpQmlLR1VwZTJ4bGRDQjBQVTFoZEdndWJXbHVLQ2h3S0NrdFpTNXpkR0Z5ZEZScGJXVXBMMlV1WkhWeVlYUnBiMjRzTVNrc2JEMWxMbVZoYzJVb2RDa3NiejFsTG5OMFlYSjBXQ3NvWlM1NExXVXVjM1JoY25SWUtTcHNMRzQ5WlM1emRHRnlkRmtyS0dVdWVTMWxMbk4wWVhKMFdTa3FiRHRsTG0xbGRHaHZaQ2h2TEc0c2RDeHNLU3h2SVQwOVpTNTRmSHh1SVQwOVpTNTVQM0psY1hWbGMzUkJibWx0WVhScGIyNUdjbUZ0WlNnb0tUMCtZaWhsS1NrNlpTNWpZaWdwZldaMWJtTjBhVzl1SUhrb1pTeDBMR3dwZTJ4bGRDQnZQV0Z5WjNWdFpXNTBjeTVzWlc1bmRHZytNeVltZG05cFpDQXdJVDA5WVhKbmRXMWxiblJ6V3pOZFAyRnlaM1Z0Wlc1MGMxc3pYVG8yTURBc2JqMWhjbWQxYldWdWRITXViR1Z1WjNSb1BqUW1Kblp2YVdRZ01DRTlQV0Z5WjNWdFpXNTBjMXMwWFQ5aGNtZDFiV1Z1ZEhOYk5GMDZaVDArTVNzdExXVXFaU3BsS21VcVpTeHlQV0Z5WjNWdFpXNTBjeTVzWlc1bmRHZytOVDloY21kMWJXVnVkSE5iTlYwNmRtOXBaQ0F3TEdrOVlYSm5kVzFsYm5SekxteGxibWQwYUQ0MlAyRnlaM1Z0Wlc1MGMxczJYVHAyYjJsa0lEQXNjejFsTG5OamNtOXNiRXhsWm5Rc1lUMWxMbk5qY205c2JGUnZjRHRpS0h0elkzSnZiR3hoWW14bE9tVXNiV1YwYUc5a0tIUXNiQ3h2TEc0cGUyeGxkQ0J5UFUxaGRHZ3VZMlZwYkNoMEtTeHpQVTFoZEdndVkyVnBiQ2hzS1R0bExuTmpjbTlzYkV4bFpuUTljaXhsTG5OamNtOXNiRlJ2Y0QxekxHay9MaWg3ZEdGeVoyVjBPbVVzWld4aGNITmxaRHB2TEhaaGJIVmxPbTRzYkdWbWREcHlMSFJ2Y0RwemZTbDlMSE4wWVhKMFZHbHRaVHB3S0Nrc2MzUmhjblJZT25Nc2MzUmhjblJaT21Fc2VEcDBMSGs2YkN4a2RYSmhkR2x2YmpwdkxHVmhjMlU2Yml4allqcHlmU2w5ZG1GeUlFMDlaVDArWlNZbUlXVXVZbVZvWVhacGIzSjhmQ0p6Ylc5dmRHZ2lQVDA5WlM1aVpXaGhkbWx2Y2l4clBXWjFibU4wYVc5dUtHVXNkQ2w3YkdWMElHdzlkSHg4ZTMwN2NtVjBkWEp1SUUwb2JDay9ZeWhsTEh0aWJHOWphenBzTG1Kc2IyTnJMR2x1YkdsdVpUcHNMbWx1YkdsdVpTeHpZM0p2Ykd4TmIyUmxPbXd1YzJOeWIyeHNUVzlrWlN4aWIzVnVaR0Z5ZVRwc0xtSnZkVzVrWVhKNUxITnJhWEJQZG1WeVpteHZkMGhwWkdSbGJrVnNaVzFsYm5Sek9td3VjMnRwY0U5MlpYSm1iRzkzU0dsa1pHVnVSV3hsYldWdWRITXNZbVZvWVhacGIzSTZaVDArVUhKdmJXbHpaUzVoYkd3b1pTNXlaV1IxWTJVb0tHVXNkQ2s5UG50c1pYUjdaV3c2Ynl4c1pXWjBPbTRzZEc5d09uSjlQWFFzYVQxdkxuTmpjbTlzYkV4bFpuUXNjejF2TG5OamNtOXNiRlJ2Y0R0eVpYUjFjbTRnYVQwOVBXNG1Kbk05UFQxeVAyVTZXeTR1TG1Vc2JtVjNJRkJ5YjIxcGMyVW9aVDArZVNodkxHNHNjaXhzTG1SMWNtRjBhVzl1TEd3dVpXRnpaU3dvS1QwK1pTaDdaV3c2Ynl4c1pXWjBPbHRwTEc1ZExIUnZjRHBiY3l4eVhYMHBMR3d1YjI1VFkzSnZiR3hEYUdGdVoyVXBLVjE5TEZ0ZEtTbDlLVHBRY205dGFYTmxMbkpsYzI5c2RtVW9ZeWhsTEhRcEtYMDdaWGh3YjNKMGUyc2dZWE1nWkdWbVlYVnNkSDA3IikKCmNvbnN0IGluZGVudCA9IHRydWUKY29uc3QgYXNpZGUgPSB0cnVlCmNvbnN0IHRpdGxlX3RleHQgPSAiVGFibGUgb2YgQ29udGVudHMiCmNvbnN0IGluY2x1ZGVfZGVmaW5pdGlvbnMgPSBmYWxzZQoKCmNvbnN0IHRvY05vZGUgPSBodG1sYDxuYXYgY2xhc3M9InBsdXRvdWktdG9jIj4KCTxoZWFkZXI+CgkgPHNwYW4gY2xhc3M9InRvYy10b2dnbGUgb3Blbi10b2MiPjwvc3Bhbj4KCSA8c3BhbiBjbGFzcz0idG9jLXRvZ2dsZSBjbG9zZWQtdG9jIj48L3NwYW4+CgkgJHt0aXRsZV90ZXh0fQoJPC9oZWFkZXI+Cgk8c2VjdGlvbj48L3NlY3Rpb24+CjwvbmF2PmAKCnRvY05vZGUuY2xhc3NMaXN0LnRvZ2dsZSgiYXNpZGUiLCBhc2lkZSkKdG9jTm9kZS5jbGFzc0xpc3QudG9nZ2xlKCJpbmRlbnQiLCBpbmRlbnQpCgoKY29uc3QgZ2V0UGFyZW50Q2VsbCA9IGVsID0+IGVsLmNsb3Nlc3QoInBsdXRvLWNlbGwiKQoKY29uc3QgZ2V0SGVhZGVycyA9ICgpID0+IHsKCWNvbnN0IGRlcHRoID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oNiwgMykpIC8vIHNob3VsZCBiZSBpbiByYW5nZSAxOjYKCWNvbnN0IHJhbmdlID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiBkZXB0aH0sICh4LCBpKSA9PiBpKzEpIC8vIFsxLCAuLi4sIGRlcHRoXQoJCgljb25zdCBzZWxlY3RvciA9IFsKCQkuLi4oaW5jbHVkZV9kZWZpbml0aW9ucyA/IFsKCQkJYHBsdXRvLW5vdGVib29rIHBsdXRvLWNlbGwgLnBsdXRvLWRvY3MtYmluZGluZ2AsIAoJCQlgcGx1dG8tbm90ZWJvb2sgcGx1dG8tY2VsbCBhc3NpZ25lZTpub3QoOmVtcHR5KWAsIAoJCV0gOiBbXSksCgkJLi4ucmFuZ2UubWFwKGkgPT4gYHBsdXRvLW5vdGVib29rIHBsdXRvLWNlbGwgaCR7aX1gKQoJXS5qb2luKCIsIikKCXJldHVybiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gCgkJLy8gZXhjbHVkZSBoZWFkZXJzIGluc2lkZSBvZiBhIHBsdXRvLWRvY3MtYmluZGluZyBibG9jawoJCSEoZWwubm9kZU5hbWUuc3RhcnRzV2l0aCgiSCIpICYmIGVsLmNsb3Nlc3QoIi5wbHV0by1kb2NzLWJpbmRpbmciKSkKCSkKfQoKCmNvbnN0IGRvY3VtZW50X2NsaWNrX2hhbmRsZXIgPSAoZXZlbnQpID0+IHsKCWNvbnN0IHBhdGggPSAoZXZlbnQucGF0aCB8fCBldmVudC5jb21wb3NlZFBhdGgoKSkKCWNvbnN0IHRvYyA9IHBhdGguZmluZChlbGVtID0+IGVsZW0/LmNsYXNzTGlzdD8uY29udGFpbnM/LigidG9jLXRvZ2dsZSIpKQoJaWYgKHRvYykgewoJCWV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpCgkJdG9jLmNsb3Nlc3QoIi5wbHV0b3VpLXRvYyIpLmNsYXNzTGlzdC50b2dnbGUoImhpZGUiKQoJfQp9Cgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGRvY3VtZW50X2NsaWNrX2hhbmRsZXIpCgoKY29uc3QgaGVhZGVyX3RvX2luZGV4X2VudHJ5X21hcCA9IG5ldyBNYXAoKQpjb25zdCBjdXJyZW50bHlfaGlnaGxpZ2h0ZWRfc2V0ID0gbmV3IFNldCgpCgpjb25zdCBsYXN0X3RvY19lbGVtZW50X2NsaWNrX3RpbWUgPSB7IGN1cnJlbnQ6IDAgfQoKY29uc3QgaW50ZXJzZWN0aW9uX2NhbGxiYWNrID0gKGl4cykgPT4gewoJbGV0IG9uX3RvcCA9IGl4cy5maWx0ZXIoaXggPT4gaXguaW50ZXJzZWN0aW9uUmF0aW8gPiAwICYmIGl4LmludGVyc2VjdGlvblJlY3QueSA8IGl4LnJvb3RCb3VuZHMuaGVpZ2h0IC8gMikKCWlmKG9uX3RvcC5sZW5ndGggPiAwKXsKCQljdXJyZW50bHlfaGlnaGxpZ2h0ZWRfc2V0LmZvckVhY2goYSA9PiBhLmNsYXNzTGlzdC5yZW1vdmUoImluLXZpZXciKSkKCQljdXJyZW50bHlfaGlnaGxpZ2h0ZWRfc2V0LmNsZWFyKCkKCQlvbl90b3Auc2xpY2UoMCwxKS5mb3JFYWNoKGkgPT4gewoJCQlsZXQgZGl2ID0gaGVhZGVyX3RvX2luZGV4X2VudHJ5X21hcC5nZXQoaS50YXJnZXQpCgkJCWRpdi5jbGFzc0xpc3QuYWRkKCJpbi12aWV3IikKCQkJY3VycmVudGx5X2hpZ2hsaWdodGVkX3NldC5hZGQoZGl2KQoJCQkKCQkJLy8vIHNjcm9sbCBpbnRvIHZpZXcKCQkJLyoKCQkJY29uc3QgdG9jX2hlaWdodCA9IHRvY05vZGUub2Zmc2V0SGVpZ2h0CgkJCWNvbnN0IGRpdl9wb3MgPSBkaXYub2Zmc2V0VG9wCgkJCWNvbnN0IGRpdl9oZWlnaHQgPSBkaXYub2Zmc2V0SGVpZ2h0CgkJCWNvbnN0IGN1cnJlbnRfc2Nyb2xsID0gdG9jTm9kZS5zY3JvbGxUb3AKCQkJY29uc3QgaGVhZGVyX2hlaWdodCA9IHRvY05vZGUucXVlcnlTZWxlY3RvcigiaGVhZGVyIikub2Zmc2V0SGVpZ2h0CgkJCQoJCQljb25zdCBzY3JvbGxfdG9fdG9wID0gZGl2X3BvcyAtIGhlYWRlcl9oZWlnaHQKCQkJY29uc3Qgc2Nyb2xsX3RvX2JvdHRvbSA9IGRpdl9wb3MgKyBkaXZfaGVpZ2h0IC0gdG9jX2hlaWdodAoJCQkKCQkJLy8gaWYgd2Ugc2V0IGEgc2Nyb2xsVG9wLCB0aGVuIHRoZSBicm93c2VyIHdpbGwgc3RvcCBhbnkgY3VycmVudGx5IG9uZ29pbmcgc21vb3Roc2Nyb2xsIGFuaW1hdGlvbi4gU28gbGV0J3Mgb25seSBkbyB0aGlzIGlmIHlvdSBhcmUgbm90IGN1cnJlbnRseSBpbiBhIHNtb290aHNjcm9sbC4KCQkJaWYoRGF0ZS5ub3coKSAtIGxhc3RfdG9jX2VsZW1lbnRfY2xpY2tfdGltZS5jdXJyZW50ID49IDIwMDApCgkJCQlpZihjdXJyZW50X3Njcm9sbCA8IHNjcm9sbF90b19ib3R0b20pewoJCQkJCXRvY05vZGUuc2Nyb2xsVG9wID0gc2Nyb2xsX3RvX2JvdHRvbQoJCQkJfSBlbHNlIGlmKGN1cnJlbnRfc2Nyb2xsID4gc2Nyb2xsX3RvX3RvcCl7CgkJCQkJdG9jTm9kZS5zY3JvbGxUb3AgPSBzY3JvbGxfdG9fdG9wCgkJCQl9CgkJCSovCgkJfSkKCX0KfQpsZXQgaW50ZXJzZWN0aW9uX29ic2VydmVyXzEgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaW50ZXJzZWN0aW9uX2NhbGxiYWNrLCB7Cglyb290OiBudWxsLCAvLyBpLmUuIHRoZSB2aWV3cG9ydAogIAl0aHJlc2hvbGQ6IDEsCglyb290TWFyZ2luOiAiLTE1cHgiLCAvLyBzbGlnaHRseSBzbWFsbGVyIHRoYW4gdGhlIHZpZXdwb3J0CgkvLyBkZWxheTogMTAwLAp9KQpsZXQgaW50ZXJzZWN0aW9uX29ic2VydmVyXzIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaW50ZXJzZWN0aW9uX2NhbGxiYWNrLCB7Cglyb290OiBudWxsLCAvLyBpLmUuIHRoZSB2aWV3cG9ydAogIAl0aHJlc2hvbGQ6IDEsCglyb290TWFyZ2luOiAiMTVweCIsIC8vIHNsaWdodGx5IGxhcmdlciB0aGFuIHRoZSB2aWV3cG9ydAoJLy8gZGVsYXk6IDEwMCwKfSkKCmNvbnN0IHJlbmRlciA9IChlbGVtZW50cykgPT4gewoJaGVhZGVyX3RvX2luZGV4X2VudHJ5X21hcC5jbGVhcigpCgljdXJyZW50bHlfaGlnaGxpZ2h0ZWRfc2V0LmNsZWFyKCkKCWludGVyc2VjdGlvbl9vYnNlcnZlcl8xLmRpc2Nvbm5lY3QoKQoJaW50ZXJzZWN0aW9uX29ic2VydmVyXzIuZGlzY29ubmVjdCgpCgoJCWxldCBsYXN0X2xldmVsID0gYEgxYAoJcmV0dXJuIGh0bWxgJHtlbGVtZW50cy5tYXAoaCA9PiB7Cgljb25zdCBwYXJlbnRfY2VsbCA9IGdldFBhcmVudENlbGwoaCkKCgkJbGV0IFtjbGFzc05hbWUsIHRpdGxlX2VsXSA9IGgubWF0Y2hlcyhgLnBsdXRvLWRvY3MtYmluZGluZ2ApID8gWyJwbHV0by1kb2NzLWJpbmRpbmctZWwiLCBoLmZpcnN0RWxlbWVudENoaWxkXSA6IFtoLm5vZGVOYW1lLCBoXQoKCWNvbnN0IGEgPSBodG1sYDxhIAoJCWNsYXNzPSIke2NsYXNzTmFtZX0iIAoJCXRpdGxlPSIke3RpdGxlX2VsLmlubmVyVGV4dH0iCgkJaHJlZj0iIyR7cGFyZW50X2NlbGwuaWR9IgoJPiR7dGl0bGVfZWwuaW5uZXJIVE1MfTwvYT5gCgkvKiBhLm9ubW91c2VvdmVyPSgpPT57CgkJcGFyZW50X2NlbGwuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LmFkZCgKCQkJJ2hpZ2hsaWdodC1wbHV0by1jZWxsLXNob3VsZGVyJwoJCSkKCX0KCWEub25tb3VzZW91dD0oKSA9PiB7CgkJcGFyZW50X2NlbGwuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LnJlbW92ZSgKCQkJJ2hpZ2hsaWdodC1wbHV0by1jZWxsLXNob3VsZGVyJwoJCSkKCX0gKi8KCQkKCQkKCWEub25jbGljaz0oZSkgPT4gewoJCWUucHJldmVudERlZmF1bHQoKTsKCQlsYXN0X3RvY19lbGVtZW50X2NsaWNrX3RpbWUuY3VycmVudCA9IERhdGUubm93KCkKCQlzY3JvbGxJbnRvVmlldyhoLCB7CgkJCWJlaGF2aW9yOiAnc21vb3RoJywgCgkJCWJsb2NrOiAnc3RhcnQnLAoJCX0pLnRoZW4oKCkgPT4gCgkJCS8vIHNvbWV0aW1lcyBpdCBkb2Vzbid0IHNjcm9sbCB0byB0aGUgcmlnaHQgcGxhY2UKCQkJLy8gc29sdXRpb246IHRyeSBhIHNlY29uZCB0aW1lIQoJCQlzY3JvbGxJbnRvVmlldyhoLCB7CgkJCQliZWhhdmlvcjogJ3Ntb290aCcsIAoJCQkJYmxvY2s6ICdzdGFydCcsCgkJCX0pCgkgICApCgl9CgoJY29uc3Qgcm93ID0gIGh0bWxgPGRpdiBjbGFzcz0idG9jLXJvdyAke2NsYXNzTmFtZX0gYWZ0ZXItJHtsYXN0X2xldmVsfSI+JHthfTwvZGl2PmAKCQlpbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfMS5vYnNlcnZlKHRpdGxlX2VsKQoJCWludGVyc2VjdGlvbl9vYnNlcnZlcl8yLm9ic2VydmUodGl0bGVfZWwpCgkJaGVhZGVyX3RvX2luZGV4X2VudHJ5X21hcC5zZXQodGl0bGVfZWwsIHJvdykKCglpZihjbGFzc05hbWUuc3RhcnRzV2l0aCgiSCIpKQoJCWxhc3RfbGV2ZWwgPSBjbGFzc05hbWUKCQkKCXJldHVybiByb3cKfSl9YAp9Cgpjb25zdCBpbnZhbGlkYXRlZCA9IHsgY3VycmVudDogZmFsc2UgfQoKY29uc3QgdXBkYXRlQ2FsbGJhY2sgPSAoKSA9PiB7CglpZiAoIWludmFsaWRhdGVkLmN1cnJlbnQpIHsKCQl0b2NOb2RlLnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24iKS5yZXBsYWNlV2l0aCgKCQkJaHRtbGA8c2VjdGlvbj4ke3JlbmRlcihnZXRIZWFkZXJzKCkpfTwvc2VjdGlvbj5gCgkJKQoJfQp9CnVwZGF0ZUNhbGxiYWNrKCkKc2V0VGltZW91dCh1cGRhdGVDYWxsYmFjaywgMTAwKQpzZXRUaW1lb3V0KHVwZGF0ZUNhbGxiYWNrLCAxMDAwKQpzZXRUaW1lb3V0KHVwZGF0ZUNhbGxiYWNrLCA1MDAwKQoKY29uc3Qgbm90ZWJvb2sgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJwbHV0by1ub3RlYm9vayIpCgoKLy8gV2UgaGF2ZSBhIG11dGF0aW9ub2JzZXJ2ZXIgZm9yIGVhY2ggY2VsbDoKY29uc3QgbXV0X29ic2VydmVycyA9IHsKCWN1cnJlbnQ6IFtdLAp9Cgpjb25zdCBjcmVhdGVDZWxsT2JzZXJ2ZXJzID0gKCkgPT4gewoJbXV0X29ic2VydmVycy5jdXJyZW50LmZvckVhY2goKG8pID0+IG8uZGlzY29ubmVjdCgpKQoJbXV0X29ic2VydmVycy5jdXJyZW50ID0gQXJyYXkuZnJvbShub3RlYm9vay5xdWVyeVNlbGVjdG9yQWxsKCJwbHV0by1jZWxsIikpLm1hcChlbCA9PiB7CgkJY29uc3QgbyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZUNhbGxiYWNrKQoJCW8ub2JzZXJ2ZShlbCwge2F0dHJpYnV0ZUZpbHRlcjogWyJjbGFzcyJdfSkKCQlyZXR1cm4gbwoJfSkKfQpjcmVhdGVDZWxsT2JzZXJ2ZXJzKCkKCi8vIEFuZCBvbmUgZm9yIHRoZSBub3RlYm9vaydzIGNoaWxkIGxpc3QsIHdoaWNoIHVwZGF0ZXMgb3VyIGNlbGwgb2JzZXJ2ZXJzOgpjb25zdCBub3RlYm9va09ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gewoJdXBkYXRlQ2FsbGJhY2soKQoJY3JlYXRlQ2VsbE9ic2VydmVycygpCn0pCm5vdGVib29rT2JzZXJ2ZXIub2JzZXJ2ZShub3RlYm9vaywge2NoaWxkTGlzdDogdHJ1ZX0pCgovLyBBbmQgZmluYWxseSwgYW4gb2JzZXJ2ZXIgZm9yIHRoZSBkb2N1bWVudC5ib2R5IGNsYXNzTGlzdCwgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHRvYyBhbHNvIHdvcmtzIHdoZW4gaXQgaXMgbG9hZGVkIGR1cmluZyBub3RlYm9vayBpbml0aWFsaXphdGlvbgpjb25zdCBib2R5Q2xhc3NPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZUNhbGxiYWNrKQpib2R5Q2xhc3NPYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHthdHRyaWJ1dGVGaWx0ZXI6IFsiY2xhc3MiXX0pCgovLyBIaWRlL3Nob3cgdGhlIFRvQyB3aGVuIHRoZSBzY3JlZW4gZ2V0cyBzbWFsbApsZXQgbWF0Y2hfbGlzdGVuZXIgPSAoKSA9PiAKCXRvY05vZGUuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZSIsICh0b2NOb2RlLmNsb3Nlc3QoInBsdXRvLWVkaXRvciIpID8/IGRvY3VtZW50LmJvZHkpLnNjcm9sbFdpZHRoIDwgMTAwMCkKZm9yKGxldCBzIG9mIFsxMDAwLCAxMTAwLCAxMjAwLCAxMzAwLCAxNDAwLCAxNTAwLCAxNjAwLCAxNzAwLCAxODAwLCAxOTAwLCAyMDAwXSkgewoJbGV0IG0gPSBtYXRjaE1lZGlhKGAobWF4LXdpZHRoOiAke3N9cHgpYCkKCW0uYWRkTGlzdGVuZXIobWF0Y2hfbGlzdGVuZXIpCglpbnZhbGlkYXRpb24udGhlbigoKSA9PiBtLnJlbW92ZUxpc3RlbmVyKG1hdGNoX2xpc3RlbmVyKSkKfQptYXRjaF9saXN0ZW5lcigpCgppbnZhbGlkYXRpb24udGhlbigoKSA9PiB7CglpbnZhbGlkYXRlZC5jdXJyZW50ID0gdHJ1ZQoJaW50ZXJzZWN0aW9uX29ic2VydmVyXzEuZGlzY29ubmVjdCgpCglpbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfMi5kaXNjb25uZWN0KCkKCW5vdGVib29rT2JzZXJ2ZXIuZGlzY29ubmVjdCgpCglib2R5Q2xhc3NPYnNlcnZlci5kaXNjb25uZWN0KCkKCW11dF9vYnNlcnZlcnMuY3VycmVudC5mb3JFYWNoKChvKSA9PiBvLmRpc2Nvbm5lY3QoKSkKCWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZG9jdW1lbnRfY2xpY2tfaGFuZGxlcikKfSkKCnJldHVybiB0b2NOb2RlCjwvc2NyaXB0Pgo8c3R5bGU+CkBtZWRpYSBub3QgcHJpbnQgewoKLnBsdXRvdWktdG9jIHsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIENhbnRhcmVsbCwgIkFwcGxlIENvbG9yIEVtb2ppIiwKCQkiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOwoJLS1tYWluLWJnLWNvbG9yOiAjZmFmYWZhOwoJLS1wbHV0by1vdXRwdXQtY29sb3I6IGhzbCgwLCAwJSwgMzYlKTsKCS0tcGx1dG8tb3V0cHV0LWgtY29sb3I6IGhzbCgwLCAwJSwgMjElKTsKCS0tc2lkZWJhci1saS1hY3RpdmUtYmc6IHJnYigyMzUsIDIzNSwgMjM1KTsKCS0taWNvbi1maWx0ZXI6IHVuc2V0Owp9CgpAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CgkucGx1dG91aS10b2MgewoJCS0tbWFpbi1iZy1jb2xvcjogIzMwMzAzMDsKCQktLXBsdXRvLW91dHB1dC1jb2xvcjogaHNsKDAsIDAlLCA5MCUpOwoJCS0tcGx1dG8tb3V0cHV0LWgtY29sb3I6IGhzbCgwLCAwJSwgOTclKTsKCQktLXNpZGViYXItbGktYWN0aXZlLWJnOiByZ2IoODIsIDgyLCA4Mik7CgkJLS1pY29uLWZpbHRlcjogaW52ZXJ0KDEpOwoJfQp9CgoucGx1dG91aS10b2MuYXNpZGUgewoJY29sb3I6IHZhcigtLXBsdXRvLW91dHB1dC1jb2xvcik7Cglwb3NpdGlvbjogZml4ZWQ7CglyaWdodDogMXJlbTsKCXRvcDogNXJlbTsKCXdpZHRoOiBtaW4oODB2dywgMzAwcHgpOwoJcGFkZGluZzogMC41cmVtOwoJcGFkZGluZy10b3A6IDBlbTsKCS8qIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7ICovCglib3JkZXItcmFkaXVzOiAxMHB4OwoJLyogYm94LXNoYWRvdzogMCAwIDExcHggMHB4ICMwMDAwMDAxMDsgKi8KCW1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1cmVtIC0gOTBweCk7CglvdmVyZmxvdzogYXV0bzsKCXotaW5kZXg6IDQwOwoJYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1iZy1jb2xvcik7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuNDUsIDEuMTIpOwp9CgoucGx1dG91aS10b2MuYXNpZGUuaGlkZSB7Cgl0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygxMDAlIC0gMjhweCkpOwp9Ci5wbHV0b3VpLXRvYy5hc2lkZS5oaWRlIHNlY3Rpb24gewoJZGlzcGxheTogbm9uZTsKfQoucGx1dG91aS10b2MuYXNpZGUuaGlkZSBoZWFkZXIgewoJbWFyZ2luLWJvdHRvbTogMGVtOwoJcGFkZGluZy1ib3R0b206IDBlbTsKCWJvcmRlci1ib3R0b206IG5vbmU7Cn0KfSAgLyogRW5kIG9mIE1lZGlhIHByaW50IHF1ZXJ5ICovCi5wbHV0b3VpLXRvYy5hc2lkZS5oaWRlIC5vcGVuLXRvYywKLnBsdXRvdWktdG9jLmFzaWRlOm5vdCguaGlkZSkgLmNsb3NlZC10b2MsCi5wbHV0b3VpLXRvYzpub3QoLmFzaWRlKSAuY2xvc2VkLXRvYyB7CglkaXNwbGF5OiBub25lOwp9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pIHsKICAucGx1dG91aS10b2MuYXNpZGUgewoJdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgfQp9CgoudG9jLXRvZ2dsZSB7CgljdXJzb3I6IHBvaW50ZXI7CiAgICBwYWRkaW5nOiAxZW07CiAgICBtYXJnaW46IC0xZW07CiAgICBtYXJnaW4tcmlnaHQ6IC0wLjdlbTsKICAgIGxpbmUtaGVpZ2h0OiAxZW07CiAgICBkaXNwbGF5OiBmbGV4Owp9CgoudG9jLXRvZ2dsZTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtOwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvaW9uaWMtdGVhbS9pb25pY29uc0A1LjUuMS9zcmMvc3ZnL2xpc3Qtb3V0bGluZS5zdmciKTsKCS8qIGdlbmVyYXRlZCB1c2luZyBodHRwczovL2RvcGlhemEub3JnL3Rvb2xzL2RhdGF1cmkvaW5kZXgucGhwICovCiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJMU1USWlJR2hsYVdkb2REMGlOVEV5SWlCMmFXVjNRbTk0UFNJd0lEQWdOVEV5SURVeE1pSStQSFJwZEd4bFBtbHZibWxqYjI1ekxYWTFMVzg4TDNScGRHeGxQanhzYVc1bElIZ3hQU0l4TmpBaUlIa3hQU0l4TkRRaUlIZ3lQU0kwTkRnaUlIa3lQU0l4TkRRaUlITjBlV3hsUFNKbWFXeHNPbTV2Ym1VN2MzUnliMnRsT2lNd01EQTdjM1J5YjJ0bExXeHBibVZqWVhBNmNtOTFibVE3YzNSeWIydGxMV3hwYm1WcWIybHVPbkp2ZFc1a08zTjBjbTlyWlMxM2FXUjBhRG96TW5CNElpOCtQR3hwYm1VZ2VERTlJakUyTUNJZ2VURTlJakkxTmlJZ2VESTlJalEwT0NJZ2VUSTlJakkxTmlJZ2MzUjViR1U5SW1acGJHdzZibTl1WlR0emRISnZhMlU2SXpBd01EdHpkSEp2YTJVdGJHbHVaV05oY0RweWIzVnVaRHR6ZEhKdmEyVXRiR2x1WldwdmFXNDZjbTkxYm1RN2MzUnliMnRsTFhkcFpIUm9Pak15Y0hnaUx6NDhiR2x1WlNCNE1UMGlNVFl3SWlCNU1UMGlNelk0SWlCNE1qMGlORFE0SWlCNU1qMGlNelk0SWlCemRIbHNaVDBpWm1sc2JEcHViMjVsTzNOMGNtOXJaVG9qTURBd08zTjBjbTlyWlMxc2FXNWxZMkZ3T25KdmRXNWtPM04wY205clpTMXNhVzVsYW05cGJqcHliM1Z1WkR0emRISnZhMlV0ZDJsa2RHZzZNekp3ZUNJdlBqeGphWEpqYkdVZ1kzZzlJamd3SWlCamVUMGlNVFEwSWlCeVBTSXhOaUlnYzNSNWJHVTlJbVpwYkd3NmJtOXVaVHR6ZEhKdmEyVTZJekF3TUR0emRISnZhMlV0YkdsdVpXTmhjRHB5YjNWdVpEdHpkSEp2YTJVdGJHbHVaV3B2YVc0NmNtOTFibVE3YzNSeWIydGxMWGRwWkhSb09qTXljSGdpTHo0OFkybHlZMnhsSUdONFBTSTRNQ0lnWTNrOUlqSTFOaUlnY2owaU1UWWlJSE4wZVd4bFBTSm1hV3hzT201dmJtVTdjM1J5YjJ0bE9pTXdNREE3YzNSeWIydGxMV3hwYm1WallYQTZjbTkxYm1RN2MzUnliMnRsTFd4cGJtVnFiMmx1T25KdmRXNWtPM04wY205clpTMTNhV1IwYURvek1uQjRJaTgrUEdOcGNtTnNaU0JqZUQwaU9EQWlJR041UFNJek5qZ2lJSEk5SWpFMklpQnpkSGxzWlQwaVptbHNiRHB1YjI1bE8zTjBjbTlyWlRvak1EQXdPM04wY205clpTMXNhVzVsWTJGd09uSnZkVzVrTzNOMGNtOXJaUzFzYVc1bGFtOXBianB5YjNWdVpEdHpkSEp2YTJVdGQybGtkR2c2TXpKd2VDSXZQand2YzNablBnPT0iKTsKICAgIGJhY2tncm91bmQtc2l6ZTogMWVtOwoJZmlsdGVyOiB2YXIoLS1pY29uLWZpbHRlcik7Cn0KCi5hc2lkZSAudG9jLXRvZ2dsZS5vcGVuLXRvYzpob3Zlcjo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2lvbmljLXRlYW0vaW9uaWNvbnNANS41LjEvc3JjL3N2Zy9hcnJvdy1mb3J3YXJkLW91dGxpbmUuc3ZnIik7CgkvKiBnZW5lcmF0ZWQgdXNpbmcgaHR0cHM6Ly9kb3BpYXphLm9yZy90b29scy9kYXRhdXJpL2luZGV4LnBocCAqLwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSTFNVElpSUdobGFXZG9kRDBpTlRFeUlpQjJhV1YzUW05NFBTSXdJREFnTlRFeUlEVXhNaUkrUEhScGRHeGxQbWx2Ym1samIyNXpMWFkxTFdFOEwzUnBkR3hsUGp4d2IyeDViR2x1WlNCd2IybHVkSE05SWpJMk9DQXhNVElnTkRFeUlESTFOaUF5TmpnZ05EQXdJaUJ6ZEhsc1pUMGlabWxzYkRwdWIyNWxPM04wY205clpUb2pNREF3TzNOMGNtOXJaUzFzYVc1bFkyRndPbkp2ZFc1a08zTjBjbTlyWlMxc2FXNWxhbTlwYmpweWIzVnVaRHR6ZEhKdmEyVXRkMmxrZEdnNk5EaHdlQ0l2UGp4c2FXNWxJSGd4UFNJek9USWlJSGt4UFNJeU5UWWlJSGd5UFNJeE1EQWlJSGt5UFNJeU5UWWlJSE4wZVd4bFBTSm1hV3hzT201dmJtVTdjM1J5YjJ0bE9pTXdNREE3YzNSeWIydGxMV3hwYm1WallYQTZjbTkxYm1RN2MzUnliMnRsTFd4cGJtVnFiMmx1T25KdmRXNWtPM04wY205clpTMTNhV1IwYURvME9IQjRJaTgrUEM5emRtYysiKTsKfQouYXNpZGUgLnRvYy10b2dnbGUuY2xvc2VkLXRvYzpob3Zlcjo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2lvbmljLXRlYW0vaW9uaWNvbnNANS41LjEvc3JjL3N2Zy9hcnJvdy1iYWNrLW91dGxpbmUuc3ZnIik7CgkvKiBnZW5lcmF0ZWQgdXNpbmcgaHR0cHM6Ly9kb3BpYXphLm9yZy90b29scy9kYXRhdXJpL2luZGV4LnBocCAqLwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSTFNVElpSUdobGFXZG9kRDBpTlRFeUlpQjJhV1YzUW05NFBTSXdJREFnTlRFeUlEVXhNaUkrUEhScGRHeGxQbWx2Ym1samIyNXpMWFkxTFdFOEwzUnBkR3hsUGp4d2IyeDViR2x1WlNCd2IybHVkSE05SWpJME5DQTBNREFnTVRBd0lESTFOaUF5TkRRZ01URXlJaUJ6ZEhsc1pUMGlabWxzYkRwdWIyNWxPM04wY205clpUb2pNREF3TzNOMGNtOXJaUzFzYVc1bFkyRndPbkp2ZFc1a08zTjBjbTlyWlMxc2FXNWxhbTlwYmpweWIzVnVaRHR6ZEhKdmEyVXRkMmxrZEdnNk5EaHdlQ0l2UGp4c2FXNWxJSGd4UFNJeE1qQWlJSGt4UFNJeU5UWWlJSGd5UFNJME1USWlJSGt5UFNJeU5UWWlJSE4wZVd4bFBTSm1hV3hzT201dmJtVTdjM1J5YjJ0bE9pTXdNREE3YzNSeWIydGxMV3hwYm1WallYQTZjbTkxYm1RN2MzUnliMnRsTFd4cGJtVnFiMmx1T25KdmRXNWtPM04wY205clpTMTNhV1IwYURvME9IQjRJaTgrUEM5emRtYysiKTsKfQoKCgoucGx1dG91aS10b2MgaGVhZGVyIHsKCWRpc3BsYXk6IGZsZXg7CglhbGlnbi1pdGVtczogY2VudGVyOwoJZ2FwOiAuM2VtOwoJZm9udC1zaXplOiAxLjVlbTsKCS8qIG1hcmdpbi10b3A6IC0wLjFlbTsgKi8KCW1hcmdpbi1ib3R0b206IDAuNGVtOwoJcGFkZGluZzogMC41cmVtOwoJbWFyZ2luLWxlZnQ6IDA7CgltYXJnaW4tcmlnaHQ6IDA7Cglmb250LXdlaWdodDogYm9sZDsKCS8qIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOyAqLwoJcG9zaXRpb246IHN0aWNreTsKCXRvcDogMHB4OwoJYmFja2dyb3VuZDogdmFyKC0tbWFpbi1iZy1jb2xvcik7Cgl6LWluZGV4OiA0MTsKfQoucGx1dG91aS10b2MuYXNpZGUgaGVhZGVyIHsKCXBhZGRpbmctbGVmdDogMDsKCXBhZGRpbmctcmlnaHQ6IDA7Cn0KCi5wbHV0b3VpLXRvYyBzZWN0aW9uIC50b2Mtcm93IHsKCXdoaXRlLXNwYWNlOiBub3dyYXA7CglvdmVyZmxvdzogaGlkZGVuOwoJdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CglwYWRkaW5nOiAuMWVtOwoJYm9yZGVyLXJhZGl1czogLjJlbTsKfQoKLnBsdXRvdWktdG9jIHNlY3Rpb24gLnRvYy1yb3cuSDEgewoJbWFyZ2luLXRvcDogMWVtOwp9CgoKLnBsdXRvdWktdG9jLmFzaWRlIHNlY3Rpb24gLnRvYy1yb3cuaW4tdmlldyB7CgliYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWxpLWFjdGl2ZS1iZyk7Cn0KCgoJCi5oaWdobGlnaHQtcGx1dG8tY2VsbC1zaG91bGRlciB7CgliYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDUpOwoJYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKfQoKLnBsdXRvdWktdG9jIHNlY3Rpb24gYSB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cglmb250LXdlaWdodDogbm9ybWFsOwoJY29sb3I6IHZhcigtLXBsdXRvLW91dHB1dC1jb2xvcik7Cn0KLnBsdXRvdWktdG9jIHNlY3Rpb24gYTpob3ZlciB7Cgljb2xvcjogdmFyKC0tcGx1dG8tb3V0cHV0LWgtY29sb3IpOwp9CgoucGx1dG91aS10b2MuaW5kZW50IHNlY3Rpb24gYS5IMSB7Cglmb250LXdlaWdodDogNzAwOwoJbGluZS1oZWlnaHQ6IDFlbTsKfQoKLnBsdXRvdWktdG9jLmluZGVudCBzZWN0aW9uIC5hZnRlci1IMiBhIHsgcGFkZGluZy1sZWZ0OiAxMHB4OyB9Ci5wbHV0b3VpLXRvYy5pbmRlbnQgc2VjdGlvbiAuYWZ0ZXItSDMgYSB7IHBhZGRpbmctbGVmdDogMjBweDsgfQoucGx1dG91aS10b2MuaW5kZW50IHNlY3Rpb24gLmFmdGVyLUg0IGEgeyBwYWRkaW5nLWxlZnQ6IDMwcHg7IH0KLnBsdXRvdWktdG9jLmluZGVudCBzZWN0aW9uIC5hZnRlci1INSBhIHsgcGFkZGluZy1sZWZ0OiA0MHB4OyB9Ci5wbHV0b3VpLXRvYy5pbmRlbnQgc2VjdGlvbiAuYWZ0ZXItSDYgYSB7IHBhZGRpbmctbGVmdDogNTBweDsgfQoKLnBsdXRvdWktdG9jLmluZGVudCBzZWN0aW9uIGEuSDEgeyBwYWRkaW5nLWxlZnQ6IDBweDsgfQoucGx1dG91aS10b2MuaW5kZW50IHNlY3Rpb24gYS5IMiB7IHBhZGRpbmctbGVmdDogMTBweDsgfQoucGx1dG91aS10b2MuaW5kZW50IHNlY3Rpb24gYS5IMyB7IHBhZGRpbmctbGVmdDogMjBweDsgfQoucGx1dG91aS10b2MuaW5kZW50IHNlY3Rpb24gYS5INCB7IHBhZGRpbmctbGVmdDogMzBweDsgfQoucGx1dG91aS10b2MuaW5kZW50IHNlY3Rpb24gYS5INSB7IHBhZGRpbmctbGVmdDogNDBweDsgfQoucGx1dG91aS10b2MuaW5kZW50IHNlY3Rpb24gYS5INiB7IHBhZGRpbmctbGVmdDogNTBweDsgfQoKCi5wbHV0b3VpLXRvYy5pbmRlbnQgc2VjdGlvbiBhLnBsdXRvLWRvY3MtYmluZGluZy1lbCwKLnBsdXRvdWktdG9jLmluZGVudCBzZWN0aW9uIGEuQVNTSUdORUUKCXsKCWZvbnQtZmFtaWx5OiBKdWxpYU1vbm8sIG1vbm9zcGFjZTsKCWZvbnQtc2l6ZTogLjhlbTsKCS8qIGJhY2tncm91bmQ6IGJsYWNrOyAqLwoJZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKCWNvbG9yOiB2YXIoLS1jbS12YXItY29sb3IpOyAvKiB0aGlzIGlzIHN0ZWFsaW5nIGEgdmFyaWFibGUgZnJvbSBQbHV0bywgYnV0IGl0J3MgZmluZSBpZiB0aGF0IGRvZXNudCB3b3JrICovCn0KLnBsdXRvdWktdG9jLmluZGVudCBzZWN0aW9uIGEucGx1dG8tZG9jcy1iaW5kaW5nLWVsOjpiZWZvcmUsCi5wbHV0b3VpLXRvYy5pbmRlbnQgc2VjdGlvbiBhLkFTU0lHTkVFOjpiZWZvcmUKCXsKCWNvbnRlbnQ6ICI+ICI7CglvcGFjaXR5OiAuMzsKfQo8L3N0eWxlPgqkbWltZal0ZXh0L2h0bWyscm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdm+/3QjeoWwcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJDMxYjc0ODI4LWZkYzctNGIwNC04YmUwLWVhNDQ4MjBmOTU1NblkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzSvVtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkN2ExMWU0NjAtOGQ2Zi00NTRjLThmZTYtMzNjNTllZWI0OTM3iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedknPGRpdiBjbGFzcz0ibWFya2Rvd24iPjxwPnJ1bjwvcD4KPC9kaXY+pG1pbWWpdGV4dC9odG1srHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwH7921/sHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQ3YTExZTQ2MC04ZDZmLTQ1NGMtOGZlNi0zM2M1OWVlYjQ5Mze5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4ACDEAtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkMWQ5MGM2ODctN2U2Ny00M2VkLWI1YmYtNjhlZjkwNDBkYzk1iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedk+PGRpdiBjbGFzcz0ibWFya2Rvd24iPjxoMT4xMDDlm57jgZjjgoPjgarjgYToqabpqJM8L2gxPgo8L2Rpdj6kbWltZal0ZXh0L2h0bWyscm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdm/AvSdc1iwcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJDFkOTBjNjg3LTdlNjctNDNlZC1iNWJmLTY4ZWY5MDQwZGM5NblkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgAF1hq1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SRiYjE2N2E1ZS1iMjNhLTRmMDUtOWJhNi0zNjhhNDhmOWMxMjCKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R5oKRtaW1lqnRleHQvcGxhaW6scm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdm/Bpn7YtSwcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJGJiMTY3YTVlLWIyM2EtNGYwNS05YmE2LTM2OGE0OGY5YzEyMLlkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzWgFtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkZWQ3YzQwZmUtZjk2Ni00YWZiLWE5NjItODk2YzlmMTA5OTQ2iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keYOkcm93c5KSAZeSojQ3qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKzMjAyNC0wNy0yNVQxMDo1NDoxMap0ZXh0L3BsYWlukqIiIqp0ZXh0L3BsYWlukqsiaGFzaGltb3RvIqp0ZXh0L3BsYWlukqgiNDcubG9nIqp0ZXh0L3BsYWlukqh2IjEuMC4xIqp0ZXh0L3BsYWlukgKXkqI0Oap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SszIwMjQtMDctMjVUMTE6NTU6MjiqdGV4dC9wbGFpbpKiIiKqdGV4dC9wbGFpbpKmInN1YmUiqnRleHQvcGxhaW6SrSI0OV9sb25nLmxvZyKqdGV4dC9wbGFpbpKodiIxLjAuMSKqdGV4dC9wbGFpbqhvYmplY3RpZLAzMDcwYzA5NTAyNmYyMDgypnNjaGVtYYKlbmFtZXOXomlkq2NhbXBhaWduX2lkrHJ1bl9kYXRldGltZaRub3Rlp3NoaWZ0ZXKnbG9nZmlsZa9zaGlmdHNjcmlwdF92ZXKldHlwZXOXpUludDY0pkludDY0P6lEYXRlVGltZT+mU3RyaW5nplN0cmluZ6dTdHJpbmc/rlZlcnNpb25OdW1iZXI/pG1pbWXZImFwcGxpY2F0aW9uL3ZuZC5wbHV0by50YWJsZStvYmplY3Sscm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdm/Bj83Zw6wcGVyc2lzdF9qc19zdGF0ZcO3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJGVkN2M0MGZlLWY5NjYtNGFmYi1hOTYyLTg5NmM5ZjEwOTk0NrlkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgABHki1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SQzM2I3MDUxNi03Njg3LTQ2M2ItYTY1NC0yY2RlM2YyNTM4YWGKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R52UE8ZGl2IGNsYXNzPSJtYXJrZG93biI+PGgxPuippumok+e1kOaenOS4gOimp+OBruWPluW+lzwvaDE+CjwvZGl2PqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8AxE2q77BwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkMzNiNzA1MTYtNzY4Ny00NjNiLWE2NTQtMmNkZTNmMjUzOGFhuWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAVLoz7VwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDIzMTY3OTcxLTQ2NzEtNGYxOC04NGRmLTcyYTdkYzU5MzhlMYqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmDpHJvd3OckgGVkqExqnRleHQvcGxhaW6SpyJCLTAtMSKqdGV4dC9wbGFpbpKhMKp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SpzEyLjMyMTSqdGV4dC9wbGFpbpIClZKhMqp0ZXh0L3BsYWlukqciQi0wLTIiqnRleHQvcGxhaW6SoTCqdGV4dC9wbGFpbpKhMqp0ZXh0L3BsYWlukqcxMi41NTM2qnRleHQvcGxhaW6SA5WSoTOqdGV4dC9wbGFpbpKnIkItMC0zIqp0ZXh0L3BsYWlukqEwqnRleHQvcGxhaW6SoTOqdGV4dC9wbGFpbpKnMTIuMzIxNKp0ZXh0L3BsYWlukgSVkqE0qnRleHQvcGxhaW6SpyJCLTAtNCKqdGV4dC9wbGFpbpKhMKp0ZXh0L3BsYWlukqE0qnRleHQvcGxhaW6SpzEzLjE3ODaqdGV4dC9wbGFpbpIFlZKhNap0ZXh0L3BsYWlukqciQi0wLTUiqnRleHQvcGxhaW6SoTCqdGV4dC9wbGFpbpKhNap0ZXh0L3BsYWlukqcxMy4zMDM2qnRleHQvcGxhaW6SBpWSoTaqdGV4dC9wbGFpbpKnIkItMC02Iqp0ZXh0L3BsYWlukqEwqnRleHQvcGxhaW6SoTaqdGV4dC9wbGFpbpKnMTMuOTEwN6p0ZXh0L3BsYWlukgeVkqE3qnRleHQvcGxhaW6SpyJCLTAtNyKqdGV4dC9wbGFpbpKhMKp0ZXh0L3BsYWlukqE3qnRleHQvcGxhaW6SpzEzLjU3MTSqdGV4dC9wbGFpbpIIlZKhOKp0ZXh0L3BsYWlukqciQi0wLTgiqnRleHQvcGxhaW6SoTCqdGV4dC9wbGFpbpKhOKp0ZXh0L3BsYWlukqcxMi4yNjc5qnRleHQvcGxhaW6SCZWSoTmqdGV4dC9wbGFpbpKnIkItMC05Iqp0ZXh0L3BsYWlukqEwqnRleHQvcGxhaW6SoTmqdGV4dC9wbGFpbpKnMTQuMDM1N6p0ZXh0L3BsYWlukgqVkqIxMKp0ZXh0L3BsYWlukqciQi0xLTEiqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqcxMS44NTcxqnRleHQvcGxhaW6kbW9yZZISlZKiMTiqdGV4dC9wbGFpbpKnIkItMS05Iqp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTmqdGV4dC9wbGFpbpKnMTIuMzAzNqp0ZXh0L3BsYWluqG9iamVjdGlksDNhZGUwOTAzZDc2MTE0Y2Omc2NoZW1hgqVuYW1lc5WiaWSkbmFtZadzdGF0aW9uqHBvc2l0aW9uqXJpc2luZ19uc6V0eXBlc5WlSW50NjSmU3RyaW5npUludDY0pUludDY0p0Zsb2F0NjSkbWltZdkiYXBwbGljYXRpb24vdm5kLnBsdXRvLnRhYmxlK29iamVjdKxyb290YXNzaWduZWWucWFxY19wb3NpdGlvbnOybGFzdF9ydW5fdGltZXN0YW1wy0HZvwRuPmGRsHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQyMzE2Nzk3MS00NjcxLTRmMTgtODRkZi03MmE3ZGM1OTM4ZTG5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4ACMactXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkNTEzNzBhYmItZjBmYi00YWUwLWI0ODgtYmY5ZmM3NzY1NzdjiqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keaCkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwY/N6QasHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQ1MTM3MGFiYi1mMGZiLTRhZTAtYjQ4OC1iZjlmYzc3NjU3N2O5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4ABVG/tXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkODQ0MGExZGUtMTJmZS00YmI3LTkwN2YtNTJmOTMzOTM0ZWMwiqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedkuPGRpdiBjbGFzcz0ibWFya2Rvd24iPjxwPjHlm57oqabpqJM8L3A+CjwvZGl2PqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8FyuS6E7BwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkODQ0MGExZGUtMTJmZS00YmI3LTkwN2YtNTJmOTMzOTM0ZWMwuWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAAXgorVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDYyZGRlYjkxLWUwMDctNDQwNy1iNGRjLTFiNzM5MjQ4MDc4MYqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmDpHJvd3OckgGXkqIyMKp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SszIwMjQtMDctMjNUMDg6MjI6NDiqdGV4dC9wbGFpbpKiIiKqdGV4dC9wbGFpbpKqImV2ZXJ5b25lIqp0ZXh0L3BsYWlukqgiMjAubG9nIqp0ZXh0L3BsYWlukqh2IjAuMi4wIqp0ZXh0L3BsYWlukgKXkqIyMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SszIwMjQtMDctMjNUMDk6MTA6NTmqdGV4dC9wbGFpbpKiIiKqdGV4dC9wbGFpbpKnIllvaGVpIqp0ZXh0L3BsYWlukqgiMjEubG9nIqp0ZXh0L3BsYWlukqh2IjAuMi4wIqp0ZXh0L3BsYWlukgOXkqIyMqp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SszIwMjQtMDctMjRUMDI6MzA6MjWqdGV4dC9wbGFpbpKiIiKqdGV4dC9wbGFpbpKmInN1YmUiqnRleHQvcGxhaW6SqCIyMi5sb2ciqnRleHQvcGxhaW6SqHYiMC4yLjAiqnRleHQvcGxhaW6SBJeSojIzqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKzMjAyNC0wNy0yNFQwNDowNDoyMap0ZXh0L3BsYWlukqIiIqp0ZXh0L3BsYWlukqsiaGFzaGltb3RvIqp0ZXh0L3BsYWlukqgiMjMubG9nIqp0ZXh0L3BsYWlukqh2IjAuMi4wIqp0ZXh0L3BsYWlukgWXkqIyNKp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SszIwMjQtMDctMjRUMDQ6MTg6NDaqdGV4dC9wbGFpbpKiIiKqdGV4dC9wbGFpbpKrImhhc2hpbW90byKqdGV4dC9wbGFpbpKoIjI0LmxvZyKqdGV4dC9wbGFpbpKodiIwLjIuMCKqdGV4dC9wbGFpbpIGl5KiMjWqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukrMyMDI0LTA3LTI0VDA1OjE1OjAyqnRleHQvcGxhaW6SoiIiqnRleHQvcGxhaW6StyJIYXNoaW1vdG8sT3RzdWJvLFN1YmUiqnRleHQvcGxhaW6SqCIyNS5sb2ciqnRleHQvcGxhaW6SqHYiMS4wLjAiqnRleHQvcGxhaW6SB5eSojI3qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKzMjAyNC0wNy0yNFQwODoxNzoxM6p0ZXh0L3BsYWlukqIiIqp0ZXh0L3BsYWlukqciWW9oZWkiqnRleHQvcGxhaW6SqCIyNy5sb2ciqnRleHQvcGxhaW6SqHYiMS4wLjAiqnRleHQvcGxhaW6SCJeSojI4qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKzMjAyNC0wNy0yNFQwOTo1NDowNqp0ZXh0L3BsYWlukqIiIqp0ZXh0L3BsYWlukqYic3ViZSKqdGV4dC9wbGFpbpKoIjI4LmxvZyKqdGV4dC9wbGFpbpKodiIxLjAuMCKqdGV4dC9wbGFpbpIJl5KiMjmqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukrMyMDI0LTA3LTI0VDEwOjEyOjQ0qnRleHQvcGxhaW6SoiIiqnRleHQvcGxhaW6SriJPdHN1Ym8sS29uZG8iqnRleHQvcGxhaW6SqCIyOS5sb2ciqnRleHQvcGxhaW6SqHYiMS4wLjAiqnRleHQvcGxhaW6SCpeSojMwqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKzMjAyNC0wNy0yNFQxMTowODoxMKp0ZXh0L3BsYWlukqIiIqp0ZXh0L3BsYWlukqYic3ViZSKqdGV4dC9wbGFpbpKoIjMwLmxvZyKqdGV4dC9wbGFpbpKodiIxLjAuMCKqdGV4dC9wbGFpbqRtb3Jlksy8l5KjMjIwqnRleHQvcGxhaW6SoTSqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukrci6YCa5bi444GuMTAw5Zue6Kmm6aiTIqp0ZXh0L3BsYWlukqgibWFraXRhIqp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbqhvYmplY3RpZLBhODA5N2JiOTMwOTE0MTAxpnNjaGVtYYKlbmFtZXOXomlkq2NhbXBhaWduX2lkrHJ1bl9kYXRldGltZaRub3Rlp3NoaWZ0ZXKnbG9nZmlsZa9zaGlmdHNjcmlwdF92ZXKldHlwZXOXpUludDY0pkludDY0P6lEYXRlVGltZT+mU3RyaW5nplN0cmluZ6dTdHJpbmc/rlZlcnNpb25OdW1iZXI/pG1pbWXZImFwcGxpY2F0aW9uL3ZuZC5wbHV0by50YWJsZStvYmplY3Sscm9vdGFzc2lnbmVlqXFhcWNfcnVuc7JsYXN0X3J1bl90aW1lc3RhbXDLQdm/BG4+85mwcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJDYyZGRlYjkxLWUwMDctNDQwNy1iNGRjLTFiNzM5MjQ4MDc4MblkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgAmr1O1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SRkM2M5NTMxNi03ZmZiLTExZWYtMWUyYy0yOTM0Zjg5YTIzMzaKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R5oKRtaW1lqnRleHQvcGxhaW6scm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdm/BG4TKr+wcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJGQzYzk1MzE2LTdmZmItMTFlZi0xZTJjLTI5MzRmODlhMjMzNrlkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgAMv8O1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SQ3OTcwMzc0NS02YzBlLTQyMDEtYTU4ZC1lNzU5OTRmYWI0ZTSKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R5g6Ryb3dznJIBlpKhMap0ZXh0L3BsYWlukqEwqnRleHQvcGxhaW6SozE0Map0ZXh0L3BsYWlukqUiS0VLIqp0ZXh0L3BsYWlukqUiR05EIqp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6SApaSoTKqdGV4dC9wbGFpbpKhMKp0ZXh0L3BsYWlukqMxNDCqdGV4dC9wbGFpbpKlIktFSyKqdGV4dC9wbGFpbpKlIkdORCKqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukgOWkqEzqnRleHQvcGxhaW6SoTCqdGV4dC9wbGFpbpKjMTQ0qnRleHQvcGxhaW6SpSJLRUsiqnRleHQvcGxhaW6SpSJHTkQiqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpIElpKhNKp0ZXh0L3BsYWlukqEwqnRleHQvcGxhaW6SozE0M6p0ZXh0L3BsYWlukqUiS0VLIqp0ZXh0L3BsYWlukqUiR05EIqp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6SBZaSoTWqdGV4dC9wbGFpbpKhMKp0ZXh0L3BsYWlukqMxNTCqdGV4dC9wbGFpbpKlIktFSyKqdGV4dC9wbGFpbpKlIkdORCKqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukgaWkqE2qnRleHQvcGxhaW6SoTCqdGV4dC9wbGFpbpKjMTUxqnRleHQvcGxhaW6SpSJLRUsiqnRleHQvcGxhaW6SpSJHTkQiqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpIHlpKhN6p0ZXh0L3BsYWlukqEwqnRleHQvcGxhaW6SozE0Mqp0ZXh0L3BsYWlukqUiS0VLIqp0ZXh0L3BsYWlukqUiR05EIqp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6SCJaSoTiqdGV4dC9wbGFpbpKhMKp0ZXh0L3BsYWlukqMxNDiqdGV4dC9wbGFpbpKlIktFSyKqdGV4dC9wbGFpbpKlIkdORCKqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukgmWkqE5qnRleHQvcGxhaW6SoTCqdGV4dC9wbGFpbpKjMTUyqnRleHQvcGxhaW6SpSJLRUsiqnRleHQvcGxhaW6SpSJHTkQiqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpIKlpKiMTCqdGV4dC9wbGFpbpKhMKp0ZXh0L3BsYWlukqMxMzmqdGV4dC9wbGFpbpKlIktFSyKqdGV4dC9wbGFpbpKlIkdORCKqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlupG1vcmWSzQHglpKjNDgwqnRleHQvcGxhaW6SpSLvvJMiqnRleHQvcGxhaW6SozE4Mqp0ZXh0L3BsYWlukqUiS0VLIqp0ZXh0L3BsYWlukqUiR05EIqp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6ob2JqZWN0aWSwZTc3ODU3MTUyMTZjOWE5OKZzY2hlbWGCpW5hbWVzlqJpZLBxYXFjX2NhbXBhaWduX2lkpnBzYl9pZKxzb3VyY2VfcGxhY2WrZGVzdGluYXRpb26kdGltZaV0eXBlc5alSW50NjSjQW55pUludDY0plN0cmluZ6ZTdHJpbmenTWlzc2luZ6RtaW1l2SJhcHBsaWNhdGlvbi92bmQucGx1dG8udGFibGUrb2JqZWN0rHJvb3Rhc3NpZ25lZa1xYXFjX2Rpc3BhdGNosmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8EbkH6rbBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkNzk3MDM3NDUtNmMwZS00MjAxLWE1OGQtZTc1OTk0ZmFiNGU0uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOADZAuLVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDEyODdiNDc5LWNjZTktNGViMS05NDliLTlkYTdkMDMyOWMyNIqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmgpG1pbWWqdGV4dC9wbGFpbqxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8DOVxBhbBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkMTI4N2I0NzktY2NlOS00ZWIxLTk0OWItOWRhN2QwMzI5YzI0uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAAeetbVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJGE3YzFhZTg4LTM0ZGMtNDQ1Yy1hZDJjLTM4NzkxOTJkMTNjN4qmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmDpHJvd3ORkgGZkqMxNjOqdGV4dC9wbGFpbpKiNDeqdGV4dC9wbGFpbpKjMjM1qnRleHQvcGxhaW6SpDExODeqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlupG1vcmWob2JqZWN0aWSwZGQzNDY4NzQ1YmFkZjE0ZaZzY2hlbWGCpW5hbWVzmaJpZKVydW5pZKpwc2JvYXJkX2lksGRhdWdodGVyYm9hcmRfaWS2cmVzaXN0YW5jZV90ZXN0X3Bhc3NlZKVxc3BpcKVyZWNvdqVwb3dlcqRtb3JlpXR5cGVzmaVJbnQ2NKVJbnQ2NKVJbnQ2NKZJbnQ2ND+lSW50NjSlSW50NjSlSW50NjSlSW50NjSkbW9yZaRtaW1l2SJhcHBsaWNhdGlvbi92bmQucGx1dG8udGFibGUrb2JqZWN0rHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwY/NwiesHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SRhN2MxYWU4OC0zNGRjLTQ0NWMtYWQyYy0zODc5MTkyZDEzYze5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc1w/bVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDAyOTlkNWI3LThiOWYtNDRhZS1hMmNmLTNkYjM2ZTFmODU3YYqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHnZMDxkaXYgY2xhc3M9Im1hcmtkb3duIj48cD4xMDDlm57oqabpqJM8L3A+CjwvZGl2PqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8B+f9BnrBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkMDI5OWQ1YjctOGI5Zi00NGFlLWEyY2YtM2RiMzZlMWY4NTdhuWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAAb9lbVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDNhMWFhM2Q4LWJlYTAtNDZjYi1iMDdlLTg4ZTk0ODRlNzVjNoqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHnZN2NvbHNfdmlzaWJpbGl0eV90b2dnbGUgKGdlbmVyaWMgZnVuY3Rpb24gd2l0aCAxIG1ldGhvZCmkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwWeI3FxsHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQzYTFhYTNkOC1iZWEwLTQ2Y2ItYjA3ZS04OGU5NDg0ZTc1Yza5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AMK4ltXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkNmNlYjE5OGUtZWRkMy00OTU0LWIxZmYtYmVlZjMzYzNmMjA1iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keYOkcm93c5GSAZmSozE3Mqp0ZXh0L3BsYWlukqI0Oap0ZXh0L3BsYWlukqMyMzWqdGV4dC9wbGFpbpKjMTAwqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbqRtb3JlqG9iamVjdGlksDczNmY2NjVmMDgxNmFhYjmmc2NoZW1hgqVuYW1lc5miaWSlcnVuaWSqcHNib2FyZF9pZKludW1fdGVzdHO6aW5zdWZmaWNpZW50X3Jlc2V0X3dpdGhfMTDZIXJlc2V0X2ZhaWxlZF90aG91Z2hfcmVjb25maWdfZG9uZbRhbHdheXNfaGl0X2ZsYWdfdHJ1ZahkYWNfaXNfMKRtb3JlpXR5cGVzmaVJbnQ2NKVJbnQ2NKVJbnQ2NKVJbnQ2NKZJbnQ2ND+mSW50NjQ/pkludDY0P6ZJbnQ2ND+kbW9yZaRtaW1l2SJhcHBsaWNhdGlvbi92bmQucGx1dG8udGFibGUrb2JqZWN0rHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwY/OB1lsHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQ2Y2ViMTk4ZS1lZGQzLTQ5NTQtYjFmZi1iZWVmMzNjM2YyMDW5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc2DirVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDZkYTFlZmJlLWU1YTAtNDM3Ni1iOGVhLWVkMjFmMDlkYTA4NIqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmDpHJvd3OckgGZkqExqnRleHQvcGxhaW6SojI0qnRleHQvcGxhaW6Sojc2qnRleHQvcGxhaW6SojQ4qnRleHQvcGxhaW6SojE4qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6kbW9yZZICmZKhMqp0ZXh0L3BsYWlukqIyNKp0ZXh0L3BsYWlukqI3Nap0ZXh0L3BsYWlukqI1NKp0ZXh0L3BsYWlukqE5qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6kbW9yZZIDmZKhM6p0ZXh0L3BsYWlukqIyNKp0ZXh0L3BsYWlukqI3NKp0ZXh0L3BsYWlukqI1Mqp0ZXh0L3BsYWlukqIxN6p0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlupG1vcmWSBJmSoTSqdGV4dC9wbGFpbpKiMjSqdGV4dC9wbGFpbpKiNzOqdGV4dC9wbGFpbpKiNDWqdGV4dC9wbGFpbpKhOKp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlupG1vcmWSBZmSoTWqdGV4dC9wbGFpbpKiMjSqdGV4dC9wbGFpbpKiNjiqdGV4dC9wbGFpbpKiNTmqdGV4dC9wbGFpbpKiMTaqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbqRtb3JlkgaZkqE2qnRleHQvcGxhaW6SojI0qnRleHQvcGxhaW6SojY3qnRleHQvcGxhaW6SojQ0qnRleHQvcGxhaW6SoTeqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbqRtb3JlkgeZkqE3qnRleHQvcGxhaW6SojI0qnRleHQvcGxhaW6SojY2qnRleHQvcGxhaW6SojU1qnRleHQvcGxhaW6SojE1qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6kbW9yZZIImZKhOKp0ZXh0L3BsYWlukqIyNKp0ZXh0L3BsYWlukqI2Nap0ZXh0L3BsYWlukqI1M6p0ZXh0L3BsYWlukqE2qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6kbW9yZZIJmZKhOap0ZXh0L3BsYWlukqIyNKp0ZXh0L3BsYWlukqI2MKp0ZXh0L3BsYWlukqI0Mqp0ZXh0L3BsYWlukqIxNKp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlupG1vcmWSCpmSojEwqnRleHQvcGxhaW6SojI0qnRleHQvcGxhaW6SojU5qnRleHQvcGxhaW6SojYxqnRleHQvcGxhaW6SoTWqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbqRtb3JlpG1vcmWSzQNbmZKjODU5qnRleHQvcGxhaW6SozIxOap0ZXh0L3BsYWlukqM4MzSqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukqIxOKp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlupG1vcmWob2JqZWN0aWSwMmJmZTI1ZTc3ZjM5MjNmZqZzY2hlbWGCpW5hbWVzmaJpZKVydW5pZKpwc2JvYXJkX2lksGRhdWdodGVyYm9hcmRfaWSocG9zaXRpb262cmVzaXN0YW5jZV90ZXN0X3Bhc3NlZKVxc3BpcKVyZWNvdqRtb3JlpXR5cGVzmaVJbnQ2NKVJbnQ2NKVJbnQ2NKZJbnQ2ND+lSW50NjSlSW50NjSlSW50NjSlSW50NjSkbW9yZaRtaW1l2SJhcHBsaWNhdGlvbi92bmQucGx1dG8udGFibGUrb2JqZWN0rHJvb3Rhc3NpZ25lZbJxYXFjX3NpbmdsZV9yZXN1bHSybGFzdF9ydW5fdGltZXN0YW1wy0HZvwRuPbGrsHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQ2ZGExZWZiZS1lNWEwLTQzNzYtYjhlYS1lZDIxZjA5ZGEwODS5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4Bd1D9tXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkMWU5YWI2YjAtYjI1ZC00NGFkLTkyYWUtZjEyZjkyZDkxZDVliqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keaCkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwY/NzQ3sHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQxZTlhYjZiMC1iMjVkLTQ0YWQtOTJhZS1mMTJmOTJkOTFkNWW5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AAQxStXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkNGQ2MjkwMGEtMDgxMC00OWQxLTg2MzItYTllNzU0NGYzODFiiqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keb9TUUxpdGUuREIoIi4uL3BzYm9hcmRfcWFxYy5kYiIppG1pbWWqdGV4dC9wbGFpbqxyb290YXNzaWduZWWiZGKybGFzdF9ydW5fdGltZXN0YW1wy0HZvwRuHXL3sHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQ0ZDYyOTAwYS0wODEwLTQ5ZDEtODYzMi1hOWU3NTQ0ZjM4MWK5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AAj/ttXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkZWMyZDQwZjctMWUwNi00MTRkLTlhNzctOWUzNDg5YmEyNzFjiqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedk4PGRpdiBjbGFzcz0ibWFya2Rvd24iPjxoMT7jgZ3jga7ku5bjgrPjg7zjg4k8L2gxPgo8L2Rpdj6kbWltZal0ZXh0L2h0bWyscm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdm/AMmH582wcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJGVjMmQ0MGY3LTFlMDYtNDE0ZC05YTc3LTllMzQ4OWJhMjcxY7lkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgAH1Be1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SRiNTNlZGU4Yy00MTRlLTQwYjUtOGYzMC1mZWRmNDdhNTMwYWOKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R52VI8ZGl2IGNsYXNzPSJtYXJrZG93biI+PHA+5oq15oqX5YCk44OG44K544OIOiBPSyA8YnIgLz7lh7rojbfnirbms4E6IOa4iDwvcD4KPC9kaXY+pG1pbWWpdGV4dC9odG1srHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZvwY/NivHsHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SRiNTNlZGU4Yy00MTRlLTQwYjUtOGYzMC1mZWRmNDdhNTMwYWO5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4B3ErEtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkOTExYTVhZTgtNTgwMC00ZDIwLTlkNzMtYmNjNzIwNWQzNTAxiqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedoL3jEwLWVsZW1lbnQgVmVjdG9ye1NRTGl0ZS5EQlRhYmxlfToKIFNRTGl0ZS5EQlRhYmxlKCJ2ZXJzaW9ucyIsIFRhYmxlcy5TY2hlbWE6CiA6Y29udmVydGVyICBVbmlvbntNaXNzaW5nLCBTdHJpbmd9KQogU1FMaXRlLkRCVGFibGUoInBzX2JvYXJkcyIsIFRhYmxlcy5TY2hlbWE6CiA6aWQgICAgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6ZGF1Z2h0ZXJib2FyZF9pZCAgVW5pb257TWlzc2luZywgSW50NjR9KQogU1FMaXRlLkRCVGFibGUoInFhcWNfc2luZ2xlX3J1bl9yZXN1bHRzIiwgVGFibGVzLlNjaGVtYToKIDppZCAgICAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpydW5pZCAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpwc2JvYXJkX2lkICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpkYXVnaHRlcmJvYXJkX2lkICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpwb3NpdGlvbiAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpyZXNpc3RhbmNlX3Rlc3RfcGFzc2VkICBNaXNzaW5nCiA6cXNwaXAgICAgICAgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiDii64gICAgICAgICAgICAgICAgICAgICAgICAKIDpjbG9jayAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDphc2R0cCAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpyZXNldCAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpxYXFjX3Jlc3VsdCAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpsdmRzX3R4X3NrZXcgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBGbG9hdDY0fQogOm5vdGUgICAgICAgICAgICAgICAgICAgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30pCiBTUUxpdGUuREJUYWJsZSgic3FsaXRlX3NlcXVlbmNlIiwgVGFibGVzLlNjaGVtYToKIDpuYW1lICBNaXNzaW5nCiA6c2VxICAgTWlzc2luZykKIFNRTGl0ZS5EQlRhYmxlKCJxYXFjX3J1bnMiLCBUYWJsZXMuU2NoZW1hOgogOmlkICAgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6Y2FtcGFpZ25faWQgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpydW5fZGF0ZXRpbWUgICAgIE1pc3NpbmcKIDpub3RlICAgICAgICAgICAgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30KIDpzaGlmdGVyICAgICAgICAgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30KIDpsb2dmaWxlICAgICAgICAgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30KIDpzaGlmdHNjcmlwdF92ZXIgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30pCiBTUUxpdGUuREJUYWJsZSgicWFxY19kaXNwYXRjaCIsIFRhYmxlcy5TY2hlbWE6CiA6aWQgICAgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6cWFxY19jYW1wYWlnbl9pZCAgVW5pb257TWlzc2luZywgSW50NjR9CiA6cHNiX2lkICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6c291cmNlX3BsYWNlICAgICAgVW5pb257TWlzc2luZywgU3RyaW5nfQogOmRlc3RpbmF0aW9uICAgICAgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30KIDp0aW1lICAgICAgICAgICAgICBNaXNzaW5nKQogU1FMaXRlLkRCVGFibGUoInFhcWNfY2FtcGFpZ25zIiwgVGFibGVzLlNjaGVtYToKIDppZCAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpzdGFydF9kYXRlICBNaXNzaW5nCiA6ZW5kX2RhdGUgICAgTWlzc2luZwogOm5vdGUgICAgICAgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30pCiBTUUxpdGUuREJUYWJsZSgicWFxY19yZXNpc3RhbmNlX2NoZWNrIiwgVGFibGVzLlNjaGVtYToKIDppZCAgICAgIFVuaW9ue01pc3NpbmcsIEludDY0fQogOnBzYl9pZCAgVW5pb257TWlzc2luZywgSW50NjR9CiA6cGFzc2VkICBNaXNzaW5nKQogU1FMaXRlLkRCVGFibGUoInFhcWNfZXh0cmFfcnVuX3Jlc3VsdHMiLCBUYWJsZXMuU2NoZW1hOgogOmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6cnVuaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpwc2JvYXJkX2lkICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9ue01pc3NpbmcsIEludDY0fQogOnBvc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6bnVtX3Rlc3RzICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDppbnN1ZmZpY2llbnRfcmVzZXRfd2l0aF8xMCAgICAgICAgIFVuaW9ue01pc3NpbmcsIEludDY0fQogOnJlc2V0X2ZhaWxlZF90aG91Z2hfcmVjb25maWdfZG9uZSAgVW5pb257TWlzc2luZywgSW50NjR9CiDii64gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogOmJjaWRfZmFpbF8wMDAgICAgICAgICAgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6bG93X2VmZmljaWVuY3kgICAgICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpiY2lkX2ZhaWwgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9ue01pc3NpbmcsIEludDY0fQogOmludmFsaWRfcmVnaXN0ZXJfdmFsdWUgICAgICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6cG93ZXJfb3V0X29mX3JhbmdlICAgICAgICAgICAgICAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpub3RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9ue01pc3NpbmcsIFN0cmluZ30pCiBTUUxpdGUuREJUYWJsZSgicWFxY19wb3NpdGlvbnMiLCBUYWJsZXMuU2NoZW1hOgogOmlkICAgICAgICAgVW5pb257TWlzc2luZywgSW50NjR9CiA6bmFtZSAgICAgICBVbmlvbntNaXNzaW5nLCBTdHJpbmd9CiA6c3RhdGlvbiAgICBVbmlvbntNaXNzaW5nLCBJbnQ2NH0KIDpwb3NpdGlvbiAgIFVuaW9ue01pc3NpbmcsIEludDY0fQogOnJpc2luZ19ucyAgVW5pb257TWlzc2luZywgRmxvYXQ2NH0ppG1pbWWqdGV4dC9wbGFpbqxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8Ebjt4IbBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkOTExYTVhZTgtNTgwMC00ZDIwLTlkNzMtYmNjNzIwNWQzNTAxuWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAA9uA7VwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJGE3N2NjZjZiLWRiNjctNGEwNy04MzNhLTIxMGFmY2NjMzllNYqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHmDpHJvd3OckgGZkqExqnRleHQvcGxhaW6SojIwqnRleHQvcGxhaW6SojQ5qnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKjMTAwqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpKhMap0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6kbW9yZZICmZKhMqp0ZXh0L3BsYWlukqIyMKp0ZXh0L3BsYWlukqI0M6p0ZXh0L3BsYWlukqEyqnRleHQvcGxhaW6SozEwMKp0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlupG1vcmWSA5mSoTOqdGV4dC9wbGFpbpKiMjCqdGV4dC9wbGFpbpKiNTGqdGV4dC9wbGFpbpKhM6p0ZXh0L3BsYWlukqMxMDCqdGV4dC9wbGFpbpKhMqp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbqRtb3JlkgSZkqE0qnRleHQvcGxhaW6SojIwqnRleHQvcGxhaW6SojU3qnRleHQvcGxhaW6SoTSqdGV4dC9wbGFpbpKjMTAwqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukqExqnRleHQvcGxhaW6kbW9yZZIFmZKhNap0ZXh0L3BsYWlukqIyMKp0ZXh0L3BsYWlukqI1Oap0ZXh0L3BsYWlukqE1qnRleHQvcGxhaW6SozEwMKp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlupG1vcmWSBpmSoTaqdGV4dC9wbGFpbpKiMjCqdGV4dC9wbGFpbpKiNjWqdGV4dC9wbGFpbpKhNqp0ZXh0L3BsYWlukqMxMDCqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbqRtb3JlkgeZkqE3qnRleHQvcGxhaW6SojIwqnRleHQvcGxhaW6SojY3qnRleHQvcGxhaW6SoTeqdGV4dC9wbGFpbpKjMTAwqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6kbW9yZZIImZKhOKp0ZXh0L3BsYWlukqIyMKp0ZXh0L3BsYWlukqI3M6p0ZXh0L3BsYWlukqE4qnRleHQvcGxhaW6SozEwMKp0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlupG1vcmWSCZmSoTmqdGV4dC9wbGFpbpKiMjCqdGV4dC9wbGFpbpKiNzWqdGV4dC9wbGFpbpKhOap0ZXh0L3BsYWlukqMxMDCqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6SoTGqdGV4dC9wbGFpbqRtb3JlkgqZkqIxMKp0ZXh0L3BsYWlukqIyMKp0ZXh0L3BsYWlukqI1MKp0ZXh0L3BsYWlukqIxMKp0ZXh0L3BsYWlukqMxMDCqdGV4dC9wbGFpbpKhNap0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbqRtb3JlpG1vcmWSzQOxmZKjOTQ1qnRleHQvcGxhaW6SozIyMKp0ZXh0L3BsYWlukqM4MzSqdGV4dC9wbGFpbpKiMTiqdGV4dC9wbGFpbpKjMTAwqnRleHQvcGxhaW6Sp21pc3NpbmeqdGV4dC9wbGFpbpKnbWlzc2luZ6p0ZXh0L3BsYWlukqdtaXNzaW5nqnRleHQvcGxhaW6kbW9yZahvYmplY3RpZLAxNTNhZWU2NjgzZGMxZmE2pnNjaGVtYYKlbmFtZXOZomlkpXJ1bmlkqnBzYm9hcmRfaWSocG9zaXRpb26pbnVtX3Rlc3Rzumluc3VmZmljaWVudF9yZXNldF93aXRoXzEw2SFyZXNldF9mYWlsZWRfdGhvdWdoX3JlY29uZmlnX2RvbmW0YWx3YXlzX2hpdF9mbGFnX3RydWWkbW9yZaV0eXBlc5mlSW50NjSlSW50NjSlSW50NjSlSW50NjSlSW50NjSmSW50NjQ/pkludDY0P6ZJbnQ2ND+kbW9yZaRtaW1l2SJhcHBsaWNhdGlvbi92bmQucGx1dG8udGFibGUrb2JqZWN0rHJvb3Rhc3NpZ25lZbZxYXFjX2V4dHJhX3J1bl9yZXN1bHRzsmxhc3RfcnVuX3RpbWVzdGFtcMtB2b8EbkCfmbBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkYTc3Y2NmNmItZGI2Ny00YTA3LTgzM2EtMjEwYWZjY2MzOWU1uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAR5387VwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMKrc3RhdHVzX3RyZWWFpG5hbWWobm90ZWJvb2uoc3VidGFza3OEpnNhdmluZ4WkbmFtZaZzYXZpbmeoc3VidGFza3OAq2ZpbmlzaGVkX2F0y0HZvwaZ+HW8p3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdm/Bpn4Zlapd29ya3NwYWNlhaRuYW1lqXdvcmtzcGFjZahzdWJ0YXNrc4KsaW5pdF9wcm9jZXNzhaRuYW1lrGluaXRfcHJvY2Vzc6hzdWJ0YXNrc4ShNIWkbmFtZaE0qHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2b7/aze3fKdzdWNjZXNzw6pzdGFydGVkX2F0y0HZvv9rElvqoTGFpG5hbWWhMahzdWJ0YXNrc4CrZmluaXNoZWRfYXTLQdm+/2sNhEWnc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2b7/av2waKEyhaRuYW1loTKoc3VidGFza3OAq2ZpbmlzaGVkX2F0y0HZvv9rDZBcp3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdm+/2sNhG+hM4WkbmFtZaEzqHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2b7/axJbyKdzdWNjZXNzw6pzdGFydGVkX2F0y0HZvv9rDZBxq2ZpbmlzaGVkX2F0y0HZvv9rN8Ccp3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdm+/2r9sBiuY3JlYXRlX3Byb2Nlc3OFpG5hbWWuY3JlYXRlX3Byb2Nlc3Ooc3VidGFza3OC2SFMb2FkaW5nIG5vdGVib29rIGJvb3QgZW52aXJvbm1lbnSFpG5hbWXZIUxvYWRpbmcgbm90ZWJvb2sgYm9vdCBlbnZpcm9ubWVudKhzdWJ0YXNrc4CrZmluaXNoZWRfYXTLQdm+/2r9mLOnc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2b7/anqbObBTdGFydGluZyBwcm9jZXNzhaRuYW1lsFN0YXJ0aW5nIHByb2Nlc3Ooc3VidGFza3OAq2ZpbmlzaGVkX2F0y0HZvv9qeoXgp3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdm+/2n4f6arZmluaXNoZWRfYXTLQdm+/2r9mK+nc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2b7/afh/JKtmaW5pc2hlZF9hdMtB2b7/azfAqadzdWNjZXNzw6pzdGFydGVkX2F0y0HZvv9p+H7xo3BrZ4WkbmFtZaNwa2eoc3VidGFza3OBqGFuYWx5c2lzhaRuYW1lqGFuYWx5c2lzqHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2b8GmfgY0qdzdWNjZXNzw6pzdGFydGVkX2F0y0HZvwaZ9/SEq2ZpbmlzaGVkX2F0y0HZvwaZ+Bjjp3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdm/Bpn39E2jcnVuhaRuYW1lo3J1bqhzdWJ0YXNrc4KwcmVzb2x2ZV90b3BvbG9neYWkbmFtZbByZXNvbHZlX3RvcG9sb2d5qHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2b8Gmfh26qdzdWNjZXNzw6pzdGFydGVkX2F0y0HZvwaZ+FoEqGV2YWx1YXRlhaRuYW1lqGV2YWx1YXRlqHN1YnRhc2tzgaExhaRuYW1loTGoc3VidGFza3OAq2ZpbmlzaGVkX2F0y0HZvwaZ+2QXp3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdm/Bpn4tgOrZmluaXNoZWRfYXTLQdm/Bpn7ZOmnc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2b8Gmfh286tmaW5pc2hlZF9hdMtB2b8Gmftk5adzdWNjZXNzw6pzdGFydGVkX2F0y0HZvwaZ+Fm8q2ZpbmlzaGVkX2F0wKdzdWNjZXNzwKpzdGFydGVkX2F0y0HZvv9p9lsIsWNlbGxfZGVwZW5kZW5jaWVz3gAg2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmGEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmG0ZG93bnN0cmVhbV9jZWxsc19tYXCBpXBzYmlklNkkYjUzZWRlOGMtNDE0ZS00MGI1LThmMzAtZmVkZjQ3YTUzMGFj2SQxOTliNDVmNi0xZTYzLTQzOTItYWY2YS02YTVlZDgzYmY0NjfZJDk1MTNmMDE3LTc5MDUtNDk1ZC1hN2ViLTZjYTU5MjczMDhkZNkkMWU5YWI2YjAtYjI1ZC00NGFkLTkyYWUtZjEyZjkyZDkxZDVlsnVwc3RyZWFtX2NlbGxzX21hcIunQG1kX3N0cpCkQ29yZZChOpCoQmFzZS5nZXSQpUBiaW5kkKRCYXNlkKtQbHV0b1J1bm5lcpC3UGx1dG9SdW5uZXIuY3JlYXRlX2JvbmSQq051bWJlckZpZWxkkK9Db3JlLmFwcGxpY2FibGWQqGdldGluZGV4kNkkMTk5YjQ1ZjYtMWU2My00MzkyLWFmNmEtNmE1ZWQ4M2JmNDY3hLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkMTk5YjQ1ZjYtMWU2My00MzkyLWFmNmEtNmE1ZWQ4M2JmNDY3tGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCFrXFhcWNfZGlzcGF0Y2iR2SQ3OTcwMzc0NS02YzBlLTQyMDEtYTU4ZC1lNzU5OTRmYWI0ZTSmZmlsdGVykKI9PpClcHNiaWSR2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmGiPT2Q2SRhODViNGYxOS04MmU0LTQwZDUtYWY5Zi1kNTI4NjU3OGIxZmKEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SRhODViNGYxOS04MmU0LTQwZDUtYWY5Zi1kNTI4NjU3OGIxZmK0ZG93bnN0cmVhbV9jZWxsc19tYXCBvnNpbmdsZV9yZXN1bHRfZm9yX2lkX3Nob3dfY29sc5HZJGE3YzFhZTg4LTM0ZGMtNDQ1Yy1hZDJjLTM4NzkxOTJkMTNjN7J1cHN0cmVhbV9jZWxsc19tYXCJpENvcmWQpEJhc2WQt1BsdXRvUnVubmVyLmNyZWF0ZV9ib25kkKtQbHV0b1J1bm5lcpC2Y29sc192aXNpYmlsaXR5X3RvZ2dsZZHZJDNhMWFhM2Q4LWJlYTAtNDZjYi1iMDdlLTg4ZTk0ODRlNzVjNrJxYXFjX3NpbmdsZV9yZXN1bHSR2SQ2ZGExZWZiZS1lNWEwLTQzNzYtYjhlYS1lZDIxZjA5ZGEwODSvQ29yZS5hcHBsaWNhYmxlkKVAYmluZJCoQmFzZS5nZXSQ2SQ5NTEzZjAxNy03OTA1LTQ5NWQtYTdlYi02Y2E1OTI3MzA4ZGSEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ5NTEzZjAxNy03OTA1LTQ5NWQtYTdlYi02Y2E1OTI3MzA4ZGS0ZG93bnN0cmVhbV9jZWxsc19tYXCBtHNpbmdsZV9yZXN1bHRfZm9yX2lkktkkZWQ3YzQwZmUtZjk2Ni00YWZiLWE5NjItODk2YzlmMTA5OTQ22SQxOTJjNDdhMy03MjAyLTQzNTEtODYzOC1lYzQ5ZWNiOTAxYzWydXBzdHJlYW1fY2VsbHNfbWFwhbJxYXFjX3NpbmdsZV9yZXN1bHSR2SQ2ZGExZWZiZS1lNWEwLTQzNzYtYjhlYS1lZDIxZjA5ZGEwODSmZmlsdGVykKI9PpClcHNiaWSR2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmGiPT2Q2SQ0NTgyOGJiNC1lOWY1LTQ2ZDUtOGY0OC04ODI4NGYzMThjYzSEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ0NTgyOGJiNC1lOWY1LTQ2ZDUtOGY0OC04ODI4NGYzMThjYzS0ZG93bnN0cmVhbV9jZWxsc19tYXCBvWV4dHJhX3Jlc3VsdF9mb3JfaWRfc2hvd19jb2xzkdkkNmNlYjE5OGUtZWRkMy00OTU0LWIxZmYtYmVlZjMzYzNmMjA1snVwc3RyZWFtX2NlbGxzX21hcImkQ29yZZCkQmFzZZC4ZXh0cmFfcmVzdWx0X2Zvcl9pZF9zaG93kdkkNTEzNzBhYmItZjBmYi00YWUwLWI0ODgtYmY5ZmM3NzY1Nzdjt1BsdXRvUnVubmVyLmNyZWF0ZV9ib25kkKtQbHV0b1J1bm5lcpC2Y29sc192aXNpYmlsaXR5X3RvZ2dsZZHZJDNhMWFhM2Q4LWJlYTAtNDZjYi1iMDdlLTg4ZTk0ODRlNzVjNq9Db3JlLmFwcGxpY2FibGWQpUBiaW5kkKhCYXNlLmdldJDZJGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MLRkb3duc3RyZWFtX2NlbGxzX21hcIG1cWFxY19yZXNpc3RhbmNlX2NoZWNrkdkkYjUzZWRlOGMtNDE0ZS00MGI1LThmMzAtZmVkZjQ3YTUzMGFjsnVwc3RyZWFtX2NlbGxzX21hcIqoQHNxbF9zdHKQpUJ5Um93kKtEQkludGVyZmFjZZHZJGQzYzk1MzE2LTdmZmItMTFlZi0xZTJjLTI5MzRmODlhMjMzNqJ8PpCpRGF0YUZyYW1lkKRCb29skKp0cmFuc2Zvcm0hkKJkYpHZJDRkNjI5MDBhLTA4MTAtNDlkMS04NjMyLWE5ZTc1NDRmMzgxYrNEQkludGVyZmFjZS5leGVjdXRlkKI9PpDZJDA1MThhZjQ0LTg3OGUtNDA1Mi1iNGQ0LWU3ZmIzYzM1ZWZlYYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJDA1MThhZjQ0LTg3OGUtNDA1Mi1iNGQ0LWU3ZmIzYzM1ZWZlYbRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwhqd1bmlxdWUhkLZxYXFjX2V4dHJhX3J1bl9yZXN1bHRzkdkkYTc3Y2NmNmItZGI2Ny00YTA3LTgzM2EtMjEwYWZjY2MzOWU1pmZpbHRlcpCiIT2Qoj0+kKI9PZDZJDE5MmM0N2EzLTcyMDItNDM1MS04NjM4LWVjNDllY2I5MDFjNYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJDE5MmM0N2EzLTcyMDItNDM1MS04NjM4LWVjNDllY2I5MDFjNbRkb3duc3RyZWFtX2NlbGxzX21hcIG5c2luZ2xlX3Jlc3VsdF9mb3JfaWRfc2hvd5HZJGE3YzFhZTg4LTM0ZGMtNDQ1Yy1hZDJjLTM4NzkxOTJkMTNjN7J1cHN0cmVhbV9jZWxsc19tYXCHo05vdJChOpC0c2luZ2xlX3Jlc3VsdF9mb3JfaWSR2SQ5NTEzZjAxNy03OTA1LTQ5NWQtYTdlYi02Y2E1OTI3MzA4ZGSobGVmdGpvaW6QrnFhcWNfcG9zaXRpb25zkdkkMjMxNjc5NzEtNDY3MS00ZjE4LTg0ZGYtNzJhN2RjNTkzOGUxp3JlbmFtZSGQoj0+kNkkMzFiNzQ4MjgtZmRjNy00YjA0LThiZTAtZWE0NDgyMGY5NTU1hLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkMzFiNzQ4MjgtZmRjNy00YjA0LThiZTAtZWE0NDgyMGY5NTU1tGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCA2SQ3YTExZTQ2MC04ZDZmLTQ1NGMtOGZlNi0zM2M1OWVlYjQ5MzeEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ3YTExZTQ2MC04ZDZmLTQ1NGMtOGZlNi0zM2M1OWVlYjQ5Mze0ZG93bnN0cmVhbV9jZWxsc19tYXCAsnVwc3RyZWFtX2NlbGxzX21hcIKnQG1kX3N0cpCoZ2V0aW5kZXiQ2SQxZDkwYzY4Ny03ZTY3LTQzZWQtYjViZi02OGVmOTA0MGRjOTWEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQxZDkwYzY4Ny03ZTY3LTQzZWQtYjViZi02OGVmOTA0MGRjOTW0ZG93bnN0cmVhbV9jZWxsc19tYXCAsnVwc3RyZWFtX2NlbGxzX21hcIKnQG1kX3N0cpCoZ2V0aW5kZXiQ2SRiYjE2N2E1ZS1iMjNhLTRmMDUtOWJhNi0zNjhhNDhmOWMxMjCEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SRiYjE2N2E1ZS1iMjNhLTRmMDUtOWJhNi0zNjhhNDhmOWMxMjC0ZG93bnN0cmVhbV9jZWxsc19tYXCAsnVwc3RyZWFtX2NlbGxzX21hcIDZJGVkN2M0MGZlLWY5NjYtNGFmYi1hOTYyLTg5NmM5ZjEwOTk0NoS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJGVkN2M0MGZlLWY5NjYtNGFmYi1hOTYyLTg5NmM5ZjEwOTk0NrRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwh7NleHRyYV9yZXN1bHRfZm9yX2lkkdkkMWU5YWI2YjAtYjI1ZC00NGFkLTkyYWUtZjEyZjkyZDkxZDVltHNpbmdsZV9yZXN1bHRfZm9yX2lkkdkkOTUxM2YwMTctNzkwNS00OTVkLWE3ZWItNmNhNTkyNzMwOGRkqXFhcWNfcnVuc5HZJDYyZGRlYjkxLWUwMDctNDQwNy1iNGRjLTFiNzM5MjQ4MDc4MaZmaWx0ZXKQo+KIiJCiPT6QomlukNkkMzNiNzA1MTYtNzY4Ny00NjNiLWE2NTQtMmNkZTNmMjUzOGFhhLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkMzNiNzA1MTYtNzY4Ny00NjNiLWE2NTQtMmNkZTNmMjUzOGFhtGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCCp0BtZF9zdHKQqGdldGluZGV4kNkkMjMxNjc5NzEtNDY3MS00ZjE4LTg0ZGYtNzJhN2RjNTkzOGUxhLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkMjMxNjc5NzEtNDY3MS00ZjE4LTg0ZGYtNzJhN2RjNTkzOGUxtGRvd25zdHJlYW1fY2VsbHNfbWFwga5xYXFjX3Bvc2l0aW9uc5LZJDE5MmM0N2EzLTcyMDItNDM1MS04NjM4LWVjNDllY2I5MDFjNdkkNTEzNzBhYmItZjBmYi00YWUwLWI0ODgtYmY5ZmM3NzY1NzdjsnVwc3RyZWFtX2NlbGxzX21hcIaoQHNxbF9zdHKQonw+kKtEQkludGVyZmFjZZHZJGQzYzk1MzE2LTdmZmItMTFlZi0xZTJjLTI5MzRmODlhMjMzNqlEYXRhRnJhbWWQomRikdkkNGQ2MjkwMGEtMDgxMC00OWQxLTg2MzItYTllNzU0NGYzODFis0RCSW50ZXJmYWNlLmV4ZWN1dGWQ2SQ1MTM3MGFiYi1mMGZiLTRhZTAtYjQ4OC1iZjlmYzc3NjU3N2OEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ1MTM3MGFiYi1mMGZiLTRhZTAtYjQ4OC1iZjlmYzc3NjU3N2O0ZG93bnN0cmVhbV9jZWxsc19tYXCBuGV4dHJhX3Jlc3VsdF9mb3JfaWRfc2hvd5LZJDZjZWIxOThlLWVkZDMtNDk1NC1iMWZmLWJlZWYzM2MzZjIwNdkkNDU4MjhiYjQtZTlmNS00NmQ1LThmNDgtODgyODRmMzE4Y2M0snVwc3RyZWFtX2NlbGxzX21hcIejTm90kLNleHRyYV9yZXN1bHRfZm9yX2lkkdkkMWU5YWI2YjAtYjI1ZC00NGFkLTkyYWUtZjEyZjkyZDkxZDVloTqQqGxlZnRqb2lukK5xYXFjX3Bvc2l0aW9uc5HZJDIzMTY3OTcxLTQ2NzEtNGYxOC04NGRmLTcyYTdkYzU5MzhlMaI9PpCncmVuYW1lIZDZJDg0NDBhMWRlLTEyZmUtNGJiNy05MDdmLTUyZjkzMzkzNGVjMIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJDg0NDBhMWRlLTEyZmUtNGJiNy05MDdmLTUyZjkzMzkzNGVjMLRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDYyZGRlYjkxLWUwMDctNDQwNy1iNGRjLTFiNzM5MjQ4MDc4MYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJDYyZGRlYjkxLWUwMDctNDQwNy1iNGRjLTFiNzM5MjQ4MDc4MbRkb3duc3RyZWFtX2NlbGxzX21hcIGpcWFxY19ydW5zkdkkZWQ3YzQwZmUtZjk2Ni00YWZiLWE5NjItODk2YzlmMTA5OTQ2snVwc3RyZWFtX2NlbGxzX21hcIyoQHNxbF9zdHKQq3Bhc3NtaXNzaW5nkK1WZXJzaW9uTnVtYmVykKJ8PpCiPT6QqERhdGVUaW1lkLNEQkludGVyZmFjZS5leGVjdXRlkKVCeVJvd5CrREJJbnRlcmZhY2WR2SRkM2M5NTMxNi03ZmZiLTExZWYtMWUyYy0yOTM0Zjg5YTIzMzapRGF0YUZyYW1lkKp0cmFuc2Zvcm0hkKJkYpHZJDRkNjI5MDBhLTA4MTAtNDlkMS04NjMyLWE5ZTc1NDRmMzgxYtkkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM2hLRwcmVjZWRlbmNlX2hldXJpc3RpYwenY2VsbF9pZNkkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM2tGRvd25zdHJlYW1fY2VsbHNfbWFwhqVEYXRlc5CmU1FMaXRlktkkNGQ2MjkwMGEtMDgxMC00OWQxLTg2MzItYTllNzU0NGYzODFi2SQ5MTFhNWFlOC01ODAwLTRkMjAtOWQ3My1iY2M3MjA1ZDM1MDGnUGx1dG9VSZHZJDNhMWFhM2Q4LWJlYTAtNDZjYi1iMDdlLTg4ZTk0ODRlNzVjNqpEYXRhRnJhbWVzkKtEQkludGVyZmFjZZbZJDZkYTFlZmJlLWU1YTAtNDM3Ni1iOGVhLWVkMjFmMDlkYTA4NNkkMjMxNjc5NzEtNDY3MS00ZjE4LTg0ZGYtNzJhN2RjNTkzOGUx2SQ2MmRkZWI5MS1lMDA3LTQ0MDctYjRkYy0xYjczOTI0ODA3ODHZJGE3N2NjZjZiLWRiNjctNGEwNy04MzNhLTIxMGFmY2NjMzllNdkkZTMxMmQ0OGQtOWQ4ZC00ZjQyLWIxMzQtN2ZlMzAyM2RmMjcw2SQ3OTcwMzc0NS02YzBlLTQyMDEtYTU4ZC1lNzU5OTRmYWI0ZTSkQGh0bJHZJDNhMWFhM2Q4LWJlYTAtNDZjYi1iMDdlLTg4ZTk0ODRlNzVjNrJ1cHN0cmVhbV9jZWxsc19tYXCA2SQ3OTcwMzc0NS02YzBlLTQyMDEtYTU4ZC1lNzU5OTRmYWI0ZTSEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ3OTcwMzc0NS02YzBlLTQyMDEtYTU4ZC1lNzU5OTRmYWI0ZTS0ZG93bnN0cmVhbV9jZWxsc19tYXCBrXFhcWNfZGlzcGF0Y2iS2SRiNTNlZGU4Yy00MTRlLTQwYjUtOGYzMC1mZWRmNDdhNTMwYWPZJDE5OWI0NWY2LTFlNjMtNDM5Mi1hZjZhLTZhNWVkODNiZjQ2N7J1cHN0cmVhbV9jZWxsc19tYXCGqEBzcWxfc3RykKJ8PpCrREJJbnRlcmZhY2WR2SRkM2M5NTMxNi03ZmZiLTExZWYtMWUyYy0yOTM0Zjg5YTIzMzapRGF0YUZyYW1lkKJkYpHZJDRkNjI5MDBhLTA4MTAtNDlkMS04NjMyLWE5ZTc1NDRmMzgxYrNEQkludGVyZmFjZS5leGVjdXRlkNkkMTI4N2I0NzktY2NlOS00ZWIxLTk0OWItOWRhN2QwMzI5YzI0hLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkMTI4N2I0NzktY2NlOS00ZWIxLTk0OWItOWRhN2QwMzI5YzI0tGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCCp0BtZF9zdHKQqGdldGluZGV4kNkkYTdjMWFlODgtMzRkYy00NDVjLWFkMmMtMzg3OTE5MmQxM2M3hLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkYTdjMWFlODgtMzRkYy00NDVjLWFkMmMtMzg3OTE5MmQxM2M3tGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCEuXNpbmdsZV9yZXN1bHRfZm9yX2lkX3Nob3eR2SQxOTJjNDdhMy03MjAyLTQzNTEtODYzOC1lYzQ5ZWNiOTAxYzWhIZCnY29sbGVjdJC+c2luZ2xlX3Jlc3VsdF9mb3JfaWRfc2hvd19jb2xzkdkkYTg1YjRmMTktODJlNC00MGQ1LWFmOWYtZDUyODY1NzhiMWZi2SQwMjk5ZDViNy04YjlmLTQ0YWUtYTJjZi0zZGIzNmUxZjg1N2GEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQwMjk5ZDViNy04YjlmLTQ0YWUtYTJjZi0zZGIzNmUxZjg1N2G0ZG93bnN0cmVhbV9jZWxsc19tYXCAsnVwc3RyZWFtX2NlbGxzX21hcIKnQG1kX3N0cpCoZ2V0aW5kZXiQ2SQzYTFhYTNkOC1iZWEwLTQ2Y2ItYjA3ZS04OGU5NDg0ZTc1YzaEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQzYTFhYTNkOC1iZWEwLTQ2Y2ItYjA3ZS04OGU5NDg0ZTc1Yza0ZG93bnN0cmVhbV9jZWxsc19tYXCBtmNvbHNfdmlzaWJpbGl0eV90b2dnbGWS2SRhODViNGYxOS04MmU0LTQwZDUtYWY5Zi1kNTI4NjU3OGIxZmLZJDQ1ODI4YmI0LWU5ZjUtNDZkNS04ZjQ4LTg4Mjg0ZjMxOGNjNLJ1cHN0cmVhbV9jZWxsc19tYXCNpERpY3SQt0h5cGVydGV4dExpdGVyYWwuQnlwYXNzkKdQbHV0b1VJkdkkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM2uEh5cGVydGV4dExpdGVyYWwuY29udGVudJCiPT6QpEBodGyR2SRkM2M5NTMxNi03ZmZiLTExZWYtMWUyYy0yOTM0Zjg5YTIzMzambGVuZ3RokKVuYW1lc5CoQ2hlY2tCb3iQt0h5cGVydGV4dExpdGVyYWwuUmVzdWx0kLBIeXBlcnRleHRMaXRlcmFskK9QbHV0b1VJLmNvbWJpbmWQpGZpbGyQ2SQ2Y2ViMTk4ZS1lZGQzLTQ5NTQtYjFmZi1iZWVmMzNjM2YyMDWEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ2Y2ViMTk4ZS1lZGQzLTQ5NTQtYjFmZi1iZWVmMzNjM2YyMDW0ZG93bnN0cmVhbV9jZWxsc19tYXCAsnVwc3RyZWFtX2NlbGxzX21hcIS4ZXh0cmFfcmVzdWx0X2Zvcl9pZF9zaG93kdkkNTEzNzBhYmItZjBmYi00YWUwLWI0ODgtYmY5ZmM3NzY1NzdjoSGQp2NvbGxlY3SQvWV4dHJhX3Jlc3VsdF9mb3JfaWRfc2hvd19jb2xzkdkkNDU4MjhiYjQtZTlmNS00NmQ1LThmNDgtODgyODRmMzE4Y2M02SQ2ZGExZWZiZS1lNWEwLTQzNzYtYjhlYS1lZDIxZjA5ZGEwODSEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ2ZGExZWZiZS1lNWEwLTQzNzYtYjhlYS1lZDIxZjA5ZGEwODS0ZG93bnN0cmVhbV9jZWxsc19tYXCBsnFhcWNfc2luZ2xlX3Jlc3VsdJLZJGE4NWI0ZjE5LTgyZTQtNDBkNS1hZjlmLWQ1Mjg2NTc4YjFmYtkkOTUxM2YwMTctNzkwNS00OTVkLWE3ZWItNmNhNTkyNzMwOGRksnVwc3RyZWFtX2NlbGxzX21hcIaoQHNxbF9zdHKQonw+kKtEQkludGVyZmFjZZHZJGQzYzk1MzE2LTdmZmItMTFlZi0xZTJjLTI5MzRmODlhMjMzNqlEYXRhRnJhbWWQomRikdkkNGQ2MjkwMGEtMDgxMC00OWQxLTg2MzItYTllNzU0NGYzODFis0RCSW50ZXJmYWNlLmV4ZWN1dGWQ2SQxZTlhYjZiMC1iMjVkLTQ0YWQtOTJhZS1mMTJmOTJkOTFkNWWEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQxZTlhYjZiMC1iMjVkLTQ0YWQtOTJhZS1mMTJmOTJkOTFkNWW0ZG93bnN0cmVhbV9jZWxsc19tYXCBs2V4dHJhX3Jlc3VsdF9mb3JfaWSS2SRlZDdjNDBmZS1mOTY2LTRhZmItYTk2Mi04OTZjOWYxMDk5NDbZJDUxMzcwYWJiLWYwZmItNGFlMC1iNDg4LWJmOWZjNzc2NTc3Y7J1cHN0cmVhbV9jZWxsc19tYXCFtnFhcWNfZXh0cmFfcnVuX3Jlc3VsdHOR2SRhNzdjY2Y2Yi1kYjY3LTRhMDctODMzYS0yMTBhZmNjYzM5ZTWmZmlsdGVykKI9PpClcHNiaWSR2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmGiPT2Q2SQ0ZDYyOTAwYS0wODEwLTQ5ZDEtODYzMi1hOWU3NTQ0ZjM4MWKEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ0ZDYyOTAwYS0wODEwLTQ5ZDEtODYzMi1hOWU3NTQ0ZjM4MWK0ZG93bnN0cmVhbV9jZWxsc19tYXCBomRil9kkOTExYTVhZTgtNTgwMC00ZDIwLTlkNzMtYmNjNzIwNWQzNTAx2SQ2ZGExZWZiZS1lNWEwLTQzNzYtYjhlYS1lZDIxZjA5ZGEwODTZJDIzMTY3OTcxLTQ2NzEtNGYxOC04NGRmLTcyYTdkYzU5MzhlMdkkNjJkZGViOTEtZTAwNy00NDA3LWI0ZGMtMWI3MzkyNDgwNzgx2SRhNzdjY2Y2Yi1kYjY3LTRhMDctODMzYS0yMTBhZmNjYzM5ZTXZJGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MNkkNzk3MDM3NDUtNmMwZS00MjAxLWE1OGQtZTc1OTk0ZmFiNGU0snVwc3RyZWFtX2NlbGxzX21hcIKmU1FMaXRlkdkkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM2qVNRTGl0ZS5EQpDZJGVjMmQ0MGY3LTFlMDYtNDE0ZC05YTc3LTllMzQ4OWJhMjcxY4S0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJGVjMmQ0MGY3LTFlMDYtNDE0ZC05YTc3LTllMzQ4OWJhMjcxY7Rkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGI1M2VkZThjLTQxNGUtNDBiNS04ZjMwLWZlZGY0N2E1MzBhY4S0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJGI1M2VkZThjLTQxNGUtNDBiNS04ZjMwLWZlZGY0N2E1MzBhY7Rkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwjqdAbWRfc3RykK1xYXFjX2Rpc3BhdGNokdkkNzk3MDM3NDUtNmMwZS00MjAxLWE1OGQtZTc1OTk0ZmFiNGU0o2FueZClZmlyc3SQtXFhcWNfcmVzaXN0YW5jZV9jaGVja5HZJGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MKJ8PpCiPT6QpmZpbHRlcpClcHNiaWSR2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmGjYWxskKdjb21iaW5lkKdpc2VtcHR5kKI9PZCoZ2V0aW5kZXiQ2SQ5MTFhNWFlOC01ODAwLTRkMjAtOWQ3My1iY2M3MjA1ZDM1MDGEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQ5MTFhNWFlOC01ODAwLTRkMjAtOWQ3My1iY2M3MjA1ZDM1MDG0ZG93bnN0cmVhbV9jZWxsc19tYXCAsnVwc3RyZWFtX2NlbGxzX21hcIOtU1FMaXRlLnRhYmxlc5CmU1FMaXRlkdkkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM2omRikdkkNGQ2MjkwMGEtMDgxMC00OWQxLTg2MzItYTllNzU0NGYzODFi2SRhNzdjY2Y2Yi1kYjY3LTRhMDctODMzYS0yMTBhZmNjYzM5ZTWEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SRhNzdjY2Y2Yi1kYjY3LTRhMDctODMzYS0yMTBhZmNjYzM5ZTW0ZG93bnN0cmVhbV9jZWxsc19tYXCBtnFhcWNfZXh0cmFfcnVuX3Jlc3VsdHOS2SQxZTlhYjZiMC1iMjVkLTQ0YWQtOTJhZS1mMTJmOTJkOTFkNWXZJDA1MThhZjQ0LTg3OGUtNDA1Mi1iNGQ0LWU3ZmIzYzM1ZWZlYbJ1cHN0cmVhbV9jZWxsc19tYXCGqEBzcWxfc3RykKJ8PpCrREJJbnRlcmZhY2WR2SRkM2M5NTMxNi03ZmZiLTExZWYtMWUyYy0yOTM0Zjg5YTIzMzapRGF0YUZyYW1lkKJkYpHZJDRkNjI5MDBhLTA4MTAtNDlkMS04NjMyLWE5ZTc1NDRmMzgxYrNEQkludGVyZmFjZS5leGVjdXRlkLRjZWxsX2V4ZWN1dGlvbl9vcmRlctwAINkkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM22SQzM2I3MDUxNi03Njg3LTQ2M2ItYTY1NC0yY2RlM2YyNTM4YWHZJDE1ZDU1ZjZlLWI4Y2UtNDkxNi1hOGZhLWM5YjA3YjBjYzg2YdkkODQ0MGExZGUtMTJmZS00YmI3LTkwN2YtNTJmOTMzOTM0ZWMw2SQwMjk5ZDViNy04YjlmLTQ0YWUtYTJjZi0zZGIzNmUxZjg1N2HZJDdhMTFlNDYwLThkNmYtNDU0Yy04ZmU2LTMzYzU5ZWViNDkzN9kkMTI4N2I0NzktY2NlOS00ZWIxLTk0OWItOWRhN2QwMzI5YzI02SQxZDkwYzY4Ny03ZTY3LTQzZWQtYjViZi02OGVmOTA0MGRjOTXZJGVjMmQ0MGY3LTFlMDYtNDE0ZC05YTc3LTllMzQ4OWJhMjcxY9kkMzFiNzQ4MjgtZmRjNy00YjA0LThiZTAtZWE0NDgyMGY5NTU12SRiYjE2N2E1ZS1iMjNhLTRmMDUtOWJhNi0zNjhhNDhmOWMxMjDZJDNhMWFhM2Q4LWJlYTAtNDZjYi1iMDdlLTg4ZTk0ODRlNzVjNtkkNGQ2MjkwMGEtMDgxMC00OWQxLTg2MzItYTllNzU0NGYzODFi2SQ5MTFhNWFlOC01ODAwLTRkMjAtOWQ3My1iY2M3MjA1ZDM1MDHZJDZkYTFlZmJlLWU1YTAtNDM3Ni1iOGVhLWVkMjFmMDlkYTA4NNkkYTg1YjRmMTktODJlNC00MGQ1LWFmOWYtZDUyODY1NzhiMWZi2SQ5NTEzZjAxNy03OTA1LTQ5NWQtYTdlYi02Y2E1OTI3MzA4ZGTZJDIzMTY3OTcxLTQ2NzEtNGYxOC04NGRmLTcyYTdkYzU5MzhlMdkkMTkyYzQ3YTMtNzIwMi00MzUxLTg2MzgtZWM0OWVjYjkwMWM12SRhN2MxYWU4OC0zNGRjLTQ0NWMtYWQyYy0zODc5MTkyZDEzYzfZJDYyZGRlYjkxLWUwMDctNDQwNy1iNGRjLTFiNzM5MjQ4MDc4MdkkYTc3Y2NmNmItZGI2Ny00YTA3LTgzM2EtMjEwYWZjY2MzOWU12SQxZTlhYjZiMC1iMjVkLTQ0YWQtOTJhZS1mMTJmOTJkOTFkNWXZJGVkN2M0MGZlLWY5NjYtNGFmYi1hOTYyLTg5NmM5ZjEwOTk0NtkkNTEzNzBhYmItZjBmYi00YWUwLWI0ODgtYmY5ZmM3NzY1Nzdj2SQ0NTgyOGJiNC1lOWY1LTQ2ZDUtOGY0OC04ODI4NGYzMThjYzTZJDZjZWIxOThlLWVkZDMtNDk1NC1iMWZmLWJlZWYzM2MzZjIwNdkkMDUxOGFmNDQtODc4ZS00MDUyLWI0ZDQtZTdmYjNjMzVlZmVh2SRlMzEyZDQ4ZC05ZDhkLTRmNDItYjEzNC03ZmUzMDIzZGYyNzDZJDc5NzAzNzQ1LTZjMGUtNDIwMS1hNThkLWU3NTk5NGZhYjRlNNkkYjUzZWRlOGMtNDE0ZS00MGI1LThmMzAtZmVkZjQ3YTUzMGFj2SQxOTliNDVmNi0xZTYzLTQzOTItYWY2YS02YTVlZDgzYmY0Nje0bGFzdF9ob3RfcmVsb2FkX3RpbWXLAAAAAAAAAACpc2hvcnRwYXRormdldF9yZXN1bHRzLmpsrnByb2Nlc3Nfc3RhdHVzpXJlYWR5pHBhdGjZVS9ob21lL3F3anloL0RvY3VtZW50cy9zY2hvb2wvbGFiL1BTQm9hcmRfUUFRQy9QU0JvYXJkRGF0YUJhc2UvZXhhbXBsZXMvZ2V0X3Jlc3VsdHMuamytcGx1dG9fdmVyc2lvbqh2MC4xOS40Nq5sYXN0X3NhdmVfdGltZctB2b8GmfhmSapjZWxsX29yZGVy3AAg2SQzM2I3MDUxNi03Njg3LTQ2M2ItYTY1NC0yY2RlM2YyNTM4YWHZJDE1ZDU1ZjZlLWI4Y2UtNDkxNi1hOGZhLWM5YjA3YjBjYzg2YdkkYjUzZWRlOGMtNDE0ZS00MGI1LThmMzAtZmVkZjQ3YTUzMGFj2SQ4NDQwYTFkZS0xMmZlLTRiYjctOTA3Zi01MmY5MzM5MzRlYzDZJGE3YzFhZTg4LTM0ZGMtNDQ1Yy1hZDJjLTM4NzkxOTJkMTNjN9kkMDI5OWQ1YjctOGI5Zi00NGFlLWEyY2YtM2RiMzZlMWY4NTdh2SQ2Y2ViMTk4ZS1lZGQzLTQ5NTQtYjFmZi1iZWVmMzNjM2YyMDXZJDdhMTFlNDYwLThkNmYtNDU0Yy04ZmU2LTMzYzU5ZWViNDkzN9kkZWQ3YzQwZmUtZjk2Ni00YWZiLWE5NjItODk2YzlmMTA5OTQ22SRhODViNGYxOS04MmU0LTQwZDUtYWY5Zi1kNTI4NjU3OGIxZmLZJDQ1ODI4YmI0LWU5ZjUtNDZkNS04ZjQ4LTg4Mjg0ZjMxOGNjNNkkMTkyYzQ3YTMtNzIwMi00MzUxLTg2MzgtZWM0OWVjYjkwMWM12SQ1MTM3MGFiYi1mMGZiLTRhZTAtYjQ4OC1iZjlmYzc3NjU3N2PZJDEyODdiNDc5LWNjZTktNGViMS05NDliLTlkYTdkMDMyOWMyNNkkMTk5YjQ1ZjYtMWU2My00MzkyLWFmNmEtNmE1ZWQ4M2JmNDY32SQ5NTEzZjAxNy03OTA1LTQ5NWQtYTdlYi02Y2E1OTI3MzA4ZGTZJDFlOWFiNmIwLWIyNWQtNDRhZC05MmFlLWYxMmY5MmQ5MWQ1ZdkkMWQ5MGM2ODctN2U2Ny00M2VkLWI1YmYtNjhlZjkwNDBkYzk12SQwNTE4YWY0NC04NzhlLTQwNTItYjRkNC1lN2ZiM2MzNWVmZWHZJGVjMmQ0MGY3LTFlMDYtNDE0ZC05YTc3LTllMzQ4OWJhMjcxY9kkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM22SQzMWI3NDgyOC1mZGM3LTRiMDQtOGJlMC1lYTQ0ODIwZjk1NTXZJGJiMTY3YTVlLWIyM2EtNGYwNS05YmE2LTM2OGE0OGY5YzEyMNkkM2ExYWEzZDgtYmVhMC00NmNiLWIwN2UtODhlOTQ4NGU3NWM22SQ0ZDYyOTAwYS0wODEwLTQ5ZDEtODYzMi1hOWU3NTQ0ZjM4MWLZJDkxMWE1YWU4LTU4MDAtNGQyMC05ZDczLWJjYzcyMDVkMzUwMdkkNmRhMWVmYmUtZTVhMC00Mzc2LWI4ZWEtZWQyMWYwOWRhMDg02SQyMzE2Nzk3MS00NjcxLTRmMTgtODRkZi03MmE3ZGM1OTM4ZTHZJDYyZGRlYjkxLWUwMDctNDQwNy1iNGRjLTFiNzM5MjQ4MDc4MdkkYTc3Y2NmNmItZGI2Ny00YTA3LTgzM2EtMjEwYWZjY2MzOWU12SRlMzEyZDQ4ZC05ZDhkLTRmNDItYjEzNC03ZmUzMDIzZGYyNzDZJDc5NzAzNzQ1LTZjMGUtNDIwMS1hNThkLWU3NTk5NGZhYjRlNLFwdWJsaXNoZWRfb2JqZWN0c4ClbmJwa2eKr2luc3RhbGxfdGltZV9uc88AAAAG6fp6OqxpbnN0YW50aWF0ZWTDsmluc3RhbGxlZF92ZXJzaW9uc4alRGF0ZXOmc3RkbGliplNRTGl0ZaUxLjYuMadQbHV0b1VJpjAuNy42MKpEYXRhRnJhbWVzpTEuNy4wq0RCSW50ZXJmYWNlpTIuNi4xsEh5cGVydGV4dExpdGVyYWylMC45LjWwdGVybWluYWxfb3V0cHV0c4elRGF0ZXPaAccKG1swbRtbMW1BZGRpbmcgcGFja2FnZXMuLi4bWzIybQobWzkwbT09PRtbMzltChtbMzJtG1sxbSAgIFJlc29sdmluZxtbMjJtG1szOW0gcGFja2FnZSB2ZXJzaW9ucy4uLgobWzMybRtbMW0gICAgVXBkYXRpbmcbWzIybRtbMzltIGAvdG1wL2psX0QweEJHOS9Qcm9qZWN0LnRvbWxgCiAgG1s5MG1bYWRlMmNhNzBdIBtbMzltG1s5Mm0rIERhdGVzG1szOW0KG1szMm0bWzFtICBObyBDaGFuZ2VzG1syMm0bWzM5bSB0byBgL3RtcC9qbF9EMHhCRzkvTWFuaWZlc3QudG9tbGAKG1szMm0bWzFtTG9hZGluZxtbMjJtG1szOW0gcGFja2FnZXMuLi4KChtbMG0bWzFtSW5zdGFudGlhdGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KChtbMG0bWzFtUHJlY29tcGlsaW5nLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gIEFjdGl2YXRpbmcbWzIybRtbMzltIHByb2plY3QgYXQgYC90bXAvamxfRDB4Qkc5YKpuYnBrZ19zeW5j2gHZChtbMG0bWzFtQWRkaW5nIHBhY2thZ2VzLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gICBSZXNvbHZpbmcbWzIybRtbMzltIHBhY2thZ2UgdmVyc2lvbnMuLi4KG1szMm0bWzFtICAgIFVwZGF0aW5nG1syMm0bWzM5bSBgL3RtcC9qbF9EMHhCRzkvUHJvamVjdC50b21sYAogIBtbOTBtW2FjMTE5MmE4XSAbWzM5bRtbOTJtKyBIeXBlcnRleHRMaXRlcmFsIHYwLjkuNRtbMzltChtbMzJtG1sxbSAgTm8gQ2hhbmdlcxtbMjJtG1szOW0gdG8gYC90bXAvamxfRDB4Qkc5L01hbmlmZXN0LnRvbWxgChtbMzJtG1sxbUxvYWRpbmcbWzIybRtbMzltIHBhY2thZ2VzLi4uCgobWzBtG1sxbUluc3RhbnRpYXRpbmcuLi4bWzIybQobWzkwbT09PRtbMzltCgobWzBtG1sxbVByZWNvbXBpbGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KG1szMm0bWzFtICBBY3RpdmF0aW5nG1syMm0bWzM5bSBwcm9qZWN0IGF0IGAvdG1wL2psX0QweEJHOWCmU1FMaXRl2hK6ChtbMG0bWzFtQWRkaW5nIHBhY2thZ2VzLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gICBSZXNvbHZpbmcbWzIybRtbMzltIHBhY2thZ2UgdmVyc2lvbnMuLi4KG1szMm0bWzFtICAgIFVwZGF0aW5nG1syMm0bWzM5bSBgL3RtcC9qbF9EMHhCRzkvUHJvamVjdC50b21sYAogIBtbOTBtW2E5M2M2ZjAwXSAbWzM5bRtbOTJtKyBEYXRhRnJhbWVzIHYxLjcuMBtbMzltCiAgG1s5MG1bN2Y5MDRkZmVdIBtbMzltG1s5Mm0rIFBsdXRvVUkgdjAuNy42MBtbMzltCiAgG1s5MG1bMGFhODE5Y2RdIBtbMzltG1s5Mm0rIFNRTGl0ZSB2MS42LjEbWzM5bQobWzMybRtbMW0gICAgVXBkYXRpbmcbWzIybRtbMzltIGAvdG1wL2psX0QweEJHOS9NYW5pZmVzdC50b21sYAogIBtbOTBtWzZlNjk2YzcyXSAbWzM5bRtbOTJtKyBBYnN0cmFjdFBsdXRvRGluZ2V0amVzIHYxLjMuMhtbMzltCiAgG1s5MG1bM2RhMDAyZjddIBtbMzltG1s5Mm0rIENvbG9yVHlwZXMgdjAuMTEuNRtbMzltCiAgG1s5MG1bMzRkYTIxODVdIBtbMzltG1s5Mm0rIENvbXBhdCB2NC4xNi4wG1szOW0KICAbWzkwbVthOGNjNWIwZV0gG1szOW0bWzkybSsgQ3JheW9ucyB2NC4xLjEbWzM5bQogIBtbOTBtW2ExMGQxYzQ5XSAbWzM5bRtbOTJtKyBEQkludGVyZmFjZSB2Mi42LjEbWzM5bQogIBtbOTBtWzlhOTYyZjljXSAbWzM5bRtbOTJtKyBEYXRhQVBJIHYxLjE2LjAbWzM5bQogIBtbOTBtW2E5M2M2ZjAwXSAbWzM5bRtbOTJtKyBEYXRhRnJhbWVzIHYxLjcuMBtbMzltCiAgG1s5MG1bODY0ZWRiM2JdIBtbMzltG1s5Mm0rIERhdGFTdHJ1Y3R1cmVzIHYwLjE4LjIwG1szOW0KICAbWzkwbVtlMmQxNzBhMF0gG1szOW0bWzkybSsgRGF0YVZhbHVlSW50ZXJmYWNlcyB2MS4wLjAbWzM5bQogIBtbOTBtWzUzYzQ4YzE3XSAbWzM5bRtbOTJtKyBGaXhlZFBvaW50TnVtYmVycyB2MC44LjUbWzM5bQogIBtbOTBtWzQ3ZDJlZDJiXSAbWzM5bRtbOTJtKyBIeXBlcnNjcmlwdCB2MC4wLjUbWzM5bQogIBtbOTBtW2FjMTE5MmE4XSAbWzM5bRtbOTJtKyBIeXBlcnRleHRMaXRlcmFsIHYwLjkuNRtbMzltCiAgG1s5MG1bYjVmODFlNTldIBtbMzltG1s5Mm0rIElPQ2FwdHVyZSB2MC4yLjUbWzM5bQogIBtbOTBtWzg0MmRkODJiXSAbWzM5bRtbOTJtKyBJbmxpbmVTdHJpbmdzIHYxLjQuMhtbMzltCiAgG1s5MG1bNDFhYjE1ODRdIBtbMzltG1s5Mm0rIEludmVydGVkSW5kaWNlcyB2MS4zLjAbWzM5bQogIBtbOTBtWzgyODk5NTEwXSAbWzM5bRtbOTJtKyBJdGVyYXRvckludGVyZmFjZUV4dGVuc2lvbnMgdjEuMC4wG1szOW0KICAbWzkwbVs2OTJiM2JjZF0gG1szOW0bWzkybSsgSkxMV3JhcHBlcnMgdjEuNi4wG1szOW0KICAbWzkwbVs2ODJjMDZhMF0gG1szOW0bWzkybSsgSlNPTiB2MC4yMS40G1szOW0KICAbWzkwbVtiOTY0ZmE5Zl0gG1szOW0bWzkybSsgTGFUZVhTdHJpbmdzIHYxLjMuMRtbMzltCiAgG1s5MG1bNmM2ZTJlNmNdIBtbMzltG1s5Mm0rIE1JTUVzIHYwLjEuNBtbMzltCiAgG1s5MG1bZTFkMjlkN2FdIBtbMzltG1s5Mm0rIE1pc3NpbmdzIHYxLjIuMBtbMzltCiAgG1s5MG1bYmFjNTU4ZTFdIBtbMzltG1s5Mm0rIE9yZGVyZWRDb2xsZWN0aW9ucyB2MS42LjMbWzM5bQogIBtbOTBtWzY5ZGUwYTY5XSAbWzM5bRtbOTJtKyBQYXJzZXJzIHYyLjguMRtbMzltCiAgG1s5MG1bN2Y5MDRkZmVdIBtbMzltG1s5Mm0rIFBsdXRvVUkgdjAuNy42MBtbMzltCiAgG1s5MG1bMmRmYjYzZWVdIBtbMzltG1s5Mm0rIFBvb2xlZEFycmF5cyB2MS40LjMbWzM5bQogIBtbOTBtW2FlYTdiZTAxXSAbWzM5bRtbOTJtKyBQcmVjb21waWxlVG9vbHMgdjEuMi4xG1szOW0KICAbWzkwbVsyMTIxNmM2YV0gG1szOW0bWzkybSsgUHJlZmVyZW5jZXMgdjEuNC4zG1szOW0KICAbWzkwbVswOGFiZThkMl0gG1szOW0bWzkybSsgUHJldHR5VGFibGVzIHYyLjQuMBtbMzltCiAgG1s5MG1bMTg5YTM4NjddIBtbMzltG1s5Mm0rIFJlZXhwb3J0IHYxLjIuMhtbMzltCiAgG1s5MG1bMGFhODE5Y2RdIBtbMzltG1s5Mm0rIFNRTGl0ZSB2MS42LjEbWzM5bQogIBtbOTBtWzkxYzUxMTU0XSAbWzM5bRtbOTJtKyBTZW50aW5lbEFycmF5cyB2MS40LjUbWzM5bQogIBtbOTBtW2EyYWYxMTY2XSAbWzM5bRtbOTJtKyBTb3J0aW5nQWxnb3JpdGhtcyB2MS4yLjEbWzM5bQogIBtbOTBtWzg5MmEzZWRhXSAbWzM5bRtbOTJtKyBTdHJpbmdNYW5pcHVsYXRpb24gdjAuNC4wG1szOW0KICAbWzkwbVszNzgzYmRiOF0gG1szOW0bWzkybSsgVGFibGVUcmFpdHMgdjEuMC4xG1szOW0KICAbWzkwbVtiZDM2OWFmNl0gG1szOW0bWzkybSsgVGFibGVzIHYxLjEyLjAbWzM5bQogIBtbOTBtWzQxMGE0YjRkXSAbWzM5bRtbOTJtKyBUcmlja3MgdjAuMS45G1szOW0KICAbWzkwbVs1YzI3NDdmOF0gG1szOW0bWzkybSsgVVJJcyB2MS41LjEbWzM5bQogIBtbOTBtW2VhMTBkMzUzXSAbWzM5bRtbOTJtKyBXZWFrUmVmU3RyaW5ncyB2MS40LjIbWzM5bQogIBtbOTBtWzc2ZWQ0M2FlXSAbWzM5bRtbOTJtKyBTUUxpdGVfamxsIHYzLjQ1LjMrMBtbMzltCiAgG1s5MG1bMGRhZDg0YzVdIBtbMzltG1s5Mm0rIEFyZ1Rvb2xzIHYxLjEuMRtbMzltCiAgG1s5MG1bNTZmMjJkNzJdIBtbMzltG1s5Mm0rIEFydGlmYWN0cxtbMzltCiAgG1s5MG1bMmEwZjQ0ZTNdIBtbMzltG1s5Mm0rIEJhc2U2NBtbMzltCiAgG1s5MG1bYWRlMmNhNzBdIBtbMzltG1s5Mm0rIERhdGVzG1szOW0KICAbWzkwbVtmNDNhMjQxZl0gG1szOW0bWzkybSsgRG93bmxvYWRzIHYxLjYuMBtbMzltCiAgG1s5MG1bN2IxZjYwNzldIBtbMzltG1s5Mm0rIEZpbGVXYXRjaGluZxtbMzltCiAgG1s5MG1bOWZhODQ5N2JdIBtbMzltG1s5Mm0rIEZ1dHVyZRtbMzltCiAgG1s5MG1bYjc3ZTBhNGNdIBtbMzltG1s5Mm0rIEludGVyYWN0aXZlVXRpbHMbWzM5bQogIBtbOTBtW2IyNzAzMmMyXSAbWzM5bRtbOTJtKyBMaWJDVVJMIHYwLjYuNBtbMzltCiAgG1s5MG1bNzZmODU0NTBdIBtbMzltG1s5Mm0rIExpYkdpdDIbWzM5bQogIBtbOTBtWzhmMzk5ZGEzXSAbWzM5bRtbOTJtKyBMaWJkbBtbMzltCiAgG1s5MG1bMzdlMmU0NmRdIBtbMzltG1s5Mm0rIExpbmVhckFsZ2VicmEbWzM5bQogIBtbOTBtWzU2ZGRiMDE2XSAbWzM5bRtbOTJtKyBMb2dnaW5nG1szOW0KICAbWzkwbVtkNmY0Mzc2ZV0gG1szOW0bWzkybSsgTWFya2Rvd24bWzM5bQogIBtbOTBtW2E2M2FkMTE0XSAbWzM5bRtbOTJtKyBNbWFwG1szOW0KICAbWzkwbVtjYTU3NTkzMF0gG1szOW0bWzkybSsgTmV0d29ya09wdGlvbnMgdjEuMi4wG1szOW0KICAbWzkwbVs0NGNmZTk1YV0gG1szOW0bWzkybSsgUGtnIHYxLjEwLjAbWzM5bQogIBtbOTBtW2RlMDg1OGRhXSAbWzM5bRtbOTJtKyBQcmludGYbWzM5bQogIBtbOTBtWzNmYTBjZDk2XSAbWzM5bRtbOTJtKyBSRVBMG1szOW0KICAbWzkwbVs5YTNmODI4NF0gG1szOW0bWzkybSsgUmFuZG9tG1szOW0KICAbWzkwbVtlYThlOTE5Y10gG1szOW0bWzkybSsgU0hBIHYwLjcuMBtbMzltCiAgG1s5MG1bOWU4OGI0MmFdIBtbMzltG1s5Mm0rIFNlcmlhbGl6YXRpb24bWzM5bQogIBtbOTBtWzY0NjJmZTBiXSAbWzM5bRtbOTJtKyBTb2NrZXRzG1szOW0KICAbWzkwbVsyZjAxMTg0ZV0gG1szOW0bWzkybSsgU3BhcnNlQXJyYXlzIHYxLjEwLjAbWzM5bQogIBtbOTBtWzEwNzQ1YjE2XSAbWzM5bRtbOTJtKyBTdGF0aXN0aWNzIHYxLjEwLjAbWzM5bQogIBtbOTBtW2ZhMjY3ZjFmXSAbWzM5bRtbOTJtKyBUT01MIHYxLjAuMxtbMzltCiAgG1s5MG1bYTRlNTY5YTZdIBtbMzltG1s5Mm0rIFRhciB2MS4xMC4wG1szOW0KICAbWzkwbVs4ZGZlZDYxNF0gG1szOW0bWzkybSsgVGVzdBtbMzltCiAgG1s5MG1bY2Y3MTE4YTddIBtbMzltG1s5Mm0rIFVVSURzG1szOW0KICAbWzkwbVs0ZWMwYTgzZV0gG1szOW0bWzkybSsgVW5pY29kZRtbMzltCiAgG1s5MG1bZTY2ZTAwNzhdIBtbMzltG1s5Mm0rIENvbXBpbGVyU3VwcG9ydExpYnJhcmllc19qbGwgdjEuMS4xKzAbWzM5bQogIBtbOTBtW2RlYWM5YjQ3XSAbWzM5bRtbOTJtKyBMaWJDVVJMX2psbCB2OC40LjArMBtbMzltCiAgG1s5MG1bZTM3ZGFmNjddIBtbMzltG1s5Mm0rIExpYkdpdDJfamxsIHYxLjYuNCswG1szOW0KICAbWzkwbVsyOTgxNmI1YV0gG1szOW0bWzkybSsgTGliU1NIMl9qbGwgdjEuMTEuMCsxG1szOW0KICAbWzkwbVtjOGZmZDljM10gG1szOW0bWzkybSsgTWJlZFRMU19qbGwgdjIuMjguMisxG1szOW0KICAbWzkwbVsxNGEzNjA2ZF0gG1szOW0bWzkybSsgTW96aWxsYUNBQ2VydHNfamxsIHYyMDIzLjEuMTAbWzM5bQogIBtbOTBtWzQ1MzY2MjlhXSAbWzM5bRtbOTJtKyBPcGVuQkxBU19qbGwgdjAuMy4yMys0G1szOW0KICAbWzkwbVtiZWE4N2Q0YV0gG1szOW0bWzkybSsgU3VpdGVTcGFyc2VfamxsIHY3LjIuMSsxG1szOW0KICAbWzkwbVs4Mzc3NWE1OF0gG1szOW0bWzkybSsgWmxpYl9qbGwgdjEuMi4xMysxG1szOW0KICAbWzkwbVs4ZTg1MGI5MF0gG1szOW0bWzkybSsgbGliYmxhc3RyYW1wb2xpbmVfamxsIHY1LjExLjArMBtbMzltCiAgG1s5MG1bOGU4NTBlZGVdIBtbMzltG1s5Mm0rIG5naHR0cDJfamxsIHYxLjUyLjArMRtbMzltCiAgG1s5MG1bM2YxOWU5MzNdIBtbMzltG1s5Mm0rIHA3emlwX2psbCB2MTcuNC4wKzIbWzM5bQobWzMybRtbMW1Mb2FkaW5nG1syMm0bWzM5bSBwYWNrYWdlcy4uLgoKG1swbRtbMW1JbnN0YW50aWF0aW5nLi4uG1syMm0KG1s5MG09PT0bWzM5bQoKG1swbRtbMW1QcmVjb21waWxpbmcuLi4bWzIybQobWzkwbT09PRtbMzltChtbMzJtG1sxbSAgQWN0aXZhdGluZxtbMjJtG1szOW0gcHJvamVjdCBhdCBgL3RtcC9qbF9EMHhCRzlgp1BsdXRvVUnaEroKG1swbRtbMW1BZGRpbmcgcGFja2FnZXMuLi4bWzIybQobWzkwbT09PRtbMzltChtbMzJtG1sxbSAgIFJlc29sdmluZxtbMjJtG1szOW0gcGFja2FnZSB2ZXJzaW9ucy4uLgobWzMybRtbMW0gICAgVXBkYXRpbmcbWzIybRtbMzltIGAvdG1wL2psX0QweEJHOS9Qcm9qZWN0LnRvbWxgCiAgG1s5MG1bYTkzYzZmMDBdIBtbMzltG1s5Mm0rIERhdGFGcmFtZXMgdjEuNy4wG1szOW0KICAbWzkwbVs3ZjkwNGRmZV0gG1szOW0bWzkybSsgUGx1dG9VSSB2MC43LjYwG1szOW0KICAbWzkwbVswYWE4MTljZF0gG1szOW0bWzkybSsgU1FMaXRlIHYxLjYuMRtbMzltChtbMzJtG1sxbSAgICBVcGRhdGluZxtbMjJtG1szOW0gYC90bXAvamxfRDB4Qkc5L01hbmlmZXN0LnRvbWxgCiAgG1s5MG1bNmU2OTZjNzJdIBtbMzltG1s5Mm0rIEFic3RyYWN0UGx1dG9EaW5nZXRqZXMgdjEuMy4yG1szOW0KICAbWzkwbVszZGEwMDJmN10gG1szOW0bWzkybSsgQ29sb3JUeXBlcyB2MC4xMS41G1szOW0KICAbWzkwbVszNGRhMjE4NV0gG1szOW0bWzkybSsgQ29tcGF0IHY0LjE2LjAbWzM5bQogIBtbOTBtW2E4Y2M1YjBlXSAbWzM5bRtbOTJtKyBDcmF5b25zIHY0LjEuMRtbMzltCiAgG1s5MG1bYTEwZDFjNDldIBtbMzltG1s5Mm0rIERCSW50ZXJmYWNlIHYyLjYuMRtbMzltCiAgG1s5MG1bOWE5NjJmOWNdIBtbMzltG1s5Mm0rIERhdGFBUEkgdjEuMTYuMBtbMzltCiAgG1s5MG1bYTkzYzZmMDBdIBtbMzltG1s5Mm0rIERhdGFGcmFtZXMgdjEuNy4wG1szOW0KICAbWzkwbVs4NjRlZGIzYl0gG1szOW0bWzkybSsgRGF0YVN0cnVjdHVyZXMgdjAuMTguMjAbWzM5bQogIBtbOTBtW2UyZDE3MGEwXSAbWzM5bRtbOTJtKyBEYXRhVmFsdWVJbnRlcmZhY2VzIHYxLjAuMBtbMzltCiAgG1s5MG1bNTNjNDhjMTddIBtbMzltG1s5Mm0rIEZpeGVkUG9pbnROdW1iZXJzIHYwLjguNRtbMzltCiAgG1s5MG1bNDdkMmVkMmJdIBtbMzltG1s5Mm0rIEh5cGVyc2NyaXB0IHYwLjAuNRtbMzltCiAgG1s5MG1bYWMxMTkyYThdIBtbMzltG1s5Mm0rIEh5cGVydGV4dExpdGVyYWwgdjAuOS41G1szOW0KICAbWzkwbVtiNWY4MWU1OV0gG1szOW0bWzkybSsgSU9DYXB0dXJlIHYwLjIuNRtbMzltCiAgG1s5MG1bODQyZGQ4MmJdIBtbMzltG1s5Mm0rIElubGluZVN0cmluZ3MgdjEuNC4yG1szOW0KICAbWzkwbVs0MWFiMTU4NF0gG1szOW0bWzkybSsgSW52ZXJ0ZWRJbmRpY2VzIHYxLjMuMBtbMzltCiAgG1s5MG1bODI4OTk1MTBdIBtbMzltG1s5Mm0rIEl0ZXJhdG9ySW50ZXJmYWNlRXh0ZW5zaW9ucyB2MS4wLjAbWzM5bQogIBtbOTBtWzY5MmIzYmNkXSAbWzM5bRtbOTJtKyBKTExXcmFwcGVycyB2MS42LjAbWzM5bQogIBtbOTBtWzY4MmMwNmEwXSAbWzM5bRtbOTJtKyBKU09OIHYwLjIxLjQbWzM5bQogIBtbOTBtW2I5NjRmYTlmXSAbWzM5bRtbOTJtKyBMYVRlWFN0cmluZ3MgdjEuMy4xG1szOW0KICAbWzkwbVs2YzZlMmU2Y10gG1szOW0bWzkybSsgTUlNRXMgdjAuMS40G1szOW0KICAbWzkwbVtlMWQyOWQ3YV0gG1szOW0bWzkybSsgTWlzc2luZ3MgdjEuMi4wG1szOW0KICAbWzkwbVtiYWM1NThlMV0gG1szOW0bWzkybSsgT3JkZXJlZENvbGxlY3Rpb25zIHYxLjYuMxtbMzltCiAgG1s5MG1bNjlkZTBhNjldIBtbMzltG1s5Mm0rIFBhcnNlcnMgdjIuOC4xG1szOW0KICAbWzkwbVs3ZjkwNGRmZV0gG1szOW0bWzkybSsgUGx1dG9VSSB2MC43LjYwG1szOW0KICAbWzkwbVsyZGZiNjNlZV0gG1szOW0bWzkybSsgUG9vbGVkQXJyYXlzIHYxLjQuMxtbMzltCiAgG1s5MG1bYWVhN2JlMDFdIBtbMzltG1s5Mm0rIFByZWNvbXBpbGVUb29scyB2MS4yLjEbWzM5bQogIBtbOTBtWzIxMjE2YzZhXSAbWzM5bRtbOTJtKyBQcmVmZXJlbmNlcyB2MS40LjMbWzM5bQogIBtbOTBtWzA4YWJlOGQyXSAbWzM5bRtbOTJtKyBQcmV0dHlUYWJsZXMgdjIuNC4wG1szOW0KICAbWzkwbVsxODlhMzg2N10gG1szOW0bWzkybSsgUmVleHBvcnQgdjEuMi4yG1szOW0KICAbWzkwbVswYWE4MTljZF0gG1szOW0bWzkybSsgU1FMaXRlIHYxLjYuMRtbMzltCiAgG1s5MG1bOTFjNTExNTRdIBtbMzltG1s5Mm0rIFNlbnRpbmVsQXJyYXlzIHYxLjQuNRtbMzltCiAgG1s5MG1bYTJhZjExNjZdIBtbMzltG1s5Mm0rIFNvcnRpbmdBbGdvcml0aG1zIHYxLjIuMRtbMzltCiAgG1s5MG1bODkyYTNlZGFdIBtbMzltG1s5Mm0rIFN0cmluZ01hbmlwdWxhdGlvbiB2MC40LjAbWzM5bQogIBtbOTBtWzM3ODNiZGI4XSAbWzM5bRtbOTJtKyBUYWJsZVRyYWl0cyB2MS4wLjEbWzM5bQogIBtbOTBtW2JkMzY5YWY2XSAbWzM5bRtbOTJtKyBUYWJsZXMgdjEuMTIuMBtbMzltCiAgG1s5MG1bNDEwYTRiNGRdIBtbMzltG1s5Mm0rIFRyaWNrcyB2MC4xLjkbWzM5bQogIBtbOTBtWzVjMjc0N2Y4XSAbWzM5bRtbOTJtKyBVUklzIHYxLjUuMRtbMzltCiAgG1s5MG1bZWExMGQzNTNdIBtbMzltG1s5Mm0rIFdlYWtSZWZTdHJpbmdzIHYxLjQuMhtbMzltCiAgG1s5MG1bNzZlZDQzYWVdIBtbMzltG1s5Mm0rIFNRTGl0ZV9qbGwgdjMuNDUuMyswG1szOW0KICAbWzkwbVswZGFkODRjNV0gG1szOW0bWzkybSsgQXJnVG9vbHMgdjEuMS4xG1szOW0KICAbWzkwbVs1NmYyMmQ3Ml0gG1szOW0bWzkybSsgQXJ0aWZhY3RzG1szOW0KICAbWzkwbVsyYTBmNDRlM10gG1szOW0bWzkybSsgQmFzZTY0G1szOW0KICAbWzkwbVthZGUyY2E3MF0gG1szOW0bWzkybSsgRGF0ZXMbWzM5bQogIBtbOTBtW2Y0M2EyNDFmXSAbWzM5bRtbOTJtKyBEb3dubG9hZHMgdjEuNi4wG1szOW0KICAbWzkwbVs3YjFmNjA3OV0gG1szOW0bWzkybSsgRmlsZVdhdGNoaW5nG1szOW0KICAbWzkwbVs5ZmE4NDk3Yl0gG1szOW0bWzkybSsgRnV0dXJlG1szOW0KICAbWzkwbVtiNzdlMGE0Y10gG1szOW0bWzkybSsgSW50ZXJhY3RpdmVVdGlscxtbMzltCiAgG1s5MG1bYjI3MDMyYzJdIBtbMzltG1s5Mm0rIExpYkNVUkwgdjAuNi40G1szOW0KICAbWzkwbVs3NmY4NTQ1MF0gG1szOW0bWzkybSsgTGliR2l0MhtbMzltCiAgG1s5MG1bOGYzOTlkYTNdIBtbMzltG1s5Mm0rIExpYmRsG1szOW0KICAbWzkwbVszN2UyZTQ2ZF0gG1szOW0bWzkybSsgTGluZWFyQWxnZWJyYRtbMzltCiAgG1s5MG1bNTZkZGIwMTZdIBtbMzltG1s5Mm0rIExvZ2dpbmcbWzM5bQogIBtbOTBtW2Q2ZjQzNzZlXSAbWzM5bRtbOTJtKyBNYXJrZG93bhtbMzltCiAgG1s5MG1bYTYzYWQxMTRdIBtbMzltG1s5Mm0rIE1tYXAbWzM5bQogIBtbOTBtW2NhNTc1OTMwXSAbWzM5bRtbOTJtKyBOZXR3b3JrT3B0aW9ucyB2MS4yLjAbWzM5bQogIBtbOTBtWzQ0Y2ZlOTVhXSAbWzM5bRtbOTJtKyBQa2cgdjEuMTAuMBtbMzltCiAgG1s5MG1bZGUwODU4ZGFdIBtbMzltG1s5Mm0rIFByaW50ZhtbMzltCiAgG1s5MG1bM2ZhMGNkOTZdIBtbMzltG1s5Mm0rIFJFUEwbWzM5bQogIBtbOTBtWzlhM2Y4Mjg0XSAbWzM5bRtbOTJtKyBSYW5kb20bWzM5bQogIBtbOTBtW2VhOGU5MTljXSAbWzM5bRtbOTJtKyBTSEEgdjAuNy4wG1szOW0KICAbWzkwbVs5ZTg4YjQyYV0gG1szOW0bWzkybSsgU2VyaWFsaXphdGlvbhtbMzltCiAgG1s5MG1bNjQ2MmZlMGJdIBtbMzltG1s5Mm0rIFNvY2tldHMbWzM5bQogIBtbOTBtWzJmMDExODRlXSAbWzM5bRtbOTJtKyBTcGFyc2VBcnJheXMgdjEuMTAuMBtbMzltCiAgG1s5MG1bMTA3NDViMTZdIBtbMzltG1s5Mm0rIFN0YXRpc3RpY3MgdjEuMTAuMBtbMzltCiAgG1s5MG1bZmEyNjdmMWZdIBtbMzltG1s5Mm0rIFRPTUwgdjEuMC4zG1szOW0KICAbWzkwbVthNGU1NjlhNl0gG1szOW0bWzkybSsgVGFyIHYxLjEwLjAbWzM5bQogIBtbOTBtWzhkZmVkNjE0XSAbWzM5bRtbOTJtKyBUZXN0G1szOW0KICAbWzkwbVtjZjcxMThhN10gG1szOW0bWzkybSsgVVVJRHMbWzM5bQogIBtbOTBtWzRlYzBhODNlXSAbWzM5bRtbOTJtKyBVbmljb2RlG1szOW0KICAbWzkwbVtlNjZlMDA3OF0gG1szOW0bWzkybSsgQ29tcGlsZXJTdXBwb3J0TGlicmFyaWVzX2psbCB2MS4xLjErMBtbMzltCiAgG1s5MG1bZGVhYzliNDddIBtbMzltG1s5Mm0rIExpYkNVUkxfamxsIHY4LjQuMCswG1szOW0KICAbWzkwbVtlMzdkYWY2N10gG1szOW0bWzkybSsgTGliR2l0Ml9qbGwgdjEuNi40KzAbWzM5bQogIBtbOTBtWzI5ODE2YjVhXSAbWzM5bRtbOTJtKyBMaWJTU0gyX2psbCB2MS4xMS4wKzEbWzM5bQogIBtbOTBtW2M4ZmZkOWMzXSAbWzM5bRtbOTJtKyBNYmVkVExTX2psbCB2Mi4yOC4yKzEbWzM5bQogIBtbOTBtWzE0YTM2MDZkXSAbWzM5bRtbOTJtKyBNb3ppbGxhQ0FDZXJ0c19qbGwgdjIwMjMuMS4xMBtbMzltCiAgG1s5MG1bNDUzNjYyOWFdIBtbMzltG1s5Mm0rIE9wZW5CTEFTX2psbCB2MC4zLjIzKzQbWzM5bQogIBtbOTBtW2JlYTg3ZDRhXSAbWzM5bRtbOTJtKyBTdWl0ZVNwYXJzZV9qbGwgdjcuMi4xKzEbWzM5bQogIBtbOTBtWzgzNzc1YTU4XSAbWzM5bRtbOTJtKyBabGliX2psbCB2MS4yLjEzKzEbWzM5bQogIBtbOTBtWzhlODUwYjkwXSAbWzM5bRtbOTJtKyBsaWJibGFzdHJhbXBvbGluZV9qbGwgdjUuMTEuMCswG1szOW0KICAbWzkwbVs4ZTg1MGVkZV0gG1szOW0bWzkybSsgbmdodHRwMl9qbGwgdjEuNTIuMCsxG1szOW0KICAbWzkwbVszZjE5ZTkzM10gG1szOW0bWzkybSsgcDd6aXBfamxsIHYxNy40LjArMhtbMzltChtbMzJtG1sxbUxvYWRpbmcbWzIybRtbMzltIHBhY2thZ2VzLi4uCgobWzBtG1sxbUluc3RhbnRpYXRpbmcuLi4bWzIybQobWzkwbT09PRtbMzltCgobWzBtG1sxbVByZWNvbXBpbGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KG1szMm0bWzFtICBBY3RpdmF0aW5nG1syMm0bWzM5bSBwcm9qZWN0IGF0IGAvdG1wL2psX0QweEJHOWCqRGF0YUZyYW1lc9oSugobWzBtG1sxbUFkZGluZyBwYWNrYWdlcy4uLhtbMjJtChtbOTBtPT09G1szOW0KG1szMm0bWzFtICAgUmVzb2x2aW5nG1syMm0bWzM5bSBwYWNrYWdlIHZlcnNpb25zLi4uChtbMzJtG1sxbSAgICBVcGRhdGluZxtbMjJtG1szOW0gYC90bXAvamxfRDB4Qkc5L1Byb2plY3QudG9tbGAKICAbWzkwbVthOTNjNmYwMF0gG1szOW0bWzkybSsgRGF0YUZyYW1lcyB2MS43LjAbWzM5bQogIBtbOTBtWzdmOTA0ZGZlXSAbWzM5bRtbOTJtKyBQbHV0b1VJIHYwLjcuNjAbWzM5bQogIBtbOTBtWzBhYTgxOWNkXSAbWzM5bRtbOTJtKyBTUUxpdGUgdjEuNi4xG1szOW0KG1szMm0bWzFtICAgIFVwZGF0aW5nG1syMm0bWzM5bSBgL3RtcC9qbF9EMHhCRzkvTWFuaWZlc3QudG9tbGAKICAbWzkwbVs2ZTY5NmM3Ml0gG1szOW0bWzkybSsgQWJzdHJhY3RQbHV0b0RpbmdldGplcyB2MS4zLjIbWzM5bQogIBtbOTBtWzNkYTAwMmY3XSAbWzM5bRtbOTJtKyBDb2xvclR5cGVzIHYwLjExLjUbWzM5bQogIBtbOTBtWzM0ZGEyMTg1XSAbWzM5bRtbOTJtKyBDb21wYXQgdjQuMTYuMBtbMzltCiAgG1s5MG1bYThjYzViMGVdIBtbMzltG1s5Mm0rIENyYXlvbnMgdjQuMS4xG1szOW0KICAbWzkwbVthMTBkMWM0OV0gG1szOW0bWzkybSsgREJJbnRlcmZhY2UgdjIuNi4xG1szOW0KICAbWzkwbVs5YTk2MmY5Y10gG1szOW0bWzkybSsgRGF0YUFQSSB2MS4xNi4wG1szOW0KICAbWzkwbVthOTNjNmYwMF0gG1szOW0bWzkybSsgRGF0YUZyYW1lcyB2MS43LjAbWzM5bQogIBtbOTBtWzg2NGVkYjNiXSAbWzM5bRtbOTJtKyBEYXRhU3RydWN0dXJlcyB2MC4xOC4yMBtbMzltCiAgG1s5MG1bZTJkMTcwYTBdIBtbMzltG1s5Mm0rIERhdGFWYWx1ZUludGVyZmFjZXMgdjEuMC4wG1szOW0KICAbWzkwbVs1M2M0OGMxN10gG1szOW0bWzkybSsgRml4ZWRQb2ludE51bWJlcnMgdjAuOC41G1szOW0KICAbWzkwbVs0N2QyZWQyYl0gG1szOW0bWzkybSsgSHlwZXJzY3JpcHQgdjAuMC41G1szOW0KICAbWzkwbVthYzExOTJhOF0gG1szOW0bWzkybSsgSHlwZXJ0ZXh0TGl0ZXJhbCB2MC45LjUbWzM5bQogIBtbOTBtW2I1ZjgxZTU5XSAbWzM5bRtbOTJtKyBJT0NhcHR1cmUgdjAuMi41G1szOW0KICAbWzkwbVs4NDJkZDgyYl0gG1szOW0bWzkybSsgSW5saW5lU3RyaW5ncyB2MS40LjIbWzM5bQogIBtbOTBtWzQxYWIxNTg0XSAbWzM5bRtbOTJtKyBJbnZlcnRlZEluZGljZXMgdjEuMy4wG1szOW0KICAbWzkwbVs4Mjg5OTUxMF0gG1szOW0bWzkybSsgSXRlcmF0b3JJbnRlcmZhY2VFeHRlbnNpb25zIHYxLjAuMBtbMzltCiAgG1s5MG1bNjkyYjNiY2RdIBtbMzltG1s5Mm0rIEpMTFdyYXBwZXJzIHYxLjYuMBtbMzltCiAgG1s5MG1bNjgyYzA2YTBdIBtbMzltG1s5Mm0rIEpTT04gdjAuMjEuNBtbMzltCiAgG1s5MG1bYjk2NGZhOWZdIBtbMzltG1s5Mm0rIExhVGVYU3RyaW5ncyB2MS4zLjEbWzM5bQogIBtbOTBtWzZjNmUyZTZjXSAbWzM5bRtbOTJtKyBNSU1FcyB2MC4xLjQbWzM5bQogIBtbOTBtW2UxZDI5ZDdhXSAbWzM5bRtbOTJtKyBNaXNzaW5ncyB2MS4yLjAbWzM5bQogIBtbOTBtW2JhYzU1OGUxXSAbWzM5bRtbOTJtKyBPcmRlcmVkQ29sbGVjdGlvbnMgdjEuNi4zG1szOW0KICAbWzkwbVs2OWRlMGE2OV0gG1szOW0bWzkybSsgUGFyc2VycyB2Mi44LjEbWzM5bQogIBtbOTBtWzdmOTA0ZGZlXSAbWzM5bRtbOTJtKyBQbHV0b1VJIHYwLjcuNjAbWzM5bQogIBtbOTBtWzJkZmI2M2VlXSAbWzM5bRtbOTJtKyBQb29sZWRBcnJheXMgdjEuNC4zG1szOW0KICAbWzkwbVthZWE3YmUwMV0gG1szOW0bWzkybSsgUHJlY29tcGlsZVRvb2xzIHYxLjIuMRtbMzltCiAgG1s5MG1bMjEyMTZjNmFdIBtbMzltG1s5Mm0rIFByZWZlcmVuY2VzIHYxLjQuMxtbMzltCiAgG1s5MG1bMDhhYmU4ZDJdIBtbMzltG1s5Mm0rIFByZXR0eVRhYmxlcyB2Mi40LjAbWzM5bQogIBtbOTBtWzE4OWEzODY3XSAbWzM5bRtbOTJtKyBSZWV4cG9ydCB2MS4yLjIbWzM5bQogIBtbOTBtWzBhYTgxOWNkXSAbWzM5bRtbOTJtKyBTUUxpdGUgdjEuNi4xG1szOW0KICAbWzkwbVs5MWM1MTE1NF0gG1szOW0bWzkybSsgU2VudGluZWxBcnJheXMgdjEuNC41G1szOW0KICAbWzkwbVthMmFmMTE2Nl0gG1szOW0bWzkybSsgU29ydGluZ0FsZ29yaXRobXMgdjEuMi4xG1szOW0KICAbWzkwbVs4OTJhM2VkYV0gG1szOW0bWzkybSsgU3RyaW5nTWFuaXB1bGF0aW9uIHYwLjQuMBtbMzltCiAgG1s5MG1bMzc4M2JkYjhdIBtbMzltG1s5Mm0rIFRhYmxlVHJhaXRzIHYxLjAuMRtbMzltCiAgG1s5MG1bYmQzNjlhZjZdIBtbMzltG1s5Mm0rIFRhYmxlcyB2MS4xMi4wG1szOW0KICAbWzkwbVs0MTBhNGI0ZF0gG1szOW0bWzkybSsgVHJpY2tzIHYwLjEuORtbMzltCiAgG1s5MG1bNWMyNzQ3ZjhdIBtbMzltG1s5Mm0rIFVSSXMgdjEuNS4xG1szOW0KICAbWzkwbVtlYTEwZDM1M10gG1szOW0bWzkybSsgV2Vha1JlZlN0cmluZ3MgdjEuNC4yG1szOW0KICAbWzkwbVs3NmVkNDNhZV0gG1szOW0bWzkybSsgU1FMaXRlX2psbCB2My40NS4zKzAbWzM5bQogIBtbOTBtWzBkYWQ4NGM1XSAbWzM5bRtbOTJtKyBBcmdUb29scyB2MS4xLjEbWzM5bQogIBtbOTBtWzU2ZjIyZDcyXSAbWzM5bRtbOTJtKyBBcnRpZmFjdHMbWzM5bQogIBtbOTBtWzJhMGY0NGUzXSAbWzM5bRtbOTJtKyBCYXNlNjQbWzM5bQogIBtbOTBtW2FkZTJjYTcwXSAbWzM5bRtbOTJtKyBEYXRlcxtbMzltCiAgG1s5MG1bZjQzYTI0MWZdIBtbMzltG1s5Mm0rIERvd25sb2FkcyB2MS42LjAbWzM5bQogIBtbOTBtWzdiMWY2MDc5XSAbWzM5bRtbOTJtKyBGaWxlV2F0Y2hpbmcbWzM5bQogIBtbOTBtWzlmYTg0OTdiXSAbWzM5bRtbOTJtKyBGdXR1cmUbWzM5bQogIBtbOTBtW2I3N2UwYTRjXSAbWzM5bRtbOTJtKyBJbnRlcmFjdGl2ZVV0aWxzG1szOW0KICAbWzkwbVtiMjcwMzJjMl0gG1szOW0bWzkybSsgTGliQ1VSTCB2MC42LjQbWzM5bQogIBtbOTBtWzc2Zjg1NDUwXSAbWzM5bRtbOTJtKyBMaWJHaXQyG1szOW0KICAbWzkwbVs4ZjM5OWRhM10gG1szOW0bWzkybSsgTGliZGwbWzM5bQogIBtbOTBtWzM3ZTJlNDZkXSAbWzM5bRtbOTJtKyBMaW5lYXJBbGdlYnJhG1szOW0KICAbWzkwbVs1NmRkYjAxNl0gG1szOW0bWzkybSsgTG9nZ2luZxtbMzltCiAgG1s5MG1bZDZmNDM3NmVdIBtbMzltG1s5Mm0rIE1hcmtkb3duG1szOW0KICAbWzkwbVthNjNhZDExNF0gG1szOW0bWzkybSsgTW1hcBtbMzltCiAgG1s5MG1bY2E1NzU5MzBdIBtbMzltG1s5Mm0rIE5ldHdvcmtPcHRpb25zIHYxLjIuMBtbMzltCiAgG1s5MG1bNDRjZmU5NWFdIBtbMzltG1s5Mm0rIFBrZyB2MS4xMC4wG1szOW0KICAbWzkwbVtkZTA4NThkYV0gG1szOW0bWzkybSsgUHJpbnRmG1szOW0KICAbWzkwbVszZmEwY2Q5Nl0gG1szOW0bWzkybSsgUkVQTBtbMzltCiAgG1s5MG1bOWEzZjgyODRdIBtbMzltG1s5Mm0rIFJhbmRvbRtbMzltCiAgG1s5MG1bZWE4ZTkxOWNdIBtbMzltG1s5Mm0rIFNIQSB2MC43LjAbWzM5bQogIBtbOTBtWzllODhiNDJhXSAbWzM5bRtbOTJtKyBTZXJpYWxpemF0aW9uG1szOW0KICAbWzkwbVs2NDYyZmUwYl0gG1szOW0bWzkybSsgU29ja2V0cxtbMzltCiAgG1s5MG1bMmYwMTE4NGVdIBtbMzltG1s5Mm0rIFNwYXJzZUFycmF5cyB2MS4xMC4wG1szOW0KICAbWzkwbVsxMDc0NWIxNl0gG1szOW0bWzkybSsgU3RhdGlzdGljcyB2MS4xMC4wG1szOW0KICAbWzkwbVtmYTI2N2YxZl0gG1szOW0bWzkybSsgVE9NTCB2MS4wLjMbWzM5bQogIBtbOTBtW2E0ZTU2OWE2XSAbWzM5bRtbOTJtKyBUYXIgdjEuMTAuMBtbMzltCiAgG1s5MG1bOGRmZWQ2MTRdIBtbMzltG1s5Mm0rIFRlc3QbWzM5bQogIBtbOTBtW2NmNzExOGE3XSAbWzM5bRtbOTJtKyBVVUlEcxtbMzltCiAgG1s5MG1bNGVjMGE4M2VdIBtbMzltG1s5Mm0rIFVuaWNvZGUbWzM5bQogIBtbOTBtW2U2NmUwMDc4XSAbWzM5bRtbOTJtKyBDb21waWxlclN1cHBvcnRMaWJyYXJpZXNfamxsIHYxLjEuMSswG1szOW0KICAbWzkwbVtkZWFjOWI0N10gG1szOW0bWzkybSsgTGliQ1VSTF9qbGwgdjguNC4wKzAbWzM5bQogIBtbOTBtW2UzN2RhZjY3XSAbWzM5bRtbOTJtKyBMaWJHaXQyX2psbCB2MS42LjQrMBtbMzltCiAgG1s5MG1bMjk4MTZiNWFdIBtbMzltG1s5Mm0rIExpYlNTSDJfamxsIHYxLjExLjArMRtbMzltCiAgG1s5MG1bYzhmZmQ5YzNdIBtbMzltG1s5Mm0rIE1iZWRUTFNfamxsIHYyLjI4LjIrMRtbMzltCiAgG1s5MG1bMTRhMzYwNmRdIBtbMzltG1s5Mm0rIE1vemlsbGFDQUNlcnRzX2psbCB2MjAyMy4xLjEwG1szOW0KICAbWzkwbVs0NTM2NjI5YV0gG1szOW0bWzkybSsgT3BlbkJMQVNfamxsIHYwLjMuMjMrNBtbMzltCiAgG1s5MG1bYmVhODdkNGFdIBtbMzltG1s5Mm0rIFN1aXRlU3BhcnNlX2psbCB2Ny4yLjErMRtbMzltCiAgG1s5MG1bODM3NzVhNThdIBtbMzltG1s5Mm0rIFpsaWJfamxsIHYxLjIuMTMrMRtbMzltCiAgG1s5MG1bOGU4NTBiOTBdIBtbMzltG1s5Mm0rIGxpYmJsYXN0cmFtcG9saW5lX2psbCB2NS4xMS4wKzAbWzM5bQogIBtbOTBtWzhlODUwZWRlXSAbWzM5bRtbOTJtKyBuZ2h0dHAyX2psbCB2MS41Mi4wKzEbWzM5bQogIBtbOTBtWzNmMTllOTMzXSAbWzM5bRtbOTJtKyBwN3ppcF9qbGwgdjE3LjQuMCsyG1szOW0KG1szMm0bWzFtTG9hZGluZxtbMjJtG1szOW0gcGFja2FnZXMuLi4KChtbMG0bWzFtSW5zdGFudGlhdGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KChtbMG0bWzFtUHJlY29tcGlsaW5nLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gIEFjdGl2YXRpbmcbWzIybRtbMzltIHByb2plY3QgYXQgYC90bXAvamxfRDB4Qkc5YKtEQkludGVyZmFjZdoB1AobWzBtG1sxbUFkZGluZyBwYWNrYWdlcy4uLhtbMjJtChtbOTBtPT09G1szOW0KG1szMm0bWzFtICAgUmVzb2x2aW5nG1syMm0bWzM5bSBwYWNrYWdlIHZlcnNpb25zLi4uChtbMzJtG1sxbSAgICBVcGRhdGluZxtbMjJtG1szOW0gYC90bXAvamxfRDB4Qkc5L1Byb2plY3QudG9tbGAKICAbWzkwbVthMTBkMWM0OV0gG1szOW0bWzkybSsgREJJbnRlcmZhY2UgdjIuNi4xG1szOW0KG1szMm0bWzFtICBObyBDaGFuZ2VzG1syMm0bWzM5bSB0byBgL3RtcC9qbF9EMHhCRzkvTWFuaWZlc3QudG9tbGAKG1szMm0bWzFtTG9hZGluZxtbMjJtG1szOW0gcGFja2FnZXMuLi4KChtbMG0bWzFtSW5zdGFudGlhdGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KChtbMG0bWzFtUHJlY29tcGlsaW5nLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gIEFjdGl2YXRpbmcbWzIybRtbMzltIHByb2plY3QgYXQgYC90bXAvamxfRDB4Qkc5YLBIeXBlcnRleHRMaXRlcmFs2gHZChtbMG0bWzFtQWRkaW5nIHBhY2thZ2VzLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gICBSZXNvbHZpbmcbWzIybRtbMzltIHBhY2thZ2UgdmVyc2lvbnMuLi4KG1szMm0bWzFtICAgIFVwZGF0aW5nG1syMm0bWzM5bSBgL3RtcC9qbF9EMHhCRzkvUHJvamVjdC50b21sYAogIBtbOTBtW2FjMTE5MmE4XSAbWzM5bRtbOTJtKyBIeXBlcnRleHRMaXRlcmFsIHYwLjkuNRtbMzltChtbMzJtG1sxbSAgTm8gQ2hhbmdlcxtbMjJtG1szOW0gdG8gYC90bXAvamxfRDB4Qkc5L01hbmlmZXN0LnRvbWxgChtbMzJtG1sxbUxvYWRpbmcbWzIybRtbMzltIHBhY2thZ2VzLi4uCgobWzBtG1sxbUluc3RhbnRpYXRpbmcuLi4bWzIybQobWzkwbT09PRtbMzltCgobWzBtG1sxbVByZWNvbXBpbGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KG1szMm0bWzFtICBBY3RpdmF0aW5nG1syMm0bWzM5bSBwcm9qZWN0IGF0IGAvdG1wL2psX0QweEJHOWCnZW5hYmxlZMO3cmVzdGFydF9yZWNvbW1lbmRlZF9tc2fAtHJlc3RhcnRfcmVxdWlyZWRfbXNnwK1idXN5X3BhY2thZ2VzkLZ3YWl0aW5nX2Zvcl9wZXJtaXNzaW9uwtksd2FpdGluZ19mb3JfcGVybWlzc2lvbl9idXRfcHJvYmFibHlfZGlzYWJsZWTCq2NlbGxfaW5wdXRz3gAg2SQxNWQ1NWY2ZS1iOGNlLTQ5MTYtYThmYS1jOWIwN2IwY2M4NmGEp2NlbGxfaWTZJDE1ZDU1ZjZlLWI4Y2UtNDkxNi1hOGZhLWM5YjA3YjBjYzg2YaRjb2Rl2VJtZCIiIgpQU0JvYXJkIGlk44KS5YWl5YqbOiAkKEBiaW5kIHBzYmlkIE51bWJlckZpZWxkKDA6OTk5OTk5LCBkZWZhdWx0ID0gMTY0KSkKIiIiqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SQxOTliNDVmNi0xZTYzLTQzOTItYWY2YS02YTVlZDgzYmY0NjeEp2NlbGxfaWTZJDE5OWI0NWY2LTFlNjMtNDM5Mi1hZjZhLTZhNWVkODNiZjQ2N6Rjb2Rl2TBmaWx0ZXIoCgk6cHNiX2lkID0+ID09KHBzYmlkKSwKCXFhcWNfZGlzcGF0Y2gKKTuobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJGE4NWI0ZjE5LTgyZTQtNDBkNS1hZjlmLWQ1Mjg2NTc4YjFmYoSnY2VsbF9pZNkkYTg1YjRmMTktODJlNC00MGQ1LWFmOWYtZDUyODY1NzhiMWZipGNvZGXZT0BiaW5kIHNpbmdsZV9yZXN1bHRfZm9yX2lkX3Nob3dfY29scyBjb2xzX3Zpc2liaWxpdHlfdG9nZ2xlKHFhcWNfc2luZ2xlX3Jlc3VsdCmobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJDk1MTNmMDE3LTc5MDUtNDk1ZC1hN2ViLTZjYTU5MjczMDhkZISnY2VsbF9pZNkkOTUxM2YwMTctNzkwNS00OTVkLWE3ZWItNmNhNTkyNzMwOGRkpGNvZGXZUXNpbmdsZV9yZXN1bHRfZm9yX2lkID0gZmlsdGVyKAoJOnBzYm9hcmRfaWQgPT4gPT0ocHNiaWQpLAoJcWFxY19zaW5nbGVfcmVzdWx0LAopO6htZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkNDU4MjhiYjQtZTlmNS00NmQ1LThmNDgtODgyODRmMzE4Y2M0hKdjZWxsX2lk2SQ0NTgyOGJiNC1lOWY1LTQ2ZDUtOGY0OC04ODI4NGYzMThjYzSkY29kZdlUQGJpbmQgZXh0cmFfcmVzdWx0X2Zvcl9pZF9zaG93X2NvbHMgY29sc192aXNpYmlsaXR5X3RvZ2dsZShleHRyYV9yZXN1bHRfZm9yX2lkX3Nob3cpqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTC2SRlMzEyZDQ4ZC05ZDhkLTRmNDItYjEzNC03ZmUzMDIzZGYyNzCEp2NlbGxfaWTZJGUzMTJkNDhkLTlkOGQtNGY0Mi1iMTM0LTdmZTMwMjNkZjI3MKRjb2Rl2cNxYXFjX3Jlc2lzdGFuY2VfY2hlY2sgPSBsZXQKCWRmID0gREJJbnRlcmZhY2UuZXhlY3V0ZSgKCQlkYiwKCQlzcWwiIiIKCQlzZWxlY3QgKiBmcm9tIHFhcWNfcmVzaXN0YW5jZV9jaGVjawoJCSIiIgoJKSB8PiBEYXRhRnJhbWUKCXRyYW5zZm9ybSEoCgkJZGYsCgkJOnBhc3NlZCA9PiBCeVJvdyhCb29sKSA9PiA6cGFzc2VkCgkpCglkZgplbmSobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMLZJDA1MThhZjQ0LTg3OGUtNDA1Mi1iNGQ0LWU3ZmIzYzM1ZWZlYYSnY2VsbF9pZNkkMDUxOGFmNDQtODc4ZS00MDUyLWI0ZDQtZTdmYjNjMzVlZmVhpGNvZGXZZmxldAoJZGYgPSBmaWx0ZXIoCgkJOm51bV90ZXN0cyA9PiAhPSgxMDApLAoJCXFhcWNfZXh0cmFfcnVuX3Jlc3VsdHMsCgkpCgl1bmlxdWUhKGRmLCA6cnVuaWQpLnJ1bmlkCmVuZKhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkwtkkMTkyYzQ3YTMtNzIwMi00MzUxLTg2MzgtZWM0OWVjYjkwMWM1hKdjZWxsX2lk2SQxOTJjNDdhMy03MjAyLTQzNTEtODYzOC1lYzQ5ZWNiOTAxYzWkY29kZdnDc2luZ2xlX3Jlc3VsdF9mb3JfaWRfc2hvdyA9IGxldAoJZGYgPSBsZWZ0am9pbigKCQlzaW5nbGVfcmVzdWx0X2Zvcl9pZCwKCQlxYXFjX3Bvc2l0aW9uc1s6LCBbOmlkLCA6bmFtZV1dLAoJCW9uID0gOnBvc2l0aW9uID0+IDppZCwKCSlbOiwgTm90KDpwb3NpdGlvbildCglyZW5hbWUhKGRmLCA6bmFtZSA9PiA6cG9zaXRpb24pCglkZgplbmQ7qG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SQzMWI3NDgyOC1mZGM3LTRiMDQtOGJlMC1lYTQ0ODIwZjk1NTWEp2NlbGxfaWTZJDMxYjc0ODI4LWZkYzctNGIwNC04YmUwLWVhNDQ4MjBmOTU1NaRjb2RlsVRhYmxlT2ZDb250ZW50cygpqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTC2SQ3YTExZTQ2MC04ZDZmLTQ1NGMtOGZlNi0zM2M1OWVlYjQ5MzeEp2NlbGxfaWTZJDdhMTFlNDYwLThkNmYtNDU0Yy04ZmU2LTMzYzU5ZWViNDkzN6Rjb2RlrW1kIiIiCnJ1bgoiIiKobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJDFkOTBjNjg3LTdlNjctNDNlZC1iNWJmLTY4ZWY5MDQwZGM5NYSnY2VsbF9pZNkkMWQ5MGM2ODctN2U2Ny00M2VkLWI1YmYtNjhlZjkwNDBkYzk1pGNvZGXZJG1kIiIiCiMgMTAw5Zue44GY44KD44Gq44GE6Kmm6aiTCiIiIqhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkYmIxNjdhNWUtYjIzYS00ZjA1LTliYTYtMzY4YTQ4ZjljMTIwhKdjZWxsX2lk2SRiYjE2N2E1ZS1iMjNhLTRmMDUtOWJhNi0zNjhhNDhmOWMxMjCkY29kZdnFIyBAaHRsKCIiIgojIDxzdHlsZT4KIyAJQG1lZGlhIHNjcmVlbiB7CiMgCQltYWluIHsKIyAJCQltYXJnaW46IDAgYXV0bzsKIyAJCQltYXgtd2lkdGg6IDEwMDBweDsKIyAJCQlwYWRkaW5nLWxlZnQ6IG1heCgxNjBweCwgMTAlKTsKIyAJCQlwYWRkaW5nLXJpZ2h0OiBtYXgoMTYwcHgsIDEwJSk7CiMgCQl9CiMgCX0KIyA8L3N0eWxlPgojICIiIimobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMLZJGVkN2M0MGZlLWY5NjYtNGFmYi1hOTYyLTg5NmM5ZjEwOTk0NoSnY2VsbF9pZNkkZWQ3YzQwZmUtZjk2Ni00YWZiLWE5NjItODk2YzlmMTA5OTQ2pGNvZGXZW2ZpbHRlcigKCTppZCA9PiDiiIgoW3NpbmdsZV9yZXN1bHRfZm9yX2lkLnJ1bmlkOyBleHRyYV9yZXN1bHRfZm9yX2lkLnJ1bmlkO10pLAoJcWFxY19ydW5zCimobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJDMzYjcwNTE2LTc2ODctNDYzYi1hNjU0LTJjZGUzZjI1MzhhYYSnY2VsbF9pZNkkMzNiNzA1MTYtNzY4Ny00NjNiLWE2NTQtMmNkZTNmMjUzOGFhpGNvZGXZJ21kIiIiCiMg6Kmm6aiT57WQ5p6c5LiA6Kan44Gu5Y+W5b6XCiIiIqhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkMjMxNjc5NzEtNDY3MS00ZjE4LTg0ZGYtNzJhN2RjNTkzOGUxhKdjZWxsX2lk2SQyMzE2Nzk3MS00NjcxLTRmMTgtODRkZi03MmE3ZGM1OTM4ZTGkY29kZdlkcWFxY19wb3NpdGlvbnMgPSBEQkludGVyZmFjZS5leGVjdXRlKAoJZGIsCglzcWwiIiIKCXNlbGVjdCAqIGZyb20gcWFxY19wb3NpdGlvbnMKCSIiIgopIHw+IERhdGFGcmFtZahtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkwtkkNTEzNzBhYmItZjBmYi00YWUwLWI0ODgtYmY5ZmM3NzY1NzdjhKdjZWxsX2lk2SQ1MTM3MGFiYi1mMGZiLTRhZTAtYjQ4OC1iZjlmYzc3NjU3N2OkY29kZdnBZXh0cmFfcmVzdWx0X2Zvcl9pZF9zaG93ID0gbGV0CglkZiA9IGxlZnRqb2luKAoJCWV4dHJhX3Jlc3VsdF9mb3JfaWQsCgkJcWFxY19wb3NpdGlvbnNbOiwgWzppZCwgOm5hbWVdXSwKCQlvbiA9IDpwb3NpdGlvbiA9PiA6aWQsCgkpWzosIE5vdCg6cG9zaXRpb24pXQoJcmVuYW1lIShkZiwgOm5hbWUgPT4gOnBvc2l0aW9uKQoJZGYKZW5kO6htZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkODQ0MGExZGUtMTJmZS00YmI3LTkwN2YtNTJmOTMzOTM0ZWMwhKdjZWxsX2lk2SQ4NDQwYTFkZS0xMmZlLTRiYjctOTA3Zi01MmY5MzM5MzRlYzCkY29kZbRtZCIiIgox5Zue6Kmm6aiTCiIiIqhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkNjJkZGViOTEtZTAwNy00NDA3LWI0ZGMtMWI3MzkyNDgwNzgxhKdjZWxsX2lk2SQ2MmRkZWI5MS1lMDA3LTQ0MDctYjRkYy0xYjczOTI0ODA3ODGkY29kZdoBI3FhcWNfcnVucyA9IGxldAoJZGYgPSBEQkludGVyZmFjZS5leGVjdXRlKAoJCWRiLAoJCXNxbCIiIgoJCXNlbGVjdCAqIGZyb20gcWFxY19ydW5zCgkJIiIiCgkpIHw+IERhdGFGcmFtZQoJdHJhbnNmb3JtIShkZiwgOnJ1bl9kYXRldGltZSA9PiBCeVJvdyhwYXNzbWlzc2luZyhEYXRlVGltZSkpID0+IDpydW5fZGF0ZXRpbWUpCgl0cmFuc2Zvcm0hKAoJCWRmLAoJCTpzaGlmdHNjcmlwdF92ZXIgPT4gQnlSb3cocGFzc21pc3NpbmcoVmVyc2lvbk51bWJlcikpID0+IDpzaGlmdHNjcmlwdF92ZXIKCSkKCWRmCmVuZKhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkwtkkZDNjOTUzMTYtN2ZmYi0xMWVmLTFlMmMtMjkzNGY4OWEyMzM2hKdjZWxsX2lk2SRkM2M5NTMxNi03ZmZiLTExZWYtMWUyYy0yOTM0Zjg5YTIzMzakY29kZdl2YmVnaW4KCXVzaW5nIFBsdXRvVUkKCXVzaW5nIEh5cGVydGV4dExpdGVyYWw6IEBodGwKCXVzaW5nIFNRTGl0ZQoJdXNpbmcgREJJbnRlcmZhY2UKCXVzaW5nIERhdGFGcmFtZXMKCXVzaW5nIERhdGVzCmVuZKhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkwtkkNzk3MDM3NDUtNmMwZS00MjAxLWE1OGQtZTc1OTk0ZmFiNGU0hKdjZWxsX2lk2SQ3OTcwMzc0NS02YzBlLTQyMDEtYTU4ZC1lNzU5OTRmYWI0ZTSkY29kZdlicWFxY19kaXNwYXRjaCA9IERCSW50ZXJmYWNlLmV4ZWN1dGUoCglkYiwKCXNxbCIiIgoJc2VsZWN0ICogZnJvbSBxYXFjX2Rpc3BhdGNoCgkiIiIKKSB8PiBEYXRhRnJhbWWobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMLZJDEyODdiNDc5LWNjZTktNGViMS05NDliLTlkYTdkMDMyOWMyNISnY2VsbF9pZNkkMTI4N2I0NzktY2NlOS00ZWIxLTk0OWItOWRhN2QwMzI5YzI0pGNvZGW3bWQiIiIK5Ye66I2354q25rOBCiIiIjuobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJGE3YzFhZTg4LTM0ZGMtNDQ1Yy1hZDJjLTM4NzkxOTJkMTNjN4SnY2VsbF9pZNkkYTdjMWFlODgtMzRkYy00NDVjLWFkMmMtMzg3OTE5MmQxM2M3pGNvZGXZRXNpbmdsZV9yZXN1bHRfZm9yX2lkX3Nob3dbISwgY29sbGVjdChzaW5nbGVfcmVzdWx0X2Zvcl9pZF9zaG93X2NvbHMpXahtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkMDI5OWQ1YjctOGI5Zi00NGFlLWEyY2YtM2RiMzZlMWY4NTdhhKdjZWxsX2lk2SQwMjk5ZDViNy04YjlmLTQ0YWUtYTJjZi0zZGIzNmUxZjg1N2GkY29kZbZtZCIiIgoxMDDlm57oqabpqJMKIiIiqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SQzYTFhYTNkOC1iZWEwLTQ2Y2ItYjA3ZS04OGU5NDg0ZTc1YzaEp2NlbGxfaWTZJDNhMWFhM2Q4LWJlYTAtNDZjYi1iMDdlLTg4ZTk0ODRlNzVjNqRjb2Rl2gGnZnVuY3Rpb24gY29sc192aXNpYmlsaXR5X3RvZ2dsZShkZikKCWNvbHMgPSBuYW1lcyhkZikKCXNpbmdsZV9zaG93X2NvbHMgPSBEaWN0KGNvbHMgLj0+IGZpbGwodHJ1ZSwgbGVuZ3RoKGNvbHMpKSkKCVBsdXRvVUkuY29tYmluZSgpIGRvIENoaWxkCgkJQGh0bCgiIiIKCQkJPHRhYmxlPgoJCQkJPHRyPgoJCQkJCTx0aD4g44Kz44Op44OgIDwvdGg+CgkJCQkJPHRoPiDooajnpLogPC90aD4KCQkJCTwvdHI+CgkJCQkkKFsKCQkJCQlAaHRsKCIiIgoJCQkJCQk8dHI+CgkJCQkJCQk8dGQ+ICQobmFtZSkgPC90ZD4KCQkJCQkJCTx0ZD4gJChDaGlsZChDaGVja0JveChkZWZhdWx0ID0gdHJ1ZSkpKSA8L3RkPgoJCQkJCQk8L3RyPgoJCQkJCSIiIikKCQkJCQkJZm9yIG5hbWUgaW4gY29scwoJCQkJXSkKCQkJPC90YWJsZT4KCQkiIiIpCgllbmQKZW5kqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTC2SQ2Y2ViMTk4ZS1lZGQzLTQ5NTQtYjFmZi1iZWVmMzNjM2YyMDWEp2NlbGxfaWTZJDZjZWIxOThlLWVkZDMtNDk1NC1iMWZmLWJlZWYzM2MzZjIwNaRjb2Rl2UNleHRyYV9yZXN1bHRfZm9yX2lkX3Nob3dbISwgY29sbGVjdChleHRyYV9yZXN1bHRfZm9yX2lkX3Nob3dfY29scyldqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTC2SQ2ZGExZWZiZS1lNWEwLTQzNzYtYjhlYS1lZDIxZjA5ZGEwODSEp2NlbGxfaWTZJDZkYTFlZmJlLWU1YTAtNDM3Ni1iOGVhLWVkMjFmMDlkYTA4NKRjb2Rl2XFxYXFjX3NpbmdsZV9yZXN1bHQgPSBEQkludGVyZmFjZS5leGVjdXRlKAoJZGIsCglzcWwiIiIKCXNlbGVjdCAqIGZyb20gcWFxY19zaW5nbGVfcnVuX3Jlc3VsdHMKCSIiIgopIHw+IERhdGFGcmFtZahtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkwtkkMWU5YWI2YjAtYjI1ZC00NGFkLTkyYWUtZjEyZjkyZDkxZDVlhKdjZWxsX2lk2SQxZTlhYjZiMC1iMjVkLTQ0YWQtOTJhZS1mMTJmOTJkOTFkNWWkY29kZdlUZXh0cmFfcmVzdWx0X2Zvcl9pZCA9IGZpbHRlcigKCTpwc2JvYXJkX2lkID0+ID09KHBzYmlkKSwKCXFhcWNfZXh0cmFfcnVuX3Jlc3VsdHMsCik7qG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SQ0ZDYyOTAwYS0wODEwLTQ5ZDEtODYzMi1hOWU3NTQ0ZjM4MWKEp2NlbGxfaWTZJDRkNjI5MDBhLTA4MTAtNDlkMS04NjMyLWE5ZTc1NDRmMzgxYqRjb2Rl2SRkYiA9IFNRTGl0ZS5EQigiLi4vcHNib2FyZF9xYXFjLmRiIimobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMLZJGVjMmQ0MGY3LTFlMDYtNDE0ZC05YTc3LTllMzQ4OWJhMjcxY4SnY2VsbF9pZNkkZWMyZDQwZjctMWUwNi00MTRkLTlhNzctOWUzNDg5YmEyNzFjpGNvZGW+bWQiIiIKIyDjgZ3jga7ku5bjgrPjg7zjg4kKIiIiqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SRiNTNlZGU4Yy00MTRlLTQwYjUtOGYzMC1mZWRmNDdhNTMwYWOEp2NlbGxfaWTZJGI1M2VkZThjLTQxNGUtNDBiNS04ZjMwLWZlZGY0N2E1MzBhY6Rjb2Rl2gGybGV0CglwYXNzZWQgPSBmaWx0ZXIoCgkJOnBzYl9pZCA9PiA9PShwc2JpZCksCgkJcWFxY19yZXNpc3RhbmNlX2NoZWNrCgkpLnBhc3NlZAoJcmVzaXN0YW5jZV9zdGF0dXMgPSBpZiBpc2VtcHR5KHBhc3NlZCkKCQkiIgoJZWxzZWlmIGFsbChwYXNzZWQpCgkJIk9LIgoJZWxzZQoJCSJGQUlMIgoJZW5kCglkaXNwYXRjaF9zdGF0dXMgPSBsZXQKCQlpZiBjb21iaW5lKAoJCQlxYXFjX2Rpc3BhdGNoLAoJCQk6cHNiX2lkID0+ICh2IC0+IGFueSg9PShwc2JpZCksIHYpKSA9PiA6ZGlzcGF0Y2hlZAoJCSkuZGlzcGF0Y2hlZCB8PiBmaXJzdAoJCQki5riIIgoJCWVsc2UKCQkJIuacqiIKCQllbmQKCWVuZAoJbWQiIiIKCeaKteaKl+WApOODhuOCueODiDogJChyZXNpc3RhbmNlX3N0YXR1cykgXAoJ5Ye66I2354q25rOBOiAkKGRpc3BhdGNoX3N0YXR1cykKCSIiIgplbmSobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJDkxMWE1YWU4LTU4MDAtNGQyMC05ZDczLWJjYzcyMDVkMzUwMYSnY2VsbF9pZNkkOTExYTVhZTgtNTgwMC00ZDIwLTlkNzMtYmNjNzIwNWQzNTAxpGNvZGWxU1FMaXRlLnRhYmxlcyhkYimobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMLZJGE3N2NjZjZiLWRiNjctNGEwNy04MzNhLTIxMGFmY2NjMzllNYSnY2VsbF9pZNkkYTc3Y2NmNmItZGI2Ny00YTA3LTgzM2EtMjEwYWZjY2MzOWU1pGNvZGXZdHFhcWNfZXh0cmFfcnVuX3Jlc3VsdHMgPSBEQkludGVyZmFjZS5leGVjdXRlKAoJZGIsCglzcWwiIiIKCXNlbGVjdCAqIGZyb20gcWFxY19leHRyYV9ydW5fcmVzdWx0cwoJIiIiCikgfD4gRGF0YUZyYW1lqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTCq25vdGVib29rX2lk2SRkM2M5NTMwMi03ZmZiLTExZWYtMDJkNC0xN2ZmNjQ5OWUyNzOraW5fdGVtcF9kaXLCqG1ldGFkYXRhgA==";
window.pluto_preamble_html = undefined;
</script>
<meta name="pluto-insertion-spot-parameters">
<script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.c1afbccf.js" type="module" defer="" integrity="sha384-XIOcriU0JO8TxoT9lqiatkgRqchSIByRjJRvQAwJ64OGriaQ9TL6ewp0bFxF1R7L" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.19.46/frontend-dist/editor.8a3292da.js" integrity="sha384-itp4oE2PRbSrrTHVpWh8sqAuVUsz7ja6L2Dgp/JRfMCD2AwVdTk56K96POF3oLmu" crossorigin="anonymous"></script><script type="text/javascript" id="MathJax-script" integrity="sha384-4kE/rQ11E8xT9QgrCBTyvenkuPfQo8rXYQvJZuMgxyPOoUfpatjQPlgdv6V5yhUK" crossorigin="" not-the-src-yet="https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg-full.js" async=""></script>
<meta name="pluto-insertion-spot-preload">
</head><body class="loading no-MαθJax"> <div style="display:flex;min-height:100vh;"> <pluto-editor class="fullscreen"> <progress style="filter:grayscale(1)" class="delete-me-when-live statefile-fetch-progress" max="100"></progress> </pluto-editor> </div> </body></html>
\ No newline at end of file
Source diff could not be displayed: it is too large. Options to address this: view the blob.
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="450" viewBox="0 0 600 450">
<defs>
<g>
<g id="glyph-0-0-f385e395">
<path d="M 10.640625 0 C 10.640625 0 9.484375 0 9.484375 0 C 9.484375 0 9.484375 -5.046875 9.484375 -5.046875 C 9.484375 -5.984375 8.984375 -6.53125 8.140625 -6.53125 C 7.1875 -6.53125 6.390625 -5.671875 6.390625 -4.609375 C 6.390625 -4.609375 6.390625 0 6.390625 0 C 6.390625 0 5.234375 0 5.234375 0 C 5.234375 0 5.234375 -5.046875 5.234375 -5.046875 C 5.234375 -5.984375 4.75 -6.53125 3.875 -6.53125 C 2.921875 -6.53125 2.15625 -5.671875 2.15625 -4.609375 C 2.15625 -4.609375 2.15625 0 2.15625 0 C 2.15625 0 1 0 1 0 C 1 0 1 -7.34375 1 -7.34375 C 1 -7.34375 2.0625 -7.34375 2.0625 -7.34375 C 2.0625 -7.34375 2.0625 -6.296875 2.0625 -6.296875 C 2.6875 -7.1875 3.328125 -7.546875 4.3125 -7.546875 C 5.265625 -7.546875 5.859375 -7.203125 6.28125 -6.421875 C 6.96875 -7.25 7.5625 -7.546875 8.546875 -7.546875 C 9.90625 -7.546875 10.640625 -6.8125 10.640625 -5.5 C 10.640625 -5.5 10.640625 0 10.640625 0 Z M 10.640625 0 "/>
</g>
<g id="glyph-0-1-f385e395">
<path d="M 7.1875 -3.328125 C 7.1875 -3.328125 1.78125 -3.328125 1.78125 -3.328125 C 1.8125 -1.65625 2.71875 -0.875 3.9375 -0.875 C 4.875 -0.875 5.53125 -1.265625 5.859375 -2.21875 C 5.859375 -2.21875 7.03125 -2.21875 7.03125 -2.21875 C 6.734375 -0.734375 5.578125 0.203125 3.890625 0.203125 C 1.828125 0.203125 0.5625 -1.21875 0.5625 -3.625 C 0.5625 -6.03125 1.875 -7.546875 3.921875 -7.546875 C 5.296875 -7.546875 6.40625 -6.8125 6.890625 -5.609375 C 7.09375 -5.0625 7.1875 -4.390625 7.1875 -3.328125 Z M 5.9375 -4.375 C 5.9375 -5.515625 5.046875 -6.46875 3.90625 -6.46875 C 2.734375 -6.46875 1.90625 -5.59375 1.8125 -4.28125 C 1.8125 -4.28125 5.921875 -4.28125 5.921875 -4.28125 C 5.9375 -4.3125 5.9375 -4.375 5.9375 -4.375 Z M 5.9375 -4.375 "/>
</g>
<g id="glyph-0-2-f385e395">
<path d="M 6.8125 0 C 6.8125 0 5.65625 0 5.65625 0 C 5.65625 0 5.65625 -5.078125 5.65625 -5.078125 C 5.65625 -5.96875 5.0625 -6.53125 4.140625 -6.53125 C 2.953125 -6.53125 2.140625 -5.546875 2.140625 -4.046875 C 2.140625 -4.046875 2.140625 0 2.140625 0 C 2.140625 0 0.984375 0 0.984375 0 C 0.984375 0 0.984375 -7.34375 0.984375 -7.34375 C 0.984375 -7.34375 2.0625 -7.34375 2.0625 -7.34375 C 2.0625 -7.34375 2.0625 -6.109375 2.0625 -6.109375 C 2.703125 -7.125 3.40625 -7.546875 4.5 -7.546875 C 5.90625 -7.546875 6.8125 -6.765625 6.8125 -5.546875 C 6.8125 -5.546875 6.8125 0 6.8125 0 Z M 6.8125 0 "/>
</g>
<g id="glyph-0-3-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-0-4-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-0-5-f385e395">
<path d="M 7.09375 -4.78125 C 7.09375 -1.515625 5.953125 0.203125 3.84375 0.203125 C 1.71875 0.203125 0.609375 -1.515625 0.609375 -4.859375 C 0.609375 -8.1875 1.703125 -9.921875 3.84375 -9.921875 C 6 -9.921875 7.09375 -8.21875 7.09375 -4.78125 Z M 5.84375 -4.890625 C 5.84375 -7.546875 5.1875 -8.828125 3.84375 -8.828125 C 2.515625 -8.828125 1.859375 -7.5625 1.859375 -4.84375 C 1.859375 -2.125 2.515625 -0.8125 3.828125 -0.8125 C 5.1875 -0.8125 5.84375 -2.078125 5.84375 -4.890625 Z M 5.84375 -4.890625 "/>
</g>
<g id="glyph-0-6-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-0-7-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-0-8-f385e395">
<path d="M 7.1875 -2.796875 C 7.1875 -1 5.8125 0.203125 3.84375 0.203125 C 1.890625 0.203125 0.515625 -1 0.515625 -2.8125 C 0.515625 -3.90625 1.078125 -4.671875 2.21875 -5.21875 C 1.203125 -5.859375 0.875 -6.359375 0.875 -7.28125 C 0.875 -8.828125 2.09375 -9.921875 3.84375 -9.921875 C 5.609375 -9.921875 6.828125 -8.828125 6.828125 -7.28125 C 6.828125 -6.34375 6.5 -5.84375 5.46875 -5.21875 C 6.625 -4.671875 7.1875 -3.90625 7.1875 -2.796875 Z M 5.578125 -7.25 C 5.578125 -8.21875 4.90625 -8.828125 3.84375 -8.828125 C 2.8125 -8.828125 2.125 -8.21875 2.125 -7.265625 C 2.125 -6.328125 2.8125 -5.71875 3.84375 -5.71875 C 4.890625 -5.71875 5.578125 -6.328125 5.578125 -7.25 Z M 5.921875 -2.78125 C 5.921875 -3.953125 5.078125 -4.671875 3.84375 -4.671875 C 2.625 -4.671875 1.78125 -3.953125 1.78125 -2.78125 C 1.78125 -1.625 2.625 -0.875 3.828125 -0.875 C 5.078125 -0.875 5.921875 -1.609375 5.921875 -2.78125 Z M 5.921875 -2.78125 "/>
</g>
<g id="glyph-0-9-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-0-10-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-0-11-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-0-12-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-1-0-f385e395">
<path d="M 7.484375 -0.03125 C 7.109375 0.0625 6.9375 0.09375 6.6875 0.09375 C 6.125 0.09375 5.609375 -0.3125 5.484375 -0.875 C 4.84375 -0.1875 3.9375 0.203125 3 0.203125 C 1.515625 0.203125 0.59375 -0.578125 0.59375 -1.90625 C 0.59375 -2.796875 1.015625 -3.453125 1.875 -3.8125 C 2.328125 -3.984375 2.578125 -4.046875 4.234375 -4.25 C 5.15625 -4.375 5.453125 -4.578125 5.453125 -5.0625 C 5.453125 -5.0625 5.453125 -5.375 5.453125 -5.375 C 5.453125 -6.078125 4.859375 -6.46875 3.8125 -6.46875 C 2.71875 -6.46875 2.1875 -6.0625 2.09375 -5.171875 C 2.09375 -5.171875 0.90625 -5.171875 0.90625 -5.171875 C 0.984375 -6.859375 2.078125 -7.546875 3.84375 -7.546875 C 5.65625 -7.546875 6.609375 -6.84375 6.609375 -5.546875 C 6.609375 -5.546875 6.609375 -1.453125 6.609375 -1.453125 C 6.609375 -1.09375 6.828125 -0.875 7.234375 -0.875 C 7.3125 -0.875 7.359375 -0.875 7.484375 -0.90625 C 7.484375 -0.90625 7.484375 -0.03125 7.484375 -0.03125 Z M 5.453125 -2.53125 C 5.453125 -2.53125 5.453125 -3.625 5.453125 -3.625 C 5.046875 -3.4375 4.796875 -3.390625 3.5625 -3.21875 C 2.328125 -3.03125 1.8125 -2.703125 1.8125 -1.9375 C 1.8125 -1.140625 2.34375 -0.8125 3.25 -0.8125 C 4.375 -0.8125 5.453125 -1.484375 5.453125 -2.53125 Z M 5.453125 -2.53125 "/>
</g>
<g id="glyph-1-1-f385e395">
<path d="M 7.21875 -3.03125 C 7.21875 -3.03125 0.953125 -3.03125 0.953125 -3.03125 C 0.953125 -3.03125 0.953125 -3.96875 0.953125 -3.96875 C 0.953125 -3.96875 7.21875 -3.96875 7.21875 -3.96875 C 7.21875 -3.96875 7.21875 -3.03125 7.21875 -3.03125 Z M 7.21875 -3.03125 "/>
</g>
<g id="glyph-1-2-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-1-3-f385e395">
<path d="M 7.09375 -4.78125 C 7.09375 -1.515625 5.953125 0.203125 3.84375 0.203125 C 1.71875 0.203125 0.609375 -1.515625 0.609375 -4.859375 C 0.609375 -8.1875 1.703125 -9.921875 3.84375 -9.921875 C 6 -9.921875 7.09375 -8.21875 7.09375 -4.78125 Z M 5.84375 -4.890625 C 5.84375 -7.546875 5.1875 -8.828125 3.84375 -8.828125 C 2.515625 -8.828125 1.859375 -7.5625 1.859375 -4.84375 C 1.859375 -2.125 2.515625 -0.8125 3.828125 -0.8125 C 5.1875 -0.8125 5.84375 -2.078125 5.84375 -4.890625 Z M 5.84375 -4.890625 "/>
</g>
<g id="glyph-1-4-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-1-5-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-1-6-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-1-7-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-1-8-f385e395">
<path d="M 7.1875 -2.796875 C 7.1875 -1 5.8125 0.203125 3.84375 0.203125 C 1.890625 0.203125 0.515625 -1 0.515625 -2.8125 C 0.515625 -3.90625 1.078125 -4.671875 2.21875 -5.21875 C 1.203125 -5.859375 0.875 -6.359375 0.875 -7.28125 C 0.875 -8.828125 2.09375 -9.921875 3.84375 -9.921875 C 5.609375 -9.921875 6.828125 -8.828125 6.828125 -7.28125 C 6.828125 -6.34375 6.5 -5.84375 5.46875 -5.21875 C 6.625 -4.671875 7.1875 -3.90625 7.1875 -2.796875 Z M 5.578125 -7.25 C 5.578125 -8.21875 4.90625 -8.828125 3.84375 -8.828125 C 2.8125 -8.828125 2.125 -8.21875 2.125 -7.265625 C 2.125 -6.328125 2.8125 -5.71875 3.84375 -5.71875 C 4.890625 -5.71875 5.578125 -6.328125 5.578125 -7.25 Z M 5.921875 -2.78125 C 5.921875 -3.953125 5.078125 -4.671875 3.84375 -4.671875 C 2.625 -4.671875 1.78125 -3.953125 1.78125 -2.78125 C 1.78125 -1.625 2.625 -0.875 3.828125 -0.875 C 5.078125 -0.875 5.921875 -1.609375 5.921875 -2.78125 Z M 5.921875 -2.78125 "/>
</g>
<g id="glyph-1-9-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-1-10-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-1-11-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-2-0-f385e395">
<path d="M 7.21875 -3.03125 C 7.21875 -3.03125 0.953125 -3.03125 0.953125 -3.03125 C 0.953125 -3.03125 0.953125 -3.96875 0.953125 -3.96875 C 0.953125 -3.96875 7.21875 -3.96875 7.21875 -3.96875 C 7.21875 -3.96875 7.21875 -3.03125 7.21875 -3.03125 Z M 7.21875 -3.03125 "/>
</g>
<g id="glyph-3-0-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-3-1-f385e395">
<path d="M 7.1875 -2.796875 C 7.1875 -1 5.8125 0.203125 3.84375 0.203125 C 1.890625 0.203125 0.515625 -1 0.515625 -2.8125 C 0.515625 -3.90625 1.078125 -4.671875 2.21875 -5.21875 C 1.203125 -5.859375 0.875 -6.359375 0.875 -7.28125 C 0.875 -8.828125 2.09375 -9.921875 3.84375 -9.921875 C 5.609375 -9.921875 6.828125 -8.828125 6.828125 -7.28125 C 6.828125 -6.34375 6.5 -5.84375 5.46875 -5.21875 C 6.625 -4.671875 7.1875 -3.90625 7.1875 -2.796875 Z M 5.578125 -7.25 C 5.578125 -8.21875 4.90625 -8.828125 3.84375 -8.828125 C 2.8125 -8.828125 2.125 -8.21875 2.125 -7.265625 C 2.125 -6.328125 2.8125 -5.71875 3.84375 -5.71875 C 4.890625 -5.71875 5.578125 -6.328125 5.578125 -7.25 Z M 5.921875 -2.78125 C 5.921875 -3.953125 5.078125 -4.671875 3.84375 -4.671875 C 2.625 -4.671875 1.78125 -3.953125 1.78125 -2.78125 C 1.78125 -1.625 2.625 -0.875 3.828125 -0.875 C 5.078125 -0.875 5.921875 -1.609375 5.921875 -2.78125 Z M 5.921875 -2.78125 "/>
</g>
<g id="glyph-4-0-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-4-1-f385e395">
<path d="M 7.1875 -2.796875 C 7.1875 -1 5.8125 0.203125 3.84375 0.203125 C 1.890625 0.203125 0.515625 -1 0.515625 -2.8125 C 0.515625 -3.90625 1.078125 -4.671875 2.21875 -5.21875 C 1.203125 -5.859375 0.875 -6.359375 0.875 -7.28125 C 0.875 -8.828125 2.09375 -9.921875 3.84375 -9.921875 C 5.609375 -9.921875 6.828125 -8.828125 6.828125 -7.28125 C 6.828125 -6.34375 6.5 -5.84375 5.46875 -5.21875 C 6.625 -4.671875 7.1875 -3.90625 7.1875 -2.796875 Z M 5.578125 -7.25 C 5.578125 -8.21875 4.90625 -8.828125 3.84375 -8.828125 C 2.8125 -8.828125 2.125 -8.21875 2.125 -7.265625 C 2.125 -6.328125 2.8125 -5.71875 3.84375 -5.71875 C 4.890625 -5.71875 5.578125 -6.328125 5.578125 -7.25 Z M 5.921875 -2.78125 C 5.921875 -3.953125 5.078125 -4.671875 3.84375 -4.671875 C 2.625 -4.671875 1.78125 -3.953125 1.78125 -2.78125 C 1.78125 -1.625 2.625 -0.875 3.828125 -0.875 C 5.078125 -0.875 5.921875 -1.609375 5.921875 -2.78125 Z M 5.921875 -2.78125 "/>
</g>
<g id="glyph-4-2-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-4-3-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-4-4-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-4-5-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-4-6-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-4-7-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-4-8-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-5-0-f385e395">
<path d="M -2.0625 -6.421875 C -0.640625 -6.421875 0.203125 -5.25 0.203125 -3.40625 C 0.203125 -1.484375 -0.546875 -0.53125 -2.234375 -0.46875 C -2.234375 -0.46875 -2.234375 -1.703125 -2.234375 -1.703125 C -1.125 -1.859375 -0.875 -2.453125 -0.875 -3.5 C -0.875 -4.515625 -1.28125 -5.203125 -1.953125 -5.203125 C -2.484375 -5.203125 -2.734375 -4.890625 -2.921875 -4.078125 C -2.921875 -4.078125 -3.1875 -2.984375 -3.1875 -2.984375 C -3.609375 -1.25 -4.15625 -0.65625 -5.3125 -0.65625 C -6.65625 -0.65625 -7.546875 -1.765625 -7.546875 -3.46875 C -7.546875 -5.171875 -6.734375 -6.125 -5.296875 -6.125 C -5.296875 -6.125 -5.296875 -4.90625 -5.296875 -4.90625 C -6.0625 -4.875 -6.46875 -4.375 -6.46875 -3.4375 C -6.46875 -2.484375 -6.03125 -1.875 -5.359375 -1.875 C -4.84375 -1.875 -4.53125 -2.28125 -4.3125 -3.234375 C -4.3125 -3.234375 -4.046875 -4.359375 -4.046875 -4.359375 C -3.703125 -5.8125 -3.15625 -6.421875 -2.0625 -6.421875 Z M -2.0625 -6.421875 "/>
</g>
<g id="glyph-6-0-f385e395">
<path d="M 0 -3.5625 C 0.0625 -3.15625 0.09375 -2.890625 0.09375 -2.609375 C 0.09375 -1.6875 -0.328125 -1.1875 -1.0625 -1.1875 C -1.0625 -1.1875 -6.390625 -1.1875 -6.390625 -1.1875 C -6.390625 -1.1875 -6.390625 -0.203125 -6.390625 -0.203125 C -6.390625 -0.203125 -7.34375 -0.203125 -7.34375 -0.203125 C -7.34375 -0.203125 -7.34375 -1.1875 -7.34375 -1.1875 C -7.34375 -1.1875 -9.359375 -1.1875 -9.359375 -1.1875 C -9.359375 -1.1875 -9.359375 -2.359375 -9.359375 -2.359375 C -9.359375 -2.359375 -7.34375 -2.359375 -7.34375 -2.359375 C -7.34375 -2.359375 -7.34375 -3.5625 -7.34375 -3.5625 C -7.34375 -3.5625 -6.390625 -3.5625 -6.390625 -3.5625 C -6.390625 -3.5625 -6.390625 -2.359375 -6.390625 -2.359375 C -6.390625 -2.359375 -1.578125 -2.359375 -1.578125 -2.359375 C -1.0625 -2.359375 -0.921875 -2.484375 -0.921875 -3 C -0.921875 -3.21875 -0.9375 -3.40625 -0.984375 -3.5625 C -0.984375 -3.5625 0 -3.5625 0 -3.5625 Z M 0 -3.5625 "/>
</g>
<g id="glyph-6-1-f385e395">
<path d="M 0 -6.9375 C 0 -6.9375 0 -5.890625 0 -5.890625 C 0 -5.890625 -1.078125 -5.890625 -1.078125 -5.890625 C -0.171875 -5.265625 0.203125 -4.5625 0.203125 -3.5625 C 0.203125 -1.578125 -1.265625 -0.359375 -3.734375 -0.359375 C -6.078125 -0.359375 -7.546875 -1.609375 -7.546875 -3.515625 C -7.546875 -4.5 -7.15625 -5.28125 -6.40625 -5.765625 C -6.40625 -5.765625 -10.203125 -5.765625 -10.203125 -5.765625 C -10.203125 -5.765625 -10.203125 -6.9375 -10.203125 -6.9375 C -10.203125 -6.9375 0 -6.9375 0 -6.9375 Z M -3.640625 -5.765625 C -5.328125 -5.765625 -6.453125 -4.96875 -6.453125 -3.703125 C -6.453125 -2.4375 -5.375 -1.578125 -3.671875 -1.578125 C -1.953125 -1.578125 -0.875 -2.4375 -0.875 -3.71875 C -0.875 -4.953125 -1.953125 -5.765625 -3.640625 -5.765625 Z M -3.640625 -5.765625 "/>
</g>
<g id="glyph-7-0-f385e395">
<path d="M 7.09375 -4.78125 C 7.09375 -1.515625 5.953125 0.203125 3.84375 0.203125 C 1.71875 0.203125 0.609375 -1.515625 0.609375 -4.859375 C 0.609375 -8.1875 1.703125 -9.921875 3.84375 -9.921875 C 6 -9.921875 7.09375 -8.21875 7.09375 -4.78125 Z M 5.84375 -4.890625 C 5.84375 -7.546875 5.1875 -8.828125 3.84375 -8.828125 C 2.515625 -8.828125 1.859375 -7.5625 1.859375 -4.84375 C 1.859375 -2.125 2.515625 -0.8125 3.828125 -0.8125 C 5.1875 -0.8125 5.84375 -2.078125 5.84375 -4.890625 Z M 5.84375 -4.890625 "/>
</g>
<g id="glyph-7-1-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-7-2-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-8-0-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-9-0-f385e395">
<path d="M 7.28125 -2.234375 C 7.28125 -0.71875 6.109375 0.125 3.96875 0.125 C 1.6875 0.125 0.46875 -0.734375 0.40625 -2.390625 C 0.40625 -2.390625 2.328125 -2.390625 2.328125 -2.390625 C 2.484375 -1.578125 2.96875 -1.40625 3.859375 -1.40625 C 4.78125 -1.40625 5.3125 -1.59375 5.3125 -2.0625 C 5.3125 -2.265625 5.15625 -2.421875 4.65625 -2.578125 C 4.65625 -2.578125 2.328125 -3.296875 2.328125 -3.296875 C 0.921875 -3.734375 0.671875 -4.234375 0.671875 -5.171875 C 0.671875 -6.71875 1.859375 -7.6875 3.78125 -7.6875 C 5.8125 -7.6875 7.046875 -6.71875 7.0625 -5.125 C 7.0625 -5.125 5.1875 -5.125 5.1875 -5.125 C 5.171875 -5.8125 4.703125 -6.140625 3.765625 -6.140625 C 3.078125 -6.140625 2.625 -5.859375 2.625 -5.453125 C 2.625 -5.140625 2.765625 -5.015625 3.3125 -4.859375 C 3.3125 -4.859375 5.796875 -4.140625 5.796875 -4.140625 C 6.796875 -3.84375 7.28125 -3.203125 7.28125 -2.34375 C 7.28125 -2.34375 7.28125 -2.234375 7.28125 -2.234375 Z M 7.28125 -2.234375 "/>
</g>
<g id="glyph-9-1-f385e395">
<path d="M 7.671875 0 C 7.671875 0 5.375 0 5.375 0 C 5.375 0 3.5625 -3.328125 3.5625 -3.328125 C 3.5625 -3.328125 2.78125 -2.484375 2.78125 -2.484375 C 2.78125 -2.484375 2.78125 0 2.78125 0 C 2.78125 0 0.828125 0 0.828125 0 C 0.828125 0 0.828125 -10.203125 0.828125 -10.203125 C 0.828125 -10.203125 2.78125 -10.203125 2.78125 -10.203125 C 2.78125 -10.203125 2.78125 -4.625 2.78125 -4.625 C 2.78125 -4.625 5.265625 -7.5625 5.265625 -7.5625 C 5.265625 -7.5625 7.484375 -7.5625 7.484375 -7.5625 C 7.484375 -7.5625 4.90625 -4.703125 4.90625 -4.703125 C 4.90625 -4.703125 7.671875 0 7.671875 0 Z M 7.671875 0 "/>
</g>
<g id="glyph-9-2-f385e395">
<path d="M 7.34375 -3.5 C 7.34375 -3.5 7.34375 -3.265625 7.34375 -3.265625 C 7.34375 -3.265625 2.265625 -3.265625 2.265625 -3.265625 C 2.328125 -1.796875 2.90625 -1.375 3.84375 -1.375 C 4.546875 -1.375 5.171875 -1.578125 5.328125 -2.125 C 5.328125 -2.125 7.265625 -2.125 7.265625 -2.125 C 6.828125 -0.640625 5.453125 0.125 3.765625 0.125 C 1.625 0.125 0.3125 -1.265625 0.3125 -3.6875 C 0.3125 -6.21875 1.640625 -7.6875 3.8125 -7.6875 C 6.03125 -7.6875 7.34375 -6.109375 7.34375 -3.5 Z M 5.3125 -4.5625 C 5.203125 -5.640625 4.625 -6.1875 3.78125 -6.1875 C 2.90625 -6.1875 2.421875 -5.609375 2.296875 -4.5625 C 2.296875 -4.5625 5.3125 -4.5625 5.3125 -4.5625 Z M 5.3125 -4.5625 "/>
</g>
<g id="glyph-9-3-f385e395">
<path d="M 10.71875 -7.5625 C 10.71875 -7.5625 8.578125 0 8.578125 0 C 8.578125 0 6.546875 0 6.546875 0 C 6.546875 0 5.421875 -5.328125 5.421875 -5.328125 C 5.421875 -5.328125 4.21875 0 4.21875 0 C 4.21875 0 2.203125 0 2.203125 0 C 2.203125 0 0.0625 -7.5625 0.0625 -7.5625 C 0.0625 -7.5625 2.09375 -7.5625 2.09375 -7.5625 C 2.09375 -7.5625 3.296875 -2.265625 3.296875 -2.265625 C 3.296875 -2.265625 4.453125 -7.5625 4.453125 -7.5625 C 4.453125 -7.5625 6.40625 -7.5625 6.40625 -7.5625 C 6.40625 -7.5625 7.546875 -2.265625 7.546875 -2.265625 C 7.546875 -2.265625 8.6875 -7.5625 8.6875 -7.5625 C 8.6875 -7.5625 10.71875 -7.5625 10.71875 -7.5625 Z M 10.71875 -7.5625 "/>
</g>
<g id="glyph-9-4-f385e395">
</g>
<g id="glyph-9-5-f385e395">
<path d="M 11.53125 0 C 11.53125 0 9.578125 0 9.578125 0 C 9.578125 0 9.578125 -5.046875 9.578125 -5.046875 C 9.578125 -5.640625 9.171875 -6.015625 8.515625 -6.015625 C 7.671875 -6.015625 7.171875 -5.453125 7.171875 -4.53125 C 7.171875 -4.53125 7.171875 0 7.171875 0 C 7.171875 0 5.203125 0 5.203125 0 C 5.203125 0 5.203125 -5.046875 5.203125 -5.046875 C 5.203125 -5.640625 4.796875 -6.015625 4.140625 -6.015625 C 3.296875 -6.015625 2.796875 -5.453125 2.796875 -4.53125 C 2.796875 -4.53125 2.796875 0 2.796875 0 C 2.796875 0 0.84375 0 0.84375 0 C 0.84375 0 0.84375 -7.5625 0.84375 -7.5625 C 0.84375 -7.5625 2.78125 -7.5625 2.78125 -7.5625 C 2.78125 -7.5625 2.78125 -6.625 2.78125 -6.625 C 3.4375 -7.390625 3.984375 -7.6875 4.859375 -7.6875 C 5.796875 -7.6875 6.546875 -7.28125 6.921875 -6.5625 C 7.5 -7.34375 8.171875 -7.6875 9.125 -7.6875 C 10.640625 -7.6875 11.53125 -6.8125 11.53125 -5.34375 C 11.53125 -5.34375 11.53125 0 11.53125 0 Z M 11.53125 0 "/>
</g>
<g id="glyph-9-6-f385e395">
<path d="M 7.34375 0 C 7.34375 0 5.203125 0 5.203125 0 C 5.03125 -0.21875 4.984375 -0.5625 4.984375 -0.953125 C 4.296875 -0.234375 3.53125 0.125 2.6875 0.125 C 1.421875 0.125 0.390625 -0.578125 0.390625 -2.046875 C 0.390625 -3.421875 1.125 -4.0625 2.625 -4.328125 C 2.625 -4.328125 3.40625 -4.46875 3.40625 -4.46875 C 4.375 -4.640625 4.96875 -4.546875 4.96875 -5.34375 C 4.96875 -5.859375 4.59375 -6.109375 3.84375 -6.109375 C 2.875 -6.109375 2.546875 -5.859375 2.453125 -5.0625 C 2.453125 -5.0625 0.5625 -5.0625 0.5625 -5.0625 C 0.6875 -6.8125 1.75 -7.6875 3.796875 -7.6875 C 5.84375 -7.6875 6.890625 -6.90625 6.890625 -5.359375 C 6.890625 -5.359375 6.890625 -1.15625 6.890625 -1.15625 C 6.890625 -0.765625 6.984375 -0.5625 7.34375 -0.234375 C 7.34375 -0.234375 7.34375 0 7.34375 0 Z M 4.96875 -3.234375 C 4.96875 -3.234375 4.96875 -3.5625 4.96875 -3.5625 C 4.75 -3.453125 4.65625 -3.4375 4.140625 -3.328125 C 4.140625 -3.328125 3.46875 -3.203125 3.46875 -3.203125 C 2.65625 -3.046875 2.359375 -2.84375 2.359375 -2.265625 C 2.359375 -1.703125 2.765625 -1.453125 3.421875 -1.453125 C 4.40625 -1.453125 4.96875 -2.09375 4.96875 -3.234375 Z M 4.96875 -3.234375 "/>
</g>
<g id="glyph-9-7-f385e395">
<path d="M 7.640625 0 C 7.640625 0 5.6875 0 5.6875 0 C 5.6875 0 5.6875 -4.65625 5.6875 -4.65625 C 5.6875 -5.5625 5.265625 -6.015625 4.421875 -6.015625 C 3.46875 -6.015625 2.84375 -5.4375 2.84375 -4.53125 C 2.84375 -4.53125 2.84375 0 2.84375 0 C 2.84375 0 0.875 0 0.875 0 C 0.875 0 0.875 -7.5625 0.875 -7.5625 C 0.875 -7.5625 2.84375 -7.5625 2.84375 -7.5625 C 2.84375 -7.5625 2.84375 -6.46875 2.84375 -6.46875 C 3.40625 -7.3125 4.09375 -7.6875 5.109375 -7.6875 C 6.71875 -7.6875 7.640625 -6.734375 7.640625 -5.0625 C 7.640625 -5.0625 7.640625 0 7.640625 0 Z M 7.640625 0 "/>
</g>
<g id="glyph-9-8-f385e395">
<path d="M 7.5 -7.5625 C 7.5 -7.5625 4.90625 0 4.90625 0 C 4.90625 0 2.84375 0 2.84375 0 C 2.84375 0 0.203125 -7.5625 0.203125 -7.5625 C 0.203125 -7.5625 2.265625 -7.5625 2.265625 -7.5625 C 2.265625 -7.5625 3.90625 -2.03125 3.90625 -2.03125 C 3.90625 -2.03125 5.4375 -7.5625 5.4375 -7.5625 C 5.4375 -7.5625 7.5 -7.5625 7.5 -7.5625 Z M 7.5 -7.5625 "/>
</g>
<g id="glyph-9-9-f385e395">
<path d="M 7.625 0 C 7.625 0 5.671875 0 5.671875 0 C 5.671875 0 5.671875 -0.875 5.671875 -0.875 C 5.1875 -0.21875 4.515625 0.125 3.578125 0.125 C 1.578125 0.125 0.40625 -1.625 0.40625 -3.765625 C 0.40625 -6.046875 1.78125 -7.6875 3.578125 -7.6875 C 4.515625 -7.6875 5.1875 -7.34375 5.671875 -6.578125 C 5.671875 -6.578125 5.671875 -10.203125 5.671875 -10.203125 C 5.671875 -10.203125 7.625 -10.203125 7.625 -10.203125 C 7.625 -10.203125 7.625 0 7.625 0 Z M 5.671875 -3.734375 C 5.671875 -5.1875 5.015625 -6.046875 4.015625 -6.046875 C 3.03125 -6.046875 2.359375 -5.171875 2.359375 -3.765625 C 2.359375 -2.375 3.03125 -1.515625 4.015625 -1.515625 C 5 -1.515625 5.671875 -2.359375 5.671875 -3.734375 Z M 5.671875 -3.734375 "/>
</g>
<g id="glyph-10-0-f385e395">
<path d="M 7.34375 -3.5 C 7.34375 -3.5 7.34375 -3.265625 7.34375 -3.265625 C 7.34375 -3.265625 2.265625 -3.265625 2.265625 -3.265625 C 2.328125 -1.796875 2.90625 -1.375 3.84375 -1.375 C 4.546875 -1.375 5.171875 -1.578125 5.328125 -2.125 C 5.328125 -2.125 7.265625 -2.125 7.265625 -2.125 C 6.828125 -0.640625 5.453125 0.125 3.765625 0.125 C 1.625 0.125 0.3125 -1.265625 0.3125 -3.6875 C 0.3125 -6.21875 1.640625 -7.6875 3.8125 -7.6875 C 6.03125 -7.6875 7.34375 -6.109375 7.34375 -3.5 Z M 5.3125 -4.5625 C 5.203125 -5.640625 4.625 -6.1875 3.78125 -6.1875 C 2.90625 -6.1875 2.421875 -5.609375 2.296875 -4.5625 C 2.296875 -4.5625 5.3125 -4.5625 5.3125 -4.5625 Z M 5.3125 -4.5625 "/>
</g>
<g id="glyph-10-1-f385e395">
</g>
<g id="glyph-10-2-f385e395">
<path d="M 7.28125 -2.234375 C 7.28125 -0.71875 6.109375 0.125 3.96875 0.125 C 1.6875 0.125 0.46875 -0.734375 0.40625 -2.390625 C 0.40625 -2.390625 2.328125 -2.390625 2.328125 -2.390625 C 2.484375 -1.578125 2.96875 -1.40625 3.859375 -1.40625 C 4.78125 -1.40625 5.3125 -1.59375 5.3125 -2.0625 C 5.3125 -2.265625 5.15625 -2.421875 4.65625 -2.578125 C 4.65625 -2.578125 2.328125 -3.296875 2.328125 -3.296875 C 0.921875 -3.734375 0.671875 -4.234375 0.671875 -5.171875 C 0.671875 -6.71875 1.859375 -7.6875 3.78125 -7.6875 C 5.8125 -7.6875 7.046875 -6.71875 7.0625 -5.125 C 7.0625 -5.125 5.1875 -5.125 5.1875 -5.125 C 5.171875 -5.8125 4.703125 -6.140625 3.765625 -6.140625 C 3.078125 -6.140625 2.625 -5.859375 2.625 -5.453125 C 2.625 -5.140625 2.765625 -5.015625 3.3125 -4.859375 C 3.3125 -4.859375 5.796875 -4.140625 5.796875 -4.140625 C 6.796875 -3.84375 7.28125 -3.203125 7.28125 -2.34375 C 7.28125 -2.34375 7.28125 -2.234375 7.28125 -2.234375 Z M 7.28125 -2.234375 "/>
</g>
<g id="glyph-11-0-f385e395">
<path d="M 7.28125 -2.234375 C 7.28125 -0.71875 6.109375 0.125 3.96875 0.125 C 1.6875 0.125 0.46875 -0.734375 0.40625 -2.390625 C 0.40625 -2.390625 2.328125 -2.390625 2.328125 -2.390625 C 2.484375 -1.578125 2.96875 -1.40625 3.859375 -1.40625 C 4.78125 -1.40625 5.3125 -1.59375 5.3125 -2.0625 C 5.3125 -2.265625 5.15625 -2.421875 4.65625 -2.578125 C 4.65625 -2.578125 2.328125 -3.296875 2.328125 -3.296875 C 0.921875 -3.734375 0.671875 -4.234375 0.671875 -5.171875 C 0.671875 -6.71875 1.859375 -7.6875 3.78125 -7.6875 C 5.8125 -7.6875 7.046875 -6.71875 7.0625 -5.125 C 7.0625 -5.125 5.1875 -5.125 5.1875 -5.125 C 5.171875 -5.8125 4.703125 -6.140625 3.765625 -6.140625 C 3.078125 -6.140625 2.625 -5.859375 2.625 -5.453125 C 2.625 -5.140625 2.765625 -5.015625 3.3125 -4.859375 C 3.3125 -4.859375 5.796875 -4.140625 5.796875 -4.140625 C 6.796875 -3.84375 7.28125 -3.203125 7.28125 -2.34375 C 7.28125 -2.34375 7.28125 -2.234375 7.28125 -2.234375 Z M 7.28125 -2.234375 "/>
</g>
<g id="glyph-11-1-f385e395">
<path d="M 4.21875 0 C 3.859375 0.015625 3.515625 0.0625 3.078125 0.0625 C 1.796875 0.0625 1.15625 -0.4375 1.15625 -1.625 C 1.15625 -1.625 1.15625 -6.109375 1.15625 -6.109375 C 1.15625 -6.109375 0.203125 -6.109375 0.203125 -6.109375 C 0.203125 -6.109375 0.203125 -7.40625 0.203125 -7.40625 C 0.203125 -7.40625 1.15625 -7.40625 1.15625 -7.40625 C 1.15625 -7.40625 1.15625 -9.4375 1.15625 -9.4375 C 1.15625 -9.4375 3.125 -9.4375 3.125 -9.4375 C 3.125 -9.4375 3.125 -7.40625 3.125 -7.40625 C 3.125 -7.40625 4.21875 -7.40625 4.21875 -7.40625 C 4.21875 -7.40625 4.21875 -6.109375 4.21875 -6.109375 C 4.21875 -6.109375 3.125 -6.109375 3.125 -6.109375 C 3.125 -6.109375 3.125 -2.15625 3.125 -2.15625 C 3.125 -1.484375 3.25 -1.328125 3.765625 -1.328125 C 3.90625 -1.328125 4.015625 -1.34375 4.21875 -1.375 C 4.21875 -1.375 4.21875 0 4.21875 0 Z M 4.21875 0 "/>
</g>
<g id="glyph-12-0-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-12-1-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-12-2-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-12-3-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-12-4-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-12-5-f385e395">
<path d="M 7.1875 -2.796875 C 7.1875 -1 5.8125 0.203125 3.84375 0.203125 C 1.890625 0.203125 0.515625 -1 0.515625 -2.8125 C 0.515625 -3.90625 1.078125 -4.671875 2.21875 -5.21875 C 1.203125 -5.859375 0.875 -6.359375 0.875 -7.28125 C 0.875 -8.828125 2.09375 -9.921875 3.84375 -9.921875 C 5.609375 -9.921875 6.828125 -8.828125 6.828125 -7.28125 C 6.828125 -6.34375 6.5 -5.84375 5.46875 -5.21875 C 6.625 -4.671875 7.1875 -3.90625 7.1875 -2.796875 Z M 5.578125 -7.25 C 5.578125 -8.21875 4.90625 -8.828125 3.84375 -8.828125 C 2.8125 -8.828125 2.125 -8.21875 2.125 -7.265625 C 2.125 -6.328125 2.8125 -5.71875 3.84375 -5.71875 C 4.890625 -5.71875 5.578125 -6.328125 5.578125 -7.25 Z M 5.921875 -2.78125 C 5.921875 -3.953125 5.078125 -4.671875 3.84375 -4.671875 C 2.625 -4.671875 1.78125 -3.953125 1.78125 -2.78125 C 1.78125 -1.625 2.625 -0.875 3.828125 -0.875 C 5.078125 -0.875 5.921875 -1.609375 5.921875 -2.78125 Z M 5.921875 -2.78125 "/>
</g>
<g id="glyph-12-6-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-12-7-f385e395">
<path d="M 7.09375 -4.78125 C 7.09375 -1.515625 5.953125 0.203125 3.84375 0.203125 C 1.71875 0.203125 0.609375 -1.515625 0.609375 -4.859375 C 0.609375 -8.1875 1.703125 -9.921875 3.84375 -9.921875 C 6 -9.921875 7.09375 -8.21875 7.09375 -4.78125 Z M 5.84375 -4.890625 C 5.84375 -7.546875 5.1875 -8.828125 3.84375 -8.828125 C 2.515625 -8.828125 1.859375 -7.5625 1.859375 -4.84375 C 1.859375 -2.125 2.515625 -0.8125 3.828125 -0.8125 C 5.1875 -0.8125 5.84375 -2.078125 5.84375 -4.890625 Z M 5.84375 -4.890625 "/>
</g>
<g id="glyph-12-8-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-13-0-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-13-1-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-13-2-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-13-3-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-13-4-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-13-5-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-13-6-f385e395">
<path d="M 7.1875 -2.796875 C 7.1875 -1 5.8125 0.203125 3.84375 0.203125 C 1.890625 0.203125 0.515625 -1 0.515625 -2.8125 C 0.515625 -3.90625 1.078125 -4.671875 2.21875 -5.21875 C 1.203125 -5.859375 0.875 -6.359375 0.875 -7.28125 C 0.875 -8.828125 2.09375 -9.921875 3.84375 -9.921875 C 5.609375 -9.921875 6.828125 -8.828125 6.828125 -7.28125 C 6.828125 -6.34375 6.5 -5.84375 5.46875 -5.21875 C 6.625 -4.671875 7.1875 -3.90625 7.1875 -2.796875 Z M 5.578125 -7.25 C 5.578125 -8.21875 4.90625 -8.828125 3.84375 -8.828125 C 2.8125 -8.828125 2.125 -8.21875 2.125 -7.265625 C 2.125 -6.328125 2.8125 -5.71875 3.84375 -5.71875 C 4.890625 -5.71875 5.578125 -6.328125 5.578125 -7.25 Z M 5.921875 -2.78125 C 5.921875 -3.953125 5.078125 -4.671875 3.84375 -4.671875 C 2.625 -4.671875 1.78125 -3.953125 1.78125 -2.78125 C 1.78125 -1.625 2.625 -0.875 3.828125 -0.875 C 5.078125 -0.875 5.921875 -1.609375 5.921875 -2.78125 Z M 5.921875 -2.78125 "/>
</g>
<g id="glyph-13-7-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-13-8-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-14-0-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-14-1-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-14-2-f385e395">
<path d="M 7.09375 -4.78125 C 7.09375 -1.515625 5.953125 0.203125 3.84375 0.203125 C 1.71875 0.203125 0.609375 -1.515625 0.609375 -4.859375 C 0.609375 -8.1875 1.703125 -9.921875 3.84375 -9.921875 C 6 -9.921875 7.09375 -8.21875 7.09375 -4.78125 Z M 5.84375 -4.890625 C 5.84375 -7.546875 5.1875 -8.828125 3.84375 -8.828125 C 2.515625 -8.828125 1.859375 -7.5625 1.859375 -4.84375 C 1.859375 -2.125 2.515625 -0.8125 3.828125 -0.8125 C 5.1875 -0.8125 5.84375 -2.078125 5.84375 -4.890625 Z M 5.84375 -4.890625 "/>
</g>
<g id="glyph-14-3-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-14-4-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-14-5-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-15-0-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-15-1-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-15-2-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-15-3-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-15-4-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-16-0-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-16-1-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-16-2-f385e395">
<path d="M 7.1875 -2.796875 C 7.1875 -1 5.8125 0.203125 3.84375 0.203125 C 1.890625 0.203125 0.515625 -1 0.515625 -2.8125 C 0.515625 -3.90625 1.078125 -4.671875 2.21875 -5.21875 C 1.203125 -5.859375 0.875 -6.359375 0.875 -7.28125 C 0.875 -8.828125 2.09375 -9.921875 3.84375 -9.921875 C 5.609375 -9.921875 6.828125 -8.828125 6.828125 -7.28125 C 6.828125 -6.34375 6.5 -5.84375 5.46875 -5.21875 C 6.625 -4.671875 7.1875 -3.90625 7.1875 -2.796875 Z M 5.578125 -7.25 C 5.578125 -8.21875 4.90625 -8.828125 3.84375 -8.828125 C 2.8125 -8.828125 2.125 -8.21875 2.125 -7.265625 C 2.125 -6.328125 2.8125 -5.71875 3.84375 -5.71875 C 4.890625 -5.71875 5.578125 -6.328125 5.578125 -7.25 Z M 5.921875 -2.78125 C 5.921875 -3.953125 5.078125 -4.671875 3.84375 -4.671875 C 2.625 -4.671875 1.78125 -3.953125 1.78125 -2.78125 C 1.78125 -1.625 2.625 -0.875 3.828125 -0.875 C 5.078125 -0.875 5.921875 -1.609375 5.921875 -2.78125 Z M 5.921875 -2.78125 "/>
</g>
<g id="glyph-16-3-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-16-4-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-17-0-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-17-1-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-17-2-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-18-0-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-19-0-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-20-0-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-20-1-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-21-0-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-22-0-f385e395">
<path d="M 4.859375 0 C 4.859375 0 3.625 0 3.625 0 C 3.625 0 3.625 -7.0625 3.625 -7.0625 C 3.625 -7.0625 1.421875 -7.0625 1.421875 -7.0625 C 1.421875 -7.0625 1.421875 -7.953125 1.421875 -7.953125 C 3.328125 -8.1875 3.609375 -8.40625 4.046875 -9.921875 C 4.046875 -9.921875 4.859375 -9.921875 4.859375 -9.921875 C 4.859375 -9.921875 4.859375 0 4.859375 0 Z M 4.859375 0 "/>
</g>
<g id="glyph-23-0-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
<g id="glyph-23-1-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-23-2-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-23-3-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-24-0-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-25-0-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-26-0-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-27-0-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-27-1-f385e395">
<path d="M 7.09375 -4.78125 C 7.09375 -1.515625 5.953125 0.203125 3.84375 0.203125 C 1.71875 0.203125 0.609375 -1.515625 0.609375 -4.859375 C 0.609375 -8.1875 1.703125 -9.921875 3.84375 -9.921875 C 6 -9.921875 7.09375 -8.21875 7.09375 -4.78125 Z M 5.84375 -4.890625 C 5.84375 -7.546875 5.1875 -8.828125 3.84375 -8.828125 C 2.515625 -8.828125 1.859375 -7.5625 1.859375 -4.84375 C 1.859375 -2.125 2.515625 -0.8125 3.828125 -0.8125 C 5.1875 -0.8125 5.84375 -2.078125 5.84375 -4.890625 Z M 5.84375 -4.890625 "/>
</g>
<g id="glyph-28-0-f385e395">
<path d="M 7.28125 -2.375 C 7.28125 -2.375 5.8125 -2.375 5.8125 -2.375 C 5.8125 -2.375 5.8125 0 5.8125 0 C 5.8125 0 4.578125 0 4.578125 0 C 4.578125 0 4.578125 -2.375 4.578125 -2.375 C 4.578125 -2.375 0.390625 -2.375 0.390625 -2.375 C 0.390625 -2.375 0.390625 -3.6875 0.390625 -3.6875 C 0.390625 -3.6875 4.90625 -9.921875 4.90625 -9.921875 C 4.90625 -9.921875 5.8125 -9.921875 5.8125 -9.921875 C 5.8125 -9.921875 5.8125 -3.484375 5.8125 -3.484375 C 5.8125 -3.484375 7.28125 -3.484375 7.28125 -3.484375 C 7.28125 -3.484375 7.28125 -2.375 7.28125 -2.375 Z M 4.578125 -3.484375 C 4.578125 -3.484375 4.578125 -7.828125 4.578125 -7.828125 C 4.578125 -7.828125 1.46875 -3.484375 1.46875 -3.484375 C 1.46875 -3.484375 4.578125 -3.484375 4.578125 -3.484375 Z M 4.578125 -3.484375 "/>
</g>
<g id="glyph-29-0-f385e395">
<path d="M 7.1875 -3.078125 C 7.1875 -1.140625 5.828125 0.203125 3.9375 0.203125 C 1.671875 0.203125 0.609375 -1.421875 0.609375 -4.515625 C 0.609375 -7.984375 1.84375 -9.921875 4.15625 -9.921875 C 5.671875 -9.921875 6.734375 -8.953125 6.96875 -7.34375 C 6.96875 -7.34375 5.734375 -7.34375 5.734375 -7.34375 C 5.546875 -8.28125 4.9375 -8.828125 4.078125 -8.828125 C 2.65625 -8.828125 1.875 -7.484375 1.859375 -5.0625 C 2.390625 -5.796875 3.15625 -6.171875 4.140625 -6.171875 C 5.921875 -6.171875 7.1875 -4.921875 7.1875 -3.078125 Z M 5.921875 -2.984375 C 5.921875 -4.3125 5.1875 -5.078125 3.984375 -5.078125 C 2.765625 -5.078125 1.9375 -4.28125 1.9375 -3.046875 C 1.9375 -1.78125 2.796875 -0.875 3.953125 -0.875 C 5.078125 -0.875 5.921875 -1.734375 5.921875 -2.984375 Z M 5.921875 -2.984375 "/>
</g>
<g id="glyph-30-0-f385e395">
<path d="M 7.15625 -7.015625 C 7.15625 -5.796875 6.4375 -4.765625 5.046875 -4.015625 C 5.046875 -4.015625 3.65625 -3.265625 3.65625 -3.265625 C 2.4375 -2.546875 1.984375 -2.03125 1.859375 -1.21875 C 1.859375 -1.21875 7.078125 -1.21875 7.078125 -1.21875 C 7.078125 -1.21875 7.078125 0 7.078125 0 C 7.078125 0 0.46875 0 0.46875 0 C 0.59375 -2.1875 1.1875 -3.125 3.265625 -4.296875 C 3.265625 -4.296875 4.546875 -5.03125 4.546875 -5.03125 C 5.4375 -5.53125 5.890625 -6.203125 5.890625 -6.984375 C 5.890625 -8.046875 5.046875 -8.84375 3.9375 -8.84375 C 2.71875 -8.84375 2.03125 -8.140625 1.9375 -6.484375 C 1.9375 -6.484375 0.703125 -6.484375 0.703125 -6.484375 C 0.765625 -8.890625 1.953125 -9.921875 3.96875 -9.921875 C 5.859375 -9.921875 7.15625 -8.6875 7.15625 -7.015625 Z M 7.15625 -7.015625 "/>
</g>
<g id="glyph-31-0-f385e395">
<path d="M 7.1875 -3.296875 C 7.1875 -1.1875 5.78125 0.203125 3.78125 0.203125 C 2.015625 0.203125 0.890625 -0.578125 0.484375 -2.546875 C 0.484375 -2.546875 1.71875 -2.546875 1.71875 -2.546875 C 2.015625 -1.421875 2.671875 -0.875 3.75 -0.875 C 5.09375 -0.875 5.921875 -1.6875 5.921875 -3.125 C 5.921875 -4.59375 5.078125 -5.453125 3.75 -5.453125 C 2.984375 -5.453125 2.5 -5.203125 1.9375 -4.515625 C 1.9375 -4.515625 0.796875 -4.515625 0.796875 -4.515625 C 0.796875 -4.515625 1.546875 -9.71875 1.546875 -9.71875 C 1.546875 -9.71875 6.65625 -9.71875 6.65625 -9.71875 C 6.65625 -9.71875 6.65625 -8.5 6.65625 -8.5 C 6.65625 -8.5 2.53125 -8.5 2.53125 -8.5 C 2.53125 -8.5 2.140625 -5.9375 2.140625 -5.9375 C 2.71875 -6.359375 3.28125 -6.53125 3.96875 -6.53125 C 5.875 -6.53125 7.1875 -5.25 7.1875 -3.296875 Z M 7.1875 -3.296875 "/>
</g>
<g id="glyph-32-0-f385e395">
<path d="M 7.28125 -8.6875 C 5.1875 -6.203125 3.796875 -3.203125 3.25 0 C 3.25 0 1.9375 0 1.9375 0 C 2.625 -3.109375 4.03125 -6 6 -8.5 C 6 -8.5 0.640625 -8.5 0.640625 -8.5 C 0.640625 -8.5 0.640625 -9.71875 0.640625 -9.71875 C 0.640625 -9.71875 7.28125 -9.71875 7.28125 -9.71875 C 7.28125 -9.71875 7.28125 -8.6875 7.28125 -8.6875 Z M 7.28125 -8.6875 "/>
</g>
<g id="glyph-33-0-f385e395">
<path d="M 7.125 -5.1875 C 7.125 -1.765625 5.875 0.203125 3.5625 0.203125 C 2.046875 0.203125 0.984375 -0.75 0.734375 -2.375 C 0.734375 -2.375 1.96875 -2.375 1.96875 -2.375 C 2.171875 -1.421875 2.765625 -0.875 3.640625 -0.875 C 5.046875 -0.875 5.84375 -2.21875 5.859375 -4.640625 C 5.203125 -3.875 4.515625 -3.546875 3.578125 -3.546875 C 1.796875 -3.546875 0.53125 -4.78125 0.53125 -6.640625 C 0.53125 -8.578125 1.890625 -9.921875 3.78125 -9.921875 C 6.046875 -9.921875 7.125 -8.296875 7.125 -5.1875 Z M 5.78125 -6.65625 C 5.78125 -7.953125 4.90625 -8.84375 3.765625 -8.84375 C 2.625 -8.84375 1.796875 -8 1.796875 -6.734375 C 1.796875 -5.40625 2.53125 -4.640625 3.71875 -4.640625 C 4.921875 -4.640625 5.78125 -5.453125 5.78125 -6.65625 Z M 5.78125 -6.65625 "/>
</g>
<g id="glyph-34-0-f385e395">
<path d="M 7.078125 -2.890625 C 7.078125 -1.015625 5.765625 0.203125 3.71875 0.203125 C 1.6875 0.203125 0.609375 -0.78125 0.453125 -3 C 0.453125 -3 1.6875 -3 1.6875 -3 C 1.765625 -1.546875 2.421875 -0.875 3.765625 -0.875 C 5.046875 -0.875 5.828125 -1.625 5.828125 -2.875 C 5.828125 -3.96875 5.125 -4.625 3.765625 -4.625 C 3.765625 -4.625 3.09375 -4.625 3.09375 -4.625 C 3.09375 -4.625 3.09375 -5.65625 3.09375 -5.65625 C 5.0625 -5.65625 5.53125 -6.09375 5.53125 -7.15625 C 5.53125 -8.203125 4.875 -8.84375 3.78125 -8.84375 C 2.515625 -8.84375 1.921875 -8.1875 1.890625 -6.71875 C 1.890625 -6.71875 0.65625 -6.71875 0.65625 -6.71875 C 0.703125 -8.828125 1.765625 -9.921875 3.765625 -9.921875 C 5.65625 -9.921875 6.796875 -8.90625 6.796875 -7.203125 C 6.796875 -6.203125 6.328125 -5.5625 5.40625 -5.1875 C 6.59375 -4.78125 7.078125 -4.09375 7.078125 -2.890625 Z M 7.078125 -2.890625 "/>
</g>
</g>
</defs>
<rect x="-60" y="-45" width="720" height="540" fill="rgb(100%, 100%, 100%)" fill-opacity="1"/>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 54 391 L 584 391 L 584 36 L 54 36 Z M 54 391 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="0.12" stroke-miterlimit="1.154701" d="M 66.113281 391 L 66.113281 36 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="0.12" stroke-miterlimit="1.154701" d="M 215.183594 391 L 215.183594 36 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="0.12" stroke-miterlimit="1.154701" d="M 364.253906 391 L 364.253906 36 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="0.12" stroke-miterlimit="1.154701" d="M 513.324219 391 L 513.324219 36 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="0.12" stroke-miterlimit="1.154701" d="M 54 374.863281 L 584 374.863281 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="0.12" stroke-miterlimit="1.154701" d="M 54 261.773438 L 584 261.773438 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="0.12" stroke-miterlimit="1.154701" d="M 54 148.679688 L 584 148.679688 "/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0-f385e395" x="301.492981" y="431.567993"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1-f385e395" x="313.154968" y="431.567993"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0-f385e395" x="320.938995" y="431.567993"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2-f385e395" x="328.722992" y="431.567993"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-0-f385e395" x="58.132" y="412.257996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-0-f385e395" x="66.308014" y="412.257996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-1-f385e395" x="207.202835" y="412.257996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-2-f385e395" x="215.37883" y="412.257996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-3-f385e395" x="360.361633" y="412.257996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0-f385e395" x="509.432465" y="412.257996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-0-f385e395" x="28.164" y="222.838013"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-6-0-f385e395" x="28.164" y="215.837997"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-6-1-f385e395" x="28.164" y="211.945999"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-7-0-f385e395" x="36.216007" y="379.966644"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-7-1-f385e395" x="36.216007" y="266.875061"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-8-0-f385e395" x="36.216007" y="153.783493"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-0-f385e395" x="259.472015" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-1-f385e395" x="267.256012" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-2-f385e395" x="275.040009" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-3-f385e395" x="282.824005" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-4-f385e395" x="293.716003" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-5-f385e395" x="297.608002" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-10-0-f385e395" x="310.053986" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-6-f385e395" x="317.838013" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-7-f385e395" x="325.622009" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-10-1-f385e395" x="334.175995" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-8-f385e395" x="338.067993" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-11-0-f385e395" x="345.85202" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-10-1-f385e395" x="353.635986" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-10-2-f385e395" x="357.527985" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-11-1-f385e395" x="365.312012" y="28.947996"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-9-9-f385e395" x="369.973999" y="28.947996"/>
</g>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 474.460938 370.035156 L 476.058594 371.628906 L 477.652344 370.035156 L 479.234375 371.621094 L 477.640625 373.214844 L 479.234375 374.808594 L 477.652344 376.394531 L 476.058594 374.800781 L 474.460938 376.394531 L 472.878906 374.808594 L 474.472656 373.214844 L 472.878906 371.621094 Z M 474.460938 370.035156 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 390.609375 364.542969 L 392.203125 366.140625 L 393.796875 364.542969 L 395.382812 366.128906 L 393.789062 367.722656 L 395.382812 369.316406 L 393.796875 370.902344 L 392.203125 369.308594 L 390.609375 370.902344 L 389.027344 369.316406 L 390.621094 367.722656 L 389.027344 366.128906 Z M 390.609375 364.542969 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 312.082031 368.828125 L 313.675781 370.421875 L 315.269531 368.828125 L 316.855469 370.414062 L 315.261719 372.007812 L 316.855469 373.601562 L 315.269531 375.1875 L 313.675781 373.59375 L 312.082031 375.1875 L 310.496094 373.601562 L 312.089844 372.007812 L 310.496094 370.414062 Z M 312.082031 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 389.945312 364.425781 L 391.539062 366.019531 L 393.132812 364.425781 L 394.71875 366.011719 L 393.125 367.605469 L 394.71875 369.199219 L 393.132812 370.785156 L 391.539062 369.191406 L 389.945312 370.785156 L 388.359375 369.199219 L 389.953125 367.605469 L 388.359375 366.011719 Z M 389.945312 364.425781 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 362.660156 360.261719 L 364.253906 361.855469 L 365.847656 360.261719 L 367.433594 361.84375 L 365.839844 363.441406 L 367.433594 365.035156 L 365.847656 366.617188 L 364.253906 365.023438 L 362.660156 366.617188 L 361.074219 365.035156 L 362.667969 363.441406 L 361.074219 361.84375 Z M 362.660156 360.261719 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 379.164062 369.996094 L 380.757812 371.589844 L 382.351562 369.996094 L 383.9375 371.578125 L 382.34375 373.175781 L 383.9375 374.769531 L 382.351562 376.351562 L 380.757812 374.757812 L 379.164062 376.351562 L 377.578125 374.769531 L 379.171875 373.175781 L 377.578125 371.578125 Z M 379.164062 369.996094 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 365.320312 368.828125 L 366.914062 370.421875 L 368.511719 368.828125 L 370.09375 370.414062 L 368.5 372.007812 L 370.09375 373.601562 L 368.511719 375.1875 L 366.914062 373.59375 L 365.320312 375.1875 L 363.738281 373.601562 L 365.332031 372.007812 L 363.738281 370.414062 Z M 365.320312 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 351.347656 365.433594 L 352.941406 367.027344 L 354.535156 365.433594 L 356.117188 367.019531 L 354.523438 368.613281 L 356.117188 370.207031 L 354.535156 371.789062 L 352.941406 370.195312 L 351.347656 371.789062 L 349.761719 370.207031 L 351.355469 368.613281 L 349.761719 367.019531 Z M 351.347656 365.433594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 464.480469 367.523438 L 466.074219 369.117188 L 467.667969 367.523438 L 469.253906 369.105469 L 467.660156 370.699219 L 469.253906 372.292969 L 467.667969 373.878906 L 466.074219 372.285156 L 464.480469 373.878906 L 462.894531 372.292969 L 464.488281 370.699219 L 462.894531 369.105469 Z M 464.480469 367.523438 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 345.355469 370.257812 L 346.949219 371.851562 L 348.546875 370.257812 L 350.128906 371.839844 L 348.535156 373.4375 L 350.128906 375.03125 L 348.546875 376.613281 L 346.949219 375.019531 L 345.355469 376.613281 L 343.773438 375.03125 L 345.367188 373.4375 L 343.773438 371.839844 Z M 345.355469 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 348.816406 368.074219 L 350.410156 369.667969 L 352.003906 368.074219 L 353.589844 369.65625 L 351.996094 371.25 L 353.589844 372.84375 L 352.003906 374.429688 L 350.410156 372.835938 L 348.816406 374.429688 L 347.234375 372.84375 L 348.828125 371.25 L 347.234375 369.65625 Z M 348.816406 368.074219 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 356.003906 370.257812 L 357.597656 371.851562 L 359.191406 370.257812 L 360.777344 371.839844 L 359.183594 373.4375 L 360.777344 375.03125 L 359.191406 376.613281 L 357.597656 375.019531 L 356.003906 376.613281 L 354.417969 375.03125 L 356.015625 373.4375 L 354.417969 371.839844 Z M 356.003906 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 325.390625 365.972656 L 326.984375 367.566406 L 328.582031 365.972656 L 330.164062 367.558594 L 328.570312 369.152344 L 330.164062 370.746094 L 328.582031 372.332031 L 326.984375 370.734375 L 325.390625 372.332031 L 323.808594 370.746094 L 325.402344 369.152344 L 323.808594 367.558594 Z M 325.390625 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 415.898438 365.972656 L 417.492188 367.566406 L 419.085938 365.972656 L 420.671875 367.558594 L 419.078125 369.152344 L 420.671875 370.746094 L 419.085938 372.332031 L 417.492188 370.734375 L 415.898438 372.332031 L 414.3125 370.746094 L 415.910156 369.152344 L 414.3125 367.558594 Z M 415.898438 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 375.96875 365.972656 L 377.5625 367.566406 L 379.15625 365.972656 L 380.742188 367.558594 L 379.148438 369.152344 L 380.742188 370.746094 L 379.15625 372.332031 L 377.5625 370.734375 L 375.96875 372.332031 L 374.382812 370.746094 L 375.980469 369.152344 L 374.382812 367.558594 Z M 375.96875 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 426.546875 368.828125 L 428.140625 370.421875 L 429.734375 368.828125 L 431.320312 370.414062 L 429.726562 372.007812 L 431.320312 373.601562 L 429.734375 375.1875 L 428.140625 373.59375 L 426.546875 375.1875 L 424.960938 373.601562 L 426.554688 372.007812 L 424.960938 370.414062 Z M 426.546875 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 361.328125 367.402344 L 362.921875 368.996094 L 364.515625 367.402344 L 366.101562 368.984375 L 364.507812 370.578125 L 366.101562 372.171875 L 364.515625 373.757812 L 362.921875 372.164062 L 361.328125 373.757812 L 359.742188 372.171875 L 361.339844 370.578125 L 359.742188 368.984375 Z M 361.328125 367.402344 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 405.785156 369.996094 L 407.378906 371.589844 L 408.972656 369.996094 L 410.554688 371.578125 L 408.960938 373.175781 L 410.554688 374.769531 L 408.972656 376.351562 L 407.378906 374.757812 L 405.785156 376.351562 L 404.199219 374.769531 L 405.792969 373.175781 L 404.199219 371.578125 Z M 405.785156 369.996094 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 399.925781 351.691406 L 401.519531 353.285156 L 403.117188 351.691406 L 404.699219 353.277344 L 403.105469 354.871094 L 404.699219 356.464844 L 403.117188 358.050781 L 401.519531 356.457031 L 399.925781 358.050781 L 398.34375 356.464844 L 399.9375 354.871094 L 398.34375 353.277344 Z M 399.925781 351.691406 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 294.777344 221.746094 L 296.375 223.339844 L 297.96875 221.746094 L 299.550781 223.328125 L 297.957031 224.925781 L 299.550781 226.519531 L 297.96875 228.101562 L 296.375 226.507812 L 294.777344 228.101562 L 293.195312 226.519531 L 294.789062 224.925781 L 293.195312 223.328125 Z M 294.777344 221.746094 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 391.941406 359.074219 L 393.535156 360.667969 L 395.128906 359.074219 L 396.714844 360.65625 L 395.121094 362.25 L 396.714844 363.847656 L 395.128906 365.429688 L 393.535156 363.835938 L 391.941406 365.429688 L 390.355469 363.847656 L 391.949219 362.25 L 390.355469 360.65625 Z M 391.941406 359.074219 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 514.390625 368.828125 L 515.988281 370.421875 L 517.582031 368.828125 L 519.164062 370.414062 L 517.570312 372.007812 L 519.164062 373.601562 L 517.582031 375.1875 L 515.988281 373.59375 L 514.390625 375.1875 L 512.808594 373.601562 L 514.402344 372.007812 L 512.808594 370.414062 Z M 514.390625 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 499.75 367.402344 L 501.34375 368.996094 L 502.941406 367.402344 L 504.523438 368.984375 L 502.929688 370.578125 L 504.523438 372.171875 L 502.941406 373.757812 L 501.34375 372.164062 L 499.75 373.757812 L 498.167969 372.171875 L 499.761719 370.578125 L 498.167969 368.984375 Z M 499.75 367.402344 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 310.75 218.890625 L 312.34375 220.484375 L 313.9375 218.890625 L 315.523438 220.472656 L 313.929688 222.066406 L 315.523438 223.664062 L 313.9375 225.246094 L 312.34375 223.652344 L 310.75 225.246094 L 309.167969 223.664062 L 310.761719 222.066406 L 309.167969 220.472656 Z M 310.75 218.890625 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 390.609375 370.257812 L 392.203125 371.851562 L 393.796875 370.257812 L 395.382812 371.839844 L 393.789062 373.4375 L 395.382812 375.03125 L 393.796875 376.613281 L 392.203125 375.019531 L 390.609375 376.613281 L 389.027344 375.03125 L 390.621094 373.4375 L 389.027344 371.839844 Z M 390.609375 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 417.894531 368.65625 L 419.488281 370.25 L 421.082031 368.65625 L 422.667969 370.242188 L 421.074219 371.835938 L 422.667969 373.429688 L 421.082031 375.011719 L 419.488281 373.417969 L 417.894531 375.011719 L 416.3125 373.429688 L 417.90625 371.835938 L 416.3125 370.242188 Z M 417.894531 368.65625 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 419.890625 370.257812 L 421.484375 371.851562 L 423.082031 370.257812 L 424.664062 371.839844 L 423.070312 373.4375 L 424.664062 375.03125 L 423.082031 376.613281 L 421.484375 375.019531 L 419.890625 376.613281 L 418.308594 375.03125 L 419.902344 373.4375 L 418.308594 371.839844 Z M 419.890625 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 493.097656 371.683594 L 494.691406 373.277344 L 496.285156 371.683594 L 497.871094 373.269531 L 496.273438 374.863281 L 497.871094 376.457031 L 496.285156 378.042969 L 494.691406 376.449219 L 493.097656 378.042969 L 491.511719 376.457031 L 493.105469 374.863281 L 491.511719 373.269531 Z M 493.097656 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 415.898438 365.972656 L 417.492188 367.566406 L 419.085938 365.972656 L 420.671875 367.558594 L 419.078125 369.152344 L 420.671875 370.746094 L 419.085938 372.332031 L 417.492188 370.734375 L 415.898438 372.332031 L 414.3125 370.746094 L 415.910156 369.152344 L 414.3125 367.558594 Z M 415.898438 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 418.5625 363.117188 L 420.15625 364.710938 L 421.75 363.117188 L 423.332031 364.703125 L 421.738281 366.296875 L 423.332031 367.890625 L 421.75 369.472656 L 420.15625 367.878906 L 418.5625 369.472656 L 416.976562 367.890625 L 418.570312 366.296875 L 416.976562 364.703125 Z M 418.5625 363.117188 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 389.277344 365.972656 L 390.875 367.566406 L 392.46875 365.972656 L 394.050781 367.558594 L 392.457031 369.152344 L 394.050781 370.746094 L 392.46875 372.332031 L 390.875 370.734375 L 389.277344 372.332031 L 387.695312 370.746094 L 389.289062 369.152344 L 387.695312 367.558594 Z M 389.277344 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 370.644531 371.683594 L 372.238281 373.277344 L 373.832031 371.683594 L 375.417969 373.269531 L 373.824219 374.863281 L 375.417969 376.457031 L 373.832031 378.042969 L 372.238281 376.449219 L 370.644531 378.042969 L 369.0625 376.457031 L 370.65625 374.863281 L 369.0625 373.269531 Z M 370.644531 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 353.34375 370.257812 L 354.9375 371.851562 L 356.53125 370.257812 L 358.117188 371.839844 L 356.519531 373.4375 L 358.117188 375.03125 L 356.53125 376.613281 L 354.9375 375.019531 L 353.34375 376.613281 L 351.757812 375.03125 L 353.351562 373.4375 L 351.757812 371.839844 Z M 353.34375 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 429.207031 371.683594 L 430.804688 373.277344 L 432.398438 371.683594 L 433.980469 373.269531 L 432.386719 374.863281 L 433.980469 376.457031 L 432.398438 378.042969 L 430.804688 376.449219 L 429.207031 378.042969 L 427.625 376.457031 L 429.21875 374.863281 L 427.625 373.269531 Z M 429.207031 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 379.960938 370.257812 L 381.554688 371.851562 L 383.152344 370.257812 L 384.734375 371.839844 L 383.140625 373.4375 L 384.734375 375.03125 L 383.152344 376.613281 L 381.554688 375.019531 L 379.960938 376.613281 L 378.378906 375.03125 L 379.972656 373.4375 L 378.378906 371.839844 Z M 379.960938 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 325.390625 365.972656 L 326.984375 367.566406 L 328.582031 365.972656 L 330.164062 367.558594 L 328.570312 369.152344 L 330.164062 370.746094 L 328.582031 372.332031 L 326.984375 370.734375 L 325.390625 372.332031 L 323.808594 370.746094 L 325.402344 369.152344 L 323.808594 367.558594 Z M 325.390625 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 448.507812 369.144531 L 450.101562 370.738281 L 451.695312 369.144531 L 453.28125 370.726562 L 451.6875 372.324219 L 453.28125 373.917969 L 451.695312 375.5 L 450.101562 373.90625 L 448.507812 375.5 L 446.921875 373.917969 L 448.519531 372.324219 L 446.921875 370.726562 Z M 448.507812 369.144531 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 366.652344 364.542969 L 368.246094 366.140625 L 369.839844 364.542969 L 371.425781 366.128906 L 369.832031 367.722656 L 371.425781 369.316406 L 369.839844 370.902344 L 368.246094 369.308594 L 366.652344 370.902344 L 365.066406 369.316406 L 366.660156 367.722656 L 365.066406 366.128906 Z M 366.652344 364.542969 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 361.328125 370.257812 L 362.921875 371.851562 L 364.515625 370.257812 L 366.101562 371.839844 L 364.507812 373.4375 L 366.101562 375.03125 L 364.515625 376.613281 L 362.921875 375.019531 L 361.328125 376.613281 L 359.742188 375.03125 L 361.339844 373.4375 L 359.742188 371.839844 Z M 361.328125 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 76.496094 116.074219 L 78.089844 117.667969 L 79.683594 116.074219 L 81.269531 117.65625 L 79.675781 119.253906 L 81.269531 120.847656 L 79.683594 122.429688 L 78.089844 120.835938 L 76.496094 122.429688 L 74.914062 120.847656 L 76.507812 119.253906 L 74.914062 117.65625 Z M 76.496094 116.074219 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 371.976562 367.816406 L 373.570312 369.410156 L 375.164062 367.816406 L 376.75 369.402344 L 375.15625 370.996094 L 376.75 372.589844 L 375.164062 374.175781 L 373.570312 372.582031 L 371.976562 374.175781 L 370.390625 372.589844 L 371.984375 370.996094 L 370.390625 369.402344 Z M 371.976562 367.816406 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 433.644531 368.601562 L 435.238281 370.195312 L 436.832031 368.601562 L 438.417969 370.183594 L 436.824219 371.777344 L 438.417969 373.371094 L 436.832031 374.957031 L 435.238281 373.363281 L 433.644531 374.957031 L 432.0625 373.371094 L 433.65625 371.777344 L 432.0625 370.183594 Z M 433.644531 368.601562 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 109.769531 68.949219 L 111.367188 70.542969 L 112.960938 68.949219 L 114.542969 70.535156 L 112.949219 72.128906 L 114.542969 73.722656 L 112.960938 75.308594 L 111.367188 73.714844 L 109.769531 75.308594 L 108.1875 73.722656 L 109.78125 72.128906 L 108.1875 70.535156 Z M 109.769531 68.949219 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 178.984375 48.957031 L 180.578125 50.550781 L 182.171875 48.957031 L 183.757812 50.542969 L 182.160156 52.136719 L 183.757812 53.730469 L 182.171875 55.316406 L 180.578125 53.722656 L 178.984375 55.316406 L 177.398438 53.730469 L 178.992188 52.136719 L 177.398438 50.542969 Z M 178.984375 48.957031 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 373.308594 354.550781 L 374.902344 356.144531 L 376.496094 354.550781 L 378.082031 356.132812 L 376.484375 357.726562 L 378.082031 359.320312 L 376.496094 360.90625 L 374.902344 359.3125 L 373.308594 360.90625 L 371.722656 359.320312 L 373.316406 357.726562 L 371.722656 356.132812 Z M 373.308594 354.550781 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 327.167969 367.480469 L 328.761719 369.074219 L 330.355469 367.480469 L 331.9375 369.066406 L 330.34375 370.660156 L 331.9375 372.253906 L 330.355469 373.839844 L 328.761719 372.246094 L 327.167969 373.839844 L 325.582031 372.253906 L 327.175781 370.660156 L 325.582031 369.066406 Z M 327.167969 367.480469 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 404.363281 369.351562 L 405.957031 370.945312 L 407.550781 369.351562 L 409.136719 370.9375 L 407.542969 372.53125 L 409.136719 374.125 L 407.550781 375.710938 L 405.957031 374.117188 L 404.363281 375.710938 L 402.777344 374.125 L 404.375 372.53125 L 402.777344 370.9375 Z M 404.363281 369.351562 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 383.289062 370.675781 L 384.882812 372.269531 L 386.476562 370.675781 L 388.0625 372.257812 L 386.46875 373.855469 L 388.0625 375.449219 L 386.476562 377.03125 L 384.882812 375.4375 L 383.289062 377.03125 L 381.707031 375.449219 L 383.300781 373.855469 L 381.707031 372.257812 Z M 383.289062 370.675781 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 332.046875 216.03125 L 333.640625 217.628906 L 335.234375 216.03125 L 336.820312 217.617188 L 335.226562 219.210938 L 336.820312 220.804688 L 335.234375 222.390625 L 333.640625 220.796875 L 332.046875 222.390625 L 330.460938 220.804688 L 332.054688 219.210938 L 330.460938 217.617188 Z M 332.046875 216.03125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 302.765625 369.664062 L 304.359375 371.257812 L 305.953125 369.664062 L 307.539062 371.25 L 305.945312 372.84375 L 307.539062 374.4375 L 305.953125 376.023438 L 304.359375 374.429688 L 302.765625 376.023438 L 301.179688 374.4375 L 302.773438 372.84375 L 301.179688 371.25 Z M 302.765625 369.664062 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 429.207031 368.828125 L 430.804688 370.421875 L 432.398438 368.828125 L 433.980469 370.414062 L 432.386719 372.007812 L 433.980469 373.601562 L 432.398438 375.1875 L 430.804688 373.59375 L 429.207031 375.1875 L 427.625 373.601562 L 429.21875 372.007812 L 427.625 370.414062 Z M 429.207031 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 413.238281 371.683594 L 414.832031 373.277344 L 416.425781 371.683594 L 418.011719 373.269531 L 416.414062 374.863281 L 418.011719 376.457031 L 416.425781 378.042969 L 414.832031 376.449219 L 413.238281 378.042969 L 411.652344 376.457031 L 413.246094 374.863281 L 411.652344 373.269531 Z M 413.238281 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 409.242188 353.121094 L 410.839844 354.714844 L 412.433594 353.121094 L 414.015625 354.707031 L 412.421875 356.300781 L 414.015625 357.894531 L 412.433594 359.476562 L 410.839844 357.882812 L 409.242188 359.476562 L 407.660156 357.894531 L 409.253906 356.300781 L 407.660156 354.707031 Z M 409.242188 353.121094 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 451.835938 370.257812 L 453.429688 371.851562 L 455.023438 370.257812 L 456.609375 371.839844 L 455.015625 373.4375 L 456.609375 375.03125 L 455.023438 376.613281 L 453.429688 375.019531 L 451.835938 376.613281 L 450.25 375.03125 L 451.84375 373.4375 L 450.25 371.839844 Z M 451.835938 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 458.492188 368.828125 L 460.085938 370.421875 L 461.679688 368.828125 L 463.261719 370.414062 L 461.667969 372.007812 L 463.261719 373.601562 L 461.679688 375.1875 L 460.085938 373.59375 L 458.492188 375.1875 L 456.90625 373.601562 L 458.5 372.007812 L 456.90625 370.414062 Z M 458.492188 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 352.011719 368.828125 L 353.605469 370.421875 L 355.199219 368.828125 L 356.785156 370.414062 L 355.191406 372.007812 L 356.785156 373.601562 L 355.199219 375.1875 L 353.605469 373.59375 L 352.011719 375.1875 L 350.425781 373.601562 L 352.019531 372.007812 L 350.425781 370.414062 Z M 352.011719 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 410.574219 365.972656 L 412.167969 367.566406 L 413.761719 365.972656 L 415.347656 367.558594 L 413.753906 369.152344 L 415.347656 370.746094 L 413.761719 372.332031 L 412.167969 370.734375 L 410.574219 372.332031 L 408.992188 370.746094 L 410.585938 369.152344 L 408.992188 367.558594 Z M 410.574219 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 348.019531 370.257812 L 349.613281 371.851562 L 351.207031 370.257812 L 352.792969 371.839844 L 351.199219 373.4375 L 352.792969 375.03125 L 351.207031 376.613281 L 349.613281 375.019531 L 348.019531 376.613281 L 346.433594 375.03125 L 348.027344 373.4375 L 346.433594 371.839844 Z M 348.019531 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 457.160156 367.402344 L 458.753906 368.996094 L 460.347656 367.402344 L 461.933594 368.984375 L 460.339844 370.578125 L 461.933594 372.171875 L 460.347656 373.757812 L 458.753906 372.164062 L 457.160156 373.757812 L 455.574219 372.171875 L 457.167969 370.578125 L 455.574219 368.984375 Z M 457.160156 367.402344 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 374.636719 367.402344 L 376.234375 368.996094 L 377.828125 367.402344 L 379.410156 368.984375 L 377.816406 370.578125 L 379.410156 372.171875 L 377.828125 373.757812 L 376.234375 372.164062 L 374.636719 373.757812 L 373.054688 372.171875 L 374.648438 370.578125 L 373.054688 368.984375 Z M 374.636719 367.402344 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 414.566406 370.257812 L 416.164062 371.851562 L 417.757812 370.257812 L 419.339844 371.839844 L 417.746094 373.4375 L 419.339844 375.03125 L 417.757812 376.613281 L 416.164062 375.019531 L 414.566406 376.613281 L 412.984375 375.03125 L 414.578125 373.4375 L 412.984375 371.839844 Z M 414.566406 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 446.511719 370.257812 L 448.105469 371.851562 L 449.699219 370.257812 L 451.285156 371.839844 L 449.691406 373.4375 L 451.285156 375.03125 L 449.699219 376.613281 L 448.105469 375.019531 L 446.511719 376.613281 L 444.925781 375.03125 L 446.519531 373.4375 L 444.925781 371.839844 Z M 446.511719 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 452.28125 368.601562 L 453.875 370.195312 L 455.46875 368.601562 L 457.050781 370.183594 L 455.457031 371.777344 L 457.050781 373.371094 L 455.46875 374.957031 L 453.875 373.363281 L 452.28125 374.957031 L 450.695312 373.371094 L 452.289062 371.777344 L 450.695312 370.183594 Z M 452.28125 368.601562 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 427.878906 370.257812 L 429.472656 371.851562 L 431.066406 370.257812 L 432.652344 371.839844 L 431.058594 373.4375 L 432.652344 375.03125 L 431.066406 376.613281 L 429.472656 375.019531 L 427.878906 376.613281 L 426.292969 375.03125 L 427.886719 373.4375 L 426.292969 371.839844 Z M 427.878906 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 209.59375 218.890625 L 211.191406 220.484375 L 212.785156 218.890625 L 214.367188 220.472656 L 212.773438 222.066406 L 214.367188 223.664062 L 212.785156 225.246094 L 211.191406 223.652344 L 209.59375 225.246094 L 208.011719 223.664062 L 209.605469 222.066406 L 208.011719 220.472656 Z M 209.59375 218.890625 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 218.914062 103.222656 L 220.507812 104.816406 L 222.101562 103.222656 L 223.6875 104.804688 L 222.089844 106.398438 L 223.6875 107.996094 L 222.101562 109.578125 L 220.507812 107.984375 L 218.914062 109.578125 L 217.328125 107.996094 L 218.921875 106.398438 L 217.328125 104.804688 Z M 218.914062 103.222656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 403.921875 370.257812 L 405.515625 371.851562 L 407.109375 370.257812 L 408.691406 371.839844 L 407.097656 373.4375 L 408.691406 375.03125 L 407.109375 376.613281 L 405.515625 375.019531 L 403.921875 376.613281 L 402.335938 375.03125 L 403.929688 373.4375 L 402.335938 371.839844 Z M 403.921875 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 333.378906 365.972656 L 334.972656 367.566406 L 336.566406 365.972656 L 338.152344 367.558594 L 336.554688 369.152344 L 338.152344 370.746094 L 336.566406 372.332031 L 334.972656 370.734375 L 333.378906 372.332031 L 331.792969 370.746094 L 333.386719 369.152344 L 331.792969 367.558594 Z M 333.378906 365.972656 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 413.238281 371.683594 L 414.832031 373.277344 L 416.425781 371.683594 L 418.011719 373.269531 L 416.414062 374.863281 L 418.011719 376.457031 L 416.425781 378.042969 L 414.832031 376.449219 L 413.238281 378.042969 L 411.652344 376.457031 L 413.246094 374.863281 L 411.652344 373.269531 Z M 413.238281 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 309.417969 371.683594 L 311.015625 373.277344 L 312.609375 371.683594 L 314.191406 373.269531 L 312.597656 374.863281 L 314.191406 376.457031 L 312.609375 378.042969 L 311.015625 376.449219 L 309.417969 378.042969 L 307.835938 376.457031 L 309.429688 374.863281 L 307.835938 373.269531 Z M 309.417969 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 421.222656 368.828125 L 422.816406 370.421875 L 424.410156 368.828125 L 425.996094 370.414062 L 424.402344 372.007812 L 425.996094 373.601562 L 424.410156 375.1875 L 422.816406 373.59375 L 421.222656 375.1875 L 419.636719 373.601562 L 421.234375 372.007812 L 419.636719 370.414062 Z M 421.222656 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 350.679688 367.402344 L 352.273438 368.996094 L 353.867188 367.402344 L 355.453125 368.984375 L 353.859375 370.578125 L 355.453125 372.171875 L 353.867188 373.757812 L 352.273438 372.164062 L 350.679688 373.757812 L 349.097656 372.171875 L 350.691406 370.578125 L 349.097656 368.984375 Z M 350.679688 367.402344 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 385.285156 364.542969 L 386.878906 366.140625 L 388.476562 364.542969 L 390.058594 366.128906 L 388.464844 367.722656 L 390.058594 369.316406 L 388.476562 370.902344 L 386.878906 369.308594 L 385.285156 370.902344 L 383.703125 369.316406 L 385.296875 367.722656 L 383.703125 366.128906 Z M 385.285156 364.542969 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 558.316406 370.257812 L 559.910156 371.851562 L 561.503906 370.257812 L 563.085938 371.839844 L 561.492188 373.4375 L 563.085938 375.03125 L 561.503906 376.613281 L 559.910156 375.019531 L 558.316406 376.613281 L 556.730469 375.03125 L 558.324219 373.4375 L 556.730469 371.839844 Z M 558.316406 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 361.328125 370.257812 L 362.921875 371.851562 L 364.515625 370.257812 L 366.101562 371.839844 L 364.507812 373.4375 L 366.101562 375.03125 L 364.515625 376.613281 L 362.921875 375.019531 L 361.328125 376.613281 L 359.742188 375.03125 L 361.339844 373.4375 L 359.742188 371.839844 Z M 361.328125 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 490.433594 371.683594 L 492.027344 373.277344 L 493.621094 371.683594 L 495.207031 373.269531 L 493.613281 374.863281 L 495.207031 376.457031 L 493.621094 378.042969 L 492.027344 376.449219 L 490.433594 378.042969 L 488.851562 376.457031 L 490.445312 374.863281 L 488.851562 373.269531 Z M 490.433594 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 475.792969 333.128906 L 477.386719 334.722656 L 478.980469 333.128906 L 480.566406 334.714844 L 478.972656 336.308594 L 480.566406 337.902344 L 478.980469 339.488281 L 477.386719 337.890625 L 475.792969 339.488281 L 474.207031 337.902344 L 475.804688 336.308594 L 474.207031 334.714844 Z M 475.792969 333.128906 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 374.636719 367.402344 L 376.234375 368.996094 L 377.828125 367.402344 L 379.410156 368.984375 L 377.816406 370.578125 L 379.410156 372.171875 L 377.828125 373.757812 L 376.234375 372.164062 L 374.636719 373.757812 L 373.054688 372.171875 L 374.648438 370.578125 L 373.054688 368.984375 Z M 374.636719 367.402344 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 353.34375 370.257812 L 354.9375 371.851562 L 356.53125 370.257812 L 358.117188 371.839844 L 356.519531 373.4375 L 358.117188 375.03125 L 356.53125 376.613281 L 354.9375 375.019531 L 353.34375 376.613281 L 351.757812 375.03125 L 353.351562 373.4375 L 351.757812 371.839844 Z M 353.34375 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 406.582031 370.257812 L 408.175781 371.851562 L 409.769531 370.257812 L 411.355469 371.839844 L 409.761719 373.4375 L 411.355469 375.03125 L 409.769531 376.613281 L 408.175781 375.019531 L 406.582031 376.613281 L 404.996094 375.03125 L 406.589844 373.4375 L 404.996094 371.839844 Z M 406.582031 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 465.144531 370.257812 L 466.738281 371.851562 L 468.332031 370.257812 L 469.917969 371.839844 L 468.324219 373.4375 L 469.917969 375.03125 L 468.332031 376.613281 L 466.738281 375.019531 L 465.144531 376.613281 L 463.5625 375.03125 L 465.15625 373.4375 L 463.5625 371.839844 Z M 465.144531 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 487.773438 371.683594 L 489.367188 373.277344 L 490.960938 371.683594 L 492.546875 373.269531 L 490.953125 374.863281 L 492.546875 376.457031 L 490.960938 378.042969 L 489.367188 376.449219 L 487.773438 378.042969 L 486.1875 376.457031 L 487.78125 374.863281 L 486.1875 373.269531 Z M 487.773438 371.683594 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 387.949219 370.257812 L 389.542969 371.851562 L 391.136719 370.257812 L 392.722656 371.839844 L 391.128906 373.4375 L 392.722656 375.03125 L 391.136719 376.613281 L 389.542969 375.019531 L 387.949219 376.613281 L 386.363281 375.03125 L 387.957031 373.4375 L 386.363281 371.839844 Z M 387.949219 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 350.679688 370.257812 L 352.273438 371.851562 L 353.867188 370.257812 L 355.453125 371.839844 L 353.859375 373.4375 L 355.453125 375.03125 L 353.867188 376.613281 L 352.273438 375.019531 L 350.679688 376.613281 L 349.097656 375.03125 L 350.691406 373.4375 L 349.097656 371.839844 Z M 350.679688 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 348.019531 370.257812 L 349.613281 371.851562 L 351.207031 370.257812 L 352.792969 371.839844 L 351.199219 373.4375 L 352.792969 375.03125 L 351.207031 376.613281 L 349.613281 375.019531 L 348.019531 376.613281 L 346.433594 375.03125 L 348.027344 373.4375 L 346.433594 371.839844 Z M 348.019531 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 385.285156 367.402344 L 386.878906 368.996094 L 388.476562 367.402344 L 390.058594 368.984375 L 388.464844 370.578125 L 390.058594 372.171875 L 388.476562 373.757812 L 386.878906 372.164062 L 385.285156 373.757812 L 383.703125 372.171875 L 385.296875 370.578125 L 383.703125 368.984375 Z M 385.285156 367.402344 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 378.632812 368.828125 L 380.226562 370.421875 L 381.820312 368.828125 L 383.402344 370.414062 L 381.808594 372.007812 L 383.402344 373.601562 L 381.820312 375.1875 L 380.226562 373.59375 L 378.632812 375.1875 L 377.046875 373.601562 L 378.640625 372.007812 L 377.046875 370.414062 Z M 378.632812 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 442.519531 368.828125 L 444.113281 370.421875 L 445.707031 368.828125 L 447.292969 370.414062 L 445.699219 372.007812 L 447.292969 373.601562 L 445.707031 375.1875 L 444.113281 373.59375 L 442.519531 375.1875 L 440.933594 373.601562 L 442.527344 372.007812 L 440.933594 370.414062 Z M 442.519531 368.828125 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 342.695312 370.257812 L 344.289062 371.851562 L 345.882812 370.257812 L 347.46875 371.839844 L 345.875 373.4375 L 347.46875 375.03125 L 345.882812 376.613281 L 344.289062 375.019531 L 342.695312 376.613281 L 341.109375 375.03125 L 342.703125 373.4375 L 341.109375 371.839844 Z M 342.695312 370.257812 "/>
<path fill-rule="nonzero" fill="rgb(0%, 44.705883%, 69.803923%)" fill-opacity="0.8" d="M 365.320312 371.683594 L 366.914062 373.277344 L 368.511719 371.683594 L 370.09375 373.269531 L 368.5 374.863281 L 370.09375 376.457031 L 368.511719 378.042969 L 366.914062 376.449219 L 365.320312 378.042969 L 363.738281 376.457031 L 365.332031 374.863281 L 363.738281 373.269531 Z M 365.320312 371.683594 "/>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-0-f385e395" x="476.056732" y="370.16275"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-1-f385e395" x="483.840729" y="370.16275"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-3-f385e395" x="392.204376" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="399.988403" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="313.676025" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-1-f385e395" x="321.460052" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-0-f385e395" x="391.53891" y="364.553619"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-0-f385e395" x="399.322906" y="364.553619"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="364.253632" y="360.387665"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="372.037628" y="360.387665"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="380.757904" y="370.122009"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="388.541901" y="370.122009"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-7-f385e395" x="366.915588" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="374.699615" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-4-f385e395" x="352.940216" y="365.559906"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-8-f385e395" x="360.724213" y="365.559906"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-1-f385e395" x="466.07431" y="367.648346"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-1-f385e395" x="473.858307" y="367.648346"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-2-f385e395" x="346.950775" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-5-f385e395" x="354.734741" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="362.518768" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-2-f385e395" x="350.411346" y="368.199066"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="358.195343" y="368.199066"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-7-f385e395" x="365.97934" y="368.199066"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-2-f385e395" x="357.598694" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-2-f385e395" x="365.38269" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="373.166687" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-2-f385e395" x="326.985931" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-3-f385e395" x="334.769928" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-4-f385e395" x="342.553925" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-2-f385e395" x="417.493195" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-15-0-f385e395" x="425.277191" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-16-0-f385e395" x="433.061218" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-16-1-f385e395" x="377.563538" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-5-f385e395" x="385.347534" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-3-f385e395" x="393.1315" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-6-f385e395" x="428.141113" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-8-f385e395" x="435.92511" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-3-f385e395" x="443.709137" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-2-f385e395" x="362.922638" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="370.706635" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-4-f385e395" x="378.490662" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-15-1-f385e395" x="407.377655" y="370.12204"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-6-f385e395" x="415.161682" y="370.12204"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-16-2-f385e395" x="422.945709" y="370.12204"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-1-f385e395" x="401.521332" y="351.819702"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-7-f385e395" x="409.305328" y="351.819702"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-0-f385e395" x="417.089325" y="351.819702"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-17-0-f385e395" x="296.373169" y="221.871979"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-18-0-f385e395" x="304.157181" y="221.871979"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-19-0-f385e395" x="311.941162" y="221.871979"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="393.5354" y="359.199921"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-3-f385e395" x="401.319397" y="359.199921"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="409.103394" y="359.199921"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-7-f385e395" x="515.98642" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-5-f385e395" x="523.770416" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="531.554413" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="501.34552" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-8-f385e395" x="509.129517" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="516.913544" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-20-0-f385e395" x="312.345032" y="219.015976"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-21-0-f385e395" x="320.129028" y="219.015976"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-22-0-f385e395" x="327.913055" y="219.015976"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-7-f385e395" x="392.204376" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="399.988403" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-6-f385e395" x="407.77243" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-2-f385e395" x="419.489716" y="368.78241"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="427.273682" y="368.78241"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-2-f385e395" x="435.057678" y="368.78241"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-9-f385e395" x="421.486145" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="429.270172" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-7-f385e395" x="437.054199" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-23-0-f385e395" x="494.690613" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-2-f385e395" x="502.474579" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-3-f385e395" x="510.258575" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-3-f385e395" x="417.493195" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-15-2-f385e395" x="425.277191" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-16-3-f385e395" x="433.061218" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="420.155182" y="363.243652"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="427.939178" y="363.243652"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="435.723175" y="363.243652"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-3-f385e395" x="390.873413" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-16-4-f385e395" x="398.65744" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-15-3-f385e395" x="406.441406" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-4-f385e395" x="372.239563" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-0-f385e395" x="380.02356" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-2-f385e395" x="387.807556" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-2-f385e395" x="354.936707" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="362.720703" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-10-f385e395" x="370.5047" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-4-f385e395" x="430.803101" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-5-f385e395" x="438.587097" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-1-f385e395" x="446.371094" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-2-f385e395" x="381.556519" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="389.340485" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="397.124481" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-15-4-f385e395" x="326.985901" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-7-f385e395" x="334.769928" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-2-f385e395" x="342.553925" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="450.102448" y="369.270508"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-6-f385e395" x="457.886444" y="369.270508"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="465.670441" y="369.270508"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-3-f385e395" x="368.246582" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-6-f385e395" x="376.030609" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="383.814606" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="362.922638" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="370.706635" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-5-f385e395" x="378.490662" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-24-0-f385e395" x="78.090918" y="116.200218"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-25-0-f385e395" x="85.874918" y="116.200218"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-7-2-f385e395" x="93.65892" y="116.200218"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-3-f385e395" x="373.570557" y="367.944611"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="381.354553" y="367.944611"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="389.13855" y="367.944611"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-3-f385e395" x="435.239716" y="368.726807"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-0-f385e395" x="443.023712" y="368.726807"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-2-f385e395" x="450.807739" y="368.726807"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-26-0-f385e395" x="111.365658" y="69.076328"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-27-0-f385e395" x="119.149658" y="69.076328"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-27-1-f385e395" x="126.933655" y="69.076328"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-28-0-f385e395" x="180.577103" y="49.084375"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-29-0-f385e395" x="188.361084" y="49.084375"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-30-0-f385e395" x="196.145111" y="49.084375"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-3-f385e395" x="374.90152" y="354.67569"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="382.685547" y="354.67569"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-2-f385e395" x="390.469543" y="354.67569"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-11-f385e395" x="328.760559" y="367.607727"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-2-f385e395" x="336.544586" y="367.607727"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-8-f385e395" x="344.328583" y="367.607727"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-11-f385e395" x="405.957947" y="369.479736"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="413.741943" y="369.479736"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="421.52597" y="369.479736"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="384.883972" y="370.80188"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-9-f385e395" x="392.667938" y="370.80188"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-8-f385e395" x="400.451965" y="370.80188"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-17-1-f385e395" x="333.640869" y="216.160004"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-17-2-f385e395" x="341.424866" y="216.160004"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-31-0-f385e395" x="349.208893" y="216.160004"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="304.3591" y="369.792145"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="312.143097" y="369.792145"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-1-f385e395" x="319.927124" y="369.792145"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="430.803101" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="438.587097" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="446.371094" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-0-f385e395" x="414.831207" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-23-1-f385e395" x="422.615234" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-4-f385e395" x="430.3992" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-7-f385e395" x="410.838287" y="353.247681"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-8-f385e395" x="418.622253" y="353.247681"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="426.40625" y="353.247681"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="453.429932" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-8-f385e395" x="461.213898" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="468.997894" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-7-f385e395" x="460.084869" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-12-f385e395" x="467.868835" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="475.652863" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="353.605713" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="361.389709" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="369.173706" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-8-f385e395" x="412.16925" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-1-f385e395" x="419.953247" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-4-f385e395" x="427.737244" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="349.612732" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="357.396759" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-9-f385e395" x="365.180725" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="458.753876" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-11-f385e395" x="466.537872" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="474.321869" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="376.232544" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-8-f385e395" x="384.01651" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="391.800537" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-4-f385e395" x="416.162201" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-3-f385e395" x="423.946228" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="431.730225" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-7-f385e395" x="448.105957" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-11-f385e395" x="455.889923" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-7-f385e395" x="463.67395" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-5-f385e395" x="453.873596" y="368.726807"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-23-2-f385e395" x="461.657593" y="368.726807"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-23-2-f385e395" x="469.441589" y="368.726807"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-7-f385e395" x="429.472107" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-12-f385e395" x="437.256104" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="445.0401" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-32-0-f385e395" x="211.189835" y="219.015976"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-33-0-f385e395" x="218.973862" y="219.015976"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-20-1-f385e395" x="226.757843" y="219.015976"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-3-1-f385e395" x="220.50679" y="103.348251"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-3-f385e395" x="228.290771" y="103.348251"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="236.074783" y="103.348251"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-8-f385e395" x="405.514313" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-6-f385e395" x="413.298279" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="421.082306" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-5-f385e395" x="334.971863" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-8-f385e395" x="342.755859" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-12-7-f385e395" x="350.539856" y="366.09967"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-6-f385e395" x="414.831207" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-23-2-f385e395" x="422.615234" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-5-f385e395" x="430.3992" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-6-f385e395" x="311.014069" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-3-f385e395" x="318.798065" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-7-f385e395" x="326.582062" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-8-f385e395" x="422.817169" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-5-f385e395" x="430.601166" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="438.385162" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-1-f385e395" x="352.27475" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-8-f385e395" x="360.058716" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="367.842712" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-8-f385e395" x="386.880432" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-8-f385e395" x="394.664459" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-7-f385e395" x="402.448456" y="364.671661"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="559.909058" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="567.693054" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-34-0-f385e395" x="575.477112" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="362.922638" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="370.706635" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-2-f385e395" x="378.490662" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-4-f385e395" x="492.028595" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-4-f385e395" x="499.812622" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-8-f385e395" x="507.596619" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="477.387726" y="333.255737"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-9-f385e395" x="485.171692" y="333.255737"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="492.955719" y="333.255737"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="376.232544" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-9-f385e395" x="384.01651" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-7-f385e395" x="391.800537" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="354.936707" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="362.720703" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-8-f385e395" x="370.5047" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="408.17627" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="415.960297" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-12-f385e395" x="423.744263" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="466.739807" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="474.523834" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-5-f385e395" x="482.3078" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-23-3-f385e395" x="489.366638" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-14-3-f385e395" x="497.150604" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-2-f385e395" x="504.934631" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="389.542419" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-3-f385e395" x="397.326447" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-6-f385e395" x="405.110413" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-8-f385e395" x="352.27475" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-3-f385e395" x="360.058716" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-9-f385e395" x="367.842712" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="349.612732" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="357.396759" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-3-f385e395" x="365.180725" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-12-f385e395" x="386.880432" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-3-f385e395" x="394.664459" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-10-f385e395" x="402.448456" y="367.527649"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="380.225494" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="388.009491" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-5-f385e395" x="395.793518" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-11-f385e395" x="444.112976" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-3-f385e395" x="451.897003" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-4-f385e395" x="459.680969" y="368.955658"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-0-12-f385e395" x="344.288788" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-1-4-f385e395" x="352.072784" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-4-1-f385e395" x="359.856812" y="370.383636"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-1-f385e395" x="366.915588" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-8-f385e395" x="374.699615" y="371.811615"/>
</g>
<g fill="rgb(50.196081%, 50.196081%, 50.196081%)" fill-opacity="0.5">
<use xlink:href="#glyph-13-1-f385e395" x="382.483612" y="371.811615"/>
</g>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 66.113281 391.5 L 66.113281 396.5 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 215.183594 391.5 L 215.183594 396.5 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 364.253906 391.5 L 364.253906 396.5 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 513.324219 391.5 L 513.324219 396.5 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 53.5 374.863281 L 48.5 374.863281 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 53.5 261.773438 L 48.5 261.773438 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 53.5 148.679688 L 48.5 148.679688 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 53.5 391 L 584.5 391 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 54 391.5 L 54 35.5 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 53.5 36 L 584.5 36 "/>
<path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="1.154701" d="M 584 391.5 L 584 35.5 "/>
</svg>
### A Pluto.jl notebook ###
# v0.19.46
using Markdown
using InteractiveUtils
# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error).
macro bind(def, element)
quote
local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end
local el = $(esc(element))
global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el)
el
end
end
# ╔═╡ d3c95316-7ffb-11ef-1e2c-2934f89a2336
begin
using PlutoUI
using HypertextLiteral: @htl
using SQLite
using DBInterface
using DataFrames
using Dates
end
# ╔═╡ 33b70516-7687-463b-a654-2cde3f2538aa
md"""
# 試験結果一覧の取得
"""
# ╔═╡ 15d55f6e-b8ce-4916-a8fa-c9b07b0cc86a
md"""
PSBoard idを入力: $(@bind psbid NumberField(0:999999, default = 164))
"""
# ╔═╡ 8440a1de-12fe-4bb7-907f-52f933934ec0
md"""
1回試験
"""
# ╔═╡ 0299d5b7-8b9f-44ae-a2cf-3db36e1f857a
md"""
100回試験
"""
# ╔═╡ 7a11e460-8d6f-454c-8fe6-33c59eeb4937
md"""
run
"""
# ╔═╡ 1287b479-cce9-4eb1-949b-9da7d0329c24
md"""
出荷状況
""";
# ╔═╡ 1d90c687-7e67-43ed-b5bf-68ef9040dc95
md"""
# 100回じゃない試験
"""
# ╔═╡ f1ce8e2a-f54e-4462-953f-66c6b2e82cdb
md"""
# Clock fail
"""
# ╔═╡ ec2d40f7-1e06-414d-9a77-9e3489ba271c
md"""
# その他コード
"""
# ╔═╡ 31b74828-fdc7-4b04-8be0-ea44820f9555
TableOfContents()
# ╔═╡ bb167a5e-b23a-4f05-9ba6-368a48f9c120
# @htl("""
# <style>
# @media screen {
# main {
# margin: 0 auto;
# max-width: 1000px;
# padding-left: max(160px, 10%);
# padding-right: max(160px, 10%);
# }
# }
# </style>
# """)
# ╔═╡ 3a1aa3d8-bea0-46cb-b07e-88e9484e75c6
function cols_visibility_toggle(df)
cols = names(df)
single_show_cols = Dict(cols .=> fill(true, length(cols)))
PlutoUI.combine() do Child
@htl("""
<table>
<tr>
<th> コラム </th>
<th> 表示 </th>
</tr>
$([
@htl("""
<tr>
<td> $(name) </td>
<td> $(Child(CheckBox(default = true))) </td>
</tr>
""")
for name in cols
])
</table>
""")
end
end
# ╔═╡ 4d62900a-0810-49d1-8632-a9e7544f381b
db = SQLite.DB("../psboard_qaqc.db")
# ╔═╡ 911a5ae8-5800-4d20-9d73-bcc7205d3501
SQLite.tables(db)
# ╔═╡ 6da1efbe-e5a0-4376-b8ea-ed21f09da084
qaqc_single_result = DBInterface.execute(
db,
sql"""
select * from qaqc_single_run_results
"""
) |> DataFrame
# ╔═╡ a85b4f19-82e4-40d5-af9f-d5286578b1fb
@bind single_result_for_id_show_cols cols_visibility_toggle(qaqc_single_result)
# ╔═╡ 9513f017-7905-495d-a7eb-6ca5927308dd
single_result_for_id = filter(
:psboard_id => ==(psbid),
qaqc_single_result,
);
# ╔═╡ 5954d52e-f939-4bff-be2b-4fe261ae15de
filter(
:clock => !=(1),
qaqc_single_result
)[!, [:id, :runid, :psboard_id, :clock, :lvds_tx_skew, :note]]
# ╔═╡ 23167971-4671-4f18-84df-72a7dc5938e1
qaqc_positions = DBInterface.execute(
db,
sql"""
select * from qaqc_positions
"""
) |> DataFrame
# ╔═╡ 192c47a3-7202-4351-8638-ec49ecb901c5
single_result_for_id_show = let
df = leftjoin(
single_result_for_id,
qaqc_positions[:, [:id, :name]],
on = :position => :id,
)[:, Not(:position)]
rename!(df, :name => :position)
df
end;
# ╔═╡ a7c1ae88-34dc-445c-ad2c-3879192d13c7
single_result_for_id_show[!, collect(single_result_for_id_show_cols)]
# ╔═╡ 62ddeb91-e007-4407-b4dc-1b7392480781
qaqc_runs = let
df = DBInterface.execute(
db,
sql"""
select * from qaqc_runs
"""
) |> DataFrame
transform!(df, :run_datetime => ByRow(passmissing(DateTime)) => :run_datetime)
transform!(
df,
:shiftscript_ver => ByRow(passmissing(VersionNumber)) => :shiftscript_ver
)
df
end
# ╔═╡ a77ccf6b-db67-4a07-833a-210afccc39e5
qaqc_extra_run_results = DBInterface.execute(
db,
sql"""
select * from qaqc_extra_run_results
"""
) |> DataFrame
# ╔═╡ 1e9ab6b0-b25d-44ad-92ae-f12f92d91d5e
extra_result_for_id = filter(
:psboard_id => ==(psbid),
qaqc_extra_run_results,
);
# ╔═╡ ed7c40fe-f966-4afb-a962-896c9f109946
filter(
:id => ([single_result_for_id.runid; extra_result_for_id.runid;]),
qaqc_runs
)
# ╔═╡ 51370abb-f0fb-4ae0-b488-bf9fc776577c
extra_result_for_id_show = let
df = leftjoin(
extra_result_for_id,
qaqc_positions[:, [:id, :name]],
on = :position => :id,
)[:, Not(:position)]
rename!(df, :name => :position)
df
end;
# ╔═╡ 45828bb4-e9f5-46d5-8f48-88284f318cc4
@bind extra_result_for_id_show_cols cols_visibility_toggle(extra_result_for_id_show)
# ╔═╡ 6ceb198e-edd3-4954-b1ff-beef33c3f205
extra_result_for_id_show[!, collect(extra_result_for_id_show_cols)]
# ╔═╡ 0518af44-878e-4052-b4d4-e7fb3c35efea
let
df = filter(
:num_tests => !=(100),
qaqc_extra_run_results,
)
unique!(df, :runid).runid
end
# ╔═╡ e312d48d-9d8d-4f42-b134-7fe3023df270
qaqc_resistance_check = let
df = DBInterface.execute(
db,
sql"""
select * from qaqc_resistance_check
"""
) |> DataFrame
transform!(
df,
:passed => ByRow(Bool) => :passed
)
df
end
# ╔═╡ 79703745-6c0e-4201-a58d-e75994fab4e4
qaqc_dispatch = DBInterface.execute(
db,
sql"""
select * from qaqc_dispatch
"""
) |> DataFrame
# ╔═╡ b53ede8c-414e-40b5-8f30-fedf47a530ac
let
passed = filter(
:psb_id => ==(psbid),
qaqc_resistance_check
).passed
resistance_status = if isempty(passed)
""
elseif all(passed)
"OK"
else
"FAIL"
end
dispatch_status = let
if combine(
qaqc_dispatch,
:psb_id => (v -> any(==(psbid), v)) => :dispatched
).dispatched |> first
"済"
else
"未"
end
end
md"""
抵抗値テスト: $(resistance_status) \
出荷状況: $(dispatch_status)
"""
end
# ╔═╡ 199b45f6-1e63-4392-af6a-6a5ed83bf467
filter(
:psb_id => ==(psbid),
qaqc_dispatch
);
# ╔═╡ 68acb602-dc99-4bb7-9aba-34b47ff875fc
DBInterface.execute(
db,
sql"""
select * from ps_boards
""",
) |> DataFrame
# ╔═╡ 00000000-0000-0000-0000-000000000001
PLUTO_PROJECT_TOML_CONTENTS = """
[deps]
DBInterface = "a10d1c49-ce27-4219-8d33-6db1a4562965"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
HypertextLiteral = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
SQLite = "0aa819cd-b072-5ff4-a722-6bc24af294d9"
[compat]
DBInterface = "~2.6.1"
DataFrames = "~1.7.0"
HypertextLiteral = "~0.9.5"
PlutoUI = "~0.7.60"
SQLite = "~1.6.1"
"""
# ╔═╡ 00000000-0000-0000-0000-000000000002
PLUTO_MANIFEST_TOML_CONTENTS = """
# This file is machine-generated - editing it directly is not advised
julia_version = "1.10.5"
manifest_format = "2.0"
project_hash = "f94b8dc124480c7dc21fffae2618aeb81f5d3237"
[[deps.AbstractPlutoDingetjes]]
deps = ["Pkg"]
git-tree-sha1 = "6e1d2a35f2f90a4bc7c2ed98079b2ba09c35b83a"
uuid = "6e696c72-6542-2067-7265-42206c756150"
version = "1.3.2"
[[deps.ArgTools]]
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
version = "1.1.1"
[[deps.Artifacts]]
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
[[deps.Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
[[deps.ColorTypes]]
deps = ["FixedPointNumbers", "Random"]
git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d"
uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
version = "0.11.5"
[[deps.Compat]]
deps = ["TOML", "UUIDs"]
git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215"
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
version = "4.16.0"
weakdeps = ["Dates", "LinearAlgebra"]
[deps.Compat.extensions]
CompatLinearAlgebraExt = "LinearAlgebra"
[[deps.CompilerSupportLibraries_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "1.1.1+0"
[[deps.Crayons]]
git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15"
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
version = "4.1.1"
[[deps.DBInterface]]
git-tree-sha1 = "a444404b3f94deaa43ca2a58e18153a82695282b"
uuid = "a10d1c49-ce27-4219-8d33-6db1a4562965"
version = "2.6.1"
[[deps.DataAPI]]
git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.16.0"
[[deps.DataFrames]]
deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6"
uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
version = "1.7.0"
[[deps.DataStructures]]
deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.18.20"
[[deps.DataValueInterfaces]]
git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
version = "1.0.0"
[[deps.Dates]]
deps = ["Printf"]
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
[[deps.Downloads]]
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
version = "1.6.0"
[[deps.FileWatching]]
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
[[deps.FixedPointNumbers]]
deps = ["Statistics"]
git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172"
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
version = "0.8.5"
[[deps.Future]]
deps = ["Random"]
uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
[[deps.Hyperscript]]
deps = ["Test"]
git-tree-sha1 = "179267cfa5e712760cd43dcae385d7ea90cc25a4"
uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91"
version = "0.0.5"
[[deps.HypertextLiteral]]
deps = ["Tricks"]
git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653"
uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
version = "0.9.5"
[[deps.IOCapture]]
deps = ["Logging", "Random"]
git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770"
uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
version = "0.2.5"
[[deps.InlineStrings]]
git-tree-sha1 = "45521d31238e87ee9f9732561bfee12d4eebd52d"
uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48"
version = "1.4.2"
[deps.InlineStrings.extensions]
ArrowTypesExt = "ArrowTypes"
ParsersExt = "Parsers"
[deps.InlineStrings.weakdeps]
ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd"
Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
[[deps.InteractiveUtils]]
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
[[deps.InvertedIndices]]
git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038"
uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f"
version = "1.3.0"
[[deps.IteratorInterfaceExtensions]]
git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
uuid = "82899510-4779-5014-852e-03e436cf321d"
version = "1.0.0"
[[deps.JLLWrappers]]
deps = ["Artifacts", "Preferences"]
git-tree-sha1 = "f389674c99bfcde17dc57454011aa44d5a260a40"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.6.0"
[[deps.JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.4"
[[deps.LaTeXStrings]]
git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec"
uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
version = "1.3.1"
[[deps.LibCURL]]
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
version = "0.6.4"
[[deps.LibCURL_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
version = "8.4.0+0"
[[deps.LibGit2]]
deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
[[deps.LibGit2_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"]
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
version = "1.6.4+0"
[[deps.LibSSH2_jll]]
deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
version = "1.11.0+1"
[[deps.Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
[[deps.LinearAlgebra]]
deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
[[deps.Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
[[deps.MIMEs]]
git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb"
uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65"
version = "0.1.4"
[[deps.Markdown]]
deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
[[deps.MbedTLS_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
version = "2.28.2+1"
[[deps.Missings]]
deps = ["DataAPI"]
git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d"
uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
version = "1.2.0"
[[deps.Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
[[deps.MozillaCACerts_jll]]
uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
version = "2023.1.10"
[[deps.NetworkOptions]]
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
version = "1.2.0"
[[deps.OpenBLAS_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
version = "0.3.23+4"
[[deps.OrderedCollections]]
git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5"
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
version = "1.6.3"
[[deps.Parsers]]
deps = ["Dates", "PrecompileTools", "UUIDs"]
git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "2.8.1"
[[deps.Pkg]]
deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
version = "1.10.0"
[[deps.PlutoUI]]
deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"]
git-tree-sha1 = "eba4810d5e6a01f612b948c9fa94f905b49087b0"
uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
version = "0.7.60"
[[deps.PooledArrays]]
deps = ["DataAPI", "Future"]
git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3"
uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720"
version = "1.4.3"
[[deps.PrecompileTools]]
deps = ["Preferences"]
git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f"
uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
version = "1.2.1"
[[deps.Preferences]]
deps = ["TOML"]
git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6"
uuid = "21216c6a-2e73-6563-6e65-726566657250"
version = "1.4.3"
[[deps.PrettyTables]]
deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"]
git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34"
uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
version = "2.4.0"
[[deps.Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
[[deps.REPL]]
deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
[[deps.Random]]
deps = ["SHA"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
[[deps.Reexport]]
git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
uuid = "189a3867-3050-52da-a836-e630ba90ab69"
version = "1.2.2"
[[deps.SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
version = "0.7.0"
[[deps.SQLite]]
deps = ["DBInterface", "Random", "SQLite_jll", "Serialization", "Tables", "WeakRefStrings"]
git-tree-sha1 = "38b82dbc52b7db40bea182688c7a1103d06948a4"
uuid = "0aa819cd-b072-5ff4-a722-6bc24af294d9"
version = "1.6.1"
[[deps.SQLite_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "004fffbe2711abdc7263a980bbb1af9620781dd9"
uuid = "76ed43ae-9a5d-5a62-8c75-30186b810ce8"
version = "3.45.3+0"
[[deps.SentinelArrays]]
deps = ["Dates", "Random"]
git-tree-sha1 = "ff11acffdb082493657550959d4feb4b6149e73a"
uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c"
version = "1.4.5"
[[deps.Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
[[deps.Sockets]]
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
[[deps.SortingAlgorithms]]
deps = ["DataStructures"]
git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085"
uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
version = "1.2.1"
[[deps.SparseArrays]]
deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
version = "1.10.0"
[[deps.Statistics]]
deps = ["LinearAlgebra", "SparseArrays"]
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
version = "1.10.0"
[[deps.StringManipulation]]
deps = ["PrecompileTools"]
git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3"
uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e"
version = "0.4.0"
[[deps.SuiteSparse_jll]]
deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c"
version = "7.2.1+1"
[[deps.TOML]]
deps = ["Dates"]
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
version = "1.0.3"
[[deps.TableTraits]]
deps = ["IteratorInterfaceExtensions"]
git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
version = "1.0.1"
[[deps.Tables]]
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"]
git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297"
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
version = "1.12.0"
[[deps.Tar]]
deps = ["ArgTools", "SHA"]
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
version = "1.10.0"
[[deps.Test]]
deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[deps.Tricks]]
git-tree-sha1 = "7822b97e99a1672bfb1b49b668a6d46d58d8cbcb"
uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775"
version = "0.1.9"
[[deps.URIs]]
git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b"
uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
version = "1.5.1"
[[deps.UUIDs]]
deps = ["Random", "SHA"]
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
[[deps.Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
[[deps.WeakRefStrings]]
deps = ["DataAPI", "InlineStrings", "Parsers"]
git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23"
uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5"
version = "1.4.2"
[[deps.Zlib_jll]]
deps = ["Libdl"]
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
version = "1.2.13+1"
[[deps.libblastrampoline_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
version = "5.11.0+0"
[[deps.nghttp2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
version = "1.52.0+1"
[[deps.p7zip_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
version = "17.4.0+2"
"""
# ╔═╡ Cell order:
# ╟─33b70516-7687-463b-a654-2cde3f2538aa
# ╟─15d55f6e-b8ce-4916-a8fa-c9b07b0cc86a
# ╟─b53ede8c-414e-40b5-8f30-fedf47a530ac
# ╟─8440a1de-12fe-4bb7-907f-52f933934ec0
# ╟─a7c1ae88-34dc-445c-ad2c-3879192d13c7
# ╟─0299d5b7-8b9f-44ae-a2cf-3db36e1f857a
# ╟─6ceb198e-edd3-4954-b1ff-beef33c3f205
# ╟─7a11e460-8d6f-454c-8fe6-33c59eeb4937
# ╟─ed7c40fe-f966-4afb-a962-896c9f109946
# ╟─a85b4f19-82e4-40d5-af9f-d5286578b1fb
# ╟─45828bb4-e9f5-46d5-8f48-88284f318cc4
# ╟─192c47a3-7202-4351-8638-ec49ecb901c5
# ╟─51370abb-f0fb-4ae0-b488-bf9fc776577c
# ╟─1287b479-cce9-4eb1-949b-9da7d0329c24
# ╟─199b45f6-1e63-4392-af6a-6a5ed83bf467
# ╟─9513f017-7905-495d-a7eb-6ca5927308dd
# ╟─1e9ab6b0-b25d-44ad-92ae-f12f92d91d5e
# ╟─1d90c687-7e67-43ed-b5bf-68ef9040dc95
# ╠═0518af44-878e-4052-b4d4-e7fb3c35efea
# ╟─f1ce8e2a-f54e-4462-953f-66c6b2e82cdb
# ╠═5954d52e-f939-4bff-be2b-4fe261ae15de
# ╟─ec2d40f7-1e06-414d-9a77-9e3489ba271c
# ╠═d3c95316-7ffb-11ef-1e2c-2934f89a2336
# ╠═31b74828-fdc7-4b04-8be0-ea44820f9555
# ╠═bb167a5e-b23a-4f05-9ba6-368a48f9c120
# ╠═3a1aa3d8-bea0-46cb-b07e-88e9484e75c6
# ╠═4d62900a-0810-49d1-8632-a9e7544f381b
# ╠═911a5ae8-5800-4d20-9d73-bcc7205d3501
# ╠═6da1efbe-e5a0-4376-b8ea-ed21f09da084
# ╠═23167971-4671-4f18-84df-72a7dc5938e1
# ╠═62ddeb91-e007-4407-b4dc-1b7392480781
# ╠═a77ccf6b-db67-4a07-833a-210afccc39e5
# ╠═e312d48d-9d8d-4f42-b134-7fe3023df270
# ╠═79703745-6c0e-4201-a58d-e75994fab4e4
# ╠═68acb602-dc99-4bb7-9aba-34b47ff875fc
# ╟─00000000-0000-0000-0000-000000000001
# ╟─00000000-0000-0000-0000-000000000002
### A Pluto.jl notebook ###
# v0.19.46
using Markdown
using InteractiveUtils
# ╔═╡ 4aaa9fa2-7ecc-11ef-0802-71fd1f15839c
begin
using PlutoUI
using SQLite
using DBInterface
using TypedTables
using Tables
using DataFrames
using Dates
using Statistics
using Printf
using CairoMakie
end
# ╔═╡ 8721d160-bf3c-46ab-bffc-f32bfcdcfd50
PlutoUI.TableOfContents()
# ╔═╡ 76476999-2ee9-42be-9e28-b93401c19e7f
md"""
# Load DB
"""
# ╔═╡ 8a66db47-f100-48c0-9f1e-00e94b65fbce
db = SQLite.DB("../psboard_qaqc.db")
# ╔═╡ 7673a352-d850-4266-ad89-87af0199b096
SQLite.tables(db)
# ╔═╡ 0cffb5a1-54ba-425d-85d5-ad79384eb1dc
tbl = SQLite.tables(db)[1]
# ╔═╡ b2b6b879-b9ea-4adb-bab2-5a6fc721b5ec
tbl.schema
# ╔═╡ f0ea95af-abe4-42e2-a008-70669905c538
md"""
## get result for single runs
"""
# ╔═╡ c54583cf-7e48-42af-acf7-f777d04a36f7
single_run_result = let
df = DBInterface.execute(
db,
sql"""
select * from qaqc_single_run_table
"""
) |> DataFrame
transform!(
df,
:run_timestamp => ByRow(DateTime) => :run_timestamp
)
end
# ╔═╡ 9282f505-3623-4231-8032-b5465e5c19a4
md"""
# Histograms
## All skews for single runs
number of missings: $(nrow(filter(:lvds_tx_skew => ismissing, single_run_result)))
"""
# ╔═╡ 3d2d08b4-a170-49f8-a923-22d7d8c6def7
let
skews = single_run_result.lvds_tx_skew |> skipmissing |> collect
stephist(
skews,
bins = range(minimum(skews), maximum(skews), step = 1 / 57),
axis = (;
title = "LVDS skew histogram",
xlabel = "skew/ns",
)
)
end
# ╔═╡ 0e844b54-2e22-480c-9ce2-3f24042ac950
md"""
## Extract latest values for each psboard
- plus, skip if the measurement is too new (i.e., slave log is not processed)
"""
# ╔═╡ bedb3f4c-b087-485e-bfaf-7c60dd75005d
skews_for_each_board = combine(groupby(single_run_result, :psboard_id)) do sdf
if all(ismissing, sdf.lvds_tx_skew)
if any(>(Date(now()) - Day(1)), sdf.run_timestamp)
return (; lvds_tx_skew = missing, position = missing)
end
@info "all skew is missing" sdf sdf.result_note
end
row = if nrow(sdf) == 1
sdf[1, :]
else
sdf[argmax(sdf.run_timestamp), :]
end
# @info "" sdf Tables.schema(sdf) names(sdf)
(; lvds_tx_skew = row.lvds_tx_skew, position = row.position)
end
# ╔═╡ b23f3f63-4c6f-476f-aab8-22069940325e
let
skews = skews_for_each_board.lvds_tx_skew |> skipmissing |> collect
fig, ax, shist = stephist(
skews,
bins = range(minimum(skews), maximum(skews), step = 4 / 57),
axis = (;
title = "skews of the latest measurements for each board",
xlabel = "skew / ns",
)
)
Legend(
fig[1, 1],
[shist,],
["n = $(length(skews)), μ = $(@sprintf "%.2g" mean(skews)), σ = $(@sprintf "%.2g" std(skews))",],
tellheight = false,
tellwidth = false,
margin = (10, 10, 10, 10),
halign = :left,
valign = :top,
)
fig
end
# ╔═╡ 1306b44d-781f-4948-ba39-734c92dc6b8c
md"""
## Further research on abnormal skew result
"""
# ╔═╡ 6a791331-a896-462e-90c3-1eea3d72e0db
filter(:lvds_tx_skew => (x -> !ismissing(x) && x < -2), skews_for_each_board)
# ╔═╡ 2e47c2b0-4568-4ac2-9926-239de48b0ca3
filter(
:psboard_id => ==(444),
single_run_result,
) |> Tables.columntable
# ╔═╡ 099fae93-0fe6-40f1-bdc5-d23738f3f854
md"""
I checked the slave log, and it looked like this:
```
10.000000000000000 0.000000 0.000000
10.017857142857142 0.000000 0.000000
10.035714285714286 0.000000 0.000000
10.053571428571429 0.000000 0.000000
10.071428571428571 0.000000 0.000000
10.089285714285714 0.000000 0.000000
10.107142857142858 1000.000000 0.000000
10.125000000000000 1000.000000 0.000000
10.142857142857142 1000.000000 0.000000
10.160714285714286 1000.000000 0.000000
10.178571428571429 1000.000000 0.000000
10.196428571428571 1000.000000 0.000000
10.214285714285714 1000.000000 0.000000
10.232142857142858 1000.000000 0.000000
10.250000000000000 1000.000000 0.000000
10.267857142857142 1000.000000 0.000000
10.285714285714286 1000.000000 0.000000
10.303571428571429 1000.000000 0.000000
10.321428571428571 0.000000 0.000000
10.339285714285714 0.000000 0.000000
10.357142857142858 0.000000 0.000000
10.375000000000000 0.000000 0.000000
10.392857142857142 0.000000 0.000000
10.410714285714286 0.000000 0.000000
10.428571428571429 0.000000 0.000000
10.446428571428571 0.000000 0.000000
10.464285714285714 0.000000 0.000000
10.482142857142858 0.000000 0.000000
10.500000000000000 0.000000 0.000000
10.517857142857142 1000.000000 0.000000
10.535714285714286 1000.000000 0.000000
10.553571428571429 1000.000000 0.000000
10.571428571428571 1000.000000 0.000000
10.589285714285714 1000.000000 0.000000
10.607142857142858 1000.000000 0.000000
...
```
This passes the single run because the first and last line satisfy criteria.
But of course this should not be passed.
"""
# ╔═╡ 0483ec15-0546-4b24-9c29-4d56b3f75505
filter(:psboard_id => ==(435), skews_for_each_board)
# ╔═╡ 8c9e18cb-236f-4b57-97ea-323ac4f962d9
md"""
# Dependency on positions
"""
# ╔═╡ d4f56ef7-9aa4-4d33-bce4-ae29910607c4
pos_id_map = map(enumerate("B-$i-$j" for i in 0:1 for j in 1:9)) do (i, s)
s => i
end |> Dict
# ╔═╡ d2430bd9-bd01-43dc-83f4-82c905f5a410
let
df = dropmissing(skews_for_each_board)
rainclouds(
df.position .|> passmissing(p -> pos_id_map[p]),
df.lvds_tx_skew,
axis = (;
title = "skew position dependency",
xticks = (values(pos_id_map) |> collect, keys(pos_id_map) |> collect),
xticklabelrotation = π / 2,
)
)
end
# ╔═╡ 00000000-0000-0000-0000-000000000001
PLUTO_PROJECT_TOML_CONTENTS = """
[deps]
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
DBInterface = "a10d1c49-ce27-4219-8d33-6db1a4562965"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
SQLite = "0aa819cd-b072-5ff4-a722-6bc24af294d9"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9"
[compat]
CairoMakie = "~0.12.12"
DBInterface = "~2.6.1"
DataFrames = "~1.7.0"
PlutoUI = "~0.7.60"
SQLite = "~1.6.1"
Tables = "~1.12.0"
TypedTables = "~1.4.6"
"""
# ╔═╡ 00000000-0000-0000-0000-000000000002
PLUTO_MANIFEST_TOML_CONTENTS = """
# This file is machine-generated - editing it directly is not advised
julia_version = "1.10.5"
manifest_format = "2.0"
project_hash = "520d318d0e1f3d66476b72d20eb4bb96d48f16d8"
[[deps.AbstractFFTs]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef"
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
version = "1.5.0"
weakdeps = ["ChainRulesCore", "Test"]
[deps.AbstractFFTs.extensions]
AbstractFFTsChainRulesCoreExt = "ChainRulesCore"
AbstractFFTsTestExt = "Test"
[[deps.AbstractPlutoDingetjes]]
deps = ["Pkg"]
git-tree-sha1 = "6e1d2a35f2f90a4bc7c2ed98079b2ba09c35b83a"
uuid = "6e696c72-6542-2067-7265-42206c756150"
version = "1.3.2"
[[deps.AbstractTrees]]
git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177"
uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
version = "0.4.5"
[[deps.Adapt]]
deps = ["LinearAlgebra", "Requires"]
git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099"
uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
version = "4.0.4"
weakdeps = ["StaticArrays"]
[deps.Adapt.extensions]
AdaptStaticArraysExt = "StaticArrays"
[[deps.AdaptivePredicates]]
git-tree-sha1 = "7e651ea8d262d2d74ce75fdf47c4d63c07dba7a6"
uuid = "35492f91-a3bd-45ad-95db-fcad7dcfedb7"
version = "1.2.0"
[[deps.AliasTables]]
deps = ["PtrArrays", "Random"]
git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff"
uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8"
version = "1.1.3"
[[deps.Animations]]
deps = ["Colors"]
git-tree-sha1 = "e81c509d2c8e49592413bfb0bb3b08150056c79d"
uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340"
version = "0.4.1"
[[deps.ArgTools]]
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
version = "1.1.1"
[[deps.Artifacts]]
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
[[deps.Automa]]
deps = ["PrecompileTools", "TranscodingStreams"]
git-tree-sha1 = "014bc22d6c400a7703c0f5dc1fdc302440cf88be"
uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b"
version = "1.0.4"
[[deps.AxisAlgorithms]]
deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"]
git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712"
uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950"
version = "1.1.0"
[[deps.AxisArrays]]
deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"]
git-tree-sha1 = "16351be62963a67ac4083f748fdb3cca58bfd52f"
uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9"
version = "0.4.7"
[[deps.Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
[[deps.Bzip2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd"
uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0"
version = "1.0.8+1"
[[deps.CEnum]]
git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc"
uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
version = "0.5.0"
[[deps.CRC32c]]
uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc"
[[deps.CRlibm_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc"
uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0"
version = "1.0.1+0"
[[deps.Cairo]]
deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"]
git-tree-sha1 = "7b6ad8c35f4bc3bca8eb78127c8b99719506a5fb"
uuid = "159f3aea-2a34-519c-b102-8c37f9878175"
version = "1.1.0"
[[deps.CairoMakie]]
deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"]
git-tree-sha1 = "0852b8edf4da66cc44861b12d7d6c69693fc620f"
uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
version = "0.12.12"
[[deps.Cairo_jll]]
deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd"
uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a"
version = "1.18.0+2"
[[deps.ChainRulesCore]]
deps = ["Compat", "LinearAlgebra"]
git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc"
uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
version = "1.25.0"
weakdeps = ["SparseArrays"]
[deps.ChainRulesCore.extensions]
ChainRulesCoreSparseArraysExt = "SparseArrays"
[[deps.ColorBrewer]]
deps = ["Colors", "JSON", "Test"]
git-tree-sha1 = "61c5334f33d91e570e1d0c3eb5465835242582c4"
uuid = "a2cac450-b92f-5266-8821-25eda20663c8"
version = "0.4.0"
[[deps.ColorSchemes]]
deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"]
git-tree-sha1 = "b5278586822443594ff615963b0c09755771b3e0"
uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
version = "3.26.0"
[[deps.ColorTypes]]
deps = ["FixedPointNumbers", "Random"]
git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d"
uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
version = "0.11.5"
[[deps.ColorVectorSpace]]
deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"]
git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249"
uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4"
version = "0.10.0"
weakdeps = ["SpecialFunctions"]
[deps.ColorVectorSpace.extensions]
SpecialFunctionsExt = "SpecialFunctions"
[[deps.Colors]]
deps = ["ColorTypes", "FixedPointNumbers", "Reexport"]
git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0"
uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
version = "0.12.11"
[[deps.Compat]]
deps = ["TOML", "UUIDs"]
git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215"
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
version = "4.16.0"
weakdeps = ["Dates", "LinearAlgebra"]
[deps.Compat.extensions]
CompatLinearAlgebraExt = "LinearAlgebra"
[[deps.CompilerSupportLibraries_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "1.1.1+0"
[[deps.ConstructionBase]]
git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157"
uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
version = "1.5.8"
weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"]
[deps.ConstructionBase.extensions]
ConstructionBaseIntervalSetsExt = "IntervalSets"
ConstructionBaseLinearAlgebraExt = "LinearAlgebra"
ConstructionBaseStaticArraysExt = "StaticArrays"
[[deps.Contour]]
git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8"
uuid = "d38c429a-6771-53c6-b99e-75d170b6e991"
version = "0.6.3"
[[deps.Crayons]]
git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15"
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
version = "4.1.1"
[[deps.DBInterface]]
git-tree-sha1 = "a444404b3f94deaa43ca2a58e18153a82695282b"
uuid = "a10d1c49-ce27-4219-8d33-6db1a4562965"
version = "2.6.1"
[[deps.DataAPI]]
git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.16.0"
[[deps.DataFrames]]
deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6"
uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
version = "1.7.0"
[[deps.DataStructures]]
deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.18.20"
[[deps.DataValueInterfaces]]
git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
version = "1.0.0"
[[deps.Dates]]
deps = ["Printf"]
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
[[deps.DelaunayTriangulation]]
deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"]
git-tree-sha1 = "90fe18ca4b73bdd2320fbbccec727a75069455f6"
uuid = "927a84f5-c5f4-47a5-9785-b46e178433df"
version = "1.5.1"
[[deps.Dictionaries]]
deps = ["Indexing", "Random", "Serialization"]
git-tree-sha1 = "35b66b6744b2d92c778afd3a88d2571875664a2a"
uuid = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4"
version = "0.4.2"
[[deps.Distributed]]
deps = ["Random", "Serialization", "Sockets"]
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
[[deps.Distributions]]
deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"]
git-tree-sha1 = "d7477ecdafb813ddee2ae727afa94e9dcb5f3fb0"
uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
version = "0.25.112"
[deps.Distributions.extensions]
DistributionsChainRulesCoreExt = "ChainRulesCore"
DistributionsDensityInterfaceExt = "DensityInterface"
DistributionsTestExt = "Test"
[deps.Distributions.weakdeps]
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[deps.DocStringExtensions]]
deps = ["LibGit2"]
git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.9.3"
[[deps.Downloads]]
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
version = "1.6.0"
[[deps.EarCut_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053"
uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5"
version = "2.2.4+0"
[[deps.EnumX]]
git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237"
uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
version = "1.0.4"
[[deps.ExactPredicates]]
deps = ["IntervalArithmetic", "Random", "StaticArrays"]
git-tree-sha1 = "b3f2ff58735b5f024c392fde763f29b057e4b025"
uuid = "429591f6-91af-11e9-00e2-59fbe8cec110"
version = "2.2.8"
[[deps.Expat_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7"
uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
version = "2.6.2+0"
[[deps.Extents]]
git-tree-sha1 = "81023caa0021a41712685887db1fc03db26f41f5"
uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910"
version = "0.1.4"
[[deps.FFMPEG_jll]]
deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"]
git-tree-sha1 = "8cc47f299902e13f90405ddb5bf87e5d474c0d38"
uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
version = "6.1.2+0"
[[deps.FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d"
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
version = "1.8.0"
[[deps.FFTW_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "4d81ed14783ec49ce9f2e168208a12ce1815aa25"
uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a"
version = "3.3.10+1"
[[deps.FileIO]]
deps = ["Pkg", "Requires", "UUIDs"]
git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322"
uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
version = "1.16.3"
[[deps.FilePaths]]
deps = ["FilePathsBase", "MacroTools", "Reexport", "Requires"]
git-tree-sha1 = "919d9412dbf53a2e6fe74af62a73ceed0bce0629"
uuid = "8fc22ac5-c921-52a6-82fd-178b2807b824"
version = "0.8.3"
[[deps.FilePathsBase]]
deps = ["Compat", "Dates"]
git-tree-sha1 = "7878ff7172a8e6beedd1dea14bd27c3c6340d361"
uuid = "48062228-2e41-5def-b9a4-89aafe57970f"
version = "0.9.22"
weakdeps = ["Mmap", "Test"]
[deps.FilePathsBase.extensions]
FilePathsBaseMmapExt = "Mmap"
FilePathsBaseTestExt = "Test"
[[deps.FileWatching]]
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
[[deps.FillArrays]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a"
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
version = "1.13.0"
weakdeps = ["PDMats", "SparseArrays", "Statistics"]
[deps.FillArrays.extensions]
FillArraysPDMatsExt = "PDMats"
FillArraysSparseArraysExt = "SparseArrays"
FillArraysStatisticsExt = "Statistics"
[[deps.FixedPointNumbers]]
deps = ["Statistics"]
git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172"
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
version = "0.8.5"
[[deps.Fontconfig_jll]]
deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"]
git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23"
uuid = "a3f928ae-7b40-5064-980b-68af3947d34b"
version = "2.13.96+0"
[[deps.Format]]
git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc"
uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8"
version = "1.3.7"
[[deps.FreeType]]
deps = ["CEnum", "FreeType2_jll"]
git-tree-sha1 = "907369da0f8e80728ab49c1c7e09327bf0d6d999"
uuid = "b38be410-82b0-50bf-ab77-7b57e271db43"
version = "4.1.1"
[[deps.FreeType2_jll]]
deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc"
uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
version = "2.13.2+0"
[[deps.FreeTypeAbstraction]]
deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"]
git-tree-sha1 = "2493cdfd0740015955a8e46de4ef28f49460d8bc"
uuid = "663a7486-cb36-511b-a19d-713bb74d65c9"
version = "0.10.3"
[[deps.FriBidi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2"
uuid = "559328eb-81f9-559d-9380-de523a88c83c"
version = "1.0.14+0"
[[deps.Future]]
deps = ["Random"]
uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
[[deps.GeoFormatTypes]]
git-tree-sha1 = "59107c179a586f0fe667024c5eb7033e81333271"
uuid = "68eda718-8dee-11e9-39e7-89f7f65f511f"
version = "0.4.2"
[[deps.GeoInterface]]
deps = ["Extents", "GeoFormatTypes"]
git-tree-sha1 = "2f6fce56cdb8373637a6614e14a5768a88450de2"
uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f"
version = "1.3.7"
[[deps.GeometryBasics]]
deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"]
git-tree-sha1 = "b62f2b2d76cee0d61a2ef2b3118cd2a3215d3134"
uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326"
version = "0.4.11"
[[deps.Gettext_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"]
git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046"
uuid = "78b55507-aeef-58d4-861c-77aaff3498b1"
version = "0.21.0+0"
[[deps.Glib_jll]]
deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"]
git-tree-sha1 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba"
uuid = "7746bdde-850d-59dc-9ae8-88ece973131d"
version = "2.80.2+0"
[[deps.Graphics]]
deps = ["Colors", "LinearAlgebra", "NaNMath"]
git-tree-sha1 = "d61890399bc535850c4bf08e4e0d3a7ad0f21cbd"
uuid = "a2bd30eb-e257-5431-a919-1863eab51364"
version = "1.1.2"
[[deps.Graphite2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011"
uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
version = "1.3.14+0"
[[deps.GridLayoutBase]]
deps = ["GeometryBasics", "InteractiveUtils", "Observables"]
git-tree-sha1 = "fc713f007cff99ff9e50accba6373624ddd33588"
uuid = "3955a311-db13-416c-9275-1d80ed98e5e9"
version = "0.11.0"
[[deps.Grisu]]
git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2"
uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe"
version = "1.0.2"
[[deps.HarfBuzz_jll]]
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"]
git-tree-sha1 = "401e4f3f30f43af2c8478fc008da50096ea5240f"
uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
version = "8.3.1+0"
[[deps.HypergeometricFunctions]]
deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"]
git-tree-sha1 = "7c4195be1649ae622304031ed46a2f4df989f1eb"
uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
version = "0.3.24"
[[deps.Hyperscript]]
deps = ["Test"]
git-tree-sha1 = "179267cfa5e712760cd43dcae385d7ea90cc25a4"
uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91"
version = "0.0.5"
[[deps.HypertextLiteral]]
deps = ["Tricks"]
git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653"
uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
version = "0.9.5"
[[deps.IOCapture]]
deps = ["Logging", "Random"]
git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770"
uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
version = "0.2.5"
[[deps.ImageAxes]]
deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"]
git-tree-sha1 = "2e4520d67b0cef90865b3ef727594d2a58e0e1f8"
uuid = "2803e5a7-5153-5ecf-9a86-9b4c37f5f5ac"
version = "0.6.11"
[[deps.ImageBase]]
deps = ["ImageCore", "Reexport"]
git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909"
uuid = "c817782e-172a-44cc-b673-b171935fbb9e"
version = "0.1.7"
[[deps.ImageCore]]
deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"]
git-tree-sha1 = "b2a7eaa169c13f5bcae8131a83bc30eff8f71be0"
uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534"
version = "0.10.2"
[[deps.ImageIO]]
deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"]
git-tree-sha1 = "437abb322a41d527c197fa800455f79d414f0a3c"
uuid = "82e4d734-157c-48bb-816b-45c225c6df19"
version = "0.6.8"
[[deps.ImageMetadata]]
deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"]
git-tree-sha1 = "355e2b974f2e3212a75dfb60519de21361ad3cb7"
uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49"
version = "0.9.9"
[[deps.Imath_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "0936ba688c6d201805a83da835b55c61a180db52"
uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1"
version = "3.1.11+0"
[[deps.Indexing]]
git-tree-sha1 = "ce1566720fd6b19ff3411404d4b977acd4814f9f"
uuid = "313cdc1a-70c2-5d6a-ae34-0150d3930a38"
version = "1.1.1"
[[deps.IndirectArrays]]
git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f"
uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959"
version = "1.0.0"
[[deps.Inflate]]
git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d"
uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9"
version = "0.1.5"
[[deps.InlineStrings]]
git-tree-sha1 = "45521d31238e87ee9f9732561bfee12d4eebd52d"
uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48"
version = "1.4.2"
[deps.InlineStrings.extensions]
ArrowTypesExt = "ArrowTypes"
ParsersExt = "Parsers"
[deps.InlineStrings.weakdeps]
ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd"
Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
[[deps.IntelOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"]
git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e"
uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
version = "2024.2.1+0"
[[deps.InteractiveUtils]]
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
[[deps.Interpolations]]
deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"]
git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0"
uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
version = "0.15.1"
weakdeps = ["Unitful"]
[deps.Interpolations.extensions]
InterpolationsUnitfulExt = "Unitful"
[[deps.IntervalArithmetic]]
deps = ["CRlibm_jll", "MacroTools", "RoundingEmulator"]
git-tree-sha1 = "fe30dec78e68f27fc416901629c6e24e9d5f057b"
uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253"
version = "0.22.16"
[deps.IntervalArithmetic.extensions]
IntervalArithmeticDiffRulesExt = "DiffRules"
IntervalArithmeticForwardDiffExt = "ForwardDiff"
IntervalArithmeticIntervalSetsExt = "IntervalSets"
IntervalArithmeticLinearAlgebraExt = "LinearAlgebra"
IntervalArithmeticRecipesBaseExt = "RecipesBase"
[deps.IntervalArithmetic.weakdeps]
DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
[[deps.IntervalSets]]
git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0"
uuid = "8197267c-284f-5f27-9208-e0e47529a953"
version = "0.7.10"
[deps.IntervalSets.extensions]
IntervalSetsRandomExt = "Random"
IntervalSetsRecipesBaseExt = "RecipesBase"
IntervalSetsStatisticsExt = "Statistics"
[deps.IntervalSets.weakdeps]
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
[[deps.InvertedIndices]]
git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038"
uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f"
version = "1.3.0"
[[deps.IrrationalConstants]]
git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2"
uuid = "92d709cd-6900-40b7-9082-c6be49f344b6"
version = "0.2.2"
[[deps.Isoband]]
deps = ["isoband_jll"]
git-tree-sha1 = "f9b6d97355599074dc867318950adaa6f9946137"
uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4"
version = "0.1.1"
[[deps.IterTools]]
git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023"
uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
version = "1.10.0"
[[deps.IteratorInterfaceExtensions]]
git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
uuid = "82899510-4779-5014-852e-03e436cf321d"
version = "1.0.0"
[[deps.JLLWrappers]]
deps = ["Artifacts", "Preferences"]
git-tree-sha1 = "f389674c99bfcde17dc57454011aa44d5a260a40"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.6.0"
[[deps.JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.4"
[[deps.JpegTurbo]]
deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"]
git-tree-sha1 = "fa6d0bcff8583bac20f1ffa708c3913ca605c611"
uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0"
version = "0.1.5"
[[deps.JpegTurbo_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "25ee0be4d43d0269027024d75a24c24d6c6e590c"
uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
version = "3.0.4+0"
[[deps.KernelDensity]]
deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"]
git-tree-sha1 = "7d703202e65efa1369de1279c162b915e245eed1"
uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b"
version = "0.6.9"
[[deps.LAME_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd"
uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d"
version = "3.100.2+0"
[[deps.LLVMOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "78211fb6cbc872f77cad3fc0b6cf647d923f4929"
uuid = "1d63c593-3942-5779-bab2-d838dc0a180e"
version = "18.1.7+0"
[[deps.LZO_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731"
uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac"
version = "2.10.2+1"
[[deps.LaTeXStrings]]
git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec"
uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
version = "1.3.1"
[[deps.LazyArtifacts]]
deps = ["Artifacts", "Pkg"]
uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
[[deps.LazyModules]]
git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e"
uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e"
version = "0.3.1"
[[deps.LibCURL]]
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
version = "0.6.4"
[[deps.LibCURL_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
version = "8.4.0+0"
[[deps.LibGit2]]
deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
[[deps.LibGit2_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"]
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
version = "1.6.4+0"
[[deps.LibSSH2_jll]]
deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
version = "1.11.0+1"
[[deps.Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
[[deps.Libffi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290"
uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490"
version = "3.2.2+1"
[[deps.Libgcrypt_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"]
git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673"
uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4"
version = "1.8.11+0"
[[deps.Libgpg_error_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed"
uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8"
version = "1.49.0+0"
[[deps.Libiconv_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175"
uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
version = "1.17.0+0"
[[deps.Libmount_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e"
uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9"
version = "2.40.1+0"
[[deps.Libuuid_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807"
uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700"
version = "2.40.1+0"
[[deps.LinearAlgebra]]
deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
[[deps.LogExpFunctions]]
deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"]
git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea"
uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
version = "0.3.28"
[deps.LogExpFunctions.extensions]
LogExpFunctionsChainRulesCoreExt = "ChainRulesCore"
LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables"
LogExpFunctionsInverseFunctionsExt = "InverseFunctions"
[deps.LogExpFunctions.weakdeps]
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0"
InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
[[deps.Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
[[deps.MIMEs]]
git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb"
uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65"
version = "0.1.4"
[[deps.MKL_jll]]
deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"]
git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f"
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
version = "2024.2.0+0"
[[deps.MacroTools]]
deps = ["Markdown", "Random"]
git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df"
uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
version = "0.5.13"
[[deps.Makie]]
deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"]
git-tree-sha1 = "e08a87ca672b6f26a6f7237000554d2a093d3495"
uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
version = "0.21.12"
[[deps.MakieCore]]
deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"]
git-tree-sha1 = "22fed09860ca73537a36d4e5a9bce0d9e80ee8a8"
uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b"
version = "0.8.8"
[[deps.MappedArrays]]
git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e"
uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900"
version = "0.4.2"
[[deps.Markdown]]
deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
[[deps.MathTeXEngine]]
deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"]
git-tree-sha1 = "e1641f32ae592e415e3dbae7f4a188b5316d4b62"
uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53"
version = "0.6.1"
[[deps.MbedTLS_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
version = "2.28.2+1"
[[deps.Missings]]
deps = ["DataAPI"]
git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d"
uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
version = "1.2.0"
[[deps.Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
[[deps.MosaicViews]]
deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"]
git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe"
uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389"
version = "0.3.4"
[[deps.MozillaCACerts_jll]]
uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
version = "2023.1.10"
[[deps.NaNMath]]
deps = ["OpenLibm_jll"]
git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4"
uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
version = "1.0.2"
[[deps.Netpbm]]
deps = ["FileIO", "ImageCore", "ImageMetadata"]
git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd"
uuid = "f09324ee-3d7c-5217-9330-fc30815ba969"
version = "1.1.1"
[[deps.NetworkOptions]]
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
version = "1.2.0"
[[deps.Observables]]
git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225"
uuid = "510215fc-4207-5dde-b226-833fc4488ee2"
version = "0.5.5"
[[deps.OffsetArrays]]
git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e"
uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
version = "1.14.1"
weakdeps = ["Adapt"]
[deps.OffsetArrays.extensions]
OffsetArraysAdaptExt = "Adapt"
[[deps.Ogg_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f"
uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051"
version = "1.3.5+1"
[[deps.OpenBLAS_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
version = "0.3.23+4"
[[deps.OpenEXR]]
deps = ["Colors", "FileIO", "OpenEXR_jll"]
git-tree-sha1 = "327f53360fdb54df7ecd01e96ef1983536d1e633"
uuid = "52e1d378-f018-4a11-a4be-720524705ac7"
version = "0.3.2"
[[deps.OpenEXR_jll]]
deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "8292dd5c8a38257111ada2174000a33745b06d4e"
uuid = "18a262bb-aa17-5467-a713-aee519bc75cb"
version = "3.2.4+0"
[[deps.OpenLibm_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
version = "0.8.1+2"
[[deps.OpenSSL_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10"
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
version = "3.0.15+1"
[[deps.OpenSpecFun_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1"
uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
version = "0.5.5+0"
[[deps.Opus_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6703a85cb3781bd5909d48730a67205f3f31a575"
uuid = "91d4177d-7536-5919-b921-800302f37372"
version = "1.3.3+0"
[[deps.OrderedCollections]]
git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5"
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
version = "1.6.3"
[[deps.PCRE2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
version = "10.42.0+1"
[[deps.PDMats]]
deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"]
git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65"
uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
version = "0.11.31"
[[deps.PNGFiles]]
deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"]
git-tree-sha1 = "67186a2bc9a90f9f85ff3cc8277868961fb57cbd"
uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883"
version = "0.4.3"
[[deps.Packing]]
deps = ["GeometryBasics"]
git-tree-sha1 = "ec3edfe723df33528e085e632414499f26650501"
uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566"
version = "0.5.0"
[[deps.PaddedViews]]
deps = ["OffsetArrays"]
git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f"
uuid = "5432bcbf-9aad-5242-b902-cca2824c8663"
version = "0.5.12"
[[deps.Pango_jll]]
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"]
git-tree-sha1 = "e127b609fb9ecba6f201ba7ab753d5a605d53801"
uuid = "36c8627f-9965-5494-a995-c6b170f724f3"
version = "1.54.1+0"
[[deps.Parsers]]
deps = ["Dates", "PrecompileTools", "UUIDs"]
git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "2.8.1"
[[deps.Pixman_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"]
git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b"
uuid = "30392449-352a-5448-841d-b1acce4e97dc"
version = "0.43.4+0"
[[deps.Pkg]]
deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
version = "1.10.0"
[[deps.PkgVersion]]
deps = ["Pkg"]
git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da"
uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688"
version = "0.3.3"
[[deps.PlotUtils]]
deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"]
git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5"
uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043"
version = "1.4.1"
[[deps.PlutoUI]]
deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"]
git-tree-sha1 = "eba4810d5e6a01f612b948c9fa94f905b49087b0"
uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
version = "0.7.60"
[[deps.PolygonOps]]
git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6"
uuid = "647866c9-e3ac-4575-94e7-e3d426903924"
version = "0.1.2"
[[deps.PooledArrays]]
deps = ["DataAPI", "Future"]
git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3"
uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720"
version = "1.4.3"
[[deps.PrecompileTools]]
deps = ["Preferences"]
git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f"
uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
version = "1.2.1"
[[deps.Preferences]]
deps = ["TOML"]
git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6"
uuid = "21216c6a-2e73-6563-6e65-726566657250"
version = "1.4.3"
[[deps.PrettyTables]]
deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"]
git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34"
uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
version = "2.4.0"
[[deps.Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
[[deps.ProgressMeter]]
deps = ["Distributed", "Printf"]
git-tree-sha1 = "8f6bc219586aef8baf0ff9a5fe16ee9c70cb65e4"
uuid = "92933f4c-e287-5a05-a399-4b506db050ca"
version = "1.10.2"
[[deps.PtrArrays]]
git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f"
uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d"
version = "1.2.1"
[[deps.QOI]]
deps = ["ColorTypes", "FileIO", "FixedPointNumbers"]
git-tree-sha1 = "18e8f4d1426e965c7b532ddd260599e1510d26ce"
uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65"
version = "1.0.0"
[[deps.QuadGK]]
deps = ["DataStructures", "LinearAlgebra"]
git-tree-sha1 = "cda3b045cf9ef07a08ad46731f5a3165e56cf3da"
uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
version = "2.11.1"
[deps.QuadGK.extensions]
QuadGKEnzymeExt = "Enzyme"
[deps.QuadGK.weakdeps]
Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"
[[deps.REPL]]
deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
[[deps.Random]]
deps = ["SHA"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
[[deps.RangeArrays]]
git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5"
uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d"
version = "0.3.2"
[[deps.Ratios]]
deps = ["Requires"]
git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b"
uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439"
version = "0.4.5"
weakdeps = ["FixedPointNumbers"]
[deps.Ratios.extensions]
RatiosFixedPointNumbersExt = "FixedPointNumbers"
[[deps.Reexport]]
git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
uuid = "189a3867-3050-52da-a836-e630ba90ab69"
version = "1.2.2"
[[deps.RelocatableFolders]]
deps = ["SHA", "Scratch"]
git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864"
uuid = "05181044-ff0b-4ac5-8273-598c1e38db00"
version = "1.0.1"
[[deps.Requires]]
deps = ["UUIDs"]
git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7"
uuid = "ae029012-a4dd-5104-9daa-d747884805df"
version = "1.3.0"
[[deps.Rmath]]
deps = ["Random", "Rmath_jll"]
git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4"
uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
version = "0.8.0"
[[deps.Rmath_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8"
uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
version = "0.5.1+0"
[[deps.RoundingEmulator]]
git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b"
uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705"
version = "0.2.1"
[[deps.SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
version = "0.7.0"
[[deps.SIMD]]
deps = ["PrecompileTools"]
git-tree-sha1 = "98ca7c29edd6fc79cd74c61accb7010a4e7aee33"
uuid = "fdea26ae-647d-5447-a871-4b548cad5224"
version = "3.6.0"
[[deps.SQLite]]
deps = ["DBInterface", "Random", "SQLite_jll", "Serialization", "Tables", "WeakRefStrings"]
git-tree-sha1 = "38b82dbc52b7db40bea182688c7a1103d06948a4"
uuid = "0aa819cd-b072-5ff4-a722-6bc24af294d9"
version = "1.6.1"
[[deps.SQLite_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "004fffbe2711abdc7263a980bbb1af9620781dd9"
uuid = "76ed43ae-9a5d-5a62-8c75-30186b810ce8"
version = "3.45.3+0"
[[deps.Scratch]]
deps = ["Dates"]
git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386"
uuid = "6c6a2e73-6563-6170-7368-637461726353"
version = "1.2.1"
[[deps.SentinelArrays]]
deps = ["Dates", "Random"]
git-tree-sha1 = "ff11acffdb082493657550959d4feb4b6149e73a"
uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c"
version = "1.4.5"
[[deps.Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
[[deps.ShaderAbstractions]]
deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays", "StructArrays", "Tables"]
git-tree-sha1 = "79123bc60c5507f035e6d1d9e563bb2971954ec8"
uuid = "65257c39-d410-5151-9873-9b3e5be5013e"
version = "0.4.1"
[[deps.SharedArrays]]
deps = ["Distributed", "Mmap", "Random", "Serialization"]
uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
[[deps.Showoff]]
deps = ["Dates", "Grisu"]
git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de"
uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f"
version = "1.0.3"
[[deps.SignedDistanceFields]]
deps = ["Random", "Statistics", "Test"]
git-tree-sha1 = "d263a08ec505853a5ff1c1ebde2070419e3f28e9"
uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96"
version = "0.4.0"
[[deps.SimpleTraits]]
deps = ["InteractiveUtils", "MacroTools"]
git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231"
uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d"
version = "0.9.4"
[[deps.Sixel]]
deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"]
git-tree-sha1 = "2da10356e31327c7096832eb9cd86307a50b1eb6"
uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47"
version = "0.1.3"
[[deps.Sockets]]
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
[[deps.SortingAlgorithms]]
deps = ["DataStructures"]
git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085"
uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
version = "1.2.1"
[[deps.SparseArrays]]
deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
version = "1.10.0"
[[deps.SpecialFunctions]]
deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"]
git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
version = "2.4.0"
weakdeps = ["ChainRulesCore"]
[deps.SpecialFunctions.extensions]
SpecialFunctionsChainRulesCoreExt = "ChainRulesCore"
[[deps.SplitApplyCombine]]
deps = ["Dictionaries", "Indexing"]
git-tree-sha1 = "c06d695d51cfb2187e6848e98d6252df9101c588"
uuid = "03a91e81-4c3e-53e1-a0a4-9c0c8f19dd66"
version = "1.2.3"
[[deps.StackViews]]
deps = ["OffsetArrays"]
git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c"
uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15"
version = "0.1.1"
[[deps.StaticArrays]]
deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"]
git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50"
uuid = "90137ffa-7385-5640-81b9-e52037218182"
version = "1.9.7"
weakdeps = ["ChainRulesCore", "Statistics"]
[deps.StaticArrays.extensions]
StaticArraysChainRulesCoreExt = "ChainRulesCore"
StaticArraysStatisticsExt = "Statistics"
[[deps.StaticArraysCore]]
git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682"
uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
version = "1.4.3"
[[deps.Statistics]]
deps = ["LinearAlgebra", "SparseArrays"]
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
version = "1.10.0"
[[deps.StatsAPI]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed"
uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
version = "1.7.0"
[[deps.StatsBase]]
deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"]
git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21"
uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
version = "0.34.3"
[[deps.StatsFuns]]
deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"]
git-tree-sha1 = "b423576adc27097764a90e163157bcfc9acf0f46"
uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
version = "1.3.2"
[deps.StatsFuns.extensions]
StatsFunsChainRulesCoreExt = "ChainRulesCore"
StatsFunsInverseFunctionsExt = "InverseFunctions"
[deps.StatsFuns.weakdeps]
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
[[deps.StringManipulation]]
deps = ["PrecompileTools"]
git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3"
uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e"
version = "0.4.0"
[[deps.StructArrays]]
deps = ["ConstructionBase", "DataAPI", "Tables"]
git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be"
uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
version = "0.6.18"
[deps.StructArrays.extensions]
StructArraysAdaptExt = "Adapt"
StructArraysGPUArraysCoreExt = "GPUArraysCore"
StructArraysSparseArraysExt = "SparseArrays"
StructArraysStaticArraysExt = "StaticArrays"
[deps.StructArrays.weakdeps]
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
[[deps.SuiteSparse]]
deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"]
uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
[[deps.SuiteSparse_jll]]
deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c"
version = "7.2.1+1"
[[deps.TOML]]
deps = ["Dates"]
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
version = "1.0.3"
[[deps.TableTraits]]
deps = ["IteratorInterfaceExtensions"]
git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
version = "1.0.1"
[[deps.Tables]]
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"]
git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297"
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
version = "1.12.0"
[[deps.Tar]]
deps = ["ArgTools", "SHA"]
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
version = "1.10.0"
[[deps.TensorCore]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6"
uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50"
version = "0.1.1"
[[deps.Test]]
deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[deps.TiffImages]]
deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"]
git-tree-sha1 = "bc7fd5c91041f44636b2c134041f7e5263ce58ae"
uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69"
version = "0.10.0"
[[deps.TranscodingStreams]]
git-tree-sha1 = "e84b3a11b9bece70d14cce63406bbc79ed3464d2"
uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
version = "0.11.2"
[[deps.Tricks]]
git-tree-sha1 = "7822b97e99a1672bfb1b49b668a6d46d58d8cbcb"
uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775"
version = "0.1.9"
[[deps.TriplotBase]]
git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b"
uuid = "981d1d27-644d-49a2-9326-4793e63143c3"
version = "0.1.0"
[[deps.TypedTables]]
deps = ["Adapt", "Dictionaries", "Indexing", "SplitApplyCombine", "Tables", "Unicode"]
git-tree-sha1 = "84fd7dadde577e01eb4323b7e7b9cb51c62c60d4"
uuid = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9"
version = "1.4.6"
[[deps.URIs]]
git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b"
uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
version = "1.5.1"
[[deps.UUIDs]]
deps = ["Random", "SHA"]
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
[[deps.Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
[[deps.UnicodeFun]]
deps = ["REPL"]
git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf"
uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1"
version = "0.4.1"
[[deps.Unitful]]
deps = ["Dates", "LinearAlgebra", "Random"]
git-tree-sha1 = "d95fe458f26209c66a187b1114df96fd70839efd"
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
version = "1.21.0"
[deps.Unitful.extensions]
ConstructionBaseUnitfulExt = "ConstructionBase"
InverseFunctionsUnitfulExt = "InverseFunctions"
[deps.Unitful.weakdeps]
ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
[[deps.WeakRefStrings]]
deps = ["DataAPI", "InlineStrings", "Parsers"]
git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23"
uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5"
version = "1.4.2"
[[deps.WoodburyMatrices]]
deps = ["LinearAlgebra", "SparseArrays"]
git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511"
uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6"
version = "1.0.0"
[[deps.XML2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"]
git-tree-sha1 = "1165b0443d0eca63ac1e32b8c0eb69ed2f4f8127"
uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
version = "2.13.3+0"
[[deps.XSLT_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"]
git-tree-sha1 = "a54ee957f4c86b526460a720dbc882fa5edcbefc"
uuid = "aed1982a-8fda-507f-9586-7b0439959a61"
version = "1.1.41+0"
[[deps.Xorg_libX11_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"]
git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495"
uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc"
version = "1.8.6+0"
[[deps.Xorg_libXau_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8"
uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec"
version = "1.0.11+0"
[[deps.Xorg_libXdmcp_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7"
uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05"
version = "1.1.4+0"
[[deps.Xorg_libXext_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85"
uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3"
version = "1.3.6+0"
[[deps.Xorg_libXrender_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe"
uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa"
version = "0.9.11+0"
[[deps.Xorg_libpthread_stubs_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9"
uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74"
version = "0.1.1+0"
[[deps.Xorg_libxcb_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"]
git-tree-sha1 = "bcd466676fef0878338c61e655629fa7bbc69d8e"
uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b"
version = "1.17.0+0"
[[deps.Xorg_xtrans_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77"
uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10"
version = "1.5.0+0"
[[deps.Zlib_jll]]
deps = ["Libdl"]
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
version = "1.2.13+1"
[[deps.isoband_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c"
uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4"
version = "0.2.3+0"
[[deps.libaom_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d"
uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b"
version = "3.9.0+0"
[[deps.libass_jll]]
deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "e17c115d55c5fbb7e52ebedb427a0dca79d4484e"
uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0"
version = "0.15.2+0"
[[deps.libblastrampoline_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
version = "5.11.0+0"
[[deps.libfdk_aac_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38"
uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
version = "2.0.3+0"
[[deps.libpng_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "b70c870239dc3d7bc094eb2d6be9b73d27bef280"
uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f"
version = "1.6.44+0"
[[deps.libsixel_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"]
git-tree-sha1 = "7dfa0fd9c783d3d0cc43ea1af53d69ba45c447df"
uuid = "075b6546-f08a-558a-be8f-8157d0f608a5"
version = "1.10.3+1"
[[deps.libvorbis_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"]
git-tree-sha1 = "490376214c4721cdaca654041f635213c6165cb3"
uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a"
version = "1.3.7+2"
[[deps.nghttp2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
version = "1.52.0+1"
[[deps.oneTBB_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493"
uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e"
version = "2021.12.0+0"
[[deps.p7zip_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
version = "17.4.0+2"
[[deps.x264_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "35976a1216d6c066ea32cba2150c4fa682b276fc"
uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a"
version = "10164.0.0+0"
[[deps.x265_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "dcc541bb19ed5b0ede95581fb2e41ecf179527d2"
uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76"
version = "3.6.0+0"
"""
# ╔═╡ Cell order:
# ╠═4aaa9fa2-7ecc-11ef-0802-71fd1f15839c
# ╠═8721d160-bf3c-46ab-bffc-f32bfcdcfd50
# ╟─76476999-2ee9-42be-9e28-b93401c19e7f
# ╠═8a66db47-f100-48c0-9f1e-00e94b65fbce
# ╠═7673a352-d850-4266-ad89-87af0199b096
# ╠═0cffb5a1-54ba-425d-85d5-ad79384eb1dc
# ╠═b2b6b879-b9ea-4adb-bab2-5a6fc721b5ec
# ╟─f0ea95af-abe4-42e2-a008-70669905c538
# ╠═c54583cf-7e48-42af-acf7-f777d04a36f7
# ╠═9282f505-3623-4231-8032-b5465e5c19a4
# ╠═3d2d08b4-a170-49f8-a923-22d7d8c6def7
# ╟─0e844b54-2e22-480c-9ce2-3f24042ac950
# ╠═bedb3f4c-b087-485e-bfaf-7c60dd75005d
# ╠═b23f3f63-4c6f-476f-aab8-22069940325e
# ╟─1306b44d-781f-4948-ba39-734c92dc6b8c
# ╠═6a791331-a896-462e-90c3-1eea3d72e0db
# ╠═2e47c2b0-4568-4ac2-9926-239de48b0ca3
# ╠═099fae93-0fe6-40f1-bdc5-d23738f3f854
# ╠═0483ec15-0546-4b24-9c29-4d56b3f75505
# ╠═8c9e18cb-236f-4b57-97ea-323ac4f962d9
# ╠═d4f56ef7-9aa4-4d33-bce4-ae29910607c4
# ╠═d2430bd9-bd01-43dc-83f4-82c905f5a410
# ╟─00000000-0000-0000-0000-000000000001
# ╟─00000000-0000-0000-0000-000000000002
### A Pluto.jl notebook ###
# v0.19.46
using Markdown
using InteractiveUtils
# ╔═╡ 7c69d12c-80a5-11ef-2674-e155a3483342
begin
using Pkg
Pkg.activate("..")
Pkg.status()
true || include("../src/PSBoardDataBase.jl")
end
# ╔═╡ effa7ed9-2ac4-4468-a474-e2bb662580fe
begin
using PSBoardDataBase
using SQLite
using DataFrames
using DBInterface
using Tables
using CairoMakie
using Statistics
using PlutoUI
using Random
using Printf
end
# ╔═╡ f25e7e08-8a73-4cac-ac7c-d310725c558d
md"""
# Detailed research on clock skew measurement
- distribution of clock skews
- consistency of multiple measurement on the same board
"""
# ╔═╡ 1a6322d4-9deb-4709-aa2e-df7d8be5b16f
TableOfContents(depth = 4)
# ╔═╡ 11537f91-e16b-45f0-9768-6df842371d36
db = SQLite.DB("../psboard_qaqc.db")
# ╔═╡ 268d3015-b8d3-48d9-b74a-062e258e0ec1
SQLite.tables(db)
# ╔═╡ 62105832-df1f-4834-8da6-c542e22207d1
md"""
## Single runs
"""
# ╔═╡ dea6f143-7916-4765-92f6-2bfb97a72835
qaqc_single_results =
DBInterface.execute(db, sql"select * from qaqc_single_run_results") |> DataFrame
# ╔═╡ 41543c0c-d7c4-447b-a268-0d356c88d92c
md"""
## PS Board list
"""
# ╔═╡ 633ecdee-7e2f-4de8-833a-21cd0351c1f1
DBInterface.execute(
db,
sql"""
select * from ps_boards
""",
) |> DataFrame
# ╔═╡ 87f1966e-3b07-4f9d-8fc4-7b7aa4319d50
md"""
## Run list
"""
# ╔═╡ f379d43c-9300-41f4-b0fc-3c9d749e3105
qaqc_runs = DBInterface.execute(db, sql"select * from qaqc_runs") |> DataFrame
# ╔═╡ 33e099bc-ac4b-4b5f-88e7-20f4463c98ef
md"""
## Positions
"""
# ╔═╡ 0e13f848-0efb-4775-9e3e-518b32588a79
qaqc_positions = DBInterface.execute(db, sql"select * from qaqc_positions") |> DataFrame
# ╔═╡ 181c3fe6-d087-42e2-b175-3fb84c42e3e8
position_id_skew_map = select(qaqc_positions, [:id, :rising_ns]) |> Tables.rowtable |> Dict
# ╔═╡ dd669f14-989b-45ee-87d8-5d9cf282fafd
md"""
## Dispatch
"""
# ╔═╡ 1e9c3944-0cd4-40da-9014-a9153d4e95ed
qaqc_dispatch = DBInterface.execute(db, sql"select * from qaqc_dispatch") |> DataFrame
# ╔═╡ 322cb530-65a5-4973-86f8-01ccc2439cc4
md"""
# Clock Analysis
main part
"""
# ╔═╡ c1caca5f-4cfd-4f22-82b4-7925002359e6
clk_files =
readdir("../test/input/slavelogs/main/", join = true) |>
filter(endswith("_clk.txt")) |>
filter(!contains("nagoya")) |>
filter(!contains("630_190"))
# ╔═╡ 3e5607fd-2a8a-4a1a-9e7b-3f23ef216fad
"""
Get `(psbid, runid)`.
"""
function parse_filename(filename::AbstractString)
m = match(r"(?<psbid>\d+)_(?<runid>\d+)_clk\.txt", filename)
parse(Int64, m[:psbid]), parse(Int64, m[:runid])
end
# ╔═╡ c1b9c0c3-00f8-4199-b07f-8888f1be625c
parse_filename("190_23_clk.txt")
# ╔═╡ d6d04013-e0e4-49d5-a450-07ae164bfaa3
# Get skew and rise up time from clock measurement files
# Use measurements recorded in qaqc_single_results
df_rawskews =
clk_files .|>
(
file -> begin
skew_width = PSBoardDataBase.ClockParser.get_skew_and_riseup(file)
riseup = PSBoardDataBase.ClockParser.count_riseup(file)
psbid, runid = parse_filename(file)
(
psbid = psbid,
runid = runid,
skew = skew_width[1],
width = skew_width[2],
riseup = riseup,
)
end
) |>
filter(
x ->
filter(
[:psboard_id, :runid] =>
((psbid, runid) -> (psbid == x.psbid && runid == x.runid)),
qaqc_single_results,
) |> !isempty,
) |>
DataFrame
# ╔═╡ 0e680044-e4e1-4f39-a5c5-afa5c53fc7a7
clk_files |> filter(contains("168")) .|> PSBoardDataBase.ClockParser.get_skew_and_riseup
# ╔═╡ d7541b93-4c49-4dcd-bda0-91e447f44596
# substract result of measurements of position dependency
df_skews = let
df = leftjoin(
df_rawskews,
@view(qaqc_single_results[!, [:psboard_id, :runid, :position]]),
on = [:psbid => :psboard_id, :runid],
)
leftjoin!(df, @view(qaqc_positions[!, [:id, :rising_ns]]), on = [:position => :id])
transform!(df, [:skew, :rising_ns] => ByRow((x, y) -> x - y) => :skew)
select!(df, Not(:rising_ns))
select!(df, Not(:position))
end
# ╔═╡ e7faa647-79cd-4247-a3f2-9868c7b9d4ca
md"""
## skewの分布
``skew = rising\_time_{psbid, position} - rising\_time_{position}``
"""
# ╔═╡ 3a412a98-4a2d-4bfb-8053-b0f480fae921
let
skews = skipmissing(df_skews.skew) |> collect
npsbid = df_skews.psbid |> unique |> length
fig = Figure()
ax = Axis(
fig[1, 1],
title = "skews of all measurements (n_meas = $(length(skews)), n_psb = $(npsbid))",
xlabel = "skew / ns",
)
stephist!(ax, skews, bins = range(minimum(skews), maximum(skews), step = 1 / 57))
fig
end
# ╔═╡ b38bbed4-8721-4e92-a546-f7926cc07dd3
md"""
## 立ち上がり時間の分布(生)
"""
# ╔═╡ 420dce0e-4757-48d9-84ec-7ddfac2fdff6
let
skew_widths = df_skews.width |> skipmissing |> collect
bins = range(0, maximum(skew_widths) + 1 / 57, step = 1 / 57)# .- 0.01
hist(
skew_widths,
bins = bins,
bar_labels = :y,
label_size = 14,
label_formatter = x -> "$(round(Int, x))",
axis = (
title = "clock rise span distribution",
xlabel = "rise up span / ns",
ylabel = "counts",
limits = ((0, 0.18), (0, nothing)),
# xticks = (bins, string.(round.(bins, digits = 3))),
# xticklabelrotation = π / 3,
),
)
end
# ╔═╡ 99902640-fee3-4502-9c7e-cb08834bad0b
maximum(skipmissing(df_skews.width)) / (1 / 57)
# ╔═╡ c79c6684-1b03-41b5-aa90-ef8c7a8eb69c
md"""
この結果を元に、クロック試験のしきい値は$(round(9 * 1 / 57; digits = 2))ns以上に設定
"""
# ╔═╡ 875bec26-e576-4f48-ba14-464bce503d75
filter(:width => (x -> ismissing(x) || x < 0.06), df_skews)
# ╔═╡ ec774495-c0be-47a4-9d2c-b48159c07013
md"""
## 各PSBoardごとの統計
"""
# ╔═╡ d082e07c-3b42-4362-bebf-63356979a49b
gdf_skews_on_psbid = groupby(df_skews, :psbid)
# ╔═╡ 25688d24-5aee-43d3-aff9-b9efa0556070
combine(nrow, gdf_skews_on_psbid)
# ╔═╡ 239a808c-0411-4542-ae68-6ae6af333bd2
df_nrow_ordered = let
df = combine(nrow, gdf_skews_on_psbid)
sort!(df, :nrow, rev = true)
end
# ╔═╡ 8e57bde1-5f97-483d-906e-8ebfb65016d0
@view(df_nrow_ordered[findall(>(1), df_nrow_ordered.nrow), :])
# ╔═╡ 92c2ac3f-8034-4e9e-aadb-8bb166fbc948
df_skew_stats = let
df = combine(
gdf_skews_on_psbid,
sdf -> begin
if nrow(sdf) == 1
(; mean_skew = mean(sdf.skew), std_skew = missing, n = 1)
else
(; mean_skew = mean(sdf.skew), std_skew = std(sdf.skew), n = nrow(sdf))
end
end,
)
dropmissing!(df)
df
end
# ╔═╡ 893253c3-f0b2-401f-b892-b23291bcf5c1
fig_skew_stats = let
fig, ax, sc = scatter(
df_skew_stats.mean_skew,
df_skew_stats.std_skew,
marker = :x,
color = (Makie.wong_colors()[1], 0.8),
axis = (title = "skew mean vs std", xlabel = "mean", ylabel = "std"),
)
text!(
ax,
df_skew_stats.mean_skew,
df_skew_stats.std_skew,
text = string.(df_skew_stats.psbid),
color = (:gray, 0.5),
)
fig
end
# ╔═╡ 6467dcaa-6bd6-45c7-8c08-b310a09b8b0b
save("clock_skew_stats.svg", fig_skew_stats)
# ╔═╡ 19f85f1b-07d3-48c2-9ca6-a5a8eb1ab746
let
fig, ax, sc = scatter(
df_skew_stats.mean_skew,
df_skew_stats.std_skew,
marker = :x,
color = (Makie.wong_colors()[1], 0.8),
axis = (
title = "skew mean vs std",
xlabel = "mean",
ylabel = "std",
limits = ((-0.6, 1.2), (-0.01, 0.09)),
),
)
text!(
ax,
df_skew_stats.mean_skew,
df_skew_stats.std_skew,
text = string.(df_skew_stats.psbid),
color = (:gray, 0.5),
)
fig
end
# ╔═╡ 79e2f5d8-4609-4e9f-949e-6dc1f88c0b19
df_skew_stats_abnormals = let
df = filter([:mean_skew, :std_skew] => ((m, s) -> m > -5 && s > 1), df_skew_stats)
sort!(df, :psbid)
df
end
# ╔═╡ eae649db-6b2b-4530-83a8-3438f29423cc
let
df = filter(:psboard_id => in(df_skew_stats_abnormals.psbid), qaqc_single_results)
select!(df, [:runid, :psboard_id, :lvds_tx_skew, :note])
df
end
# ╔═╡ d607e10e-854f-4652-9a34-9e22a188e315
let
df = df_skew_stats_abnormals
fig, ax, sc = scatter(
df.mean_skew,
df.std_skew,
marker = :x,
color = (Makie.wong_colors()[1], 0.8),
axis = (title = "skew mean vs std", xlabel = "mean", ylabel = "std"),
)
text!(
ax,
df.mean_skew,
df.std_skew,
text = string.(df.psbid) .* "," .* string.(df.n),
color = (:gray, 0.7),
)
fig
end
# ╔═╡ 5bef43cf-0f9b-40a2-bd47-620f42c36d8d
gdf_skews_on_psbid[(psbid = 215,)]
# ╔═╡ 2795fd06-2f59-4e5b-829d-a8e428646790
md"""
### 分散が異常に大きいやつ
基本的に予想通り、分散は小さく複数回の測定で整合的な結果が得られているが、いくつか例外があった。
はじめはpsbid 127(4回測定)が含まれていたが、これはデータベースの編集ミスであることがわかり、修正した結果、消えた。
!!! todo
他の例外も確認する。
`df_skew_stats_abnormals`を確認
#### psbid: 215
- run: 43, 47
- run 43で"QSPI device ID does not match. inclueded in RUN45-, RUN47と49で問題が無いことを確認"
- run 47を使用?
#### psbid: 291
- run: 83, 94
- 83でcommunication error(SFP半抜け)
#### psbid: 442
- run: 103, 132
- 103の結果がinvalid(460と同じ)
#### psbid: 460
- run: 105, 132
- psbid 444と同じく電源の抜き差しによってクロックの0と1000が繰り返されたパターン
- 追試に送られてる
#### psbid: 462
- run: 105, 132
- psbid 460と同じく105がだめ
#### psbid: 545
- run: 126, 132
- どちらも測定結果自体には変なところはない
- どちらも1回だけ立ち上がりがある
- 立ち上がりもそれほど長くない
- 126でQSPIpが失敗してるので結果は使わない、132を使う
- 126が電源が不安定なときだったかもしれないが、記録がない
#### psbid: 799
- run: 217, 236
- 217の結果が壊れてる
#### psbid: 802
- run: 217, 236
- 217の結果が壊れてる
"""
# ╔═╡ 26976b6c-3954-4a41-a99b-c1aaebdc645d
md"""
### skewの分布
"""
# ╔═╡ 38d472ca-6347-4096-828d-fd1256130a59
df_skews_selected = combine(
gdf_skews_on_psbid,
sdf -> begin
all(ismissing, sdf.skew) && @info "" sdf
if nrow(sdf) == 1
@assert sdf.skew |> first |> !ismissing
(
skew = sdf.skew |> first,
width = sdf.width |> first,
riseup = sdf.riseup |> first,
)
else
if sdf.psbid[1] == 291
df = filter(:runid => ==(94), sdf)
@assert nrow(df) == 1
(
skew = df.skew |> first,
width = sdf.width |> first,
riseup = sdf.riseup |> first,
)
elseif sdf.psbid[1] == 460
df = filter(:runid => ==(132), sdf)
@assert nrow(df) == 1
(
skew = df.skew |> first,
width = sdf.width |> first,
riseup = sdf.riseup |> first,
)
elseif sdf.psbid[1] == 545
df = filter(:runid => ==(132), sdf)
@assert nrow(df) == 1
(
skew = df.skew |> first,
width = sdf.width |> first,
riseup = sdf.riseup |> first,
)
else
# assume that runid is chronological
i = argmax(sdf.runid .|> (id -> ismissing(id) ? -1 : id))
(skew = sdf.skew[i], width = sdf.width[i], riseup = sdf.riseup[i])
end
end
end,
)
# ╔═╡ 310710da-ebb2-4f54-b238-38d493a6a533
let
skews = df_skews_selected.skew |> skipmissing |> collect
fig = Figure()
ax = Axis(fig[1, 1], title = "skews (n = $(length(skews)))", xlabel = "skew / ns")
stephist!(ax, skews, bins = range(minimum(skews), maximum(skews), step = 1 / 57))
fig
end
# ╔═╡ d92e0f9f-ed53-4ad6-a390-5a395e8ab8bc
md"""
#### 異常に小さい値 (psbid: 444)
- 出荷済み
"""
# ╔═╡ e9964184-1a2a-4ab9-bc22-2705a25393ec
filter(:skew => (x -> !ismissing(x) && x < -3), df_skews_selected)
# ╔═╡ bedf8dff-e109-4757-82e5-3232fcad752d
md"""
#### 欠損値(psbid: 255)
"""
# ╔═╡ f2d0ea9b-ede7-496a-8d1f-9f748f9d1666
transform(
filter(:skew => ismissing, df_skews_selected),
:psbid => ByRow(psbid -> begin
psbid in qaqc_dispatch.psb_id
end) => :is_dispatched,
)
# ╔═╡ f5bc8b1a-3fee-48ed-9910-367a1cda632e
md"""
- psbid: 255
- Si not locked
"""
# ╔═╡ 106b8abe-0040-48f1-b663-c00ca7673520
filter(:riseup => !=(1), df_skews_selected)
# ╔═╡ a06d16ee-a4be-40de-8dac-fd818754373c
md"""
#### 立ち上がりが複数回(psbid: 255, 435, 444, 460)
skew結果として使った測定について、立ち上がり回数が1ではないもののリスト
##### psbid: 435
- 立ち上がり後途中で何故か0が入ってる
- 出荷済み
"""
# ╔═╡ 9f3f780d-da6e-44b4-a002-c2f088681e9c
df_skews_selected_sorted = let
df = sort(df_skews_selected, :skew)
dropmissing!(df, :skew)
df
end
# ╔═╡ 07342d98-3889-4a19-8419-6d113fffb42e
md"""
#### 立ち上がり時間の分布
"""
# ╔═╡ 939aba6b-b03c-42b6-83b3-9cea5f4eb858
let
skew_widths = df_skews_selected.width |> skipmissing |> collect
bins = range(0, maximum(skew_widths), step = 1 / 57)# .- 0.01
hist(
skew_widths,
bins = bins,
bar_labels = :y,
label_size = 14,
label_formatter = x -> "$(round(Int, x))",
axis = (
title = "clock rise span distribution",
xlabel = "rise up span / ns",
ylabel = "counts",
limits = ((0, 0.18), (0, nothing)),
# xticks = (bins, string.(round.(bins, digits = 3))),
# xticklabelrotation = π / 3,
),
)
end
# ╔═╡ aa9b78bc-8d66-4df2-bd06-1cbf21190488
filter(:width => (x -> ismissing(x) || x < 0.06), df_skews_selected)
# ╔═╡ 86437ee6-ccea-43fa-bd93-d86fe055f28d
md"""
# プロットまとめ
- 何らかの異常が見られたものをすべて除外してプロット
!!! todo
skew測定が使い物になるかのフラグをデータベースにいれる?
"""
# ╔═╡ 2a24c277-6679-49f3-b387-6937b7661a25
invalid_measurements = [215, 291, 442, 460, 462, 545, 799, 802, 444, 255, 435]
# ╔═╡ 13b4112f-96ab-41a1-8ef1-d940771f6ece
df_skews_selected_valids = let
df = filter(:psbid => !in(invalid_measurements), df_skews_selected)
df
end
# ╔═╡ 6a856a55-2611-41d0-a2c7-3645c066fc3c
begin
@assert all(!ismissing, df_skews_selected_valids.skew)
@assert all(!ismissing, df_skews_selected_valids.width)
@assert all(==(1), df_skews_selected_valids.riseup)
end
# ╔═╡ 4a4ef945-b312-44ed-ab62-ce01fc33f926
let
bins = range(
minimum(df_skews_selected_valids.skew) - 5 / 57,
maximum(df_skews_selected_valids.skew) + 5 / 57,
step = 2 / 57,
)
fig = Figure()
ax = Axis(
fig[1, 1],
title = "skews",
limits = (nothing, (nothing, nothing)),
xlabel = "skew / ns",
)
sh1 = stephist!(ax, df_skews_selected_valids.skew, bins = bins)
Legend(
fig[1, 1],
[sh1],
["""
n = $(nrow(df_skews_selected_valids))
μ = $(@sprintf "%.2g" mean(df_skews_selected_valids.skew))
σ = $(@sprintf "%.2g" std(df_skews_selected_valids.skew))
"""],
tellwidth = false,
tellheight = false,
halign = :right,
valign = :top,
margin = (10, 10, 10, 10),
)
fig
end
# ╔═╡ 46b2a3cd-d2e6-4277-8b65-9c61f25f69e8
3/57
# ╔═╡ 13bb4978-b98d-44a3-a4b6-4241cadc609b
let
bins = range(
minimum(df_skews_selected_valids.width) - 1 / 57,
maximum(df_skews_selected_valids.width) + 2 / 57,
step = 1 / 57,
)
fig = Figure()
ax = Axis(
fig[1, 1],
title = "rise up span",
xlabel = "time / ns",
xticks = (
bins,
string.(round.(bins, digits = 3)),# .* "," .* string.(round.(Int64, bins * 57)),
),
xticklabelrotation = π / 3,
)
h1 = hist!(
ax,
df_skews_selected_valids.width,
bins = bins,
bar_labels = :y,
label_formatter = x -> "$(round(Int, x))",
flip_labels_at = 330,
)
Legend(
fig[1, 1],
[h1],
["""
n = $(nrow(df_skews_selected_valids))
μ = $(@sprintf "%.2g" mean(df_skews_selected_valids.width))
σ = $(@sprintf "%.2g" std(df_skews_selected_valids.width))
"""],
tellwidth = false,
tellheight = false,
halign = :right,
valign = :top,
margin = (10, 10, 10, 10),
)
fig
end
# ╔═╡ 6c3c7669-d594-425d-bf05-9aa217c7656e
md"""
# turn on curves
- lines on
- the minimum and maximum skews
- the minimum and maximum widths
"""
# ╔═╡ e9b3f541-d87d-4424-8b82-be1b7b3273d8
let
psbid_width_min, psbid_width_max, psbid_width_typical = let
df_normal = filter(:width => >(0.06), df_skews_selected_sorted)
sort!(df_normal, :width)
df_typical = filter(:width => (x -> 0.08 < x < 0.11), df_normal)
rng = Random.Xoshiro(123)
id_rand_typical = rand(rng, 1:nrow(df_typical))
first(df_normal).psbid, last(df_normal).psbid, df_typical[id_rand_typical, :psbid]
end
psbid_with_lines = [psbid_width_max, psbid_width_min, psbid_width_typical]
fig = Figure()
ax = Axis(
fig[1, 1],
title = "clock turn on curves",
subtitle = "aligned on the last count = 0 points",
xlabel = "ns",
ylabel = "counts",
limits = ((-0.05, 0.15), (0, 1000)),
)
for file in clk_files
psbid, runid = parse_filename(file)
if psbid == 255
@info "Si not locked: skipped" psbid
continue
end
single_runs = filter(
[:psboard_id, :runid] => (
(ref_psbid, ref_runid) -> begin
psbid == ref_psbid && runid == ref_runid
end
),
qaqc_single_results,
)
if nrow(single_runs) != 1
if nrow(single_runs) != 0
@info "skipped" psbid runid nrow(single_runs)
end
continue
end
# offset = qaqc_positions.rising_ns[single_runs.position[1]]
offset_pos = let
# df = filter(:psbid => ==(psbid), df_skews_selected_sorted)
# @assert nrow(df) == 1 "nrow: $(nrow(df)), psbid: $(psbid)"
# df.skew[1] +
qaqc_positions.rising_ns[single_runs.position[1]]
end
if psbid in psbid_with_lines
points =
eachline(file) .|>
PSBoardDataBase.ClockParser._parse_line .|>
(x -> (x[1] - offset_pos, x[2]))
id_first_over0 = findfirst(points) do ((time, count))
count > 0
end
points = map(points) do ((time, count))
time - points[id_first_over0][1], count
end
stds = map(points) do ((time, count))
sqrt(count * (1000 - count) / 1000)
end
label, color = if psbid == psbid_width_max
"lomgest ($psbid)", (:red, 0.8)
elseif psbid == psbid_width_min
"shortest ($psbid)", (:blue, 0.8)
elseif psbid == psbid_width_typical
"typical ($psbid)", (:green, 0.8)
end
scatterlines!(ax, points, label = label, color = color)
errorbars!(ax, points, stds, whiskerwidth = 10, color = color)
end
end
axislegend(ax, position = :rb)
fig
end
# ╔═╡ Cell order:
# ╟─f25e7e08-8a73-4cac-ac7c-d310725c558d
# ╠═7c69d12c-80a5-11ef-2674-e155a3483342
# ╠═effa7ed9-2ac4-4468-a474-e2bb662580fe
# ╠═1a6322d4-9deb-4709-aa2e-df7d8be5b16f
# ╠═11537f91-e16b-45f0-9768-6df842371d36
# ╠═268d3015-b8d3-48d9-b74a-062e258e0ec1
# ╟─62105832-df1f-4834-8da6-c542e22207d1
# ╠═dea6f143-7916-4765-92f6-2bfb97a72835
# ╟─41543c0c-d7c4-447b-a268-0d356c88d92c
# ╠═633ecdee-7e2f-4de8-833a-21cd0351c1f1
# ╟─87f1966e-3b07-4f9d-8fc4-7b7aa4319d50
# ╠═f379d43c-9300-41f4-b0fc-3c9d749e3105
# ╟─33e099bc-ac4b-4b5f-88e7-20f4463c98ef
# ╠═0e13f848-0efb-4775-9e3e-518b32588a79
# ╠═181c3fe6-d087-42e2-b175-3fb84c42e3e8
# ╟─dd669f14-989b-45ee-87d8-5d9cf282fafd
# ╠═1e9c3944-0cd4-40da-9014-a9153d4e95ed
# ╟─322cb530-65a5-4973-86f8-01ccc2439cc4
# ╠═c1caca5f-4cfd-4f22-82b4-7925002359e6
# ╠═3e5607fd-2a8a-4a1a-9e7b-3f23ef216fad
# ╠═c1b9c0c3-00f8-4199-b07f-8888f1be625c
# ╠═d6d04013-e0e4-49d5-a450-07ae164bfaa3
# ╠═0e680044-e4e1-4f39-a5c5-afa5c53fc7a7
# ╠═d7541b93-4c49-4dcd-bda0-91e447f44596
# ╟─e7faa647-79cd-4247-a3f2-9868c7b9d4ca
# ╠═3a412a98-4a2d-4bfb-8053-b0f480fae921
# ╟─b38bbed4-8721-4e92-a546-f7926cc07dd3
# ╠═420dce0e-4757-48d9-84ec-7ddfac2fdff6
# ╠═99902640-fee3-4502-9c7e-cb08834bad0b
# ╠═c79c6684-1b03-41b5-aa90-ef8c7a8eb69c
# ╠═875bec26-e576-4f48-ba14-464bce503d75
# ╟─ec774495-c0be-47a4-9d2c-b48159c07013
# ╠═d082e07c-3b42-4362-bebf-63356979a49b
# ╠═25688d24-5aee-43d3-aff9-b9efa0556070
# ╠═239a808c-0411-4542-ae68-6ae6af333bd2
# ╠═8e57bde1-5f97-483d-906e-8ebfb65016d0
# ╠═92c2ac3f-8034-4e9e-aadb-8bb166fbc948
# ╠═893253c3-f0b2-401f-b892-b23291bcf5c1
# ╠═6467dcaa-6bd6-45c7-8c08-b310a09b8b0b
# ╠═19f85f1b-07d3-48c2-9ca6-a5a8eb1ab746
# ╠═79e2f5d8-4609-4e9f-949e-6dc1f88c0b19
# ╠═eae649db-6b2b-4530-83a8-3438f29423cc
# ╠═d607e10e-854f-4652-9a34-9e22a188e315
# ╠═5bef43cf-0f9b-40a2-bd47-620f42c36d8d
# ╠═2795fd06-2f59-4e5b-829d-a8e428646790
# ╟─26976b6c-3954-4a41-a99b-c1aaebdc645d
# ╠═38d472ca-6347-4096-828d-fd1256130a59
# ╠═310710da-ebb2-4f54-b238-38d493a6a533
# ╟─d92e0f9f-ed53-4ad6-a390-5a395e8ab8bc
# ╠═e9964184-1a2a-4ab9-bc22-2705a25393ec
# ╟─bedf8dff-e109-4757-82e5-3232fcad752d
# ╠═f2d0ea9b-ede7-496a-8d1f-9f748f9d1666
# ╠═f5bc8b1a-3fee-48ed-9910-367a1cda632e
# ╠═106b8abe-0040-48f1-b663-c00ca7673520
# ╠═a06d16ee-a4be-40de-8dac-fd818754373c
# ╠═9f3f780d-da6e-44b4-a002-c2f088681e9c
# ╠═07342d98-3889-4a19-8419-6d113fffb42e
# ╠═939aba6b-b03c-42b6-83b3-9cea5f4eb858
# ╠═aa9b78bc-8d66-4df2-bd06-1cbf21190488
# ╠═86437ee6-ccea-43fa-bd93-d86fe055f28d
# ╠═2a24c277-6679-49f3-b387-6937b7661a25
# ╠═13b4112f-96ab-41a1-8ef1-d940771f6ece
# ╠═6a856a55-2611-41d0-a2c7-3645c066fc3c
# ╠═4a4ef945-b312-44ed-ab62-ce01fc33f926
# ╠═46b2a3cd-d2e6-4277-8b65-9c61f25f69e8
# ╠═13bb4978-b98d-44a3-a4b6-4241cadc609b
# ╠═6c3c7669-d594-425d-bf05-9aa217c7656e
# ╠═e9b3f541-d87d-4424-8b82-be1b7b3273d8
......@@ -8,47 +8,62 @@ using DataFrames
using Dates
include("parse_qaqc_master_log.jl")
include("parse_clock.jl")
include("create_table.jl")
include("download_csv.jl")
include("import_data.jl")
include("dispatch_checker.jl")
using .DispatchChecker
"""
create_database_from_exported_csvs(
dbpath::AbstractString;
single_run_csv::AbstractString,
runlist_csv::AbstractString,
dispatch_csv::AbstractString,
hundred_csv::AbstractString,
single_run_csv::AbstractString = DownloadCSVs.download_single_run_csv(),
runlist_csv::AbstractString = DownloadCSVs.download_runlist_csv(),
dispatch_csv::AbstractString = DownloadCSVs.download_dispatch_csv(),
hundred_csv::AbstractString = DownloadCSVs.download_hundred_run_csv(),
jathubs_csv::AbstractString = DownloadCSVs.download_jathub_csv(),
masterlog_dir::AbstractString,
slavelog_dir::AbstractString,
)
Create database at `dbpath` and import data from CSV and master log files.
# Arguments
## Required
- `dbpath`: where the database will be created
- `masterlog_dir`: path to the directory (`log`) where all JATHub master logs are stored
- `slavelog_dir`: path to the directory where all JATHub slave logs are stored
## Optional
- `single_run_csv`: CSV of single run results exported from the Google sheets database
- `runlist_csv`: CSV of run lists exported from the Google sheets database
- `dispatch_csv`: CSV of dispatch lists exported from the Google sheets database
- `hundred_csv`: CSV of 100 tests results exported from the Google sheets database
- `masterlog_dir`: path to the directory (`log`) where all JATHub master log is stored
- `jathubs_csv`: CSV for jathub list used in QAQC. Used to add skew.
"""
function create_database_from_exported_csvs(
dbpath::AbstractString;
single_run_csv::AbstractString,
runlist_csv::AbstractString,
dispatch_csv::AbstractString,
hundred_csv::AbstractString,
single_run_csv::AbstractString = DownloadCSVs.download_single_run_csv(),
runlist_csv::AbstractString = DownloadCSVs.download_runlist_csv(),
dispatch_csv::AbstractString = DownloadCSVs.download_dispatch_csv(),
hundred_csv::AbstractString = DownloadCSVs.download_hundred_run_csv(),
jathubs_csv::AbstractString = DownloadCSVs.download_jathub_csv(),
masterlog_dir::AbstractString,
slavelog_dir::AbstractString,
)
db = create_database(dbpath)
single_result_df = CSV.read(single_run_csv, DataFrame)
runlist_table = CSV.read(runlist_csv, DataFrame)
dispatch_table = CSV.read(dispatch_csv, DataFrame)
extra_100test_result_df = CSV.read(hundred_csv, DataFrame)
jathubs_table = CSV.read(jathubs_csv, DataFrame)
insert_qaqc_campaign_id(db)
insert_qaqc_positions(db)
insert_qaqc_positions(db, jathubs_table)
add_psboard_ids(db, single_result_df)
add_qaqc_runlist_from_runlist(db, runlist_table)
......@@ -56,6 +71,7 @@ function create_database_from_exported_csvs(
add_qaqc_dispatch(db, dispatch_table)
add_qaqc_runlist_from_masterlogs(db, masterlog_dir)
add_qaqc_100test_result(db, extra_100test_result_df)
add_skew_from_slave_clk_logs(db, slavelog_dir)
db
end
......
"""
Module to check PSBoard is dispatchable.
Use [`interactive_dispatch_checker`](@ref) for interactive use in QAQC.
"""
module DispatchChecker
using SQLite
using DBInterface
using DataFrames
using Printf
export DbConnection
export is_dispatchable
"""
Stores connection to database.
DbConnection(db::SQLite.DB)
Constructor.
"""
mutable struct DbConnection
db::SQLite.DB
df_single_result::DataFrame
df_extra_results::DataFrame
function DbConnection(db::SQLite.DB)
df_single_results =
DBInterface.execute(db, sql"select * from qaqc_single_run_results") |> DataFrame
df_extra_results =
DBInterface.execute(db, sql"select * from qaqc_extra_run_results") |> DataFrame
new(db, df_single_results, df_extra_results)
end
end
THRESHOLD_INSUFFICIENT_RESET_WITH_10 = 0.1
THRESHOLD_RESET_FAILED_THOUGH_RECONFIG_DONE = 0.1
THRESHOLD_ALWAYS_HIT_FLAG_TRUE = 0.1
THRESHOLD_BCID_FAIL = 0.1
"""
is_dispatchable(conn::DbConnection, psbid::Int64)
Test whether the PS Board with `psbid` is dispatchable from QAQC results in `conn`.
`conn` is type of [`DbConnection`](@ref).
Since the current implemented logic is somewhat simple, it returns `missing` if it cannot be decided.
"""
function is_dispatchable(conn::DbConnection, psbid::Int64)
single_results = filter(:psboard_id => ==(psbid), conn.df_single_result)
extra_results = filter(:psboard_id => ==(psbid), conn.df_extra_results)
is_single_passed::Bool =
nrow(single_results) == 1 && let
single_result = Tables.rowtable(single_results) |> first
# Clock test update was wrong
# manually assign to psboards whose clock test failed
if 221 <= single_result.runid < 234
if single_result.psboard_id == 915
false
elseif single_result.psboard_id in [860, 889, 876, 892]
# though 860 has 2+ rows
true
end
else
single_result.resistance_test_passed == 1 &&
single_result.qspip == 1 &&
single_result.recov == 1 &&
single_result.power == 1 &&
single_result.clock == 1
end
end
@debug "" is_single_passed single_results single_results.note
is_extra_passed::Bool =
nrow(extra_results) == 1 && let
extra_result = Tables.rowtable(extra_results) |> first
f1 =
!ismissing(extra_result.insufficient_reset_with_10) &&
extra_result.insufficient_reset_with_10 >=
extra_result.num_tests * THRESHOLD_INSUFFICIENT_RESET_WITH_10
f2 =
!ismissing(extra_result.reset_failed_though_reconfig_done) &&
extra_result.reset_failed_though_reconfig_done >=
extra_result.num_tests * THRESHOLD_RESET_FAILED_THOUGH_RECONFIG_DONE
f3 =
!ismissing(extra_result.always_hit_flag_true) &&
extra_result.always_hit_flag_true >=
extra_result.num_tests * THRESHOLD_ALWAYS_HIT_FLAG_TRUE
f4 =
!ismissing(extra_result.bcid_fail) &&
extra_result.bcid_fail >= extra_result.num_tests * THRESHOLD_BCID_FAIL
@debug "" extra_result extra_result.note f1 f2 f3 f4
!(f1 || f2 || f3 || f4)
end
@debug "" is_extra_passed extra_results
if is_single_passed & is_extra_passed
return true
end
# TODO: not yet implemented
@info "results" single_results select(
extra_results,
Not(:id, :num_tests, :dac_is_0, :bcid_fail_111, :bcid_fail_000, :low_efficiency),
)
@debug "results(full)" extra_results
return missing
end
"""
Interactive session for QAQC to check PSBoard is ready for dispatch.
"""
function interactive_dispatch_checker end
"""
interactive_dispatch_checker(conn::DbConnection)
"""
function interactive_dispatch_checker(conn::DbConnection)
dispatch_list = Int64[]
println("Type \"quit\" to exit")
for _ in 1:1000
printstyled("PSBoard ID: ", bold = true)
psbid = let
rawin = readline()
if lowercase(rawin) == "quit"
printstyled("Quit\n", italic = true)
println()
break
end
m = match(r"^PS(\d+)", rawin)
if isnothing(m)
printstyled("Invalid input\n", color = :red)
continue
end
parse(Int64, m[1])
end
isdispatchable = is_dispatchable(conn, psbid)
if ismissing(isdispatchable)
printstyled("Please determine [y/n]: ", underline = true, color = :cyan)
isdispatchable = let
rawin = readline()
@info "" rawin
if rawin == "y" || rawin == "Y"
true
elseif rawin == "n" || rawin == "N"
false
else
@warn "Invalid input falling back to \"no\""
false
end
end
end
if isdispatchable
printstyled("Ok\n", bold = true, color = :green)
if psbid in dispatch_list
println("PSBoard ID $(psbid) is already in dispatch list")
else
push!(dispatch_list, psbid)
println("Added to dispatch list")
end
else
printstyled("No\n", bold = true, color = :red)
end
end
printstyled("Finished\n")
map(dispatch_list) do psbid
@sprintf "PS%06d" psbid
end |> (v -> join(v, "\n")) |> print
println()
printstyled("Paste the result to google sheets\n", underline = true)
@info "Tips: You can use `join(ans, \"\\n\") |> clipboard` in REPL to copy the result to the clipboard"
return dispatch_list
end
"""
interactive_dispatch_checker(database_file::AbstractString)
Interactive session for QAQC to check provided PSBoard is ready to dispatch.
"""
function interactive_dispatch_checker(database_file::AbstractString)
conn = DbConnection(SQLite.DB(database_file))
interactive_dispatch_checker(conn)
end
end # module DispatchChecker
"""
Functions to download result CSVs from Google Sheets.
All functions return the filename in `String`.
"""
module DownloadCSVs
using Downloads
"""
download_single_run_csv(outfile::AbstractString = tempname()) -> filename
# Example
```jldoctest
julia> file = PSBoardDataBase.DownloadCSVs.download_single_run_csv();
julia> using CSV
julia> using DataFrames
julia> CSV.read(file, DataFrame) isa DataFrame
true
```
"""
function download_single_run_csv(outfile::AbstractString = tempname())
URL_SINGLE_RUN_CSV::String = "https://docs.google.com/spreadsheets/u/1/d/128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU/export?format=csv&id=128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU&gid=408695746"
Downloads.download(URL_SINGLE_RUN_CSV, outfile)
end
"""
download_runlist_csv(outfile::AbstractString = tempname()) -> filename
"""
function download_runlist_csv(outfile::AbstractString = tempname())
URL_RUNLIST_CSV::String = "https://docs.google.com/spreadsheets/u/1/d/128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU/export?format=csv&id=128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU&gid=252134084"
Downloads.download(URL_RUNLIST_CSV, outfile)
end
"""
download_dispatch_csv(outfile::AbstractString = tempname()) -> filename
"""
function download_dispatch_csv(outfile::AbstractString = tempname())
URL_DISPATCH_CSV::String = "https://docs.google.com/spreadsheets/u/1/d/128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU/export?format=csv&id=128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU&gid=707598141"
Downloads.download(URL_DISPATCH_CSV, outfile)
end
"""
download_hundred_run_csv(outfile::AbstractString = tempname()) -> filename
"""
function download_hundred_run_csv(outfile::AbstractString = tempname())
URL_HUNDRED_RUN_CSV::String = "https://docs.google.com/spreadsheets/u/1/d/128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU/export?format=csv&id=128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU&gid=615256061"
Downloads.download(URL_HUNDRED_RUN_CSV, outfile)
end
"""
download_jathub_csv(outfile::AbstractString = tempname()) -> filename
"""
function download_jathub_csv(outfile::AbstractString = tempname())
URL_JATHUB_CSV::String = "https://docs.google.com/spreadsheets/u/1/d/128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU/export?format=csv&id=128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU&gid=303843601"
Downloads.download(URL_JATHUB_CSV, outfile)
end
end # module DownloadCSVs
"""
insert_version_info(db::SQLite.DB)
Insert version information of this software as string.
"""
function insert_version_info(db::SQLite.DB)
stmt = DBInterface.prepare(
db,
sql"""
INSERT INTO versions VALUES (:converter)
""",
)
DBInterface.execute(stmt, (; converter = pkgversion(@__MODULE__) |> string))
nothing
end
"""
insert_qaqc_campaign_id(db::SQLite.DB)
Fill qaqc_campaigns table in `db`.
"""
function insert_qaqc_campaign_id(db::SQLite.DB)
campaigns = [1, 2, 3]
campaigns = [1, 2, 3, 4]
dates = [
(DateTime(2024, 7, 22), DateTime(2024, 7, 24)),
(DateTime(2024, 8, 6), DateTime(2024, 8, 9)),
(DateTime(2024, 9, 10), DateTime(2024, 9, 12)),
(DateTime(2024, 9, 30), DateTime(2024, 10, 4)),
]
stmt = DBInterface.prepare(
db,
......@@ -28,11 +46,18 @@ function insert_qaqc_campaign_id(db::SQLite.DB)
end
"""
insert_qaqc_positions(db::SQLite.DB)
insert_qaqc_positions(db::SQLite.DB, jathub_db_table::DataFrame)
Fill qaqc_positions table in `db`.
Argument `jathub_db_table` is for skew for each positions.
"""
function insert_qaqc_positions(db::SQLite.DB)
function insert_qaqc_positions(db::SQLite.DB, jathub_db_table::DataFrame)
dropmissing!(jathub_db_table, :psb_position)
transform!(
jathub_db_table,
Symbol("立ち上がり [ns]") => ByRow(Float64) => Symbol("立ち上がり [ns]"),
)
stmt = DBInterface.prepare(
db,
sql"""
......@@ -41,7 +66,8 @@ function insert_qaqc_positions(db::SQLite.DB)
:id,
:name,
:station,
:position
:position,
:rising_ns
)
""",
)
......@@ -52,6 +78,12 @@ function insert_qaqc_positions(db::SQLite.DB)
name = ["B-$i-$j" for i in 0:1 for j in 1:9],
station = [fill(0, 9); fill(1, 9)],
position = [collect(1:9); collect(1:9)],
rising_ns = [
filter(
:psb_position => (s -> !ismissing(s) && s == "B-$i-$j"),
jathub_db_table,
).var"立ち上がり [ns]" |> first for i in 0:1 for j in 1:9
],
),
)
......@@ -163,8 +195,10 @@ function get_campaign_id_from_run_id(runid::Integer)
1
elseif runid < 98
2
elseif runid < 169
elseif runid < 188
3
elseif runid < 242
4
else
@error "Fix this function"
DomainError("runid $(runid) is not registered to the software")
......@@ -179,7 +213,7 @@ end
) -> nothing
Fill `qaqc_single_run_results` in `db` from single result table DataFrame.
Additionaly, it
Additionally, it
1. automatically add `runid` if it's not in `qaqc_runs` table in `db`.
2. automatically update fields in `qaqc_runs` table.
"""
......@@ -671,3 +705,49 @@ function add_qaqc_100test_result(db::SQLite.DB, table::DataFrame)
nothing
end
"""
add_skew_from_slave_clk_logs(db::SQLite.DB, logs_dir::AbstractString)
Insert skew measurement result from slave logs with name `psbid_runid_clk.txt`.
See [`ClockParser.get_skew`](@ref) for parse detail.
# Abnormal logs:
- `48_nagoya_irradition_...`: skipped
- `630_190`: broken file
"""
function add_skew_from_slave_clk_logs(db::SQLite.DB, logs_dir::AbstractString)
stmt_insrt = DBInterface.prepare(
db,
sql"""
UPDATE qaqc_single_run_results
SET lvds_tx_skew = :skew
WHERE runid = :runid AND psboard_id = :psbid
""",
)
clk_files =
readdir("$logs_dir/main", join = true) |>
filter(endswith("_clk.txt")) |>
filter(!contains("nagoya"))
DBInterface.transaction(db) do
for file in clk_files
m = match(r"^(?<psbid>\d+)_(?<runid>\d+)_clk.txt$", splitdir(file) |> last)
if isnothing(m)
error("Invalid filename $(file)")
end
if m[:psbid] == "630" && m[:runid] == "190"
@debug "skipping... (psbid=630 runid=190 is broken)"
continue
end
DBInterface.execute(
stmt_insrt,
(skew = ClockParser.get_skew(file), runid = m[:runid], psbid = m[:psbid]),
)
end
end
nothing
end
module ClockParser
export get_skew
function _parse_line(line::AbstractString)
time, high, _ = split(line)
parse(Float64, time), parse(Float64, high)
end
"""
get_skew(file::T) where {T <: AbstractString} -> Union{Float64, Missing}
Get skew from clock result file `file`.
It returns `missing` for invalid files.
To see the detailed reason, increase log level to `DEBUG`.
Invalid cases are:
- first line has >0 counts => "Unexpected first line"
- no measurement has >500 counts => "Clock skew out of range"
"""
function get_skew(file::T) where {T <: AbstractString}
@debug "file: $(file)"
lines = Iterators.Stateful(eachline(file))
was_0_before = false
# criteria is changed from QAQC for skew parsing
let
first_line = popfirst!(lines)
time, high = _parse_line(first_line)
if high == 0
was_0_before = true
end
end
time_and_counts = Iterators.map(_parse_line, lines)
for (time, high) in time_and_counts
if high == 0
was_0_before = true
elseif was_0_before && high >= 500
return time
end
end
@debug "Clock skew out of range"
return missing
end
"""
search_oscillation(file::T) where {T <: AbstractString}
Search oscillation (two or more rise up) for clock measurement file.
"""
function count_riseup(file::T) where {T <: AbstractString}
lines = Iterators.Stateful(eachline(file))
rising_count = 0
first_line = popfirst!(lines)
is_high = let
time, high = _parse_line(first_line)
high >= 500
end
time_and_counts = Iterators.map(_parse_line, lines)
for (time, high) in time_and_counts
if !is_high && high >= 500
is_high = true
rising_count += 1
elseif is_high && high < 500
is_high = false
end
end
return rising_count
# lines = eachline(file)
# time_and_counts = Iterators.map(_parse_line, lines)
# is_high = Iterators.map(time_and_counts) do (time, counts)
# counts >= 500
# end
# edges = Iterators.map(accumulate((p, n) -> (n, !p[1] & n), is_high, init = (false, false))) do x
# _prev, edge = x
# edge
# end
#
# return sum(edges)
end
"""
Return Tuple of
- skew (first time >500)
- rise up full (last 0 to first 1000)
If clock is abnormal (i.e., which returns `missing` when [`get_skew`](@ref) is applied),
this returns Tuple of 2 `missing`s.
"""
function get_skew_and_riseup(file::T) where {T <: AbstractString}
lines = Iterators.Stateful(eachline(file))
last_low_time = missing
first_high_time = missing
skew = missing
is_rised = false
let
_time, high = _parse_line(popfirst!(lines))
if high == 0
last_low_time = time
end
end
for line in lines
time, high = _parse_line(line)
if high == 0
last_low_time = time
elseif !ismissing(last_low_time) && !is_rised && high >= 500
skew = time
is_rised = true
elseif !ismissing(skew) && high == 1000
first_high_time = time
break
end
end
if first_high_time === missing
@debug "Clock skew out of range"
return (missing, missing)
end
return (skew, first_high_time - last_low_time)
end
end # module ClockParser
CREATE TABLE versions (
converter TEXT
);
CREATE TABLE ps_boards (
id INTEGER NOT NULL PRIMARY KEY,
daughterboard_id INTEGER
......@@ -17,6 +21,7 @@ CREATE TABLE qaqc_single_run_results (
asdtp INTEGER,
reset INTEGER,
qaqc_result INTEGER,
lvds_tx_skew REAL,
note TEXT,
FOREIGN KEY("runid") REFERENCES "qaqc_runs"("id"),
FOREIGN KEY("psboard_id") REFERENCES "ps_boards"("id"),
......@@ -89,7 +94,8 @@ CREATE TABLE qaqc_positions (
id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
station INTEGER NOT NULL,
position INTEGER NOT NULL
position INTEGER NOT NULL,
rising_ns NUMERIC NOT NULL
);
CREATE VIEW qaqc_single_run_table
......@@ -109,8 +115,8 @@ AS
qaqc_single_run_results.asdtp,
qaqc_single_run_results.reset,
qaqc_single_run_results.qaqc_result,
qaqc_single_run_results.lvds_tx_skew - qaqc_positions.rising_ns AS lvds_tx_skew,
qaqc_runs.shiftscript_ver,
qaqc_runs.shifter,
qaqc_single_run_results.note AS result_note
FROM
ps_boards,
......
log/*
slavelogs/main/*
!log/57_long.log
!slavelogs/main/230_51_clk.txt
!slavelogs/main/448_103_clk.txt
!slavelogs/main/444_103_clk.txt
!slavelogs/main/209_51_clk.txt