ovto 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile.lock +15 -16
  4. data/Rakefile +2 -9
  5. data/book/SUMMARY.md +15 -11
  6. data/book/book.toml +10 -0
  7. data/docs/.nojekyll +1 -0
  8. data/docs/404.html +189 -0
  9. data/docs/FontAwesome/css/font-awesome.css +4 -0
  10. data/docs/FontAwesome/fonts/FontAwesome.ttf +0 -0
  11. data/docs/FontAwesome/fonts/fontawesome-webfont.eot +0 -0
  12. data/docs/FontAwesome/fonts/fontawesome-webfont.svg +2671 -0
  13. data/docs/{gitbook/fonts/fontawesome → FontAwesome/fonts}/fontawesome-webfont.ttf +0 -0
  14. data/docs/FontAwesome/fonts/fontawesome-webfont.woff +0 -0
  15. data/docs/FontAwesome/fonts/fontawesome-webfont.woff2 +0 -0
  16. data/docs/api/Array.html +4 -4
  17. data/docs/api/Hash.html +4 -4
  18. data/docs/api/MightyInspect.html +238 -0
  19. data/docs/api/Ovto/Actions.html +4 -4
  20. data/docs/api/Ovto/App.html +4 -4
  21. data/docs/api/Ovto/Component/MoreThanOneNode.html +5 -5
  22. data/docs/api/Ovto/Component.html +4 -4
  23. data/docs/api/Ovto/Middleware/Actions.html +4 -4
  24. data/docs/api/Ovto/Middleware/Base.html +5 -5
  25. data/docs/api/Ovto/Middleware/Component.html +5 -5
  26. data/docs/api/Ovto/Middleware.html +8 -8
  27. data/docs/api/Ovto/PureComponent/StateIsNotAvailable.html +4 -4
  28. data/docs/api/Ovto/PureComponent.html +4 -4
  29. data/docs/api/Ovto/Runtime.html +4 -4
  30. data/docs/api/Ovto/State/MissingValue.html +4 -4
  31. data/docs/api/Ovto/State/UnknownStateKey.html +4 -4
  32. data/docs/api/Ovto/State.html +12 -12
  33. data/docs/api/Ovto/WiredActionSet.html +4 -4
  34. data/docs/api/Ovto/WiredActions.html +4 -4
  35. data/docs/api/Ovto.html +8 -8
  36. data/docs/api/_index.html +5 -5
  37. data/docs/api/actions.html +215 -426
  38. data/docs/api/app.html +226 -432
  39. data/docs/api/component.html +268 -480
  40. data/docs/api/fetch.html +188 -393
  41. data/docs/api/file.README.html +4 -4
  42. data/docs/api/frames.html +1 -1
  43. data/docs/api/index.html +4 -4
  44. data/docs/api/middleware.html +249 -460
  45. data/docs/api/pure_component.html +186 -398
  46. data/docs/api/state.html +226 -438
  47. data/docs/api/top-level-namespace.html +4 -4
  48. data/docs/ayu-highlight.css +78 -0
  49. data/docs/book.js +688 -0
  50. data/docs/book.toml +10 -0
  51. data/docs/clipboard.min.js +7 -0
  52. data/docs/css/chrome.css +545 -0
  53. data/docs/css/general.css +203 -0
  54. data/docs/css/print.css +54 -0
  55. data/docs/css/variables.css +255 -0
  56. data/docs/elasticlunr.min.js +10 -0
  57. data/docs/favicon.png +0 -0
  58. data/docs/favicon.svg +22 -0
  59. data/docs/fonts/OPEN-SANS-LICENSE.txt +202 -0
  60. data/docs/fonts/SOURCE-CODE-PRO-LICENSE.txt +93 -0
  61. data/docs/fonts/fonts.css +100 -0
  62. data/docs/fonts/open-sans-v17-all-charsets-300.woff2 +0 -0
  63. data/docs/fonts/open-sans-v17-all-charsets-300italic.woff2 +0 -0
  64. data/docs/fonts/open-sans-v17-all-charsets-600.woff2 +0 -0
  65. data/docs/fonts/open-sans-v17-all-charsets-600italic.woff2 +0 -0
  66. data/docs/fonts/open-sans-v17-all-charsets-700.woff2 +0 -0
  67. data/docs/fonts/open-sans-v17-all-charsets-700italic.woff2 +0 -0
  68. data/docs/fonts/open-sans-v17-all-charsets-800.woff2 +0 -0
  69. data/docs/fonts/open-sans-v17-all-charsets-800italic.woff2 +0 -0
  70. data/docs/fonts/open-sans-v17-all-charsets-italic.woff2 +0 -0
  71. data/docs/fonts/open-sans-v17-all-charsets-regular.woff2 +0 -0
  72. data/docs/fonts/source-code-pro-v11-all-charsets-500.woff2 +0 -0
  73. data/docs/guides/debugging.html +184 -390
  74. data/docs/guides/development.html +171 -383
  75. data/docs/guides/install.html +206 -409
  76. data/docs/guides/tutorial.html +309 -525
  77. data/docs/highlight.css +82 -0
  78. data/docs/highlight.js +6 -0
  79. data/docs/index.html +390 -391
  80. data/docs/mark.min.js +7 -0
  81. data/docs/print.html +958 -0
  82. data/docs/searcher.js +483 -0
  83. data/docs/searchindex.js +1 -0
  84. data/docs/searchindex.json +1 -0
  85. data/docs/tomorrow-night.css +102 -0
  86. data/examples/sinatra/Gemfile.lock +25 -25
  87. data/examples/static/Gemfile.lock +8 -8
  88. data/lib/ovto/component.rb +2 -3
  89. data/lib/ovto/version.rb +1 -1
  90. metadata +47 -26
  91. data/docs/gitbook/fonts/fontawesome/FontAwesome.otf +0 -0
  92. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot +0 -0
  93. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg +0 -685
  94. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff +0 -0
  95. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 +0 -0
  96. data/docs/gitbook/gitbook-plugin-fontsettings/fontsettings.js +0 -240
  97. data/docs/gitbook/gitbook-plugin-fontsettings/website.css +0 -291
  98. data/docs/gitbook/gitbook-plugin-highlight/ebook.css +0 -135
  99. data/docs/gitbook/gitbook-plugin-highlight/website.css +0 -434
  100. data/docs/gitbook/gitbook-plugin-lunr/lunr.min.js +0 -7
  101. data/docs/gitbook/gitbook-plugin-lunr/search-lunr.js +0 -59
  102. data/docs/gitbook/gitbook-plugin-search/lunr.min.js +0 -7
  103. data/docs/gitbook/gitbook-plugin-search/search-engine.js +0 -50
  104. data/docs/gitbook/gitbook-plugin-search/search.css +0 -35
  105. data/docs/gitbook/gitbook-plugin-search/search.js +0 -213
  106. data/docs/gitbook/gitbook-plugin-sharing/buttons.js +0 -90
  107. data/docs/gitbook/gitbook.js +0 -4
  108. data/docs/gitbook/images/apple-touch-icon-precomposed-152.png +0 -0
  109. data/docs/gitbook/images/favicon.ico +0 -0
  110. data/docs/gitbook/style.css +0 -9
  111. data/docs/gitbook/theme.js +0 -4
  112. data/docs/search_index.json +0 -1
