├── src ├── fontkit.js ├── assets │ ├── arrow-white.svg │ └── arrow-black.svg ├── data.js ├── OTmapping.js ├── style.css └── script.js ├── dist ├── 192_maskable.png ├── favicon.svg ├── manifest.json └── style.css ├── screenshots ├── dark.png ├── light.png └── mobile.png ├── fonts └── Recursive_VF_1.078.woff2 ├── .gitignore ├── README.md ├── package.json ├── LICENSE ├── sw.js ├── index.html └── yarn.lock /src/fontkit.js: -------------------------------------------------------------------------------- 1 | global.Buffer = Buffer; 2 | global.fontkit = require("fontkit"); 3 | -------------------------------------------------------------------------------- /dist/192_maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imohanvadivel/variable-font-playground/HEAD/dist/192_maskable.png -------------------------------------------------------------------------------- /screenshots/dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imohanvadivel/variable-font-playground/HEAD/screenshots/dark.png -------------------------------------------------------------------------------- /screenshots/light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imohanvadivel/variable-font-playground/HEAD/screenshots/light.png -------------------------------------------------------------------------------- /screenshots/mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imohanvadivel/variable-font-playground/HEAD/screenshots/mobile.png -------------------------------------------------------------------------------- /fonts/Recursive_VF_1.078.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imohanvadivel/variable-font-playground/HEAD/fonts/Recursive_VF_1.078.woff2 -------------------------------------------------------------------------------- /src/assets/arrow-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/arrow-black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | # dotenv environment variables file 4 | .env 5 | .prettierignore 6 | 7 | # Logs 8 | logs 9 | *.log 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | 15 | # System Files 16 | .DS_Store 17 | Thumbs.db -------------------------------------------------------------------------------- /dist/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # variable-font-playground 2 | 3 | ![Light Mode](https://github.com/imohanvadivel/variable-font-playground/blob/main/screenshots/light.png?raw=true) 4 | 5 | ![Dark Mode](https://github.com/imohanvadivel/variable-font-playground/blob/main/screenshots/dark.png?raw=true) 6 | 7 | ![Responsive](https://github.com/imohanvadivel/variable-font-playground/blob/main/screenshots/mobile.png?raw=true) 8 | -------------------------------------------------------------------------------- /dist/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Font Playground", 3 | "name": "Variable Font Playground", 4 | "icons": [ 5 | { 6 | "src": "./favicon.svg", 7 | "type": "image/svg+xml", 8 | "sizes": "512x512" 9 | }, 10 | { 11 | "src": "./192_maskable.png", 12 | "type": "image/png", 13 | "sizes": "192x192", 14 | "purpose": "any maskable" 15 | } 16 | ], 17 | "start_url": "/projects/font-playground", 18 | "background_color": "#fff", 19 | "display": "standalone", 20 | "scope": "/projects/font-playground", 21 | "theme_color": "#fff", 22 | "description": "Variable font playground" 23 | } 24 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "variable-font-playground", 3 | "repository": "https://github.com/imohanvadivel/variable-font-playground.git", 4 | "author": "Mohan Vadivel ", 5 | "license": "MIT", 6 | "scripts": { 7 | "fontkit": "browserify --insert-globals -t brfs ./src/fontkit.js ./src/script.js -o ./src/main.js", 8 | "build": "yarn fontkit && esbuild script=src/main.js src/style.css --bundle --minify --loader:.svg=dataurl --outdir=dist" 9 | }, 10 | "dependencies": { 11 | "brfs": "^2.0.2", 12 | "fontkit": "^1.8.1", 13 | "grilles": "^1.0.6" 14 | }, 15 | "devDependencies": { 16 | "@types/fontkit": "^1.8.0", 17 | "browserify": "^17.0.0", 18 | "esbuild": "^0.14.23" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Mohan Vadivel 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 | -------------------------------------------------------------------------------- /sw.js: -------------------------------------------------------------------------------- 1 | const version = "font-Playground v1.0"; 2 | 3 | const cacheFiles = [ 4 | "/", 5 | "./dist/script.js", 6 | "./dist/style.css", 7 | "./dist/favicon.svg", 8 | "./fonts/Recursive_VF_1.078.woff2", 9 | ]; 10 | 11 | let channel = new BroadcastChannel("varfont-refresh"); 12 | 13 | addEventListener("install", (installEvent) => { 14 | skipWaiting(); 15 | 16 | installEvent.waitUntil( 17 | caches.open(version).then((GlyphsCache) => { 18 | return GlyphsCache.addAll(cacheFiles); 19 | }) 20 | ); 21 | }); 22 | 23 | addEventListener("activate", (activateEvent) => { 24 | activateEvent.waitUntil( 25 | caches 26 | .keys() 27 | .then((cacheNames) => { 28 | let cacheNameAry = cacheNames.filter((e) => 29 | /font-playground/gi.test(e) 30 | ); 31 | 32 | return Promise.all( 33 | cacheNameAry.map((cacheName) => { 34 | if (cacheName !== version) { 35 | caches.delete(cacheName); 36 | } 37 | }) 38 | ); 39 | }) 40 | .then(() => clients.claim()) 41 | .then(() => channel.postMessage(`refresh`)) 42 | ); 43 | }); 44 | 45 | addEventListener("fetch", (fetchEvent) => { 46 | const request = fetchEvent.request; 47 | fetchEvent.respondWith( 48 | caches.match(request).then((resFromCache) => { 49 | if (resFromCache) return resFromCache; 50 | return fetch(request); 51 | }) 52 | ); 53 | }); 54 | -------------------------------------------------------------------------------- /src/data.js: -------------------------------------------------------------------------------- 1 | let carlSaganQuote = ` 2 | Excerpt From: Carl Sagan. “Pale Blue Dot: A Vision of the Human Future in Space”.

3 | Look again at that dot. That's here. That's home. That's us. On it everyone you love, everyone you know, everyone you ever heard of, every human being who ever was, lived out their lives. The aggregate of our joy and suffering, thousands of confident religions, ideologies, and economic doctrines, every hunter and forager, every hero and coward, every creator and destroyer of civilization, ever king and peasant, every young couple in love, every moth and father, hopeful child, inventor and explorer, every teacher of morals, every corrupt politician, every "superstar,” every "supreme leader," every saint and sinner in the history of our species lived there—on a mote of dust suspended in a sunbeam.

4 | The Earth is a very small stage in a vast cosmic arena. Think of the rivers of blood spilled by all those generals and emperors so that, in glory and triumph, they could become momentary masters of a fraction of a dot. Think of the endless visited by the inhabitants of one corner of this pixel the scarcely distinguishable inhabitants of some other corner, how frequent their misunderstandings, how eager they are to kill one another, how fervent their hatreds.

5 | Our posturings, our imagined self-importance, the delusion that we have some privileged position in the Universe, are challenged by this point of pale light. Our planet is a lonely speck in the great enveloping cosmic dark. In our obscurity, in all this vastness, there is no hint that help will come from elsewhere to save us from ourselves.

6 | The Earth is the only world known so far to harbor life. There is nowhere else, at least in the near future, to which our species could migrate. Visit, yes. Settle, not yet. Like it or not, for the moment the Earth is where we make our stand.

7 | It has been said that astronomy is a humbling and character-building experience. There is perhaps no better demonstration of the folly of human conceits than this distant image of our tiny world. To me, it underscores our responsibility to deal more kindly with one another, and to preserve and cherish the pale blue dot, the only home we've ever known.`; 8 | 9 | let sample = `

10 | I am sure in some years from now you will see new posters with just 11 | white space and four lines in Garamond. 12 |

13 | 14 |

15 | Le point avec le type est que vous ne soyez pas conscient qu'il est 16 | là. Si vous vous souvenez de la forme d'une cuillère avec laquelle 17 | vous venez de manger de la soupe, la cuillère avait une mauvaise 18 | forme. 19 |

20 | 21 |

22 | Typography must often draw attention to itself before it will be 23 | read. Yet in order to be read, it must relinquish the attention it 24 | has drawn. 25 |

26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
89 12/3293,987.00780
45 34/78456.097389
81 90/311,234.3123
81 92/873,231.31928378
51 | 52 |

53 | Si vous vous souvenez de la forme de votre cuillère au déjeuner, 54 | elle doit être de la mauvaise forme. La cuillère et la lettre sont 55 | des outils; l'un pour prendre de la nourriture dans le bol, l'autre 56 | pour retirer des informations de la page ... Quand c'est un bon 57 | design, le lecteur doit se sentir à l'aise car la lettre est à la 58 | fois banale et belle. 59 |

