├── .gitignore
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── public
├── index.css
├── index.html
└── index.js
└── src
├── fontHrefs.json
├── fonts.js
├── index.js
├── temp
└── placeholder.txt
└── zips
└── placeholder.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
106 |
107 | # dependencies
108 | /node_modules
109 | /.pnp
110 | .pnp.js
111 |
112 | # testing
113 | /coverage
114 |
115 | # production
116 | /build
117 |
118 | # misc
119 | .DS_Store
120 | .env.local
121 | .env.development.local
122 | .env.test.local
123 | .env.production.local
124 |
125 | npm-debug.log*
126 | yarn-debug.log*
127 | yarn-error.log*
128 |
129 | # trash
130 | /trash
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 max
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Adobe Font Scraper
2 | > Adobe Font Download Utility
3 | Downloads .ttf font files from any Adobe font link.
4 |
5 | ~~Demo: https://adobe-font-scraper.herokuapp.com/~~
6 |
7 | ~~Hosted on Heroku free tier so it might take a hot minute to spin up server and load.~~
8 |
9 | GONE. No LINK. GOT DMCAd
10 |
11 | ## How To Run
12 | ```sh
13 | # install dependencies
14 | $ npm install
15 |
16 | # launch server
17 | $ npm start
18 | ```
19 |
20 | ## How To Scrape All Fonts
21 |
22 | 1. Go to `src/fonts.js`.
23 | 2. Uncomment line 172 and run `node src/fonts.js`. This will create a JSON file which holds all the links.
24 | 3. Comment that line.
25 | 4. Uncomment the block of code below 172 and run `node src/fonts.js`.
26 | 5. In the event that the script breaks, just run it again, it will check against already downloaded files.
27 | 6. Profit.
28 |
29 | ## Dependencies / Environment
30 |
31 | - NodeJS (v14.2.0)
32 | - Express - server
33 | - Puppeteer - scraping
34 | - wawoff2 - decoding WOFF2 files
35 | - opentype.js - getting font details (font family)
36 |
37 |
38 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "adobe-font-scraper",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@types/node": {
8 | "version": "14.0.27",
9 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz",
10 | "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==",
11 | "optional": true
12 | },
13 | "@types/yauzl": {
14 | "version": "2.9.1",
15 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz",
16 | "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==",
17 | "optional": true,
18 | "requires": {
19 | "@types/node": "*"
20 | }
21 | },
22 | "accepts": {
23 | "version": "1.3.7",
24 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
25 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
26 | "requires": {
27 | "mime-types": "~2.1.24",
28 | "negotiator": "0.6.2"
29 | }
30 | },
31 | "agent-base": {
32 | "version": "5.1.1",
33 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
34 | "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g=="
35 | },
36 | "ajv": {
37 | "version": "6.12.3",
38 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
39 | "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
40 | "requires": {
41 | "fast-deep-equal": "^3.1.1",
42 | "fast-json-stable-stringify": "^2.0.0",
43 | "json-schema-traverse": "^0.4.1",
44 | "uri-js": "^4.2.2"
45 | }
46 | },
47 | "archiver": {
48 | "version": "3.1.1",
49 | "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
50 | "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
51 | "requires": {
52 | "archiver-utils": "^2.1.0",
53 | "async": "^2.6.3",
54 | "buffer-crc32": "^0.2.1",
55 | "glob": "^7.1.4",
56 | "readable-stream": "^3.4.0",
57 | "tar-stream": "^2.1.0",
58 | "zip-stream": "^2.1.2"
59 | }
60 | },
61 | "archiver-utils": {
62 | "version": "2.1.0",
63 | "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
64 | "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
65 | "requires": {
66 | "glob": "^7.1.4",
67 | "graceful-fs": "^4.2.0",
68 | "lazystream": "^1.0.0",
69 | "lodash.defaults": "^4.2.0",
70 | "lodash.difference": "^4.5.0",
71 | "lodash.flatten": "^4.4.0",
72 | "lodash.isplainobject": "^4.0.6",
73 | "lodash.union": "^4.6.0",
74 | "normalize-path": "^3.0.0",
75 | "readable-stream": "^2.0.0"
76 | },
77 | "dependencies": {
78 | "readable-stream": {
79 | "version": "2.3.7",
80 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
81 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
82 | "requires": {
83 | "core-util-is": "~1.0.0",
84 | "inherits": "~2.0.3",
85 | "isarray": "~1.0.0",
86 | "process-nextick-args": "~2.0.0",
87 | "safe-buffer": "~5.1.1",
88 | "string_decoder": "~1.1.1",
89 | "util-deprecate": "~1.0.1"
90 | }
91 | },
92 | "safe-buffer": {
93 | "version": "5.1.2",
94 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
95 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
96 | },
97 | "string_decoder": {
98 | "version": "1.1.1",
99 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
100 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
101 | "requires": {
102 | "safe-buffer": "~5.1.0"
103 | }
104 | }
105 | }
106 | },
107 | "argparse": {
108 | "version": "1.0.10",
109 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
110 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
111 | "requires": {
112 | "sprintf-js": "~1.0.2"
113 | }
114 | },
115 | "array-flatten": {
116 | "version": "1.1.1",
117 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
118 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
119 | },
120 | "asn1": {
121 | "version": "0.2.4",
122 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
123 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
124 | "requires": {
125 | "safer-buffer": "~2.1.0"
126 | }
127 | },
128 | "assert-plus": {
129 | "version": "1.0.0",
130 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
131 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
132 | },
133 | "async": {
134 | "version": "2.6.3",
135 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
136 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
137 | "requires": {
138 | "lodash": "^4.17.14"
139 | }
140 | },
141 | "asynckit": {
142 | "version": "0.4.0",
143 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
144 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
145 | },
146 | "aws-sign2": {
147 | "version": "0.7.0",
148 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
149 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
150 | },
151 | "aws4": {
152 | "version": "1.10.0",
153 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
154 | "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA=="
155 | },
156 | "balanced-match": {
157 | "version": "1.0.0",
158 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
159 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
160 | },
161 | "base64-js": {
162 | "version": "1.3.1",
163 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
164 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
165 | },
166 | "bcrypt-pbkdf": {
167 | "version": "1.0.2",
168 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
169 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
170 | "requires": {
171 | "tweetnacl": "^0.14.3"
172 | }
173 | },
174 | "bl": {
175 | "version": "4.0.2",
176 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz",
177 | "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==",
178 | "requires": {
179 | "buffer": "^5.5.0",
180 | "inherits": "^2.0.4",
181 | "readable-stream": "^3.4.0"
182 | },
183 | "dependencies": {
184 | "inherits": {
185 | "version": "2.0.4",
186 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
187 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
188 | }
189 | }
190 | },
191 | "body-parser": {
192 | "version": "1.19.0",
193 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
194 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
195 | "requires": {
196 | "bytes": "3.1.0",
197 | "content-type": "~1.0.4",
198 | "debug": "2.6.9",
199 | "depd": "~1.1.2",
200 | "http-errors": "1.7.2",
201 | "iconv-lite": "0.4.24",
202 | "on-finished": "~2.3.0",
203 | "qs": "6.7.0",
204 | "raw-body": "2.4.0",
205 | "type-is": "~1.6.17"
206 | },
207 | "dependencies": {
208 | "debug": {
209 | "version": "2.6.9",
210 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
211 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
212 | "requires": {
213 | "ms": "2.0.0"
214 | }
215 | },
216 | "ms": {
217 | "version": "2.0.0",
218 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
219 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
220 | },
221 | "qs": {
222 | "version": "6.7.0",
223 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
224 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
225 | }
226 | }
227 | },
228 | "brace-expansion": {
229 | "version": "1.1.11",
230 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
231 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
232 | "requires": {
233 | "balanced-match": "^1.0.0",
234 | "concat-map": "0.0.1"
235 | }
236 | },
237 | "buffer": {
238 | "version": "5.6.0",
239 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
240 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
241 | "requires": {
242 | "base64-js": "^1.0.2",
243 | "ieee754": "^1.1.4"
244 | }
245 | },
246 | "buffer-crc32": {
247 | "version": "0.2.13",
248 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
249 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
250 | },
251 | "bytes": {
252 | "version": "3.1.0",
253 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
254 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
255 | },
256 | "caseless": {
257 | "version": "0.12.0",
258 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
259 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
260 | },
261 | "chownr": {
262 | "version": "1.1.4",
263 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
264 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
265 | },
266 | "cluster-key-slot": {
267 | "version": "1.1.0",
268 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz",
269 | "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw=="
270 | },
271 | "combined-stream": {
272 | "version": "1.0.8",
273 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
274 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
275 | "requires": {
276 | "delayed-stream": "~1.0.0"
277 | }
278 | },
279 | "compress-commons": {
280 | "version": "2.1.1",
281 | "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
282 | "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
283 | "requires": {
284 | "buffer-crc32": "^0.2.13",
285 | "crc32-stream": "^3.0.1",
286 | "normalize-path": "^3.0.0",
287 | "readable-stream": "^2.3.6"
288 | },
289 | "dependencies": {
290 | "readable-stream": {
291 | "version": "2.3.7",
292 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
293 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
294 | "requires": {
295 | "core-util-is": "~1.0.0",
296 | "inherits": "~2.0.3",
297 | "isarray": "~1.0.0",
298 | "process-nextick-args": "~2.0.0",
299 | "safe-buffer": "~5.1.1",
300 | "string_decoder": "~1.1.1",
301 | "util-deprecate": "~1.0.1"
302 | }
303 | },
304 | "safe-buffer": {
305 | "version": "5.1.2",
306 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
307 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
308 | },
309 | "string_decoder": {
310 | "version": "1.1.1",
311 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
312 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
313 | "requires": {
314 | "safe-buffer": "~5.1.0"
315 | }
316 | }
317 | }
318 | },
319 | "concat-map": {
320 | "version": "0.0.1",
321 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
322 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
323 | },
324 | "content-disposition": {
325 | "version": "0.5.3",
326 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
327 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
328 | "requires": {
329 | "safe-buffer": "5.1.2"
330 | },
331 | "dependencies": {
332 | "safe-buffer": {
333 | "version": "5.1.2",
334 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
335 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
336 | }
337 | }
338 | },
339 | "content-type": {
340 | "version": "1.0.4",
341 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
342 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
343 | },
344 | "cookie": {
345 | "version": "0.4.0",
346 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
347 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
348 | },
349 | "cookie-signature": {
350 | "version": "1.0.6",
351 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
352 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
353 | },
354 | "core-util-is": {
355 | "version": "1.0.2",
356 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
357 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
358 | },
359 | "crc": {
360 | "version": "3.8.0",
361 | "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
362 | "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
363 | "requires": {
364 | "buffer": "^5.1.0"
365 | }
366 | },
367 | "crc32-stream": {
368 | "version": "3.0.1",
369 | "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
370 | "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
371 | "requires": {
372 | "crc": "^3.4.4",
373 | "readable-stream": "^3.4.0"
374 | }
375 | },
376 | "dashdash": {
377 | "version": "1.14.1",
378 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
379 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
380 | "requires": {
381 | "assert-plus": "^1.0.0"
382 | }
383 | },
384 | "debug": {
385 | "version": "4.1.1",
386 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
387 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
388 | "requires": {
389 | "ms": "^2.1.1"
390 | }
391 | },
392 | "delayed-stream": {
393 | "version": "1.0.0",
394 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
395 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
396 | },
397 | "denque": {
398 | "version": "1.4.1",
399 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
400 | "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="
401 | },
402 | "depd": {
403 | "version": "1.1.2",
404 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
405 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
406 | },
407 | "destroy": {
408 | "version": "1.0.4",
409 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
410 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
411 | },
412 | "devtools-protocol": {
413 | "version": "0.0.781568",
414 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.781568.tgz",
415 | "integrity": "sha512-9Uqnzy6m6zEStluH9iyJ3iHyaQziFnMnLeC8vK0eN6smiJmIx7+yB64d67C2lH/LZra+5cGscJAJsNXO+MdPMg=="
416 | },
417 | "ecc-jsbn": {
418 | "version": "0.1.2",
419 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
420 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
421 | "requires": {
422 | "jsbn": "~0.1.0",
423 | "safer-buffer": "^2.1.0"
424 | }
425 | },
426 | "ee-first": {
427 | "version": "1.1.1",
428 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
429 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
430 | },
431 | "encodeurl": {
432 | "version": "1.0.2",
433 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
434 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
435 | },
436 | "end-of-stream": {
437 | "version": "1.4.4",
438 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
439 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
440 | "requires": {
441 | "once": "^1.4.0"
442 | }
443 | },
444 | "escape-html": {
445 | "version": "1.0.3",
446 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
447 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
448 | },
449 | "etag": {
450 | "version": "1.8.1",
451 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
452 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
453 | },
454 | "express": {
455 | "version": "4.17.1",
456 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
457 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
458 | "requires": {
459 | "accepts": "~1.3.7",
460 | "array-flatten": "1.1.1",
461 | "body-parser": "1.19.0",
462 | "content-disposition": "0.5.3",
463 | "content-type": "~1.0.4",
464 | "cookie": "0.4.0",
465 | "cookie-signature": "1.0.6",
466 | "debug": "2.6.9",
467 | "depd": "~1.1.2",
468 | "encodeurl": "~1.0.2",
469 | "escape-html": "~1.0.3",
470 | "etag": "~1.8.1",
471 | "finalhandler": "~1.1.2",
472 | "fresh": "0.5.2",
473 | "merge-descriptors": "1.0.1",
474 | "methods": "~1.1.2",
475 | "on-finished": "~2.3.0",
476 | "parseurl": "~1.3.3",
477 | "path-to-regexp": "0.1.7",
478 | "proxy-addr": "~2.0.5",
479 | "qs": "6.7.0",
480 | "range-parser": "~1.2.1",
481 | "safe-buffer": "5.1.2",
482 | "send": "0.17.1",
483 | "serve-static": "1.14.1",
484 | "setprototypeof": "1.1.1",
485 | "statuses": "~1.5.0",
486 | "type-is": "~1.6.18",
487 | "utils-merge": "1.0.1",
488 | "vary": "~1.1.2"
489 | },
490 | "dependencies": {
491 | "debug": {
492 | "version": "2.6.9",
493 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
494 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
495 | "requires": {
496 | "ms": "2.0.0"
497 | }
498 | },
499 | "ms": {
500 | "version": "2.0.0",
501 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
502 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
503 | },
504 | "qs": {
505 | "version": "6.7.0",
506 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
507 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
508 | },
509 | "safe-buffer": {
510 | "version": "5.1.2",
511 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
512 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
513 | }
514 | }
515 | },
516 | "express-rate-limit": {
517 | "version": "5.1.3",
518 | "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.1.3.tgz",
519 | "integrity": "sha512-TINcxve5510pXj4n9/1AMupkj3iWxl3JuZaWhCdYDlZeoCPqweGZrxbrlqTCFb1CT5wli7s8e2SH/Qz2c9GorA=="
520 | },
521 | "extend": {
522 | "version": "3.0.2",
523 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
524 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
525 | },
526 | "extract-zip": {
527 | "version": "2.0.1",
528 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
529 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
530 | "requires": {
531 | "@types/yauzl": "^2.9.1",
532 | "debug": "^4.1.1",
533 | "get-stream": "^5.1.0",
534 | "yauzl": "^2.10.0"
535 | }
536 | },
537 | "extsprintf": {
538 | "version": "1.3.0",
539 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
540 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
541 | },
542 | "fast-deep-equal": {
543 | "version": "3.1.3",
544 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
545 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
546 | },
547 | "fast-json-stable-stringify": {
548 | "version": "2.1.0",
549 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
550 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
551 | },
552 | "fd-slicer": {
553 | "version": "1.1.0",
554 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
555 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
556 | "requires": {
557 | "pend": "~1.2.0"
558 | }
559 | },
560 | "finalhandler": {
561 | "version": "1.1.2",
562 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
563 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
564 | "requires": {
565 | "debug": "2.6.9",
566 | "encodeurl": "~1.0.2",
567 | "escape-html": "~1.0.3",
568 | "on-finished": "~2.3.0",
569 | "parseurl": "~1.3.3",
570 | "statuses": "~1.5.0",
571 | "unpipe": "~1.0.0"
572 | },
573 | "dependencies": {
574 | "debug": {
575 | "version": "2.6.9",
576 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
577 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
578 | "requires": {
579 | "ms": "2.0.0"
580 | }
581 | },
582 | "ms": {
583 | "version": "2.0.0",
584 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
585 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
586 | }
587 | }
588 | },
589 | "find-up": {
590 | "version": "4.1.0",
591 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
592 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
593 | "requires": {
594 | "locate-path": "^5.0.0",
595 | "path-exists": "^4.0.0"
596 | }
597 | },
598 | "fonteditor-core": {
599 | "version": "2.1.1",
600 | "resolved": "https://registry.npmjs.org/fonteditor-core/-/fonteditor-core-2.1.1.tgz",
601 | "integrity": "sha512-ziEMesYo9PuptQWrzlPQGAqbaeMfkkdrlun09cpiOyJvLmU7uQcZJnuvXeKTO7mvNtEU83eDUFdXDBFx4/Oezw==",
602 | "requires": {
603 | "xmldom": "~0.1.19"
604 | }
605 | },
606 | "forever-agent": {
607 | "version": "0.6.1",
608 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
609 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
610 | },
611 | "form-data": {
612 | "version": "2.3.3",
613 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
614 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
615 | "requires": {
616 | "asynckit": "^0.4.0",
617 | "combined-stream": "^1.0.6",
618 | "mime-types": "^2.1.12"
619 | }
620 | },
621 | "forwarded": {
622 | "version": "0.1.2",
623 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
624 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
625 | },
626 | "fresh": {
627 | "version": "0.5.2",
628 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
629 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
630 | },
631 | "fs-constants": {
632 | "version": "1.0.0",
633 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
634 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
635 | },
636 | "fs.realpath": {
637 | "version": "1.0.0",
638 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
639 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
640 | },
641 | "get-stream": {
642 | "version": "5.1.0",
643 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
644 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
645 | "requires": {
646 | "pump": "^3.0.0"
647 | }
648 | },
649 | "get-urls": {
650 | "version": "9.2.1",
651 | "resolved": "https://registry.npmjs.org/get-urls/-/get-urls-9.2.1.tgz",
652 | "integrity": "sha512-/3TvzO0Na4v5mvTs+6mOGTOz3woxuEcB3TiGzKry6VtKBrqSOm6D33vjYUxU2WD2mPmBPe73oE5d6zx119+DdA==",
653 | "requires": {
654 | "normalize-url": "^4.3.0",
655 | "url-regex": "^5.0.0"
656 | }
657 | },
658 | "getpass": {
659 | "version": "0.1.7",
660 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
661 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
662 | "requires": {
663 | "assert-plus": "^1.0.0"
664 | }
665 | },
666 | "glob": {
667 | "version": "7.1.6",
668 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
669 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
670 | "requires": {
671 | "fs.realpath": "^1.0.0",
672 | "inflight": "^1.0.4",
673 | "inherits": "2",
674 | "minimatch": "^3.0.4",
675 | "once": "^1.3.0",
676 | "path-is-absolute": "^1.0.0"
677 | }
678 | },
679 | "graceful-fs": {
680 | "version": "4.2.4",
681 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
682 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
683 | },
684 | "har-schema": {
685 | "version": "2.0.0",
686 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
687 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
688 | },
689 | "har-validator": {
690 | "version": "5.1.5",
691 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
692 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
693 | "requires": {
694 | "ajv": "^6.12.3",
695 | "har-schema": "^2.0.0"
696 | }
697 | },
698 | "helmet": {
699 | "version": "4.0.0",
700 | "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.0.0.tgz",
701 | "integrity": "sha512-HyoRKKHhWhO6+EBfgRLkuZR4/+NXc1nJB7x0bWwW89i9eoPciK0qUqyZNOA/zowpgrW9C4+J5toqMkZrpBOlkg=="
702 | },
703 | "http-errors": {
704 | "version": "1.7.2",
705 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
706 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
707 | "requires": {
708 | "depd": "~1.1.2",
709 | "inherits": "2.0.3",
710 | "setprototypeof": "1.1.1",
711 | "statuses": ">= 1.5.0 < 2",
712 | "toidentifier": "1.0.0"
713 | }
714 | },
715 | "http-signature": {
716 | "version": "1.2.0",
717 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
718 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
719 | "requires": {
720 | "assert-plus": "^1.0.0",
721 | "jsprim": "^1.2.2",
722 | "sshpk": "^1.7.0"
723 | }
724 | },
725 | "https-proxy-agent": {
726 | "version": "4.0.0",
727 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
728 | "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
729 | "requires": {
730 | "agent-base": "5",
731 | "debug": "4"
732 | }
733 | },
734 | "iconv-lite": {
735 | "version": "0.4.24",
736 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
737 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
738 | "requires": {
739 | "safer-buffer": ">= 2.1.2 < 3"
740 | }
741 | },
742 | "ieee754": {
743 | "version": "1.1.13",
744 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
745 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
746 | },
747 | "inflight": {
748 | "version": "1.0.6",
749 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
750 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
751 | "requires": {
752 | "once": "^1.3.0",
753 | "wrappy": "1"
754 | }
755 | },
756 | "inherits": {
757 | "version": "2.0.3",
758 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
759 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
760 | },
761 | "ioredis": {
762 | "version": "4.17.3",
763 | "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.17.3.tgz",
764 | "integrity": "sha512-iRvq4BOYzNFkDnSyhx7cmJNOi1x/HWYe+A4VXHBu4qpwJaGT1Mp+D2bVGJntH9K/Z/GeOM/Nprb8gB3bmitz1Q==",
765 | "requires": {
766 | "cluster-key-slot": "^1.1.0",
767 | "debug": "^4.1.1",
768 | "denque": "^1.1.0",
769 | "lodash.defaults": "^4.2.0",
770 | "lodash.flatten": "^4.4.0",
771 | "redis-commands": "1.5.0",
772 | "redis-errors": "^1.2.0",
773 | "redis-parser": "^3.0.0",
774 | "standard-as-callback": "^2.0.1"
775 | }
776 | },
777 | "ip-regex": {
778 | "version": "4.1.0",
779 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz",
780 | "integrity": "sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA=="
781 | },
782 | "ipaddr.js": {
783 | "version": "1.9.1",
784 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
785 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
786 | },
787 | "is-typedarray": {
788 | "version": "1.0.0",
789 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
790 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
791 | },
792 | "isarray": {
793 | "version": "1.0.0",
794 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
795 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
796 | },
797 | "isstream": {
798 | "version": "0.1.2",
799 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
800 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
801 | },
802 | "jsbn": {
803 | "version": "0.1.1",
804 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
805 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
806 | },
807 | "json-schema": {
808 | "version": "0.2.3",
809 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
810 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
811 | },
812 | "json-schema-traverse": {
813 | "version": "0.4.1",
814 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
815 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
816 | },
817 | "json-stringify-safe": {
818 | "version": "5.0.1",
819 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
820 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
821 | },
822 | "jsprim": {
823 | "version": "1.4.1",
824 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
825 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
826 | "requires": {
827 | "assert-plus": "1.0.0",
828 | "extsprintf": "1.3.0",
829 | "json-schema": "0.2.3",
830 | "verror": "1.10.0"
831 | }
832 | },
833 | "lazystream": {
834 | "version": "1.0.0",
835 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
836 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
837 | "requires": {
838 | "readable-stream": "^2.0.5"
839 | },
840 | "dependencies": {
841 | "readable-stream": {
842 | "version": "2.3.7",
843 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
844 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
845 | "requires": {
846 | "core-util-is": "~1.0.0",
847 | "inherits": "~2.0.3",
848 | "isarray": "~1.0.0",
849 | "process-nextick-args": "~2.0.0",
850 | "safe-buffer": "~5.1.1",
851 | "string_decoder": "~1.1.1",
852 | "util-deprecate": "~1.0.1"
853 | }
854 | },
855 | "safe-buffer": {
856 | "version": "5.1.2",
857 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
858 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
859 | },
860 | "string_decoder": {
861 | "version": "1.1.1",
862 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
863 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
864 | "requires": {
865 | "safe-buffer": "~5.1.0"
866 | }
867 | }
868 | }
869 | },
870 | "locate-path": {
871 | "version": "5.0.0",
872 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
873 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
874 | "requires": {
875 | "p-locate": "^4.1.0"
876 | }
877 | },
878 | "lodash": {
879 | "version": "4.17.19",
880 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
881 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
882 | },
883 | "lodash.defaults": {
884 | "version": "4.2.0",
885 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
886 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
887 | },
888 | "lodash.difference": {
889 | "version": "4.5.0",
890 | "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
891 | "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw="
892 | },
893 | "lodash.flatten": {
894 | "version": "4.4.0",
895 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
896 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
897 | },
898 | "lodash.isplainobject": {
899 | "version": "4.0.6",
900 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
901 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
902 | },
903 | "lodash.union": {
904 | "version": "4.6.0",
905 | "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
906 | "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg="
907 | },
908 | "media-typer": {
909 | "version": "0.3.0",
910 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
911 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
912 | },
913 | "merge-descriptors": {
914 | "version": "1.0.1",
915 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
916 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
917 | },
918 | "methods": {
919 | "version": "1.1.2",
920 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
921 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
922 | },
923 | "mime": {
924 | "version": "2.4.6",
925 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
926 | "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
927 | },
928 | "mime-db": {
929 | "version": "1.44.0",
930 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
931 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
932 | },
933 | "mime-types": {
934 | "version": "2.1.27",
935 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
936 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
937 | "requires": {
938 | "mime-db": "1.44.0"
939 | }
940 | },
941 | "minimatch": {
942 | "version": "3.0.4",
943 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
944 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
945 | "requires": {
946 | "brace-expansion": "^1.1.7"
947 | }
948 | },
949 | "mkdirp-classic": {
950 | "version": "0.5.3",
951 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
952 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
953 | },
954 | "ms": {
955 | "version": "2.1.2",
956 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
957 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
958 | },
959 | "negotiator": {
960 | "version": "0.6.2",
961 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
962 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
963 | },
964 | "normalize-path": {
965 | "version": "3.0.0",
966 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
967 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
968 | },
969 | "normalize-url": {
970 | "version": "4.5.0",
971 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
972 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ=="
973 | },
974 | "oauth-sign": {
975 | "version": "0.9.0",
976 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
977 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
978 | },
979 | "on-finished": {
980 | "version": "2.3.0",
981 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
982 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
983 | "requires": {
984 | "ee-first": "1.1.1"
985 | }
986 | },
987 | "once": {
988 | "version": "1.4.0",
989 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
990 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
991 | "requires": {
992 | "wrappy": "1"
993 | }
994 | },
995 | "opentype.js": {
996 | "version": "1.3.3",
997 | "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.3.tgz",
998 | "integrity": "sha512-/qIY/+WnKGlPIIPhbeNjynfD2PO15G9lA/xqlX2bDH+4lc3Xz5GCQ68mqxj3DdUv6AJqCeaPvuAoH8mVL0zcuA==",
999 | "requires": {
1000 | "string.prototype.codepointat": "^0.2.1",
1001 | "tiny-inflate": "^1.0.3"
1002 | }
1003 | },
1004 | "p-limit": {
1005 | "version": "2.3.0",
1006 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
1007 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
1008 | "requires": {
1009 | "p-try": "^2.0.0"
1010 | }
1011 | },
1012 | "p-locate": {
1013 | "version": "4.1.0",
1014 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
1015 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1016 | "requires": {
1017 | "p-limit": "^2.2.0"
1018 | }
1019 | },
1020 | "p-try": {
1021 | "version": "2.2.0",
1022 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1023 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
1024 | },
1025 | "parseurl": {
1026 | "version": "1.3.3",
1027 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1028 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1029 | },
1030 | "path": {
1031 | "version": "0.12.7",
1032 | "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
1033 | "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
1034 | "requires": {
1035 | "process": "^0.11.1",
1036 | "util": "^0.10.3"
1037 | }
1038 | },
1039 | "path-exists": {
1040 | "version": "4.0.0",
1041 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1042 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
1043 | },
1044 | "path-is-absolute": {
1045 | "version": "1.0.1",
1046 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1047 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
1048 | },
1049 | "path-to-regexp": {
1050 | "version": "0.1.7",
1051 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1052 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
1053 | },
1054 | "pend": {
1055 | "version": "1.2.0",
1056 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
1057 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
1058 | },
1059 | "performance-now": {
1060 | "version": "2.1.0",
1061 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1062 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
1063 | },
1064 | "pkg-dir": {
1065 | "version": "4.2.0",
1066 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
1067 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
1068 | "requires": {
1069 | "find-up": "^4.0.0"
1070 | }
1071 | },
1072 | "process": {
1073 | "version": "0.11.10",
1074 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
1075 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
1076 | },
1077 | "process-nextick-args": {
1078 | "version": "2.0.1",
1079 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1080 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
1081 | },
1082 | "progress": {
1083 | "version": "2.0.3",
1084 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1085 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
1086 | },
1087 | "proxy-addr": {
1088 | "version": "2.0.6",
1089 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
1090 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
1091 | "requires": {
1092 | "forwarded": "~0.1.2",
1093 | "ipaddr.js": "1.9.1"
1094 | }
1095 | },
1096 | "proxy-from-env": {
1097 | "version": "1.1.0",
1098 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1099 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
1100 | },
1101 | "psl": {
1102 | "version": "1.8.0",
1103 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
1104 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
1105 | },
1106 | "pump": {
1107 | "version": "3.0.0",
1108 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1109 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1110 | "requires": {
1111 | "end-of-stream": "^1.1.0",
1112 | "once": "^1.3.1"
1113 | }
1114 | },
1115 | "punycode": {
1116 | "version": "2.1.1",
1117 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1118 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
1119 | },
1120 | "puppeteer": {
1121 | "version": "5.2.1",
1122 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.2.1.tgz",
1123 | "integrity": "sha512-PZoZG7u+T6N1GFWBQmGVG162Ak5MAy8nYSVpeeQrwJK2oYUlDWpHEJPcd/zopyuEMTv7DiztS1blgny1txR2qw==",
1124 | "requires": {
1125 | "debug": "^4.1.0",
1126 | "devtools-protocol": "0.0.781568",
1127 | "extract-zip": "^2.0.0",
1128 | "https-proxy-agent": "^4.0.0",
1129 | "mime": "^2.0.3",
1130 | "pkg-dir": "^4.2.0",
1131 | "progress": "^2.0.1",
1132 | "proxy-from-env": "^1.0.0",
1133 | "rimraf": "^3.0.2",
1134 | "tar-fs": "^2.0.0",
1135 | "unbzip2-stream": "^1.3.3",
1136 | "ws": "^7.2.3"
1137 | }
1138 | },
1139 | "qs": {
1140 | "version": "6.5.2",
1141 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1142 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
1143 | },
1144 | "range-parser": {
1145 | "version": "1.2.1",
1146 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1147 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1148 | },
1149 | "raw-body": {
1150 | "version": "2.4.0",
1151 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
1152 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
1153 | "requires": {
1154 | "bytes": "3.1.0",
1155 | "http-errors": "1.7.2",
1156 | "iconv-lite": "0.4.24",
1157 | "unpipe": "1.0.0"
1158 | }
1159 | },
1160 | "readable-stream": {
1161 | "version": "3.6.0",
1162 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
1163 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
1164 | "requires": {
1165 | "inherits": "^2.0.3",
1166 | "string_decoder": "^1.1.1",
1167 | "util-deprecate": "^1.0.1"
1168 | }
1169 | },
1170 | "redis-commands": {
1171 | "version": "1.5.0",
1172 | "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz",
1173 | "integrity": "sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg=="
1174 | },
1175 | "redis-errors": {
1176 | "version": "1.2.0",
1177 | "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
1178 | "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60="
1179 | },
1180 | "redis-parser": {
1181 | "version": "3.0.0",
1182 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
1183 | "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=",
1184 | "requires": {
1185 | "redis-errors": "^1.0.0"
1186 | }
1187 | },
1188 | "request": {
1189 | "version": "2.88.2",
1190 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
1191 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
1192 | "requires": {
1193 | "aws-sign2": "~0.7.0",
1194 | "aws4": "^1.8.0",
1195 | "caseless": "~0.12.0",
1196 | "combined-stream": "~1.0.6",
1197 | "extend": "~3.0.2",
1198 | "forever-agent": "~0.6.1",
1199 | "form-data": "~2.3.2",
1200 | "har-validator": "~5.1.3",
1201 | "http-signature": "~1.2.0",
1202 | "is-typedarray": "~1.0.0",
1203 | "isstream": "~0.1.2",
1204 | "json-stringify-safe": "~5.0.1",
1205 | "mime-types": "~2.1.19",
1206 | "oauth-sign": "~0.9.0",
1207 | "performance-now": "^2.1.0",
1208 | "qs": "~6.5.2",
1209 | "safe-buffer": "^5.1.2",
1210 | "tough-cookie": "~2.5.0",
1211 | "tunnel-agent": "^0.6.0",
1212 | "uuid": "^3.3.2"
1213 | }
1214 | },
1215 | "rimraf": {
1216 | "version": "3.0.2",
1217 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1218 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1219 | "requires": {
1220 | "glob": "^7.1.3"
1221 | }
1222 | },
1223 | "safe-buffer": {
1224 | "version": "5.2.1",
1225 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1226 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1227 | },
1228 | "safer-buffer": {
1229 | "version": "2.1.2",
1230 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1231 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1232 | },
1233 | "send": {
1234 | "version": "0.17.1",
1235 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1236 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1237 | "requires": {
1238 | "debug": "2.6.9",
1239 | "depd": "~1.1.2",
1240 | "destroy": "~1.0.4",
1241 | "encodeurl": "~1.0.2",
1242 | "escape-html": "~1.0.3",
1243 | "etag": "~1.8.1",
1244 | "fresh": "0.5.2",
1245 | "http-errors": "~1.7.2",
1246 | "mime": "1.6.0",
1247 | "ms": "2.1.1",
1248 | "on-finished": "~2.3.0",
1249 | "range-parser": "~1.2.1",
1250 | "statuses": "~1.5.0"
1251 | },
1252 | "dependencies": {
1253 | "debug": {
1254 | "version": "2.6.9",
1255 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1256 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1257 | "requires": {
1258 | "ms": "2.0.0"
1259 | },
1260 | "dependencies": {
1261 | "ms": {
1262 | "version": "2.0.0",
1263 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1264 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1265 | }
1266 | }
1267 | },
1268 | "mime": {
1269 | "version": "1.6.0",
1270 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1271 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1272 | },
1273 | "ms": {
1274 | "version": "2.1.1",
1275 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1276 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1277 | }
1278 | }
1279 | },
1280 | "serve-static": {
1281 | "version": "1.14.1",
1282 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1283 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1284 | "requires": {
1285 | "encodeurl": "~1.0.2",
1286 | "escape-html": "~1.0.3",
1287 | "parseurl": "~1.3.3",
1288 | "send": "0.17.1"
1289 | }
1290 | },
1291 | "setprototypeof": {
1292 | "version": "1.1.1",
1293 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1294 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1295 | },
1296 | "sprintf-js": {
1297 | "version": "1.0.3",
1298 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1299 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
1300 | },
1301 | "sshpk": {
1302 | "version": "1.16.1",
1303 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
1304 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
1305 | "requires": {
1306 | "asn1": "~0.2.3",
1307 | "assert-plus": "^1.0.0",
1308 | "bcrypt-pbkdf": "^1.0.0",
1309 | "dashdash": "^1.12.0",
1310 | "ecc-jsbn": "~0.1.1",
1311 | "getpass": "^0.1.1",
1312 | "jsbn": "~0.1.0",
1313 | "safer-buffer": "^2.0.2",
1314 | "tweetnacl": "~0.14.0"
1315 | }
1316 | },
1317 | "standard-as-callback": {
1318 | "version": "2.0.1",
1319 | "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.0.1.tgz",
1320 | "integrity": "sha512-NQOxSeB8gOI5WjSaxjBgog2QFw55FV8TkS6Y07BiB3VJ8xNTvUYm0wl0s8ObgQ5NhdpnNfigMIKjgPESzgr4tg=="
1321 | },
1322 | "statuses": {
1323 | "version": "1.5.0",
1324 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1325 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
1326 | },
1327 | "string.prototype.codepointat": {
1328 | "version": "0.2.1",
1329 | "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz",
1330 | "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg=="
1331 | },
1332 | "string_decoder": {
1333 | "version": "1.3.0",
1334 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
1335 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
1336 | "requires": {
1337 | "safe-buffer": "~5.2.0"
1338 | },
1339 | "dependencies": {
1340 | "safe-buffer": {
1341 | "version": "5.2.1",
1342 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1343 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1344 | }
1345 | }
1346 | },
1347 | "tar-fs": {
1348 | "version": "2.1.0",
1349 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz",
1350 | "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==",
1351 | "requires": {
1352 | "chownr": "^1.1.1",
1353 | "mkdirp-classic": "^0.5.2",
1354 | "pump": "^3.0.0",
1355 | "tar-stream": "^2.0.0"
1356 | }
1357 | },
1358 | "tar-stream": {
1359 | "version": "2.1.3",
1360 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz",
1361 | "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==",
1362 | "requires": {
1363 | "bl": "^4.0.1",
1364 | "end-of-stream": "^1.4.1",
1365 | "fs-constants": "^1.0.0",
1366 | "inherits": "^2.0.3",
1367 | "readable-stream": "^3.1.1"
1368 | }
1369 | },
1370 | "through": {
1371 | "version": "2.3.8",
1372 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
1373 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
1374 | },
1375 | "tiny-inflate": {
1376 | "version": "1.0.3",
1377 | "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
1378 | "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
1379 | },
1380 | "tlds": {
1381 | "version": "1.207.0",
1382 | "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.207.0.tgz",
1383 | "integrity": "sha512-k7d7Q1LqjtAvhtEOs3yN14EabsNO8ZCoY6RESSJDB9lst3bTx3as/m1UuAeCKzYxiyhR1qq72ZPhpSf+qlqiwg=="
1384 | },
1385 | "toidentifier": {
1386 | "version": "1.0.0",
1387 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1388 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
1389 | },
1390 | "tough-cookie": {
1391 | "version": "2.5.0",
1392 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1393 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1394 | "requires": {
1395 | "psl": "^1.1.28",
1396 | "punycode": "^2.1.1"
1397 | }
1398 | },
1399 | "tunnel-agent": {
1400 | "version": "0.6.0",
1401 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1402 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1403 | "requires": {
1404 | "safe-buffer": "^5.0.1"
1405 | }
1406 | },
1407 | "tweetnacl": {
1408 | "version": "0.14.5",
1409 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1410 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
1411 | },
1412 | "type-is": {
1413 | "version": "1.6.18",
1414 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1415 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1416 | "requires": {
1417 | "media-typer": "0.3.0",
1418 | "mime-types": "~2.1.24"
1419 | }
1420 | },
1421 | "unbzip2-stream": {
1422 | "version": "1.4.3",
1423 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
1424 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
1425 | "requires": {
1426 | "buffer": "^5.2.1",
1427 | "through": "^2.3.8"
1428 | }
1429 | },
1430 | "unpipe": {
1431 | "version": "1.0.0",
1432 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1433 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1434 | },
1435 | "uri-js": {
1436 | "version": "4.2.2",
1437 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1438 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1439 | "requires": {
1440 | "punycode": "^2.1.0"
1441 | }
1442 | },
1443 | "url-regex": {
1444 | "version": "5.0.0",
1445 | "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz",
1446 | "integrity": "sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g==",
1447 | "requires": {
1448 | "ip-regex": "^4.1.0",
1449 | "tlds": "^1.203.0"
1450 | }
1451 | },
1452 | "util": {
1453 | "version": "0.10.4",
1454 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
1455 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
1456 | "requires": {
1457 | "inherits": "2.0.3"
1458 | }
1459 | },
1460 | "util-deprecate": {
1461 | "version": "1.0.2",
1462 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1463 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
1464 | },
1465 | "utils-merge": {
1466 | "version": "1.0.1",
1467 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1468 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1469 | },
1470 | "uuid": {
1471 | "version": "3.4.0",
1472 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1473 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
1474 | },
1475 | "vary": {
1476 | "version": "1.1.2",
1477 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1478 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1479 | },
1480 | "verror": {
1481 | "version": "1.10.0",
1482 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1483 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1484 | "requires": {
1485 | "assert-plus": "^1.0.0",
1486 | "core-util-is": "1.0.2",
1487 | "extsprintf": "^1.2.0"
1488 | }
1489 | },
1490 | "wawoff2": {
1491 | "version": "1.0.2",
1492 | "resolved": "https://registry.npmjs.org/wawoff2/-/wawoff2-1.0.2.tgz",
1493 | "integrity": "sha512-qxuTwf5tAP/XojrRc6cmR0hGvqgD3XUxv2fzfzURKPDfE7AeHmtRuankVxdJ4DRdSKXaE5QlyJT49yBis2vb6Q==",
1494 | "requires": {
1495 | "argparse": "^1.0.6"
1496 | }
1497 | },
1498 | "wrappy": {
1499 | "version": "1.0.2",
1500 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1501 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
1502 | },
1503 | "ws": {
1504 | "version": "7.3.1",
1505 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
1506 | "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA=="
1507 | },
1508 | "xmldom": {
1509 | "version": "0.1.31",
1510 | "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
1511 | "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ=="
1512 | },
1513 | "yauzl": {
1514 | "version": "2.10.0",
1515 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
1516 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
1517 | "requires": {
1518 | "buffer-crc32": "~0.2.3",
1519 | "fd-slicer": "~1.1.0"
1520 | }
1521 | },
1522 | "zip-a-folder": {
1523 | "version": "0.0.12",
1524 | "resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-0.0.12.tgz",
1525 | "integrity": "sha512-wZGiWgp3z2TocBlzx3S5tsLgPbT39qG2uIZmn2MhYLVjhKIr2nMhg7i4iPDL4W3XvMDaOEEVU5ZB0Y/Pt6BLvA==",
1526 | "requires": {
1527 | "archiver": "^3.1.1"
1528 | }
1529 | },
1530 | "zip-stream": {
1531 | "version": "2.1.3",
1532 | "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
1533 | "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
1534 | "requires": {
1535 | "archiver-utils": "^2.1.0",
1536 | "compress-commons": "^2.1.1",
1537 | "readable-stream": "^3.4.0"
1538 | }
1539 | }
1540 | }
1541 | }
1542 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "adobe-font-scraper",
3 | "version": "1.0.0",
4 | "description": "adobe ttf font scraper",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "start": "node src/index.js"
9 | },
10 | "repository": {
11 | "type": "git",
12 | "url": "git+https://github.com/chiumax/adobe-font-scraper.git"
13 | },
14 | "author": "max",
15 | "license": "MIT",
16 | "bugs": {
17 | "url": "https://github.com/chiumax/adobe-font-scraper/issues"
18 | },
19 | "homepage": "https://github.com/chiumax/adobe-font-scraper#readme",
20 | "dependencies": {
21 | "express": "^4.17.1",
22 | "express-rate-limit": "^5.1.3",
23 | "get-urls": "^9.2.1",
24 | "helmet": "^4.0.0",
25 | "ioredis": "^4.17.3",
26 | "opentype.js": "^1.3.3",
27 | "path": "^0.12.7",
28 | "puppeteer": "^5.2.1",
29 | "request": "^2.88.2",
30 | "rimraf": "^3.0.2",
31 | "wawoff2": "^1.0.2",
32 | "zip-a-folder": "0.0.12"
33 | },
34 | "engines": {
35 | "node": "14.2.0"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/public/index.css:
--------------------------------------------------------------------------------
1 | html {
2 | text-align: center;
3 | color: white;
4 | background-color: black;
5 | font-size: 105%;
6 | font-family: "PT Sans", sans-serif;
7 | }
8 | h1 {
9 | font-size: 300%;
10 | }
11 | .body {
12 | display: flex;
13 | flex-direction: column;
14 | justify-content: center;
15 | align-items: center;
16 | height: 100vh;
17 | overflow-x: hidden;
18 | }
19 |
20 | .form {
21 | margin-top: 50px;
22 | margin-bottom: 50px;
23 | }
24 |
25 | form {
26 | display: flex;
27 | flex-direction: column;
28 | align-items: center;
29 | width: 400px;
30 | }
31 |
32 | form > * {
33 | width: 450px;
34 | margin-top: 10px;
35 | }
36 |
37 | form > label {
38 | text-align: left;
39 | }
40 |
41 | footer {
42 | flex-direction: column;
43 | align-items: center;
44 | justify-content: center;
45 | }
46 |
47 | footer > p {
48 | text-align: center;
49 | margin-left: 100px;
50 | margin-right: 100px;
51 | }
52 | input {
53 | background-color: #000000;
54 | border-color: white;
55 | border-top-color: white;
56 | color: white;
57 | border-style: solid;
58 | border-radius: 4px;
59 | padding: 10px;
60 | max-width: 600px;
61 | /* outline: none; */
62 | }
63 | /* .submit {
64 | box-sizing: border-box;
65 | width: 100px;
66 | padding-top: 10px;
67 | padding-bottom: 10px;
68 | } */
69 |
70 | .submit:hover,
71 | .submit:focus {
72 | /* background-color: white; */
73 | transform: scale(1.08);
74 | cursor: pointer;
75 | }
76 |
77 | .submit {
78 | display: inline-block;
79 | padding: 0.35em 1.2em;
80 | border: 0.1em solid #ffffff;
81 | margin: 20px 0.3em 0.3em 0;
82 | border-radius: 0.12em;
83 | box-sizing: border-box;
84 | text-decoration: none;
85 | font-family: "Roboto", sans-serif;
86 | font-weight: 300;
87 | color: #ffffff;
88 | text-align: center;
89 | transition: all 0.2s;
90 | width: 200px;
91 | background-color: #000000;
92 | }
93 | .submit:hover {
94 | background-color: #000000;
95 | color: #ffffff;
96 | }
97 | @media all and (max-width: 30em) {
98 | .submit {
99 | display: block;
100 | margin: 0.4em auto;
101 | }
102 | }
103 | a {
104 | color: white;
105 | }
106 | a:active {
107 | color: white;
108 | }
109 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Adobe Font Scraper
7 |
8 |
14 |
18 |
19 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
35 |
36 |
48 |
49 |
50 |
51 |
84 |
85 |
86 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/public/index.js:
--------------------------------------------------------------------------------
1 | const form = document.getElementById("fontUrl");
2 |
3 | form.addEventListener("input", function (event) {
4 | const font = "https://fonts.adobe.com/fonts/";
5 | const fontCollection = "https://fonts.adobe.com/collections/";
6 |
7 | if (form.validity.typeMismatch) {
8 | form.setCustomValidity("Please enter a URL.");
9 | } else if (form.value.length <= 30) {
10 | form.setCustomValidity("This URL does not point to a font.");
11 | } else if (
12 | !form.value.includes(font) &&
13 | !form.value.includes(fontCollection)
14 | ) {
15 | form.setCustomValidity("This URL does not point to Adobe Fonts.");
16 | }
17 | });
18 |
--------------------------------------------------------------------------------
/src/fontHrefs.json:
--------------------------------------------------------------------------------
1 | {"fontArray":["https://fonts.adobe.com/fonts/aaux-next","https://fonts.adobe.com/fonts/abadi","https://fonts.adobe.com/fonts/abigail","https://fonts.adobe.com/fonts/abolition","https://fonts.adobe.com/fonts/abril","https://fonts.adobe.com/fonts/abril-titling","https://fonts.adobe.com/fonts/acier-bat","https://fonts.adobe.com/fonts/acme-gothic","https://fonts.adobe.com/fonts/acroterionjf","https://fonts.adobe.com/fonts/active","https://fonts.adobe.com/fonts/acumin","https://fonts.adobe.com/fonts/acuta","https://fonts.adobe.com/fonts/adage-script-jf","https://fonts.adobe.com/fonts/adaptive-mono","https://fonts.adobe.com/fonts/address-sans","https://fonts.adobe.com/fonts/adelle","https://fonts.adobe.com/fonts/adelle-sans","https://fonts.adobe.com/fonts/adelle-sans-arabic","https://fonts.adobe.com/fonts/adhesive-nr-seven","https://fonts.adobe.com/fonts/adobe-arabic","https://fonts.adobe.com/fonts/adobe-bengali","https://fonts.adobe.com/fonts/adobe-caslon","https://fonts.adobe.com/fonts/adobe-devanagari","https://fonts.adobe.com/fonts/adobe-fan-heiti","https://fonts.adobe.com/fonts/adobe-fangsong","https://fonts.adobe.com/fonts/adobe-garamond","https://fonts.adobe.com/fonts/adobe-gothic","https://fonts.adobe.com/fonts/adobe-gujarati","https://fonts.adobe.com/fonts/adobe-gurmukhi","https://fonts.adobe.com/fonts/adobe-handwriting","https://fonts.adobe.com/fonts/adobe-hebrew","https://fonts.adobe.com/fonts/adobe-heiti","https://fonts.adobe.com/fonts/adobe-jenson","https://fonts.adobe.com/fonts/adobe-kaiti","https://fonts.adobe.com/fonts/adobe-kannada","https://fonts.adobe.com/fonts/adobe-ming","https://fonts.adobe.com/fonts/adobe-myungjo","https://fonts.adobe.com/fonts/adobe-naskh","https://fonts.adobe.com/fonts/adobe-song","https://fonts.adobe.com/fonts/adobe-tamil","https://fonts.adobe.com/fonts/adobe-telugu","https://fonts.adobe.com/fonts/adobe-text","https://fonts.adobe.com/fonts/adobe-thai","https://fonts.adobe.com/fonts/adonis","https://fonts.adobe.com/fonts/adorn","https://fonts.adobe.com/fonts/adorn-engraved","https://fonts.adobe.com/fonts/adorn-ornaments","https://fonts.adobe.com/fonts/adorn-sans","https://fonts.adobe.com/fonts/adorn-serif","https://fonts.adobe.com/fonts/adorn-slab-serif","https://fonts.adobe.com/fonts/adorn-smooth","https://fonts.adobe.com/fonts/adriane-text","https://fonts.adobe.com/fonts/adrianna","https://fonts.adobe.com/fonts/adso","https://fonts.adobe.com/fonts/adventure","https://fonts.adobe.com/fonts/agenda","https://fonts.adobe.com/fonts/aglet-sans","https://fonts.adobe.com/fonts/aglet-slab","https://fonts.adobe.com/fonts/aileron","https://fonts.adobe.com/fonts/ainsdale","https://fonts.adobe.com/fonts/ainslie-sans","https://fonts.adobe.com/fonts/aisha","https://fonts.adobe.com/fonts/akagi","https://fonts.adobe.com/fonts/aktiv-grotesk","https://fonts.adobe.com/fonts/al-fresco","https://fonts.adobe.com/fonts/alana","https://fonts.adobe.com/fonts/alana-smooth","https://fonts.adobe.com/fonts/alber-new","https://fonts.adobe.com/fonts/albertan","https://fonts.adobe.com/fonts/albiona","https://fonts.adobe.com/fonts/alda","https://fonts.adobe.com/fonts/alegreya","https://fonts.adobe.com/fonts/alegreya-sans","https://fonts.adobe.com/fonts/alex-brush","https://fonts.adobe.com/fonts/alexa","https://fonts.adobe.com/fonts/rtf-alexander-quill","https://fonts.adobe.com/fonts/alhambra","https://fonts.adobe.com/fonts/alibaba-puhuiti","https://fonts.adobe.com/fonts/alibaba-sans","https://fonts.adobe.com/fonts/alisha","https://fonts.adobe.com/fonts/alize","https://fonts.adobe.com/fonts/all-round-gothic","https://fonts.adobe.com/fonts/aller","https://fonts.adobe.com/fonts/aller-display","https://fonts.adobe.com/fonts/allumi","https://fonts.adobe.com/fonts/allura","https://fonts.adobe.com/fonts/almaq","https://fonts.adobe.com/fonts/alphatier","https://fonts.adobe.com/fonts/alpine-script","https://fonts.adobe.com/fonts/alta-california","https://fonts.adobe.com/fonts/alternate-gothic","https://fonts.adobe.com/fonts/altivo","https://fonts.adobe.com/fonts/alverata","https://fonts.adobe.com/fonts/alwyn-new","https://fonts.adobe.com/fonts/amador","https://fonts.adobe.com/fonts/amaranth","https://fonts.adobe.com/fonts/amatic","https://fonts.adobe.com/fonts/amboy","https://fonts.adobe.com/fonts/ambroise","https://fonts.adobe.com/fonts/american-scribe","https://fonts.adobe.com/fonts/americane","https://fonts.adobe.com/fonts/amoretta","https://fonts.adobe.com/fonts/anago","https://fonts.adobe.com/fonts/anca","https://fonts.adobe.com/fonts/angie-sans","https://fonts.adobe.com/fonts/anisette","https://fonts.adobe.com/fonts/aniuk","https://fonts.adobe.com/fonts/anivers","https://fonts.adobe.com/fonts/anjali-old-lipi","https://fonts.adobe.com/fonts/annabelle","https://fonts.adobe.com/fonts/annabelle-jf","https://fonts.adobe.com/fonts/anonymous","https://fonts.adobe.com/fonts/antarctican","https://fonts.adobe.com/fonts/antiquarian","https://fonts.adobe.com/fonts/antiquarian-scribe","https://fonts.adobe.com/fonts/antique-olive","https://fonts.adobe.com/fonts/anton","https://fonts.adobe.com/fonts/anugrom","https://fonts.adobe.com/fonts/anzeigen-grotesk","https://fonts.adobe.com/fonts/anziano","https://fonts.adobe.com/fonts/apertura","https://fonts.adobe.com/fonts/aphrosine","https://fonts.adobe.com/fonts/apolline","https://fonts.adobe.com/fonts/ar-fangxinshuh7b5std","https://fonts.adobe.com/fonts/ar-fangxinshuh7gbstd","https://fonts.adobe.com/fonts/ar-mingb5std","https://fonts.adobe.com/fonts/ar-shulinsonggbstd","https://fonts.adobe.com/fonts/ar-udjingxiheib5pro","https://fonts.adobe.com/fonts/ar-udjingxiheigbstd","https://fonts.adobe.com/fonts/ar-weibeib5std","https://fonts.adobe.com/fonts/ar-weibeigbstd","https://fonts.adobe.com/fonts/ar-yuanb5std","https://fonts.adobe.com/fonts/ar-yuangbstd","https://fonts.adobe.com/fonts/arbitrary","https://fonts.adobe.com/fonts/arboria","https://fonts.adobe.com/fonts/arbotek","https://fonts.adobe.com/fonts/archetype","https://fonts.adobe.com/fonts/archivo-black","https://fonts.adobe.com/fonts/ardoise","https://fonts.adobe.com/fonts/arek","https://fonts.adobe.com/fonts/argumentum","https://fonts.adobe.com/fonts/aria-text","https://fonts.adobe.com/fonts/ariana","https://fonts.adobe.com/fonts/arimo","https://fonts.adobe.com/fonts/arlette","https://fonts.adobe.com/fonts/arlette-thai","https://fonts.adobe.com/fonts/armada","https://fonts.adobe.com/fonts/armstrong","https://fonts.adobe.com/fonts/arno","https://fonts.adobe.com/fonts/arpona","https://fonts.adobe.com/fonts/arpona-sans","https://fonts.adobe.com/fonts/array","https://fonts.adobe.com/fonts/artigo","https://fonts.adobe.com/fonts/artigo-display","https://fonts.adobe.com/fonts/arvo","https://fonts.adobe.com/fonts/arya","https://fonts.adobe.com/fonts/arzachel","https://fonts.adobe.com/fonts/asap","https://fonts.adobe.com/fonts/ashemore","https://fonts.adobe.com/fonts/asimovsans","https://fonts.adobe.com/fonts/asphalt","https://fonts.adobe.com/fonts/astoria","https://fonts.adobe.com/fonts/astoria-sans","https://fonts.adobe.com/fonts/astounder-squared-bb","https://fonts.adobe.com/fonts/atf-alternate-gothic","https://fonts.adobe.com/fonts/atf-alternate-gothic-compressed","https://fonts.adobe.com/fonts/atf-alternate-gothic-condensed","https://fonts.adobe.com/fonts/atf-alternate-gothic-extra-condensed","https://fonts.adobe.com/fonts/atf-brush","https://fonts.adobe.com/fonts/atf-franklin-gothic","https://fonts.adobe.com/fonts/atf-garamond-micro","https://fonts.adobe.com/fonts/atf-garamond-subhead","https://fonts.adobe.com/fonts/atf-garamond-text","https://fonts.adobe.com/fonts/atf-headline-gothic","https://fonts.adobe.com/fonts/atf-livermore-script","https://fonts.adobe.com/fonts/atf-poster-gothic","https://fonts.adobe.com/fonts/atf-poster-gothic-condensed","https://fonts.adobe.com/fonts/atf-poster-gothic-extra-condensed","https://fonts.adobe.com/fonts/atf-poster-gothic-round","https://fonts.adobe.com/fonts/atf-poster-gothic-round-condensed","https://fonts.adobe.com/fonts/atf-poster-gothic-round-extra-condensed","https://fonts.adobe.com/fonts/atf-railroad-gothic","https://fonts.adobe.com/fonts/atf-wedding-gothic","https://fonts.adobe.com/fonts/atf-wedding-gothic-wide","https://fonts.adobe.com/fonts/athelas","https://fonts.adobe.com/fonts/athelas-arabic","https://fonts.adobe.com/fonts/atrament","https://fonts.adobe.com/fonts/attic-antique","https://fonts.adobe.com/fonts/aurea-ultra","https://fonts.adobe.com/fonts/auster","https://fonts.adobe.com/fonts/austin-pen","https://fonts.adobe.com/fonts/auto","https://fonts.adobe.com/fonts/automate","https://fonts.adobe.com/fonts/avalanche","https://fonts.adobe.com/fonts/avalon","https://fonts.adobe.com/fonts/avebury","https://fonts.adobe.com/fonts/aviano","https://fonts.adobe.com/fonts/aviano-didone","https://fonts.adobe.com/fonts/aviano-flare","https://fonts.adobe.com/fonts/aviano-future","https://fonts.adobe.com/fonts/aviano-royale","https://fonts.adobe.com/fonts/aviano-sans","https://fonts.adobe.com/fonts/aviano-serif","https://fonts.adobe.com/fonts/aviano-slab","https://fonts.adobe.com/fonts/aviano-wedge","https://fonts.adobe.com/fonts/avory","https://fonts.adobe.com/fonts/aw-conqueror-carved","https://fonts.adobe.com/fonts/aw-conqueror-didot","https://fonts.adobe.com/fonts/aw-conqueror-inline","https://fonts.adobe.com/fonts/aw-conqueror","https://fonts.adobe.com/fonts/aw-conqueror-slab","https://fonts.adobe.com/fonts/awanzaman","https://fonts.adobe.com/fonts/axia","https://fonts.adobe.com/fonts/aya-script","https://fonts.adobe.com/fonts/azo-sans","https://fonts.adobe.com/fonts/azote","https://fonts.adobe.com/fonts/backspacer","https://fonts.adobe.com/fonts/badaboom","https://fonts.adobe.com/fonts/baddog","https://fonts.adobe.com/fonts/badtyp","https://fonts.adobe.com/fonts/bagatela","https://fonts.adobe.com/fonts/baileywick-jf-gothic","https://fonts.adobe.com/fonts/baker-signet","https://fonts.adobe.com/fonts/balboa","https://fonts.adobe.com/fonts/balboa-plus","https://fonts.adobe.com/fonts/ballers-delight","https://fonts.adobe.com/fonts/ballinger","https://fonts.adobe.com/fonts/ballinger-condensed","https://fonts.adobe.com/fonts/ballinger-mono","https://fonts.adobe.com/fonts/ballinger-x-condensed","https://fonts.adobe.com/fonts/balloon-urw","https://fonts.adobe.com/fonts/baltica","https://fonts.adobe.com/fonts/balzano","https://fonts.adobe.com/fonts/banana","https://fonts.adobe.com/fonts/banshee","https://fonts.adobe.com/fonts/barbieri","https://fonts.adobe.com/fonts/barge","https://fonts.adobe.com/fonts/baroque-text-jf","https://fonts.adobe.com/fonts/barricada","https://fonts.adobe.com/fonts/barteldes","https://fonts.adobe.com/fonts/base-9-12","https://fonts.adobe.com/fonts/base-900","https://fonts.adobe.com/fonts/base-mono","https://fonts.adobe.com/fonts/basel-neue","https://fonts.adobe.com/fonts/basic-sans","https://fonts.adobe.com/fonts/baskerville-pt","https://fonts.adobe.com/fonts/baskerville-urw","https://fonts.adobe.com/fonts/battery-park","https://fonts.adobe.com/fonts/battlefin","https://fonts.adobe.com/fonts/battleslab","https://fonts.adobe.com/fonts/battlestation","https://fonts.adobe.com/fonts/baucher-gothic-urw","https://fonts.adobe.com/fonts/bc-alphapipe","https://fonts.adobe.com/fonts/bd-brick","https://fonts.adobe.com/fonts/bd-colonius","https://fonts.adobe.com/fonts/bd-geminis","https://fonts.adobe.com/fonts/bd-jupiter","https://fonts.adobe.com/fonts/bd-nippori","https://fonts.adobe.com/fonts/bd-plakatbau","https://fonts.adobe.com/fonts/bd-retrocentric","https://fonts.adobe.com/fonts/bd-viewmaster","https://fonts.adobe.com/fonts/bdr-a3mik","https://fonts.adobe.com/fonts/bdr-mono","https://fonts.adobe.com/fonts/beastly","https://fonts.adobe.com/fonts/bebas-kai","https://fonts.adobe.com/fonts/bebas-neue","https://fonts.adobe.com/fonts/bebas-neue-by-fontfabric-based-on-v14","https://fonts.adobe.com/fonts/bebas-neue-pro","https://fonts.adobe.com/fonts/bebas-neue-rounded","https://fonts.adobe.com/fonts/bebas-neue-semirounded","https://fonts.adobe.com/fonts/bebas-neue-v14-deprecated","https://fonts.adobe.com/fonts/bee","https://fonts.adobe.com/fonts/belda","https://fonts.adobe.com/fonts/bell-centennial-std","https://fonts.adobe.com/fonts/bello","https://fonts.adobe.com/fonts/beloved","https://fonts.adobe.com/fonts/bely","https://fonts.adobe.com/fonts/bennet-banner","https://fonts.adobe.com/fonts/bennet-display","https://fonts.adobe.com/fonts/bennet-text","https://fonts.adobe.com/fonts/bernhard-gothic-urw","https://fonts.adobe.com/fonts/bickham-script","https://fonts.adobe.com/fonts/bicyclette","https://fonts.adobe.com/fonts/big-cheese","https://fonts.adobe.com/fonts/big-city-grotesque","https://fonts.adobe.com/fonts/bigfish","https://fonts.adobe.com/fonts/bigsmalls","https://fonts.adobe.com/fonts/bilo","https://fonts.adobe.com/fonts/bio-sans","https://fonts.adobe.com/fonts/birch","https://fonts.adobe.com/fonts/birra","https://fonts.adobe.com/fonts/bistro-script","https://fonts.adobe.com/fonts/bitter","https://fonts.adobe.com/fonts/blackbeard","https://fonts.adobe.com/fonts/blackcurrant","https://fonts.adobe.com/fonts/blackoak","https://fonts.adobe.com/fonts/blakely","https://fonts.adobe.com/fonts/blambot","https://fonts.adobe.com/fonts/blambot-casual","https://fonts.adobe.com/fonts/blambot-fx","https://fonts.adobe.com/fonts/blenny","https://fonts.adobe.com/fonts/bligh","https://fonts.adobe.com/fonts/blockhead","https://fonts.adobe.com/fonts/blockhead-illustrations","https://fonts.adobe.com/fonts/blonde-fraktur","https://fonts.adobe.com/fonts/blow-up","https://fonts.adobe.com/fonts/blue-goblet","https://fonts.adobe.com/fonts/bluemlein-script-collection","https://fonts.adobe.com/fonts/bodega-sans","https://fonts.adobe.com/fonts/bodega-serif","https://fonts.adobe.com/fonts/bodoni-urw","https://fonts.adobe.com/fonts/bombarda","https://fonts.adobe.com/fonts/bookeyed","https://fonts.adobe.com/fonts/bookman-jf","https://fonts.adobe.com/fonts/bookmania","https://fonts.adobe.com/fonts/boreal","https://fonts.adobe.com/fonts/botanika","https://fonts.adobe.com/fonts/botanika-mono","https://fonts.adobe.com/fonts/boucherie-block","https://fonts.adobe.com/fonts/boucherie-cursive","https://fonts.adobe.com/fonts/boucherie-flared","https://fonts.adobe.com/fonts/boucherie-sans","https://fonts.adobe.com/fonts/bouffant","https://fonts.adobe.com/fonts/bounce-script","https://fonts.adobe.com/fonts/bourbon","https://fonts.adobe.com/fonts/bowman","https://fonts.adobe.com/fonts/braisetto","https://fonts.adobe.com/fonts/brandon-grotesque","https://fonts.adobe.com/fonts/breakers","https://fonts.adobe.com/fonts/breakers-slab","https://fonts.adobe.com/fonts/bree","https://fonts.adobe.com/fonts/bree-serif","https://fonts.adobe.com/fonts/bremen","https://fonts.adobe.com/fonts/bressay","https://fonts.adobe.com/fonts/brevia","https://fonts.adobe.com/fonts/brevier","https://fonts.adobe.com/fonts/brigade","https://fonts.adobe.com/fonts/briller","https://fonts.adobe.com/fonts/brim-narrow","https://fonts.adobe.com/fonts/brim-narrow-combined","https://fonts.adobe.com/fonts/brioso","https://fonts.adobe.com/fonts/brix-slab","https://fonts.adobe.com/fonts/broadsheet","https://fonts.adobe.com/fonts/bronson-gothic-jf","https://fonts.adobe.com/fonts/brother-1816","https://fonts.adobe.com/fonts/brothers","https://fonts.adobe.com/fonts/brush-script","https://fonts.adobe.com/fonts/brushland","https://fonts.adobe.com/fonts/bubblegum-pop","https://fonts.adobe.com/fonts/buckboard","https://fonts.adobe.com/fonts/buckley","https://fonts.adobe.com/fonts/buena-park-jf","https://fonts.adobe.com/fonts/bufalino","https://fonts.adobe.com/fonts/bungee","https://fonts.adobe.com/fonts/bunyan","https://fonts.adobe.com/fonts/burnaby","https://fonts.adobe.com/fonts/byker","https://fonts.adobe.com/fonts/cabazon","https://fonts.adobe.com/fonts/cabrito","https://fonts.adobe.com/fonts/cabrito-didone","https://fonts.adobe.com/fonts/cabrito-sans","https://fonts.adobe.com/fonts/cadogan","https://fonts.adobe.com/fonts/cafeteria","https://fonts.adobe.com/fonts/caflisch-script","https://fonts.adobe.com/fonts/cairo","https://fonts.adobe.com/fonts/calder","https://fonts.adobe.com/fonts/calendula","https://fonts.adobe.com/fonts/caliban","https://fonts.adobe.com/fonts/calibri","https://fonts.adobe.com/fonts/calling-code","https://fonts.adobe.com/fonts/calluna","https://fonts.adobe.com/fonts/calluna-sans","https://fonts.adobe.com/fonts/calmetta","https://fonts.adobe.com/fonts/campaign","https://fonts.adobe.com/fonts/campaign-slab","https://fonts.adobe.com/fonts/cantarell","https://fonts.adobe.com/fonts/cantiga","https://fonts.adobe.com/fonts/canto","https://fonts.adobe.com/fonts/cantoni","https://fonts.adobe.com/fonts/capitol","https://fonts.adobe.com/fonts/capitolina","https://fonts.adobe.com/fonts/capitolium-2","https://fonts.adobe.com/fonts/caprizant","https://fonts.adobe.com/fonts/captain-comic","https://fonts.adobe.com/fonts/capucine","https://fonts.adobe.com/fonts/carbon","https://fonts.adobe.com/fonts/cardea","https://fonts.adobe.com/fonts/cardigan","https://fonts.adobe.com/fonts/cardo","https://fonts.adobe.com/fonts/carilliantine","https://fonts.adobe.com/fonts/carta-marina","https://fonts.adobe.com/fonts/casablanca-urw","https://fonts.adobe.com/fonts/casey","https://fonts.adobe.com/fonts/catalpa","https://fonts.adobe.com/fonts/catamaran","https://fonts.adobe.com/fonts/catnip","https://fonts.adobe.com/fonts/catseye","https://fonts.adobe.com/fonts/catwing","https://fonts.adobe.com/fonts/cc-biff-bam-boom","https://fonts.adobe.com/fonts/cc-clobberin-time","https://fonts.adobe.com/fonts/cc-meanwhile","https://fonts.adobe.com/fonts/cc-monster-mash","https://fonts.adobe.com/fonts/cc-sign-language","https://fonts.adobe.com/fonts/century-gothic","https://fonts.adobe.com/fonts/century-old-style","https://fonts.adobe.com/fonts/chainprinter","https://fonts.adobe.com/fonts/chalfont","https://fonts.adobe.com/fonts/chalky","https://fonts.adobe.com/fonts/chaloops","https://fonts.adobe.com/fonts/chandler-42","https://fonts.adobe.com/fonts/changeling-neo","https://fonts.adobe.com/fonts/chantal","https://fonts.adobe.com/fonts/chaparral","https://fonts.adobe.com/fonts/chapman","https://fonts.adobe.com/fonts/charbroiled","https://fonts.adobe.com/fonts/charcuterie","https://fonts.adobe.com/fonts/charcuterie-block","https://fonts.adobe.com/fonts/charcuterie-contrast","https://fonts.adobe.com/fonts/charcuterie-cursive","https://fonts.adobe.com/fonts/charcuterie-ornaments","https://fonts.adobe.com/fonts/charcuterie-sans","https://fonts.adobe.com/fonts/charcuterie-serif","https://fonts.adobe.com/fonts/charlemagne","https://fonts.adobe.com/fonts/chauncy","https://fonts.adobe.com/fonts/cheap-pine","https://fonts.adobe.com/fonts/cheee","https://fonts.adobe.com/fonts/chelsea-market","https://fonts.adobe.com/fonts/chennai","https://fonts.adobe.com/fonts/chennai-slab","https://fonts.adobe.com/fonts/chevin-pro","https://fonts.adobe.com/fonts/chiavettieri","https://fonts.adobe.com/fonts/chilanka","https://fonts.adobe.com/fonts/chinchilla","https://fonts.adobe.com/fonts/chinese-rocks","https://fonts.adobe.com/fonts/chippewa-falls","https://fonts.adobe.com/fonts/cholla","https://fonts.adobe.com/fonts/chowdown","https://fonts.adobe.com/fonts/chuck","https://fonts.adobe.com/fonts/chunder","https://fonts.adobe.com/fonts/chypre","https://fonts.adobe.com/fonts/cinque-donne","https://fonts.adobe.com/fonts/circe","https://fonts.adobe.com/fonts/circe-slab","https://fonts.adobe.com/fonts/citadel","https://fonts.adobe.com/fonts/citizen","https://fonts.adobe.com/fonts/civane","https://fonts.adobe.com/fonts/clarendon-text","https://fonts.adobe.com/fonts/clarendon-urw","https://fonts.adobe.com/fonts/clarendon-wide","https://fonts.adobe.com/fonts/classic-comic","https://fonts.adobe.com/fonts/classica","https://fonts.adobe.com/fonts/classico-urw","https://fonts.adobe.com/fonts/clavo","https://fonts.adobe.com/fonts/click-clack","https://fonts.adobe.com/fonts/clicker","https://fonts.adobe.com/fonts/clone-rounded","https://fonts.adobe.com/fonts/co","https://fonts.adobe.com/fonts/code-saver","https://fonts.adobe.com/fonts/coldsmith","https://fonts.adobe.com/fonts/collector-comic","https://fonts.adobe.com/fonts/collier","https://fonts.adobe.com/fonts/colosseum","https://fonts.adobe.com/fonts/colt","https://fonts.adobe.com/fonts/colt-soft","https://fonts.adobe.com/fonts/columbia-titling","https://fonts.adobe.com/fonts/comenia-sans","https://fonts.adobe.com/fonts/commerce","https://fonts.adobe.com/fonts/commuters-sans","https://fonts.adobe.com/fonts/como","https://fonts.adobe.com/fonts/concave-tuscan","https://fonts.adobe.com/fonts/conceal","https://fonts.adobe.com/fonts/condor","https://fonts.adobe.com/fonts/congenial","https://fonts.adobe.com/fonts/conglomerate","https://fonts.adobe.com/fonts/coniferous","https://fonts.adobe.com/fonts/continuo","https://fonts.adobe.com/fonts/coolvetica","https://fonts.adobe.com/fonts/cooper-black","https://fonts.adobe.com/fonts/copacabana","https://fonts.adobe.com/fonts/copal","https://fonts.adobe.com/fonts/copperplate","https://fonts.adobe.com/fonts/copse","https://fonts.adobe.com/fonts/coquette","https://fonts.adobe.com/fonts/cora","https://fonts.adobe.com/fonts/coranto-2","https://fonts.adobe.com/fonts/cordale","https://fonts.adobe.com/fonts/cormorant-garamond","https://fonts.adobe.com/fonts/corndog","https://fonts.adobe.com/fonts/corner-store-jf","https://fonts.adobe.com/fonts/coronette","https://fonts.adobe.com/fonts/corporate-a","https://fonts.adobe.com/fonts/corporate-e","https://fonts.adobe.com/fonts/corporate-s","https://fonts.adobe.com/fonts/corpulent","https://fonts.adobe.com/fonts/cortado","https://fonts.adobe.com/fonts/corundum-text","https://fonts.adobe.com/fonts/cosmopolitan","https://fonts.adobe.com/fonts/costa","https://fonts.adobe.com/fonts/cotton","https://fonts.adobe.com/fonts/cottonwood","https://fonts.adobe.com/fonts/council","https://fonts.adobe.com/fonts/countach","https://fonts.adobe.com/fonts/courier","https://fonts.adobe.com/fonts/courier-prime","https://fonts.adobe.com/fonts/covik-sans","https://fonts.adobe.com/fonts/covik-sans-mono","https://fonts.adobe.com/fonts/cowboyslang","https://fonts.adobe.com/fonts/crackly","https://fonts.adobe.com/fonts/crassula","https://fonts.adobe.com/fonts/craw-modern-urw","https://fonts.adobe.com/fonts/cresta","https://fonts.adobe.com/fonts/crete","https://fonts.adobe.com/fonts/critter","https://fonts.adobe.com/fonts/cronos","https://fonts.adobe.com/fonts/cubano","https://fonts.adobe.com/fonts/cuisine","https://fonts.adobe.com/fonts/curve","https://fonts.adobe.com/fonts/custard","https://fonts.adobe.com/fonts/cy","https://fonts.adobe.com/fonts/dalliance","https://fonts.adobe.com/fonts/dapifer","https://fonts.adobe.com/fonts/davis","https://fonts.adobe.com/fonts/davis-sans","https://fonts.adobe.com/fonts/dazzle-unicase","https://fonts.adobe.com/fonts/ddt","https://fonts.adobe.com/fonts/dead-history","https://fonts.adobe.com/fonts/dederon","https://fonts.adobe.com/fonts/dederon-sans","https://fonts.adobe.com/fonts/dedica","https://fonts.adobe.com/fonts/default-gothic","https://fonts.adobe.com/fonts/degular","https://fonts.adobe.com/fonts/dejarip","https://fonts.adobe.com/fonts/delaney","https://fonts.adobe.com/fonts/delicato","https://fonts.adobe.com/fonts/delittle-chromatic","https://fonts.adobe.com/fonts/delve-hand","https://fonts.adobe.com/fonts/democratica","https://fonts.adobe.com/fonts/demos-next","https://fonts.adobe.com/fonts/depot-new","https://fonts.adobe.com/fonts/despina","https://fonts.adobe.com/fonts/dessert-script","https://fonts.adobe.com/fonts/deva-ideal","https://fonts.adobe.com/fonts/dharma-gothic","https://fonts.adobe.com/fonts/diavlo","https://fonts.adobe.com/fonts/dicsans","https://fonts.adobe.com/fonts/didoni-urw","https://fonts.adobe.com/fonts/dienstag","https://fonts.adobe.com/fonts/dimensions","https://fonts.adobe.com/fonts/din-1451-pro","https://fonts.adobe.com/fonts/din-2014","https://fonts.adobe.com/fonts/din-condensed","https://fonts.adobe.com/fonts/dinosaur","https://fonts.adobe.com/fonts/dirtstorm","https://fonts.adobe.com/fonts/dirty-bakers-dozen","https://fonts.adobe.com/fonts/discourse","https://fonts.adobe.com/fonts/district","https://fonts.adobe.com/fonts/dita","https://fonts.adobe.com/fonts/ditch","https://fonts.adobe.com/fonts/divenire","https://fonts.adobe.com/fonts/divulge","https://fonts.adobe.com/fonts/dogma","https://fonts.adobe.com/fonts/dolce","https://fonts.adobe.com/fonts/dolly","https://fonts.adobe.com/fonts/domlovesmary","https://fonts.adobe.com/fonts/domyouji","https://fonts.adobe.com/fonts/donguri","https://fonts.adobe.com/fonts/downtempo","https://fonts.adobe.com/fonts/droid-sans","https://fonts.adobe.com/fonts/droid-sans-mono","https://fonts.adobe.com/fonts/droid-serif","https://fonts.adobe.com/fonts/drunk-cowboy","https://fonts.adobe.com/fonts/dry-cowboy","https://fonts.adobe.com/fonts/duality","https://fonts.adobe.com/fonts/dublin","https://fonts.adobe.com/fonts/duende","https://fonts.adobe.com/fonts/dulcian","https://fonts.adobe.com/fonts/dunbar","https://fonts.adobe.com/fonts/duos","https://fonts.adobe.com/fonts/duper","https://fonts.adobe.com/fonts/dutch-mediaeval","https://fonts.adobe.com/fonts/eb-garamond","https://fonts.adobe.com/fonts/ebony","https://fonts.adobe.com/fonts/eckmannpsych","https://fonts.adobe.com/fonts/eco","https://fonts.adobe.com/fonts/economica","https://fonts.adobe.com/fonts/ecru","https://fonts.adobe.com/fonts/eds-market","https://fonts.adobe.com/fonts/edita","https://fonts.adobe.com/fonts/effra","https://fonts.adobe.com/fonts/egizio-urw","https://fonts.adobe.com/fonts/eidetic-neo","https://fonts.adobe.com/fonts/eigerdals","https://fonts.adobe.com/fonts/eldwin-script","https://fonts.adobe.com/fonts/elektrix","https://fonts.adobe.com/fonts/elevon","https://fonts.adobe.com/fonts/elido","https://fonts.adobe.com/fonts/elina","https://fonts.adobe.com/fonts/elliots","https://fonts.adobe.com/fonts/eloquent-jf","https://fonts.adobe.com/fonts/embryo","https://fonts.adobe.com/fonts/embury-text","https://fonts.adobe.com/fonts/emily-austin","https://fonts.adobe.com/fonts/emploi","https://fonts.adobe.com/fonts/enchanted","https://fonts.adobe.com/fonts/english-grotesque","https://fonts.adobe.com/fonts/epitaph","https://fonts.adobe.com/fonts/erbaum","https://fonts.adobe.com/fonts/escoffier-capitaux","https://fonts.adobe.com/fonts/eskapade","https://fonts.adobe.com/fonts/eskorte","https://fonts.adobe.com/fonts/essay-text","https://fonts.adobe.com/fonts/essential-pragmatapro","https://fonts.adobe.com/fonts/essonnes","https://fonts.adobe.com/fonts/ethnocentric","https://fonts.adobe.com/fonts/europa","https://fonts.adobe.com/fonts/eurostile","https://fonts.adobe.com/fonts/exo-soft","https://fonts.adobe.com/fonts/exocet","https://fonts.adobe.com/fonts/expo-sans","https://fonts.adobe.com/fonts/expo-serif","https://fonts.adobe.com/fonts/export","https://fonts.adobe.com/fonts/expressway","https://fonts.adobe.com/fonts/facto","https://fonts.adobe.com/fonts/factoria","https://fonts.adobe.com/fonts/fairplex","https://fonts.adobe.com/fonts/fairwater","https://fonts.adobe.com/fonts/fairwater-sans","https://fonts.adobe.com/fonts/fairwater-script","https://fonts.adobe.com/fonts/fairway","https://fonts.adobe.com/fonts/fairweather","https://fonts.adobe.com/fonts/fairy-tale-jf","https://fonts.adobe.com/fonts/fakir","https://fonts.adobe.com/fonts/falcon-script","https://fonts.adobe.com/fonts/faricy-new","https://fonts.adobe.com/fonts/farmhand","https://fonts.adobe.com/fonts/farmhand-sans","https://fonts.adobe.com/fonts/fatfrank","https://fonts.adobe.com/fonts/fave","https://fonts.adobe.com/fonts/felt-tip","https://fonts.adobe.com/fonts/feltro","https://fonts.adobe.com/fonts/fenway-park-jf","https://fonts.adobe.com/fonts/fenwick","https://fonts.adobe.com/fonts/fertigo","https://fonts.adobe.com/fonts/fertigo-script","https://fonts.adobe.com/fonts/ff-amman-sans","https://fonts.adobe.com/fonts/ff-amman-serif","https://fonts.adobe.com/fonts/ff-angie","https://fonts.adobe.com/fonts/ff-attribute-mono","https://fonts.adobe.com/fonts/ff-attribute-text","https://fonts.adobe.com/fonts/ff-avance","https://fonts.adobe.com/fonts/ff-basic-gothic","https://fonts.adobe.com/fonts/ff-brokenscript","https://fonts.adobe.com/fonts/ff-carina","https://fonts.adobe.com/fonts/ff-casus","https://fonts.adobe.com/fonts/ff-chambers-sans","https://fonts.adobe.com/fonts/ff-cocon","https://fonts.adobe.com/fonts/ff-dagny","https://fonts.adobe.com/fonts/ff-dax","https://fonts.adobe.com/fonts/ff-enzo","https://fonts.adobe.com/fonts/ff-ernestine","https://fonts.adobe.com/fonts/ff-folk","https://fonts.adobe.com/fonts/ff-ginger","https://fonts.adobe.com/fonts/ff-good","https://fonts.adobe.com/fonts/ff-good-headline","https://fonts.adobe.com/fonts/ff-info","https://fonts.adobe.com/fonts/ff-karbid","https://fonts.adobe.com/fonts/ff-karbid-slab","https://fonts.adobe.com/fonts/ff-kava","https://fonts.adobe.com/fonts/ff-mach","https://fonts.adobe.com/fonts/ff-market","https://fonts.adobe.com/fonts/ff-meta","https://fonts.adobe.com/fonts/ff-meta-headline","https://fonts.adobe.com/fonts/ff-meta-serif","https://fonts.adobe.com/fonts/ff-more","https://fonts.adobe.com/fonts/ff-nexus-mix","https://fonts.adobe.com/fonts/ff-nexus-sans","https://fonts.adobe.com/fonts/ff-nexus-serif","https://fonts.adobe.com/fonts/ff-nexus-typewriter","https://fonts.adobe.com/fonts/ff-nort","https://fonts.adobe.com/fonts/ff-nuvo","https://fonts.adobe.com/fonts/ff-nuvo-mono","https://fonts.adobe.com/fonts/ff-prater","https://fonts.adobe.com/fonts/ff-providence","https://fonts.adobe.com/fonts/ff-providence-sans","https://fonts.adobe.com/fonts/ff-real","https://fonts.adobe.com/fonts/ff-scala","https://fonts.adobe.com/fonts/ff-scala-sans","https://fonts.adobe.com/fonts/ff-seria","https://fonts.adobe.com/fonts/ff-seria-sans","https://fonts.adobe.com/fonts/ff-speak","https://fonts.adobe.com/fonts/ff-spinoza","https://fonts.adobe.com/fonts/ff-tisa","https://fonts.adobe.com/fonts/ff-tisa-sans","https://fonts.adobe.com/fonts/ff-typestar","https://fonts.adobe.com/fonts/ff-uberhand","https://fonts.adobe.com/fonts/ff-unit","https://fonts.adobe.com/fonts/ff-unit-rounded","https://fonts.adobe.com/fonts/ff-unit-slab","https://fonts.adobe.com/fonts/ff-utility","https://fonts.adobe.com/fonts/ff-zwo","https://fonts.adobe.com/fonts/fieldwork","https://fonts.adobe.com/fonts/fight-to-the-finish-bb","https://fonts.adobe.com/fonts/filosofia","https://fonts.adobe.com/fonts/filson","https://fonts.adobe.com/fonts/fino","https://fonts.adobe.com/fonts/fino-sans","https://fonts.adobe.com/fonts/fira-mono","https://fonts.adobe.com/fonts/fira-sans","https://fonts.adobe.com/fonts/fit","https://fonts.adobe.com/fonts/fleisch","https://fonts.adobe.com/fonts/flood","https://fonts.adobe.com/fonts/flower-power","https://fonts.adobe.com/fonts/p22-eaglefeather","https://fonts.adobe.com/fonts/flyswim","https://fonts.adobe.com/fonts/foco","https://fonts.adobe.com/fonts/forgotten-futurist","https://fonts.adobe.com/fonts/forma-djr-banner","https://fonts.adobe.com/fonts/forma-djr-deck","https://fonts.adobe.com/fonts/forma-djr-display","https://fonts.adobe.com/fonts/forma-djr-micro","https://fonts.adobe.com/fonts/forma-djr-text","https://fonts.adobe.com/fonts/fp-dancer","https://fonts.adobe.com/fonts/fp-dancer-serif","https://fonts.adobe.com/fonts/fp-head","https://fonts.adobe.com/fonts/fragile-bombers","https://fonts.adobe.com/fonts/franklin-gothic-urw","https://fonts.adobe.com/fonts/fredericka-the-greatest","https://fonts.adobe.com/fonts/freehouse","https://fonts.adobe.com/fonts/freight","https://fonts.adobe.com/fonts/freight-neo","https://fonts.adobe.com/fonts/freight-sans","https://fonts.adobe.com/fonts/freight-text","https://fonts.adobe.com/fonts/french-octagon","https://fonts.adobe.com/fonts/french-roast","https://fonts.adobe.com/fonts/fresno","https://fonts.adobe.com/fonts/freude","https://fonts.adobe.com/fonts/funkydori","https://fonts.adobe.com/fonts/fusaka","https://fonts.adobe.com/fonts/futura-pt","https://fonts.adobe.com/fonts/gala","https://fonts.adobe.com/fonts/galahad","https://fonts.adobe.com/fonts/galette","https://fonts.adobe.com/fonts/ganache","https://fonts.adobe.com/fonts/garage-gothic","https://fonts.adobe.com/fonts/garamond-premier","https://fonts.adobe.com/fonts/garvis","https://fonts.adobe.com/fonts/gastromond","https://fonts.adobe.com/fonts/gaultier","https://fonts.adobe.com/fonts/gautreaux","https://fonts.adobe.com/fonts/gelo","https://fonts.adobe.com/fonts/gemeli-mono","https://fonts.adobe.com/fonts/geneo","https://fonts.adobe.com/fonts/geographica","https://fonts.adobe.com/fonts/geom-graphic","https://fonts.adobe.com/fonts/germania-one","https://fonts.adobe.com/fonts/gesta","https://fonts.adobe.com/fonts/gibbs","https://fonts.adobe.com/fonts/gibson","https://fonts.adobe.com/fonts/giddyup","https://fonts.adobe.com/fonts/gigalypse","https://fonts.adobe.com/fonts/gilbert","https://fonts.adobe.com/fonts/gill-sans-nova","https://fonts.adobe.com/fonts/gimlet-display","https://fonts.adobe.com/fonts/gimlet-micro","https://fonts.adobe.com/fonts/gimlet-text","https://fonts.adobe.com/fonts/gin","https://fonts.adobe.com/fonts/gineso","https://fonts.adobe.com/fonts/gioviale","https://fonts.adobe.com/fonts/gira-sans","https://fonts.adobe.com/fonts/gitan","https://fonts.adobe.com/fonts/giulia","https://fonts.adobe.com/fonts/givry","https://fonts.adobe.com/fonts/gizmo","https://fonts.adobe.com/fonts/gloria-hallelujah","https://fonts.adobe.com/fonts/gloss-drop","https://fonts.adobe.com/fonts/gnuolane","https://fonts.adobe.com/fonts/goldenbook","https://fonts.adobe.com/fonts/gomme-sans","https://fonts.adobe.com/fonts/good-bad-man","https://fonts.adobe.com/fonts/good-times","https://fonts.adobe.com/fonts/gooddog-new","https://fonts.adobe.com/fonts/goodkitty","https://fonts.adobe.com/fonts/goodlife","https://fonts.adobe.com/fonts/gopher","https://fonts.adobe.com/fonts/gothicus","https://fonts.adobe.com/fonts/goudy-bookletter-1911","https://fonts.adobe.com/fonts/goudy-old-style","https://fonts.adobe.com/fonts/grad","https://fonts.adobe.com/fonts/graffiti","https://fonts.adobe.com/fonts/grafolita-script","https://fonts.adobe.com/fonts/grand-central","https://fonts.adobe.com/fonts/grandma","https://fonts.adobe.com/fonts/grange","https://fonts.adobe.com/fonts/granville","https://fonts.adobe.com/fonts/graphie","https://fonts.adobe.com/fonts/graphite","https://fonts.adobe.com/fonts/gratitude-script","https://fonts.adobe.com/fonts/graveblade","https://fonts.adobe.com/fonts/gravesend-sans","https://fonts.adobe.com/fonts/great-vibes","https://fonts.adobe.com/fonts/grecian-light-face","https://fonts.adobe.com/fonts/griffith-gothic","https://fonts.adobe.com/fonts/griffith-gothic-condensed","https://fonts.adobe.com/fonts/griffon","https://fonts.adobe.com/fonts/grover","https://fonts.adobe.com/fonts/grover-slab","https://fonts.adobe.com/fonts/grueber","https://fonts.adobe.com/fonts/guanabara-sans","https://fonts.adobe.com/fonts/guapa","https://fonts.adobe.com/fonts/gunplay","https://fonts.adobe.com/fonts/gurkner","https://fonts.adobe.com/fonts/gyparody","https://fonts.adobe.com/fonts/haboro","https://fonts.adobe.com/fonts/haboro-contrast","https://fonts.adobe.com/fonts/haboro-serif","https://fonts.adobe.com/fonts/haboro-soft","https://fonts.adobe.com/fonts/hack","https://fonts.adobe.com/fonts/hackman","https://fonts.adobe.com/fonts/halcom","https://fonts.adobe.com/fonts/halogen","https://fonts.adobe.com/fonts/halyard","https://fonts.adobe.com/fonts/handel-gothic","https://fonts.adobe.com/fonts/harfang","https://fonts.adobe.com/fonts/harlean","https://fonts.adobe.com/fonts/harri","https://fonts.adobe.com/fonts/harvester","https://fonts.adobe.com/fonts/hatch","https://fonts.adobe.com/fonts/hayate","https://fonts.adobe.com/fonts/headlight","https://fonts.adobe.com/fonts/hedley-new","https://fonts.adobe.com/fonts/heebo","https://fonts.adobe.com/fonts/heimat-didone","https://fonts.adobe.com/fonts/heimat-display","https://fonts.adobe.com/fonts/heimat-mono","https://fonts.adobe.com/fonts/heimat-sans","https://fonts.adobe.com/fonts/heimat-stencil","https://fonts.adobe.com/fonts/hellenic-wide-jf","https://fonts.adobe.com/fonts/hello-my-love","https://fonts.adobe.com/fonts/henderson-sans","https://fonts.adobe.com/fonts/henderson-slab","https://fonts.adobe.com/fonts/henriette","https://fonts.adobe.com/fonts/herencia","https://fonts.adobe.com/fonts/hidden-treasures","https://fonts.adobe.com/fonts/hightower","https://fonts.adobe.com/fonts/hilde-sharp","https://fonts.adobe.com/fonts/hind","https://fonts.adobe.com/fonts/hind-siliguri","https://fonts.adobe.com/fonts/hit","https://fonts.adobe.com/fonts/hobeaux","https://fonts.adobe.com/fonts/hobeaux-rococeaux","https://fonts.adobe.com/fonts/hobeaux-rococeaux-borders","https://fonts.adobe.com/fonts/hobo","https://fonts.adobe.com/fonts/hoffmann","https://fonts.adobe.com/fonts/homemade-apple-pro","https://fonts.adobe.com/fonts/hooligan-jf","https://fonts.adobe.com/fonts/hoosier-daddy","https://fonts.adobe.com/fonts/hotel","https://fonts.adobe.com/fonts/hothouse","https://fonts.adobe.com/fonts/houschka-pro","https://fonts.adobe.com/fonts/houschka-rounded","https://fonts.adobe.com/fonts/house-of-cards","https://fonts.adobe.com/fonts/hoverunit","https://fonts.adobe.com/fonts/ht-neon","https://fonts.adobe.com/fonts/hucklebuckjf","https://fonts.adobe.com/fonts/hummingbird","https://fonts.adobe.com/fonts/hvd-bodedo","https://fonts.adobe.com/fonts/hvd-comic-serif","https://fonts.adobe.com/fonts/hvd-edding-780","https://fonts.adobe.com/fonts/hvd-poster-clean","https://fonts.adobe.com/fonts/hvd-rowdy","https://fonts.adobe.com/fonts/hvd-steinzeit","https://fonts.adobe.com/fonts/hwt-aetna","https://fonts.adobe.com/fonts/hwt-american","https://fonts.adobe.com/fonts/hwt-antique-tuscan-9","https://fonts.adobe.com/fonts/hwt-arabesque","https://fonts.adobe.com/fonts/hwt-archimedes-pro","https://fonts.adobe.com/fonts/hwt-artz","https://fonts.adobe.com/fonts/hwt-bon-air","https://fonts.adobe.com/fonts/hwt-borders-one","https://fonts.adobe.com/fonts/hwt-brylski","https://fonts.adobe.com/fonts/hwt-bulletin-script","https://fonts.adobe.com/fonts/hwt-catchwords","https://fonts.adobe.com/fonts/hwt-geometric","https://fonts.adobe.com/fonts/hwt-gothic-round","https://fonts.adobe.com/fonts/hwt-lustig-elements","https://fonts.adobe.com/fonts/hwt-mardell","https://fonts.adobe.com/fonts/hwt-republic-gothic","https://fonts.adobe.com/fonts/hwt-roman-extended","https://fonts.adobe.com/fonts/hwt-slab","https://fonts.adobe.com/fonts/hwt-star-ornaments","https://fonts.adobe.com/fonts/hwt-tuscan-extended","https://fonts.adobe.com/fonts/hwt-unit-gothic","https://fonts.adobe.com/fonts/hwt-vanlanen","https://fonts.adobe.com/fonts/hydrophilia","https://fonts.adobe.com/fonts/hypatia-sans","https://fonts.adobe.com/fonts/hypocrite","https://fonts.adobe.com/fonts/ibm-plex-arabic","https://fonts.adobe.com/fonts/ibm-plex-devanagari","https://fonts.adobe.com/fonts/ibm-plex-mono","https://fonts.adobe.com/fonts/ibm-plex-sans","https://fonts.adobe.com/fonts/ibm-plex-sans-hebrew","https://fonts.adobe.com/fonts/ibm-plex-sans-thai-looped","https://fonts.adobe.com/fonts/ibm-plex-serif","https://fonts.adobe.com/fonts/ibm-plex-thai","https://fonts.adobe.com/fonts/im-fell-double-pica","https://fonts.adobe.com/fonts/im-fell-dw-pica","https://fonts.adobe.com/fonts/im-fell-english","https://fonts.adobe.com/fonts/im-fell-french-canon","https://fonts.adobe.com/fonts/im-fell-great-primer","https://fonts.adobe.com/fonts/imaginaryfriend-bb","https://fonts.adobe.com/fonts/immi-five-o-five","https://fonts.adobe.com/fonts/imperial-urw","https://fonts.adobe.com/fonts/impetus","https://fonts.adobe.com/fonts/indie-flower","https://fonts.adobe.com/fonts/industry","https://fonts.adobe.com/fonts/industry-inc","https://fonts.adobe.com/fonts/informa","https://fonts.adobe.com/fonts/ingeborg","https://fonts.adobe.com/fonts/ingra","https://fonts.adobe.com/fonts/input-mono","https://fonts.adobe.com/fonts/input-sans","https://fonts.adobe.com/fonts/input-serif","https://fonts.adobe.com/fonts/interface","https://fonts.adobe.com/fonts/interstate","https://fonts.adobe.com/fonts/interstate-mono","https://fonts.adobe.com/fonts/interstate-pi","https://fonts.adobe.com/fonts/ironstrike","https://fonts.adobe.com/fonts/ironwood","https://fonts.adobe.com/fonts/iskra","https://fonts.adobe.com/fonts/isonorm","https://fonts.adobe.com/fonts/itc-american-typewriter","https://fonts.adobe.com/fonts/itc-avant-garde-gothic","https://fonts.adobe.com/fonts/itc-benguiat","https://fonts.adobe.com/fonts/itc-fenice","https://fonts.adobe.com/fonts/itc-flora","https://fonts.adobe.com/fonts/itc-franklin-gothic","https://fonts.adobe.com/fonts/itc-galliard","https://fonts.adobe.com/fonts/itc-giovanni","https://fonts.adobe.com/fonts/itc-officina-sans","https://fonts.adobe.com/fonts/itc-slimbach","https://fonts.adobe.com/fonts/itc-zapf-international","https://fonts.adobe.com/fonts/ivy-journal","https://fonts.adobe.com/fonts/ivy-style-sans","https://fonts.adobe.com/fonts/ivy-style-tw","https://fonts.adobe.com/fonts/ivymode","https://fonts.adobe.com/fonts/ivypresto-display","https://fonts.adobe.com/fonts/ivypresto-headline","https://fonts.adobe.com/fonts/ivypresto-text","https://fonts.adobe.com/fonts/jaf-bernini","https://fonts.adobe.com/fonts/jaf-domus","https://fonts.adobe.com/fonts/jaf-domus-titling","https://fonts.adobe.com/fonts/jaf-facit","https://fonts.adobe.com/fonts/jaf-herb","https://fonts.adobe.com/fonts/jaf-johannes","https://fonts.adobe.com/fonts/jaf-lapture","https://fonts.adobe.com/fonts/jaf-mashine","https://fonts.adobe.com/fonts/jaf-peacock","https://fonts.adobe.com/fonts/jaf-zalamander","https://fonts.adobe.com/fonts/jakob","https://fonts.adobe.com/fonts/jana-thork","https://fonts.adobe.com/fonts/jay-gothic-urw","https://fonts.adobe.com/fonts/jeanne-moderno","https://fonts.adobe.com/fonts/jeff-script","https://fonts.adobe.com/fonts/jesaya","https://fonts.adobe.com/fonts/jinky","https://fonts.adobe.com/fonts/joanna-nova","https://fonts.adobe.com/fonts/joanna-sans-nova","https://fonts.adobe.com/fonts/johndoe","https://fonts.adobe.com/fonts/joost","https://fonts.adobe.com/fonts/josefin-sans","https://fonts.adobe.com/fonts/josefin-slab","https://fonts.adobe.com/fonts/journal","https://fonts.adobe.com/fonts/jubilat","https://fonts.adobe.com/fonts/jumble","https://fonts.adobe.com/fonts/junegull","https://fonts.adobe.com/fonts/juniper","https://fonts.adobe.com/fonts/justus","https://fonts.adobe.com/fonts/kade","https://fonts.adobe.com/fonts/kadwa","https://fonts.adobe.com/fonts/kaffeesatz","https://fonts.adobe.com/fonts/kallisto","https://fonts.adobe.com/fonts/kandal","https://fonts.adobe.com/fonts/kandin","https://fonts.adobe.com/fonts/kaneda-gothic","https://fonts.adobe.com/fonts/kanit","https://fonts.adobe.com/fonts/kapelka-new","https://fonts.adobe.com/fonts/kari","https://fonts.adobe.com/fonts/karmina","https://fonts.adobe.com/fonts/karmina-sans","https://fonts.adobe.com/fonts/karumbi","https://fonts.adobe.com/fonts/katarine","https://fonts.adobe.com/fonts/kautiva-pro","https://fonts.adobe.com/fonts/kazimir","https://fonts.adobe.com/fonts/kazimir-text","https://fonts.adobe.com/fonts/keedy-sans","https://fonts.adobe.com/fonts/kegger","https://fonts.adobe.com/fonts/kelvingrove","https://fonts.adobe.com/fonts/kepler","https://fonts.adobe.com/fonts/keraleeyam","https://fonts.adobe.com/fonts/kestrel-script","https://fonts.adobe.com/fonts/kewl-script","https://fonts.adobe.com/fonts/khula","https://fonts.adobe.com/fonts/kinescope","https://fonts.adobe.com/fonts/kinesis","https://fonts.adobe.com/fonts/kings-caslon","https://fonts.adobe.com/fonts/kiro","https://fonts.adobe.com/fonts/kobenhavn","https://fonts.adobe.com/fonts/kobenhavn-c","https://fonts.adobe.com/fonts/kobenhavn-c-stencil","https://fonts.adobe.com/fonts/kobenhavn-cs","https://fonts.adobe.com/fonts/kobenhavn-sans","https://fonts.adobe.com/fonts/kobenhavn-sans-stencil","https://fonts.adobe.com/fonts/kobenhavn-stencil","https://fonts.adobe.com/fonts/komet","https://fonts.adobe.com/fonts/komu","https://fonts.adobe.com/fonts/kon-tiki-aloha-jf","https://fonts.adobe.com/fonts/kon-tiki-lounge-jf","https://fonts.adobe.com/fonts/kopius","https://fonts.adobe.com/fonts/korolev","https://fonts.adobe.com/fonts/kremlin","https://fonts.adobe.com/fonts/krete","https://fonts.adobe.com/fonts/krok","https://fonts.adobe.com/fonts/kulturista","https://fonts.adobe.com/fonts/kumlien","https://fonts.adobe.com/fonts/kyrial","https://fonts.adobe.com/fonts/laca","https://fonts.adobe.com/fonts/laca-text","https://fonts.adobe.com/fonts/lady-dodo","https://fonts.adobe.com/fonts/lakeside","https://fonts.adobe.com/fonts/lamar-pen","https://fonts.adobe.com/fonts/landa","https://fonts.adobe.com/fonts/larabiefont","https://fonts.adobe.com/fonts/laski-sans","https://fonts.adobe.com/fonts/laski-slab","https://fonts.adobe.com/fonts/latex","https://fonts.adobe.com/fonts/latienne","https://fonts.adobe.com/fonts/latinaires","https://fonts.adobe.com/fonts/latino-urw","https://fonts.adobe.com/fonts/lato","https://fonts.adobe.com/fonts/lavigne","https://fonts.adobe.com/fonts/le-havre","https://fonts.adobe.com/fonts/le-monde-courrier","https://fonts.adobe.com/fonts/le-monde-journal","https://fonts.adobe.com/fonts/le-monde-livre","https://fonts.adobe.com/fonts/le-monde-livre-classic","https://fonts.adobe.com/fonts/le-monde-sans","https://fonts.adobe.com/fonts/league-gothic","https://fonts.adobe.com/fonts/leander-script","https://fonts.adobe.com/fonts/learning-curve","https://fonts.adobe.com/fonts/leather","https://fonts.adobe.com/fonts/legitima","https://fonts.adobe.com/fonts/leksa","https://fonts.adobe.com/fonts/leksa-sans","https://fonts.adobe.com/fonts/lemance","https://fonts.adobe.com/fonts/lemongrass","https://fonts.adobe.com/fonts/leo","https://fonts.adobe.com/fonts/letter-gothic","https://fonts.adobe.com/fonts/lexia","https://fonts.adobe.com/fonts/lexia-mono","https://fonts.adobe.com/fonts/lft-etica","https://fonts.adobe.com/fonts/lft-etica-mono","https://fonts.adobe.com/fonts/lft-iro-sans","https://fonts.adobe.com/fonts/liam","https://fonts.adobe.com/fonts/liana","https://fonts.adobe.com/fonts/liberation-sans","https://fonts.adobe.com/fonts/liberation-serif","https://fonts.adobe.com/fonts/libertad","https://fonts.adobe.com/fonts/liberteen","https://fonts.adobe.com/fonts/libre-franklin","https://fonts.adobe.com/fonts/liebedoni","https://fonts.adobe.com/fonts/liebeerika","https://fonts.adobe.com/fonts/liebegerda","https://fonts.adobe.com/fonts/lieberuth","https://fonts.adobe.com/fonts/ligurino","https://fonts.adobe.com/fonts/linden-hill","https://fonts.adobe.com/fonts/linotype-didot","https://fonts.adobe.com/fonts/lint-mccree","https://fonts.adobe.com/fonts/lipa-agate","https://fonts.adobe.com/fonts/liquorstore","https://fonts.adobe.com/fonts/lisbeth","https://fonts.adobe.com/fonts/litania","https://fonts.adobe.com/fonts/lithos","https://fonts.adobe.com/fonts/livory","https://fonts.adobe.com/fonts/liza","https://fonts.adobe.com/fonts/lo-res","https://fonts.adobe.com/fonts/look-script","https://fonts.adobe.com/fonts/lora","https://fonts.adobe.com/fonts/lorimer-no-2","https://fonts.adobe.com/fonts/los-feliz","https://fonts.adobe.com/fonts/loslana-niu-pro","https://fonts.adobe.com/fonts/lourdes","https://fonts.adobe.com/fonts/louvette-banner","https://fonts.adobe.com/fonts/louvette-deck","https://fonts.adobe.com/fonts/louvette-display","https://fonts.adobe.com/fonts/louvette-text","https://fonts.adobe.com/fonts/ltc-bodoni-175","https://fonts.adobe.com/fonts/ltc-broadway","https://fonts.adobe.com/fonts/ltc-caslon-pro","https://fonts.adobe.com/fonts/ltc-globe-gothic","https://fonts.adobe.com/fonts/ltc-goudy-oldstyle-pro","https://fonts.adobe.com/fonts/ltc-goudy-ornate","https://fonts.adobe.com/fonts/ltc-hess-monoblack","https://fonts.adobe.com/fonts/ltc-italian-old-style","https://fonts.adobe.com/fonts/ltc-kennerley","https://fonts.adobe.com/fonts/ltc-pabst-oldstyle","https://fonts.adobe.com/fonts/ltc-squareface","https://fonts.adobe.com/fonts/luminance","https://fonts.adobe.com/fonts/lunatix","https://fonts.adobe.com/fonts/lush","https://fonts.adobe.com/fonts/lust","https://fonts.adobe.com/fonts/lust-script","https://fonts.adobe.com/fonts/luxus-brut","https://fonts.adobe.com/fonts/luxus-brut-sparkling","https://fonts.adobe.com/fonts/lynda","https://fonts.adobe.com/fonts/macha","https://fonts.adobe.com/fonts/macho","https://fonts.adobe.com/fonts/machomodular","https://fonts.adobe.com/fonts/madawaska","https://fonts.adobe.com/fonts/madre-script","https://fonts.adobe.com/fonts/madrone","https://fonts.adobe.com/fonts/maecenas","https://fonts.adobe.com/fonts/magallanes","https://fonts.adobe.com/fonts/magasin","https://fonts.adobe.com/fonts/magion","https://fonts.adobe.com/fonts/magistral","https://fonts.adobe.com/fonts/magneta","https://fonts.adobe.com/fonts/magneto","https://fonts.adobe.com/fonts/magpie","https://fonts.adobe.com/fonts/mahalia","https://fonts.adobe.com/fonts/maiola","https://fonts.adobe.com/fonts/malaga","https://fonts.adobe.com/fonts/mama-script","https://fonts.adobe.com/fonts/mandevilla","https://fonts.adobe.com/fonts/mandrel","https://fonts.adobe.com/fonts/manicotti","https://fonts.adobe.com/fonts/manjari","https://fonts.adobe.com/fonts/manometer","https://fonts.adobe.com/fonts/manometer-sans","https://fonts.adobe.com/fonts/manteiga-gorda","https://fonts.adobe.com/fonts/maple","https://fonts.adobe.com/fonts/marcia","https://fonts.adobe.com/fonts/marco","https://fonts.adobe.com/fonts/marshmallow-positype","https://fonts.adobe.com/fonts/marvin","https://fonts.adobe.com/fonts/maryam","https://fonts.adobe.com/fonts/marydale","https://fonts.adobe.com/fonts/mason-sans","https://fonts.adobe.com/fonts/mason-serif","https://fonts.adobe.com/fonts/masqualero","https://fonts.adobe.com/fonts/mati","https://fonts.adobe.com/fonts/matrix-ii","https://fonts.adobe.com/fonts/mattb","https://fonts.adobe.com/fonts/mauritius","https://fonts.adobe.com/fonts/maxular","https://fonts.adobe.com/fonts/mayence","https://fonts.adobe.com/fonts/meatball","https://fonts.adobe.com/fonts/meera","https://fonts.adobe.com/fonts/megrim","https://fonts.adobe.com/fonts/meloche","https://fonts.adobe.com/fonts/memimas-pro","https://fonts.adobe.com/fonts/memoriam","https://fonts.adobe.com/fonts/mencken","https://fonts.adobe.com/fonts/menco","https://fonts.adobe.com/fonts/meno-banner","https://fonts.adobe.com/fonts/meno-display","https://fonts.adobe.com/fonts/meno-text","https://fonts.adobe.com/fonts/mentone","https://fonts.adobe.com/fonts/merel","https://fonts.adobe.com/fonts/merengue-script","https://fonts.adobe.com/fonts/merriweather","https://fonts.adobe.com/fonts/mesquite","https://fonts.adobe.com/fonts/metalista","https://fonts.adobe.com/fonts/metallophile-sp8","https://fonts.adobe.com/fonts/metronic-slab","https://fonts.adobe.com/fonts/mezz","https://fonts.adobe.com/fonts/mic-32-new","https://fonts.adobe.com/fonts/might-makes-right-bb","https://fonts.adobe.com/fonts/mighty-slab","https://fonts.adobe.com/fonts/milibus","https://fonts.adobe.com/fonts/milk-script","https://fonts.adobe.com/fonts/milka","https://fonts.adobe.com/fonts/millesime","https://fonts.adobe.com/fonts/millettre","https://fonts.adobe.com/fonts/milonguita","https://fonts.adobe.com/fonts/mina","https://fonts.adobe.com/fonts/minerva-modern","https://fonts.adobe.com/fonts/mingler","https://fonts.adobe.com/fonts/minion","https://fonts.adobe.com/fonts/minion-3","https://fonts.adobe.com/fonts/minion-3-caption","https://fonts.adobe.com/fonts/minion-3-display","https://fonts.adobe.com/fonts/minion-3-subhead","https://fonts.adobe.com/fonts/ministry","https://fonts.adobe.com/fonts/mislab","https://fonts.adobe.com/fonts/missionary","https://fonts.adobe.com/fonts/mitigate","https://fonts.adobe.com/fonts/mittwoch","https://fonts.adobe.com/fonts/mobley-sans","https://fonts.adobe.com/fonts/mobley-sans-condensed","https://fonts.adobe.com/fonts/mobley-serif","https://fonts.adobe.com/fonts/mobley-serif-condensed","https://fonts.adobe.com/fonts/moby","https://fonts.adobe.com/fonts/modesto","https://fonts.adobe.com/fonts/modish","https://fonts.adobe.com/fonts/modula","https://fonts.adobe.com/fonts/modula-round","https://fonts.adobe.com/fonts/mojito","https://fonts.adobe.com/fonts/mokoko","https://fonts.adobe.com/fonts/molto","https://fonts.adobe.com/fonts/monarcha","https://fonts.adobe.com/fonts/mongoose","https://fonts.adobe.com/fonts/mono45-headline","https://fonts.adobe.com/fonts/monotalic","https://fonts.adobe.com/fonts/monotype-grotesque","https://fonts.adobe.com/fonts/monotype-modern-display","https://fonts.adobe.com/fonts/monsal-gothic","https://fonts.adobe.com/fonts/montag","https://fonts.adobe.com/fonts/montana","https://fonts.adobe.com/fonts/montserrat","https://fonts.adobe.com/fonts/moret","https://fonts.adobe.com/fonts/mortise","https://fonts.adobe.com/fonts/mostra-nuova","https://fonts.adobe.com/fonts/motion","https://fonts.adobe.com/fonts/motiva-sans","https://fonts.adobe.com/fonts/motor","https://fonts.adobe.com/fonts/mr-darcy","https://fonts.adobe.com/fonts/mr-eaves-sans","https://fonts.adobe.com/fonts/mr-eaves-xl","https://fonts.adobe.com/fonts/mrs-eaves","https://fonts.adobe.com/fonts/mrs-eaves-xl","https://fonts.adobe.com/fonts/mufferaw","https://fonts.adobe.com/fonts/muffin","https://fonts.adobe.com/fonts/muli","https://fonts.adobe.com/fonts/multi-display","https://fonts.adobe.com/fonts/multi-text","https://fonts.adobe.com/fonts/muscle","https://fonts.adobe.com/fonts/museo","https://fonts.adobe.com/fonts/museo-sans","https://fonts.adobe.com/fonts/museo-slab","https://fonts.adobe.com/fonts/mvb-aunt-mildred","https://fonts.adobe.com/fonts/mvb-bossa-nova","https://fonts.adobe.com/fonts/mvb-bovine","https://fonts.adobe.com/fonts/mvb-cafe-mimi","https://fonts.adobe.com/fonts/mvb-calliope","https://fonts.adobe.com/fonts/mvb-celestia-antiqua","https://fonts.adobe.com/fonts/mvb-chanson-damour","https://fonts.adobe.com/fonts/mvb-diazo","https://fonts.adobe.com/fonts/mvb-dovetail","https://fonts.adobe.com/fonts/mvb-embarcadero-pro","https://fonts.adobe.com/fonts/mvb-embarcadero-pro-condensed","https://fonts.adobe.com/fonts/mvb-emmascript","https://fonts.adobe.com/fonts/mvb-fantabular","https://fonts.adobe.com/fonts/mvb-fantabular-sans","https://fonts.adobe.com/fonts/mvb-grenadine","https://fonts.adobe.com/fonts/mvb-greymantle","https://fonts.adobe.com/fonts/mvb-gryphius","https://fonts.adobe.com/fonts/mvb-hotsy-totsy","https://fonts.adobe.com/fonts/mvb-magnesium","https://fonts.adobe.com/fonts/mvb-magnolia","https://fonts.adobe.com/fonts/mvb-margin","https://fonts.adobe.com/fonts/mvb-mascot","https://fonts.adobe.com/fonts/mv-peccadillo","https://fonts.adobe.com/fonts/mvb-pedestria","https://fonts.adobe.com/fonts/mvb-pedestria-pict","https://fonts.adobe.com/fonts/mvb-pinecone","https://fonts.adobe.com/fonts/mvb-sacre-bleu","https://fonts.adobe.com/fonts/mvb-sirenne","https://fonts.adobe.com/fonts/mvb-solano-gothic-pro","https://fonts.adobe.com/fonts/mvb-solitaire-pro","https://fonts.adobe.com/fonts/mvb-verdigris-pro","https://fonts.adobe.com/fonts/myriad","https://fonts.adobe.com/fonts/myriad-arabic","https://fonts.adobe.com/fonts/myriad-bengali","https://fonts.adobe.com/fonts/myriad-devanagari","https://fonts.adobe.com/fonts/myriad-hebrew","https://fonts.adobe.com/fonts/myriad-wild","https://fonts.adobe.com/fonts/mythos","https://fonts.adobe.com/fonts/nagomi","https://fonts.adobe.com/fonts/nanum-brush-script","https://fonts.adobe.com/fonts/nanum-gothic","https://fonts.adobe.com/fonts/nanum-gothic-coding","https://fonts.adobe.com/fonts/nanum-myeongjo","https://fonts.adobe.com/fonts/nanum-pen-script","https://fonts.adobe.com/fonts/naresuan","https://fonts.adobe.com/fonts/narly","https://fonts.adobe.com/fonts/nasalization","https://fonts.adobe.com/fonts/nassim","https://fonts.adobe.com/fonts/natalya","https://fonts.adobe.com/fonts/natura","https://fonts.adobe.com/fonts/nautica","https://fonts.adobe.com/fonts/navigo","https://fonts.adobe.com/fonts/nazare","https://fonts.adobe.com/fonts/neil-bold","https://fonts.adobe.com/fonts/nelson","https://fonts.adobe.com/fonts/neo-sans","https://fonts.adobe.com/fonts/neonoir","https://fonts.adobe.com/fonts/neonstream","https://fonts.adobe.com/fonts/neplus","https://fonts.adobe.com/fonts/neue-aachen","https://fonts.adobe.com/fonts/neue-haas-grotesk","https://fonts.adobe.com/fonts/neue-haas-unica","https://fonts.adobe.com/fonts/neue-kabel","https://fonts.adobe.com/fonts/neuropol","https://fonts.adobe.com/fonts/neusa-next","https://fonts.adobe.com/fonts/neuzeit-grotesk","https://fonts.adobe.com/fonts/neuzon","https://fonts.adobe.com/fonts/new-atten","https://fonts.adobe.com/fonts/new-atten-round","https://fonts.adobe.com/fonts/farm-new","https://fonts.adobe.com/fonts/frank-new","https://fonts.adobe.com/fonts/new-hero","https://fonts.adobe.com/fonts/new-reason","https://fonts.adobe.com/fonts/new-rubrik","https://fonts.adobe.com/fonts/new-rubrik-edge","https://fonts.adobe.com/fonts/zen-new","https://fonts.adobe.com/fonts/newbery-sans","https://fonts.adobe.com/fonts/newcomen","https://fonts.adobe.com/fonts/news-gothic","https://fonts.adobe.com/fonts/niagara","https://fonts.adobe.com/fonts/nimbus-roman","https://fonts.adobe.com/fonts/nimbus-sans","https://fonts.adobe.com/fonts/nimbus-sans-devanagari","https://fonts.adobe.com/fonts/niveau-grotesk","https://fonts.adobe.com/fonts/noam-text","https://fonts.adobe.com/fonts/nobel","https://fonts.adobe.com/fonts/nocturne-serif","https://fonts.adobe.com/fonts/noort","https://fonts.adobe.com/fonts/notcaslon","https://fonts.adobe.com/fonts/nothing","https://fonts.adobe.com/fonts/noto-sans","https://fonts.adobe.com/fonts/noto-sans-cjk-kr","https://fonts.adobe.com/fonts/noto-sans-display","https://fonts.adobe.com/fonts/noto-serif","https://fonts.adobe.com/fonts/nouvelle-vague","https://fonts.adobe.com/fonts/nove","https://fonts.adobe.com/fonts/novecento-carved","https://fonts.adobe.com/fonts/novecento-sans","https://fonts.adobe.com/fonts/novecento-slab","https://fonts.adobe.com/fonts/novel","https://fonts.adobe.com/fonts/novel-display","https://fonts.adobe.com/fonts/novel-mono","https://fonts.adobe.com/fonts/novel-sans","https://fonts.adobe.com/fonts/novel-sans-hair","https://fonts.adobe.com/fonts/nubb","https://fonts.adobe.com/fonts/nudista","https://fonts.adobe.com/fonts/nueva","https://fonts.adobe.com/fonts/number-five","https://fonts.adobe.com/fonts/nunito","https://fonts.adobe.com/fonts/nunito-sans","https://fonts.adobe.com/fonts/nutcracker","https://fonts.adobe.com/fonts/objektiv","https://fonts.adobe.com/fonts/obliqua-sans","https://fonts.adobe.com/fonts/oblong","https://fonts.adobe.com/fonts/obvia","https://fonts.adobe.com/fonts/obviously","https://fonts.adobe.com/fonts/ocr-a","https://fonts.adobe.com/fonts/ocr-b","https://fonts.adobe.com/fonts/octin","https://fonts.adobe.com/fonts/octynaz","https://fonts.adobe.com/fonts/ode","https://fonts.adobe.com/fonts/odile","https://fonts.adobe.com/fonts/odisseia","https://fonts.adobe.com/fonts/ofl-sorts-mill-goudy","https://fonts.adobe.com/fonts/ohno-blazeface","https://fonts.adobe.com/fonts/ohno-fatface","https://fonts.adobe.com/fonts/old-man-eloquent","https://fonts.adobe.com/fonts/old-standard","https://fonts.adobe.com/fonts/olicana","https://fonts.adobe.com/fonts/olidia","https://fonts.adobe.com/fonts/omnes","https://fonts.adobe.com/fonts/omnes-arabic","https://fonts.adobe.com/fonts/omnes-cyrillic","https://fonts.adobe.com/fonts/omnium","https://fonts.adobe.com/fonts/omnium-tagline","https://fonts.adobe.com/fonts/opake","https://fonts.adobe.com/fonts/open-sans","https://fonts.adobe.com/fonts/operetta","https://fonts.adobe.com/fonts/orator","https://fonts.adobe.com/fonts/orbe","https://fonts.adobe.com/fonts/orbitron","https://fonts.adobe.com/fonts/orgovan","https://fonts.adobe.com/fonts/origin-super-condensed","https://fonts.adobe.com/fonts/origins","https://fonts.adobe.com/fonts/orpheus","https://fonts.adobe.com/fonts/oscine","https://fonts.adobe.com/fonts/oskar","https://fonts.adobe.com/fonts/oskar-inline","https://fonts.adobe.com/fonts/oswald","https://fonts.adobe.com/fonts/ottomat","https://fonts.adobe.com/fonts/outwest","https://fonts.adobe.com/fonts/oxtail","https://fonts.adobe.com/fonts/oxygen","https://fonts.adobe.com/fonts/p22-aragon","https://fonts.adobe.com/fonts/p22-arts-and-crafts","https://fonts.adobe.com/fonts/p22-brass-script-pro","https://fonts.adobe.com/fonts/p22-cezanne","https://fonts.adobe.com/fonts/p22-dearest","https://fonts.adobe.com/fonts/p22-flw-exhibition","https://fonts.adobe.com/fonts/p22-flw-midway","https://fonts.adobe.com/fonts/p22-flw-terracotta","https://fonts.adobe.com/fonts/p22-franklin-caslon","https://fonts.adobe.com/fonts/p22-hopper","https://fonts.adobe.com/fonts/p22-klauss-kursiv","https://fonts.adobe.com/fonts/p22-lucilee-pro","https://fonts.adobe.com/fonts/p22-mackinac","https://fonts.adobe.com/fonts/p22-marcel","https://fonts.adobe.com/fonts/p22-muschamp-pro","https://fonts.adobe.com/fonts/p22-pooper-black","https://fonts.adobe.com/fonts/p22-pouty-pro","https://fonts.adobe.com/fonts/p22-sneaky-pro","https://fonts.adobe.com/fonts/p22-stanyan","https://fonts.adobe.com/fonts/p22-stickley","https://fonts.adobe.com/fonts/p22-sweepy-pro","https://fonts.adobe.com/fonts/p22-underground","https://fonts.adobe.com/fonts/p22-zaner","https://fonts.adobe.com/fonts/pacifico","https://fonts.adobe.com/fonts/paganini","https://fonts.adobe.com/fonts/pakenham","https://fonts.adobe.com/fonts/paralucent","https://fonts.adobe.com/fonts/parisine","https://fonts.adobe.com/fonts/parisine-office","https://fonts.adobe.com/fonts/parisine-plus","https://fonts.adobe.com/fonts/park-lane","https://fonts.adobe.com/fonts/parkside","https://fonts.adobe.com/fonts/parkway","https://fonts.adobe.com/fonts/parppim","https://fonts.adobe.com/fonts/pauline","https://fonts.adobe.com/fonts/peachy-keen-jf","https://fonts.adobe.com/fonts/pelago","https://fonts.adobe.com/fonts/pepperwood","https://fonts.adobe.com/fonts/peregroy-jf","https://fonts.adobe.com/fonts/permanent-marker","https://fonts.adobe.com/fonts/permanent-marker-pro","https://fonts.adobe.com/fonts/pesto-fresco","https://fonts.adobe.com/fonts/petala","https://fonts.adobe.com/fonts/petersburg","https://fonts.adobe.com/fonts/philosopher","https://fonts.adobe.com/fonts/phoreus-cherokee","https://fonts.adobe.com/fonts/piepie","https://fonts.adobe.com/fonts/pika-ultra-script","https://fonts.adobe.com/fonts/pilar","https://fonts.adobe.com/fonts/pill-gothic","https://fonts.adobe.com/fonts/pilsner","https://fonts.adobe.com/fonts/pinot-grigio-modern","https://fonts.adobe.com/fonts/pirulen","https://fonts.adobe.com/fonts/pitch","https://fonts.adobe.com/fonts/pitchfork","https://fonts.adobe.com/fonts/plantin","https://fonts.adobe.com/fonts/platelet","https://fonts.adobe.com/fonts/plau","https://fonts.adobe.com/fonts/playfair","https://fonts.adobe.com/fonts/plume","https://fonts.adobe.com/fonts/plumeroscript","https://fonts.adobe.com/fonts/pmn-caecilia","https://fonts.adobe.com/fonts/pmn-caecilia-sans","https://fonts.adobe.com/fonts/poetica","https://fonts.adobe.com/fonts/poiret-one","https://fonts.adobe.com/fonts/poleno","https://fonts.adobe.com/fonts/politica","https://fonts.adobe.com/fonts/pollen","https://fonts.adobe.com/fonts/ponderosa-std","https://fonts.adobe.com/fonts/poplar","https://fonts.adobe.com/fonts/poppi","https://fonts.adobe.com/fonts/poppins","https://fonts.adobe.com/fonts/portada","https://fonts.adobe.com/fonts/postino","https://fonts.adobe.com/fonts/powerlift","https://fonts.adobe.com/fonts/pragmatapro-fraktur","https://fonts.adobe.com/fonts/pragmatica","https://fonts.adobe.com/fonts/pragmatica-slabserif","https://fonts.adobe.com/fonts/praxis-next","https://fonts.adobe.com/fonts/prenton","https://fonts.adobe.com/fonts/presicav","https://fonts.adobe.com/fonts/presley-slab","https://fonts.adobe.com/fonts/pressio","https://fonts.adobe.com/fonts/pressio-compressed","https://fonts.adobe.com/fonts/pressio-condensed","https://fonts.adobe.com/fonts/pressio-x-compressed","https://fonts.adobe.com/fonts/prestige-elite","https://fonts.adobe.com/fonts/primot","https://fonts.adobe.com/fonts/printf","https://fonts.adobe.com/fonts/priori-acute","https://fonts.adobe.com/fonts/priori-sans","https://fonts.adobe.com/fonts/priori-serif","https://fonts.adobe.com/fonts/private-sans","https://fonts.adobe.com/fonts/productus","https://fonts.adobe.com/fonts/professor","https://fonts.adobe.com/fonts/professor-minty","https://fonts.adobe.com/fonts/profile","https://fonts.adobe.com/fonts/proforma","https://fonts.adobe.com/fonts/program","https://fonts.adobe.com/fonts/prohibition","https://fonts.adobe.com/fonts/prometo","https://fonts.adobe.com/fonts/prosaic","https://fonts.adobe.com/fonts/protipo","https://fonts.adobe.com/fonts/proxima-nova","https://fonts.adobe.com/fonts/proxima-soft","https://fonts.adobe.com/fonts/ps-fournier","https://fonts.adobe.com/fonts/pt-mono","https://fonts.adobe.com/fonts/pt-sans","https://fonts.adobe.com/fonts/pt-sans-pro","https://fonts.adobe.com/fonts/pt-serif","https://fonts.adobe.com/fonts/pt-serif-pro","https://fonts.adobe.com/fonts/pulpo","https://fonts.adobe.com/fonts/pulpo-rust","https://fonts.adobe.com/fonts/pupcat","https://fonts.adobe.com/fonts/purista","https://fonts.adobe.com/fonts/quador","https://fonts.adobe.com/fonts/quador-display","https://fonts.adobe.com/fonts/quagmire","https://fonts.adobe.com/fonts/quake","https://fonts.adobe.com/fonts/quara","https://fonts.adobe.com/fonts/quasimoda","https://fonts.adobe.com/fonts/quatro","https://fonts.adobe.com/fonts/quatro-slab","https://fonts.adobe.com/fonts/questa","https://fonts.adobe.com/fonts/questa-grande","https://fonts.adobe.com/fonts/questa-sans","https://fonts.adobe.com/fonts/questa-slab","https://fonts.adobe.com/fonts/quiche-display","https://fonts.adobe.com/fonts/quiche-sans","https://fonts.adobe.com/fonts/quiche-text","https://fonts.adobe.com/fonts/quicksand","https://fonts.adobe.com/fonts/quiet-sans","https://fonts.adobe.com/fonts/quimby","https://fonts.adobe.com/fonts/quire-sans","https://fonts.adobe.com/fonts/quiroh","https://fonts.adobe.com/fonts/quita","https://fonts.adobe.com/fonts/raceway","https://fonts.adobe.com/fonts/rachana","https://fonts.adobe.com/fonts/rad","https://fonts.adobe.com/fonts/rajdhani","https://fonts.adobe.com/fonts/raleway","https://fonts.adobe.com/fonts/raleway-v20-deprecated","https://fonts.adobe.com/fonts/rama-gothic","https://fonts.adobe.com/fonts/rama-slab","https://fonts.adobe.com/fonts/rasa","https://fonts.adobe.com/fonts/ratio","https://fonts.adobe.com/fonts/ratio-modern","https://fonts.adobe.com/fonts/reagan","https://fonts.adobe.com/fonts/realist","https://fonts.adobe.com/fonts/recherche","https://fonts.adobe.com/fonts/reenie-beanie","https://fonts.adobe.com/fonts/refrigerator-deluxe","https://fonts.adobe.com/fonts/regulator-nova","https://fonts.adobe.com/fonts/reiner-script","https://fonts.adobe.com/fonts/reklame-script","https://fonts.adobe.com/fonts/relation","https://fonts.adobe.com/fonts/remedy","https://fonts.adobe.com/fonts/remora-sans","https://fonts.adobe.com/fonts/renata","https://fonts.adobe.com/fonts/report","https://fonts.adobe.com/fonts/report-school","https://fonts.adobe.com/fonts/republic","https://fonts.adobe.com/fonts/restore","https://fonts.adobe.com/fonts/retiro","https://fonts.adobe.com/fonts/revolution-gothic","https://fonts.adobe.com/fonts/rexlia","https://fonts.adobe.com/fonts/rialto-df","https://fonts.adobe.com/fonts/rieven-uncial","https://fonts.adobe.com/fonts/rift","https://fonts.adobe.com/fonts/rift-soft","https://fonts.adobe.com/fonts/rig-shaded","https://fonts.adobe.com/fonts/rig-solid","https://fonts.adobe.com/fonts/rigatoni","https://fonts.adobe.com/fonts/rigid-square","https://fonts.adobe.com/fonts/rinse","https://fonts.adobe.com/fonts/rival","https://fonts.adobe.com/fonts/rival-sans","https://fonts.adobe.com/fonts/rizado-script","https://fonts.adobe.com/fonts/roboto","https://fonts.adobe.com/fonts/roboto-slab","https://fonts.adobe.com/fonts/roc-grotesk","https://fonts.adobe.com/fonts/rochester-pro","https://fonts.adobe.com/fonts/rock-salt-pro","https://fonts.adobe.com/fonts/rocket","https://fonts.adobe.com/fonts/rockwell","https://fonts.adobe.com/fonts/rockwell-nova","https://fonts.adobe.com/fonts/rodchenko","https://fonts.adobe.com/fonts/rogliano","https://fonts.adobe.com/fonts/rogue-sans","https://fonts.adobe.com/fonts/rogue-serif","https://fonts.adobe.com/fonts/rokkitt","https://fonts.adobe.com/fonts/rollerscript","https://fonts.adobe.com/fonts/roma","https://fonts.adobe.com/fonts/ronnia","https://fonts.adobe.com/fonts/rooney","https://fonts.adobe.com/fonts/rooney-sans","https://fonts.adobe.com/fonts/ropa-mix","https://fonts.adobe.com/fonts/ropa-sans","https://fonts.adobe.com/fonts/ropa-soft","https://fonts.adobe.com/fonts/rosarian","https://fonts.adobe.com/fonts/rosario","https://fonts.adobe.com/fonts/rosella","https://fonts.adobe.com/fonts/rosewood","https://fonts.adobe.com/fonts/rubik","https://fonts.adobe.com/fonts/rucksack","https://fonts.adobe.com/fonts/rufina","https://fonts.adobe.com/fonts/rufina-stencil","https://fonts.adobe.com/fonts/rukou","https://fonts.adobe.com/fonts/rumba","https://fonts.adobe.com/fonts/runda","https://fonts.adobe.com/fonts/sabbath-black","https://fonts.adobe.com/fonts/saber","https://fonts.adobe.com/fonts/sabon","https://fonts.adobe.com/fonts/saffran","https://fonts.adobe.com/fonts/sail","https://fonts.adobe.com/fonts/salden","https://fonts.adobe.com/fonts/salsbury","https://fonts.adobe.com/fonts/salvation","https://fonts.adobe.com/fonts/samantha","https://fonts.adobe.com/fonts/san-rafael","https://fonts.adobe.com/fonts/santino","https://fonts.adobe.com/fonts/sanvito","https://fonts.adobe.com/fonts/sarah-script","https://fonts.adobe.com/fonts/sarina","https://fonts.adobe.com/fonts/satisfy","https://fonts.adobe.com/fonts/saucy-millionaire","https://fonts.adobe.com/fonts/sauna-pro","https://fonts.adobe.com/fonts/savanna-script","https://fonts.adobe.com/fonts/scarlet","https://fonts.adobe.com/fonts/scarlet-script","https://fonts.adobe.com/fonts/scarlet-wood","https://fonts.adobe.com/fonts/scheme","https://fonts.adobe.com/fonts/schnebel-sans","https://fonts.adobe.com/fonts/schnebel-sans-me","https://fonts.adobe.com/fonts/schoolbell-pro","https://fonts.adobe.com/fonts/schoolbook","https://fonts.adobe.com/fonts/schwager-sans","https://fonts.adobe.com/fonts/scriptorama-markdown-jf","https://fonts.adobe.com/fonts/scriptorama-tradeshow-jf","https://fonts.adobe.com/fonts/scrivano","https://fonts.adobe.com/fonts/seasoned-hostess","https://fonts.adobe.com/fonts/seaweed-script-pro","https://fonts.adobe.com/fonts/semplicita","https://fonts.adobe.com/fonts/senator","https://fonts.adobe.com/fonts/september","https://fonts.adobe.com/fonts/serenity","https://fonts.adobe.com/fonts/serifa","https://fonts.adobe.com/fonts/servus-slab","https://fonts.adobe.com/fonts/setimo","https://fonts.adobe.com/fonts/sewn","https://fonts.adobe.com/fonts/shabby-chic","https://fonts.adobe.com/fonts/shackleton","https://fonts.adobe.com/fonts/shadows-into-light","https://fonts.adobe.com/fonts/sharik-sans","https://fonts.adobe.com/fonts/sharktooth","https://fonts.adobe.com/fonts/sheepman","https://fonts.adobe.com/fonts/sheila","https://fonts.adobe.com/fonts/shelby","https://fonts.adobe.com/fonts/shimano","https://fonts.adobe.com/fonts/shiva","https://fonts.adobe.com/fonts/shlop","https://fonts.adobe.com/fonts/shogun","https://fonts.adobe.com/fonts/shrub","https://fonts.adobe.com/fonts/shuriken-boy","https://fonts.adobe.com/fonts/signo","https://fonts.adobe.com/fonts/silicone","https://fonts.adobe.com/fonts/silverstein","https://fonts.adobe.com/fonts/sinter","https://fonts.adobe.com/fonts/sirba","https://fonts.adobe.com/fonts/sirin-stencil","https://fonts.adobe.com/fonts/siruca","https://fonts.adobe.com/fonts/sister-frisky","https://fonts.adobe.com/fonts/six-hands","https://fonts.adobe.com/fonts/sketchnote","https://fonts.adobe.com/fonts/skippy-sharp","https://fonts.adobe.com/fonts/skolar","https://fonts.adobe.com/fonts/skolar-sans","https://fonts.adobe.com/fonts/slabo","https://fonts.adobe.com/fonts/slack-casual","https://fonts.adobe.com/fonts/sloop-script","https://fonts.adobe.com/fonts/smoothy","https://fonts.adobe.com/fonts/sneakers","https://fonts.adobe.com/fonts/sneakers-script","https://fonts.adobe.com/fonts/snicker","https://fonts.adobe.com/fonts/sniglet","https://fonts.adobe.com/fonts/soap","https://fonts.adobe.com/fonts/social-gothic","https://fonts.adobe.com/fonts/soda-script","https://fonts.adobe.com/fonts/sofachrome","https://fonts.adobe.com/fonts/sofia","https://fonts.adobe.com/fonts/sol","https://fonts.adobe.com/fonts/soleil","https://fonts.adobe.com/fonts/soleto","https://fonts.adobe.com/fonts/solex","https://fonts.adobe.com/fonts/solitas-serif","https://fonts.adobe.com/fonts/sommet","https://fonts.adobe.com/fonts/sommet-slab","https://fonts.adobe.com/fonts/sophisto","https://fonts.adobe.com/fonts/source-code-pro","https://fonts.adobe.com/fonts/source-han-sans-cjk-hong-kong","https://fonts.adobe.com/fonts/source-han-sans-cjk-korean","https://fonts.adobe.com/fonts/source-han-sans-cjk-simplified-chinese","https://fonts.adobe.com/fonts/source-han-sans-cjk-traditional-chinese","https://fonts.adobe.com/fonts/source-han-sans-hong-kong","https://fonts.adobe.com/fonts/source-han-sans-korean","https://fonts.adobe.com/fonts/source-han-sans-simplified-chinese","https://fonts.adobe.com/fonts/source-han-sans-traditional-chinese","https://fonts.adobe.com/fonts/source-han-serif-korean","https://fonts.adobe.com/fonts/source-han-serif-simplified-chinese","https://fonts.adobe.com/fonts/source-han-serif-traditional-chinese","https://fonts.adobe.com/fonts/source-sans","https://fonts.adobe.com/fonts/source-serif","https://fonts.adobe.com/fonts/sovba","https://fonts.adobe.com/fonts/spade","https://fonts.adobe.com/fonts/span","https://fonts.adobe.com/fonts/spartacus","https://fonts.adobe.com/fonts/spumante","https://fonts.adobe.com/fonts/stack","https://fonts.adobe.com/fonts/stalemate","https://fonts.adobe.com/fonts/stencil","https://fonts.adobe.com/fonts/stencil-creek","https://fonts.adobe.com/fonts/stenciletta","https://fonts.adobe.com/fonts/stereo","https://fonts.adobe.com/fonts/rtf-stern-pro","https://fonts.adobe.com/fonts/stevie-sans","https://fonts.adobe.com/fonts/stix","https://fonts.adobe.com/fonts/stolzl","https://fonts.adobe.com/fonts/story-tales","https://fonts.adobe.com/fonts/stratos","https://fonts.adobe.com/fonts/streamline","https://fonts.adobe.com/fonts/strenuous","https://fonts.adobe.com/fonts/stroudley","https://fonts.adobe.com/fonts/strumpf","https://fonts.adobe.com/fonts/stud","https://fonts.adobe.com/fonts/study","https://fonts.adobe.com/fonts/stymie","https://fonts.adobe.com/fonts/suave-script-pro","https://fonts.adobe.com/fonts/suburban","https://fonts.adobe.com/fonts/subway","https://fonts.adobe.com/fonts/sudestada","https://fonts.adobe.com/fonts/sui-generis","https://fonts.adobe.com/fonts/sukhumvit-dot","https://fonts.adobe.com/fonts/summa","https://fonts.adobe.com/fonts/sunflower","https://fonts.adobe.com/fonts/sunshine","https://fonts.adobe.com/fonts/superclarendon","https://fonts.adobe.com/fonts/supria-sans","https://fonts.adobe.com/fonts/surce-sns-missing-types","https://fonts.adobe.com/fonts/suruma","https://fonts.adobe.com/fonts/susan","https://fonts.adobe.com/fonts/sutro","https://fonts.adobe.com/fonts/sutturah","https://fonts.adobe.com/fonts/sweater-school","https://fonts.adobe.com/fonts/sweet-fancy-script","https://fonts.adobe.com/fonts/sweet-gothic","https://fonts.adobe.com/fonts/sweet-gothic-serif","https://fonts.adobe.com/fonts/sweet-sans-pro","https://fonts.adobe.com/fonts/sweet-square-pro","https://fonts.adobe.com/fonts/sweet-titling","https://fonts.adobe.com/fonts/sweet-upright-script","https://fonts.adobe.com/fonts/swing-king","https://fonts.adobe.com/fonts/swing-king-icons","https://fonts.adobe.com/fonts/swingdancer","https://fonts.adobe.com/fonts/swister","https://fonts.adobe.com/fonts/sybarite","https://fonts.adobe.com/fonts/synthemesc","https://fonts.adobe.com/fonts/synthese","https://fonts.adobe.com/fonts/sys","https://fonts.adobe.com/fonts/sysfalso","https://fonts.adobe.com/fonts/t26-carbon","https://fonts.adobe.com/fonts/tablet-gothic","https://fonts.adobe.com/fonts/taboo","https://fonts.adobe.com/fonts/tachyon","https://fonts.adobe.com/fonts/tacitus","https://fonts.adobe.com/fonts/talon","https://fonts.adobe.com/fonts/tamarillo-jf","https://fonts.adobe.com/fonts/tandelle","https://fonts.adobe.com/fonts/tangelo","https://fonts.adobe.com/fonts/tangerine","https://fonts.adobe.com/fonts/tangier","https://fonts.adobe.com/fonts/tangly","https://fonts.adobe.com/fonts/tannakone","https://fonts.adobe.com/fonts/tarzana","https://fonts.adobe.com/fonts/tasman","https://fonts.adobe.com/fonts/taurunum","https://fonts.adobe.com/fonts/taurunum-ferrum","https://fonts.adobe.com/fonts/teeshirt","https://fonts.adobe.com/fonts/teimer","https://fonts.adobe.com/fonts/tejuela","https://fonts.adobe.com/fonts/teko","https://fonts.adobe.com/fonts/tekton","https://fonts.adobe.com/fonts/temeraire","https://fonts.adobe.com/fonts/template-gothic","https://fonts.adobe.com/fonts/ten-oldstyle","https://fonts.adobe.com/fonts/tenby","https://fonts.adobe.com/fonts/tenez","https://fonts.adobe.com/fonts/tenon","https://fonts.adobe.com/fonts/tenso","https://fonts.adobe.com/fonts/tephra","https://fonts.adobe.com/fonts/terfens","https://fonts.adobe.com/fonts/termina","https://fonts.adobe.com/fonts/termtem","https://fonts.adobe.com/fonts/texas-hero","https://fonts.adobe.com/fonts/textbook-new","https://fonts.adobe.com/fonts/the-becker-gothics","https://fonts.adobe.com/fonts/tipoteca-series","https://fonts.adobe.com/fonts/thingbat","https://fonts.adobe.com/fonts/thonglor","https://fonts.adobe.com/fonts/thongterm","https://fonts.adobe.com/fonts/thunderhouse","https://fonts.adobe.com/fonts/tight","https://fonts.adobe.com/fonts/tilden-sans","https://fonts.adobe.com/fonts/timberline","https://fonts.adobe.com/fonts/tinos","https://fonts.adobe.com/fonts/titillium-web","https://fonts.adobe.com/fonts/titular","https://fonts.adobe.com/fonts/tomarik","https://fonts.adobe.com/fonts/tomarik-display","https://fonts.adobe.com/fonts/tondo","https://fonts.adobe.com/fonts/tornac","https://fonts.adobe.com/fonts/totally-glyphic","https://fonts.adobe.com/fonts/totally-gothic","https://fonts.adobe.com/fonts/trade-gothic-next","https://fonts.adobe.com/fonts/trailmade","https://fonts.adobe.com/fonts/trajan","https://fonts.adobe.com/fonts/trajan-color","https://fonts.adobe.com/fonts/trajan-sans","https://fonts.adobe.com/fonts/transat","https://fonts.adobe.com/fonts/transat-text","https://fonts.adobe.com/fonts/transmute","https://fonts.adobe.com/fonts/trasandina","https://fonts.adobe.com/fonts/trevor","https://fonts.adobe.com/fonts/tribute","https://fonts.adobe.com/fonts/trilby","https://fonts.adobe.com/fonts/triplex-sans","https://fonts.adobe.com/fonts/triplex-serif","https://fonts.adobe.com/fonts/tripper-pro","https://fonts.adobe.com/fonts/trump","https://fonts.adobe.com/fonts/turbinado","https://fonts.adobe.com/fonts/turnip","https://fonts.adobe.com/fonts/turnip-re","https://fonts.adobe.com/fonts/turquoise","https://fonts.adobe.com/fonts/tussilago","https://fonts.adobe.com/fonts/twentyfourninetyone","https://fonts.adobe.com/fonts/typeka","https://fonts.adobe.com/fonts/tzimmes","https://fonts.adobe.com/fonts/ubuntu","https://fonts.adobe.com/fonts/ubuntu-mono","https://fonts.adobe.com/fonts/ultra","https://fonts.adobe.com/fonts/unibody-8","https://fonts.adobe.com/fonts/unitext","https://fonts.adobe.com/fonts/univia-pro","https://fonts.adobe.com/fonts/uniwars","https://fonts.adobe.com/fonts/upgrade","https://fonts.adobe.com/fonts/uppercut-angle","https://fonts.adobe.com/fonts/urbana","https://fonts.adobe.com/fonts/urbane","https://fonts.adobe.com/fonts/urbane-adscript","https://fonts.adobe.com/fonts/urbane-rounded","https://fonts.adobe.com/fonts/uroob","https://fonts.adobe.com/fonts/urw-antiqua","https://fonts.adobe.com/fonts/urw-din","https://fonts.adobe.com/fonts/urw-form","https://fonts.adobe.com/fonts/usual","https://fonts.adobe.com/fonts/usurp","https://fonts.adobe.com/fonts/utile","https://fonts.adobe.com/fonts/utile-display","https://fonts.adobe.com/fonts/utopia","https://fonts.adobe.com/fonts/vaccine","https://fonts.adobe.com/fonts/vag-rundschrift-d","https://fonts.adobe.com/fonts/variex","https://fonts.adobe.com/fonts/vatican","https://fonts.adobe.com/fonts/vectora","https://fonts.adobe.com/fonts/vektra","https://fonts.adobe.com/fonts/vendetta","https://fonts.adobe.com/fonts/verveine","https://fonts.adobe.com/fonts/vibro","https://fonts.adobe.com/fonts/victorian-orchid","https://fonts.adobe.com/fonts/vidange","https://fonts.adobe.com/fonts/video","https://fonts.adobe.com/fonts/viktor-script","https://fonts.adobe.com/fonts/viktorie","https://fonts.adobe.com/fonts/vincente","https://fonts.adobe.com/fonts/vintage-deco","https://fonts.adobe.com/fonts/vinyl","https://fonts.adobe.com/fonts/virna","https://fonts.adobe.com/fonts/vista-sans","https://fonts.adobe.com/fonts/vista-slab","https://fonts.adobe.com/fonts/viva","https://fonts.adobe.com/fonts/vm74","https://fonts.adobe.com/fonts/volina","https://fonts.adobe.com/fonts/vollkorn","https://fonts.adobe.com/fonts/voltage","https://fonts.adobe.com/fonts/voluta-script","https://fonts.adobe.com/fonts/vortice","https://fonts.adobe.com/fonts/vox","https://fonts.adobe.com/fonts/wak","https://fonts.adobe.com/fonts/walnut","https://fonts.adobe.com/fonts/warnock","https://fonts.adobe.com/fonts/westsac","https://fonts.adobe.com/fonts/whomp","https://fonts.adobe.com/fonts/wigwag","https://fonts.adobe.com/fonts/willow","https://fonts.adobe.com/fonts/winco","https://fonts.adobe.com/fonts/winsome","https://fonts.adobe.com/fonts/wordy-diva","https://fonts.adobe.com/fonts/work-sans","https://fonts.adobe.com/fonts/worker","https://fonts.adobe.com/fonts/worker-3d","https://fonts.adobe.com/fonts/worthington-arcade","https://fonts.adobe.com/fonts/wreath","https://fonts.adobe.com/fonts/wtr-fatboy","https://fonts.adobe.com/fonts/wtr-french-clarendon-ornamented","https://fonts.adobe.com/fonts/wtr-gothic-open-shaded","https://fonts.adobe.com/fonts/wtr-roycroft","https://fonts.adobe.com/fonts/xenara","https://fonts.adobe.com/fonts/yana","https://fonts.adobe.com/fonts/yantramanav","https://fonts.adobe.com/fonts/yellowtail","https://fonts.adobe.com/fonts/yorkten-slab","https://fonts.adobe.com/fonts/youngblood","https://fonts.adobe.com/fonts/yrsa","https://fonts.adobe.com/fonts/ysans","https://fonts.adobe.com/fonts/ysans-mondrian","https://fonts.adobe.com/fonts/zalderdash","https://fonts.adobe.com/fonts/zebrawood","https://fonts.adobe.com/fonts/zeitguys","https://fonts.adobe.com/fonts/zeitung","https://fonts.adobe.com/fonts/zekton","https://fonts.adobe.com/fonts/zenon","https://fonts.adobe.com/fonts/zipline","https://fonts.adobe.com/fonts/zooja","https://fonts.adobe.com/fonts/zsazsa-galore","https://fonts.adobe.com/fonts/zubilo","https://fonts.adobe.com/fonts/a-otf-futo-go-b101-pr6n","https://fonts.adobe.com/fonts/a-otf-futo-min-a101-pr6n","https://fonts.adobe.com/fonts/a-otf-gothic-bbb-pr6n","https://fonts.adobe.com/fonts/a-otf-jun-pro","https://fonts.adobe.com/fonts/a-otf-midashi-go-mb31-pr6n","https://fonts.adobe.com/fonts/a-otf-midashi-mi-ma31-pr6n","https://fonts.adobe.com/fonts/a-otf-ryumin-pr6n","https://fonts.adobe.com/fonts/a-otf-ud-reimin-pr6n","https://fonts.adobe.com/fonts/a-otf-ud-shin-go-pr6n","https://fonts.adobe.com/fonts/a-otf-ud-shin-maru-go-pr6n","https://fonts.adobe.com/fonts/dnp-shuei-4go-std","https://fonts.adobe.com/fonts/dnp-shuei-4gob-std","https://fonts.adobe.com/fonts/dnp-shuei-anti-std","https://fonts.adobe.com/fonts/dnp-shuei-gothic-gin-std","https://fonts.adobe.com/fonts/dnp-shuei-gothic-kin-std","https://fonts.adobe.com/fonts/dnp-shuei-mgothic-std","https://fonts.adobe.com/fonts/dnp-shuei-mincho-pr6","https://fonts.adobe.com/fonts/dnp-shuei-mincho-pr6n","https://fonts.adobe.com/fonts/dnp-shuei-shogomincho-std","https://fonts.adobe.com/fonts/dnp-shuei-ymincho-std","https://fonts.adobe.com/fonts/donguri-kana","https://fonts.adobe.com/fonts/fot-cezanne-pron","https://fonts.adobe.com/fonts/fot-klee-pro","https://fonts.adobe.com/fonts/fot-matisse-pron","https://fonts.adobe.com/fonts/fot-rodin-pron","https://fonts.adobe.com/fonts/fot-seurat-pron","https://fonts.adobe.com/fonts/fot-tsukuardgothic-std","https://fonts.adobe.com/fonts/fot-tsukubrdgothic-std","https://fonts.adobe.com/fonts/fot-udkakugo-large-pr6n","https://fonts.adobe.com/fonts/fot-udmarugo-large-pr6n","https://fonts.adobe.com/fonts/heisei-kaku-gothic-std","https://fonts.adobe.com/fonts/heisei-kaku-gothic-stdn","https://fonts.adobe.com/fonts/heisei-maru-gothic-std","https://fonts.adobe.com/fonts/heisei-mincho-std","https://fonts.adobe.com/fonts/heisei-mincho-stdn","https://fonts.adobe.com/fonts/iroha-32sakura-kana","https://fonts.adobe.com/fonts/kan412typos-std","https://fonts.adobe.com/fonts/kan415typos-std","https://fonts.adobe.com/fonts/kan48typos-std","https://fonts.adobe.com/fonts/kazuraki-sp2n","https://fonts.adobe.com/fonts/kozuka-gothic-pr6n","https://fonts.adobe.com/fonts/kozuka-gothic-pro","https://fonts.adobe.com/fonts/kozuka-mincho-pr6n","https://fonts.adobe.com/fonts/kozuka-mincho-pro","https://fonts.adobe.com/fonts/noto-sans-cjk-jp","https://fonts.adobe.com/fonts/ro-brush-std","https://fonts.adobe.com/fonts/ro-nikkatsu-sei-kai-std","https://fonts.adobe.com/fonts/ro-san-std","https://fonts.adobe.com/fonts/ro-shino-std","https://fonts.adobe.com/fonts/ryo-display-plusn","https://fonts.adobe.com/fonts/ryo-gothic-plusn","https://fonts.adobe.com/fonts/ryo-text-plusn","https://fonts.adobe.com/fonts/source-han-sans-cjk-japanese","https://fonts.adobe.com/fonts/source-han-sans-japanese","https://fonts.adobe.com/fonts/source-han-serif-japanese","https://fonts.adobe.com/fonts/ta-candy","https://fonts.adobe.com/fonts/ta-f1blockline","https://fonts.adobe.com/fonts/ta-houdate-m500","https://fonts.adobe.com/fonts/ta-hougan-k500","https://fonts.adobe.com/fonts/ta-kai","https://fonts.adobe.com/fonts/ta-kotodama","https://fonts.adobe.com/fonts/ta-kouran","https://fonts.adobe.com/fonts/ta-rb","https://fonts.adobe.com/fonts/tbcgothic-std","https://fonts.adobe.com/fonts/tbchibirgothicplusk-pro","https://fonts.adobe.com/fonts/tbcinergothic-std","https://fonts.adobe.com/fonts/tbnpgothic-std","https://fonts.adobe.com/fonts/tbnpmincho-std","https://fonts.adobe.com/fonts/tbudgothic-std","https://fonts.adobe.com/fonts/tbudmincho-std","https://fonts.adobe.com/fonts/tbudrgothic-std","https://fonts.adobe.com/fonts/ten-mincho","https://fonts.adobe.com/fonts/ten-mincho-text","https://fonts.adobe.com/fonts/toppan-bunkyu-gothic-pr6n","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-go-std","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-go-stdn","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-min-std","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-min-stdn","https://fonts.adobe.com/fonts/toppan-bunkyu-mincho-pr6n","https://fonts.adobe.com/fonts/vdl-admin","https://fonts.adobe.com/fonts/vdl-gigag","https://fonts.adobe.com/fonts/vdl-gigajr","https://fonts.adobe.com/fonts/vdl-gigamaru","https://fonts.adobe.com/fonts/vdl-gigamarujr","https://fonts.adobe.com/fonts/vdl-kyosensya","https://fonts.adobe.com/fonts/vdl-lineg","https://fonts.adobe.com/fonts/vdl-linegr","https://fonts.adobe.com/fonts/vdl-logog","https://fonts.adobe.com/fonts/vdl-logojr","https://fonts.adobe.com/fonts/vdl-logojrblack","https://fonts.adobe.com/fonts/vdl-logomaru","https://fonts.adobe.com/fonts/vdl-logomaru-jr","https://fonts.adobe.com/fonts/vdl-logona","https://fonts.adobe.com/fonts/vdl-megag","https://fonts.adobe.com/fonts/vdl-megamaru","https://fonts.adobe.com/fonts/vdl-pengentle","https://fonts.adobe.com/fonts/vdl-penlady","https://fonts.adobe.com/fonts/vdl-petag","https://fonts.adobe.com/fonts/vdl-terag","https://fonts.adobe.com/fonts/vdl-v7gothic","https://fonts.adobe.com/fonts/vdl-v7marugothic","https://fonts.adobe.com/fonts/vdl-v7mincho","https://fonts.adobe.com/fonts/vdl-yotag","https://fonts.adobe.com/fonts/yu-minchotai-36-pt-kana-r-2nd-ed","https://fonts.adobe.com/fonts/yu-minchotai-5-go-kana-r-2nd-ed","https://fonts.adobe.com/fonts/yu-minchotai-pr6-r","https://fonts.adobe.com/fonts/yu-minchotai-pr6n-r"]}
--------------------------------------------------------------------------------
/src/fonts.js:
--------------------------------------------------------------------------------
1 | const puppeteer = require("puppeteer");
2 | const path = require("path");
3 | const getUrls = require("get-urls");
4 | const request = require("request");
5 | const opentype = require("opentype.js");
6 | // const opentype = require("opentype/src/opentype.js");
7 | // const woff2 = require(path.join(__dirname, "woff2", "src", "woff2.js"));
8 | const woff2 = require("wawoff2");
9 | const { zip } = require("zip-a-folder");
10 | const fs = require("fs");
11 | const rimraf = require("rimraf");
12 |
13 | // global stuff...
14 | let fontFamily;
15 | let fontHrefCache = [];
16 |
17 | let fontBrowseUrl = ``;
18 | const browserMode = ["default", "japanese"];
19 |
20 | let fontMetaData = {};
21 |
22 | // scrape outer page for all font links to json
23 | const scrapeForFontLinks = async (link) => {
24 | const browser = await puppeteer.launch({
25 | headless: true,
26 | args: ["--no-sandbox", "--disable-setuid-sandbox"],
27 | });
28 | const page = await browser.newPage();
29 |
30 | for (browseMode of browserMode) {
31 | let hrefs;
32 | let fontPages;
33 | let unique;
34 | let pageNum = 1;
35 | console.log(browseMode);
36 | fontMetaData[browseMode] = {};
37 |
38 | fontBrowseUrl = `https://fonts.adobe.com/fonts?browse_mode=${browseMode}&page=${pageNum}&sort=alpha`;
39 | await page.goto(fontBrowseUrl);
40 | const fontCount = await page.evaluate(() => {
41 | return document.querySelector("div[data-id='family-count-message']")
42 | .innerText;
43 | });
44 | fontMetaData[browseMode].count = fontCount;
45 | console.log(fontMetaData);
46 |
47 | do {
48 | fontBrowseUrl = `https://fonts.adobe.com/fonts?browse_mode=${browseMode}&page=${pageNum}&sort=alpha`;
49 | await page.goto(fontBrowseUrl);
50 | // all links on page
51 | hrefs = await page.$$eval("a", (as) => as.map((a) => a.href));
52 | // all links to fonts
53 | fontPages = hrefs.filter((href) => {
54 | splitHref = href.split("/");
55 | return splitHref[splitHref.length - 2] == "fonts";
56 | });
57 | // all unique links to fonts
58 | unique = [...new Set(fontPages)];
59 | fontHrefCache = fontHrefCache.concat(unique);
60 | // console.log(fontHrefCache);
61 | console.log("scraped ", unique.length, "fonts");
62 | pageNum++;
63 | } while (unique.length > 0);
64 | }
65 |
66 | await browser.close();
67 |
68 | console.log(
69 | "There are a total of: " +
70 | fontMetaData.default.count +
71 | fontMetaData.japanese.count +
72 | "fonts"
73 | );
74 | console.log("We recorded a total of: " + fontHrefCache.length + "fonts");
75 |
76 | // write font links to json
77 | let temp = { fontArray: fontHrefCache };
78 | const jsonString = JSON.stringify(temp);
79 | fs.writeFileSync(path.join(__dirname, "fontHrefs.json"), jsonString);
80 | };
81 |
82 | const scrapeFonts = async (link) => {
83 | let fontWritten = false;
84 | linkArr = link.split("/");
85 | fontFamily = linkArr[linkArr.length - 1];
86 |
87 | if (fs.existsSync(path.join(__dirname, "zips", fontFamily + ".zip"))) {
88 | console.log(fontFamily, "exists! \nSkipping...");
89 | return true;
90 | }
91 |
92 | const browser = await puppeteer.launch({
93 | headless: true,
94 | args: ["--no-sandbox", "--disable-setuid-sandbox"],
95 | });
96 | const page = await browser.newPage();
97 | // scrape fonts from font link here
98 | await page.goto(link);
99 |
100 | // Executing code in the DOM
101 | const fonts = await page.evaluate(() => {
102 | let temp = window.Typekit.fonts.fonts;
103 | let fonts = [];
104 | temp.forEach((font) => {
105 | fonts.push({ family: font.w.family, source: font.source });
106 | });
107 |
108 | return fonts;
109 | });
110 | await browser.close();
111 |
112 | const formattedFontArr = parseFonts(fonts);
113 | while (!fontWritten) {
114 | try {
115 | fontWritten = await writeFonts(formattedFontArr);
116 | } catch (err) {
117 | await writeFonts(formattedFontArr);
118 | fontWritten = true;
119 | console.log("uh-oh");
120 | console.log(err);
121 | }
122 | }
123 | };
124 |
125 | // Filters out adobe fonts and returns an array with links to WOFF2 fonts
126 | const parseFonts = (fonts) => {
127 | const filteredFonts = fonts.filter((font) => {
128 | return !font.family.includes("adobe");
129 | });
130 | const fontURLs = filteredFonts.map((font) => {
131 | return { family: font.family, source: Array.from(getUrls(font.source))[0] };
132 | });
133 | return fontURLs;
134 | };
135 |
136 | // Write and convert WOFF2 to TTF fonts to file
137 | const writeFonts = async (fonts) => {
138 | rimraf.sync(path.join(__dirname, "temp"));
139 | fs.mkdirSync(path.join(__dirname, "temp"));
140 | for (url of fonts) {
141 | await new Promise((resolve) =>
142 | request(url.source)
143 | .pipe(fs.createWriteStream(path.join(__dirname, "out.woff2")))
144 | .on("finish", () => {
145 | resolve();
146 | })
147 | );
148 | let buffer = fs.readFileSync(path.join(__dirname, "out.woff2"));
149 | let ttfBuffer = await woff2.decompress(buffer);
150 | // let ttfBuffer = woff2.decode(buffer);
151 | fs.writeFileSync(path.join(__dirname, "out.ttf"), ttfBuffer);
152 | // Opentype can ONLY parse TTFs, not WOFF2s
153 | let metadata = opentype.loadSync(path.join(__dirname, "out.ttf")).names;
154 | fs.writeFileSync(
155 | path.join(__dirname, "temp", metadata.postScriptName.en + ".ttf"),
156 | ttfBuffer
157 | );
158 | }
159 | await zip(
160 | path.join(__dirname, "temp"),
161 | path.join(__dirname, "zips", fontFamily + ".zip")
162 | );
163 |
164 | console.log(fontFamily, "scraped and zipped");
165 | return true;
166 | };
167 |
168 | // scrapeFonts("https://fonts.adobe.com/fonts/fira-sans");
169 |
170 | // run one time only, scrapes all the font links from adobe. This will generate a fontHrefs.json
171 |
172 | // await scrapeForFontLinks("https://fonts.adobe.com/fonts?browse_mode=default");
173 | // const scrapedFontLinks = fs.readFileSync("fontHrefs.json");
174 | // let fontArray = JSON.parse(scrapedFontLinks).fontArray;
175 | // (async () => {
176 | // try {
177 | // for (href of fontArray) {
178 | // await scrapeFonts(href);
179 | // }
180 | // } catch (e) {
181 | // console.log(e);
182 | // }
183 | // })();
184 |
185 | //////////////////////////
186 |
187 | module.exports = scrapeFonts;
188 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | const scrapeFonts = require("./fonts.js");
2 |
3 | const express = require("express");
4 | const rateLimit = require("express-rate-limit");
5 | const Redis = require("ioredis");
6 | const helmet = require("helmet");
7 | const path = require("path");
8 |
9 | // setup redis
10 |
11 | // express, middleware?
12 | const PORT = process.env.PORT || 8080;
13 | const app = express();
14 |
15 | app.use(helmet());
16 | app.use(express.urlencoded({ extended: false }));
17 | app.use(express.static(path.resolve(__dirname, "..", "public")));
18 |
19 | // Rate limiting: 30 requests / 1 min
20 | app.set("trust proxy", 1);
21 | app.use(
22 | rateLimit({
23 | windowMs: 60 * 1000,
24 | max: 30,
25 | })
26 | );
27 |
28 | // app.get("/", async (req, res) => {
29 | // let fontLink = "https://fonts.adobe.com/fonts/azo-sans";
30 | // res.send("Hello World!");
31 | // });
32 |
33 | app.post("/", async (req, res) => {
34 | let { fontUrl } = req.body;
35 | let linkArr = fontUrl.split("/");
36 | let fontFamily = linkArr[linkArr.length - 1];
37 |
38 | try {
39 | await scrapeFonts(fontUrl);
40 | res.download(
41 | path.join(__dirname, "zips", fontFamily + ".zip"),
42 | fontFamily + ".zip"
43 | );
44 | } catch (err) {
45 | console.log(err);
46 | res.json({
47 | error: err,
48 | message:
49 | "Oops! Looks like something went wrong... Try getting the font again.",
50 | });
51 | }
52 |
53 | console.log("font downloaded");
54 | });
55 |
56 | console.log(`[i] Server listening on port: ${PORT}`);
57 | app.listen(PORT);
58 |
--------------------------------------------------------------------------------
/src/temp/placeholder.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chiumax/adobe-font-scraper/c62a4436f2cbeb9ec9469fb368ca3bda79b54f8e/src/temp/placeholder.txt
--------------------------------------------------------------------------------
/src/zips/placeholder.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chiumax/adobe-font-scraper/c62a4436f2cbeb9ec9469fb368ca3bda79b54f8e/src/zips/placeholder.txt
--------------------------------------------------------------------------------