@@ -0,0 +1,203 @@
1
+ /* Base styles and content styles */
2
+
3
+ @import 'variables.css';
4
+
5
+ :root {
6
+ /* Browser default font-size is 16px, this way 1 rem = 10px */
7
+ font-size: 62.5%;
8
+ }
9
+
10
+ html {
11
+ font-family: "Open Sans", sans-serif;
12
+ color: var(--fg);
13
+ background-color: var(--bg);
14
+ text-size-adjust: none;
15
+ -webkit-text-size-adjust: none;
16
+ }
17
+
18
+ body {
19
+ margin: 0;
20
+ font-size: 1.6rem;
21
+ overflow-x: hidden;
22
+ }
23
+
24
+ code {
25
+ font-family: var(--mono-font) !important;
26
+ font-size: var(--code-font-size);
27
+ }
28
+
29
+ /* make long words/inline code not x overflow */
30
+ main {
31
+ overflow-wrap: break-word;
32
+ }
33
+
34
+ /* make wide tables scroll if they overflow */
35
+ .table-wrapper {
36
+ overflow-x: auto;
37
+ }
38
+
39
+ /* Don't change font size in headers. */
40
+ h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
41
+ font-size: unset;
42
+ }
43
+
44
+ .left { float: left; }
45
+ .right { float: right; }
46
+ .boring { opacity: 0.6; }
47
+ .hide-boring .boring { display: none; }
48
+ .hidden { display: none !important; }
49
+
50
+ h2, h3 { margin-top: 2.5em; }
51
+ h4, h5 { margin-top: 2em; }
52
+
53
+ .header + .header h3,
54
+ .header + .header h4,
55
+ .header + .header h5 {
56
+ margin-top: 1em;
57
+ }
58
+
59
+ h1:target::before,
60
+ h2:target::before,
61
+ h3:target::before,
62
+ h4:target::before,
63
+ h5:target::before,
64
+ h6:target::before {
65
+ display: inline-block;
66
+ content: "»";
67
+ margin-left: -30px;
68
+ width: 30px;
69
+ }
70
+
71
+ /* This is broken on Safari as of version 14, but is fixed
72
+ in Safari Technology Preview 117 which I think will be Safari 14.2.
73
+ https://bugs.webkit.org/show_bug.cgi?id=218076
74
+ */
75
+ :target {
76
+ scroll-margin-top: calc(var(--menu-bar-height) + 0.5em);
77
+ }
78
+
79
+ .page {
80
+ outline: 0;
81
+ padding: 0 var(--page-padding);
82
+ margin-top: calc(0px - var(--menu-bar-height)); /* Compensate for the #menu-bar-hover-placeholder */
83
+ }
84
+ .page-wrapper {
85
+ box-sizing: border-box;
86
+ }
87
+ .js:not(.sidebar-resizing) .page-wrapper {
88
+ transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */
89
+ }
90
+
91
+ .content {
92
+ overflow-y: auto;
93
+ padding: 0 5px 50px 5px;
94
+ }
95
+ .content main {
96
+ margin-left: auto;
97
+ margin-right: auto;
98
+ max-width: var(--content-max-width);
99
+ }
100
+ .content p { line-height: 1.45em; }
101
+ .content ol { line-height: 1.45em; }
102
+ .content ul { line-height: 1.45em; }
103
+ .content a { text-decoration: none; }
104
+ .content a:hover { text-decoration: underline; }
105
+ .content img, .content video { max-width: 100%; }
106
+ .content .header:link,
107
+ .content .header:visited {
108
+ color: var(--fg);
109
+ }
110
+ .content .header:link,
111
+ .content .header:visited:hover {
112
+ text-decoration: none;
113
+ }
114
+
115
+ table {
116
+ margin: 0 auto;
117
+ border-collapse: collapse;
118
+ }
119
+ table td {
120
+ padding: 3px 20px;
121
+ border: 1px var(--table-border-color) solid;
122
+ }
123
+ table thead {
124
+ background: var(--table-header-bg);
125
+ }
126
+ table thead td {
127
+ font-weight: 700;
128
+ border: none;
129
+ }
130
+ table thead th {
131
+ padding: 3px 20px;
132
+ }
133
+ table thead tr {
134
+ border: 1px var(--table-header-bg) solid;
135
+ }
136
+ /* Alternate background colors for rows */
137
+ table tbody tr:nth-child(2n) {
138
+ background: var(--table-alternate-bg);
139
+ }
140
+
141
+
142
+ blockquote {
143
+ margin: 20px 0;
144
+ padding: 0 20px;
145
+ color: var(--fg);
146
+ background-color: var(--quote-bg);
147
+ border-top: .1em solid var(--quote-border);
148
+ border-bottom: .1em solid var(--quote-border);
149
+ }
150
+
151
+ kbd {
152
+ background-color: var(--table-border-color);
153
+ border-radius: 4px;
154
+ border: solid 1px var(--theme-popup-border);
155
+ box-shadow: inset 0 -1px 0 var(--theme-hover);
156
+ display: inline-block;
157
+ font-size: var(--code-font-size);
158
+ font-family: var(--mono-font);
159
+ line-height: 10px;
160
+ padding: 4px 5px;
161
+ vertical-align: middle;
162
+ }
163
+
164
+ :not(.footnote-definition) + .footnote-definition,
165
+ .footnote-definition + :not(.footnote-definition) {
166
+ margin-top: 2em;
167
+ }
168
+ .footnote-definition {
169
+ font-size: 0.9em;
170
+ margin: 0.5em 0;
171
+ }
172
+ .footnote-definition p {
173
+ display: inline;
174
+ }
175
+
176
+ .tooltiptext {
177
+ position: absolute;
178
+ visibility: hidden;
179
+ color: #fff;
180
+ background-color: #333;
181
+ transform: translateX(-50%); /* Center by moving tooltip 50% of its width left */
182
+ left: -8px; /* Half of the width of the icon */
183
+ top: -35px;
184
+ font-size: 0.8em;
185
+ text-align: center;
186
+ border-radius: 6px;
187
+ padding: 5px 8px;
188
+ margin: 5px;
189
+ z-index: 1000;
190
+ }
191
+ .tooltipped .tooltiptext {
192
+ visibility: visible;
193
+ }
194
+
195
+ .chapter li.part-title {
196
+ color: var(--sidebar-fg);
197
+ margin: 5px 0px;
198
+ font-weight: bold;
199
+ }
200
+
201
+ .result-no-output {
202
+ font-style: italic;
203
+ }
@@ -0,0 +1,54 @@
1
+
2
+ #sidebar,
3
+ #menu-bar,
4
+ .nav-chapters,
5
+ .mobile-nav-chapters {
6
+ display: none;
7
+ }
8
+
9
+ #page-wrapper.page-wrapper {
10
+ transform: none;
11
+ margin-left: 0px;
12
+ overflow-y: initial;
13
+ }
14
+
15
+ #content {
16
+ max-width: none;
17
+ margin: 0;
18
+ padding: 0;
19
+ }
20
+
21
+ .page {
22
+ overflow-y: initial;
23
+ }
24
+
25
+ code {
26
+ background-color: #666666;
27
+ border-radius: 5px;
28
+
29
+ /* Force background to be printed in Chrome */
30
+ -webkit-print-color-adjust: exact;
31
+ }
32
+
33
+ pre > .buttons {
34
+ z-index: 2;
35
+ }
36
+
37
+ a, a:visited, a:active, a:hover {
38
+ color: #4183c4;
39
+ text-decoration: none;
40
+ }
41
+
42
+ h1, h2, h3, h4, h5, h6 {
43
+ page-break-inside: avoid;
44
+ page-break-after: avoid;
45
+ }
46
+
47
+ pre, code {
48
+ page-break-inside: avoid;
49
+ white-space: pre-wrap;
50
+ }
51
+
52
+ .fa {
53
+ display: none !important;
54
+ }
@@ -0,0 +1,255 @@
1
+
2
+ /* Globals */
3
+
4
+ :root {
5
+ --sidebar-width: 300px;
6
+ --page-padding: 15px;
7
+ --content-max-width: 750px;
8
+ --menu-bar-height: 50px;
9
+ --mono-font: "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace;
10
+ --code-font-size: 0.875em /* please adjust the ace font size accordingly in editor.js */
11
+ }
12
+
13
+ /* Themes */
14
+
15
+ .ayu {
16
+ --bg: hsl(210, 25%, 8%);
17
+ --fg: #c5c5c5;
18
+
19
+ --sidebar-bg: #14191f;
20
+ --sidebar-fg: #c8c9db;
21
+ --sidebar-non-existant: #5c6773;
22
+ --sidebar-active: #ffb454;
23
+ --sidebar-spacer: #2d334f;
24
+
25
+ --scrollbar: var(--sidebar-fg);
26
+
27
+ --icons: #737480;
28
+ --icons-hover: #b7b9cc;
29
+
30
+ --links: #0096cf;
31
+
32
+ --inline-code-color: #ffb454;
33
+
34
+ --theme-popup-bg: #14191f;
35
+ --theme-popup-border: #5c6773;
36
+ --theme-hover: #191f26;
37
+
38
+ --quote-bg: hsl(226, 15%, 17%);
39
+ --quote-border: hsl(226, 15%, 22%);
40
+
41
+ --table-border-color: hsl(210, 25%, 13%);
42
+ --table-header-bg: hsl(210, 25%, 28%);
43
+ --table-alternate-bg: hsl(210, 25%, 11%);
44
+
45
+ --searchbar-border-color: #848484;
46
+ --searchbar-bg: #424242;
47
+ --searchbar-fg: #fff;
48
+ --searchbar-shadow-color: #d4c89f;
49
+ --searchresults-header-fg: #666;
50
+ --searchresults-border-color: #888;
51
+ --searchresults-li-bg: #252932;
52
+ --search-mark-bg: #e3b171;
53
+ }
54
+
55
+ .coal {
56
+ --bg: hsl(200, 7%, 8%);
57
+ --fg: #98a3ad;
58
+
59
+ --sidebar-bg: #292c2f;
60
+ --sidebar-fg: #a1adb8;
61
+ --sidebar-non-existant: #505254;
62
+ --sidebar-active: #3473ad;
63
+ --sidebar-spacer: #393939;
64
+
65
+ --scrollbar: var(--sidebar-fg);
66
+
67
+ --icons: #43484d;
68
+ --icons-hover: #b3c0cc;
69
+
70
+ --links: #2b79a2;
71
+
72
+ --inline-code-color: #c5c8c6;
73
+
74
+ --theme-popup-bg: #141617;
75
+ --theme-popup-border: #43484d;
76
+ --theme-hover: #1f2124;
77
+
78
+ --quote-bg: hsl(234, 21%, 18%);
79
+ --quote-border: hsl(234, 21%, 23%);
80
+
81
+ --table-border-color: hsl(200, 7%, 13%);
82
+ --table-header-bg: hsl(200, 7%, 28%);
83
+ --table-alternate-bg: hsl(200, 7%, 11%);
84
+
85
+ --searchbar-border-color: #aaa;
86
+ --searchbar-bg: #b7b7b7;
87
+ --searchbar-fg: #000;
88
+ --searchbar-shadow-color: #aaa;
89
+ --searchresults-header-fg: #666;
90
+ --searchresults-border-color: #98a3ad;
91
+ --searchresults-li-bg: #2b2b2f;
92
+ --search-mark-bg: #355c7d;
93
+ }
94
+
95
+ .light {
96
+ --bg: hsl(0, 0%, 100%);
97
+ --fg: hsl(0, 0%, 0%);
98
+
99
+ --sidebar-bg: #fafafa;
100
+ --sidebar-fg: hsl(0, 0%, 0%);
101
+ --sidebar-non-existant: #aaaaaa;
102
+ --sidebar-active: #1f1fff;
103
+ --sidebar-spacer: #f4f4f4;
104
+
105
+ --scrollbar: #8F8F8F;
106
+
107
+ --icons: #747474;
108
+ --icons-hover: #000000;
109
+
110
+ --links: #20609f;
111
+
112
+ --inline-code-color: #301900;
113
+
114
+ --theme-popup-bg: #fafafa;
115
+ --theme-popup-border: #cccccc;
116
+ --theme-hover: #e6e6e6;
117
+
118
+ --quote-bg: hsl(197, 37%, 96%);
119
+ --quote-border: hsl(197, 37%, 91%);
120
+
121
+ --table-border-color: hsl(0, 0%, 95%);
122
+ --table-header-bg: hsl(0, 0%, 80%);
123
+ --table-alternate-bg: hsl(0, 0%, 97%);
124
+
125
+ --searchbar-border-color: #aaa;
126
+ --searchbar-bg: #fafafa;
127
+ --searchbar-fg: #000;
128
+ --searchbar-shadow-color: #aaa;
129
+ --searchresults-header-fg: #666;
130
+ --searchresults-border-color: #888;
131
+ --searchresults-li-bg: #e4f2fe;
132
+ --search-mark-bg: #a2cff5;
133
+ }
134
+
135
+ .navy {
136
+ --bg: hsl(226, 23%, 11%);
137
+ --fg: #bcbdd0;
138
+
139
+ --sidebar-bg: #282d3f;
140
+ --sidebar-fg: #c8c9db;
141
+ --sidebar-non-existant: #505274;
142
+ --sidebar-active: #2b79a2;
143
+ --sidebar-spacer: #2d334f;
144
+
145
+ --scrollbar: var(--sidebar-fg);
146
+
147
+ --icons: #737480;
148
+ --icons-hover: #b7b9cc;
149
+
150
+ --links: #2b79a2;
151
+
152
+ --inline-code-color: #c5c8c6;
153
+
154
+ --theme-popup-bg: #161923;
155
+ --theme-popup-border: #737480;
156
+ --theme-hover: #282e40;
157
+
158
+ --quote-bg: hsl(226, 15%, 17%);
159
+ --quote-border: hsl(226, 15%, 22%);
160
+
161
+ --table-border-color: hsl(226, 23%, 16%);
162
+ --table-header-bg: hsl(226, 23%, 31%);
163
+ --table-alternate-bg: hsl(226, 23%, 14%);
164
+
165
+ --searchbar-border-color: #aaa;
166
+ --searchbar-bg: #aeaec6;
167
+ --searchbar-fg: #000;
168
+ --searchbar-shadow-color: #aaa;
169
+ --searchresults-header-fg: #5f5f71;
170
+ --searchresults-border-color: #5c5c68;
171
+ --searchresults-li-bg: #242430;
172
+ --search-mark-bg: #a2cff5;
173
+ }
174
+
175
+ .rust {
176
+ --bg: hsl(60, 9%, 87%);
177
+ --fg: #262625;
178
+
179
+ --sidebar-bg: #3b2e2a;
180
+ --sidebar-fg: #c8c9db;
181
+ --sidebar-non-existant: #505254;
182
+ --sidebar-active: #e69f67;
183
+ --sidebar-spacer: #45373a;
184
+
185
+ --scrollbar: var(--sidebar-fg);
186
+
187
+ --icons: #737480;
188
+ --icons-hover: #262625;
189
+
190
+ --links: #2b79a2;
191
+
192
+ --inline-code-color: #6e6b5e;
193
+
194
+ --theme-popup-bg: #e1e1db;
195
+ --theme-popup-border: #b38f6b;
196
+ --theme-hover: #99908a;
197
+
198
+ --quote-bg: hsl(60, 5%, 75%);
199
+ --quote-border: hsl(60, 5%, 70%);
200
+
201
+ --table-border-color: hsl(60, 9%, 82%);
202
+ --table-header-bg: #b3a497;
203
+ --table-alternate-bg: hsl(60, 9%, 84%);
204
+
205
+ --searchbar-border-color: #aaa;
206
+ --searchbar-bg: #fafafa;
207
+ --searchbar-fg: #000;
208
+ --searchbar-shadow-color: #aaa;
209
+ --searchresults-header-fg: #666;
210
+ --searchresults-border-color: #888;
211
+ --searchresults-li-bg: #dec2a2;
212
+ --search-mark-bg: #e69f67;
213
+ }
214
+
215
+ @media (prefers-color-scheme: dark) {
216
+ .light.no-js {
217
+ --bg: hsl(200, 7%, 8%);
218
+ --fg: #98a3ad;
219
+
220
+ --sidebar-bg: #292c2f;
221
+ --sidebar-fg: #a1adb8;
222
+ --sidebar-non-existant: #505254;
223
+ --sidebar-active: #3473ad;
224
+ --sidebar-spacer: #393939;
225
+
226
+ --scrollbar: var(--sidebar-fg);
227
+
228
+ --icons: #43484d;
229
+ --icons-hover: #b3c0cc;
230
+
231
+ --links: #2b79a2;
232
+
233
+ --inline-code-color: #c5c8c6;
234
+
235
+ --theme-popup-bg: #141617;
236
+ --theme-popup-border: #43484d;
237
+ --theme-hover: #1f2124;
238
+
239
+ --quote-bg: hsl(234, 21%, 18%);
240
+ --quote-border: hsl(234, 21%, 23%);
241
+
242
+ --table-border-color: hsl(200, 7%, 13%);
243
+ --table-header-bg: hsl(200, 7%, 28%);
244
+ --table-alternate-bg: hsl(200, 7%, 11%);
245
+
246
+ --searchbar-border-color: #aaa;
247
+ --searchbar-bg: #b7b7b7;
248
+ --searchbar-fg: #000;
249
+ --searchbar-shadow-color: #aaa;
250
+ --searchresults-header-fg: #666;
251
+ --searchresults-border-color: #98a3ad;
252
+ --searchresults-li-bg: #2b2b2f;
253
+ --search-mark-bg: #355c7d;
254
+ }
255
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * elasticlunr - http://weixsong.github.io
3
+ * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.5
4
+ *
5
+ * Copyright (C) 2017 Oliver Nightingale
6
+ * Copyright (C) 2017 Wei Song
7
+ * MIT Licensed
8
+ * @license
9
+ */
10
+ !function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u<s.length;u++){var a=s[u];r[a]=this.pipeline.run(t.tokenizer(e[a]))}var l={};for(var c in o){var d=r[c]||r.any;if(d){var f=this.fieldSearch(d,c,o),h=o[c].boost;for(var p in f)f[p]=f[p]*h;for(var p in f)p in l?l[p]+=f[p]:l[p]=f[p]}}var v,g=[];for(var p in l)v={ref:p,score:l[p]},this.documentStore.hasDoc(p)&&(v.doc=this.documentStore.getDoc(p)),g.push(v);return g.sort(function(e,t){return t.score-e.score}),g},t.Index.prototype.fieldSearch=function(e,t,n){var i=n[t].bool,o=n[t].expand,r=n[t].boost,s=null,u={};return 0!==r?(e.forEach(function(e){var n=[e];1==o&&(n=this.index[t].expandToken(e));var r={};n.forEach(function(n){var o=this.index[t].getDocs(n),a=this.idf(n,t);if(s&&"AND"==i){var l={};for(var c in s)c in o&&(l[c]=o[c]);o=l}n==e&&this.fieldSearchStats(u,n,o);for(var c in o){var d=this.index[t].getTermFrequency(n,c),f=this.documentStore.getFieldLength(c,t),h=1;0!=f&&(h=1/Math.sqrt(f));var p=1;n!=e&&(p=.15*(1-(n.length-e.length)/n.length));var v=d*a*h*p;c in r?r[c]+=v:r[c]=v}},this),s=this.mergeScores(s,r,i)},this),s=this.coordNorm(s,u,e.length)):void 0},t.Index.prototype.mergeScores=function(e,t,n){if(!e)return t;if("AND"==n){var i={};for(var o in t)o in e&&(i[o]=e[o]+t[o]);return i}for(var o in t)o in e?e[o]+=t[o]:e[o]=t[o];return e},t.Index.prototype.fieldSearchStats=function(e,t,n){for(var i in n)i in e?e[i].push(t):e[i]=[t]},t.Index.prototype.coordNorm=function(e,t,n){for(var i in e)if(i in t){var o=t[i].length;e[i]=e[i]*o/n}return e},t.Index.prototype.toJSON=function(){var e={};return this._fields.forEach(function(t){e[t]=this.index[t].toJSON()},this),{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),index:e,pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},t.DocumentStore=function(e){this._save=null===e||void 0===e?!0:e,this.docs={},this.docInfo={},this.length=0},t.DocumentStore.load=function(e){var t=new this;return t.length=e.length,t.docs=e.docs,t.docInfo=e.docInfo,t._save=e.save,t},t.DocumentStore.prototype.isDocStored=function(){return this._save},t.DocumentStore.prototype.addDoc=function(t,n){this.hasDoc(t)||this.length++,this.docs[t]=this._save===!0?e(n):null},t.DocumentStore.prototype.getDoc=function(e){return this.hasDoc(e)===!1?null:this.docs[e]},t.DocumentStore.prototype.hasDoc=function(e){return e in this.docs},t.DocumentStore.prototype.removeDoc=function(e){this.hasDoc(e)&&(delete this.docs[e],delete this.docInfo[e],this.length--)},t.DocumentStore.prototype.addFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&(this.docInfo[e]||(this.docInfo[e]={}),this.docInfo[e][t]=n)},t.DocumentStore.prototype.updateFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&this.addFieldLength(e,t,n)},t.DocumentStore.prototype.getFieldLength=function(e,t){return null===e||void 0===e?0:e in this.docs&&t in this.docInfo[e]?this.docInfo[e][t]:0},t.DocumentStore.prototype.toJSON=function(){return{docs:this.docs,docInfo:this.docInfo,length:this.length,save:this._save}},t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,u="^("+o+")?"+r+o+"("+r+")?$",a="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,c=new RegExp(s),d=new RegExp(a),f=new RegExp(u),h=new RegExp(l),p=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,x=new RegExp("([^aeiouylsz])\\1$"),w=new RegExp("^"+o+i+"[^aeiouwxy]$"),I=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,_=/^(.+?)e$/,P=/ll$/,k=new RegExp("^"+o+i+"[^aeiouwxy]$"),z=function(n){var i,o,r,s,u,a,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,u=v,s.test(n)?n=n.replace(s,"$1$2"):u.test(n)&&(n=n.replace(u,"$1$2")),s=g,u=m,s.test(n)){var z=s.exec(n);s=c,s.test(z[1])&&(s=y,n=n.replace(s,""))}else if(u.test(n)){var z=u.exec(n);i=z[1],u=h,u.test(i)&&(n=i,u=S,a=x,l=w,u.test(n)?n+="e":a.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=I,s.test(n)){var z=s.exec(n);i=z[1],n=i+"i"}if(s=b,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=c,s.test(i)&&(n=i+e[o])}if(s=E,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=c,s.test(i)&&(n=i+t[o])}if(s=D,u=F,s.test(n)){var z=s.exec(n);i=z[1],s=d,s.test(i)&&(n=i)}else if(u.test(n)){var z=u.exec(n);i=z[1]+z[2],u=d,u.test(i)&&(n=i)}if(s=_,s.test(n)){var z=s.exec(n);i=z[1],s=d,u=f,a=k,(s.test(i)||u.test(i)&&!a.test(i))&&(n=i)}return s=P,u=d,s.test(n)&&u.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return z}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==!0?e:void 0},t.clearStopWords=function(){t.stopWordFilter.stopWords={}},t.addStopWords=function(e){null!=e&&Array.isArray(e)!==!1&&e.forEach(function(e){t.stopWordFilter.stopWords[e]=!0},this)},t.resetStopWords=function(){t.stopWordFilter.stopWords=t.defaultStopWords},t.defaultStopWords={"":!0,a:!0,able:!0,about:!0,across:!0,after:!0,all:!0,almost:!0,also:!0,am:!0,among:!0,an:!0,and:!0,any:!0,are:!0,as:!0,at:!0,be:!0,because:!0,been:!0,but:!0,by:!0,can:!0,cannot:!0,could:!0,dear:!0,did:!0,"do":!0,does:!0,either:!0,"else":!0,ever:!0,every:!0,"for":!0,from:!0,get:!0,got:!0,had:!0,has:!0,have:!0,he:!0,her:!0,hers:!0,him:!0,his:!0,how:!0,however:!0,i:!0,"if":!0,"in":!0,into:!0,is:!0,it:!0,its:!0,just:!0,least:!0,let:!0,like:!0,likely:!0,may:!0,me:!0,might:!0,most:!0,must:!0,my:!0,neither:!0,no:!0,nor:!0,not:!0,of:!0,off:!0,often:!0,on:!0,only:!0,or:!0,other:!0,our:!0,own:!0,rather:!0,said:!0,say:!0,says:!0,she:!0,should:!0,since:!0,so:!0,some:!0,than:!0,that:!0,the:!0,their:!0,them:!0,then:!0,there:!0,these:!0,they:!0,"this":!0,tis:!0,to:!0,too:!0,twas:!0,us:!0,wants:!0,was:!0,we:!0,were:!0,what:!0,when:!0,where:!0,which:!0,"while":!0,who:!0,whom:!0,why:!0,will:!0,"with":!0,would:!0,yet:!0,you:!0,your:!0},t.stopWordFilter.stopWords=t.defaultStopWords,t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(e){if(null===e||void 0===e)throw new Error("token should not be undefined");return e.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.InvertedIndex=function(){this.root={docs:{},df:0}},t.InvertedIndex.load=function(e){var t=new this;return t.root=e.root,t},t.InvertedIndex.prototype.addToken=function(e,t,n){for(var n=n||this.root,i=0;i<=e.length-1;){var o=e[i];o in n||(n[o]={docs:{},df:0}),i+=1,n=n[o]}var r=t.ref;n.docs[r]?n.docs[r]={tf:t.tf}:(n.docs[r]={tf:t.tf},n.df+=1)},t.InvertedIndex.prototype.hasToken=function(e){if(!e)return!1;for(var t=this.root,n=0;n<e.length;n++){if(!t[e[n]])return!1;t=t[e[n]]}return!0},t.InvertedIndex.prototype.getNode=function(e){if(!e)return null;for(var t=this.root,n=0;n<e.length;n++){if(!t[e[n]])return null;t=t[e[n]]}return t},t.InvertedIndex.prototype.getDocs=function(e){var t=this.getNode(e);return null==t?{}:t.docs},t.InvertedIndex.prototype.getTermFrequency=function(e,t){var n=this.getNode(e);return null==n?0:t in n.docs?n.docs[t].tf:0},t.InvertedIndex.prototype.getDocFreq=function(e){var t=this.getNode(e);return null==t?0:t.df},t.InvertedIndex.prototype.removeToken=function(e,t){if(e){var n=this.getNode(e);null!=n&&t in n.docs&&(delete n.docs[t],n.df-=1)}},t.InvertedIndex.prototype.expandToken=function(e,t,n){if(null==e||""==e)return[];var t=t||[];if(void 0==n&&(n=this.getNode(e),null==n))return t;n.df>0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e<arguments.length;e++)t=arguments[e],~this.indexOf(t)||this.elements.splice(this.locationFor(t),0,t);this.length=this.elements.length},lunr.SortedSet.prototype.toArray=function(){return this.elements.slice()},lunr.SortedSet.prototype.map=function(e,t){return this.elements.map(e,t)},lunr.SortedSet.prototype.forEach=function(e,t){return this.elements.forEach(e,t)},lunr.SortedSet.prototype.indexOf=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]<u[i]?n++:s[n]>u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o<r.length;o++)i.add(r[o]);return i},lunr.SortedSet.prototype.toJSON=function(){return this.toArray()},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.elasticlunr=t()}(this,function(){return t})}();
data/docs/favicon.png ADDED
Binary file
data/docs/favicon.svg ADDED
@@ -0,0 +1,22 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 199.7 184.2">
2
+ <style>
3
+ @media (prefers-color-scheme: dark) {
4
+ svg { fill: white; }
5
+ }
6
+ </style>
7
+ <path d="M189.5,36.8c0.2,2.8,0,5.1-0.6,6.8L153,162c-0.6,2.1-2,3.7-4.2,5c-2.2,1.2-4.4,1.9-6.7,1.9H31.4c-9.6,0-15.3-2.8-17.3-8.4
8
+ c-0.8-2.2-0.8-3.9,0.1-5.2c0.9-1.2,2.4-1.8,4.6-1.8H123c7.4,0,12.6-1.4,15.4-4.1s5.7-8.9,8.6-18.4l32.9-108.6
9
+ c1.8-5.9,1-11.1-2.2-15.6S169.9,0,164,0H72.7c-1,0-3.1,0.4-6.1,1.1l0.1-0.4C64.5,0.2,62.6,0,61,0.1s-3,0.5-4.3,1.4
10
+ c-1.3,0.9-2.4,1.8-3.2,2.8S52,6.5,51.2,8.1c-0.8,1.6-1.4,3-1.9,4.3s-1.1,2.7-1.8,4.2c-0.7,1.5-1.3,2.7-2,3.7c-0.5,0.6-1.2,1.5-2,2.5
11
+ s-1.6,2-2.2,2.8s-0.9,1.5-1.1,2.2c-0.2,0.7-0.1,1.8,0.2,3.2c0.3,1.4,0.4,2.4,0.4,3.1c-0.3,3-1.4,6.9-3.3,11.6
12
+ c-1.9,4.7-3.6,8.1-5.1,10.1c-0.3,0.4-1.2,1.3-2.6,2.7c-1.4,1.4-2.3,2.6-2.6,3.7c-0.3,0.4-0.3,1.5-0.1,3.4c0.3,1.8,0.4,3.1,0.3,3.8
13
+ c-0.3,2.7-1.3,6.3-3,10.8c-1.7,4.5-3.4,8.2-5,11c-0.2,0.5-0.9,1.4-2,2.8c-1.1,1.4-1.8,2.5-2,3.4c-0.2,0.6-0.1,1.8,0.1,3.4
14
+ c0.2,1.6,0.2,2.8-0.1,3.6c-0.6,3-1.8,6.7-3.6,11c-1.8,4.3-3.6,7.9-5.4,11c-0.5,0.8-1.1,1.7-2,2.8c-0.8,1.1-1.5,2-2,2.8
15
+ s-0.8,1.6-1,2.5c-0.1,0.5,0,1.3,0.4,2.3c0.3,1.1,0.4,1.9,0.4,2.6c-0.1,1.1-0.2,2.6-0.5,4.4c-0.2,1.8-0.4,2.9-0.4,3.2
16
+ c-1.8,4.8-1.7,9.9,0.2,15.2c2.2,6.2,6.2,11.5,11.9,15.8c5.7,4.3,11.7,6.4,17.8,6.4h110.7c5.2,0,10.1-1.7,14.7-5.2s7.7-7.8,9.2-12.9
17
+ l33-108.6c1.8-5.8,1-10.9-2.2-15.5C194.9,39.7,192.6,38,189.5,36.8z M59.6,122.8L73.8,80c0,0,7,0,10.8,0s28.8-1.7,25.4,17.5
18
+ c-3.4,19.2-18.8,25.2-36.8,25.4S59.6,122.8,59.6,122.8z M78.6,116.8c4.7-0.1,18.9-2.9,22.1-17.1S89.2,86.3,89.2,86.3l-8.9,0
19
+ l-10.2,30.5C70.2,116.9,74,116.9,78.6,116.8z M75.3,68.7L89,26.2h9.8l0.8,34l23.6-34h9.9l-13.6,42.5h-7.1l12.5-35.4l-24.5,35.4h-6.8
20
+ l-0.8-35L82,68.7H75.3z"/>
21
+ </svg>
22
+ <!-- Original image Copyright Dave Gandy — CC BY 4.0 License -->