60 | `; 61 | 62 | module.exports = { carlSaganQuote, sample }; 63 | -------------------------------------------------------------------------------- /src/OTmapping.js: -------------------------------------------------------------------------------- 1 | let registered_OT_Tags = { 2 | aalt: "Access All Alternates", 3 | abvf: "Above-base Forms", 4 | abvm: "Above-base Mark Positioning", 5 | abvs: "Above-base Substitutions", 6 | afrc: "Alternative Fractions", 7 | akhn: "Akhands", 8 | blwf: "Below-base Forms", 9 | blwm: "Below-base Mark Positioning", 10 | blws: "Below-base Substitutions", 11 | calt: "Contextual Alternates", 12 | case: "Case-Sensitive Forms", 13 | // ccmp: "Glyph Composition / Decomposition", 14 | ccmp: "Glyph Composition", 15 | cfar: "Conjunct Form After Ro", 16 | chws: "Contextual Half-width Spacing", 17 | cjct: "Conjunct Forms", 18 | clig: "Contextual Ligatures", 19 | cpct: "Centered CJK Punctuation", 20 | cpsp: "Capital Spacing", 21 | cswh: "Contextual Swash", 22 | curs: "Cursive Positioning", 23 | c2pc: "Petite Capitals From Capitals", 24 | c2sc: "Small Capitals From Capitals", 25 | dist: "Distances", 26 | dlig: "Discretionary Ligatures", 27 | dnom: "Denominators", 28 | dtls: "Dotless Forms", 29 | expt: "Expert Forms", 30 | falt: "Final Glyph on Line Alternates", 31 | fin2: "Terminal Forms #2", 32 | fin3: "Terminal Forms #3", 33 | fina: "Terminal Forms", 34 | flac: "Flattened accent forms", 35 | frac: "Fractions", 36 | fwid: "Full Widths", 37 | half: "Half Forms", 38 | haln: "Halant Forms", 39 | halt: "Alternate Half Widths", 40 | hist: "Historical Forms", 41 | hkna: "Horizontal Kana Alternates", 42 | hlig: "Historical Ligatures", 43 | hngl: "Hangul", 44 | hojo: "Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms)", 45 | hwid: "Half Widths", 46 | init: "Initial Forms", 47 | isol: "Isolated Forms", 48 | ital: "Italics", 49 | jalt: "Justification Alternates", 50 | jp78: "JIS78 Forms", 51 | jp83: "JIS83 Forms", 52 | jp90: "JIS90 Forms", 53 | jp04: "JIS2004 Forms", 54 | kern: "Kerning", 55 | lfbd: "Left Bounds", 56 | liga: "Standard Ligatures", 57 | ljmo: "Leading Jamo Forms", 58 | lnum: "Lining Figures", 59 | locl: "Localized Forms", 60 | ltra: "Left-to-right alternates", 61 | ltrm: "Left-to-right mirrored forms", 62 | mark: "Mark Positioning", 63 | med2: "Medial Forms #2", 64 | medi: "Medial Forms", 65 | mgrk: "Mathematical Greek", 66 | mkmk: "Mark to Mark Positioning", 67 | mset: "Mark Positioning via Substitution", 68 | nalt: "Alternate Annotation Forms", 69 | nlck: "NLC Kanji Forms", 70 | nukt: "Nukta Forms", 71 | numr: "Numerators", 72 | onum: "Oldstyle Figures", 73 | opbd: "Optical Bounds", 74 | ordn: "Ordinals", 75 | ornm: "Ornaments", 76 | palt: "Proportional Alternate Widths", 77 | pcap: "Petite Capitals", 78 | pkna: "Proportional Kana", 79 | pnum: "Proportional Figures", 80 | pref: "Pre-Base Forms", 81 | pres: "Pre-base Substitutions", 82 | pstf: "Post-base Forms", 83 | psts: "Post-base Substitutions", 84 | pwid: "Proportional Widths", 85 | qwid: "Quarter Widths", 86 | rand: "Randomize", 87 | rclt: "Required Contextual Alternates", 88 | rkrf: "Rakar Forms", 89 | rlig: "Required Ligatures", 90 | rphf: "Reph Forms", 91 | rtbd: "Right Bounds", 92 | rtla: "Right-to-left alternates", 93 | rtlm: "Right-to-left mirrored forms", 94 | ruby: "Ruby Notation Forms", 95 | rvrn: "Required Variation Alternates", 96 | salt: "Stylistic Alternates", 97 | sinf: "Scientific Inferiors", 98 | size: "Optical size", 99 | smcp: "Small Capitals", 100 | smpl: "Simplified Forms", 101 | ss01: "Stylistic Set 1", 102 | ss02: "Stylistic Set 2", 103 | ss03: "Stylistic Set 3", 104 | ss04: "Stylistic Set 4", 105 | ss05: "Stylistic Set 5", 106 | ss06: "Stylistic Set 6", 107 | ss07: "Stylistic Set 7", 108 | ss08: "Stylistic Set 8", 109 | ss09: "Stylistic Set 9", 110 | ss10: "Stylistic Set 10", 111 | ss11: "Stylistic Set 11", 112 | ss12: "Stylistic Set 12", 113 | ss13: "Stylistic Set 13", 114 | ss14: "Stylistic Set 14", 115 | ss15: "Stylistic Set 15", 116 | ss16: "Stylistic Set 16", 117 | ss17: "Stylistic Set 17", 118 | ss18: "Stylistic Set 18", 119 | ss19: "Stylistic Set 19", 120 | ss20: "Stylistic Set 20", 121 | ssty: "Math script style alternates", 122 | stch: "Stretching Glyph Decomposition", 123 | subs: "Subscript", 124 | sups: "Superscript", 125 | swsh: "Swash", 126 | titl: "Titling", 127 | tjmo: "Trailing Jamo Forms", 128 | tnam: "Traditional Name Forms", 129 | tnum: "Tabular Figures", 130 | trad: "Traditional Forms", 131 | twid: "Third Widths", 132 | unic: "Unicase", 133 | valt: "Alternate Vertical Metrics", 134 | vatu: "Vattu Variants", 135 | vchw: "Vertical Contextual Half-width Spacing", 136 | vert: "Vertical Writing", 137 | vhal: "Alternate Vertical Half Metrics", 138 | vjmo: "Vowel Jamo Forms", 139 | vkna: "Vertical Kana Alternates", 140 | vkrn: "Vertical Kerning", 141 | vpal: "Proportional Alternate Vertical Metrics", 142 | vrt2: "Vertical Alternates and Rotation", 143 | vrtr: "Vertical Alternates for Rotation", 144 | zero: "Slashed Zero", 145 | }; 146 | 147 | module.exports = registered_OT_Tags; 148 | -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | @import 'grilles/grille.css'; 2 | 3 | :root { 4 | --baseSansFontSize: 12; 5 | } 6 | 7 | body { 8 | padding: 0; 9 | overflow: hidden; 10 | height: 100vh; 11 | position: relative; 12 | 13 | } 14 | 15 | main { 16 | display: grid; 17 | grid-template-columns: minmax(0, 1fr) 25rem; 18 | overflow: hidden; 19 | height: 100%; 20 | } 21 | main.loading { 22 | filter: blur(5px); 23 | } 24 | 25 | table{ 26 | margin: 2rem 0; 27 | } 28 | 29 | .loader { 30 | position: absolute; 31 | left: 0; 32 | right: 0; 33 | bottom: 0; 34 | top: 0; 35 | display: flex; 36 | flex-direction: column; 37 | align-items: center; 38 | justify-content: center; 39 | color: var(--foregroundColor); 40 | z-index: 10; 41 | background: radial-gradient(var(--backgroundColor), transparent); 42 | } 43 | 44 | .loader h1 { 45 | padding-bottom: calc(var(--baseUnit) * 3); 46 | animation: loader 1.5s ease-in-out 0s infinite alternate; 47 | } 48 | 49 | .loader q { 50 | font-size: 2rem; 51 | font-weight: 450; 52 | letter-spacing: -0.02em; 53 | } 54 | 55 | .matthew { 56 | font-style: normal; 57 | text-transform: uppercase; 58 | letter-spacing: 0.1em; 59 | font-size: 1.5rem; 60 | font-weight: 700; 61 | } 62 | 63 | @keyframes loader { 64 | 0% { 65 | font-weight: 100; 66 | } 67 | 100% { 68 | font-weight: 900; 69 | } 70 | } 71 | 72 | @media only screen and (max-width: 600px) { 73 | .loader h1 { 74 | font-size: 3rem; 75 | } 76 | .loader q { 77 | font-size: 1.6rem; 78 | } 79 | .matthew { 80 | font-size: 1.3rem; 81 | } 82 | } 83 | 84 | body.drag-over { 85 | background: rgba(var(--green-rgb), 0.1); 86 | border: 0.4166666667rem solid var(--green); 87 | } 88 | 89 | .file-input input[type="file"] { 90 | display: none; 91 | } 92 | 93 | .add-font { 94 | display: none; 95 | padding-right: var(--baseUnit); 96 | cursor: pointer; 97 | } 98 | 99 | .lhs { 100 | margin: calc(var(--baseUnit) * 2); 101 | margin-bottom: 0; 102 | overflow: hidden; 103 | display: flex; 104 | flex-direction: column; 105 | } 106 | 107 | .rhs { 108 | border-left: 0.08333333333rem solid rgba(var(--foregroundColor-rgb), 0.08); 109 | padding: calc(var(--baseUnit) * 2) var(--baseUnit) var(--baseUnit); 110 | overflow-y: scroll; 111 | display: flex; 112 | flex-direction: column; 113 | height: 100vh; 114 | } 115 | 116 | .lhs header, 117 | ul li, 118 | .right-side, 119 | #dark-mode { 120 | display: flex; 121 | align-items: center; 122 | } 123 | 124 | .lhs header { 125 | position: sticky; 126 | top: 0; 127 | background: var(--backgroundColor); 128 | padding-bottom: var(--baseline); 129 | } 130 | 131 | .lhs .right-side { 132 | margin-left: auto; 133 | } 134 | 135 | .test-area { 136 | font-size: 32px; 137 | line-height: 1.5; 138 | letter-spacing: 0; 139 | padding-top: calc(var(--baseUnit) * 2); 140 | border: none; 141 | outline: none; 142 | width: 100%; 143 | background-color: transparent; 144 | color: var(--forgroundColor); 145 | resize: none; 146 | flex: 1 1 0; 147 | overflow-y: scroll; 148 | padding-bottom: calc(var(--baseUnit) * 4); 149 | } 150 | .test-area::after { 151 | content: ""; 152 | height: calc(var(--baseUnit) * 2); 153 | } 154 | 155 | .drag-over .lhs header { 156 | background: transparent; 157 | } 158 | 159 | #dark-mode { 160 | cursor: pointer; 161 | } 162 | 163 | .content-type li { 164 | opacity: 0.3; 165 | padding-right: var(--baseUnit); 166 | font-size: 1.1666666667rem; 167 | font-weight: 500; 168 | cursor: pointer; 169 | } 170 | .text-align li { 171 | cursor: pointer; 172 | } 173 | 174 | .text-align svg, 175 | .github svg { 176 | width: 1.6666666667rem; 177 | height: 1.6666666667rem; 178 | } 179 | 180 | #dark-mode svg { 181 | width: 1.8333333333rem; 182 | height: 1.8333333333rem; 183 | } 184 | 185 | header ul { 186 | margin-bottom: 0; 187 | } 188 | 189 | .text-align { 190 | margin-left: var(--baseline); 191 | } 192 | 193 | .text-align li { 194 | padding-right: var(--baseline); 195 | } 196 | .text-align li:last-child { 197 | padding-right: var(--baseUnit); 198 | } 199 | 200 | .text-align svg path { 201 | fill: rgba(var(--foregroundColor-rgb), 0.3); 202 | } 203 | .text-align .active svg path, 204 | .text-align svg:hover path { 205 | fill: var(--foregroundColor); 206 | } 207 | 208 | .drag-drop { 209 | margin-bottom: 0; 210 | padding-right: var(--baseUnit); 211 | user-select: none; 212 | -webkit-user-select: none; 213 | } 214 | 215 | .seperator { 216 | display: none; 217 | background-color: var(--backgroundColor); 218 | filter: brightness(0.95); 219 | align-items: center; 220 | justify-content: center; 221 | height: 1.4rem; 222 | cursor: ns-resize; 223 | } 224 | 225 | .dark .seperator { 226 | filter: brightness(0.6); 227 | } 228 | 229 | .seperator .handle { 230 | width: 3rem; 231 | background-color: var(--backgroundColor); 232 | filter: brightness(0.6); 233 | height: 0.7rem; 234 | border-radius: 1rem; 235 | } 236 | 237 | .dark .seperator .handle { 238 | filter: brightness(4); 239 | } 240 | 241 | @media only screen and (max-width: 825px) { 242 | .lhs { 243 | margin: var(--baseUnit); 244 | } 245 | .drag-drop { 246 | display: none; 247 | } 248 | .add-font { 249 | display: block; 250 | } 251 | } 252 | 253 | @media only screen and (max-width: 720px) { 254 | main { 255 | --row1: 60vh; 256 | grid-template-columns: 1fr; 257 | grid-template-rows: var(--row1) auto auto; 258 | } 259 | .lhs, 260 | .rhs { 261 | margin: 0; 262 | padding: var(--baseUnit); 263 | height: 100%; 264 | overflow-x: hidden; 265 | } 266 | .rhs { 267 | border-left: none; 268 | margin-top: var(--baseUnit); 269 | padding-top: 0; 270 | padding-bottom: calc(var(--baseUnit) * 2); 271 | } 272 | .seperator { 273 | display: flex; 274 | } 275 | .test-area { 276 | padding-top: var(--baseUnit); 277 | margin: 0; 278 | } 279 | } 280 | 281 | .p-short { 282 | display: none; 283 | } 284 | 285 | @media only screen and (max-width: 415px) { 286 | .p-long { 287 | display: none; 288 | } 289 | .p-short { 290 | display: block; 291 | } 292 | } 293 | 294 | /* Type Detail 295 | ============================================ */ 296 | 297 | .dark input[type="number"]::-webkit-inner-spin-button { 298 | opacity: 0.4; 299 | } 300 | 301 | h5 { 302 | margin-bottom: var(--baseline); 303 | } 304 | 305 | .rows { 306 | display: grid; 307 | grid-template-columns: auto 1fr; 308 | column-gap: var(--baseUnit); 309 | row-gap: var(--baseline); 310 | margin-bottom: var(--baseline); 311 | /* align-items: center; */ 312 | } 313 | 314 | .type-detail .rows .val { 315 | opacity: 0.5; 316 | align-self: flex-end; 317 | } 318 | 319 | .rows > div, 320 | .rows-3 > div { 321 | display: contents; 322 | } 323 | 324 | .content-type li.active, 325 | .content-type li:hover { 326 | opacity: 1; 327 | } 328 | 329 | input[type="range"] { 330 | position: relative; 331 | -webkit-appearance: none; 332 | -moz-appearance: none; 333 | appearance: none; 334 | width: 100%; 335 | outline: none; 336 | background: transparent; 337 | z-index: 1; 338 | margin-right: -0.1666666667rem; 339 | } 340 | input[type="range"]::-webkit-slider-thumb { 341 | -webkit-appearance: none; 342 | appearance: none; 343 | border: 0.1666666667rem solid var(--foregroundColor); 344 | background-color: var(--backgroundColor); 345 | border-radius: 50%; 346 | height: 1rem; 347 | width: 1rem; 348 | cursor: pointer; 349 | /* margin-top: -0.1666666667rem; */ 350 | } 351 | input[type="range"]::-webkit-slider-thumb:hover { 352 | background-color: var(--foregroundColor); 353 | } 354 | 355 | input[type="range"].animating::-webkit-slider-thumb { 356 | background-color: var(--foregroundColor); 357 | cursor: auto; 358 | } 359 | 360 | input[type="range"]::-moz-range-thumb:hover { 361 | background-color: var(--foregroundColor); 362 | } 363 | 364 | input[type="range"].animating::--moz-range-thumb { 365 | background-color: var(--foregroundColor); 366 | cursor: auto; 367 | } 368 | 369 | input[type="range"]::-moz-range-thumb { 370 | -moz-appearance: none; 371 | appearance: none; 372 | border: 0.1666666667rem solid var(--foregroundColor); 373 | width: 0.6666666667rem; 374 | height: 0.6666666667rem; 375 | border-radius: 50%; 376 | background-color: var(--backgroundColor); 377 | cursor: pointer; 378 | } 379 | 380 | input[type="range"]::-webkit-slider-runnable-track { 381 | -webkit-appearance: none; 382 | -moz-appearance: none; 383 | appearance: none; 384 | } 385 | 386 | .slider { 387 | position: relative; 388 | width: 100%; 389 | display: flex; 390 | align-items: center; 391 | } 392 | 393 | .slider:hover::before { 394 | opacity: 1; 395 | } 396 | 397 | .slider::before { 398 | position: absolute; 399 | top: 50%; 400 | right: 0; 401 | left: 0; 402 | content: ""; 403 | height: 0.1666666667rem; 404 | background-color: rgba(var(--foregroundColor-rgb), 0.1); 405 | margin-top: -0.08333333333rem; 406 | margin-left: 0.1666666667rem; 407 | } 408 | 409 | .progress { 410 | position: absolute; 411 | top: 50%; 412 | left: 0; 413 | background-color: var(--foregroundColor); 414 | height: 0.1666666667rem; 415 | margin-top: -0.08333333333rem; 416 | } 417 | 418 | .rows-3 { 419 | display: grid; 420 | grid-template-columns: auto 1fr auto; 421 | column-gap: var(--baseUnit); 422 | row-gap: var(--baseline); 423 | } 424 | 425 | .type-detail .rows-3 { 426 | row-gap: calc(var(--baseline) / 1.8); 427 | } 428 | 429 | .val-input { 430 | width: 3.7rem; 431 | border: 0.08333333333rem solid rgba(var(--foregroundColor-rgb), 0.2); 432 | outline: none; 433 | background-color: transparent; 434 | font-size: 1rem; 435 | color: rgba(var(--foregroundColor-rgb), 0.6); 436 | border-radius: 0.25rem; 437 | } 438 | 439 | .val-input:hover, 440 | .val-input:active, 441 | .val-input:focus { 442 | border: 0.08333333333rem solid rgba(var(--foregroundColor-rgb), 0.8); 443 | } 444 | 445 | /* Variable Axes 446 | ============================================ */ 447 | .variable-axes, 448 | .type-detail { 449 | padding-bottom: calc(var(--baseUnit) * 1.5); 450 | } 451 | .var-axes-set .val { 452 | width: 4ex; 453 | color: rgba(var(--foregroundColor-rgb), 0.6); 454 | } 455 | 456 | .named-variation, 457 | .animation { 458 | display: flex; 459 | align-items: center; 460 | } 461 | 462 | .faux-select { 463 | -webkit-appearance: none; 464 | -moz-appearance: none; 465 | appearance: none; 466 | 467 | white-space: nowrap; 468 | overflow: hidden; 469 | text-overflow: ellipsis; 470 | 471 | grid-column: span 2; 472 | align-self: flex-end; 473 | border-radius: 0.1666666667rem; 474 | border: none; 475 | outline: none; 476 | padding: 0.1666666667rem 1.6666666667rem 0.1666666667rem 0.6666666667rem; 477 | color: var(--foregroundColor); 478 | /* margin-left: 3rem; */ 479 | /* cursor: pointer; */ 480 | 481 | fill: var(--foregroundColor); 482 | 483 | background: rgba(var(--foregroundColor-rgb), 0.05); 484 | background-image: url("./assets/arrow-black.svg"); 485 | background-repeat: no-repeat; 486 | background-position: center right 0.6666666667rem; 487 | } 488 | .dark .faux-select { 489 | background: rgba(var(--foregroundColor-rgb), 0.08); 490 | background-image: url("./assets/arrow-white.svg"); 491 | background-repeat: no-repeat; 492 | background-position: center right 0.6666666667rem; 493 | } 494 | 495 | .variable-axes .animate > * { 496 | margin-top: -0.3rem; 497 | } 498 | 499 | /* Open Type 500 | ============================================ */ 501 | 502 | .open-type .rows { 503 | column-gap: calc(var(--baseUnit) / 3); 504 | } 505 | .open-type input { 506 | min-height: 1rem; 507 | min-width: 1rem; 508 | align-self: center; 509 | margin: 0; 510 | } 511 | 512 | .ot-set .ext { 513 | opacity: 0.6; 514 | margin-left: auto; 515 | } 516 | .ot-set .exlp { 517 | text-transform: capitalize; 518 | user-select: none; 519 | -webkit-user-select: none; 520 | white-space: nowrap; 521 | overflow: hidden; 522 | text-overflow: ellipsis; 523 | padding-right: 1rem; 524 | } 525 | 526 | .ot-set { 527 | display: flex; 528 | align-items: center; 529 | margin: 0 calc(-1 * var(--baseUnit)); 530 | padding: calc(var(--baseline) / 2) var(--baseUnit); 531 | } 532 | 533 | .ot-set:hover { 534 | background-color: rgba(var(--foregroundColor-rgb), 0.03); 535 | } 536 | 537 | .faux-checkbox { 538 | position: relative; 539 | height: 1.2rem; 540 | width: 1.2rem; 541 | margin-right: var(--baseline); 542 | } 543 | .faux-checkbox input { 544 | opacity: 0; 545 | } 546 | .faux-checkbox span { 547 | position: absolute; 548 | left: 0; 549 | right: 0; 550 | top: 0; 551 | bottom: 0; 552 | border-radius: 0.1666666667rem; 553 | pointer-events: none; 554 | border: 1px solid rgba(var(--foregroundColor-rgb), 0.3); 555 | } 556 | .faux-checkbox span::after { 557 | content: ""; 558 | position: absolute; 559 | display: none; 560 | border: solid white; 561 | border-width: 0 0.1666666667rem 0.1666666667rem 0; 562 | -webkit-transform: rotate(45deg); 563 | -ms-transform: rotate(45deg); 564 | transform: rotate(45deg); 565 | width: 0.25rem; 566 | height: 0.5833333333rem; 567 | left: 0.3333333333rem; 568 | top: 0.05rem; 569 | } 570 | 571 | .faux-checkbox input:checked ~ span { 572 | background: var(--blue); 573 | } 574 | .faux-checkbox input:checked ~ span::after { 575 | display: block; 576 | } 577 | 578 | @media only screen and (max-width: 720px) { 579 | .rhs h5 { 580 | padding-bottom: calc(var(--baseUnit) / 1.5); 581 | } 582 | 583 | .rows, 584 | .rows-3 { 585 | row-gap: var(--baseUnit); 586 | margin-bottom: var(--baseUnit); 587 | } 588 | 589 | .type-detail .rows-3 { 590 | row-gap: calc(var(--baseUnit) / 1.3); 591 | } 592 | .faux-select { 593 | margin-left: 4rem; 594 | } 595 | .ot-set { 596 | padding: calc(var(--baseUnit) / 2) var(--baseUnit); 597 | } 598 | } 599 | 600 | /* Footer 601 | ============================================ */ 602 | 603 | footer { 604 | padding-top: calc(var(--baseUnit) * 2); 605 | display: flex; 606 | align-items: center; 607 | margin-top: auto; 608 | } 609 | 610 | footer .github { 611 | margin-left: auto; 612 | display: flex; 613 | align-items: center; 614 | opacity: 0.4; 615 | } 616 | footer .twitter, 617 | footer .github { 618 | opacity: 0.4; 619 | } 620 | footer .twitter:hover, 621 | footer .github:hover { 622 | opacity: 1; 623 | } 624 | 625 | /* Toast ----------------- */ 626 | .toast { 627 | display: flex; 628 | justify-content: center; 629 | width: 100vw; 630 | position: absolute; 631 | bottom: 0; 632 | } 633 | 634 | .toast .msg { 635 | pointer-events: none; 636 | height: 2.2857142857rem; 637 | align-items: center; 638 | padding: 0 1.1428571429rem; 639 | background: #191919; 640 | border-radius: 4px; 641 | color: #fff; 642 | display: flex; 643 | opacity: 0.1; 644 | position: fixed; 645 | bottom: calc(var(--baseUnit) * 0.75); 646 | transition: 250ms all ease-in; 647 | transform: translate3d(0, 80px, 0); 648 | transition: 120ms all cubic-bezier(0.2, 0, 1, 0.9); 649 | } 650 | .dark .toast .msg { 651 | background: #2e2e2e; 652 | } 653 | .toast.active .msg { 654 | /* display: flex; */ 655 | bottom: calc(var(--baseUnit) * 1); 656 | transform: translate3d(0, 0, 0); 657 | opacity: 1; 658 | } 659 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Font Playground 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 26 | 27 |
28 |
29 |
30 |
    31 |
  • Sample
  • 32 |
  • Paragraph
  • 33 |
  • Para
  • 34 |
35 |
    36 |
  • 37 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
  • 49 |
  • 50 | 55 | 56 | 57 | 58 | 59 | 60 |
  • 61 |
  • 62 | 67 | 68 | 69 | 70 | 71 | 72 |
  • 73 |
  • 74 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |
  • 86 |
87 |
88 |
89 | Add Font 90 | 91 |
92 |

Drag & drop in the font file

93 |
94 | 99 | 103 | 107 | 111 | 115 | 119 | 123 | 127 | 131 | 135 | 136 |
137 |
138 |
139 |
146 |

147 | I am sure in some years from now you will see new posters with just 148 | white space and four lines in Garamond. 149 |

150 | 151 |

152 | Le point avec le type est que vous ne soyez pas conscient qu'il est 153 | là. Si vous vous souvenez de la forme d'une cuillère avec laquelle 154 | vous venez de manger de la soupe, la cuillère avait une mauvaise 155 | forme. 156 |

157 | 158 |

159 | Typography must often draw attention to itself before it will be 160 | read. Yet in order to be read, it must relinquish the attention it 161 | has drawn. 162 |

163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 |
89 12/3293,987.00780
45 34/78456.097389
81 90/311,234.3123
81 92/873,231.31928378
188 | 189 |

190 | Si vous vous souvenez de la forme de votre cuillère au déjeuner, 191 | elle doit être de la mauvaise forme. La cuillère et la lettre sont 192 | des outils; l'un pour prendre de la nourriture dans le bol, l'autre 193 | pour retirer des informations de la page ... Quand c'est un bon 194 | design, le lecteur doit se sentir à l'aise car la lettre est à la 195 | fois banale et belle. 196 |

197 |
198 |
199 |
200 |
 
201 |
202 |
203 | 204 |
205 |
Type Details
206 |
207 |
208 | Full Name 209 | Recursive Sans 210 |
211 |
Designer Arrow Type
212 |
Version 1.078
213 |
214 |
215 |
216 | Font Size 217 |
218 | 219 |
220 |
221 | 230 |
231 |
232 | Line Height 233 |
234 | 235 |
236 |
237 | 245 |
246 |
247 | Letter Spacing 248 |
249 | 250 |
251 |
252 | 260 |
261 |
262 |
263 | 264 |
265 |
Variable Axes
266 |
267 |
268 |
Monospace
269 | 270 | 278 |
279 |
280 | 0 281 |
282 |
283 |
Casual
284 | 285 | 293 |
294 |
295 | 0 296 |
297 |
298 |
Weight
299 | 300 | 308 |
309 |
310 | 300 311 |
312 |
313 |
Slant
314 | 315 | 323 |
324 |
325 | 0 326 |
327 |
328 |
Cursive
329 | 330 | 339 |
340 |
341 | 0.5 342 |
343 |
344 |
Named Variation
345 | 348 |
349 |
350 |
Animate
351 | 354 |
355 |
356 |
357 | 358 |
359 |
OpenType Features
360 |
361 |
362 | 363 | 364 |
365 | 366 | 367 | aalt 368 |
369 | 370 |
371 |
372 | 373 | 374 |
375 | 376 | 377 | afrc 378 |
379 | 380 |
381 |
382 | 383 | 384 |
385 | 386 | 387 | case 388 |
389 | 390 |
391 |
392 | 393 | 394 |
395 | 396 | 397 | ccmp 398 |
399 | 400 |
401 |
402 | 403 | 404 |
405 | 406 | 407 | dlig 408 |
409 | 410 |
411 |
412 | 413 | 414 |
415 | 416 | 417 | dnom 418 |
419 | 420 |
421 |
422 | 423 | 424 |
425 | 426 | 427 | frac 428 |
429 | 430 |
431 |
432 | 433 | 434 |
435 | 436 | liga 437 |
438 | 439 |
440 |
441 | 442 | 443 |
444 | 445 | 446 | numr 447 |
448 | 449 |
450 |
451 | 452 | 453 |
454 | 455 | 456 | ordn 457 |
458 |
459 | 489 |
490 |
491 |
492 |
493 |
494 |
495 |

Loading playground

496 | 497 |

498 | “Type is a beautiful group of letters,
499 | not a group of beautiful letters” 500 |

501 | Matthew Carter 502 |
503 |
504 | 505 | 506 | 507 | 512 | 513 | -------------------------------------------------------------------------------- /src/script.js: -------------------------------------------------------------------------------- 1 | /* 2 | ============================================================================= 3 | MIT License 4 | 5 | Copyright (c) 2021 Mohan Vadivel 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | ============================================================================= 25 | */ 26 | const OTData = require("./OTmapping"); 27 | const sampleData = require("./data"); 28 | 29 | (function () { 30 | // Helper function for querySelectors 31 | function $(a, b = document) { 32 | return b.querySelector(a); 33 | } 34 | function $all(a, b = document) { 35 | return [...b.querySelectorAll(a)]; 36 | } 37 | 38 | function vibrate(n) { 39 | if (navigator.vibrate) navigator.vibrate(n); 40 | } 41 | 42 | function toastMessage(msg, time) { 43 | $(".toast").classList.add("active"); 44 | $(".toast .msg").innerHTML = msg; 45 | let delay = time || 2500; 46 | setTimeout(() => $(".toast").classList.remove("active"), delay); 47 | } 48 | 49 | let source, 50 | font, 51 | fullName, 52 | family, 53 | designer, 54 | version, 55 | variableAxes, 56 | namedVariation, 57 | OTfeatures, 58 | isDefaultFontLoaded = false; 59 | (fontSize = 32), (lineHeight = 1.5), (letterSpacing = 0); 60 | let testArea = $(".test-area"); 61 | let axesCurrentlyAnimating = []; 62 | 63 | // Handling Text alignment 64 | $(".text-align").onclick = (e) => { 65 | vibrate(3); 66 | $("li.active", $(".text-align")).classList.remove("active"); 67 | let li = e.target.closest("li"); 68 | let alignType = li.getAttribute("data-align"); 69 | li.classList.add("active"); 70 | testArea.style.textAlign = alignType; 71 | }; 72 | 73 | // Handling sample data insertion: sample & paragraph 74 | $(".content-type").onclick = (e) => { 75 | vibrate(3); 76 | $("li.active", $(".content-type")).classList.remove("active"); 77 | let li = e.target.closest("li"); 78 | li.classList.add("active"); 79 | let type = li.innerHTML; 80 | if (type == "Paragraph" || type == "Para") { 81 | testArea.innerHTML = sampleData.carlSaganQuote; 82 | } else { 83 | testArea.innerHTML = sampleData.sample; 84 | } 85 | }; 86 | 87 | // Handling font file input for small screens 88 | $(".add-font").onclick = () => $(`input[type="file"]`).click(); 89 | 90 | // Default font loading 91 | function loadDefaultFont() { 92 | let xhr = new XMLHttpRequest(); 93 | xhr.open("GET", "./fonts/Recursive_VF_1.078.woff2"); 94 | xhr.responseType = "arraybuffer"; 95 | 96 | xhr.onload = function (e) { 97 | if (xhr.status == 200) { 98 | source = Buffer.from(xhr.response); 99 | font = fontkit.create(source); 100 | setFontProps(font); 101 | fullName = "Recursive Sans"; 102 | designer = "Arrow Type"; 103 | } 104 | }; 105 | 106 | xhr.send(); 107 | } 108 | 109 | // Listening for Font Input 110 | (function listen2FontInput() { 111 | $(`input[type="file"]`).addEventListener("change", (event) => 112 | parseFont(event.target.files[0]) 113 | ); 114 | 115 | document.ondragover = (event) => { 116 | event.preventDefault(); 117 | event.stopPropagation(); 118 | $("body").classList.add("drag-over"); 119 | $(".lhs").scrollTop = 0; 120 | }; 121 | 122 | document.ondragleave = (event) => { 123 | event.preventDefault(); 124 | event.stopPropagation(); 125 | $("body").classList.remove("drag-over"); 126 | }; 127 | 128 | $("body").ondrop = (event) => { 129 | event.preventDefault(); 130 | event.stopPropagation(); 131 | parseFont(event.dataTransfer.files[0]); 132 | $("body").classList.remove("drag-over"); 133 | initialFontLoaded(); 134 | }; 135 | 136 | function initialFontLoaded() { 137 | let tval = localStorage.getItem("initialFontLoaded"); 138 | if (!tval) { 139 | localStorage.setItem("initialFontLoaded", "true"); 140 | } 141 | document.querySelector(".drag-drop").style.display = "none"; 142 | } 143 | })(); 144 | 145 | // Parsing the fontfile and sets all the global 146 | // font props and adds default value 2 testArea 147 | function parseFont(fontFile) { 148 | let name = fontFile.name; 149 | if (!/.*?.(ttf|otf|woff2|woff|dfont)/.test(name)) { 150 | toastMessage( 151 | `Only  .ttf  .otf  .woff  .woff2  .dfont files are supported` 152 | ); 153 | return; 154 | } 155 | let reader = new FileReader(); 156 | reader.readAsArrayBuffer(fontFile); 157 | reader.onload = () => { 158 | source = reader.result; 159 | 160 | try { 161 | font = fontkit.create(Buffer.from(source)); 162 | } catch (err) { 163 | toastMessage("Unable to read the font file"); 164 | return; 165 | } 166 | setFontProps(font); 167 | 168 | // Error Handling 169 | reader.onerror = () => { 170 | toastMessage("Unable to read the font file"); 171 | return; 172 | }; 173 | }; 174 | } 175 | function setFontProps(font) { 176 | const nameRecord = font.name.records; 177 | 178 | family = "familyName" in font ? font.familyName : `test`; 179 | // Adding "_test" suffix for avoiding collison 180 | if(family !== `Not Available`) family = `${family}_test`; 181 | 182 | fullName = checkData("fullName", nameRecord); 183 | designer = checkData("designer", nameRecord); 184 | version = getVersion(checkData("version", nameRecord)); 185 | 186 | 187 | function checkData(prop, nameRecord) { 188 | if (prop in nameRecord) { 189 | return nameRecord[prop][Object.keys(nameRecord[prop])[0]]; 190 | } else return `Not Available`; 191 | } 192 | 193 | variableAxes = font.variationAxes; 194 | namedVariation = font.namedVariations; 195 | OTfeatures = font.availableFeatures; 196 | 197 | loadFont2Dom(); 198 | 199 | function getVersion(str) { 200 | if (/Version (\d.[\d]{1,4})/.exec(str)) { 201 | return /Version (\d.[\d]{1,4})/.exec(str)[1]; 202 | } else return `Not Available`; 203 | } 204 | } 205 | 206 | async function loadFont2Dom() { 207 | try { 208 | if (isVariableFont) { 209 | if ("wght" in font.variationAxes) { 210 | var minWeight = font.variationAxes["wght"]["min"]; 211 | var maxWeight = font.variationAxes["wght"]["max"]; 212 | var option = { weight: `${minWeight} ${maxWeight}` }; 213 | } else { 214 | var option = {}; 215 | } 216 | 217 | var newFont = new FontFace(`${family}`, source, option); 218 | 219 | setFontVariationSettings(); 220 | setFontFeatureSettings(); 221 | } else { 222 | var newFont = new FontFace(`${family}`, source); 223 | } 224 | await newFont.load(); 225 | document.fonts.add(newFont); 226 | } catch (err) { 227 | toastMessage("Unable to load the font file in DOM"); 228 | return; 229 | } 230 | 231 | updateUI(); 232 | 233 | isDefaultFontLoaded = true; 234 | 235 | console.log(`font family "${family}" loaded`); 236 | testArea.style.fontFamily = `"${family}"`; 237 | 238 | function setFontVariationSettings() { 239 | let axesAry = Object.keys(variableAxes); 240 | let str = axesAry.map((x) => `"${x}" var(--${x})`).join(","); 241 | testArea.style.fontVariationSettings = str; 242 | 243 | // setting Default Value 244 | axesAry.forEach((x) => { 245 | testArea.style.setProperty(`--${x}`, variableAxes[x].default); 246 | }); 247 | } 248 | 249 | function setFontFeatureSettings() { 250 | let str = OTfeatures.map((e) => `"${e}" var(--${e})`).join(","); 251 | testArea.style.fontFeatureSettings = str; 252 | 253 | // Setting initial Value 254 | OTfeatures.forEach((x) => { 255 | if (x == "kern" || x == "rvrn" || x == "liga" || x == "calt") { 256 | testArea.style.setProperty(`--${x}`, 1); 257 | } else { 258 | testArea.style.setProperty(`--${x}`, 0); 259 | } 260 | }); 261 | } 262 | } 263 | 264 | // DOM Insertion 265 | function updateUI() { 266 | // Type Details 267 | updateTypeDetail(); 268 | 269 | // Variable Axes 270 | if (isVariableFont) { 271 | updateVariableAxes(); 272 | } else { 273 | $(".variable-axes").innerHTML = ""; 274 | } 275 | 276 | // OpenType 277 | if (OTfeatures.length) { 278 | updateOpenTypeDetail(); 279 | } else { 280 | $(".open-type").innerHTML = ""; 281 | } 282 | setDefaultValues(); 283 | listen2Inputs(); 284 | 285 | function updateTypeDetail() { 286 | let typeDetail = $(".type-detail"); 287 | typeDetail.innerHTML = ` 288 |
Type Details
289 |
290 |
291 | 292 |
${fullName}
293 |
294 |
295 | 296 |
${designer}
297 |
298 |
299 | Version 300 |
${version}
301 |
302 |
303 | 304 |
305 |
306 | 307 |
308 | 309 |
310 |
311 | 321 |
322 | 323 |
324 | 325 |
326 | 327 |
328 |
329 | 339 |
340 | 341 |
342 | 343 |
344 | 345 |
346 |
347 | 357 |
358 |
359 | `; 360 | } 361 | 362 | function updateVariableAxes() { 363 | let head = `
Variable Axes
`; 364 | 365 | let variableAxesAry = Object.keys(variableAxes); 366 | let body; 367 | if (!variableAxesAry.length) { 368 | body = `

