attr_keyring 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +5 -1
- data/README.md +48 -19
- data/attr_keyring.gemspec +1 -0
- data/attr_keyring.png +0 -0
- data/attr_keyring.svg +9 -9
- data/examples/keyring_sample.rb +10 -5
- data/lib/attr_keyring/version.rb +1 -1
- data/lib/keyring.rb +7 -4
- data/lib/keyring/encryptor/aes.rb +26 -5
- data/lib/keyring/key.rb +19 -12
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89af9cded4db3be4acd36e986f936b489bce666f5c35f458206c2816f0b1e28a
|
4
|
+
data.tar.gz: 0fbf99ba85dff08dde797e3f8f01d7c5c6492d7c253cc3b81dabcf3e87a51a3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e6225927feb4f6bff64778f978516a9dbdf23f141fd0e2df478f039c12ec948c63f71e0103571ec811385289e02400da2c21fdb7264e7756a46e2bc387048d1
|
7
|
+
data.tar.gz: 1ef79f040ddb7f720b8cfbb7d8239aea7e6a1ea68f8fb637ae965baa0e7c421d942ffe6c3b5aa9b0fbf688615d42aabf43e047e1c12a681e0d27be14f6e07e79
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
attr_keyring (0.
|
4
|
+
attr_keyring (0.5.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -19,6 +19,9 @@ GEM
|
|
19
19
|
tzinfo (~> 1.1)
|
20
20
|
arel (9.0.0)
|
21
21
|
ast (2.4.0)
|
22
|
+
attr_vault (2.1.1)
|
23
|
+
pg (>= 0.18)
|
24
|
+
sequel (>= 4.13, < 6.0)
|
22
25
|
awesome_print (1.8.0)
|
23
26
|
byebug (10.0.2)
|
24
27
|
coderay (1.1.2)
|
@@ -83,6 +86,7 @@ PLATFORMS
|
|
83
86
|
DEPENDENCIES
|
84
87
|
activerecord
|
85
88
|
attr_keyring!
|
89
|
+
attr_vault
|
86
90
|
bundler
|
87
91
|
minitest-utils
|
88
92
|
mocha
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
N.B.: attr_keyring is *not* for encrypting passwords--for that, you should use something like [bcrypt](https://github.com/codahale/bcrypt-ruby). It's meant for encrypting sensitive data you will need to access in plain text (e.g. storing OAuth token from users). Passwords do not fall in that category.
|
12
12
|
|
13
|
-
This library is heavily inspired by [attr_vault](https://github.com/uhoh-itsmaciek/attr_vault)
|
13
|
+
This library is heavily inspired by [attr_vault](https://github.com/uhoh-itsmaciek/attr_vault), and can read encrypted messages if you encode them in base64 (e.g. `Base64.strict_encode64(encrypted_by_attr_vault)`).
|
14
14
|
|
15
15
|
## Installation
|
16
16
|
|
@@ -30,6 +30,39 @@ Or install it yourself as:
|
|
30
30
|
|
31
31
|
## Usage
|
32
32
|
|
33
|
+
### Basic usage
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
gem "attr_keyring"
|
37
|
+
require "keyring"
|
38
|
+
|
39
|
+
keyring = Keyring.new("1" => "uDiMcWVNTuz//naQ88sOcN+E40CyBRGzGTT7OkoBS6M=")
|
40
|
+
|
41
|
+
# STEP 1: Encrypt message using latest encryption key.
|
42
|
+
encrypted, keyring_id, digest = keyring.encrypt("super secret")
|
43
|
+
|
44
|
+
puts "🔒 #{encrypted}"
|
45
|
+
puts "🔑 #{keyring_id}"
|
46
|
+
puts "🔎 #{digest}"
|
47
|
+
|
48
|
+
# STEP 2: Decrypted message using encryption key defined by keyring id.
|
49
|
+
decrypted = keyring.decrypt(encrypted, keyring_id)
|
50
|
+
puts "✉️ #{decrypted}"
|
51
|
+
```
|
52
|
+
|
53
|
+
#### Change encryption algorithm
|
54
|
+
|
55
|
+
You can choose between `AES-128-CBC`, `AES-192-CBC` and `AES-256-CBC`. By default, `AES-128-CBC` will be used.
|
56
|
+
|
57
|
+
To specify the encryption algorithm, set the `encryption` option. The following example uses `AES-256-CBC`.
|
58
|
+
|
59
|
+
```js
|
60
|
+
import { keyring } from "@fnando/keyring";
|
61
|
+
|
62
|
+
const keys = {"1": "uDiMcWVNTuz//naQ88sOcN+E40CyBRGzGTT7OkoBS6M="};
|
63
|
+
const encryptor = keyring(keys, {encryption: "aes-256-cbc"});
|
64
|
+
```
|
65
|
+
|
33
66
|
### Configuration
|
34
67
|
|
35
68
|
As far as database schema goes:
|
@@ -93,34 +126,30 @@ user.encrypted_email
|
|
93
126
|
|
94
127
|
### Encryption
|
95
128
|
|
96
|
-
By default, AES-128-CBC is the algorithm used for encryption. This algorithm uses 16 bytes keys.
|
129
|
+
By default, AES-128-CBC is the algorithm used for encryption. This algorithm uses 16 bytes keys, but you're required to use a key that's double the size because half of that keys will be used to generate the HMAC. The first 16 bytes will be used as the encryption key, and the last 16 bytes will be used to generate the HMAC.
|
130
|
+
|
131
|
+
Using random data base64-encoded is the recommended way. You can easily generate keys by using the following command:
|
97
132
|
|
98
133
|
```console
|
99
|
-
$ dd if=/dev/urandom bs=
|
134
|
+
$ dd if=/dev/urandom bs=32 count=1 2>/dev/null | openssl base64 -A
|
135
|
+
qUjOJFgZsZbTICsN0TMkKqUvSgObYxnkHDsazTqE5tM=
|
100
136
|
```
|
101
137
|
|
102
|
-
Include the result of this in the `value` section of the key description in the keyring.
|
103
|
-
|
104
|
-
You can also use AES-256-CBC, which uses 32-bytes keys. To specify the encryptor when defining the keyring, use `encryptor: AttrKeyring::Encryptor::AES256CBC`.
|
105
|
-
|
106
|
-
```ruby
|
107
|
-
class User < ApplicationRecord
|
108
|
-
attr_keyring ENV["USER_KEYRING"],
|
109
|
-
encryptor: AttrKeyring::Encryptor::AES256CBC
|
110
|
-
end
|
111
|
-
```
|
138
|
+
Include the result of this command in the `value` section of the key description in the keyring. Half this key is used for encryption, and half for the HMAC.
|
112
139
|
|
113
140
|
#### Key size
|
114
141
|
|
115
|
-
|
116
|
-
|
117
|
-
- `aes-
|
142
|
+
The key size depends on the algorithm being used. The key size should be double the size as half of it is used for HMAC computation.
|
143
|
+
|
144
|
+
- `aes-128-cbc`: 16 bytes (encryption) + 16 bytes (HMAC).
|
145
|
+
- `aes-192-cbc`: 24 bytes (encryption) + 24 bytes (HMAC).
|
146
|
+
- `aes-256-cbc`: 32 bytes (encryption) + 32 bytes (HMAC).
|
118
147
|
|
119
148
|
#### About the encrypted message
|
120
149
|
|
121
150
|
Initialization vectors (IV) should be unpredictable and unique; ideally, they will be cryptographically random. They do not have to be secret: IVs are typically just added to ciphertext messages unencrypted. It may sound contradictory that something has to be unpredictable and unique, but does not have to be secret; it is important to remember that an attacker must not be able to predict ahead of time what a given IV will be.
|
122
151
|
|
123
|
-
With that in mind,
|
152
|
+
With that in mind, _attr_keyring_ uses `base64(hmac(unencrypted iv + encrypted message) + unencrypted iv + encrypted message)` as the final message. If you're planning to migrate from other encryption mechanisms or read encrypted values from the database without using _attr_keyring_, make sure you account for this. The HMAC is 32-bytes long and the IV is 16-bytes long.
|
124
153
|
|
125
154
|
### Keyring
|
126
155
|
|
@@ -128,8 +157,8 @@ Keys are managed through a keyring--a short JSON document describing your encryp
|
|
128
157
|
|
129
158
|
```json
|
130
159
|
{
|
131
|
-
"1": "
|
132
|
-
"2": "
|
160
|
+
"1": "uDiMcWVNTuz//naQ88sOcN+E40CyBRGzGTT7OkoBS6M=",
|
161
|
+
"2": "VN8UXRVMNbIh9FWEFVde0q7GUA1SGOie1+FgAKlNYHc="
|
133
162
|
}
|
134
163
|
```
|
135
164
|
|
data/attr_keyring.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
23
|
spec.add_development_dependency "activerecord"
|
24
|
+
spec.add_development_dependency "attr_vault"
|
24
25
|
spec.add_development_dependency "bundler"
|
25
26
|
spec.add_development_dependency "minitest-utils"
|
26
27
|
spec.add_development_dependency "mocha"
|
data/attr_keyring.png
CHANGED
Binary file
|
data/attr_keyring.svg
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="
|
2
|
-
<g fill="none" fill-rule="evenodd">
|
3
|
-
<g transform="translate(
|
4
|
-
<path fill="#E48E66" fill-rule="nonzero" d="
|
5
|
-
<path fill="#D18162" d="
|
6
|
-
<path fill="#F8EC7D" d="
|
7
|
-
<path fill="#63316D" fill-rule="nonzero" d="
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="642" height="513" viewBox="0 0 642 513">
|
2
|
+
<g fill="none" fill-rule="evenodd" transform="translate(-1)">
|
3
|
+
<g transform="translate(135)">
|
4
|
+
<path fill="#E48E66" fill-rule="nonzero" d="M185.611201,120.765318 C169.831179,115.885118 152.89163,123.558993 146.13935,138.657932 C139.38707,153.752507 144.944951,171.518531 159.094661,180.061064 C173.240013,188.599234 191.52653,185.224998 201.70508,172.199489 C211.88363,159.169616 210.750259,140.587315 199.07217,128.893167 C195.310248,125.126071 190.693937,122.33676 185.611201,120.765318 Z M184.77425,74.311747 C226.839779,73.6176932 263.499995,102.859611 272.21824,144.075043 C280.936484,185.286109 259.271647,226.907498 220.540846,243.350891 C181.810047,259.794286 136.871857,246.450125 113.354392,211.520461 C89.8369286,176.590797 94.3355426,129.870952 124.082192,100.083396 C140.189148,83.9062741 161.967323,74.6609565 184.77425,74.311747 Z"/>
|
5
|
+
<path fill="#D18162" d="M185.611201,120.765318 C185.685306,120.79151 185.755052,120.817701 185.824798,120.839527 L185.824798,74.3204765 C185.476068,74.3204765 185.127338,74.3073822 184.77425,74.311747 C136.597232,75.0931033 98.0320781,114.575583 98.3197804,162.827585 C98.6074821,211.075219 137.643421,250.094998 185.824798,250.300158 L185.824798,183.238869 C172.41178,187.490493 157.782565,182.667039 149.51767,171.265354 C141.248416,159.86367 141.196106,144.446077 149.386896,132.987646 C157.577686,121.529214 172.172027,116.609728 185.611201,120.769685 L185.611201,120.765318 Z"/>
|
6
|
+
<path fill="#F8EC7D" d="M365.346525,317.968197 L365.547044,359.916969 L365.512171,360.209432 L331.297422,360.619753 L327.012404,338.898932 L301.402563,330.60521 L296.280594,308.089938 L270.448435,299.988281 L266.70831,274.509095 L231.198901,238.950854 L230.762988,238.191324 C242.053114,231.517061 251.721647,222.420156 259.075486,211.551016 L365.346525,317.968197 Z"/>
|
7
|
+
<path fill="#63316D" fill-rule="nonzero" d="M255.457415,92.9726214 C238.574534,75.9443013 215.998642,65.7823098 192.07578,64.4378527 C177.930427,26.5180844 142.159472,1.03453238 101.74605,0.0829372738 C61.3326295,-0.868658504 24.4108646,22.9081325 8.50006938,60.1207524 C-7.40636811,97.3377379 0.906478076,140.500012 29.4892416,169.126447 C46.9170125,186.687312 70.325498,197.006447 95.0286429,198.019155 C104.941286,223.45469 125.001967,243.595338 150.376416,253.587091 C175.750867,263.583208 204.13747,262.52685 228.701123,250.671192 L257.253374,279.267072 L260.509637,301.450595 C261.071965,305.270073 263.765901,308.430417 267.445001,309.582807 L287.771588,315.955879 L291.611974,332.835784 C292.396616,336.292957 294.942343,339.082266 298.311944,340.173545 L318.302879,346.642649 L321.445805,362.566594 C322.374298,367.276556 326.502387,370.672616 331.297422,370.672616 L331.419477,370.672616 L365.634227,370.257931 C370.68209,370.201184 374.901721,366.390437 375.490202,361.366187 L375.520715,361.07809 C375.568666,360.676499 375.590461,360.270543 375.590461,359.864587 L375.389942,317.915816 C375.376865,315.26619 374.317599,312.725691 372.447535,310.853057 L271.777969,210.045051 C293.037407,171.745517 286.381027,123.973679 255.457415,92.9726214 Z M168.135481,156.393402 C172.769227,159.453348 178.998413,158.17437 182.049799,153.538616 C185.789925,147.863963 188.928493,141.813912 191.417552,135.484493 C191.600634,135.659098 191.788077,135.820607 191.966802,136.003941 C199.377308,143.394083 200.780946,154.896167 195.362557,163.857751 C189.948528,172.814972 179.116109,176.905086 169.142437,173.757836 C159.168765,170.606222 152.638801,161.037886 153.331902,150.587796 C154.025003,140.137707 161.762444,131.520966 172.067409,129.722539 C170.206064,134.166228 167.93496,138.430946 165.284614,142.459949 C162.233229,147.100068 163.510452,153.33782 168.13984,156.393402 L168.135481,156.393402 Z M43.6912621,43.2888622 C61.8382867,25.121247 87.6835226,16.9366528 112.966431,21.3497862 C138.244979,25.7629194 159.800839,42.2237737 170.737876,65.4680211 C117.508636,74.0236498 81.1840714,124.034792 89.4576846,177.380883 C72.1214561,175.224516 56.0101407,167.310559 43.6956209,154.900533 C12.9725281,124.056617 12.9725281,74.1327778 43.6912621,43.2888622 Z M131.178843,217.426463 C110.111206,196.32549 102.918654,165.031968 112.656933,136.828948 C122.399571,108.625929 147.364264,88.4678206 176.953984,84.9146153 C178.409931,92.9595254 178.619169,101.183406 177.564262,109.289427 C157.050233,108.525533 138.89449,122.48081 134.330488,142.52106 C129.762129,162.565676 140.080171,183.024978 158.898501,191.240129 C177.716831,199.459644 199.708603,193.108399 211.268994,176.123729 C222.833745,159.13906 220.689057,136.318229 206.17318,121.782391 C203.457447,119.076019 200.392984,116.740682 197.058256,114.850586 C198.636258,105.020344 198.7278,95.0067651 197.33288,85.1503321 C223.853779,88.9916347 246.538651,106.216385 257.388507,130.748341 C268.238361,155.280297 265.731866,183.675382 250.753922,205.924382 C237.755021,225.222562 216.818156,237.689336 193.679937,239.919911 C170.541716,242.14612 147.621451,233.900414 131.187562,217.435194 L131.178843,217.426463 Z M355.455677,350.270061 L339.531803,350.462126 L336.864022,336.947725 C336.157843,333.368329 333.568524,330.452431 330.103023,329.326231 L309.929005,322.796016 L306.075542,305.854998 C305.277822,302.362905 302.692863,299.560499 299.284028,298.491046 L279.46746,292.27512 L276.647107,273.046781 C276.333251,270.907874 275.339371,268.926111 273.809319,267.398319 L246.246589,239.793322 C249.485417,237.274649 252.567317,234.555182 255.466133,231.652379 C257.048495,230.063476 258.55675,228.409098 260.025775,226.728527 L355.324903,322.15871 L355.455677,350.270061 Z"/>
|
8
8
|
</g>
|
9
|
-
<path fill="#E48E66" d="M105.588272,885.011198 C91.7515763,885.011198 82,877.015677 82,862.62374 L82,862.357223 C82,847.832027 92.6740227,839.703247 109.409836,839.703247 C115.471627,839.703247 123.246532,841.035834 126.409206,842.368421 L126.409206,841.169093 C126.409206,834.506159 122.324086,830.641657 113.099622,830.641657 C105.72005,830.641657 99.5264817,832.240761 93.2011349,834.772676 L87.9300126,814.650616 C96.2320303,811.452408 105.72005,809.320269 118.238966,809.320269 C132.86633,809.320269 142.354351,812.385218 148.679697,818.781635 C154.082598,824.245241 156.191047,831.307951 156.191047,841.835386 L156.191047,883.278835 L126.277427,883.278835 L126.277427,875.949608 C121.269861,881.413214 114.54918,885.011198 105.588272,885.011198 Z M117.448298,867.554311 C122.71942,867.554311 126.672762,863.290034 126.672762,856.360582 L126.672762,853.295633 C124.959647,852.629339 122.324086,852.096305 119.820303,852.096305 C113.89029,852.096305 110.595839,855.694289 110.595839,860.225084 L110.595839,860.491601 C110.595839,864.755879 113.626734,867.554311 117.448298,867.554311 Z M196.64691,884.87794 C178.988651,884.87794 169.500631,876.615901 169.500631,858.892497 L169.500631,833.839866 L161.066835,833.839866 L161.066835,810.519597 L169.500631,810.519597 L169.500631,792.263158 L199.41425,792.263158 L199.41425,810.519597 L216.018285,810.519597 L216.018285,833.839866 L199.41425,833.839866 L199.41425,852.229563 C199.41425,857.693169 201.918033,859.692049 206.662043,859.692049 C209.429382,859.692049 212.592055,858.892497 215.754729,857.426652 L215.754729,880.74692 C211.010719,883.278835 203.894704,884.87794 196.64691,884.87794 Z M255.419924,884.87794 C237.761665,884.87794 228.273644,876.615901 228.273644,858.892497 L228.273644,833.839866 L219.839849,833.839866 L219.839849,810.519597 L228.273644,810.519597 L228.273644,792.263158 L258.187264,792.263158 L258.187264,810.519597 L274.791299,810.519597 L274.791299,833.839866 L258.187264,833.839866 L258.187264,852.229563 C258.187264,857.693169 260.691047,859.692049 265.435057,859.692049 C268.202396,859.692049 271.365069,858.892497 274.527743,857.426652 L274.527743,880.74692 C269.783733,883.278835 262.667718,884.87794 255.419924,884.87794 Z M281.51198,883.278835 L281.51198,810.519597 L311.425599,810.519597 L311.425599,825.178052 C315.510719,815.316909 322.099622,808.920493 333.959647,809.453527 L333.959647,841.568869 L330.796974,841.568869 C318.14628,841.568869 311.425599,848.631579 311.425599,864.755879 L311.425599,883.278835 L281.51198,883.278835 Z M334.354981,904.600224 L334.354981,889.142217 L413.948928,889.142217 L413.948928,904.600224 L334.354981,904.600224 Z M418.165826,883.278835 L418.165826,786 L448.079445,786 L448.079445,832.907055 L463.497478,810.519597 L496.046658,810.519597 L473.51261,840.103024 L496.441992,883.278835 L464.419924,883.278835 L454.009458,863.290034 L448.079445,871.019037 L448.079445,883.278835 L418.165826,883.278835 Z M531.758512,885.011198 C508.17024,885.011198 492.225095,869.952968 492.225095,847.298992 L492.225095,847.032475 C492.225095,825.31131 507.643127,808.787234 529.254729,808.787234 C554.819672,808.787234 566.679697,826.777156 566.679697,848.898096 C566.679697,850.4972 566.679697,852.362822 566.547919,853.961926 L520.293821,853.961926 C522.40227,860.358343 527.409836,863.68981 533.866961,863.68981 C539.269861,863.68981 543.750315,861.157895 548.494325,856.227324 L564.571248,869.153415 C557.455233,878.481523 547.308323,885.011198 531.758512,885.011198 Z M519.898487,840.636058 L539.401639,840.636058 C538.742749,833.706607 534.657629,829.708847 529.386507,829.708847 C524.378941,829.708847 520.820933,833.973124 519.898487,840.636058 Z M595.143758,905 C584.733291,905 575.377049,901.93505 567.338588,897.404255 L576.035939,876.74916 C581.43884,879.81411 586.446406,881.546473 589.213745,881.546473 C590.92686,881.546473 592.508197,881.279955 594.089533,880.480403 L565.889029,810.519597 L596.856873,810.519597 L609.375788,848.898096 L620.840479,810.519597 L651.281211,810.519597 L626.375158,878.215006 C619.390921,897.270997 611.747793,905 595.143758,905 Z M655.893443,883.278835 L655.893443,810.519597 L685.807062,810.519597 L685.807062,825.178052 C689.892182,815.316909 696.481084,808.920493 708.34111,809.453527 L708.34111,841.568869 L705.178436,841.568869 C692.527743,841.568869 685.807062,848.631579 685.807062,864.755879 L685.807062,883.278835 L655.893443,883.278835 Z M713.216898,805.322508 L713.216898,786 L744.184741,786 L744.184741,805.322508 L713.216898,805.322508 Z M713.74401,883.278835 L713.74401,810.519597 L743.657629,810.519597 L743.657629,883.278835 L713.74401,883.278835 Z M752.882093,883.278835 L752.882093,810.519597 L782.795712,810.519597 L782.795712,820.647256 C787.407945,814.650616 794.655738,808.787234 804.802648,808.787234 C819.957125,808.787234 829.445145,818.914894 829.445145,835.305711 L829.445145,883.278835 L799.531526,883.278835 L799.531526,845.033595 C799.531526,838.770437 795.84174,835.172452 791.361286,835.172452 C786.880832,835.172452 782.795712,838.770437 782.795712,845.033595 L782.795712,883.278835 L752.882093,883.278835 Z M876.226356,904.866741 C860.281211,904.866741 847.894073,901.668533 836.297604,895.805151 L845.522068,877.548712 C853.56053,881.81299 861.598991,884.478163 871.482346,884.478163 C882.68348,884.478163 888.613493,878.614782 888.613493,868.487122 L888.613493,866.354983 C884.528373,871.019037 877.807692,876.349384 867.79256,876.349384 C849.211854,876.349384 835.770492,863.023516 835.770492,842.901456 L835.770492,842.634938 C835.770492,822.246361 849.47541,808.787234 866.079445,808.787234 C876.62169,808.787234 882.815259,812.784994 888.086381,818.2486 L888.086381,810.519597 L918,810.519597 L918,864.889138 C918,878.348264 915.232661,887.543113 908.643758,894.206047 C902.186633,900.735722 892.303279,904.866741 876.226356,904.866741 Z M876.753468,854.228443 C884.133039,854.228443 888.745271,849.164614 888.745271,842.768197 L888.745271,842.50168 C888.745271,836.238522 884.001261,831.174692 876.753468,831.174692 C869.373897,831.174692 864.761665,836.371781 864.761665,842.768197 L864.761665,843.034714 C864.761665,849.297872 869.505675,854.228443 876.753468,854.228443 Z"/>
|
10
|
-
<path fill="#63316D" d="M44.3623047,947.111328 L47.5996094,947.111328 C47.8339844,949.206055 49.8701172,950.583008 52.6533203,950.583008 C55.3193359,950.583008 57.2382812,949.206055 57.2382812,947.316406 C57.2382812,945.675781 56.0810547,944.694336 53.3417969,944.020508 L50.6025391,943.361328 C46.7207031,942.423828 44.9189453,940.607422 44.9189453,937.663086 C44.9189453,934.015625 48.0976562,931.510742 52.609375,931.510742 C57.0771484,931.510742 60.1386719,934.015625 60.2412109,937.663086 L57.0478516,937.663086 C56.8574219,935.553711 55.1142578,934.279297 52.5654297,934.279297 C50.0166016,934.279297 48.2734375,935.568359 48.2734375,937.443359 C48.2734375,938.9375 49.3867188,939.816406 52.1113281,940.490234 L54.4404297,941.061523 C58.7763672,942.086914 60.578125,943.830078 60.578125,946.920898 C60.578125,950.875977 57.4287109,953.351562 52.4189453,953.351562 C47.7314453,953.351562 44.5673828,950.93457 44.3623047,947.111328 Z M63.3173828,953 L63.3173828,937.091797 L66.4960938,937.091797 L66.4960938,953 L63.3173828,953 Z M64.9140625,934.821289 C63.8886719,934.821289 63.0537109,934.000977 63.0537109,932.990234 C63.0537109,931.950195 63.8886719,931.15918 64.9140625,931.15918 C65.9394531,931.15918 66.7744141,931.950195 66.7744141,932.990234 C66.7744141,934.000977 65.9394531,934.821289 64.9140625,934.821289 Z M69.8652344,953 L69.8652344,937.091797 L72.8974609,937.091797 L72.8974609,939.787109 L72.9560547,939.787109 C73.6884766,938 75.4023438,936.916016 77.4824219,936.916016 C79.6943359,936.916016 81.2910156,938.029297 81.9355469,940.006836 L82.0087891,940.006836 C82.84375,938.087891 84.71875,936.916016 86.9892578,936.916016 C90.1240234,936.916016 92.1748047,938.981445 92.1748047,942.160156 L92.1748047,953 L89.0107422,953 L89.0107422,942.921875 C89.0107422,940.841797 87.8828125,939.640625 85.9052734,939.640625 C83.9570312,939.640625 82.5800781,941.09082 82.5800781,943.126953 L82.5800781,953 L79.4599609,953 L79.4599609,942.658203 C79.4599609,940.8125 78.2734375,939.640625 76.4130859,939.640625 C74.4501953,939.640625 73.0439453,941.164062 73.0439453,943.244141 L73.0439453,953 L69.8652344,953 Z M103.556641,936.930664 C107.614258,936.930664 110.280273,940.109375 110.280273,945.045898 C110.280273,949.967773 107.628906,953.161133 103.629883,953.161133 C101.344727,953.161133 99.5429688,952.150391 98.5908203,950.392578 L98.5322266,950.392578 L98.5322266,958.273438 L95.3535156,958.273438 L95.3535156,937.091797 L98.4150391,937.091797 L98.4150391,939.728516 L98.4882812,939.728516 C99.3818359,938.014648 101.344727,936.930664 103.556641,936.930664 Z M102.750977,950.46582 C105.329102,950.46582 107.02832,948.341797 107.02832,945.045898 C107.02832,941.764648 105.329102,939.625977 102.750977,939.625977 C100.231445,939.625977 98.5175781,941.808594 98.5029297,945.045898 C98.5175781,948.297852 100.216797,950.46582 102.750977,950.46582 Z M112.946289,953 L112.946289,930.910156 L116.125,930.910156 L116.125,953 L112.946289,953 Z M126.129883,939.479492 C123.844727,939.479492 122.189453,941.149414 122.013672,943.595703 L130.084961,943.595703 C130.011719,941.120117 128.444336,939.479492 126.129883,939.479492 Z M130.070312,948.341797 L133.102539,948.341797 C132.648438,951.198242 129.850586,953.19043 126.276367,953.19043 C121.662109,953.19043 118.791016,950.084961 118.791016,945.104492 C118.791016,940.124023 121.691406,936.886719 126.144531,936.886719 C130.509766,936.886719 133.263672,939.918945 133.263672,944.738281 L133.263672,945.851562 L121.999023,945.851562 L121.999023,946.041992 C121.999023,948.795898 123.727539,950.612305 126.334961,950.612305 C128.180664,950.612305 129.630859,949.733398 130.070312,948.341797 Z M149.347656,939.479492 C147.0625,939.479492 145.407227,941.149414 145.231445,943.595703 L153.302734,943.595703 C153.229492,941.120117 151.662109,939.479492 149.347656,939.479492 Z M153.288086,948.341797 L156.320312,948.341797 C155.866211,951.198242 153.068359,953.19043 149.494141,953.19043 C144.879883,953.19043 142.008789,950.084961 142.008789,945.104492 C142.008789,940.124023 144.90918,936.886719 149.362305,936.886719 C153.727539,936.886719 156.481445,939.918945 156.481445,944.738281 L156.481445,945.851562 L145.216797,945.851562 L145.216797,946.041992 C145.216797,948.795898 146.945312,950.612305 149.552734,950.612305 C151.398438,950.612305 152.848633,949.733398 153.288086,948.341797 Z M159.030273,953 L159.030273,937.091797 L162.0625,937.091797 L162.0625,939.772461 L162.121094,939.772461 C163.087891,937.897461 164.68457,936.916016 167.145508,936.916016 C170.661133,936.916016 172.667969,939.142578 172.667969,942.804688 L172.667969,953 L169.489258,953 L169.489258,943.405273 C169.489258,940.988281 168.375977,939.640625 166.046875,939.640625 C163.644531,939.640625 162.208984,941.310547 162.208984,943.81543 L162.208984,953 L159.030273,953 Z M189.44043,942.526367 L186.408203,942.526367 C186.115234,940.841797 184.796875,939.567383 182.614258,939.567383 C180.050781,939.567383 178.351562,941.706055 178.351562,945.045898 C178.351562,948.473633 180.080078,950.524414 182.628906,950.524414 C184.694336,950.524414 186.056641,949.513672 186.4375,947.65332 L189.469727,947.65332 C189.103516,950.978516 186.4375,953.19043 182.614258,953.19043 C178.102539,953.19043 175.128906,950.084961 175.128906,945.045898 C175.128906,940.094727 178.087891,936.886719 182.584961,936.886719 C186.642578,936.886719 189.162109,939.464844 189.44043,942.526367 Z M191.798828,953 L191.798828,937.091797 L194.831055,937.091797 L194.831055,939.772461 L194.889648,939.772461 C195.387695,938 196.852539,936.930664 198.727539,936.930664 C199.196289,936.930664 199.591797,936.974609 199.84082,937.033203 L199.84082,940.006836 C199.577148,939.904297 199.020508,939.816406 198.390625,939.816406 C196.295898,939.816406 194.977539,941.266602 194.977539,943.507812 L194.977539,953 L191.798828,953 Z M203.473633,958.786133 C203.209961,958.786133 202.433594,958.742188 202.18457,958.698242 L202.18457,956.120117 C202.418945,956.178711 202.916992,956.193359 203.195312,956.193359 C204.704102,956.193359 205.539062,955.548828 206.081055,953.864258 L206.330078,953.043945 L200.558594,937.091797 L203.97168,937.091797 L208.058594,950.099609 L208.131836,950.099609 L212.21875,937.091797 L215.558594,937.091797 L209.59668,953.732422 C208.234375,957.555664 206.725586,958.786133 203.473633,958.786133 Z M225.695312,936.930664 C229.75293,936.930664 232.418945,940.109375 232.418945,945.045898 C232.418945,949.967773 229.767578,953.161133 225.768555,953.161133 C223.483398,953.161133 221.681641,952.150391 220.729492,950.392578 L220.670898,950.392578 L220.670898,958.273438 L217.492188,958.273438 L217.492188,937.091797 L220.553711,937.091797 L220.553711,939.728516 L220.626953,939.728516 C221.520508,938.014648 223.483398,936.930664 225.695312,936.930664 Z M224.889648,950.46582 C227.467773,950.46582 229.166992,948.341797 229.166992,945.045898 C229.166992,941.764648 227.467773,939.625977 224.889648,939.625977 C222.370117,939.625977 220.65625,941.808594 220.641602,945.045898 C220.65625,948.297852 222.355469,950.46582 224.889648,950.46582 Z M235.905273,933.517578 L239.069336,933.517578 L239.069336,937.091797 L242.116211,937.091797 L242.116211,939.59668 L239.069336,939.59668 L239.069336,948.488281 C239.069336,949.865234 239.68457,950.509766 241.017578,950.509766 C241.354492,950.509766 241.896484,950.46582 242.101562,950.436523 L242.101562,952.941406 C241.75,953.029297 241.00293,953.102539 240.314453,953.102539 C237.135742,953.102539 235.905273,951.886719 235.905273,948.810547 L235.905273,939.59668 L233.708008,939.59668 L233.708008,937.091797 L235.905273,937.091797 L235.905273,933.517578 Z M244.914062,953 L244.914062,937.091797 L248.092773,937.091797 L248.092773,953 L244.914062,953 Z M246.510742,934.821289 C245.485352,934.821289 244.650391,934.000977 244.650391,932.990234 C244.650391,931.950195 245.485352,931.15918 246.510742,931.15918 C247.536133,931.15918 248.371094,931.950195 248.371094,932.990234 C248.371094,934.000977 247.536133,934.821289 246.510742,934.821289 Z M258.273438,953.19043 C253.673828,953.19043 250.744141,950.055664 250.744141,945.045898 C250.744141,940.050781 253.688477,936.886719 258.273438,936.886719 C262.858398,936.886719 265.788086,940.036133 265.788086,945.045898 C265.788086,950.055664 262.873047,953.19043 258.273438,953.19043 Z M258.273438,950.553711 C260.96875,950.553711 262.56543,948.517578 262.56543,945.045898 C262.56543,941.574219 260.96875,939.523438 258.273438,939.523438 C255.578125,939.523438 253.966797,941.588867 253.966797,945.045898 C253.966797,948.517578 255.578125,950.553711 258.273438,950.553711 Z M268.336914,953 L268.336914,937.091797 L271.369141,937.091797 L271.369141,939.772461 L271.427734,939.772461 C272.394531,937.897461 273.991211,936.916016 276.452148,936.916016 C279.967773,936.916016 281.974609,939.142578 281.974609,942.804688 L281.974609,953 L278.795898,953 L278.795898,943.405273 C278.795898,940.988281 277.682617,939.640625 275.353516,939.640625 C272.951172,939.640625 271.515625,941.310547 271.515625,943.81543 L271.515625,953 L268.336914,953 Z M294.835938,946.041992 L285.226562,946.041992 L285.226562,943.185547 L294.835938,943.185547 L294.835938,946.041992 Z M303.683594,950.626953 C306.041992,950.626953 307.829102,949.118164 307.829102,947.023438 L307.829102,945.77832 L303.961914,946.041992 C301.793945,946.173828 300.666016,946.979492 300.666016,948.385742 C300.666016,949.748047 301.852539,950.626953 303.683594,950.626953 Z M302.833984,953.161133 C299.655273,953.161133 297.458008,951.286133 297.458008,948.444336 C297.458008,945.661133 299.611328,944.049805 303.537109,943.800781 L307.829102,943.551758 L307.829102,942.321289 C307.829102,940.504883 306.613281,939.508789 304.489258,939.508789 C302.760742,939.508789 301.500977,940.402344 301.222656,941.779297 L298.249023,941.779297 C298.336914,938.966797 301.00293,936.886719 304.577148,936.886719 C308.458984,936.886719 310.963867,938.9375 310.963867,942.086914 L310.963867,953 L307.931641,953 L307.931641,950.348633 L307.858398,950.348633 C306.979492,952.077148 305.001953,953.161133 302.833984,953.161133 Z M315.109375,933.517578 L318.273438,933.517578 L318.273438,937.091797 L321.320312,937.091797 L321.320312,939.59668 L318.273438,939.59668 L318.273438,948.488281 C318.273438,949.865234 318.888672,950.509766 320.22168,950.509766 C320.558594,950.509766 321.100586,950.46582 321.305664,950.436523 L321.305664,952.941406 C320.954102,953.029297 320.207031,953.102539 319.518555,953.102539 C316.339844,953.102539 315.109375,951.886719 315.109375,948.810547 L315.109375,939.59668 L312.912109,939.59668 L312.912109,937.091797 L315.109375,937.091797 L315.109375,933.517578 Z M333.610352,946.041992 L324.000977,946.041992 L324.000977,943.185547 L333.610352,943.185547 L333.610352,946.041992 Z M336.935547,953 L336.935547,937.091797 L339.967773,937.091797 L339.967773,939.772461 L340.026367,939.772461 C340.524414,938 341.989258,936.930664 343.864258,936.930664 C344.333008,936.930664 344.728516,936.974609 344.977539,937.033203 L344.977539,940.006836 C344.713867,939.904297 344.157227,939.816406 343.527344,939.816406 C341.432617,939.816406 340.114258,941.266602 340.114258,943.507812 L340.114258,953 L336.935547,953 Z M352.975586,939.479492 C350.69043,939.479492 349.035156,941.149414 348.859375,943.595703 L356.930664,943.595703 C356.857422,941.120117 355.290039,939.479492 352.975586,939.479492 Z M356.916016,948.341797 L359.948242,948.341797 C359.494141,951.198242 356.696289,953.19043 353.12207,953.19043 C348.507812,953.19043 345.636719,950.084961 345.636719,945.104492 C345.636719,940.124023 348.537109,936.886719 352.990234,936.886719 C357.355469,936.886719 360.109375,939.918945 360.109375,944.738281 L360.109375,945.851562 L348.844727,945.851562 L348.844727,946.041992 C348.844727,948.795898 350.573242,950.612305 353.180664,950.612305 C355.026367,950.612305 356.476562,949.733398 356.916016,948.341797 Z M362.394531,941.618164 C362.394531,938.820312 364.899414,936.901367 368.561523,936.901367 C372.047852,936.901367 374.567383,938.864258 374.640625,941.632812 L371.652344,941.632812 C371.520508,940.226562 370.304688,939.347656 368.488281,939.347656 C366.686523,939.347656 365.485352,940.182617 365.485352,941.442383 C365.485352,942.40918 366.276367,943.068359 367.960938,943.478516 L370.597656,944.108398 C373.805664,944.884766 374.992188,946.041992 374.992188,948.385742 C374.992188,951.227539 372.296875,953.19043 368.444336,953.19043 C364.738281,953.19043 362.204102,951.271484 361.969727,948.400391 L365.104492,948.400391 C365.353516,949.923828 366.583984,950.758789 368.605469,950.758789 C370.583008,950.758789 371.828125,949.938477 371.828125,948.649414 C371.828125,947.638672 371.198242,947.111328 369.52832,946.686523 L366.686523,945.983398 C363.81543,945.280273 362.394531,943.81543 362.394531,941.618164 Z M378.522461,933.517578 L381.686523,933.517578 L381.686523,937.091797 L384.733398,937.091797 L384.733398,939.59668 L381.686523,939.59668 L381.686523,948.488281 C381.686523,949.865234 382.301758,950.509766 383.634766,950.509766 C383.97168,950.509766 384.513672,950.46582 384.71875,950.436523 L384.71875,952.941406 C384.367188,953.029297 383.620117,953.102539 382.931641,953.102539 C379.75293,953.102539 378.522461,951.886719 378.522461,948.810547 L378.522461,939.59668 L376.325195,939.59668 L376.325195,937.091797 L378.522461,937.091797 L378.522461,933.517578 Z M415.216797,937.091797 L410.836914,953 L407.555664,953 L404.171875,941.017578 L404.098633,941.017578 L400.744141,953 L397.477539,953 L393.083008,937.091797 L396.24707,937.091797 L399.206055,949.689453 L399.264648,949.689453 L402.633789,937.091797 L405.680664,937.091797 L409.064453,949.689453 L409.123047,949.689453 L412.082031,937.091797 L415.216797,937.091797 Z M417.34082,953 L417.34082,937.091797 L420.519531,937.091797 L420.519531,953 L417.34082,953 Z M418.9375,934.821289 C417.912109,934.821289 417.077148,934.000977 417.077148,932.990234 C417.077148,931.950195 417.912109,931.15918 418.9375,931.15918 C419.962891,931.15918 420.797852,931.950195 420.797852,932.990234 C420.797852,934.000977 419.962891,934.821289 418.9375,934.821289 Z M424.84082,933.517578 L428.004883,933.517578 L428.004883,937.091797 L431.051758,937.091797 L431.051758,939.59668 L428.004883,939.59668 L428.004883,948.488281 C428.004883,949.865234 428.620117,950.509766 429.953125,950.509766 C430.290039,950.509766 430.832031,950.46582 431.037109,950.436523 L431.037109,952.941406 C430.685547,953.029297 429.938477,953.102539 429.25,953.102539 C426.071289,953.102539 424.84082,951.886719 424.84082,948.810547 L424.84082,939.59668 L422.643555,939.59668 L422.643555,937.091797 L424.84082,937.091797 L424.84082,933.517578 Z M433.864258,953 L433.864258,930.910156 L437.013672,930.910156 L437.013672,939.772461 L437.086914,939.772461 C438.039062,937.897461 439.679688,936.916016 442.111328,936.916016 C445.612305,936.916016 447.707031,939.245117 447.707031,942.833984 L447.707031,953 L444.52832,953 L444.52832,943.449219 C444.52832,941.076172 443.341797,939.640625 441.012695,939.640625 C438.537109,939.640625 437.042969,941.339844 437.042969,943.888672 L437.042969,953 L433.864258,953 Z M461.125,943.961914 L467.672852,937.091797 L471.408203,937.091797 L464.757812,943.947266 L471.642578,953 L467.980469,953 L462.487305,945.880859 L461.110352,947.228516 L461.110352,953 L457.931641,953 L457.931641,930.910156 L461.110352,930.910156 L461.110352,943.961914 L461.125,943.961914 Z M479.245117,939.479492 C476.959961,939.479492 475.304688,941.149414 475.128906,943.595703 L483.200195,943.595703 C483.126953,941.120117 481.55957,939.479492 479.245117,939.479492 Z M483.185547,948.341797 L486.217773,948.341797 C485.763672,951.198242 482.96582,953.19043 479.391602,953.19043 C474.777344,953.19043 471.90625,950.084961 471.90625,945.104492 C471.90625,940.124023 474.806641,936.886719 479.259766,936.886719 C483.625,936.886719 486.378906,939.918945 486.378906,944.738281 L486.378906,945.851562 L475.114258,945.851562 L475.114258,946.041992 C475.114258,948.795898 476.842773,950.612305 479.450195,950.612305 C481.295898,950.612305 482.746094,949.733398 483.185547,948.341797 Z M490.451172,958.786133 C490.1875,958.786133 489.411133,958.742188 489.162109,958.698242 L489.162109,956.120117 C489.396484,956.178711 489.894531,956.193359 490.172852,956.193359 C491.681641,956.193359 492.516602,955.548828 493.058594,953.864258 L493.307617,953.043945 L487.536133,937.091797 L490.949219,937.091797 L495.036133,950.099609 L495.109375,950.099609 L499.196289,937.091797 L502.536133,937.091797 L496.574219,953.732422 C495.211914,957.555664 493.703125,958.786133 490.451172,958.786133 Z M511.383789,953 L511.383789,937.091797 L514.416016,937.091797 L514.416016,939.772461 L514.474609,939.772461 C514.972656,938 516.4375,936.930664 518.3125,936.930664 C518.78125,936.930664 519.176758,936.974609 519.425781,937.033203 L519.425781,940.006836 C519.162109,939.904297 518.605469,939.816406 517.975586,939.816406 C515.880859,939.816406 514.5625,941.266602 514.5625,943.507812 L514.5625,953 L511.383789,953 Z M527.614258,953.19043 C523.014648,953.19043 520.084961,950.055664 520.084961,945.045898 C520.084961,940.050781 523.029297,936.886719 527.614258,936.886719 C532.199219,936.886719 535.128906,940.036133 535.128906,945.045898 C535.128906,950.055664 532.213867,953.19043 527.614258,953.19043 Z M527.614258,950.553711 C530.30957,950.553711 531.90625,948.517578 531.90625,945.045898 C531.90625,941.574219 530.30957,939.523438 527.614258,939.523438 C524.918945,939.523438 523.307617,941.588867 523.307617,945.045898 C523.307617,948.517578 524.918945,950.553711 527.614258,950.553711 Z M538.629883,933.517578 L541.793945,933.517578 L541.793945,937.091797 L544.84082,937.091797 L544.84082,939.59668 L541.793945,939.59668 L541.793945,948.488281 C541.793945,949.865234 542.40918,950.509766 543.742188,950.509766 C544.079102,950.509766 544.621094,950.46582 544.826172,950.436523 L544.826172,952.941406 C544.474609,953.029297 543.727539,953.102539 543.039062,953.102539 C539.860352,953.102539 538.629883,951.886719 538.629883,948.810547 L538.629883,939.59668 L536.432617,939.59668 L536.432617,937.091797 L538.629883,937.091797 L538.629883,933.517578 Z M552.926758,950.626953 C555.285156,950.626953 557.072266,949.118164 557.072266,947.023438 L557.072266,945.77832 L553.205078,946.041992 C551.037109,946.173828 549.90918,946.979492 549.90918,948.385742 C549.90918,949.748047 551.095703,950.626953 552.926758,950.626953 Z M552.077148,953.161133 C548.898438,953.161133 546.701172,951.286133 546.701172,948.444336 C546.701172,945.661133 548.854492,944.049805 552.780273,943.800781 L557.072266,943.551758 L557.072266,942.321289 C557.072266,940.504883 555.856445,939.508789 553.732422,939.508789 C552.003906,939.508789 550.744141,940.402344 550.46582,941.779297 L547.492188,941.779297 C547.580078,938.966797 550.246094,936.886719 553.820312,936.886719 C557.702148,936.886719 560.207031,938.9375 560.207031,942.086914 L560.207031,953 L557.174805,953 L557.174805,950.348633 L557.101562,950.348633 C556.222656,952.077148 554.245117,953.161133 552.077148,953.161133 Z M564.352539,933.517578 L567.516602,933.517578 L567.516602,937.091797 L570.563477,937.091797 L570.563477,939.59668 L567.516602,939.59668 L567.516602,948.488281 C567.516602,949.865234 568.131836,950.509766 569.464844,950.509766 C569.801758,950.509766 570.34375,950.46582 570.548828,950.436523 L570.548828,952.941406 C570.197266,953.029297 569.450195,953.102539 568.761719,953.102539 C565.583008,953.102539 564.352539,951.886719 564.352539,948.810547 L564.352539,939.59668 L562.155273,939.59668 L562.155273,937.091797 L564.352539,937.091797 L564.352539,933.517578 Z M573.361328,953 L573.361328,937.091797 L576.540039,937.091797 L576.540039,953 L573.361328,953 Z M574.958008,934.821289 C573.932617,934.821289 573.097656,934.000977 573.097656,932.990234 C573.097656,931.950195 573.932617,931.15918 574.958008,931.15918 C575.983398,931.15918 576.818359,931.950195 576.818359,932.990234 C576.818359,934.000977 575.983398,934.821289 574.958008,934.821289 Z M586.720703,953.19043 C582.121094,953.19043 579.191406,950.055664 579.191406,945.045898 C579.191406,940.050781 582.135742,936.886719 586.720703,936.886719 C591.305664,936.886719 594.235352,940.036133 594.235352,945.045898 C594.235352,950.055664 591.320312,953.19043 586.720703,953.19043 Z M586.720703,950.553711 C589.416016,950.553711 591.012695,948.517578 591.012695,945.045898 C591.012695,941.574219 589.416016,939.523438 586.720703,939.523438 C584.025391,939.523438 582.414062,941.588867 582.414062,945.045898 C582.414062,948.517578 584.025391,950.553711 586.720703,950.553711 Z M596.78418,953 L596.78418,937.091797 L599.816406,937.091797 L599.816406,939.772461 L599.875,939.772461 C600.841797,937.897461 602.438477,936.916016 604.899414,936.916016 C608.415039,936.916016 610.421875,939.142578 610.421875,942.804688 L610.421875,953 L607.243164,953 L607.243164,943.405273 C607.243164,940.988281 606.129883,939.640625 603.800781,939.640625 C601.398438,939.640625 599.962891,941.310547 599.962891,943.81543 L599.962891,953 L596.78418,953 Z M620.250977,941.618164 C620.250977,938.820312 622.755859,936.901367 626.417969,936.901367 C629.904297,936.901367 632.423828,938.864258 632.49707,941.632812 L629.508789,941.632812 C629.376953,940.226562 628.161133,939.347656 626.344727,939.347656 C624.542969,939.347656 623.341797,940.182617 623.341797,941.442383 C623.341797,942.40918 624.132812,943.068359 625.817383,943.478516 L628.454102,944.108398 C631.662109,944.884766 632.848633,946.041992 632.848633,948.385742 C632.848633,951.227539 630.15332,953.19043 626.300781,953.19043 C622.594727,953.19043 620.060547,951.271484 619.826172,948.400391 L622.960938,948.400391 C623.209961,949.923828 624.44043,950.758789 626.461914,950.758789 C628.439453,950.758789 629.68457,949.938477 629.68457,948.649414 C629.68457,947.638672 629.054688,947.111328 627.384766,946.686523 L624.542969,945.983398 C621.671875,945.280273 620.250977,943.81543 620.250977,941.618164 Z M648.991211,937.091797 L648.991211,953 L645.958984,953 L645.958984,950.275391 L645.900391,950.275391 C644.977539,952.165039 643.366211,953.175781 640.93457,953.175781 C637.462891,953.175781 635.353516,950.93457 635.353516,947.287109 L635.353516,937.091797 L638.532227,937.091797 L638.532227,946.686523 C638.532227,949.132812 639.689453,950.436523 641.989258,950.436523 C644.362305,950.436523 645.8125,948.78125 645.8125,946.261719 L645.8125,937.091797 L648.991211,937.091797 Z M660.446289,936.930664 C664.503906,936.930664 667.169922,940.109375 667.169922,945.045898 C667.169922,949.967773 664.518555,953.161133 660.519531,953.161133 C658.234375,953.161133 656.432617,952.150391 655.480469,950.392578 L655.421875,950.392578 L655.421875,958.273438 L652.243164,958.273438 L652.243164,937.091797 L655.304688,937.091797 L655.304688,939.728516 L655.37793,939.728516 C656.271484,938.014648 658.234375,936.930664 660.446289,936.930664 Z M659.640625,950.46582 C662.21875,950.46582 663.917969,948.341797 663.917969,945.045898 C663.917969,941.764648 662.21875,939.625977 659.640625,939.625977 C657.121094,939.625977 655.407227,941.808594 655.392578,945.045898 C655.407227,948.297852 657.106445,950.46582 659.640625,950.46582 Z M677.907227,936.930664 C681.964844,936.930664 684.630859,940.109375 684.630859,945.045898 C684.630859,949.967773 681.979492,953.161133 677.980469,953.161133 C675.695312,953.161133 673.893555,952.150391 672.941406,950.392578 L672.882812,950.392578 L672.882812,958.273438 L669.704102,958.273438 L669.704102,937.091797 L672.765625,937.091797 L672.765625,939.728516 L672.838867,939.728516 C673.732422,938.014648 675.695312,936.930664 677.907227,936.930664 Z M677.101562,950.46582 C679.679688,950.46582 681.378906,948.341797 681.378906,945.045898 C681.378906,941.764648 679.679688,939.625977 677.101562,939.625977 C674.582031,939.625977 672.868164,941.808594 672.853516,945.045898 C672.868164,948.297852 674.567383,950.46582 677.101562,950.46582 Z M693.976562,953.19043 C689.376953,953.19043 686.447266,950.055664 686.447266,945.045898 C686.447266,940.050781 689.391602,936.886719 693.976562,936.886719 C698.561523,936.886719 701.491211,940.036133 701.491211,945.045898 C701.491211,950.055664 698.576172,953.19043 693.976562,953.19043 Z M693.976562,950.553711 C696.671875,950.553711 698.268555,948.517578 698.268555,945.045898 C698.268555,941.574219 696.671875,939.523438 693.976562,939.523438 C691.28125,939.523438 689.669922,941.588867 689.669922,945.045898 C689.669922,948.517578 691.28125,950.553711 693.976562,950.553711 Z M704.040039,953 L704.040039,937.091797 L707.072266,937.091797 L707.072266,939.772461 L707.130859,939.772461 C707.628906,938 709.09375,936.930664 710.96875,936.930664 C711.4375,936.930664 711.833008,936.974609 712.082031,937.033203 L712.082031,940.006836 C711.818359,939.904297 711.261719,939.816406 710.631836,939.816406 C708.537109,939.816406 707.21875,941.266602 707.21875,943.507812 L707.21875,953 L704.040039,953 Z M715.070312,933.517578 L718.234375,933.517578 L718.234375,937.091797 L721.28125,937.091797 L721.28125,939.59668 L718.234375,939.59668 L718.234375,948.488281 C718.234375,949.865234 718.849609,950.509766 720.182617,950.509766 C720.519531,950.509766 721.061523,950.46582 721.266602,950.436523 L721.266602,952.941406 C720.915039,953.029297 720.167969,953.102539 719.479492,953.102539 C716.300781,953.102539 715.070312,951.886719 715.070312,948.810547 L715.070312,939.59668 L712.873047,939.59668 L712.873047,937.091797 L715.070312,937.091797 L715.070312,933.517578 Z M731.828125,953 L731.828125,939.59668 L729.630859,939.59668 L729.630859,937.091797 L731.828125,937.091797 L731.828125,935.626953 C731.828125,932.65332 733.175781,931.349609 736.398438,931.349609 C736.969727,931.349609 737.49707,931.408203 738.009766,931.496094 L738.009766,933.913086 C737.6875,933.839844 737.248047,933.795898 736.823242,933.795898 C735.519531,933.795898 734.977539,934.367188 734.962891,935.729492 L734.962891,937.091797 L738.024414,937.091797 L738.024414,939.59668 L734.992188,939.59668 L734.992188,953 L731.828125,953 Z M746.828125,953.19043 C742.228516,953.19043 739.298828,950.055664 739.298828,945.045898 C739.298828,940.050781 742.243164,936.886719 746.828125,936.886719 C751.413086,936.886719 754.342773,940.036133 754.342773,945.045898 C754.342773,950.055664 751.427734,953.19043 746.828125,953.19043 Z M746.828125,950.553711 C749.523438,950.553711 751.120117,948.517578 751.120117,945.045898 C751.120117,941.574219 749.523438,939.523438 746.828125,939.523438 C744.132812,939.523438 742.521484,941.588867 742.521484,945.045898 C742.521484,948.517578 744.132812,950.553711 746.828125,950.553711 Z M756.891602,953 L756.891602,937.091797 L759.923828,937.091797 L759.923828,939.772461 L759.982422,939.772461 C760.480469,938 761.945312,936.930664 763.820312,936.930664 C764.289062,936.930664 764.68457,936.974609 764.933594,937.033203 L764.933594,940.006836 C764.669922,939.904297 764.113281,939.816406 763.483398,939.816406 C761.388672,939.816406 760.070312,941.266602 760.070312,943.507812 L760.070312,953 L756.891602,953 Z M787.975586,953 L786.041992,947.287109 L777.985352,947.287109 L776.051758,953 L772.638672,953 L780.270508,931.862305 L783.81543,931.862305 L791.447266,953 L787.975586,953 Z M781.969727,935.37793 L778.820312,944.650391 L785.207031,944.650391 L782.057617,935.37793 L781.969727,935.37793 Z M806.652344,942.526367 L803.620117,942.526367 C803.327148,940.841797 802.008789,939.567383 799.826172,939.567383 C797.262695,939.567383 795.563477,941.706055 795.563477,945.045898 C795.563477,948.473633 797.291992,950.524414 799.84082,950.524414 C801.90625,950.524414 803.268555,949.513672 803.649414,947.65332 L806.681641,947.65332 C806.31543,950.978516 803.649414,953.19043 799.826172,953.19043 C795.314453,953.19043 792.34082,950.084961 792.34082,945.045898 C792.34082,940.094727 795.299805,936.886719 799.796875,936.886719 C803.854492,936.886719 806.374023,939.464844 806.652344,942.526367 Z M809.962891,933.517578 L813.126953,933.517578 L813.126953,937.091797 L816.173828,937.091797 L816.173828,939.59668 L813.126953,939.59668 L813.126953,948.488281 C813.126953,949.865234 813.742188,950.509766 815.075195,950.509766 C815.412109,950.509766 815.954102,950.46582 816.15918,950.436523 L816.15918,952.941406 C815.807617,953.029297 815.060547,953.102539 814.37207,953.102539 C811.193359,953.102539 809.962891,951.886719 809.962891,948.810547 L809.962891,939.59668 L807.765625,939.59668 L807.765625,937.091797 L809.962891,937.091797 L809.962891,933.517578 Z M818.97168,953 L818.97168,937.091797 L822.150391,937.091797 L822.150391,953 L818.97168,953 Z M820.568359,934.821289 C819.542969,934.821289 818.708008,934.000977 818.708008,932.990234 C818.708008,931.950195 819.542969,931.15918 820.568359,931.15918 C821.59375,931.15918 822.428711,931.950195 822.428711,932.990234 C822.428711,934.000977 821.59375,934.821289 820.568359,934.821289 Z M839.025391,937.091797 L833.297852,953 L829.914062,953 L824.171875,937.091797 L827.526367,937.091797 L831.583984,949.865234 L831.657227,949.865234 L835.729492,937.091797 L839.025391,937.091797 Z M847.111328,939.479492 C844.826172,939.479492 843.170898,941.149414 842.995117,943.595703 L851.066406,943.595703 C850.993164,941.120117 849.425781,939.479492 847.111328,939.479492 Z M851.051758,948.341797 L854.083984,948.341797 C853.629883,951.198242 850.832031,953.19043 847.257812,953.19043 C842.643555,953.19043 839.772461,950.084961 839.772461,945.104492 C839.772461,940.124023 842.672852,936.886719 847.125977,936.886719 C851.491211,936.886719 854.245117,939.918945 854.245117,944.738281 L854.245117,945.851562 L842.980469,945.851562 L842.980469,946.041992 C842.980469,948.795898 844.708984,950.612305 847.316406,950.612305 C849.162109,950.612305 850.612305,949.733398 851.051758,948.341797 Z M860.397461,934.616211 L860.397461,942.21875 L865.114258,942.21875 C867.648438,942.21875 869.113281,940.827148 869.113281,938.410156 C869.113281,936.051758 867.560547,934.616211 865.026367,934.616211 L860.397461,934.616211 Z M860.397461,944.870117 L860.397461,953 L857.116211,953 L857.116211,931.862305 L865.421875,931.862305 C869.772461,931.862305 872.482422,934.381836 872.482422,938.322266 C872.482422,941.178711 870.958984,943.493164 868.380859,944.357422 L873.126953,953 L869.333008,953 L865.026367,944.870117 L860.397461,944.870117 Z M881.886719,939.479492 C879.601562,939.479492 877.946289,941.149414 877.770508,943.595703 L885.841797,943.595703 C885.768555,941.120117 884.201172,939.479492 881.886719,939.479492 Z M885.827148,948.341797 L888.859375,948.341797 C888.405273,951.198242 885.607422,953.19043 882.033203,953.19043 C877.418945,953.19043 874.547852,950.084961 874.547852,945.104492 C874.547852,940.124023 877.448242,936.886719 881.901367,936.886719 C886.266602,936.886719 889.020508,939.918945 889.020508,944.738281 L889.020508,945.851562 L877.755859,945.851562 L877.755859,946.041992 C877.755859,948.795898 879.484375,950.612305 882.091797,950.612305 C883.9375,950.612305 885.387695,949.733398 885.827148,948.341797 Z M905.163086,942.526367 L902.130859,942.526367 C901.837891,940.841797 900.519531,939.567383 898.336914,939.567383 C895.773438,939.567383 894.074219,941.706055 894.074219,945.045898 C894.074219,948.473633 895.802734,950.524414 898.351562,950.524414 C900.416992,950.524414 901.779297,949.513672 902.160156,947.65332 L905.192383,947.65332 C904.826172,950.978516 902.160156,953.19043 898.336914,953.19043 C893.825195,953.19043 890.851562,950.084961 890.851562,945.045898 C890.851562,940.094727 893.810547,936.886719 898.307617,936.886719 C902.365234,936.886719 904.884766,939.464844 905.163086,942.526367 Z M914.333008,953.19043 C909.733398,953.19043 906.803711,950.055664 906.803711,945.045898 C906.803711,940.050781 909.748047,936.886719 914.333008,936.886719 C918.917969,936.886719 921.847656,940.036133 921.847656,945.045898 C921.847656,950.055664 918.932617,953.19043 914.333008,953.19043 Z M914.333008,950.553711 C917.02832,950.553711 918.625,948.517578 918.625,945.045898 C918.625,941.574219 917.02832,939.523438 914.333008,939.523438 C911.637695,939.523438 910.026367,941.588867 910.026367,945.045898 C910.026367,948.517578 911.637695,950.553711 914.333008,950.553711 Z M924.396484,953 L924.396484,937.091797 L927.428711,937.091797 L927.428711,939.772461 L927.487305,939.772461 C927.985352,938 929.450195,936.930664 931.325195,936.930664 C931.793945,936.930664 932.189453,936.974609 932.438477,937.033203 L932.438477,940.006836 C932.174805,939.904297 931.618164,939.816406 930.988281,939.816406 C928.893555,939.816406 927.575195,941.266602 927.575195,943.507812 L927.575195,953 L924.396484,953 Z M939.806641,953.161133 C935.822266,953.161133 933.097656,949.953125 933.097656,945.03125 C933.097656,940.138672 935.822266,936.930664 939.777344,936.930664 C942.0625,936.930664 943.878906,937.970703 944.787109,939.728516 L944.860352,939.728516 L944.860352,930.910156 L948.024414,930.910156 L948.024414,953 L944.948242,953 L944.948242,950.304688 L944.889648,950.304688 C943.952148,952.106445 942.135742,953.161133 939.806641,953.161133 Z M940.612305,939.625977 C938.048828,939.625977 936.349609,941.764648 936.349609,945.045898 C936.349609,948.341797 938.03418,950.46582 940.612305,950.46582 C943.161133,950.46582 944.875,948.297852 944.875,945.045898 C944.875,941.808594 943.161133,939.625977 940.612305,939.625977 Z M953.708008,953.161133 C952.638672,953.161133 951.789062,952.311523 951.789062,951.242188 C951.789062,950.158203 952.638672,949.323242 953.708008,949.323242 C954.791992,949.323242 955.626953,950.158203 955.626953,951.242188 C955.626953,952.311523 954.791992,953.161133 953.708008,953.161133 Z"/>
|
9
|
+
<path fill="#63316D" d="M83.9848633,505.466797 L85.9272461,505.466797 C86.0678711,506.723633 87.2895508,507.549805 88.9594727,507.549805 C90.559082,507.549805 91.7104492,506.723633 91.7104492,505.589844 C91.7104492,504.605469 91.0161133,504.016602 89.3725586,503.612305 L87.7290039,503.216797 C85.3999023,502.654297 84.3188477,501.564453 84.3188477,499.797852 C84.3188477,497.609375 86.2260742,496.106445 88.9331055,496.106445 C91.6137695,496.106445 93.4506836,497.609375 93.512207,499.797852 L91.5961914,499.797852 C91.4819336,498.532227 90.4360352,497.767578 88.9067383,497.767578 C87.3774414,497.767578 86.331543,498.541016 86.331543,499.666016 C86.331543,500.5625 86.9995117,501.089844 88.6342773,501.494141 L90.0317383,501.836914 C92.6333008,502.452148 93.7143555,503.498047 93.7143555,505.352539 C93.7143555,507.725586 91.824707,509.210938 88.8188477,509.210938 C86.0063477,509.210938 84.1079102,507.760742 83.9848633,505.466797 Z M95.3579102,509 L95.3579102,499.455078 L97.2651367,499.455078 L97.2651367,509 L95.3579102,509 Z M96.315918,498.092773 C95.7006836,498.092773 95.199707,497.600586 95.199707,496.994141 C95.199707,496.370117 95.7006836,495.895508 96.315918,495.895508 C96.9311523,495.895508 97.4321289,496.370117 97.4321289,496.994141 C97.4321289,497.600586 96.9311523,498.092773 96.315918,498.092773 Z M99.2866211,509 L99.2866211,499.455078 L101.105957,499.455078 L101.105957,501.072266 L101.141113,501.072266 C101.580566,500 102.608887,499.349609 103.856934,499.349609 C105.184082,499.349609 106.14209,500.017578 106.528809,501.204102 L106.572754,501.204102 C107.07373,500.052734 108.19873,499.349609 109.561035,499.349609 C111.441895,499.349609 112.672363,500.588867 112.672363,502.496094 L112.672363,509 L110.773926,509 L110.773926,502.953125 C110.773926,501.705078 110.097168,500.984375 108.910645,500.984375 C107.741699,500.984375 106.915527,501.854492 106.915527,503.076172 L106.915527,509 L105.043457,509 L105.043457,502.794922 C105.043457,501.6875 104.331543,500.984375 103.215332,500.984375 C102.037598,500.984375 101.193848,501.898438 101.193848,503.146484 L101.193848,509 L99.2866211,509 Z M119.501465,499.358398 C121.936035,499.358398 123.535645,501.265625 123.535645,504.227539 C123.535645,507.180664 121.944824,509.09668 119.54541,509.09668 C118.174316,509.09668 117.093262,508.490234 116.521973,507.435547 L116.486816,507.435547 L116.486816,512.164062 L114.57959,512.164062 L114.57959,499.455078 L116.416504,499.455078 L116.416504,501.037109 L116.460449,501.037109 C116.996582,500.008789 118.174316,499.358398 119.501465,499.358398 Z M119.018066,507.479492 C120.564941,507.479492 121.584473,506.205078 121.584473,504.227539 C121.584473,502.258789 120.564941,500.975586 119.018066,500.975586 C117.506348,500.975586 116.478027,502.285156 116.469238,504.227539 C116.478027,506.178711 117.497559,507.479492 119.018066,507.479492 Z M125.135254,509 L125.135254,495.746094 L127.04248,495.746094 L127.04248,509 L125.135254,509 Z M133.04541,500.887695 C131.674316,500.887695 130.681152,501.889648 130.575684,503.357422 L135.418457,503.357422 C135.374512,501.87207 134.434082,500.887695 133.04541,500.887695 Z M135.409668,506.205078 L137.229004,506.205078 C136.956543,507.918945 135.277832,509.114258 133.133301,509.114258 C130.364746,509.114258 128.64209,507.250977 128.64209,504.262695 C128.64209,501.274414 130.382324,499.332031 133.054199,499.332031 C135.67334,499.332031 137.325684,501.151367 137.325684,504.042969 L137.325684,504.710938 L130.566895,504.710938 L130.566895,504.825195 C130.566895,506.477539 131.604004,507.567383 133.168457,507.567383 C134.275879,507.567383 135.145996,507.040039 135.409668,506.205078 Z M146.976074,500.887695 C145.60498,500.887695 144.611816,501.889648 144.506348,503.357422 L149.349121,503.357422 C149.305176,501.87207 148.364746,500.887695 146.976074,500.887695 Z M149.340332,506.205078 L151.159668,506.205078 C150.887207,507.918945 149.208496,509.114258 147.063965,509.114258 C144.29541,509.114258 142.572754,507.250977 142.572754,504.262695 C142.572754,501.274414 144.312988,499.332031 146.984863,499.332031 C149.604004,499.332031 151.256348,501.151367 151.256348,504.042969 L151.256348,504.710938 L144.497559,504.710938 L144.497559,504.825195 C144.497559,506.477539 145.534668,507.567383 147.099121,507.567383 C148.206543,507.567383 149.07666,507.040039 149.340332,506.205078 Z M152.785645,509 L152.785645,499.455078 L154.60498,499.455078 L154.60498,501.063477 L154.640137,501.063477 C155.220215,499.938477 156.178223,499.349609 157.654785,499.349609 C159.76416,499.349609 160.968262,500.685547 160.968262,502.882812 L160.968262,509 L159.061035,509 L159.061035,503.243164 C159.061035,501.792969 158.393066,500.984375 156.995605,500.984375 C155.554199,500.984375 154.692871,501.986328 154.692871,503.489258 L154.692871,509 L152.785645,509 Z M171.031738,502.71582 L169.212402,502.71582 C169.036621,501.705078 168.245605,500.94043 166.936035,500.94043 C165.397949,500.94043 164.378418,502.223633 164.378418,504.227539 C164.378418,506.28418 165.415527,507.514648 166.944824,507.514648 C168.184082,507.514648 169.001465,506.908203 169.22998,505.791992 L171.049316,505.791992 C170.82959,507.787109 169.22998,509.114258 166.936035,509.114258 C164.229004,509.114258 162.444824,507.250977 162.444824,504.227539 C162.444824,501.256836 164.220215,499.332031 166.918457,499.332031 C169.353027,499.332031 170.864746,500.878906 171.031738,502.71582 Z M172.446777,509 L172.446777,499.455078 L174.266113,499.455078 L174.266113,501.063477 L174.30127,501.063477 C174.600098,500 175.479004,499.358398 176.604004,499.358398 C176.885254,499.358398 177.122559,499.384766 177.271973,499.419922 L177.271973,501.204102 C177.11377,501.142578 176.779785,501.089844 176.401855,501.089844 C175.14502,501.089844 174.354004,501.959961 174.354004,503.304688 L174.354004,509 L172.446777,509 Z M179.45166,512.47168 C179.293457,512.47168 178.827637,512.445312 178.678223,512.418945 L178.678223,510.87207 C178.818848,510.907227 179.117676,510.916016 179.284668,510.916016 C180.189941,510.916016 180.690918,510.529297 181.016113,509.518555 L181.165527,509.026367 L177.702637,499.455078 L179.750488,499.455078 L182.202637,507.259766 L182.246582,507.259766 L184.69873,499.455078 L186.702637,499.455078 L183.125488,509.439453 C182.308105,511.733398 181.402832,512.47168 179.45166,512.47168 Z M192.784668,499.358398 C195.219238,499.358398 196.818848,501.265625 196.818848,504.227539 C196.818848,507.180664 195.228027,509.09668 192.828613,509.09668 C191.45752,509.09668 190.376465,508.490234 189.805176,507.435547 L189.77002,507.435547 L189.77002,512.164062 L187.862793,512.164062 L187.862793,499.455078 L189.699707,499.455078 L189.699707,501.037109 L189.743652,501.037109 C190.279785,500.008789 191.45752,499.358398 192.784668,499.358398 Z M192.30127,507.479492 C193.848145,507.479492 194.867676,506.205078 194.867676,504.227539 C194.867676,502.258789 193.848145,500.975586 192.30127,500.975586 C190.789551,500.975586 189.76123,502.285156 189.752441,504.227539 C189.76123,506.178711 190.780762,507.479492 192.30127,507.479492 Z M198.910645,497.310547 L200.809082,497.310547 L200.809082,499.455078 L202.637207,499.455078 L202.637207,500.958008 L200.809082,500.958008 L200.809082,506.292969 C200.809082,507.119141 201.178223,507.505859 201.978027,507.505859 C202.180176,507.505859 202.505371,507.479492 202.628418,507.461914 L202.628418,508.964844 C202.41748,509.017578 201.969238,509.061523 201.556152,509.061523 C199.648926,509.061523 198.910645,508.332031 198.910645,506.486328 L198.910645,500.958008 L197.592285,500.958008 L197.592285,499.455078 L198.910645,499.455078 L198.910645,497.310547 Z M204.315918,509 L204.315918,499.455078 L206.223145,499.455078 L206.223145,509 L204.315918,509 Z M205.273926,498.092773 C204.658691,498.092773 204.157715,497.600586 204.157715,496.994141 C204.157715,496.370117 204.658691,495.895508 205.273926,495.895508 C205.88916,495.895508 206.390137,496.370117 206.390137,496.994141 C206.390137,497.600586 205.88916,498.092773 205.273926,498.092773 Z M212.331543,509.114258 C209.571777,509.114258 207.813965,507.233398 207.813965,504.227539 C207.813965,501.230469 209.580566,499.332031 212.331543,499.332031 C215.08252,499.332031 216.840332,501.22168 216.840332,504.227539 C216.840332,507.233398 215.091309,509.114258 212.331543,509.114258 Z M212.331543,507.532227 C213.94873,507.532227 214.906738,506.310547 214.906738,504.227539 C214.906738,502.144531 213.94873,500.914062 212.331543,500.914062 C210.714355,500.914062 209.747559,502.15332 209.747559,504.227539 C209.747559,506.310547 210.714355,507.532227 212.331543,507.532227 Z M218.369629,509 L218.369629,499.455078 L220.188965,499.455078 L220.188965,501.063477 L220.224121,501.063477 C220.804199,499.938477 221.762207,499.349609 223.23877,499.349609 C225.348145,499.349609 226.552246,500.685547 226.552246,502.882812 L226.552246,509 L224.64502,509 L224.64502,503.243164 C224.64502,501.792969 223.977051,500.984375 222.57959,500.984375 C221.138184,500.984375 220.276855,501.986328 220.276855,503.489258 L220.276855,509 L218.369629,509 Z M234.269043,504.825195 L228.503418,504.825195 L228.503418,503.111328 L234.269043,503.111328 L234.269043,504.825195 Z M239.577637,507.576172 C240.992676,507.576172 242.064941,506.670898 242.064941,505.414062 L242.064941,504.666992 L239.744629,504.825195 C238.443848,504.904297 237.76709,505.387695 237.76709,506.231445 C237.76709,507.048828 238.479004,507.576172 239.577637,507.576172 Z M239.067871,509.09668 C237.160645,509.09668 235.842285,507.97168 235.842285,506.266602 C235.842285,504.59668 237.134277,503.629883 239.489746,503.480469 L242.064941,503.331055 L242.064941,502.592773 C242.064941,501.50293 241.335449,500.905273 240.061035,500.905273 C239.023926,500.905273 238.268066,501.441406 238.101074,502.267578 L236.316895,502.267578 C236.369629,500.580078 237.969238,499.332031 240.11377,499.332031 C242.442871,499.332031 243.945801,500.5625 243.945801,502.452148 L243.945801,509 L242.126465,509 L242.126465,507.40918 L242.08252,507.40918 C241.555176,508.446289 240.368652,509.09668 239.067871,509.09668 Z M246.433105,497.310547 L248.331543,497.310547 L248.331543,499.455078 L250.159668,499.455078 L250.159668,500.958008 L248.331543,500.958008 L248.331543,506.292969 C248.331543,507.119141 248.700684,507.505859 249.500488,507.505859 C249.702637,507.505859 250.027832,507.479492 250.150879,507.461914 L250.150879,508.964844 C249.939941,509.017578 249.491699,509.061523 249.078613,509.061523 C247.171387,509.061523 246.433105,508.332031 246.433105,506.486328 L246.433105,500.958008 L245.114746,500.958008 L245.114746,499.455078 L246.433105,499.455078 L246.433105,497.310547 Z M257.577637,504.825195 L251.812012,504.825195 L251.812012,503.111328 L257.577637,503.111328 L257.577637,504.825195 Z M259.572754,509 L259.572754,499.455078 L261.39209,499.455078 L261.39209,501.063477 L261.427246,501.063477 C261.726074,500 262.60498,499.358398 263.72998,499.358398 C264.01123,499.358398 264.248535,499.384766 264.397949,499.419922 L264.397949,501.204102 C264.239746,501.142578 263.905762,501.089844 263.527832,501.089844 C262.270996,501.089844 261.47998,501.959961 261.47998,503.304688 L261.47998,509 L259.572754,509 Z M269.592285,500.887695 C268.221191,500.887695 267.228027,501.889648 267.122559,503.357422 L271.965332,503.357422 C271.921387,501.87207 270.980957,500.887695 269.592285,500.887695 Z M271.956543,506.205078 L273.775879,506.205078 C273.503418,507.918945 271.824707,509.114258 269.680176,509.114258 C266.911621,509.114258 265.188965,507.250977 265.188965,504.262695 C265.188965,501.274414 266.929199,499.332031 269.601074,499.332031 C272.220215,499.332031 273.872559,501.151367 273.872559,504.042969 L273.872559,504.710938 L267.11377,504.710938 L267.11377,504.825195 C267.11377,506.477539 268.150879,507.567383 269.715332,507.567383 C270.822754,507.567383 271.692871,507.040039 271.956543,506.205078 Z M275.243652,502.170898 C275.243652,500.492188 276.746582,499.34082 278.943848,499.34082 C281.035645,499.34082 282.547363,500.518555 282.591309,502.179688 L280.79834,502.179688 C280.719238,501.335938 279.989746,500.808594 278.899902,500.808594 C277.818848,500.808594 277.098145,501.30957 277.098145,502.06543 C277.098145,502.645508 277.572754,503.041016 278.583496,503.287109 L280.165527,503.665039 C282.090332,504.130859 282.802246,504.825195 282.802246,506.231445 C282.802246,507.936523 281.185059,509.114258 278.873535,509.114258 C276.649902,509.114258 275.129395,507.962891 274.98877,506.240234 L276.869629,506.240234 C277.019043,507.154297 277.757324,507.655273 278.970215,507.655273 C280.156738,507.655273 280.903809,507.163086 280.903809,506.389648 C280.903809,505.783203 280.525879,505.466797 279.523926,505.211914 L277.818848,504.790039 C276.096191,504.368164 275.243652,503.489258 275.243652,502.170898 Z M284.92041,497.310547 L286.818848,497.310547 L286.818848,499.455078 L288.646973,499.455078 L288.646973,500.958008 L286.818848,500.958008 L286.818848,506.292969 C286.818848,507.119141 287.187988,507.505859 287.987793,507.505859 C288.189941,507.505859 288.515137,507.479492 288.638184,507.461914 L288.638184,508.964844 C288.427246,509.017578 287.979004,509.061523 287.565918,509.061523 C285.658691,509.061523 284.92041,508.332031 284.92041,506.486328 L284.92041,500.958008 L283.602051,500.958008 L283.602051,499.455078 L284.92041,499.455078 L284.92041,497.310547 Z M306.937012,499.455078 L304.309082,509 L302.340332,509 L300.310059,501.810547 L300.266113,501.810547 L298.253418,509 L296.293457,509 L293.656738,499.455078 L295.555176,499.455078 L297.330566,507.013672 L297.365723,507.013672 L299.387207,499.455078 L301.215332,499.455078 L303.245605,507.013672 L303.280762,507.013672 L305.056152,499.455078 L306.937012,499.455078 Z M308.211426,509 L308.211426,499.455078 L310.118652,499.455078 L310.118652,509 L308.211426,509 Z M309.169434,498.092773 C308.554199,498.092773 308.053223,497.600586 308.053223,496.994141 C308.053223,496.370117 308.554199,495.895508 309.169434,495.895508 C309.784668,495.895508 310.285645,496.370117 310.285645,496.994141 C310.285645,497.600586 309.784668,498.092773 309.169434,498.092773 Z M312.711426,497.310547 L314.609863,497.310547 L314.609863,499.455078 L316.437988,499.455078 L316.437988,500.958008 L314.609863,500.958008 L314.609863,506.292969 C314.609863,507.119141 314.979004,507.505859 315.778809,507.505859 C315.980957,507.505859 316.306152,507.479492 316.429199,507.461914 L316.429199,508.964844 C316.218262,509.017578 315.77002,509.061523 315.356934,509.061523 C313.449707,509.061523 312.711426,508.332031 312.711426,506.486328 L312.711426,500.958008 L311.393066,500.958008 L311.393066,499.455078 L312.711426,499.455078 L312.711426,497.310547 Z M318.125488,509 L318.125488,495.746094 L320.015137,495.746094 L320.015137,501.063477 L320.059082,501.063477 C320.630371,499.938477 321.614746,499.349609 323.07373,499.349609 C325.174316,499.349609 326.431152,500.74707 326.431152,502.900391 L326.431152,509 L324.523926,509 L324.523926,503.269531 C324.523926,501.845703 323.812012,500.984375 322.414551,500.984375 C320.929199,500.984375 320.032715,502.003906 320.032715,503.533203 L320.032715,509 L318.125488,509 Z M334.481934,503.577148 L338.410645,499.455078 L340.651855,499.455078 L336.661621,503.568359 L340.79248,509 L338.595215,509 L335.299316,504.728516 L334.473145,505.537109 L334.473145,509 L332.565918,509 L332.565918,495.746094 L334.473145,495.746094 L334.473145,503.577148 L334.481934,503.577148 Z M345.793457,500.887695 C344.422363,500.887695 343.429199,501.889648 343.32373,503.357422 L348.166504,503.357422 C348.122559,501.87207 347.182129,500.887695 345.793457,500.887695 Z M348.157715,506.205078 L349.977051,506.205078 C349.70459,507.918945 348.025879,509.114258 345.881348,509.114258 C343.112793,509.114258 341.390137,507.250977 341.390137,504.262695 C341.390137,501.274414 343.130371,499.332031 345.802246,499.332031 C348.421387,499.332031 350.07373,501.151367 350.07373,504.042969 L350.07373,504.710938 L343.314941,504.710938 L343.314941,504.825195 C343.314941,506.477539 344.352051,507.567383 345.916504,507.567383 C347.023926,507.567383 347.894043,507.040039 348.157715,506.205078 Z M352.561035,512.47168 C352.402832,512.47168 351.937012,512.445312 351.787598,512.418945 L351.787598,510.87207 C351.928223,510.907227 352.227051,510.916016 352.394043,510.916016 C353.299316,510.916016 353.800293,510.529297 354.125488,509.518555 L354.274902,509.026367 L350.812012,499.455078 L352.859863,499.455078 L355.312012,507.259766 L355.355957,507.259766 L357.808105,499.455078 L359.812012,499.455078 L356.234863,509.439453 C355.41748,511.733398 354.512207,512.47168 352.561035,512.47168 Z M365.120605,509 L365.120605,499.455078 L366.939941,499.455078 L366.939941,501.063477 L366.975098,501.063477 C367.273926,500 368.152832,499.358398 369.277832,499.358398 C369.559082,499.358398 369.796387,499.384766 369.945801,499.419922 L369.945801,501.204102 C369.787598,501.142578 369.453613,501.089844 369.075684,501.089844 C367.818848,501.089844 367.027832,501.959961 367.027832,503.304688 L367.027832,509 L365.120605,509 Z M375.254395,509.114258 C372.494629,509.114258 370.736816,507.233398 370.736816,504.227539 C370.736816,501.230469 372.503418,499.332031 375.254395,499.332031 C378.005371,499.332031 379.763184,501.22168 379.763184,504.227539 C379.763184,507.233398 378.01416,509.114258 375.254395,509.114258 Z M375.254395,507.532227 C376.871582,507.532227 377.82959,506.310547 377.82959,504.227539 C377.82959,502.144531 376.871582,500.914062 375.254395,500.914062 C373.637207,500.914062 372.67041,502.15332 372.67041,504.227539 C372.67041,506.310547 373.637207,507.532227 375.254395,507.532227 Z M381.86377,497.310547 L383.762207,497.310547 L383.762207,499.455078 L385.590332,499.455078 L385.590332,500.958008 L383.762207,500.958008 L383.762207,506.292969 C383.762207,507.119141 384.131348,507.505859 384.931152,507.505859 C385.133301,507.505859 385.458496,507.479492 385.581543,507.461914 L385.581543,508.964844 C385.370605,509.017578 384.922363,509.061523 384.509277,509.061523 C382.602051,509.061523 381.86377,508.332031 381.86377,506.486328 L381.86377,500.958008 L380.54541,500.958008 L380.54541,499.455078 L381.86377,499.455078 L381.86377,497.310547 Z M390.512207,507.576172 C391.927246,507.576172 392.999512,506.670898 392.999512,505.414062 L392.999512,504.666992 L390.679199,504.825195 C389.378418,504.904297 388.70166,505.387695 388.70166,506.231445 C388.70166,507.048828 389.413574,507.576172 390.512207,507.576172 Z M390.002441,509.09668 C388.095215,509.09668 386.776855,507.97168 386.776855,506.266602 C386.776855,504.59668 388.068848,503.629883 390.424316,503.480469 L392.999512,503.331055 L392.999512,502.592773 C392.999512,501.50293 392.27002,500.905273 390.995605,500.905273 C389.958496,500.905273 389.202637,501.441406 389.035645,502.267578 L387.251465,502.267578 C387.304199,500.580078 388.903809,499.332031 391.04834,499.332031 C393.377441,499.332031 394.880371,500.5625 394.880371,502.452148 L394.880371,509 L393.061035,509 L393.061035,507.40918 L393.01709,507.40918 C392.489746,508.446289 391.303223,509.09668 390.002441,509.09668 Z M397.367676,497.310547 L399.266113,497.310547 L399.266113,499.455078 L401.094238,499.455078 L401.094238,500.958008 L399.266113,500.958008 L399.266113,506.292969 C399.266113,507.119141 399.635254,507.505859 400.435059,507.505859 C400.637207,507.505859 400.962402,507.479492 401.085449,507.461914 L401.085449,508.964844 C400.874512,509.017578 400.42627,509.061523 400.013184,509.061523 C398.105957,509.061523 397.367676,508.332031 397.367676,506.486328 L397.367676,500.958008 L396.049316,500.958008 L396.049316,499.455078 L397.367676,499.455078 L397.367676,497.310547 Z M402.772949,509 L402.772949,499.455078 L404.680176,499.455078 L404.680176,509 L402.772949,509 Z M403.730957,498.092773 C403.115723,498.092773 402.614746,497.600586 402.614746,496.994141 C402.614746,496.370117 403.115723,495.895508 403.730957,495.895508 C404.346191,495.895508 404.847168,496.370117 404.847168,496.994141 C404.847168,497.600586 404.346191,498.092773 403.730957,498.092773 Z M410.788574,509.114258 C408.028809,509.114258 406.270996,507.233398 406.270996,504.227539 C406.270996,501.230469 408.037598,499.332031 410.788574,499.332031 C413.539551,499.332031 415.297363,501.22168 415.297363,504.227539 C415.297363,507.233398 413.54834,509.114258 410.788574,509.114258 Z M410.788574,507.532227 C412.405762,507.532227 413.36377,506.310547 413.36377,504.227539 C413.36377,502.144531 412.405762,500.914062 410.788574,500.914062 C409.171387,500.914062 408.20459,502.15332 408.20459,504.227539 C408.20459,506.310547 409.171387,507.532227 410.788574,507.532227 Z M416.82666,509 L416.82666,499.455078 L418.645996,499.455078 L418.645996,501.063477 L418.681152,501.063477 C419.26123,499.938477 420.219238,499.349609 421.695801,499.349609 C423.805176,499.349609 425.009277,500.685547 425.009277,502.882812 L425.009277,509 L423.102051,509 L423.102051,503.243164 C423.102051,501.792969 422.434082,500.984375 421.036621,500.984375 C419.595215,500.984375 418.733887,501.986328 418.733887,503.489258 L418.733887,509 L416.82666,509 Z M430.906738,502.170898 C430.906738,500.492188 432.409668,499.34082 434.606934,499.34082 C436.69873,499.34082 438.210449,500.518555 438.254395,502.179688 L436.461426,502.179688 C436.382324,501.335938 435.652832,500.808594 434.562988,500.808594 C433.481934,500.808594 432.76123,501.30957 432.76123,502.06543 C432.76123,502.645508 433.23584,503.041016 434.246582,503.287109 L435.828613,503.665039 C437.753418,504.130859 438.465332,504.825195 438.465332,506.231445 C438.465332,507.936523 436.848145,509.114258 434.536621,509.114258 C432.312988,509.114258 430.79248,507.962891 430.651855,506.240234 L432.532715,506.240234 C432.682129,507.154297 433.42041,507.655273 434.633301,507.655273 C435.819824,507.655273 436.566895,507.163086 436.566895,506.389648 C436.566895,505.783203 436.188965,505.466797 435.187012,505.211914 L433.481934,504.790039 C431.759277,504.368164 430.906738,503.489258 430.906738,502.170898 Z M448.150879,499.455078 L448.150879,509 L446.331543,509 L446.331543,507.365234 L446.296387,507.365234 C445.742676,508.499023 444.775879,509.105469 443.316895,509.105469 C441.233887,509.105469 439.968262,507.760742 439.968262,505.572266 L439.968262,499.455078 L441.875488,499.455078 L441.875488,505.211914 C441.875488,506.679688 442.569824,507.461914 443.949707,507.461914 C445.373535,507.461914 446.243652,506.46875 446.243652,504.957031 L446.243652,499.455078 L448.150879,499.455078 Z M455.023926,499.358398 C457.458496,499.358398 459.058105,501.265625 459.058105,504.227539 C459.058105,507.180664 457.467285,509.09668 455.067871,509.09668 C453.696777,509.09668 452.615723,508.490234 452.044434,507.435547 L452.009277,507.435547 L452.009277,512.164062 L450.102051,512.164062 L450.102051,499.455078 L451.938965,499.455078 L451.938965,501.037109 L451.98291,501.037109 C452.519043,500.008789 453.696777,499.358398 455.023926,499.358398 Z M454.540527,507.479492 C456.087402,507.479492 457.106934,506.205078 457.106934,504.227539 C457.106934,502.258789 456.087402,500.975586 454.540527,500.975586 C453.028809,500.975586 452.000488,502.285156 451.991699,504.227539 C452.000488,506.178711 453.02002,507.479492 454.540527,507.479492 Z M465.500488,499.358398 C467.935059,499.358398 469.534668,501.265625 469.534668,504.227539 C469.534668,507.180664 467.943848,509.09668 465.544434,509.09668 C464.17334,509.09668 463.092285,508.490234 462.520996,507.435547 L462.48584,507.435547 L462.48584,512.164062 L460.578613,512.164062 L460.578613,499.455078 L462.415527,499.455078 L462.415527,501.037109 L462.459473,501.037109 C462.995605,500.008789 464.17334,499.358398 465.500488,499.358398 Z M465.01709,507.479492 C466.563965,507.479492 467.583496,506.205078 467.583496,504.227539 C467.583496,502.258789 466.563965,500.975586 465.01709,500.975586 C463.505371,500.975586 462.477051,502.285156 462.468262,504.227539 C462.477051,506.178711 463.496582,507.479492 465.01709,507.479492 Z M475.14209,509.114258 C472.382324,509.114258 470.624512,507.233398 470.624512,504.227539 C470.624512,501.230469 472.391113,499.332031 475.14209,499.332031 C477.893066,499.332031 479.650879,501.22168 479.650879,504.227539 C479.650879,507.233398 477.901855,509.114258 475.14209,509.114258 Z M475.14209,507.532227 C476.759277,507.532227 477.717285,506.310547 477.717285,504.227539 C477.717285,502.144531 476.759277,500.914062 475.14209,500.914062 C473.524902,500.914062 472.558105,502.15332 472.558105,504.227539 C472.558105,506.310547 473.524902,507.532227 475.14209,507.532227 Z M481.180176,509 L481.180176,499.455078 L482.999512,499.455078 L482.999512,501.063477 L483.034668,501.063477 C483.333496,500 484.212402,499.358398 485.337402,499.358398 C485.618652,499.358398 485.855957,499.384766 486.005371,499.419922 L486.005371,501.204102 C485.847168,501.142578 485.513184,501.089844 485.135254,501.089844 C483.878418,501.089844 483.087402,501.959961 483.087402,503.304688 L483.087402,509 L481.180176,509 Z M487.79834,497.310547 L489.696777,497.310547 L489.696777,499.455078 L491.524902,499.455078 L491.524902,500.958008 L489.696777,500.958008 L489.696777,506.292969 C489.696777,507.119141 490.065918,507.505859 490.865723,507.505859 C491.067871,507.505859 491.393066,507.479492 491.516113,507.461914 L491.516113,508.964844 C491.305176,509.017578 490.856934,509.061523 490.443848,509.061523 C488.536621,509.061523 487.79834,508.332031 487.79834,506.486328 L487.79834,500.958008 L486.47998,500.958008 L486.47998,499.455078 L487.79834,499.455078 L487.79834,497.310547 Z M497.853027,509 L497.853027,500.958008 L496.534668,500.958008 L496.534668,499.455078 L497.853027,499.455078 L497.853027,498.576172 C497.853027,496.791992 498.661621,496.009766 500.595215,496.009766 C500.937988,496.009766 501.254395,496.044922 501.562012,496.097656 L501.562012,497.547852 C501.368652,497.503906 501.10498,497.477539 500.850098,497.477539 C500.067871,497.477539 499.742676,497.820312 499.733887,498.637695 L499.733887,499.455078 L501.570801,499.455078 L501.570801,500.958008 L499.751465,500.958008 L499.751465,509 L497.853027,509 Z M507.230957,509.114258 C504.471191,509.114258 502.713379,507.233398 502.713379,504.227539 C502.713379,501.230469 504.47998,499.332031 507.230957,499.332031 C509.981934,499.332031 511.739746,501.22168 511.739746,504.227539 C511.739746,507.233398 509.990723,509.114258 507.230957,509.114258 Z M507.230957,507.532227 C508.848145,507.532227 509.806152,506.310547 509.806152,504.227539 C509.806152,502.144531 508.848145,500.914062 507.230957,500.914062 C505.61377,500.914062 504.646973,502.15332 504.646973,504.227539 C504.646973,506.310547 505.61377,507.532227 507.230957,507.532227 Z M513.269043,509 L513.269043,499.455078 L515.088379,499.455078 L515.088379,501.063477 L515.123535,501.063477 C515.422363,500 516.30127,499.358398 517.42627,499.358398 C517.70752,499.358398 517.944824,499.384766 518.094238,499.419922 L518.094238,501.204102 C517.936035,501.142578 517.602051,501.089844 517.224121,501.089844 C515.967285,501.089844 515.17627,501.959961 515.17627,503.304688 L515.17627,509 L513.269043,509 Z M525.626465,497.969727 L525.626465,502.53125 L528.456543,502.53125 C529.977051,502.53125 530.855957,501.696289 530.855957,500.246094 C530.855957,498.831055 529.924316,497.969727 528.403809,497.969727 L525.626465,497.969727 Z M525.626465,504.12207 L525.626465,509 L523.657715,509 L523.657715,496.317383 L528.641113,496.317383 C531.251465,496.317383 532.877441,497.829102 532.877441,500.193359 C532.877441,501.907227 531.963379,503.295898 530.416504,503.814453 L533.26416,509 L530.987793,509 L528.403809,504.12207 L525.626465,504.12207 Z M542.721191,499.455078 L542.721191,509 L540.901855,509 L540.901855,507.365234 L540.866699,507.365234 C540.312988,508.499023 539.346191,509.105469 537.887207,509.105469 C535.804199,509.105469 534.538574,507.760742 534.538574,505.572266 L534.538574,499.455078 L536.445801,499.455078 L536.445801,505.211914 C536.445801,506.679688 537.140137,507.461914 538.52002,507.461914 C539.943848,507.461914 540.813965,506.46875 540.813965,504.957031 L540.813965,499.455078 L542.721191,499.455078 Z M549.699707,509.09668 C548.311035,509.09668 547.221191,508.481445 546.632324,507.382812 L546.588379,507.382812 L546.588379,509 L544.751465,509 L544.751465,495.746094 L546.658691,495.746094 L546.658691,501.037109 L546.693848,501.037109 C547.273926,499.964844 548.36377,499.358398 549.717285,499.358398 C552.125488,499.358398 553.70752,501.265625 553.70752,504.227539 C553.70752,507.189453 552.125488,509.09668 549.699707,509.09668 Z M549.216309,500.975586 C547.678223,500.975586 546.649902,502.293945 546.649902,504.227539 C546.649902,506.169922 547.678223,507.479492 549.216309,507.479492 C550.754395,507.479492 551.756348,506.205078 551.756348,504.227539 C551.756348,502.25 550.754395,500.975586 549.216309,500.975586 Z M556.186035,512.47168 C556.027832,512.47168 555.562012,512.445312 555.412598,512.418945 L555.412598,510.87207 C555.553223,510.907227 555.852051,510.916016 556.019043,510.916016 C556.924316,510.916016 557.425293,510.529297 557.750488,509.518555 L557.899902,509.026367 L554.437012,499.455078 L556.484863,499.455078 L558.937012,507.259766 L558.980957,507.259766 L561.433105,499.455078 L563.437012,499.455078 L559.859863,509.439453 C559.04248,511.733398 558.137207,512.47168 556.186035,512.47168 Z"/>
|
10
|
+
<path fill="#E48E66" d="M19.4,465.3 C8.9,465.3 1.5,459.3 1.5,448.5 L1.5,448.3 C1.5,437.4 9.6,431.3 22.3,431.3 C26.9,431.3 32.8,432.3 35.2,433.3 L35.2,432.4 C35.2,427.4 32.1,424.5 25.1,424.5 C19.5,424.5 14.8,425.7 10,427.6 L6,412.5 C12.3,410.1 19.5,408.5 29,408.5 C40.1,408.5 47.3,410.8 52.1,415.6 C56.2,419.7 57.8,425 57.8,432.9 L57.8,464 L35.1,464 L35.1,458.5 C31.3,462.6 26.2,465.3 19.4,465.3 Z M28.4,452.2 C32.4,452.2 35.4,449 35.4,443.8 L35.4,441.5 C34.1,441 32.1,440.6 30.2,440.6 C25.7,440.6 23.2,443.3 23.2,446.7 L23.2,446.9 C23.2,450.1 25.5,452.2 28.4,452.2 Z M89,465.2 C75.6,465.2 68.4,459 68.4,445.7 L68.4,426.9 L62,426.9 L62,409.4 L68.4,409.4 L68.4,395.7 L91.1,395.7 L91.1,409.4 L103.7,409.4 L103.7,426.9 L91.1,426.9 L91.1,440.7 C91.1,444.8 93,446.3 96.6,446.3 C98.7,446.3 101.1,445.7 103.5,444.6 L103.5,462.1 C99.9,464 94.5,465.2 89,465.2 Z M133.6,465.2 C120.2,465.2 113,459 113,445.7 L113,426.9 L106.6,426.9 L106.6,409.4 L113,409.4 L113,395.7 L135.7,395.7 L135.7,409.4 L148.3,409.4 L148.3,426.9 L135.7,426.9 L135.7,440.7 C135.7,444.8 137.6,446.3 141.2,446.3 C143.3,446.3 145.7,445.7 148.1,444.6 L148.1,462.1 C144.5,464 139.1,465.2 133.6,465.2 Z M153.4,464 L153.4,409.4 L176.1,409.4 L176.1,420.4 C179.2,413 184.2,408.2 193.2,408.6 L193.2,432.7 L190.8,432.7 C181.2,432.7 176.1,438 176.1,450.1 L176.1,464 L153.4,464 Z M193.5,480 L193.5,468.4 L253.9,468.4 L253.9,480 L193.5,480 Z M257.1,464 L257.1,391 L279.8,391 L279.8,426.2 L291.5,409.4 L316.2,409.4 L299.1,431.6 L316.5,464 L292.2,464 L284.3,449 L279.8,454.8 L279.8,464 L257.1,464 Z M346.8,465.3 C328.9,465.3 316.8,454 316.8,437 L316.8,436.8 C316.8,420.5 328.5,408.1 344.9,408.1 C364.3,408.1 373.3,421.6 373.3,438.2 C373.3,439.4 373.3,440.8 373.2,442 L338.1,442 C339.7,446.8 343.5,449.3 348.4,449.3 C352.5,449.3 355.9,447.4 359.5,443.7 L371.7,453.4 C366.3,460.4 358.6,465.3 346.8,465.3 Z M337.8,432 L352.6,432 C352.1,426.8 349,423.8 345,423.8 C341.2,423.8 338.5,427 337.8,432 Z M397.4,480.3 C389.5,480.3 382.4,478 376.3,474.6 L382.9,459.1 C387,461.4 390.8,462.7 392.9,462.7 C394.2,462.7 395.4,462.5 396.6,461.9 L375.2,409.4 L398.7,409.4 L408.2,438.2 L416.9,409.4 L440,409.4 L421.1,460.2 C415.8,474.5 410,480.3 397.4,480.3 Z M443.5,464 L443.5,409.4 L466.2,409.4 L466.2,420.4 C469.3,413 474.3,408.2 483.3,408.6 L483.3,432.7 L480.9,432.7 C471.3,432.7 466.2,438 466.2,450.1 L466.2,464 L443.5,464 Z M487,405.5 L487,391 L510.5,391 L510.5,405.5 L487,405.5 Z M487.4,464 L487.4,409.4 L510.1,409.4 L510.1,464 L487.4,464 Z M517.1,464 L517.1,409.4 L539.8,409.4 L539.8,417 C543.3,412.5 548.8,408.1 556.5,408.1 C568,408.1 575.2,415.7 575.2,428 L575.2,464 L552.5,464 L552.5,435.3 C552.5,430.6 549.7,427.9 546.3,427.9 C542.9,427.9 539.8,430.6 539.8,435.3 L539.8,464 L517.1,464 Z M610.7,480.2 C598.6,480.2 589.2,477.8 580.4,473.4 L587.4,459.7 C593.5,462.9 599.6,464.9 607.1,464.9 C615.6,464.9 620.1,460.5 620.1,452.9 L620.1,451.3 C617,454.8 611.9,458.8 604.3,458.8 C590.2,458.8 580,448.8 580,433.7 L580,433.5 C580,418.2 590.4,408.1 603,408.1 C611,408.1 615.7,411.1 619.7,415.2 L619.7,409.4 L642.4,409.4 L642.4,450.2 C642.4,460.3 640.3,467.2 635.3,472.2 C630.4,477.1 622.9,480.2 610.7,480.2 Z M611.1,442.2 C616.7,442.2 620.2,438.4 620.2,433.6 L620.2,433.4 C620.2,428.7 616.6,424.9 611.1,424.9 C605.5,424.9 602,428.8 602,433.6 L602,433.8 C602,438.5 605.6,442.2 611.1,442.2 Z"/>
|
11
11
|
</g>
|
12
12
|
</svg>
|
data/examples/keyring_sample.rb
CHANGED
@@ -6,13 +6,18 @@ gemfile do
|
|
6
6
|
path: File.expand_path("..", __dir__)
|
7
7
|
end
|
8
8
|
|
9
|
-
|
9
|
+
gem "attr_keyring"
|
10
|
+
require "keyring"
|
10
11
|
|
12
|
+
keyring = Keyring.new("1" => "uDiMcWVNTuz//naQ88sOcN+E40CyBRGzGTT7OkoBS6M=")
|
13
|
+
|
14
|
+
# STEP 1: Encrypt message using latest encryption key.
|
11
15
|
encrypted, keyring_id, digest = keyring.encrypt("super secret")
|
12
16
|
|
13
|
-
puts encrypted
|
14
|
-
puts keyring_id
|
15
|
-
puts digest
|
17
|
+
puts "🔒 #{encrypted}"
|
18
|
+
puts "🔑 #{keyring_id}"
|
19
|
+
puts "🔎 #{digest}"
|
16
20
|
|
21
|
+
# STEP 2: Decrypted message using encryption key defined by keyring id.
|
17
22
|
decrypted = keyring.decrypt(encrypted, keyring_id)
|
18
|
-
puts decrypted
|
23
|
+
puts "✉️ #{decrypted}"
|
data/lib/attr_keyring/version.rb
CHANGED
data/lib/keyring.rb
CHANGED
@@ -9,6 +9,7 @@ module Keyring
|
|
9
9
|
UnknownKey = Class.new(StandardError)
|
10
10
|
InvalidSecret = Class.new(StandardError)
|
11
11
|
EmptyKeyring = Class.new(StandardError)
|
12
|
+
InvalidAuthentication = Class.new(StandardError)
|
12
13
|
|
13
14
|
class Base
|
14
15
|
def initialize(keyring, encryptor)
|
@@ -31,8 +32,8 @@ module Keyring
|
|
31
32
|
raise UnknownKey, "key=#{id} is not available on keyring"
|
32
33
|
end
|
33
34
|
|
34
|
-
def []=(id,
|
35
|
-
@keyring << Key.new(id,
|
35
|
+
def []=(id, key)
|
36
|
+
@keyring << Key.new(id, key, @encryptor.key_size)
|
36
37
|
end
|
37
38
|
|
38
39
|
def clear
|
@@ -42,16 +43,18 @@ module Keyring
|
|
42
43
|
def encrypt(message, keyring_id = nil)
|
43
44
|
keyring_id ||= current_key&.id
|
44
45
|
digest = Digest::SHA1.hexdigest(message)
|
46
|
+
key = self[keyring_id]
|
45
47
|
|
46
48
|
[
|
47
|
-
@encryptor.encrypt(
|
49
|
+
@encryptor.encrypt(key, message),
|
48
50
|
keyring_id,
|
49
51
|
digest
|
50
52
|
]
|
51
53
|
end
|
52
54
|
|
53
55
|
def decrypt(message, keyring_id)
|
54
|
-
|
56
|
+
key = self[keyring_id]
|
57
|
+
@encryptor.decrypt(key, message)
|
55
58
|
end
|
56
59
|
end
|
57
60
|
|
@@ -15,10 +15,11 @@ module Keyring
|
|
15
15
|
cipher.encrypt
|
16
16
|
iv = cipher.random_iv
|
17
17
|
cipher.iv = iv
|
18
|
-
cipher.key = key
|
18
|
+
cipher.key = key.encryption_key
|
19
19
|
encrypted = cipher.update(message) + cipher.final
|
20
|
+
hmac = hmac_digest(key.signing_key, "#{iv}#{encrypted}")
|
20
21
|
|
21
|
-
Base64.strict_encode64("#{iv}#{encrypted}")
|
22
|
+
Base64.strict_encode64("#{hmac}#{iv}#{encrypted}")
|
22
23
|
end
|
23
24
|
|
24
25
|
def self.decrypt(key, message)
|
@@ -26,13 +27,33 @@ module Keyring
|
|
26
27
|
cipher.decrypt
|
27
28
|
|
28
29
|
message = Base64.strict_decode64(message)
|
29
|
-
|
30
|
-
|
30
|
+
|
31
|
+
hmac = message[0...32]
|
32
|
+
encrypted_payload = message[32..-1]
|
33
|
+
iv = encrypted_payload[0...16]
|
34
|
+
encrypted = encrypted_payload[16..-1]
|
35
|
+
|
36
|
+
expected_hmac = hmac_digest(key.signing_key, encrypted_payload)
|
37
|
+
|
38
|
+
raise InvalidAuthentication, "Expected HMAC to be #{Base64.strict_encode64(expected_hmac)}; got #{Base64.strict_encode64(hmac)} instead" unless verify_signature(expected_hmac, hmac)
|
31
39
|
|
32
40
|
cipher.iv = iv
|
33
|
-
cipher.key = key
|
41
|
+
cipher.key = key.encryption_key
|
34
42
|
cipher.update(encrypted) + cipher.final
|
35
43
|
end
|
44
|
+
|
45
|
+
def self.hmac_digest(key, bytes)
|
46
|
+
OpenSSL::HMAC.digest("sha256", key, bytes)
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.verify_signature(expected, actual)
|
50
|
+
expected_bytes = expected.bytes.to_a
|
51
|
+
actual_bytes = actual.bytes.to_a
|
52
|
+
|
53
|
+
actual_bytes.inject(0) do |accum, byte|
|
54
|
+
accum | byte ^ expected_bytes.shift
|
55
|
+
end.zero?
|
56
|
+
end
|
36
57
|
end
|
37
58
|
|
38
59
|
class AES128CBC < Base
|
data/lib/keyring/key.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Keyring
|
2
2
|
class Key
|
3
|
-
attr_reader :id, :
|
3
|
+
attr_reader :id, :signing_key, :encryption_key
|
4
4
|
|
5
|
-
def initialize(id,
|
5
|
+
def initialize(id, key, key_size)
|
6
6
|
@id = Integer(id)
|
7
7
|
@key_size = key_size
|
8
|
-
@
|
8
|
+
@encryption_key, @signing_key = parse(key)
|
9
9
|
end
|
10
10
|
|
11
11
|
def to_s
|
@@ -13,18 +13,25 @@ module Keyring
|
|
13
13
|
end
|
14
14
|
alias_method :inspect, :to_s
|
15
15
|
|
16
|
-
private def
|
17
|
-
|
16
|
+
private def parse(key)
|
17
|
+
expected_key_size = @key_size * 2
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
secret = if key.bytesize == expected_key_size
|
20
|
+
key
|
21
|
+
else
|
22
|
+
begin
|
23
|
+
Base64.strict_decode64(key)
|
24
|
+
rescue ArgumentError
|
25
|
+
Base64.decode64(key)
|
26
|
+
end
|
27
|
+
end
|
24
28
|
|
25
|
-
|
29
|
+
raise InvalidSecret, "Secret must be #{expected_key_size} bytes, instead got #{secret.bytesize}" unless secret.bytesize == expected_key_size
|
26
30
|
|
27
|
-
|
31
|
+
signing_key = secret[0...@key_size]
|
32
|
+
encryption_key = secret[@key_size..-1]
|
33
|
+
|
34
|
+
[encryption_key, signing_key]
|
28
35
|
end
|
29
36
|
end
|
30
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attr_keyring
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: attr_vault
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|