No variable axes are available

`; 369 | } else { 370 | let listAry = variableAxesAry.map((axes) => { 371 | let min = variableAxes[axes].min; 372 | let max = variableAxes[axes].max; 373 | let name = variableAxes[axes].name; 374 | let value = variableAxes[axes].default; 375 | return ` 376 |
377 | 378 | 379 | 387 | 388 |
391 |
392 |
393 | ${value} 394 |
395 | 396 | `; 397 | }); 398 | let list = listAry.join(""); 399 | 400 | let namedVar = Object.keys(namedVariation); 401 | let variation; 402 | 403 | if (namedVar.length) { 404 | let NVhead = `
Named Variation
`; 406 | let options = namedVar 407 | .map((nv, i) => ``) 408 | .join(""); 409 | 410 | variation = NVhead + options + NVtail; 411 | } else { 412 | variation = ""; 413 | } 414 | 415 | let animateHead = `
Animate
`; 433 | 434 | let animate = animateHead + animatePostHead + animateList + animateTail; 435 | 436 | body = list + variation + animate; 437 | } 438 | 439 | $(".variable-axes").innerHTML = head + body + `
`; 440 | } 441 | 442 | function updateOpenTypeDetail() { 443 | let openType = $(".open-type"); 444 | 445 | let head = `
OpenType Features
`; 446 | let listAry = OTfeatures.map((e) => { 447 | if (e == "kern" || e == "rvrn" || e == "calt" || e == "liga") { 448 | return ` 449 |
450 |
451 | 452 | 453 |
454 | 455 | ${e} 456 |
457 | `; 458 | } else { 459 | return ` 460 |
461 | 462 |
463 | 464 | 465 |
466 | 467 | 468 | ${e} 469 |
470 | `; 471 | } 472 | }); 473 | let list = listAry.join(""); 474 | openType.innerHTML = head + list; 475 | 476 | function getOTMap(e) { 477 | if (e.slice(0, 2) == "cv") return `Character Variants ${e.slice(-2)}`; 478 | return OTData[e]; 479 | } 480 | } 481 | } 482 | 483 | // Helper boolean function 484 | function isVariableFont(font = font) { 485 | return font.variableAxes.length ? true : false; 486 | } 487 | 488 | // Setting default value for fontSize, lineHeight & 489 | // letterSpacing on reload 490 | function setDefaultValues() { 491 | setValue($('[data-id="fontSize"]'), fontSize); 492 | setValue($('[data-id="lineHeight"]'), lineHeight); 493 | setValue($('[data-id="letterSpacing"]'), letterSpacing); 494 | } 495 | 496 | // listen to all the inputs and handles the interaction 497 | function listen2Inputs() { 498 | // listening to all range and number inputs 499 | $all('input:not([type="checkbox"])').forEach((input) => { 500 | input.addEventListener("input", () => { 501 | setValue(input, input.value); 502 | }); 503 | }); 504 | 505 | // listening to OpenType Checkbox 506 | $all(".ot-set input").forEach((inp) => { 507 | inp.addEventListener("change", (e) => { 508 | vibrate(8); 509 | let OTChar = e.target.getAttribute("data-ot"); 510 | let val = parseInt(testArea.style.getPropertyValue(`--${OTChar}`)); 511 | let fval = val ? 0 : 1; 512 | testArea.style.setProperty(`--${OTChar}`, fval); 513 | }); 514 | }); 515 | 516 | if (!Object.keys(variableAxes).length) return; 517 | 518 | // listening to Named Variation Select 519 | if ($(".named-variation select")) { 520 | $(".named-variation select").addEventListener("change", (e) => { 521 | let val = e.target.value; 522 | let keyObj = Object.keys(namedVariation)[val]; 523 | let keyObjAry = Object.keys(namedVariation[keyObj]); 524 | 525 | keyObjAry.forEach((k) => { 526 | setValue( 527 | $(`input[data-axes="${k}"]`), 528 | namedVariation[keyObj][k], 529 | true 530 | ); 531 | }); 532 | }); 533 | } 534 | 535 | // listening to animate Select 536 | $(".animate select").addEventListener("change", (e) => { 537 | let val = e.target.value; 538 | let allAxes = Object.keys(variableAxes); 539 | 540 | // Animate off Case 541 | if (!val) { 542 | axesCurrentlyAnimating = []; 543 | return; 544 | } 545 | 546 | // Animating all axes 547 | if (val == "all") { 548 | let axesNotAnimating = allAxes.filter( 549 | (a) => !axesCurrentlyAnimating.includes(a) 550 | ); 551 | 552 | axesCurrentlyAnimating = allAxes; 553 | 554 | axesNotAnimating.forEach((ax) => animateAxes(ax)); 555 | return; 556 | } 557 | 558 | // check whether animating all axes 559 | if (allAxes.length == axesCurrentlyAnimating.length) { 560 | axesCurrentlyAnimating = [val]; 561 | return; 562 | } 563 | 564 | // check whether the axes is already animating 565 | if (axesCurrentlyAnimating.includes(val)) return; 566 | 567 | axesCurrentlyAnimating = [val]; 568 | animateAxes(val); 569 | }); 570 | } 571 | 572 | // Sets values to all input and handle all other 573 | // dependent functionality like updating testArea 574 | function setValue(input, value) { 575 | input.value = value; 576 | 577 | // Check whether it is variable-axes input 578 | if (input.classList.contains("var")) { 579 | vibrate(3); 580 | let axes = input.getAttribute("data-axes"); 581 | let max = input.getAttribute("max"); 582 | $(".val", input.closest(".var-axes-set")).innerHTML = 583 | max > 1 ? parseInt(value) : parseFloat(value).toFixed(2); 584 | testArea.style.setProperty(`--${axes}`, value); 585 | syncRangeInput(input); 586 | 587 | // Reset the named-variant value 588 | if ($(".named-variation select") && arguments.length < 3) 589 | $(".named-variation select").value = ""; 590 | 591 | return; 592 | } 593 | 594 | let type = input.getAttribute("type"); 595 | let prop = input.getAttribute("data-id"); 596 | 597 | if (type === "range") { 598 | vibrate(3); 599 | $(`input[type="number"][data-id="${prop}"]`).value = value; 600 | syncRangeInput(input); 601 | } 602 | if (type === "number") { 603 | let rangeInput = $(`input[type="range"][data-id="${prop}"]`); 604 | rangeInput.value = value; 605 | syncRangeInput(rangeInput); 606 | } 607 | 608 | prop == "lineHeight" 609 | ? (testArea.style[prop] = value) 610 | : (testArea.style[prop] = `${value}px`); 611 | 612 | // Handles the custom range input functionality 613 | // ie. sets the progress width equal to range value 614 | function syncRangeInput(input) { 615 | let slider = input.closest(".slider"); 616 | let progress = $(".progress", slider); 617 | let min = +input.getAttribute("min"); 618 | let max = +input.getAttribute("max"); 619 | let value = +input.value - min; 620 | let percent = (value * 100) / (max - min); 621 | progress.style.width = `${percent}%`; 622 | } 623 | } 624 | 625 | function easeInOut(x) { 626 | return Math.pow(Math.sin((5 * x) / Math.PI), 2); 627 | } 628 | 629 | let easeInOutAry = [...Array(40)].map((e, i) => easeInOut(i / 20)); 630 | 631 | function animateAxes(axes) { 632 | // Each animation will last for 2sec with 100ms as the x resolution 633 | // 634 | 635 | let count = 0; 636 | 637 | let rangeInp = $(`input[data-axes="${axes}"]`); 638 | let max = +rangeInp.getAttribute("max"); 639 | let min = +rangeInp.getAttribute("min"); 640 | 641 | rangeInp.classList.add("animating"); 642 | rangeInp.disabled = true; 643 | console.log(`Animating ${axes} from ${min} ⟶ ${max}`); 644 | 645 | requestAnimationFrame(animate); 646 | 647 | function animate() { 648 | count += 1; 649 | if (count > 39) count = 0; 650 | 651 | let finalValue = +(easeInOutAry[count] * (max - min) + min); 652 | 653 | setValue(rangeInp, finalValue); 654 | 655 | if (axesCurrentlyAnimating.includes(axes)) { 656 | setTimeout(() => { 657 | requestAnimationFrame(animate); 658 | }, 100); 659 | } else { 660 | rangeInp.classList.remove("animating"); 661 | rangeInp.disabled = false; 662 | } 663 | } 664 | } 665 | 666 | // Dark Mode 667 | class DarkMode { 668 | constructor(el, namespace, setMetaTheme) { 669 | this.root = document.querySelector("html"); 670 | if (namespace) this.namespace = namespace; 671 | if (setMetaTheme) this.setMetaTheme = setMetaTheme; 672 | this.label = "darkMode"; 673 | this.InitializeTheme(); 674 | el.addEventListener("click", () => this.toggleTheme()); 675 | } 676 | 677 | InitializeTheme() { 678 | if (this.namespace) this.label = `${this.namespace}-darkMode`; 679 | let theme = localStorage.getItem(this.label); 680 | 681 | if (theme === "false" || theme == null) { 682 | this.setLightMode(); 683 | if (this.setMetaTheme) this.setMeta("light"); 684 | } else { 685 | this.setDarkMode(); 686 | if (this.setMetaTheme) this.setMeta("dark"); 687 | } 688 | } 689 | 690 | setMeta(theme) { 691 | let meta = document.querySelector('html meta[name="theme-color"]'); 692 | if (!meta) { 693 | let meta = document.createElement("meta"); 694 | meta.setAttribute("name", "theme-color"); 695 | document 696 | .querySelector("head") 697 | .insertAdjacentHTML( 698 | "beforeend", 699 | `` 702 | ); 703 | return; 704 | } 705 | 706 | meta.insertAdjacentHTML( 707 | "afterend", 708 | `` 711 | ); 712 | meta.remove(); 713 | } 714 | 715 | toggleTheme() { 716 | let theme = localStorage.getItem(this.label); 717 | if (theme === "false") { 718 | this.setDarkMode(); 719 | if (this.setMetaTheme) this.setMeta("dark"); 720 | } else { 721 | this.setLightMode(); 722 | if (this.setMetaTheme) this.setMeta("light"); 723 | } 724 | } 725 | 726 | setDarkMode() { 727 | this.root.classList.add("dark"); 728 | localStorage.setItem(this.label, true); 729 | if (this.setMetaTheme) this.setMeta("dark"); 730 | } 731 | 732 | setLightMode() { 733 | this.root.classList.remove("dark"); 734 | localStorage.setItem(this.label, false); 735 | if (this.setMetaTheme) this.setMeta("light"); 736 | } 737 | } 738 | 739 | new DarkMode($("#dark-mode"), "var-playground", true); 740 | 741 | // Handling bottom sheet for mobile devices 742 | 743 | // For Mouse Pointer interaction 744 | // --------------------------------------------------------------- 745 | $(".seperator").addEventListener("mousedown", (e) => { 746 | e.preventDefault(); 747 | e.stopPropagation(); 748 | document.addEventListener("mouseup", removeEventListener); 749 | document.addEventListener("mousemove", handleTouch); 750 | 751 | let vh = window.innerHeight; 752 | let vhmin = vh * (15 / 100); 753 | let vhmax = vh * (85 / 100); 754 | let main = $("main").style; 755 | 756 | function handleTouch(e) { 757 | let y = e.clientY; 758 | if (y < vhmin) { 759 | main.setProperty("--row1", `${vhmin}px`); 760 | } else if (y > vhmax) { 761 | main.setProperty("--row1", `${vhmax}px`); 762 | } else { 763 | main.setProperty("--row1", `${y}px`); 764 | } 765 | } 766 | 767 | function removeEventListener() { 768 | document.removeEventListener("mousemove", handleTouch); 769 | } 770 | }); 771 | 772 | // For Touch interaction 773 | // --------------------------------------------------------------- 774 | $(".seperator").addEventListener("touchstart", (e) => { 775 | e.preventDefault(); 776 | e.stopPropagation(); 777 | 778 | console.log("touchstart event"); 779 | 780 | document.addEventListener("touchend", removeEventListener); 781 | document.addEventListener("touchmove", handleTouch); 782 | 783 | let vh = window.innerHeight; 784 | let y = e.touches[0].clientY; 785 | let vhmin = vh * (15 / 100); 786 | let vhmax = vh * (85 / 100); 787 | let main = $("main").style; 788 | let hasVibrated = false; 789 | 790 | if (y > vmin || y < vmax) vibrate(8); 791 | 792 | function handleTouch(e) { 793 | let y = e.touches[0].clientY; 794 | if (y < vhmin) { 795 | if (!hasVibrated) { 796 | vibrate(8); 797 | hasVibrated = true; 798 | setTimeout(() => (hasVibrated = false), 500); 799 | } 800 | main.setProperty("--row1", `${vhmin}px`); 801 | } else if (y > vhmax) { 802 | if (!hasVibrated) { 803 | vibrate(8); 804 | hasVibrated = true; 805 | setTimeout(() => (hasVibrated = false), 500); 806 | } 807 | main.setProperty("--row1", `${vhmax}px`); 808 | } else { 809 | main.setProperty("--row1", `${y}px`); 810 | } 811 | } 812 | 813 | function removeEventListener() { 814 | document.removeEventListener("touchmove", handleTouch); 815 | } 816 | }); 817 | 818 | loadDefaultFont(); 819 | 820 | addEventListener("load", () => { 821 | checkWhetherDefaultFontLoaded(); 822 | 823 | function checkWhetherDefaultFontLoaded() { 824 | if (isDefaultFontLoaded) { 825 | $(".loader").style.display = "none"; 826 | $("main").classList.remove("loading"); 827 | } else { 828 | setTimeout(() => checkWhetherDefaultFontLoaded(), 100); 829 | } 830 | } 831 | }); 832 | 833 | // Listening for message from service worker 834 | // --------------------------------------------------------------- 835 | if (window.BroadcastChannel) { 836 | let channel = new BroadcastChannel("varfont-refresh"); 837 | channel.onmessage = function (e) { 838 | let initial = localStorage.getItem("font-initial"); 839 | if (!initial) { 840 | localStorage.setItem("font-initial", "true"); 841 | } else { 842 | toastMessage("Refresh the page for new updates to take effect", 8000); 843 | } 844 | }; 845 | } 846 | })(); 847 | 848 | -------------------------------------------------------------------------------- /dist/style.css: -------------------------------------------------------------------------------- 1 | @import"https://fonts.googleapis.com/css2?family=Inter:slnt,wght@-10..0,100..900&display=swap";@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap";@import"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap";*{font:inherit;line-height:inherit}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,grid,h1,h2,h3,h4,h5,h6,header,hgroup,hr,html,i,iframe,img,ins,kbd,label,legend,li,main,mark,menu,nav,noscript,object,ol,output,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;margin:0;padding:0;vertical-align:baseline}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}a,a:active,a:visited{color:inherit}:root{--baseSansFontSize:14;--baseMonoFontSize:14;--sansFont:"Inter",sans-serif;--monoFont:"JetBrains Mono","Roboto Mono",monospace;--sansFontSize:calc(var(--baseSansFontSize)*1rem/16);--monoFontSize:calc(var(--baseMonoFontSize)*1rem/var(--baseSansFontSize));--baseUnit:calc(1rem + 1px*(var(--baseSansFontSize)*1.5 - var(--baseSansFontSize)));--baseline:calc(var(--baseUnit)/2);--lineHeight:1.5;--blockSpacingTop:0px;--blockSpacingBottom:var(--baseUnit);--foregroundColor-rgb:0,0,0;--foregroundColor-a:1;--foregroundColor:rgba(var(--foregroundColor-rgb),var(--foregroundColor-a));--backgroundColor:#fff;--backgroundScrim:#fafafa;--red:#ee2711;--blue:#1871e9;--green:#12c05b;--yellow:#f9bf0f;--red-rgb:238,39,17;--blue-rgb:24,113,233;--green-rgb:18,192,91;--yellow-rgb:249,191,15;--accentColor:var(--blue);--hrThickness:.1428571429rem;--hrColor:var(--foregroundColor);--h1-size:2.8rem;--h2-size:2.2rem;--h3-size:1.4rem;--h4-size:1.1rem;--columnGap:calc(var(--baseUnit)*2);--rowGap:calc(var(--baseUnit));--displayScale:1;--pixel:1px;--bodyPadding:calc(var(--baseUnit)*2)}.red{color:var(--red)}.blue{color:var(--blue)}.green{color:var(--green)}.yellow{color:var(--yellow)}.bg-red{background-color:var(--red)}.bg-blue{background-color:var(--blue)}.bg-green{background-color:var(--green)}.bg-yellow{background-color:var(--yellow)}:root.dark{--foregroundColor-rgb:221,221,221;--backgroundScrim:#121212;--backgroundColor:#191919;--depth1:#1e1e1e;--depth2:#232323;--depth3:#272727;--hrColor:hsla(0,0%,100%,.4);--blue:#9ac9fe}.depth1{--backgroundColor:var(--depth1)}.depth2{--backgroundColor:var(--depth2)}.depth3{--backgroundColor:var(--depth3)}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-feature-settings:"kern" 1,"liga" 1,"calt" 1,"cv10" 1;background:var(--backgroundScrim);color:var(--foregroundColor);font-family:var(--sansFont);font-size:var(--sansFontSize);font-variant-ligatures:contextual common-ligatures;letter-spacing:-.01em;line-height:var(--lineHeight)}body{-webkit-overflow-scrolling:touch;background:var(--backgroundColor);margin:0 auto;max-width:1540px;min-height:100vh;overflow-x:hidden;padding:var(--bodyPadding);padding-bottom:calc(var(--baseUnit)*3);scroll-behavior:smooth}::-moz-selection{background-color:var(--foregroundColor);color:var(--backgroundColor)}::selection{background-color:var(--foregroundColor);color:var(--backgroundColor)}@media only screen and (max-width:600px){body{--bodyPadding:var(--baseUnit);padding-bottom:calc(var(--baseUnit)*2)}}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx){:root{--displayScale:2;--pixel:.5px}}@media only screen and (-webkit-min-device-pixel-ratio:2.5),only screen and (min-device-pixel-ratio:2.5),only screen and (min-resolution:2.5dppx){:root{--displayScale:3;--pixel:.34px}}@media only screen and (-webkit-min-device-pixel-ratio:3.5),only screen and (min-device-pixel-ratio:3.5),only screen and (min-resolution:3.5dppx){:root{--displayScale:4;--pixel:.25px}}.grid{--grid-tc:repeat(4,1fr);--grid-cs:1;--grid-ce:-1;grid-column-gap:var(--columnGap);grid-row-gap:var(--rowGap);display:grid;grid-template-columns:var(--grid-tc)}.grid.compact{grid-row-gap:0}.grid[columns="1"]{--grid-tc:repeat(1,1fr)}.grid[columns="2"]{--grid-tc:repeat(2,1fr)}.grid[columns="3"]{--grid-tc:repeat(3,1fr)}.grid[columns="4"]{--grid-tc:repeat(4,1fr)}.grid[columns="5"]{--grid-tc:repeat(5,1fr)}.grid[columns="6"]{--grid-tc:repeat(6,1fr)}.grid[columns="7"]{--grid-tc:repeat(7,1fr)}.grid[columns="8"]{--grid-tc:repeat(8,1fr)}.grid[columns="9"]{--grid-tc:repeat(9,1fr)}.grid[columns="10"]{--grid-tc:repeat(10,1fr)}.grid[columns="11"]{--grid-tc:repeat(11,1fr)}.grid[columns="12"]{--grid-tc:repeat(12,1fr)}.grid[columns="13"]{--grid-tc:repeat(13,1fr)}.grid[columns="14"]{--grid-tc:repeat(14,1fr)}.grid[columns="15"]{--grid-tc:repeat(15,1fr)}.grid[columns="16"]{--grid-tc:repeat(16,1fr)}.grid[columns="17"]{--grid-tc:repeat(17,1fr)}.grid[columns="18"]{--grid-tc:repeat(18,1fr)}.grid[columns="19"]{--grid-tc:repeat(19,1fr)}.grid[columns="20"]{--grid-tc:repeat(20,1fr)}.grid[columns="21"]{--grid-tc:repeat(21,1fr)}.grid[columns="22"]{--grid-tc:repeat(22,1fr)}.grid[columns="23"]{--grid-tc:repeat(23,1fr)}.grid[columns="24"]{--grid-tc:repeat(24,1fr)}.grid[columns="25"]{--grid-tc:repeat(25,1fr)}.grid[columns="26"]{--grid-tc:repeat(26,1fr)}.grid[columns="27"]{--grid-tc:repeat(27,1fr)}.grid[columns="28"]{--grid-tc:repeat(28,1fr)}.grid[columns="29"]{--grid-tc:repeat(29,1fr)}.grid[columns="30"]{--grid-tc:repeat(30,1fr)}.grid>[span^="1"]{--grid-cs:1}.grid>[span^="2"]{--grid-cs:2}.grid>[span^="3"]{--grid-cs:3}.grid>[span^="4"]{--grid-cs:4}.grid>[span^="5"]{--grid-cs:5}.grid>[span^="6"]{--grid-cs:6}.grid>[span^="7"]{--grid-cs:7}.grid>[span^="8"]{--grid-cs:8}.grid>[span^="9"]{--grid-cs:9}.grid>[span^="10"]{--grid-cs:10}.grid>[span^="11"]{--grid-cs:11}.grid>[span^="12"]{--grid-cs:12}.grid>[span^="13"]{--grid-cs:13}.grid>[span^="14"]{--grid-cs:14}.grid>[span^="15"]{--grid-cs:15}.grid>[span^="16"]{--grid-cs:16}.grid>[span^="17"]{--grid-cs:17}.grid>[span^="18"]{--grid-cs:18}.grid>[span^="19"]{--grid-cs:19}.grid>[span^="20"]{--grid-cs:20}.grid>[span^="21"]{--grid-cs:21}.grid>[span^="22"]{--grid-cs:22}.grid>[span^="23"]{--grid-cs:23}.grid>[span^="24"]{--grid-cs:24}.grid>[span^="25"]{--grid-cs:25}.grid>[span^="26"]{--grid-cs:26}.grid>[span^="27"]{--grid-cs:27}.grid>[span^="28"]{--grid-cs:28}.grid>[span^="29"]{--grid-cs:29}.grid>[span^="30"]{--grid-cs:30}.grid>[span$="+1"],.grid>[span="1"]{--grid-ce:1}.grid>[span$="+2"],.grid>[span$="-1"],.grid>[span="2"]{--grid-ce:2}.grid>[span$="+3"],.grid>[span$="-2"],.grid>[span="3"]{--grid-ce:3}.grid>[span$="+4"],.grid>[span$="-3"],.grid>[span="4"]{--grid-ce:4}.grid>[span$="+5"],.grid>[span$="-4"],.grid>[span="5"]{--grid-ce:5}.grid>[span$="+6"],.grid>[span$="-5"],.grid>[span="6"]{--grid-ce:6}.grid>[span$="+7"],.grid>[span$="-6"],.grid>[span="7"]{--grid-ce:7}.grid>[span$="+8"],.grid>[span$="-7"],.grid>[span="8"]{--grid-ce:8}.grid>[span$="+9"],.grid>[span$="-8"],.grid>[span="9"]{--grid-ce:9}.grid>[span$="+10"],.grid>[span$="-9"],.grid>[span="10"]{--grid-ce:10}.grid>[span$="+11"],.grid>[span$="-10"],.grid>[span="11"]{--grid-ce:11}.grid>[span$="+12"],.grid>[span$="-11"],.grid>[span="12"]{--grid-ce:12}.grid>[span$="+13"],.grid>[span$="-12"],.grid>[span="13"]{--grid-ce:13}.grid>[span$="+14"],.grid>[span$="-13"],.grid>[span="14"]{--grid-ce:14}.grid>[span$="+15"],.grid>[span$="-14"],.grid>[span="15"]{--grid-ce:15}.grid>[span$="+16"],.grid>[span$="-15"],.grid>[span="16"]{--grid-ce:16}.grid>[span$="+17"],.grid>[span$="-16"],.grid>[span="17"]{--grid-ce:17}.grid>[span$="+18"],.grid>[span$="-17"],.grid>[span="18"]{--grid-ce:18}.grid>[span$="+19"],.grid>[span$="-18"],.grid>[span="19"]{--grid-ce:19}.grid>[span$="+20"],.grid>[span$="-19"],.grid>[span="20"]{--grid-ce:20}.grid>[span$="+21"],.grid>[span$="-20"],.grid>[span="21"]{--grid-ce:21}.grid>[span$="+22"],.grid>[span$="-21"],.grid>[span="22"]{--grid-ce:22}.grid>[span$="+23"],.grid>[span$="-22"],.grid>[span="23"]{--grid-ce:23}.grid>[span$="+24"],.grid>[span$="-23"],.grid>[span="24"]{--grid-ce:24}.grid>[span$="+25"],.grid>[span$="-24"],.grid>[span="25"]{--grid-ce:25}.grid>[span$="+26"],.grid>[span$="-25"],.grid>[span="26"]{--grid-ce:26}.grid>[span$="+27"],.grid>[span$="-26"],.grid>[span="27"]{--grid-ce:27}.grid>[span$="+28"],.grid>[span$="-27"],.grid>[span="28"]{--grid-ce:28}.grid>[span$="+29"],.grid>[span$="-28"],.grid>[span="29"]{--grid-ce:29}.grid>[span$="+30"],.grid>[span$="-29"],.grid>[span="30"]{--grid-ce:30}.grid>[span$="-30"]{--grid-ce:31}.grid>[span]{grid-column-end:span var(--grid-ce)}.grid>[span*="+"],.grid>[span*="-"],.grid>[span*=".."]{grid-column-start:var(--grid-cs)}.grid>[span*="-"],.grid>[span*=".."]{grid-column-end:var(--grid-ce)}.grid>[span=row]{grid-column:1/-1}@media only screen and (max-width:600px){.grid[columns-s="1"]{--grid-tc:repeat(1,1fr)}.grid[columns-s="2"]{--grid-tc:repeat(2,1fr)}.grid[columns-s="3"]{--grid-tc:repeat(3,1fr)}.grid[columns-s="4"]{--grid-tc:repeat(4,1fr)}.grid[columns-s="5"]{--grid-tc:repeat(5,1fr)}.grid[columns-s="6"]{--grid-tc:repeat(6,1fr)}.grid[columns-s="7"]{--grid-tc:repeat(7,1fr)}.grid[columns-s="8"]{--grid-tc:repeat(8,1fr)}.grid[columns-s="9"]{--grid-tc:repeat(9,1fr)}.grid[columns-s="10"]{--grid-tc:repeat(10,1fr)}.grid[columns-s="11"]{--grid-tc:repeat(11,1fr)}.grid[columns-s="12"]{--grid-tc:repeat(12,1fr)}.grid[columns-s="13"]{--grid-tc:repeat(13,1fr)}.grid[columns-s="14"]{--grid-tc:repeat(14,1fr)}.grid[columns-s="15"]{--grid-tc:repeat(15,1fr)}.grid[columns-s="16"]{--grid-tc:repeat(16,1fr)}.grid[columns-s="17"]{--grid-tc:repeat(17,1fr)}.grid[columns-s="18"]{--grid-tc:repeat(18,1fr)}.grid[columns-s="19"]{--grid-tc:repeat(19,1fr)}.grid[columns-s="20"]{--grid-tc:repeat(20,1fr)}.grid[columns-s="21"]{--grid-tc:repeat(21,1fr)}.grid[columns-s="22"]{--grid-tc:repeat(22,1fr)}.grid[columns-s="23"]{--grid-tc:repeat(23,1fr)}.grid[columns-s="24"]{--grid-tc:repeat(24,1fr)}.grid[columns-s="25"]{--grid-tc:repeat(25,1fr)}.grid[columns-s="26"]{--grid-tc:repeat(26,1fr)}.grid[columns-s="27"]{--grid-tc:repeat(27,1fr)}.grid[columns-s="28"]{--grid-tc:repeat(28,1fr)}.grid[columns-s="29"]{--grid-tc:repeat(29,1fr)}.grid[columns-s="30"]{--grid-tc:repeat(30,1fr)}.grid>[span-s^="1"]{--grid-cs:1}.grid>[span-s^="2"]{--grid-cs:2}.grid>[span-s^="3"]{--grid-cs:3}.grid>[span-s^="4"]{--grid-cs:4}.grid>[span-s^="5"]{--grid-cs:5}.grid>[span-s^="6"]{--grid-cs:6}.grid>[span-s^="7"]{--grid-cs:7}.grid>[span-s^="8"]{--grid-cs:8}.grid>[span-s^="9"]{--grid-cs:9}.grid>[span-s^="10"]{--grid-cs:10}.grid>[span-s^="11"]{--grid-cs:11}.grid>[span-s^="12"]{--grid-cs:12}.grid>[span-s^="13"]{--grid-cs:13}.grid>[span-s^="14"]{--grid-cs:14}.grid>[span-s^="15"]{--grid-cs:15}.grid>[span-s^="16"]{--grid-cs:16}.grid>[span-s^="17"]{--grid-cs:17}.grid>[span-s^="18"]{--grid-cs:18}.grid>[span-s^="19"]{--grid-cs:19}.grid>[span-s^="20"]{--grid-cs:20}.grid>[span-s^="21"]{--grid-cs:21}.grid>[span-s^="22"]{--grid-cs:22}.grid>[span-s^="23"]{--grid-cs:23}.grid>[span-s^="24"]{--grid-cs:24}.grid>[span-s^="25"]{--grid-cs:25}.grid>[span-s^="26"]{--grid-cs:26}.grid>[span-s^="27"]{--grid-cs:27}.grid>[span-s^="28"]{--grid-cs:28}.grid>[span-s^="29"]{--grid-cs:29}.grid>[span-s^="30"]{--grid-cs:30}.grid>[span-s$="+1"],.grid>[span-s="1"]{--grid-ce:1}.grid>[span-s$="+2"],.grid>[span-s$="-1"],.grid>[span-s="2"]{--grid-ce:2}.grid>[span-s$="+3"],.grid>[span-s$="-2"],.grid>[span-s="3"]{--grid-ce:3}.grid>[span-s$="+4"],.grid>[span-s$="-3"],.grid>[span-s="4"]{--grid-ce:4}.grid>[span-s$="+5"],.grid>[span-s$="-4"],.grid>[span-s="5"]{--grid-ce:5}.grid>[span-s$="+6"],.grid>[span-s$="-5"],.grid>[span-s="6"]{--grid-ce:6}.grid>[span-s$="+7"],.grid>[span-s$="-6"],.grid>[span-s="7"]{--grid-ce:7}.grid>[span-s$="+8"],.grid>[span-s$="-7"],.grid>[span-s="8"]{--grid-ce:8}.grid>[span-s$="+9"],.grid>[span-s$="-8"],.grid>[span-s="9"]{--grid-ce:9}.grid>[span-s$="+10"],.grid>[span-s$="-9"],.grid>[span-s="10"]{--grid-ce:10}.grid>[span-s$="+11"],.grid>[span-s$="-10"],.grid>[span-s="11"]{--grid-ce:11}.grid>[span-s$="+12"],.grid>[span-s$="-11"],.grid>[span-s="12"]{--grid-ce:12}.grid>[span-s$="+13"],.grid>[span-s$="-12"],.grid>[span-s="13"]{--grid-ce:13}.grid>[span-s$="+14"],.grid>[span-s$="-13"],.grid>[span-s="14"]{--grid-ce:14}.grid>[span-s$="+15"],.grid>[span-s$="-14"],.grid>[span-s="15"]{--grid-ce:15}.grid>[span-s$="+16"],.grid>[span-s$="-15"],.grid>[span-s="16"]{--grid-ce:16}.grid>[span-s$="+17"],.grid>[span-s$="-16"],.grid>[span-s="17"]{--grid-ce:17}.grid>[span-s$="+18"],.grid>[span-s$="-17"],.grid>[span-s="18"]{--grid-ce:18}.grid>[span-s$="+19"],.grid>[span-s$="-18"],.grid>[span-s="19"]{--grid-ce:19}.grid>[span-s$="+20"],.grid>[span-s$="-19"],.grid>[span-s="20"]{--grid-ce:20}.grid>[span-s$="+21"],.grid>[span-s$="-20"],.grid>[span-s="21"]{--grid-ce:21}.grid>[span-s$="+22"],.grid>[span-s$="-21"],.grid>[span-s="22"]{--grid-ce:22}.grid>[span-s$="+23"],.grid>[span-s$="-22"],.grid>[span-s="23"]{--grid-ce:23}.grid>[span-s$="+24"],.grid>[span-s$="-23"],.grid>[span-s="24"]{--grid-ce:24}.grid>[span-s$="+25"],.grid>[span-s$="-24"],.grid>[span-s="25"]{--grid-ce:25}.grid>[span-s$="+26"],.grid>[span-s$="-25"],.grid>[span-s="26"]{--grid-ce:26}.grid>[span-s$="+27"],.grid>[span-s$="-26"],.grid>[span-s="27"]{--grid-ce:27}.grid>[span-s$="+28"],.grid>[span-s$="-27"],.grid>[span-s="28"]{--grid-ce:28}.grid>[span-s$="+29"],.grid>[span-s$="-28"],.grid>[span-s="29"]{--grid-ce:29}.grid>[span-s$="+30"],.grid>[span-s$="-29"],.grid>[span-s="30"]{--grid-ce:30}.grid>[span-s$="-30"]{--grid-ce:31}.grid>[span-s]{grid-column-end:span var(--grid-ce)}.grid>[span-s*="+"],.grid>[span-s*="-"],.grid>[span-s*=".."]{grid-column-start:var(--grid-cs)}.grid>[span-s*="-"],.grid>[span-s*=".."]{grid-column-end:var(--grid-ce)}.grid>[span-s=row]{grid-column:1/-1}}@media only screen and (min-width:1599px){.grid[columns-l="1"]{--grid-tc:repeat(1,1fr)}.grid[columns-l="2"]{--grid-tc:repeat(2,1fr)}.grid[columns-l="3"]{--grid-tc:repeat(3,1fr)}.grid[columns-l="4"]{--grid-tc:repeat(4,1fr)}.grid[columns-l="5"]{--grid-tc:repeat(5,1fr)}.grid[columns-l="6"]{--grid-tc:repeat(6,1fr)}.grid[columns-l="7"]{--grid-tc:repeat(7,1fr)}.grid[columns-l="8"]{--grid-tc:repeat(8,1fr)}.grid[columns-l="9"]{--grid-tc:repeat(9,1fr)}.grid[columns-l="10"]{--grid-tc:repeat(10,1fr)}.grid[columns-l="11"]{--grid-tc:repeat(11,1fr)}.grid[columns-l="12"]{--grid-tc:repeat(12,1fr)}.grid[columns-l="13"]{--grid-tc:repeat(13,1fr)}.grid[columns-l="14"]{--grid-tc:repeat(14,1fr)}.grid[columns-l="15"]{--grid-tc:repeat(15,1fr)}.grid[columns-l="16"]{--grid-tc:repeat(16,1fr)}.grid[columns-l="17"]{--grid-tc:repeat(17,1fr)}.grid[columns-l="18"]{--grid-tc:repeat(18,1fr)}.grid[columns-l="19"]{--grid-tc:repeat(19,1fr)}.grid[columns-l="20"]{--grid-tc:repeat(20,1fr)}.grid[columns-l="21"]{--grid-tc:repeat(21,1fr)}.grid[columns-l="22"]{--grid-tc:repeat(22,1fr)}.grid[columns-l="23"]{--grid-tc:repeat(23,1fr)}.grid[columns-l="24"]{--grid-tc:repeat(24,1fr)}.grid[columns-l="25"]{--grid-tc:repeat(25,1fr)}.grid[columns-l="26"]{--grid-tc:repeat(26,1fr)}.grid[columns-l="27"]{--grid-tc:repeat(27,1fr)}.grid[columns-l="28"]{--grid-tc:repeat(28,1fr)}.grid[columns-l="29"]{--grid-tc:repeat(29,1fr)}.grid[columns-l="30"]{--grid-tc:repeat(30,1fr)}.grid>[span-l^="1"]{--grid-cs:1}.grid>[span-l^="2"]{--grid-cs:2}.grid>[span-l^="3"]{--grid-cs:3}.grid>[span-l^="4"]{--grid-cs:4}.grid>[span-l^="5"]{--grid-cs:5}.grid>[span-l^="6"]{--grid-cs:6}.grid>[span-l^="7"]{--grid-cs:7}.grid>[span-l^="8"]{--grid-cs:8}.grid>[span-l^="9"]{--grid-cs:9}.grid>[span-l^="10"]{--grid-cs:10}.grid>[span-l^="11"]{--grid-cs:11}.grid>[span-l^="12"]{--grid-cs:12}.grid>[span-l^="13"]{--grid-cs:13}.grid>[span-l^="14"]{--grid-cs:14}.grid>[span-l^="15"]{--grid-cs:15}.grid>[span-l^="16"]{--grid-cs:16}.grid>[span-l^="17"]{--grid-cs:17}.grid>[span-l^="18"]{--grid-cs:18}.grid>[span-l^="19"]{--grid-cs:19}.grid>[span-l^="20"]{--grid-cs:20}.grid>[span-l^="21"]{--grid-cs:21}.grid>[span-l^="22"]{--grid-cs:22}.grid>[span-l^="23"]{--grid-cs:23}.grid>[span-l^="24"]{--grid-cs:24}.grid>[span-l^="25"]{--grid-cs:25}.grid>[span-l^="26"]{--grid-cs:26}.grid>[span-l^="27"]{--grid-cs:27}.grid>[span-l^="28"]{--grid-cs:28}.grid>[span-l^="29"]{--grid-cs:29}.grid>[span-l^="30"]{--grid-cs:30}.grid>[span-l$="+1"],.grid>[span-l="1"]{--grid-ce:1}.grid>[span-l$="+2"],.grid>[span-l$="-1"],.grid>[span-l="2"]{--grid-ce:2}.grid>[span-l$="+3"],.grid>[span-l$="-2"],.grid>[span-l="3"]{--grid-ce:3}.grid>[span-l$="+4"],.grid>[span-l$="-3"],.grid>[span-l="4"]{--grid-ce:4}.grid>[span-l$="+5"],.grid>[span-l$="-4"],.grid>[span-l="5"]{--grid-ce:5}.grid>[span-l$="+6"],.grid>[span-l$="-5"],.grid>[span-l="6"]{--grid-ce:6}.grid>[span-l$="+7"],.grid>[span-l$="-6"],.grid>[span-l="7"]{--grid-ce:7}.grid>[span-l$="+8"],.grid>[span-l$="-7"],.grid>[span-l="8"]{--grid-ce:8}.grid>[span-l$="+9"],.grid>[span-l$="-8"],.grid>[span-l="9"]{--grid-ce:9}.grid>[span-l$="+10"],.grid>[span-l$="-9"],.grid>[span-l="10"]{--grid-ce:10}.grid>[span-l$="+11"],.grid>[span-l$="-10"],.grid>[span-l="11"]{--grid-ce:11}.grid>[span-l$="+12"],.grid>[span-l$="-11"],.grid>[span-l="12"]{--grid-ce:12}.grid>[span-l$="+13"],.grid>[span-l$="-12"],.grid>[span-l="13"]{--grid-ce:13}.grid>[span-l$="+14"],.grid>[span-l$="-13"],.grid>[span-l="14"]{--grid-ce:14}.grid>[span-l$="+15"],.grid>[span-l$="-14"],.grid>[span-l="15"]{--grid-ce:15}.grid>[span-l$="+16"],.grid>[span-l$="-15"],.grid>[span-l="16"]{--grid-ce:16}.grid>[span-l$="+17"],.grid>[span-l$="-16"],.grid>[span-l="17"]{--grid-ce:17}.grid>[span-l$="+18"],.grid>[span-l$="-17"],.grid>[span-l="18"]{--grid-ce:18}.grid>[span-l$="+19"],.grid>[span-l$="-18"],.grid>[span-l="19"]{--grid-ce:19}.grid>[span-l$="+20"],.grid>[span-l$="-19"],.grid>[span-l="20"]{--grid-ce:20}.grid>[span-l$="+21"],.grid>[span-l$="-20"],.grid>[span-l="21"]{--grid-ce:21}.grid>[span-l$="+22"],.grid>[span-l$="-21"],.grid>[span-l="22"]{--grid-ce:22}.grid>[span-l$="+23"],.grid>[span-l$="-22"],.grid>[span-l="23"]{--grid-ce:23}.grid>[span-l$="+24"],.grid>[span-l$="-23"],.grid>[span-l="24"]{--grid-ce:24}.grid>[span-l$="+25"],.grid>[span-l$="-24"],.grid>[span-l="25"]{--grid-ce:25}.grid>[span-l$="+26"],.grid>[span-l$="-25"],.grid>[span-l="26"]{--grid-ce:26}.grid>[span-l$="+27"],.grid>[span-l$="-26"],.grid>[span-l="27"]{--grid-ce:27}.grid>[span-l$="+28"],.grid>[span-l$="-27"],.grid>[span-l="28"]{--grid-ce:28}.grid>[span-l$="+29"],.grid>[span-l$="-28"],.grid>[span-l="29"]{--grid-ce:29}.grid>[span-l$="+30"],.grid>[span-l$="-29"],.grid>[span-l="30"]{--grid-ce:30}.grid>[span-l$="-30"]{--grid-ce:31}.grid>[span-l]{grid-column-end:span var(--grid-ce)}.grid>[span-l*="+"],.grid>[span-l*="-"],.grid>[span-l*=".."]{grid-column-start:var(--grid-cs)}.grid>[span-l*="-"],.grid>[span-l*=".."]{grid-column-end:var(--grid-ce)}.grid>[span-l=row]{grid-column:1/-1}}[flow-cols-l],[flow-cols-s],[flow-cols]{-moz-column-fill:balance;column-fill:balance;-moz-column-gap:var(--columnGap);column-gap:var(--columnGap)}[flow-cols="1"]{-moz-column-count:1;column-count:1}[flow-cols="2"]{-moz-column-count:2;column-count:2}[flow-cols="3"]{-moz-column-count:3;column-count:3}[flow-cols="4"]{-moz-column-count:4;column-count:4}[flow-cols="5"]{-moz-column-count:5;column-count:5}[flow-cols="6"]{-moz-column-count:6;column-count:6}[flow-cols="7"]{-moz-column-count:7;column-count:7}[flow-cols="8"]{-moz-column-count:8;column-count:8}@media only screen and (max-width:600px){[flow-cols-s="1"]{-moz-column-count:1;column-count:1}[flow-cols-s="2"]{-moz-column-count:2;column-count:2}[flow-cols-s="3"]{-moz-column-count:3;column-count:3}[flow-cols-s="4"]{-moz-column-count:4;column-count:4}[flow-cols-s="5"]{-moz-column-count:5;column-count:5}[flow-cols-s="6"]{-moz-column-count:6;column-count:6}[flow-cols-s="7"]{-moz-column-count:7;column-count:7}[flow-cols-s="8"]{-moz-column-count:8;column-count:8}}@media only screen and (min-width:1599px){[flow-cols-l="1"]{-moz-column-count:1;column-count:1}[flow-cols-l="2"]{-moz-column-count:2;column-count:2}[flow-cols-l="3"]{-moz-column-count:3;column-count:3}[flow-cols-l="4"]{-moz-column-count:4;column-count:4}[flow-cols-l="5"]{-moz-column-count:5;column-count:5}[flow-cols-l="6"]{-moz-column-count:6;column-count:6}[flow-cols-l="7"]{-moz-column-count:7;column-count:7}[flow-cols-l="8"]{-moz-column-count:8;column-count:8}}.grid,address,article,aside,blockquote,dd,dl,dt,fieldset,figure,form,h1,h2,h3,h4,h5,h6,li,nav,ol,p,pre,table,tfoot,ul,video{margin-bottom:var(--blockSpacingBottom);margin-top:var(--blockSpacingTop)}:first-child{margin-top:unset}:last-child{margin-bottom:unset}hr:first-child{margin-bottom:calc(var(--baseUnit) - var(--hrThickness)/2);margin-top:calc(var(--hrThickness)/-2)}hr:last-child{margin-bottom:calc(var(--hrThickness)/-2)}hr,hr:last-child,hr:only-child{margin-top:calc(var(--baseUnit) - var(--hrThickness)/2)}hr,hr:only-child{background:var(--foregroundColor);border:none;height:var(--hrThickness);margin-bottom:calc(var(--baseUnit) - var(--hrThickness)/2)}*+hr:last-child{margin-top:calc(var(--hrThickness)/-2)}hr:not(:first-child){margin-bottom:calc(var(--baseUnit) - var(--hrThickness));margin-top:var(--baseUnit)}.grid>hr{grid-column:1/-1}.grid>hr,.grid>hr:not(:first-child):not(:last-child){margin-bottom:0;margin-top:calc(var(--baseUnit) - var(--hrThickness))}.bold,b,strong{font-weight:600}.italic,em,i{font-style:italic}.code,.monospace,code,pre,tt{word-wrap:break-word;font-family:var(--monoFont),Inconsolata,Menlo,monospace;font-weight:400;white-space:pre-wrap}b .code,b .monospace,b code,b pre,b tt{font-weight:600}.code b,.monospace b,code b,pre b,tt b{font-weight:600;font-weight:580}pre{display:block;overflow-x:auto}pre,pre code,pre tt{word-wrap:normal;white-space:pre}h{-moz-appearance:none;appearance:none;-webkit-appearance:none;display:block}.h1,h,h1{font-size:var(--h1-size);font-weight:720;letter-spacing:-.05em;line-height:calc(var(--baseUnit)*2);margin-bottom:var(--baseUnit);margin-left:calc(var(--h1-size)/-22);margin-top:calc(var(--baseUnit)*2);word-break:break-word}h1.single-line{margin-top:var(--baseUnit);padding-bottom:calc(var(--baseUnit)*.5);padding-top:calc(var(--baseUnit)*.5)}h1.single-line:first-child{margin-top:0;padding-bottom:calc(var(--baseUnit)*.5)}.h2,h2{font-size:var(--h2-size);font-weight:700;letter-spacing:-.03em;line-height:calc(var(--baseUnit)*2);margin-bottom:var(--baseUnit);margin-left:calc(var(--h2-size)/-26)}*+h2,h2.single-line{margin-bottom:0;margin-top:var(--baseUnit);padding-bottom:calc(var(--baseUnit)*.5);padding-top:calc(var(--baseUnit)*.5)}h2.single-line:first-child{margin-top:unset}.h3,.h4,h3,h4{font-size:var(--h3-size);font-weight:700;letter-spacing:-.02em;margin-bottom:var(--baseline);padding-bottom:calc(var(--baseline)*.25);padding-top:calc(var(--baseline)*.75)}.h4,h4{font-size:var(--h4-size);font-weight:700;letter-spacing:-.012em}h3.single-line,h4.single-line{margin-bottom:0;padding-bottom:calc(var(--baseline)*1.25)}h3+h1,h3+h1.single-line,h4+h1,h4+h1.single-line{margin-top:calc(var(--baseline)*3)}h3.single-line+h1,h3.single-line+h1.single-line,h3.single-line+h2,h3.single-line+h2.single-line,h4.single-line+h1,h4.single-line+h1.single-line,h4.single-line+h2,h4.single-line+h2.single-line{margin-top:var(--baseUnit)}h3+h2,h3+h2.single-line,h4+h2,h4+h2.single-line{margin-top:var(--baseline)}.h5,.h6,h5,h6{font-weight:670;letter-spacing:-.015em}.grid>.h1,.grid>.h2,.grid>.h3,.grid>.h4,.grid>.h5,.grid>.h6,.grid>h1,.grid>h2,.grid>h3,.grid>h4,.grid>h5,.grid>h6,.h5,.h6,h5,h6{margin-bottom:0}.h1.large,h1.large{--h1-size:4rem;font-weight:730;line-height:calc(var(--baseUnit)*3)}.h1.xlarge,h1.xlarge{--h1-size:5.5rem;font-weight:740;line-height:calc(var(--baseUnit)*4)}.h1.xxlarge,h1.xxlarge{--h1-size:7.5rem;font-weight:750;line-height:calc(var(--baseUnit)*5)}.h1.xxxlarge,h1.xxxlarge{--h1-size:10.5rem;font-weight:760;line-height:calc(var(--baseUnit)*7)}.small{font-size:.85rem;line-height:var(--baseUnit)}.xsmall{font-size:.8em;line-height:calc(var(--baseUnit)*.75);padding-top:calc(var(--baseUnit)*.25)}.xxsmall{font-size:.65em;line-height:calc(var(--baseUnit)*.7);padding-top:calc(var(--baseUnit)*.3)}.xxxsmall{font-size:.5em;line-height:calc(var(--baseUnit)*.5);padding-bottom:calc(var(--baseUnit)*.25)}a,a:link,a:visited{color:var(--blue);text-decoration:none;white-space:nowrap}a:hover{color:var(--blue);-webkit-text-decoration:underline var(--blue);text-decoration:underline var(--blue)}a:active{background:var(--blue);color:var(--backgroundColor)}.h1>a,.h2>a,.h3>a,.h4>a,.h5>a,.h6>a,h1>a,h2>a,h3>a,h4>a,h5>a,h6>a{text-decoration:none}.h1>a:hover,.h2>a:hover,.h3>a:hover,.h4>a:hover,.h5>a:hover,.h6>a:hover,h1>a:hover,h2>a:hover,h3>a:hover,h4>a:hover,h5>a:hover,h6>a:hover{color:inherit;text-decoration:underline;-webkit-text-decoration:underline rgba(0,0,0,.3);text-decoration:underline rgba(0,0,0,.3)}a.plain{color:inherit;text-decoration:none;white-space:unset}a.plain:active{background:unset;color:unset}img,img:first-child,img:last-child{display:block;margin-bottom:var(--baseline);margin-top:var(--baseline)}img:only-child{margin:0}*+img{margin-top:calc(var(--baseline)*-1)}img.cover,img.fill{-o-object-fit:cover;object-fit:cover}.grid>div>img,.grid>p>img{max-width:100%;-o-object-fit:contain;object-fit:contain}li{margin-bottom:var(--baseline);margin-left:.2em}li>p+ol,li>p+ul{margin-top:calc(var(--baseline)*-1)}li.task-list-item{list-style-type:none}li.task-list-item>input[type=checkbox]{--outlineSvgUrl:url('data:image/svg+xml;utf8,');--checkSvgUrl:url('data:image/svg+xml;utf8,');-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;display:inline-block;height:var(--baseline);list-style:none;margin-left:-1.4em;margin-right:.5em;opacity:1;position:relative;width:1.5em}li.task-list-item>input[type=checkbox]:after,li.task-list-item>input[type=checkbox]:before{--webkit-touch-callout:none;background-position:50%;background-repeat:no-repeat;background-size:contain;bottom:-.25em;color:transparent;content:"X";display:block;left:0;position:absolute;top:-.25em;width:1.1em}li.task-list-item>input[type=checkbox]:after{background-image:var(--outlineSvgUrl)}li.task-list-item>input[type=checkbox][checked]:before{background-image:var(--checkSvgUrl)}@supports ((-webkit-mask-image:linear-gradient(rgba(0,0,0,1),red)) or (mask-image:linear-gradient(rgba(0,0,0,1),red))){li.task-list-item>input[type=checkbox]:after,li.task-list-item>input[type=checkbox]:before{-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}li.task-list-item>input[type=checkbox]:after{background:var(--foregroundColor);-webkit-mask-image:var(--outlineSvgUrl);mask-image:var(--outlineSvgUrl)}li.task-list-item>input[type=checkbox][checked]:before{background:var(--foregroundColor);-webkit-mask-image:var(--checkSvgUrl);mask-image:var(--checkSvgUrl)}}.compact>li>p+ol,.compact>li>p+ul{margin-top:calc(var(--blockSpacingBottom)*-1)}ol,ul{--list-indentation:2em;list-style-position:outside}ol.compact>li,ul.compact>li{margin-bottom:0}ul{padding-left:1.3em}ol[start]{-webkit-padding-start:var(--list-indentation);padding-inline-start:var(--list-indentation)}ol:not([start]){counter-reset:ol-counter;list-style:none;padding-left:var(--list-indentation)}ol:not([start])>li{counter-increment:ol-counter;position:relative}ol:not([start])>li:before{--space:.5em;--width:calc(var(--list-indentation) - var(--space));content:counter(ol-counter) ". ";font-variant-numeric:tabular-nums;font-weight:500;height:var(--baseUnit);left:calc(var(--width)*-1 + var(--space)*-1);position:absolute;text-align:left;width:var(--width)}table{--border-width:1px;--border-opacity:.15;--border-color:rgba(var(--foregroundColor-rgb),calc(var(--foregroundColor-a)*var(--border-opacity)));border-collapse:collapse;border-right:var(--border-width) solid var(--border-color);border-spacing:0;border-top:var(--border-width) solid var(--border-color);margin-bottom:calc(var(--baseUnit)*1.5);margin-top:calc(var(--baseUnit)*1 + var(--border-width)*-1);overflow:auto;position:relative}table:first-child{margin-bottom:calc(var(--baseUnit)*.5);margin-top:calc(var(--baseUnit)*.5 + var(--border-width)*-1)}table *{box-sizing:border-box}table td,table th{background-image:linear-gradient(90deg,var(--border-color),var(--border-color) 1px,transparent 1px,transparent calc(var(--baseline)/2));background-position:0 -1px;background-repeat:no-repeat;background-size:100% 100%;padding:var(--baseline) 1em;position:relative}table td:after,table th:after{background:var(--border-color);bottom:0;color:transparent;content:"A";height:var(--border-width);left:0;pointer-events:none;position:absolute;right:0}table th{font-weight:600;text-align:left}table th[align=center]{text-align:center}table th[align=right]{text-align:right}p+table{margin-top:calc(var(--baseUnit)*1.5 + var(--border-width)*-1)}@media only screen and (max-width:600px){.only-large-window{display:none}}@media only screen and (min-width:601px){.only-small-window{display:none}}.single-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.block{display:block}.inline{display:inline-block}.flex,.flex-h{display:flex}.flex-h{flex-direction:row}.flex-v{display:flex;flex-direction:column}.flex-h.center{flex-direction:row}.flex-h.center,.flex-v.center{align-items:center;display:flex}.flex-v.center{flex-direction:column}.flex-h.top{flex-direction:row}.flex-h.top,.flex-v.left{align-items:flex-start;display:flex}.flex-v.left,.flex-v.right{flex-direction:column}.flex-v.right{align-items:flex-end;display:flex}.flex-v .center{align-self:center}.flex-v .left{align-self:flex-start}.flex-v .right{align-self:flex-end}.flex-h .top{align-self:flex-start}.flex-h .center{align-self:center}.flex-h .bottom{align-self:flex-end}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}img.top{align-self:center;-o-object-position:center top;object-position:center top}img.center{align-self:center;-o-object-position:center center;object-position:center center}img.bottom{align-self:center;-o-object-position:center bottom;object-position:center bottom}img.left.top{align-self:flex-start;-o-object-position:left top;object-position:left top}img.left.center{align-self:flex-start;-o-object-position:left center;object-position:left center}img.left.bottom{align-self:flex-start;-o-object-position:left bottom;object-position:left bottom}img.right.top{align-self:flex-end;-o-object-position:right top;object-position:right top}img.right.center{align-self:flex-end;-o-object-position:right center;object-position:right center}img.right.bottom{align-self:flex-end;-o-object-position:right bottom;object-position:right bottom}.padding0{padding:0}.padding1{padding:calc(var(--baseUnit)*1)}.padding2{padding:calc(var(--baseUnit)*2)}.padding3{padding:calc(var(--baseUnit)*3)}.padding4{padding:calc(var(--baseUnit)*4)}.padding5{padding:calc(var(--baseUnit)*5);padding:calc(var(--baseUnit)*6);padding:calc(var(--baseUnit)*7);padding:calc(var(--baseUnit)*8)}.margin0{margin:0}.margin1{margin:calc(var(--baseUnit)*1)}.margin2{margin:calc(var(--baseUnit)*2)}.margin3{margin:calc(var(--baseUnit)*3)}.margin4{margin:calc(var(--baseUnit)*4)}.margin5{margin:calc(var(--baseUnit)*5);margin:calc(var(--baseUnit)*6);margin:calc(var(--baseUnit)*7);margin:calc(var(--baseUnit)*8)}.w-1{width:calc(var(--baseUnit)*1)}.w-2{width:calc(var(--baseUnit)*2)}.w-3{width:calc(var(--baseUnit)*3)}.w-4{width:calc(var(--baseUnit)*4)}.w-5{width:calc(var(--baseUnit)*5)}.w-6{width:calc(var(--baseUnit)*6)}.w-7{width:calc(var(--baseUnit)*7)}.w-8{width:calc(var(--baseUnit)*8)}.w-9{width:calc(var(--baseUnit)*9)}.w-10{width:calc(var(--baseUnit)*10)}.w-11{width:calc(var(--baseUnit)*11)}.w-12{width:calc(var(--baseUnit)*12)}.w-13{width:calc(var(--baseUnit)*13)}.w-14{width:calc(var(--baseUnit)*14)}.w-15{width:calc(var(--baseUnit)*15)}.w-16{width:calc(var(--baseUnit)*16)}.w-17{width:calc(var(--baseUnit)*17)}.w-18{width:calc(var(--baseUnit)*18)}.w-19{width:calc(var(--baseUnit)*19)}.w-20{width:calc(var(--baseUnit)*20)}.w-21{width:calc(var(--baseUnit)*21)}.w-22{width:calc(var(--baseUnit)*22)}.w-23{width:calc(var(--baseUnit)*23)}.w-24{width:calc(var(--baseUnit)*24)}.w-25{width:calc(var(--baseUnit)*25)}.w-26{width:calc(var(--baseUnit)*26)}.w-27{width:calc(var(--baseUnit)*27)}.w-28{width:calc(var(--baseUnit)*28)}.w-29{width:calc(var(--baseUnit)*29)}.w-30{width:calc(var(--baseUnit)*30)}.w-31{width:calc(var(--baseUnit)*31)}.w-32{width:calc(var(--baseUnit)*32)}.w-33{width:calc(var(--baseUnit)*33)}.w-34{width:calc(var(--baseUnit)*34)}.w-35{width:calc(var(--baseUnit)*35)}.w-36{width:calc(var(--baseUnit)*36)}.w-37{width:calc(var(--baseUnit)*37)}.w-38{width:calc(var(--baseUnit)*38)}.w-39{width:calc(var(--baseUnit)*39)}.w-40{width:calc(var(--baseUnit)*40)}.w-full{width:100%}.h-1{height:calc(var(--baseUnit)*1)}.h-2{height:calc(var(--baseUnit)*2)}.h-3{height:calc(var(--baseUnit)*3)}.h-4{height:calc(var(--baseUnit)*4)}.h-5{height:calc(var(--baseUnit)*5)}.h-6{height:calc(var(--baseUnit)*6)}.h-7{height:calc(var(--baseUnit)*7)}.h-8{height:calc(var(--baseUnit)*8)}.h-9{height:calc(var(--baseUnit)*9)}.h-10{height:calc(var(--baseUnit)*10)}.h-11{height:calc(var(--baseUnit)*11)}.h-12{height:calc(var(--baseUnit)*12)}.h-13{height:calc(var(--baseUnit)*13)}.h-14{height:calc(var(--baseUnit)*14)}.h-15{height:calc(var(--baseUnit)*15)}.h-16{height:calc(var(--baseUnit)*16)}.h-17{height:calc(var(--baseUnit)*17)}.h-18{height:calc(var(--baseUnit)*18)}.h-19{height:calc(var(--baseUnit)*19)}.h-20{height:calc(var(--baseUnit)*20)}.h-21{height:calc(var(--baseUnit)*21)}.h-22{height:calc(var(--baseUnit)*22)}.h-23{height:calc(var(--baseUnit)*23)}.h-24{height:calc(var(--baseUnit)*24)}.h-25{height:calc(var(--baseUnit)*25)}.h-26{height:calc(var(--baseUnit)*26)}.h-27{height:calc(var(--baseUnit)*27)}.h-28{height:calc(var(--baseUnit)*28)}.h-29{height:calc(var(--baseUnit)*29)}.h-30{height:calc(var(--baseUnit)*30)}.h-31{height:calc(var(--baseUnit)*31)}.h-32{height:calc(var(--baseUnit)*32)}.h-33{height:calc(var(--baseUnit)*33)}.h-34{height:calc(var(--baseUnit)*34)}.h-35{height:calc(var(--baseUnit)*35)}.h-36{height:calc(var(--baseUnit)*36)}.h-37{height:calc(var(--baseUnit)*37)}.h-38{height:calc(var(--baseUnit)*38)}.h-39{height:calc(var(--baseUnit)*39)}.h-40{height:calc(var(--baseUnit)*40)}.opacity0{opacity:0}.opacity1{opacity:.1}.opacity2{opacity:.2}.opacity3{opacity:.3}.opacity4{opacity:.4}.opacity5{opacity:.5}.opacity6{opacity:.6}.opacity7{opacity:.7}.opacity8{opacity:.8}.opacity9{opacity:.9}.opacity10{opacity:1}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none;width:0}:root{--baseSansFontSize: 12}body{padding:0;overflow:hidden;height:100vh;position:relative}main{display:grid;grid-template-columns:minmax(0,1fr) 25rem;overflow:hidden;height:100%}main.loading{filter:blur(5px)}table{margin:2rem 0}.loader{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--foregroundColor);z-index:10;background:radial-gradient(var(--backgroundColor),transparent)}.loader h1{padding-bottom:calc(var(--baseUnit) * 3);animation:loader 1.5s ease-in-out 0s infinite alternate}.loader q{font-size:2rem;font-weight:450;letter-spacing:-.02em}.matthew{font-style:normal;text-transform:uppercase;letter-spacing:.1em;font-size:1.5rem;font-weight:700}@keyframes loader{0%{font-weight:100}to{font-weight:900}}@media only screen and (max-width: 600px){.loader h1{font-size:3rem}.loader q{font-size:1.6rem}.matthew{font-size:1.3rem}}body.drag-over{background:rgba(var(--green-rgb),.1);border:.4166666667rem solid var(--green)}.file-input input[type=file]{display:none}.add-font{display:none;padding-right:var(--baseUnit);cursor:pointer}.lhs{margin:calc(var(--baseUnit) * 2);margin-bottom:0;overflow:hidden;display:flex;flex-direction:column}.rhs{border-left:.08333333333rem solid rgba(var(--foregroundColor-rgb),.08);padding:calc(var(--baseUnit) * 2) var(--baseUnit) var(--baseUnit);overflow-y:scroll;display:flex;flex-direction:column;height:100vh}.lhs header,ul li,.right-side,#dark-mode{display:flex;align-items:center}.lhs header{position:sticky;top:0;background:var(--backgroundColor);padding-bottom:var(--baseline)}.lhs .right-side{margin-left:auto}.test-area{font-size:32px;line-height:1.5;letter-spacing:0;padding-top:calc(var(--baseUnit) * 2);border:none;outline:none;width:100%;background-color:transparent;color:var(--forgroundColor);resize:none;flex:1 1 0;overflow-y:scroll;padding-bottom:calc(var(--baseUnit) * 4)}.test-area:after{content:"";height:calc(var(--baseUnit) * 2)}.drag-over .lhs header{background:transparent}#dark-mode{cursor:pointer}.content-type li{opacity:.3;padding-right:var(--baseUnit);font-size:1.1666666667rem;font-weight:500;cursor:pointer}.text-align li{cursor:pointer}.text-align svg,.github svg{width:1.6666666667rem;height:1.6666666667rem}#dark-mode svg{width:1.8333333333rem;height:1.8333333333rem}header ul{margin-bottom:0}.text-align{margin-left:var(--baseline)}.text-align li{padding-right:var(--baseline)}.text-align li:last-child{padding-right:var(--baseUnit)}.text-align svg path{fill:rgba(var(--foregroundColor-rgb),.3)}.text-align .active svg path,.text-align svg:hover path{fill:var(--foregroundColor)}.drag-drop{margin-bottom:0;padding-right:var(--baseUnit);user-select:none;-webkit-user-select:none}.seperator{display:none;background-color:var(--backgroundColor);filter:brightness(.95);align-items:center;justify-content:center;height:1.4rem;cursor:ns-resize}.dark .seperator{filter:brightness(.6)}.seperator .handle{width:3rem;background-color:var(--backgroundColor);filter:brightness(.6);height:.7rem;border-radius:1rem}.dark .seperator .handle{filter:brightness(4)}@media only screen and (max-width: 825px){.lhs{margin:var(--baseUnit)}.drag-drop{display:none}.add-font{display:block}}@media only screen and (max-width: 720px){main{--row1: 60vh;grid-template-columns:1fr;grid-template-rows:var(--row1) auto auto}.lhs,.rhs{margin:0;padding:var(--baseUnit);height:100%;overflow-x:hidden}.rhs{border-left:none;margin-top:var(--baseUnit);padding-top:0;padding-bottom:calc(var(--baseUnit) * 2)}.seperator{display:flex}.test-area{padding-top:var(--baseUnit);margin:0}}.p-short{display:none}@media only screen and (max-width: 415px){.p-long{display:none}.p-short{display:block}}.dark input[type=number]::-webkit-inner-spin-button{opacity:.4}h5{margin-bottom:var(--baseline)}.rows{display:grid;grid-template-columns:auto 1fr;column-gap:var(--baseUnit);row-gap:var(--baseline);margin-bottom:var(--baseline)}.type-detail .rows .val{opacity:.5;align-self:flex-end}.rows>div,.rows-3>div{display:contents}.content-type li.active,.content-type li:hover{opacity:1}input[type=range]{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;outline:none;background:transparent;z-index:1;margin-right:-.1666666667rem}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border:.1666666667rem solid var(--foregroundColor);background-color:var(--backgroundColor);border-radius:50%;height:1rem;width:1rem;cursor:pointer}input[type=range]::-webkit-slider-thumb:hover{background-color:var(--foregroundColor)}input[type=range].animating::-webkit-slider-thumb{background-color:var(--foregroundColor);cursor:auto}input[type=range]::-moz-range-thumb:hover{background-color:var(--foregroundColor)}input[type=range].animating::--moz-range-thumb{background-color:var(--foregroundColor);cursor:auto}input[type=range]::-moz-range-thumb{-moz-appearance:none;appearance:none;border:.1666666667rem solid var(--foregroundColor);width:.6666666667rem;height:.6666666667rem;border-radius:50%;background-color:var(--backgroundColor);cursor:pointer}input[type=range]::-webkit-slider-runnable-track{-webkit-appearance:none;-moz-appearance:none;appearance:none}.slider{position:relative;width:100%;display:flex;align-items:center}.slider:hover:before{opacity:1}.slider:before{position:absolute;top:50%;right:0;left:0;content:"";height:.1666666667rem;background-color:rgba(var(--foregroundColor-rgb),.1);margin-top:-.08333333333rem;margin-left:.1666666667rem}.progress{position:absolute;top:50%;left:0;background-color:var(--foregroundColor);height:.1666666667rem;margin-top:-.08333333333rem}.rows-3{display:grid;grid-template-columns:auto 1fr auto;column-gap:var(--baseUnit);row-gap:var(--baseline)}.type-detail .rows-3{row-gap:calc(var(--baseline) / 1.8)}.val-input{width:3.7rem;border:.08333333333rem solid rgba(var(--foregroundColor-rgb),.2);outline:none;background-color:transparent;font-size:1rem;color:rgba(var(--foregroundColor-rgb),.6);border-radius:.25rem}.val-input:hover,.val-input:active,.val-input:focus{border:.08333333333rem solid rgba(var(--foregroundColor-rgb),.8)}.variable-axes,.type-detail{padding-bottom:calc(var(--baseUnit) * 1.5)}.var-axes-set .val{width:4ex;color:rgba(var(--foregroundColor-rgb),.6)}.named-variation,.animation{display:flex;align-items:center}.faux-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;grid-column:span 2;align-self:flex-end;border-radius:.1666666667rem;border:none;outline:none;padding:.1666666667rem 1.6666666667rem .1666666667rem .6666666667rem;color:var(--foregroundColor);fill:var(--foregroundColor);background:rgba(var(--foregroundColor-rgb),.05);background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTggMTAuOTk5OEwzIDUuOTk5OEwzLjcgNS4yOTk4TDggOS41OTk4TDEyLjMgNS4yOTk4TDEzIDUuOTk5OEw4IDEwLjk5OThaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPC9zdmc+Cg==);background-repeat:no-repeat;background-position:center right .6666666667rem}.dark .faux-select{background:rgba(var(--foregroundColor-rgb),.08);background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTggMTAuOTk5OEwzIDUuOTk5OEwzLjcgNS4yOTk4TDggOS41OTk4TDEyLjMgNS4yOTk4TDEzIDUuOTk5OEw4IDEwLjk5OThaIiBmaWxsPSIjZGRkZGRkIi8+Cjwvc3ZnPgo=);background-repeat:no-repeat;background-position:center right .6666666667rem}.variable-axes .animate>*{margin-top:-.3rem}.open-type .rows{column-gap:calc(var(--baseUnit) / 3)}.open-type input{min-height:1rem;min-width:1rem;align-self:center;margin:0}.ot-set .ext{opacity:.6;margin-left:auto}.ot-set .exlp{text-transform:capitalize;user-select:none;-webkit-user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:1rem}.ot-set{display:flex;align-items:center;margin:0 calc(-1 * var(--baseUnit));padding:calc(var(--baseline) / 2) var(--baseUnit)}.ot-set:hover{background-color:rgba(var(--foregroundColor-rgb),.03)}.faux-checkbox{position:relative;height:1.2rem;width:1.2rem;margin-right:var(--baseline)}.faux-checkbox input{opacity:0}.faux-checkbox span{position:absolute;inset:0;border-radius:.1666666667rem;pointer-events:none;border:1px solid rgba(var(--foregroundColor-rgb),.3)}.faux-checkbox span:after{content:"";position:absolute;display:none;border:solid white;border-width:0 .1666666667rem .1666666667rem 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:.25rem;height:.5833333333rem;left:.3333333333rem;top:.05rem}.faux-checkbox input:checked~span{background:var(--blue)}.faux-checkbox input:checked~span:after{display:block}@media only screen and (max-width: 720px){.rhs h5{padding-bottom:calc(var(--baseUnit) / 1.5)}.rows,.rows-3{row-gap:var(--baseUnit);margin-bottom:var(--baseUnit)}.type-detail .rows-3{row-gap:calc(var(--baseUnit) / 1.3)}.faux-select{margin-left:4rem}.ot-set{padding:calc(var(--baseUnit) / 2) var(--baseUnit)}}footer{padding-top:calc(var(--baseUnit) * 2);display:flex;align-items:center;margin-top:auto}footer .github{margin-left:auto;display:flex;align-items:center;opacity:.4}footer .twitter,footer .github{opacity:.4}footer .twitter:hover,footer .github:hover{opacity:1}.toast{display:flex;justify-content:center;width:100vw;position:absolute;bottom:0}.toast .msg{pointer-events:none;height:2.2857142857rem;align-items:center;padding:0 1.1428571429rem;background:#191919;border-radius:4px;color:#fff;display:flex;opacity:.1;position:fixed;bottom:calc(var(--baseUnit) * .75);transition:.25s all ease-in;transform:translateY(80px);transition:.12s all cubic-bezier(.2,0,1,.9)}.dark .toast .msg{background:#2e2e2e}.toast.active .msg{bottom:calc(var(--baseUnit) * 1);transform:translate(0);opacity:1} 2 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/fontkit@^1.8.0": 6 | "integrity" "sha512-hLlxFWmyMkWyJiO/RVc8L5OVxHXzoyH0ZKZsUQkhlKwUdUtwb77u7jjxVtdTpFHaAtfifbA8CQ4/QjcQcLiwDw==" 7 | "resolved" "https://registry.npmjs.org/@types/fontkit/-/fontkit-1.8.0.tgz" 8 | "version" "1.8.0" 9 | dependencies: 10 | "@types/node" "*" 11 | 12 | "@types/node@*": 13 | "integrity" "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" 14 | "resolved" "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz" 15 | "version" "15.12.2" 16 | 17 | "acorn-node@^1.2.0", "acorn-node@^1.3.0", "acorn-node@^1.5.2", "acorn-node@^1.6.1": 18 | "integrity" "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==" 19 | "resolved" "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" 20 | "version" "1.8.2" 21 | dependencies: 22 | "acorn" "^7.0.0" 23 | "acorn-walk" "^7.0.0" 24 | "xtend" "^4.0.2" 25 | 26 | "acorn-walk@^7.0.0": 27 | "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 28 | "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" 29 | "version" "7.2.0" 30 | 31 | "acorn@^7.0.0": 32 | "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" 33 | "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" 34 | "version" "7.4.1" 35 | 36 | "amdefine@>=0.0.4": 37 | "integrity" "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==" 38 | "resolved" "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" 39 | "version" "1.0.1" 40 | 41 | "array-from@^2.1.1": 42 | "integrity" "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==" 43 | "resolved" "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz" 44 | "version" "2.1.1" 45 | 46 | "asn1.js@^5.2.0": 47 | "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" 48 | "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" 49 | "version" "5.4.1" 50 | dependencies: 51 | "bn.js" "^4.0.0" 52 | "inherits" "^2.0.1" 53 | "minimalistic-assert" "^1.0.0" 54 | "safer-buffer" "^2.1.0" 55 | 56 | "assert@^1.4.0": 57 | "integrity" "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==" 58 | "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" 59 | "version" "1.5.0" 60 | dependencies: 61 | "object-assign" "^4.1.1" 62 | "util" "0.10.3" 63 | 64 | "ast-transform@0.0.0": 65 | "integrity" "sha1-dJRAWIh9goPhidlUYAlHvJj+AGI= sha512-e/JfLiSoakfmL4wmTGPjv0HpTICVmxwXgYOB8x+mzozHL8v+dSfCbrJ8J8hJ0YBP0XcYu1aLZ6b/3TnxNK3P2A==" 66 | "resolved" "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz" 67 | "version" "0.0.0" 68 | dependencies: 69 | "escodegen" "~1.2.0" 70 | "esprima" "~1.0.4" 71 | "through" "~2.3.4" 72 | 73 | "ast-types@^0.7.0": 74 | "integrity" "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk= sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==" 75 | "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz" 76 | "version" "0.7.8" 77 | 78 | "available-typed-arrays@^1.0.2": 79 | "integrity" "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" 80 | "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz" 81 | "version" "1.0.4" 82 | 83 | "babel-runtime@^6.26.0": 84 | "integrity" "sha1-llxwWGaOgrVde/4E/yM3vItWR/4= sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==" 85 | "resolved" "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" 86 | "version" "6.26.0" 87 | dependencies: 88 | "core-js" "^2.4.0" 89 | "regenerator-runtime" "^0.11.0" 90 | 91 | "balanced-match@^1.0.0": 92 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 93 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 94 | "version" "1.0.2" 95 | 96 | "base64-js@^1.0.2", "base64-js@^1.1.2", "base64-js@^1.3.0": 97 | "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 98 | "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" 99 | "version" "1.5.1" 100 | 101 | "bn.js@^4.0.0": 102 | "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 103 | "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" 104 | "version" "4.12.0" 105 | 106 | "bn.js@^4.1.0": 107 | "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 108 | "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" 109 | "version" "4.12.0" 110 | 111 | "bn.js@^4.11.9": 112 | "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 113 | "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" 114 | "version" "4.12.0" 115 | 116 | "bn.js@^5.0.0", "bn.js@^5.1.1": 117 | "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" 118 | "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" 119 | "version" "5.2.0" 120 | 121 | "brace-expansion@^1.1.7": 122 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 123 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 124 | "version" "1.1.11" 125 | dependencies: 126 | "balanced-match" "^1.0.0" 127 | "concat-map" "0.0.1" 128 | 129 | "brfs@^2.0.0", "brfs@^2.0.2": 130 | "integrity" "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==" 131 | "resolved" "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz" 132 | "version" "2.0.2" 133 | dependencies: 134 | "quote-stream" "^1.0.1" 135 | "resolve" "^1.1.5" 136 | "static-module" "^3.0.2" 137 | "through2" "^2.0.0" 138 | 139 | "brorand@^1.0.1", "brorand@^1.1.0": 140 | "integrity" "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" 141 | "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" 142 | "version" "1.1.0" 143 | 144 | "brotli@^1.2.0": 145 | "integrity" "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y= sha512-K0HNa0RRpUpcF8yS4yNSd6vmkrvA+wRd+symIcwhfqGLAi7YgGlKfO4oDYVgiahiLGNviO9uY7Zlb1MCPeTmSA==" 146 | "resolved" "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz" 147 | "version" "1.3.2" 148 | dependencies: 149 | "base64-js" "^1.1.2" 150 | 151 | "browser-pack@^6.0.1": 152 | "integrity" "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==" 153 | "resolved" "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz" 154 | "version" "6.1.0" 155 | dependencies: 156 | "combine-source-map" "~0.8.0" 157 | "defined" "^1.0.0" 158 | "JSONStream" "^1.0.3" 159 | "safe-buffer" "^5.1.1" 160 | "through2" "^2.0.0" 161 | "umd" "^3.0.0" 162 | 163 | "browser-resolve@^1.8.1": 164 | "integrity" "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==" 165 | "resolved" "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz" 166 | "version" "1.11.3" 167 | dependencies: 168 | "resolve" "1.1.7" 169 | 170 | "browser-resolve@^2.0.0": 171 | "integrity" "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==" 172 | "resolved" "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz" 173 | "version" "2.0.0" 174 | dependencies: 175 | "resolve" "^1.17.0" 176 | 177 | "browserify-aes@^1.0.0", "browserify-aes@^1.0.4": 178 | "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" 179 | "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" 180 | "version" "1.2.0" 181 | dependencies: 182 | "buffer-xor" "^1.0.3" 183 | "cipher-base" "^1.0.0" 184 | "create-hash" "^1.1.0" 185 | "evp_bytestokey" "^1.0.3" 186 | "inherits" "^2.0.1" 187 | "safe-buffer" "^5.0.1" 188 | 189 | "browserify-cipher@^1.0.0": 190 | "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" 191 | "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" 192 | "version" "1.0.1" 193 | dependencies: 194 | "browserify-aes" "^1.0.4" 195 | "browserify-des" "^1.0.0" 196 | "evp_bytestokey" "^1.0.0" 197 | 198 | "browserify-des@^1.0.0": 199 | "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" 200 | "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" 201 | "version" "1.0.2" 202 | dependencies: 203 | "cipher-base" "^1.0.1" 204 | "des.js" "^1.0.0" 205 | "inherits" "^2.0.1" 206 | "safe-buffer" "^5.1.2" 207 | 208 | "browserify-optional@^1.0.0", "browserify-optional@^1.0.1": 209 | "integrity" "sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk= sha512-VrhjbZ+Ba5mDiSYEuPelekQMfTbhcA2DhLk2VQWqdcCROWeFqlTcXZ7yfRkXCIl8E+g4gINJYJiRB7WEtfomAQ==" 210 | "resolved" "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz" 211 | "version" "1.0.1" 212 | dependencies: 213 | "ast-transform" "0.0.0" 214 | "ast-types" "^0.7.0" 215 | "browser-resolve" "^1.8.1" 216 | 217 | "browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": 218 | "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" 219 | "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" 220 | "version" "4.1.0" 221 | dependencies: 222 | "bn.js" "^5.0.0" 223 | "randombytes" "^2.0.1" 224 | 225 | "browserify-sign@^4.0.0": 226 | "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" 227 | "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" 228 | "version" "4.2.1" 229 | dependencies: 230 | "bn.js" "^5.1.1" 231 | "browserify-rsa" "^4.0.1" 232 | "create-hash" "^1.2.0" 233 | "create-hmac" "^1.1.7" 234 | "elliptic" "^6.5.3" 235 | "inherits" "^2.0.4" 236 | "parse-asn1" "^5.1.5" 237 | "readable-stream" "^3.6.0" 238 | "safe-buffer" "^5.2.0" 239 | 240 | "browserify-zlib@~0.2.0": 241 | "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" 242 | "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" 243 | "version" "0.2.0" 244 | dependencies: 245 | "pako" "~1.0.5" 246 | 247 | "browserify@^17.0.0": 248 | "integrity" "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==" 249 | "resolved" "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz" 250 | "version" "17.0.0" 251 | dependencies: 252 | "assert" "^1.4.0" 253 | "browser-pack" "^6.0.1" 254 | "browser-resolve" "^2.0.0" 255 | "browserify-zlib" "~0.2.0" 256 | "buffer" "~5.2.1" 257 | "cached-path-relative" "^1.0.0" 258 | "concat-stream" "^1.6.0" 259 | "console-browserify" "^1.1.0" 260 | "constants-browserify" "~1.0.0" 261 | "crypto-browserify" "^3.0.0" 262 | "defined" "^1.0.0" 263 | "deps-sort" "^2.0.1" 264 | "domain-browser" "^1.2.0" 265 | "duplexer2" "~0.1.2" 266 | "events" "^3.0.0" 267 | "glob" "^7.1.0" 268 | "has" "^1.0.0" 269 | "htmlescape" "^1.1.0" 270 | "https-browserify" "^1.0.0" 271 | "inherits" "~2.0.1" 272 | "insert-module-globals" "^7.2.1" 273 | "JSONStream" "^1.0.3" 274 | "labeled-stream-splicer" "^2.0.0" 275 | "mkdirp-classic" "^0.5.2" 276 | "module-deps" "^6.2.3" 277 | "os-browserify" "~0.3.0" 278 | "parents" "^1.0.1" 279 | "path-browserify" "^1.0.0" 280 | "process" "~0.11.0" 281 | "punycode" "^1.3.2" 282 | "querystring-es3" "~0.2.0" 283 | "read-only-stream" "^2.0.0" 284 | "readable-stream" "^2.0.2" 285 | "resolve" "^1.1.4" 286 | "shasum-object" "^1.0.0" 287 | "shell-quote" "^1.6.1" 288 | "stream-browserify" "^3.0.0" 289 | "stream-http" "^3.0.0" 290 | "string_decoder" "^1.1.1" 291 | "subarg" "^1.0.0" 292 | "syntax-error" "^1.1.1" 293 | "through2" "^2.0.0" 294 | "timers-browserify" "^1.0.1" 295 | "tty-browserify" "0.0.1" 296 | "url" "~0.11.0" 297 | "util" "~0.12.0" 298 | "vm-browserify" "^1.0.0" 299 | "xtend" "^4.0.0" 300 | 301 | "buffer-equal@0.0.1": 302 | "integrity" "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" 303 | "resolved" "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz" 304 | "version" "0.0.1" 305 | 306 | "buffer-from@^1.0.0": 307 | "integrity" "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 308 | "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" 309 | "version" "1.1.1" 310 | 311 | "buffer-xor@^1.0.3": 312 | "integrity" "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" 313 | "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" 314 | "version" "1.0.3" 315 | 316 | "buffer@~5.2.1": 317 | "integrity" "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==" 318 | "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz" 319 | "version" "5.2.1" 320 | dependencies: 321 | "base64-js" "^1.0.2" 322 | "ieee754" "^1.1.4" 323 | 324 | "builtin-status-codes@^3.0.0": 325 | "integrity" "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" 326 | "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" 327 | "version" "3.0.0" 328 | 329 | "cached-path-relative@^1.0.0", "cached-path-relative@^1.0.2": 330 | "integrity" "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==" 331 | "resolved" "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz" 332 | "version" "1.0.2" 333 | 334 | "call-bind@^1.0.0", "call-bind@^1.0.2": 335 | "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" 336 | "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" 337 | "version" "1.0.2" 338 | dependencies: 339 | "function-bind" "^1.1.1" 340 | "get-intrinsic" "^1.0.2" 341 | 342 | "cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": 343 | "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" 344 | "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" 345 | "version" "1.0.4" 346 | dependencies: 347 | "inherits" "^2.0.1" 348 | "safe-buffer" "^5.0.1" 349 | 350 | "clone@^1.0.4": 351 | "integrity" "sha1-2jCcwmPfFZlMaIypAheco8fNfH4= sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" 352 | "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" 353 | "version" "1.0.4" 354 | 355 | "combine-source-map@^0.8.0", "combine-source-map@~0.8.0": 356 | "integrity" "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==" 357 | "resolved" "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz" 358 | "version" "0.8.0" 359 | dependencies: 360 | "convert-source-map" "~1.1.0" 361 | "inline-source-map" "~0.6.0" 362 | "lodash.memoize" "~3.0.3" 363 | "source-map" "~0.5.3" 364 | 365 | "concat-map@0.0.1": 366 | "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 367 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 368 | "version" "0.0.1" 369 | 370 | "concat-stream@^1.6.0", "concat-stream@^1.6.1", "concat-stream@~1.6.0": 371 | "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" 372 | "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" 373 | "version" "1.6.2" 374 | dependencies: 375 | "buffer-from" "^1.0.0" 376 | "inherits" "^2.0.3" 377 | "readable-stream" "^2.2.2" 378 | "typedarray" "^0.0.6" 379 | 380 | "console-browserify@^1.1.0": 381 | "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" 382 | "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" 383 | "version" "1.2.0" 384 | 385 | "constants-browserify@~1.0.0": 386 | "integrity" "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" 387 | "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" 388 | "version" "1.0.0" 389 | 390 | "convert-source-map@^1.5.1": 391 | "integrity" "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==" 392 | "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" 393 | "version" "1.7.0" 394 | dependencies: 395 | "safe-buffer" "~5.1.1" 396 | 397 | "convert-source-map@~1.1.0": 398 | "integrity" "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==" 399 | "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz" 400 | "version" "1.1.3" 401 | 402 | "core-js@^2.4.0": 403 | "integrity" "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" 404 | "resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" 405 | "version" "2.6.12" 406 | 407 | "core-util-is@~1.0.0": 408 | "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" 409 | "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" 410 | "version" "1.0.2" 411 | 412 | "create-ecdh@^4.0.0": 413 | "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" 414 | "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" 415 | "version" "4.0.4" 416 | dependencies: 417 | "bn.js" "^4.1.0" 418 | "elliptic" "^6.5.3" 419 | 420 | "create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": 421 | "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" 422 | "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" 423 | "version" "1.2.0" 424 | dependencies: 425 | "cipher-base" "^1.0.1" 426 | "inherits" "^2.0.1" 427 | "md5.js" "^1.3.4" 428 | "ripemd160" "^2.0.1" 429 | "sha.js" "^2.4.0" 430 | 431 | "create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": 432 | "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" 433 | "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" 434 | "version" "1.1.7" 435 | dependencies: 436 | "cipher-base" "^1.0.3" 437 | "create-hash" "^1.1.0" 438 | "inherits" "^2.0.1" 439 | "ripemd160" "^2.0.0" 440 | "safe-buffer" "^5.0.1" 441 | "sha.js" "^2.4.8" 442 | 443 | "crypto-browserify@^3.0.0": 444 | "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" 445 | "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" 446 | "version" "3.12.0" 447 | dependencies: 448 | "browserify-cipher" "^1.0.0" 449 | "browserify-sign" "^4.0.0" 450 | "create-ecdh" "^4.0.0" 451 | "create-hash" "^1.1.0" 452 | "create-hmac" "^1.1.0" 453 | "diffie-hellman" "^5.0.0" 454 | "inherits" "^2.0.1" 455 | "pbkdf2" "^3.0.3" 456 | "public-encrypt" "^4.0.0" 457 | "randombytes" "^2.0.0" 458 | "randomfill" "^1.0.3" 459 | 460 | "d@^1.0.1", "d@1": 461 | "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" 462 | "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" 463 | "version" "1.0.1" 464 | dependencies: 465 | "es5-ext" "^0.10.50" 466 | "type" "^1.0.1" 467 | 468 | "dash-ast@^1.0.0": 469 | "integrity" "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" 470 | "resolved" "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz" 471 | "version" "1.0.0" 472 | 473 | "deep-equal@^1.0.0": 474 | "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" 475 | "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" 476 | "version" "1.1.1" 477 | dependencies: 478 | "is-arguments" "^1.0.4" 479 | "is-date-object" "^1.0.1" 480 | "is-regex" "^1.0.4" 481 | "object-is" "^1.0.1" 482 | "object-keys" "^1.1.1" 483 | "regexp.prototype.flags" "^1.2.0" 484 | 485 | "deep-is@~0.1.3": 486 | "integrity" "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw==" 487 | "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" 488 | "version" "0.1.3" 489 | 490 | "define-properties@^1.1.3": 491 | "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" 492 | "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" 493 | "version" "1.1.3" 494 | dependencies: 495 | "object-keys" "^1.0.12" 496 | 497 | "defined@^1.0.0": 498 | "integrity" "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" 499 | "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" 500 | "version" "1.0.0" 501 | 502 | "deps-sort@^2.0.1": 503 | "integrity" "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==" 504 | "resolved" "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz" 505 | "version" "2.0.1" 506 | dependencies: 507 | "JSONStream" "^1.0.3" 508 | "shasum-object" "^1.0.0" 509 | "subarg" "^1.0.0" 510 | "through2" "^2.0.0" 511 | 512 | "des.js@^1.0.0": 513 | "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" 514 | "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" 515 | "version" "1.0.1" 516 | dependencies: 517 | "inherits" "^2.0.1" 518 | "minimalistic-assert" "^1.0.0" 519 | 520 | "detective@^5.2.0": 521 | "integrity" "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==" 522 | "resolved" "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz" 523 | "version" "5.2.0" 524 | dependencies: 525 | "acorn-node" "^1.6.1" 526 | "defined" "^1.0.0" 527 | "minimist" "^1.1.1" 528 | 529 | "dfa@^1.2.0": 530 | "integrity" "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" 531 | "resolved" "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz" 532 | "version" "1.2.0" 533 | 534 | "diffie-hellman@^5.0.0": 535 | "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" 536 | "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" 537 | "version" "5.0.3" 538 | dependencies: 539 | "bn.js" "^4.1.0" 540 | "miller-rabin" "^4.0.0" 541 | "randombytes" "^2.0.0" 542 | 543 | "domain-browser@^1.2.0": 544 | "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" 545 | "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" 546 | "version" "1.2.0" 547 | 548 | "duplexer2@^0.1.2", "duplexer2@~0.1.0", "duplexer2@~0.1.2", "duplexer2@~0.1.4": 549 | "integrity" "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==" 550 | "resolved" "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" 551 | "version" "0.1.4" 552 | dependencies: 553 | "readable-stream" "^2.0.2" 554 | 555 | "elliptic@^6.5.3": 556 | "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" 557 | "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" 558 | "version" "6.5.4" 559 | dependencies: 560 | "bn.js" "^4.11.9" 561 | "brorand" "^1.1.0" 562 | "hash.js" "^1.0.0" 563 | "hmac-drbg" "^1.0.1" 564 | "inherits" "^2.0.4" 565 | "minimalistic-assert" "^1.0.1" 566 | "minimalistic-crypto-utils" "^1.0.1" 567 | 568 | "es-abstract@^1.18.0-next.1", "es-abstract@^1.18.0-next.2": 569 | "integrity" "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==" 570 | "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz" 571 | "version" "1.18.3" 572 | dependencies: 573 | "call-bind" "^1.0.2" 574 | "es-to-primitive" "^1.2.1" 575 | "function-bind" "^1.1.1" 576 | "get-intrinsic" "^1.1.1" 577 | "has" "^1.0.3" 578 | "has-symbols" "^1.0.2" 579 | "is-callable" "^1.2.3" 580 | "is-negative-zero" "^2.0.1" 581 | "is-regex" "^1.1.3" 582 | "is-string" "^1.0.6" 583 | "object-inspect" "^1.10.3" 584 | "object-keys" "^1.1.1" 585 | "object.assign" "^4.1.2" 586 | "string.prototype.trimend" "^1.0.4" 587 | "string.prototype.trimstart" "^1.0.4" 588 | "unbox-primitive" "^1.0.1" 589 | 590 | "es-to-primitive@^1.2.1": 591 | "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" 592 | "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" 593 | "version" "1.2.1" 594 | dependencies: 595 | "is-callable" "^1.1.4" 596 | "is-date-object" "^1.0.1" 597 | "is-symbol" "^1.0.2" 598 | 599 | "es5-ext@^0.10.35", "es5-ext@^0.10.50", "es5-ext@~0.10.14": 600 | "integrity" "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==" 601 | "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" 602 | "version" "0.10.53" 603 | dependencies: 604 | "es6-iterator" "~2.0.3" 605 | "es6-symbol" "~3.1.3" 606 | "next-tick" "~1.0.0" 607 | 608 | "es6-iterator@~2.0.1", "es6-iterator@~2.0.3": 609 | "integrity" "sha1-p96IkUGgWpSwhUQDstCg+/qY87c= sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==" 610 | "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" 611 | "version" "2.0.3" 612 | dependencies: 613 | "d" "1" 614 | "es5-ext" "^0.10.35" 615 | "es6-symbol" "^3.1.1" 616 | 617 | "es6-map@^0.1.5": 618 | "integrity" "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==" 619 | "resolved" "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz" 620 | "version" "0.1.5" 621 | dependencies: 622 | "d" "1" 623 | "es5-ext" "~0.10.14" 624 | "es6-iterator" "~2.0.1" 625 | "es6-set" "~0.1.5" 626 | "es6-symbol" "~3.1.1" 627 | "event-emitter" "~0.3.5" 628 | 629 | "es6-set@^0.1.5", "es6-set@~0.1.5": 630 | "integrity" "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= sha512-7S8YXIcUfPMOr3rqJBVMePAbRsD1nWeSMQ86K/lDI76S3WKXz+KWILvTIPbTroubOkZTGh+b+7/xIIphZXNYbA==" 631 | "resolved" "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz" 632 | "version" "0.1.5" 633 | dependencies: 634 | "d" "1" 635 | "es5-ext" "~0.10.14" 636 | "es6-iterator" "~2.0.1" 637 | "es6-symbol" "3.1.1" 638 | "event-emitter" "~0.3.5" 639 | 640 | "es6-symbol@^3.1.1", "es6-symbol@~3.1.1", "es6-symbol@~3.1.3": 641 | "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" 642 | "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" 643 | "version" "3.1.3" 644 | dependencies: 645 | "d" "^1.0.1" 646 | "ext" "^1.1.2" 647 | 648 | "es6-symbol@3.1.1": 649 | "integrity" "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= sha512-exfuQY8UGtn/N+gL1iKkH8fpNd5sJ760nJq6mmZAHldfxMD5kX07lbQuYlspoXsuknXNv9Fb7y2GsPOnQIbxHg==" 650 | "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz" 651 | "version" "3.1.1" 652 | dependencies: 653 | "d" "1" 654 | "es5-ext" "~0.10.14" 655 | 656 | "esbuild-darwin-arm64@0.14.23": 657 | "integrity" "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==" 658 | "resolved" "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz" 659 | "version" "0.14.23" 660 | 661 | "esbuild@^0.14.23": 662 | "integrity" "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==" 663 | "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz" 664 | "version" "0.14.23" 665 | optionalDependencies: 666 | "esbuild-android-arm64" "0.14.23" 667 | "esbuild-darwin-64" "0.14.23" 668 | "esbuild-darwin-arm64" "0.14.23" 669 | "esbuild-freebsd-64" "0.14.23" 670 | "esbuild-freebsd-arm64" "0.14.23" 671 | "esbuild-linux-32" "0.14.23" 672 | "esbuild-linux-64" "0.14.23" 673 | "esbuild-linux-arm" "0.14.23" 674 | "esbuild-linux-arm64" "0.14.23" 675 | "esbuild-linux-mips64le" "0.14.23" 676 | "esbuild-linux-ppc64le" "0.14.23" 677 | "esbuild-linux-riscv64" "0.14.23" 678 | "esbuild-linux-s390x" "0.14.23" 679 | "esbuild-netbsd-64" "0.14.23" 680 | "esbuild-openbsd-64" "0.14.23" 681 | "esbuild-sunos-64" "0.14.23" 682 | "esbuild-windows-32" "0.14.23" 683 | "esbuild-windows-64" "0.14.23" 684 | "esbuild-windows-arm64" "0.14.23" 685 | 686 | "escodegen@^1.11.1": 687 | "integrity" "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==" 688 | "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" 689 | "version" "1.14.3" 690 | dependencies: 691 | "esprima" "^4.0.1" 692 | "estraverse" "^4.2.0" 693 | "esutils" "^2.0.2" 694 | "optionator" "^0.8.1" 695 | optionalDependencies: 696 | "source-map" "~0.6.1" 697 | 698 | "escodegen@~1.2.0": 699 | "integrity" "sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E= sha512-yLy3Cc+zAC0WSmoT2fig3J87TpQ8UaZGx8ahCAs9FL8qNbyV7CVyPKS74DG4bsHiL5ew9sxdYx131OkBQMFnvA==" 700 | "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz" 701 | "version" "1.2.0" 702 | dependencies: 703 | "esprima" "~1.0.4" 704 | "estraverse" "~1.5.0" 705 | "esutils" "~1.0.0" 706 | optionalDependencies: 707 | "source-map" "~0.1.30" 708 | 709 | "esprima@^4.0.1": 710 | "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 711 | "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" 712 | "version" "4.0.1" 713 | 714 | "esprima@~1.0.4": 715 | "integrity" "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==" 716 | "resolved" "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" 717 | "version" "1.0.4" 718 | 719 | "estraverse@^4.2.0": 720 | "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" 721 | "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" 722 | "version" "4.3.0" 723 | 724 | "estraverse@~1.5.0": 725 | "integrity" "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==" 726 | "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz" 727 | "version" "1.5.1" 728 | 729 | "estree-is-function@^1.0.0": 730 | "integrity" "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==" 731 | "resolved" "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz" 732 | "version" "1.0.0" 733 | 734 | "esutils@^2.0.2": 735 | "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 736 | "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 737 | "version" "2.0.3" 738 | 739 | "esutils@~1.0.0": 740 | "integrity" "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==" 741 | "resolved" "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz" 742 | "version" "1.0.0" 743 | 744 | "event-emitter@~0.3.5": 745 | "integrity" "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==" 746 | "resolved" "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" 747 | "version" "0.3.5" 748 | dependencies: 749 | "d" "1" 750 | "es5-ext" "~0.10.14" 751 | 752 | "events@^3.0.0": 753 | "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" 754 | "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" 755 | "version" "3.3.0" 756 | 757 | "evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": 758 | "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" 759 | "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" 760 | "version" "1.0.3" 761 | dependencies: 762 | "md5.js" "^1.3.4" 763 | "safe-buffer" "^5.1.1" 764 | 765 | "ext@^1.1.2": 766 | "integrity" "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==" 767 | "resolved" "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz" 768 | "version" "1.4.0" 769 | dependencies: 770 | "type" "^2.0.0" 771 | 772 | "fast-levenshtein@~2.0.6": 773 | "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 774 | "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 775 | "version" "2.0.6" 776 | 777 | "fast-safe-stringify@^2.0.7": 778 | "integrity" "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" 779 | "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz" 780 | "version" "2.0.7" 781 | 782 | "fontkit@^1.8.1": 783 | "integrity" "sha512-BsNCjDoYRxmNWFdAuK1y9bQt+igIxGtTC9u/jSFjR9MKhmI00rP1fwSvERt+5ddE82544l0XH5mzXozQVUy2Tw==" 784 | "resolved" "https://registry.npmjs.org/fontkit/-/fontkit-1.8.1.tgz" 785 | "version" "1.8.1" 786 | dependencies: 787 | "babel-runtime" "^6.26.0" 788 | "brfs" "^2.0.0" 789 | "brotli" "^1.2.0" 790 | "browserify-optional" "^1.0.1" 791 | "clone" "^1.0.4" 792 | "deep-equal" "^1.0.0" 793 | "dfa" "^1.2.0" 794 | "restructure" "^0.5.3" 795 | "tiny-inflate" "^1.0.2" 796 | "unicode-properties" "^1.2.2" 797 | "unicode-trie" "^0.3.0" 798 | 799 | "foreach@^2.0.5": 800 | "integrity" "sha1-C+4AUBiusmDQo6865ljdATbsG5k= sha512-ZBbtRiapkZYLsqoPyZOR+uPfto0GRMNQN1GwzZtZt7iZvPPbDDQV0JF5Hx4o/QFQ5c0vyuoZ98T8RSBbopzWtA==" 801 | "resolved" "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" 802 | "version" "2.0.5" 803 | 804 | "fs.realpath@^1.0.0": 805 | "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 806 | "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 807 | "version" "1.0.0" 808 | 809 | "function-bind@^1.1.1": 810 | "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 811 | "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 812 | "version" "1.1.1" 813 | 814 | "get-assigned-identifiers@^1.1.0", "get-assigned-identifiers@^1.2.0": 815 | "integrity" "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" 816 | "resolved" "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz" 817 | "version" "1.2.0" 818 | 819 | "get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1": 820 | "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" 821 | "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" 822 | "version" "1.1.1" 823 | dependencies: 824 | "function-bind" "^1.1.1" 825 | "has" "^1.0.3" 826 | "has-symbols" "^1.0.1" 827 | 828 | "glob@^7.1.0": 829 | "integrity" "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==" 830 | "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" 831 | "version" "7.1.7" 832 | dependencies: 833 | "fs.realpath" "^1.0.0" 834 | "inflight" "^1.0.4" 835 | "inherits" "2" 836 | "minimatch" "^3.0.4" 837 | "once" "^1.3.0" 838 | "path-is-absolute" "^1.0.0" 839 | 840 | "grilles@^1.0.6": 841 | "integrity" "sha512-LBkzT06vZEs/NykXtTQEgualqWkYvVmBA5W5MUmDT5pwGk47u8gGadvoviBGF/HHhOwciv9YYX5OQbhSLwbeTQ==" 842 | "resolved" "https://registry.npmjs.org/grilles/-/grilles-1.0.6.tgz" 843 | "version" "1.0.6" 844 | 845 | "has-bigints@^1.0.1": 846 | "integrity" "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" 847 | "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" 848 | "version" "1.0.1" 849 | 850 | "has-symbols@^1.0.1", "has-symbols@^1.0.2": 851 | "integrity" "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" 852 | "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" 853 | "version" "1.0.2" 854 | 855 | "has@^1.0.0", "has@^1.0.1", "has@^1.0.3": 856 | "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" 857 | "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 858 | "version" "1.0.3" 859 | dependencies: 860 | "function-bind" "^1.1.1" 861 | 862 | "hash-base@^3.0.0": 863 | "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" 864 | "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" 865 | "version" "3.1.0" 866 | dependencies: 867 | "inherits" "^2.0.4" 868 | "readable-stream" "^3.6.0" 869 | "safe-buffer" "^5.2.0" 870 | 871 | "hash.js@^1.0.0", "hash.js@^1.0.3": 872 | "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" 873 | "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" 874 | "version" "1.1.7" 875 | dependencies: 876 | "inherits" "^2.0.3" 877 | "minimalistic-assert" "^1.0.1" 878 | 879 | "hmac-drbg@^1.0.1": 880 | "integrity" "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" 881 | "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" 882 | "version" "1.0.1" 883 | dependencies: 884 | "hash.js" "^1.0.3" 885 | "minimalistic-assert" "^1.0.0" 886 | "minimalistic-crypto-utils" "^1.0.1" 887 | 888 | "htmlescape@^1.1.0": 889 | "integrity" "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==" 890 | "resolved" "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz" 891 | "version" "1.1.1" 892 | 893 | "https-browserify@^1.0.0": 894 | "integrity" "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" 895 | "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" 896 | "version" "1.0.0" 897 | 898 | "ieee754@^1.1.4": 899 | "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 900 | "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" 901 | "version" "1.2.1" 902 | 903 | "inflight@^1.0.4": 904 | "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" 905 | "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 906 | "version" "1.0.6" 907 | dependencies: 908 | "once" "^1.3.0" 909 | "wrappy" "1" 910 | 911 | "inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@~2.0.4", "inherits@2": 912 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 913 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 914 | "version" "2.0.4" 915 | 916 | "inherits@2.0.1": 917 | "integrity" "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" 918 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 919 | "version" "2.0.1" 920 | 921 | "inline-source-map@~0.6.0": 922 | "integrity" "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==" 923 | "resolved" "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz" 924 | "version" "0.6.2" 925 | dependencies: 926 | "source-map" "~0.5.3" 927 | 928 | "insert-module-globals@^7.2.1": 929 | "integrity" "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==" 930 | "resolved" "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz" 931 | "version" "7.2.1" 932 | dependencies: 933 | "acorn-node" "^1.5.2" 934 | "combine-source-map" "^0.8.0" 935 | "concat-stream" "^1.6.1" 936 | "is-buffer" "^1.1.0" 937 | "JSONStream" "^1.0.3" 938 | "path-is-absolute" "^1.0.1" 939 | "process" "~0.11.0" 940 | "through2" "^2.0.0" 941 | "undeclared-identifiers" "^1.1.2" 942 | "xtend" "^4.0.0" 943 | 944 | "is-arguments@^1.0.4": 945 | "integrity" "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==" 946 | "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz" 947 | "version" "1.1.0" 948 | dependencies: 949 | "call-bind" "^1.0.0" 950 | 951 | "is-bigint@^1.0.1": 952 | "integrity" "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" 953 | "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz" 954 | "version" "1.0.2" 955 | 956 | "is-boolean-object@^1.1.0": 957 | "integrity" "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==" 958 | "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz" 959 | "version" "1.1.1" 960 | dependencies: 961 | "call-bind" "^1.0.2" 962 | 963 | "is-buffer@^1.1.0": 964 | "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 965 | "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 966 | "version" "1.1.6" 967 | 968 | "is-callable@^1.1.4", "is-callable@^1.2.3": 969 | "integrity" "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" 970 | "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz" 971 | "version" "1.2.3" 972 | 973 | "is-core-module@^2.2.0": 974 | "integrity" "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==" 975 | "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz" 976 | "version" "2.4.0" 977 | dependencies: 978 | "has" "^1.0.3" 979 | 980 | "is-date-object@^1.0.1": 981 | "integrity" "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" 982 | "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz" 983 | "version" "1.0.4" 984 | 985 | "is-generator-function@^1.0.7": 986 | "integrity" "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==" 987 | "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz" 988 | "version" "1.0.9" 989 | 990 | "is-negative-zero@^2.0.1": 991 | "integrity" "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" 992 | "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" 993 | "version" "2.0.1" 994 | 995 | "is-number-object@^1.0.4": 996 | "integrity" "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" 997 | "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz" 998 | "version" "1.0.5" 999 | 1000 | "is-regex@^1.0.4", "is-regex@^1.1.3": 1001 | "integrity" "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==" 1002 | "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz" 1003 | "version" "1.1.3" 1004 | dependencies: 1005 | "call-bind" "^1.0.2" 1006 | "has-symbols" "^1.0.2" 1007 | 1008 | "is-string@^1.0.5", "is-string@^1.0.6": 1009 | "integrity" "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" 1010 | "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz" 1011 | "version" "1.0.6" 1012 | 1013 | "is-symbol@^1.0.2", "is-symbol@^1.0.3": 1014 | "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" 1015 | "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" 1016 | "version" "1.0.4" 1017 | dependencies: 1018 | "has-symbols" "^1.0.2" 1019 | 1020 | "is-typed-array@^1.1.3": 1021 | "integrity" "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==" 1022 | "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz" 1023 | "version" "1.1.5" 1024 | dependencies: 1025 | "available-typed-arrays" "^1.0.2" 1026 | "call-bind" "^1.0.2" 1027 | "es-abstract" "^1.18.0-next.2" 1028 | "foreach" "^2.0.5" 1029 | "has-symbols" "^1.0.1" 1030 | 1031 | "isarray@~1.0.0": 1032 | "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 1033 | "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1034 | "version" "1.0.0" 1035 | 1036 | "jsonparse@^1.2.0": 1037 | "integrity" "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" 1038 | "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" 1039 | "version" "1.3.1" 1040 | 1041 | "JSONStream@^1.0.3": 1042 | "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" 1043 | "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" 1044 | "version" "1.3.5" 1045 | dependencies: 1046 | "jsonparse" "^1.2.0" 1047 | "through" ">=2.2.7 <3" 1048 | 1049 | "labeled-stream-splicer@^2.0.0": 1050 | "integrity" "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==" 1051 | "resolved" "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz" 1052 | "version" "2.0.2" 1053 | dependencies: 1054 | "inherits" "^2.0.1" 1055 | "stream-splicer" "^2.0.0" 1056 | 1057 | "levn@~0.3.0": 1058 | "integrity" "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" 1059 | "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" 1060 | "version" "0.3.0" 1061 | dependencies: 1062 | "prelude-ls" "~1.1.2" 1063 | "type-check" "~0.3.2" 1064 | 1065 | "lodash.memoize@~3.0.3": 1066 | "integrity" "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==" 1067 | "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz" 1068 | "version" "3.0.4" 1069 | 1070 | "magic-string@0.25.1": 1071 | "integrity" "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==" 1072 | "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz" 1073 | "version" "0.25.1" 1074 | dependencies: 1075 | "sourcemap-codec" "^1.4.1" 1076 | 1077 | "md5.js@^1.3.4": 1078 | "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" 1079 | "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" 1080 | "version" "1.3.5" 1081 | dependencies: 1082 | "hash-base" "^3.0.0" 1083 | "inherits" "^2.0.1" 1084 | "safe-buffer" "^5.1.2" 1085 | 1086 | "merge-source-map@1.0.4": 1087 | "integrity" "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8= sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==" 1088 | "resolved" "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz" 1089 | "version" "1.0.4" 1090 | dependencies: 1091 | "source-map" "^0.5.6" 1092 | 1093 | "miller-rabin@^4.0.0": 1094 | "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" 1095 | "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" 1096 | "version" "4.0.1" 1097 | dependencies: 1098 | "bn.js" "^4.0.0" 1099 | "brorand" "^1.0.1" 1100 | 1101 | "minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": 1102 | "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" 1103 | "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" 1104 | "version" "1.0.1" 1105 | 1106 | "minimalistic-crypto-utils@^1.0.1": 1107 | "integrity" "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" 1108 | "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" 1109 | "version" "1.0.1" 1110 | 1111 | "minimatch@^3.0.4": 1112 | "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" 1113 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" 1114 | "version" "3.0.4" 1115 | dependencies: 1116 | "brace-expansion" "^1.1.7" 1117 | 1118 | "minimist@^1.1.0", "minimist@^1.1.1", "minimist@^1.1.3": 1119 | "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1120 | "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" 1121 | "version" "1.2.5" 1122 | 1123 | "mkdirp-classic@^0.5.2": 1124 | "integrity" "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 1125 | "resolved" "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" 1126 | "version" "0.5.3" 1127 | 1128 | "module-deps@^6.2.3": 1129 | "integrity" "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==" 1130 | "resolved" "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz" 1131 | "version" "6.2.3" 1132 | dependencies: 1133 | "browser-resolve" "^2.0.0" 1134 | "cached-path-relative" "^1.0.2" 1135 | "concat-stream" "~1.6.0" 1136 | "defined" "^1.0.0" 1137 | "detective" "^5.2.0" 1138 | "duplexer2" "^0.1.2" 1139 | "inherits" "^2.0.1" 1140 | "JSONStream" "^1.0.3" 1141 | "parents" "^1.0.0" 1142 | "readable-stream" "^2.0.2" 1143 | "resolve" "^1.4.0" 1144 | "stream-combiner2" "^1.1.1" 1145 | "subarg" "^1.0.0" 1146 | "through2" "^2.0.0" 1147 | "xtend" "^4.0.0" 1148 | 1149 | "next-tick@~1.0.0": 1150 | "integrity" "sha1-yobR/ogoFpsBICCOPchCS524NCw= sha512-mc/caHeUcdjnC/boPWJefDr4KUIWQNv+tlnFnJd38QMou86QtxQzBJfxgGRzvx8jazYRqrVlaHarfO72uNxPOg==" 1151 | "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" 1152 | "version" "1.0.0" 1153 | 1154 | "object-assign@^4.1.1": 1155 | "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1156 | "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 1157 | "version" "4.1.1" 1158 | 1159 | "object-inspect@^1.10.3", "object-inspect@^1.6.0": 1160 | "integrity" "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" 1161 | "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz" 1162 | "version" "1.10.3" 1163 | 1164 | "object-is@^1.0.1": 1165 | "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" 1166 | "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" 1167 | "version" "1.1.5" 1168 | dependencies: 1169 | "call-bind" "^1.0.2" 1170 | "define-properties" "^1.1.3" 1171 | 1172 | "object-keys@^1.0.12", "object-keys@^1.1.1": 1173 | "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1174 | "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" 1175 | "version" "1.1.1" 1176 | 1177 | "object.assign@^4.1.2": 1178 | "integrity" "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==" 1179 | "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" 1180 | "version" "4.1.2" 1181 | dependencies: 1182 | "call-bind" "^1.0.0" 1183 | "define-properties" "^1.1.3" 1184 | "has-symbols" "^1.0.1" 1185 | "object-keys" "^1.1.1" 1186 | 1187 | "once@^1.3.0": 1188 | "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" 1189 | "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1190 | "version" "1.4.0" 1191 | dependencies: 1192 | "wrappy" "1" 1193 | 1194 | "optionator@^0.8.1": 1195 | "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" 1196 | "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" 1197 | "version" "0.8.3" 1198 | dependencies: 1199 | "deep-is" "~0.1.3" 1200 | "fast-levenshtein" "~2.0.6" 1201 | "levn" "~0.3.0" 1202 | "prelude-ls" "~1.1.2" 1203 | "type-check" "~0.3.2" 1204 | "word-wrap" "~1.2.3" 1205 | 1206 | "os-browserify@~0.3.0": 1207 | "integrity" "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" 1208 | "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" 1209 | "version" "0.3.0" 1210 | 1211 | "pako@^0.2.5": 1212 | "integrity" "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" 1213 | "resolved" "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" 1214 | "version" "0.2.9" 1215 | 1216 | "pako@~1.0.5": 1217 | "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" 1218 | "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" 1219 | "version" "1.0.11" 1220 | 1221 | "parents@^1.0.0", "parents@^1.0.1": 1222 | "integrity" "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==" 1223 | "resolved" "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz" 1224 | "version" "1.0.1" 1225 | dependencies: 1226 | "path-platform" "~0.11.15" 1227 | 1228 | "parse-asn1@^5.0.0", "parse-asn1@^5.1.5": 1229 | "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" 1230 | "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" 1231 | "version" "5.1.6" 1232 | dependencies: 1233 | "asn1.js" "^5.2.0" 1234 | "browserify-aes" "^1.0.0" 1235 | "evp_bytestokey" "^1.0.0" 1236 | "pbkdf2" "^3.0.3" 1237 | "safe-buffer" "^5.1.1" 1238 | 1239 | "path-browserify@^1.0.0": 1240 | "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" 1241 | "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" 1242 | "version" "1.0.1" 1243 | 1244 | "path-is-absolute@^1.0.0", "path-is-absolute@^1.0.1": 1245 | "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1246 | "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1247 | "version" "1.0.1" 1248 | 1249 | "path-parse@^1.0.6": 1250 | "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1251 | "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1252 | "version" "1.0.7" 1253 | 1254 | "path-platform@~0.11.15": 1255 | "integrity" "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==" 1256 | "resolved" "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz" 1257 | "version" "0.11.15" 1258 | 1259 | "pbkdf2@^3.0.3": 1260 | "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" 1261 | "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" 1262 | "version" "3.1.2" 1263 | dependencies: 1264 | "create-hash" "^1.1.2" 1265 | "create-hmac" "^1.1.4" 1266 | "ripemd160" "^2.0.1" 1267 | "safe-buffer" "^5.0.1" 1268 | "sha.js" "^2.4.8" 1269 | 1270 | "prelude-ls@~1.1.2": 1271 | "integrity" "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" 1272 | "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" 1273 | "version" "1.1.2" 1274 | 1275 | "process-nextick-args@~2.0.0": 1276 | "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1277 | "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 1278 | "version" "2.0.1" 1279 | 1280 | "process@~0.11.0": 1281 | "integrity" "sha1-czIwDoQBYb2j5podHZGn1LwW8YI= sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" 1282 | "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" 1283 | "version" "0.11.10" 1284 | 1285 | "public-encrypt@^4.0.0": 1286 | "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" 1287 | "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" 1288 | "version" "4.0.3" 1289 | dependencies: 1290 | "bn.js" "^4.1.0" 1291 | "browserify-rsa" "^4.0.0" 1292 | "create-hash" "^1.1.0" 1293 | "parse-asn1" "^5.0.0" 1294 | "randombytes" "^2.0.1" 1295 | "safe-buffer" "^5.1.2" 1296 | 1297 | "punycode@^1.3.2": 1298 | "integrity" "sha1-wNWmOycYgArY4esPpSachN1BhF4= sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" 1299 | "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" 1300 | "version" "1.4.1" 1301 | 1302 | "punycode@1.3.2": 1303 | "integrity" "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" 1304 | "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" 1305 | "version" "1.3.2" 1306 | 1307 | "querystring-es3@~0.2.0": 1308 | "integrity" "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" 1309 | "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" 1310 | "version" "0.2.1" 1311 | 1312 | "querystring@0.2.0": 1313 | "integrity" "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" 1314 | "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" 1315 | "version" "0.2.0" 1316 | 1317 | "quote-stream@^1.0.1": 1318 | "integrity" "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==" 1319 | "resolved" "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz" 1320 | "version" "1.0.2" 1321 | dependencies: 1322 | "buffer-equal" "0.0.1" 1323 | "minimist" "^1.1.3" 1324 | "through2" "^2.0.0" 1325 | 1326 | "randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5": 1327 | "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" 1328 | "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" 1329 | "version" "2.1.0" 1330 | dependencies: 1331 | "safe-buffer" "^5.1.0" 1332 | 1333 | "randomfill@^1.0.3": 1334 | "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" 1335 | "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" 1336 | "version" "1.0.4" 1337 | dependencies: 1338 | "randombytes" "^2.0.5" 1339 | "safe-buffer" "^5.1.0" 1340 | 1341 | "read-only-stream@^2.0.0": 1342 | "integrity" "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==" 1343 | "resolved" "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz" 1344 | "version" "2.0.0" 1345 | dependencies: 1346 | "readable-stream" "^2.0.2" 1347 | 1348 | "readable-stream@^2.0.2", "readable-stream@^2.2.2", "readable-stream@~2.3.3", "readable-stream@~2.3.6": 1349 | "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" 1350 | "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" 1351 | "version" "2.3.7" 1352 | dependencies: 1353 | "core-util-is" "~1.0.0" 1354 | "inherits" "~2.0.3" 1355 | "isarray" "~1.0.0" 1356 | "process-nextick-args" "~2.0.0" 1357 | "safe-buffer" "~5.1.1" 1358 | "string_decoder" "~1.1.1" 1359 | "util-deprecate" "~1.0.1" 1360 | 1361 | "readable-stream@^3.5.0": 1362 | "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" 1363 | "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" 1364 | "version" "3.6.0" 1365 | dependencies: 1366 | "inherits" "^2.0.3" 1367 | "string_decoder" "^1.1.1" 1368 | "util-deprecate" "^1.0.1" 1369 | 1370 | "readable-stream@^3.6.0": 1371 | "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" 1372 | "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" 1373 | "version" "3.6.0" 1374 | dependencies: 1375 | "inherits" "^2.0.3" 1376 | "string_decoder" "^1.1.1" 1377 | "util-deprecate" "^1.0.1" 1378 | 1379 | "regenerator-runtime@^0.11.0": 1380 | "integrity" "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 1381 | "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" 1382 | "version" "0.11.1" 1383 | 1384 | "regexp.prototype.flags@^1.2.0": 1385 | "integrity" "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==" 1386 | "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" 1387 | "version" "1.3.1" 1388 | dependencies: 1389 | "call-bind" "^1.0.2" 1390 | "define-properties" "^1.1.3" 1391 | 1392 | "resolve@^1.1.4", "resolve@^1.1.5", "resolve@^1.17.0", "resolve@^1.4.0": 1393 | "integrity" "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==" 1394 | "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" 1395 | "version" "1.20.0" 1396 | dependencies: 1397 | "is-core-module" "^2.2.0" 1398 | "path-parse" "^1.0.6" 1399 | 1400 | "resolve@1.1.7": 1401 | "integrity" "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" 1402 | "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" 1403 | "version" "1.1.7" 1404 | 1405 | "restructure@^0.5.3": 1406 | "integrity" "sha1-9U591WNZD7NP1r9Vh2EJrsyyjeg= sha512-wgNbkrlRpj0NarhUyiCfOXlu8DybDIYRV7MOieKGOl16N7NmAkjTtPhn2F4CBOsyRL8m6RWZLSzjJVVPAkJuiw==" 1407 | "resolved" "https://registry.npmjs.org/restructure/-/restructure-0.5.4.tgz" 1408 | "version" "0.5.4" 1409 | dependencies: 1410 | "browserify-optional" "^1.0.0" 1411 | 1412 | "ripemd160@^2.0.0", "ripemd160@^2.0.1": 1413 | "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" 1414 | "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" 1415 | "version" "2.0.2" 1416 | dependencies: 1417 | "hash-base" "^3.0.0" 1418 | "inherits" "^2.0.1" 1419 | 1420 | "safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@^5.2.0", "safe-buffer@~5.2.0": 1421 | "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1422 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 1423 | "version" "5.2.1" 1424 | 1425 | "safe-buffer@~5.1.0", "safe-buffer@~5.1.1": 1426 | "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1427 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 1428 | "version" "5.1.2" 1429 | 1430 | "safer-buffer@^2.1.0": 1431 | "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1432 | "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 1433 | "version" "2.1.2" 1434 | 1435 | "scope-analyzer@^2.0.1": 1436 | "integrity" "sha512-azEAihtQ9mEyZGhfgTJy3IbOWEzeOrYbg7NcYEshPKnKd+LZmC3TNd5dmDxbLBsTG/JVWmCp+vDJ03vJjeXMHg==" 1437 | "resolved" "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.1.tgz" 1438 | "version" "2.1.1" 1439 | dependencies: 1440 | "array-from" "^2.1.1" 1441 | "dash-ast" "^1.0.0" 1442 | "es6-map" "^0.1.5" 1443 | "es6-set" "^0.1.5" 1444 | "es6-symbol" "^3.1.1" 1445 | "estree-is-function" "^1.0.0" 1446 | "get-assigned-identifiers" "^1.1.0" 1447 | 1448 | "sha.js@^2.4.0", "sha.js@^2.4.8": 1449 | "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" 1450 | "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" 1451 | "version" "2.4.11" 1452 | dependencies: 1453 | "inherits" "^2.0.1" 1454 | "safe-buffer" "^5.0.1" 1455 | 1456 | "shallow-copy@~0.0.1": 1457 | "integrity" "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" 1458 | "resolved" "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz" 1459 | "version" "0.0.1" 1460 | 1461 | "shasum-object@^1.0.0": 1462 | "integrity" "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==" 1463 | "resolved" "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz" 1464 | "version" "1.0.0" 1465 | dependencies: 1466 | "fast-safe-stringify" "^2.0.7" 1467 | 1468 | "shell-quote@^1.6.1": 1469 | "integrity" "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" 1470 | "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" 1471 | "version" "1.7.2" 1472 | 1473 | "simple-concat@^1.0.0": 1474 | "integrity" "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 1475 | "resolved" "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" 1476 | "version" "1.0.1" 1477 | 1478 | "source-map@^0.5.6", "source-map@~0.5.3": 1479 | "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" 1480 | "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" 1481 | "version" "0.5.7" 1482 | 1483 | "source-map@~0.1.30": 1484 | "integrity" "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==" 1485 | "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" 1486 | "version" "0.1.43" 1487 | dependencies: 1488 | "amdefine" ">=0.0.4" 1489 | 1490 | "source-map@~0.6.1": 1491 | "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1492 | "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" 1493 | "version" "0.6.1" 1494 | 1495 | "sourcemap-codec@^1.4.1": 1496 | "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" 1497 | "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" 1498 | "version" "1.4.8" 1499 | 1500 | "static-eval@^2.0.5": 1501 | "integrity" "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==" 1502 | "resolved" "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz" 1503 | "version" "2.1.0" 1504 | dependencies: 1505 | "escodegen" "^1.11.1" 1506 | 1507 | "static-module@^3.0.2": 1508 | "integrity" "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==" 1509 | "resolved" "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz" 1510 | "version" "3.0.4" 1511 | dependencies: 1512 | "acorn-node" "^1.3.0" 1513 | "concat-stream" "~1.6.0" 1514 | "convert-source-map" "^1.5.1" 1515 | "duplexer2" "~0.1.4" 1516 | "escodegen" "^1.11.1" 1517 | "has" "^1.0.1" 1518 | "magic-string" "0.25.1" 1519 | "merge-source-map" "1.0.4" 1520 | "object-inspect" "^1.6.0" 1521 | "readable-stream" "~2.3.3" 1522 | "scope-analyzer" "^2.0.1" 1523 | "shallow-copy" "~0.0.1" 1524 | "static-eval" "^2.0.5" 1525 | "through2" "~2.0.3" 1526 | 1527 | "stream-browserify@^3.0.0": 1528 | "integrity" "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==" 1529 | "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" 1530 | "version" "3.0.0" 1531 | dependencies: 1532 | "inherits" "~2.0.4" 1533 | "readable-stream" "^3.5.0" 1534 | 1535 | "stream-combiner2@^1.1.1": 1536 | "integrity" "sha1-+02KFCDqNidk4hrUeAOXvry0HL4= sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==" 1537 | "resolved" "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz" 1538 | "version" "1.1.1" 1539 | dependencies: 1540 | "duplexer2" "~0.1.0" 1541 | "readable-stream" "^2.0.2" 1542 | 1543 | "stream-http@^3.0.0": 1544 | "integrity" "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==" 1545 | "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz" 1546 | "version" "3.2.0" 1547 | dependencies: 1548 | "builtin-status-codes" "^3.0.0" 1549 | "inherits" "^2.0.4" 1550 | "readable-stream" "^3.6.0" 1551 | "xtend" "^4.0.2" 1552 | 1553 | "stream-splicer@^2.0.0": 1554 | "integrity" "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==" 1555 | "resolved" "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz" 1556 | "version" "2.0.1" 1557 | dependencies: 1558 | "inherits" "^2.0.1" 1559 | "readable-stream" "^2.0.2" 1560 | 1561 | "string_decoder@^1.1.1": 1562 | "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" 1563 | "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" 1564 | "version" "1.3.0" 1565 | dependencies: 1566 | "safe-buffer" "~5.2.0" 1567 | 1568 | "string_decoder@~1.1.1": 1569 | "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" 1570 | "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 1571 | "version" "1.1.1" 1572 | dependencies: 1573 | "safe-buffer" "~5.1.0" 1574 | 1575 | "string.prototype.trimend@^1.0.4": 1576 | "integrity" "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==" 1577 | "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" 1578 | "version" "1.0.4" 1579 | dependencies: 1580 | "call-bind" "^1.0.2" 1581 | "define-properties" "^1.1.3" 1582 | 1583 | "string.prototype.trimstart@^1.0.4": 1584 | "integrity" "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==" 1585 | "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" 1586 | "version" "1.0.4" 1587 | dependencies: 1588 | "call-bind" "^1.0.2" 1589 | "define-properties" "^1.1.3" 1590 | 1591 | "subarg@^1.0.0": 1592 | "integrity" "sha1-9izxdYHplrSPyWVpn1TAauJouNI= sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==" 1593 | "resolved" "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" 1594 | "version" "1.0.0" 1595 | dependencies: 1596 | "minimist" "^1.1.0" 1597 | 1598 | "syntax-error@^1.1.1": 1599 | "integrity" "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==" 1600 | "resolved" "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz" 1601 | "version" "1.4.0" 1602 | dependencies: 1603 | "acorn-node" "^1.2.0" 1604 | 1605 | "through@>=2.2.7 <3", "through@~2.3.4": 1606 | "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 1607 | "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1608 | "version" "2.3.8" 1609 | 1610 | "through2@^2.0.0", "through2@~2.0.3": 1611 | "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" 1612 | "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" 1613 | "version" "2.0.5" 1614 | dependencies: 1615 | "readable-stream" "~2.3.6" 1616 | "xtend" "~4.0.1" 1617 | 1618 | "timers-browserify@^1.0.1": 1619 | "integrity" "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==" 1620 | "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz" 1621 | "version" "1.4.2" 1622 | dependencies: 1623 | "process" "~0.11.0" 1624 | 1625 | "tiny-inflate@^1.0.0", "tiny-inflate@^1.0.2": 1626 | "integrity" "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" 1627 | "resolved" "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz" 1628 | "version" "1.0.3" 1629 | 1630 | "tty-browserify@0.0.1": 1631 | "integrity" "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" 1632 | "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" 1633 | "version" "0.0.1" 1634 | 1635 | "type-check@~0.3.2": 1636 | "integrity" "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" 1637 | "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" 1638 | "version" "0.3.2" 1639 | dependencies: 1640 | "prelude-ls" "~1.1.2" 1641 | 1642 | "type@^1.0.1": 1643 | "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" 1644 | "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" 1645 | "version" "1.2.0" 1646 | 1647 | "type@^2.0.0": 1648 | "integrity" "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" 1649 | "resolved" "https://registry.npmjs.org/type/-/type-2.5.0.tgz" 1650 | "version" "2.5.0" 1651 | 1652 | "typedarray@^0.0.6": 1653 | "integrity" "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" 1654 | "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" 1655 | "version" "0.0.6" 1656 | 1657 | "umd@^3.0.0": 1658 | "integrity" "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" 1659 | "resolved" "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz" 1660 | "version" "3.0.3" 1661 | 1662 | "unbox-primitive@^1.0.1": 1663 | "integrity" "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==" 1664 | "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" 1665 | "version" "1.0.1" 1666 | dependencies: 1667 | "function-bind" "^1.1.1" 1668 | "has-bigints" "^1.0.1" 1669 | "has-symbols" "^1.0.2" 1670 | "which-boxed-primitive" "^1.0.2" 1671 | 1672 | "undeclared-identifiers@^1.1.2": 1673 | "integrity" "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==" 1674 | "resolved" "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz" 1675 | "version" "1.1.3" 1676 | dependencies: 1677 | "acorn-node" "^1.3.0" 1678 | "dash-ast" "^1.0.0" 1679 | "get-assigned-identifiers" "^1.2.0" 1680 | "simple-concat" "^1.0.0" 1681 | "xtend" "^4.0.1" 1682 | 1683 | "unicode-properties@^1.2.2": 1684 | "integrity" "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==" 1685 | "resolved" "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz" 1686 | "version" "1.3.1" 1687 | dependencies: 1688 | "base64-js" "^1.3.0" 1689 | "unicode-trie" "^2.0.0" 1690 | 1691 | "unicode-trie@^0.3.0": 1692 | "integrity" "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU= sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==" 1693 | "resolved" "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz" 1694 | "version" "0.3.1" 1695 | dependencies: 1696 | "pako" "^0.2.5" 1697 | "tiny-inflate" "^1.0.0" 1698 | 1699 | "unicode-trie@^2.0.0": 1700 | "integrity" "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==" 1701 | "resolved" "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz" 1702 | "version" "2.0.0" 1703 | dependencies: 1704 | "pako" "^0.2.5" 1705 | "tiny-inflate" "^1.0.0" 1706 | 1707 | "url@~0.11.0": 1708 | "integrity" "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==" 1709 | "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" 1710 | "version" "0.11.0" 1711 | dependencies: 1712 | "punycode" "1.3.2" 1713 | "querystring" "0.2.0" 1714 | 1715 | "util-deprecate@^1.0.1", "util-deprecate@~1.0.1": 1716 | "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1717 | "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1718 | "version" "1.0.2" 1719 | 1720 | "util@~0.12.0": 1721 | "integrity" "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==" 1722 | "resolved" "https://registry.npmjs.org/util/-/util-0.12.4.tgz" 1723 | "version" "0.12.4" 1724 | dependencies: 1725 | "inherits" "^2.0.3" 1726 | "is-arguments" "^1.0.4" 1727 | "is-generator-function" "^1.0.7" 1728 | "is-typed-array" "^1.1.3" 1729 | "safe-buffer" "^5.1.2" 1730 | "which-typed-array" "^1.1.2" 1731 | 1732 | "util@0.10.3": 1733 | "integrity" "sha1-evsa/lCAUkZInj23/g7TeTNqwPk= sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==" 1734 | "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz" 1735 | "version" "0.10.3" 1736 | dependencies: 1737 | "inherits" "2.0.1" 1738 | 1739 | "vm-browserify@^1.0.0": 1740 | "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" 1741 | "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" 1742 | "version" "1.1.2" 1743 | 1744 | "which-boxed-primitive@^1.0.2": 1745 | "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" 1746 | "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" 1747 | "version" "1.0.2" 1748 | dependencies: 1749 | "is-bigint" "^1.0.1" 1750 | "is-boolean-object" "^1.1.0" 1751 | "is-number-object" "^1.0.4" 1752 | "is-string" "^1.0.5" 1753 | "is-symbol" "^1.0.3" 1754 | 1755 | "which-typed-array@^1.1.2": 1756 | "integrity" "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==" 1757 | "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz" 1758 | "version" "1.1.4" 1759 | dependencies: 1760 | "available-typed-arrays" "^1.0.2" 1761 | "call-bind" "^1.0.0" 1762 | "es-abstract" "^1.18.0-next.1" 1763 | "foreach" "^2.0.5" 1764 | "function-bind" "^1.1.1" 1765 | "has-symbols" "^1.0.1" 1766 | "is-typed-array" "^1.1.3" 1767 | 1768 | "word-wrap@~1.2.3": 1769 | "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 1770 | "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" 1771 | "version" "1.2.3" 1772 | 1773 | "wrappy@1": 1774 | "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1775 | "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1776 | "version" "1.0.2" 1777 | 1778 | "xtend@^4.0.0", "xtend@^4.0.1", "xtend@^4.0.2", "xtend@~4.0.1": 1779 | "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 1780 | "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" 1781 | "version" "4.0.2" 1782 | --------------------------------------------------------------------------------