create-tsrouter-app 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,7 +13,7 @@ npx create-react-app my-app
13
13
  You can now run:
14
14
 
15
15
  ```bash
16
- npx create-tsrouter-app my-app
16
+ npx create-tsrouter-app@latest my-app
17
17
  ```
18
18
 
19
19
  Instead of using:
@@ -25,7 +25,7 @@ npx create-react-app my-app --template typescript
25
25
  To create a SPA application using TypeScript. You can now run:
26
26
 
27
27
  ```bash
28
- npx create-tsrouter-app my-app --template typescript
28
+ npx create-tsrouter-app@latest my-app --template typescript
29
29
  ```
30
30
 
31
31
  What you'll get is a Vite application that uses TanStack Router. All the files will still be in the same place as in CRA, but you'll get a fully functional Router setup under in `app/main.tsx`.
package/dist/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { copyFile, mkdir, readFile, writeFile } from 'node:fs/promises';
3
+ import { existsSync } from 'node:fs';
3
4
  import { resolve } from 'node:path';
4
5
  import { fileURLToPath } from 'node:url';
5
6
  import { Command, InvalidArgumentError } from 'commander';
6
- import { intro, outro, spinner } from '@clack/prompts';
7
+ import { intro, outro, spinner, log } from '@clack/prompts';
7
8
  import { execa } from 'execa';
8
9
  import { render } from 'ejs';
9
10
  import { SUPPORTED_PACKAGE_MANAGERS, getPackageManager, } from './utils/getPackageManager.js';
@@ -85,6 +86,10 @@ async function createApp(projectName, options) {
85
86
  const templateDirBase = fileURLToPath(new URL('../templates/base', import.meta.url));
86
87
  const templateDirRouter = fileURLToPath(new URL(`../templates/${options.mode}`, import.meta.url));
87
88
  const targetDir = resolve(process.cwd(), projectName);
89
+ if (existsSync(targetDir)) {
90
+ log.error(`Directory "${projectName}" already exists`);
91
+ return;
92
+ }
88
93
  const copyFiles = createCopyFile(targetDir);
89
94
  const templateFile = createTemplateFile(projectName, options, targetDir);
90
95
  intro(`Creating a new TanStack app in ${targetDir}...`);
@@ -153,7 +158,15 @@ async function createApp(projectName, options) {
153
158
  s.start(`Installing dependencies via ${options.packageManager}...`);
154
159
  await execa(options.packageManager, ['install'], { cwd: targetDir });
155
160
  s.stop(`Installed dependencies`);
156
- outro(`Created your new TanStack app in ${targetDir}.`);
161
+ outro(`Created your new TanStack app in ${targetDir}.
162
+
163
+ Use the following commands to start your app:
164
+
165
+ % cd ${projectName}
166
+ % ${options.packageManager} start
167
+
168
+ Please read README.md for more information on testing, styling, adding routes, react-query, etc.
169
+ `);
157
170
  }
158
171
  program
159
172
  .name('create-tsrouter-app')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-tsrouter-app",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Tanstack Application Builder",
5
5
  "bin": "./dist/index.js",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { copyFile, mkdir, readFile, writeFile } from 'node:fs/promises'
4
+ import { existsSync } from 'node:fs'
4
5
  import { resolve } from 'node:path'
5
6
  import { fileURLToPath } from 'node:url'
6
7
  import { Command, InvalidArgumentError } from 'commander'
7
- import { intro, outro, spinner } from '@clack/prompts'
8
+ import { intro, outro, spinner, log } from '@clack/prompts'
8
9
  import { execa } from 'execa'
9
10
  import { render } from 'ejs'
10
11
 
@@ -144,6 +145,11 @@ async function createApp(projectName: string, options: Required<Options>) {
144
145
  )
145
146
  const targetDir = resolve(process.cwd(), projectName)
146
147
 
148
+ if (existsSync(targetDir)) {
149
+ log.error(`Directory "${projectName}" already exists`)
150
+ return
151
+ }
152
+
147
153
  const copyFiles = createCopyFile(targetDir)
148
154
  const templateFile = createTemplateFile(projectName, options, targetDir)
149
155
 
@@ -257,7 +263,15 @@ async function createApp(projectName: string, options: Required<Options>) {
257
263
  await execa(options.packageManager, ['install'], { cwd: targetDir })
258
264
  s.stop(`Installed dependencies`)
259
265
 
260
- outro(`Created your new TanStack app in ${targetDir}.`)
266
+ outro(`Created your new TanStack app in ${targetDir}.
267
+
268
+ Use the following commands to start your app:
269
+
270
+ % cd ${projectName}
271
+ % ${options.packageManager} start
272
+
273
+ Please read README.md for more information on testing, styling, adding routes, react-query, etc.
274
+ `)
261
275
  }
262
276
 
263
277
  program
@@ -10,35 +10,34 @@
10
10
  .st1 {
11
11
  fill: #61dafb;
12
12
  }
13
-
14
- .st2 {
15
- fill: #61dafb;
16
- }
17
13
  </style>
18
14
  </defs>
19
- <circle class="st0" cx="420.7" cy="297.3" r="51"/>
20
- <path class="st2" d="M474.4,297.3c0,29.6-24,53.6-53.6,53.6s-53.6-24-53.6-53.6,24-53.6,53.6-53.6,53.6,24,53.6,53.6ZM379.5,296.1v-7.5c0-1.3,1.4-6.1,2.1-7.4,1.2-2.3,3.4-4.1,5.4-5.6l-4-4c4.7-4.3,11.1-4.4,16.2-.8,2.3-5.6,7.8-8.4,13.8-8l-1,5c7,.2,15.5,4.9,15.5,12.8s0,.6-.8.8c-2,.3-4-.5-5.9-.7s-1.4-.5-1.4.4,3,4.9,3.5,6.5,1.2,4.1,1,6.3c-6.6-1-12.4-3.8-17.5-8,.3,3.1,4.9,25.7,6.3,26s1-.7,1.2-1.3,1.5-7.5,1.5-8c0-1.2-2-2.1-2.6-3.3-1.4-3.2,1.5-5.6,4.4-3.9s6.2,7.4,8.9,8.6,15.4,1.7,17.6,3.9-3.4,5.4-1.8,9c8-3.1,16-3.9,24.4-3,3.7-11.5,3.7-24.1-1.1-35.3-8.6,0-17.4-4.3-20.4-12.8s-.8-10.2-1.5-11c-1-1.2-7.5.7-8.8-1.8s.3-1.3-.2-1.7-2.3-.7-3.1-.9c-30.8-7.6-60.8,18.6-58.9,49.9.1,1.9,1.9,12.2,2.8,13.2s5.7,0,7.5,0,4.4.4,5.9.6c3.4.5,8.5,2.9,11.1,3s2.9-1,3.2-2.8c.5-3.1.6-8.8.6-12s-1.2-9.3-1.5-13.7c-1.1-.2-.8,0-1.1.6-.8,1.6-1.3,3.8-2.3,5.7s-6.2,10.3-6.8,10.7-.8-.6-1-1c-1.9-4.2-2.4-9.4-2.3-14-1.1-1.2-6.4,5.8-8,6.3l-1-.5ZM462,273.3c1.3-1.4-7.1-10.5-8.5-11.8-3.6-3.2-6.4-5.3-4.2,1.7s6.8,9.2,12.6,10.1ZM409,265.8c-.5-.6-7.2,3.4-6.5,5.5,2.2-1.6,7-2,6.5-5.5ZM396.5,273.3c-.3-2.9-7.5-3.2-8.5-1.2s1.9,1.7,2.3,1.7c2.1.4,4.1-.7,6.2-.5ZM409.5,273.8c4.5,1.6,7.8,4.3,12.9,4.4s-.1-3.6-1.4-4.6c-2.6-2-6-2.9-9.2-2.8s-1.9-.4-1.7.5c3.3.7,8.6.8,10,4.5-2.7-.3-4.6-1.9-7.4-2.4s-3-.6-3.1.4ZM420.5,289.8c-1-6-6.8-12.8-12.9-13.8s-1.6-.5-1,.6,5.6,3.8,6.7,4.8,5.3,5,2.5,4.5-10-9.2-11.2-8c.2,1.1,1.3,2.3,2,3.2,3.5,4.5,8.2,8.1,14,8.8ZM390.5,277.3c-5.9,1.3-8.2,7.5-8,13,.8.9,5.9-4.5,6.4-5.3s3.2-5.4,1.3-4.7-3.4,5.2-5,5.5.2-2.5.5-3c1.3-1.9,3.4-3.7,4.7-5.5ZM396.5,279.3c-.5-.6-2.4,1.6-2.7,2-3.4,4.6-3.1,12.1-1.8,17.5.9.2,1-.3,1.4-.8,3.5-4.5,6.5-12.5,5.3-18.2-2.5,3.7-3.7,8.6-4.3,13h-1.5c0-4.8,2.2-9.1,3.5-13.5ZM428,308.3c.1-2-2-1.7-3-2.3s-1.6-2.2-3.5-1.7c1.6,2.5,3.5,3.8,6.5,4ZM416.5,311.3c9,.8,6.5-2.3,1.7-6.5-1.6-.4-1.8,5.3-1.7,6.5ZM440,312.8c-4.1-.4-9.3-2.4-13.3-2.5s-1.6,0-2.2.8c4.8,1.5,9.9,2,14.3,4.7l1.2-3ZM420.4,316.4c-8.7.1-17.9,4.4-24.2,10.4s-5.7,6.3-5.7,7.3c0,2.1,10.2,7.3,12.4,8.1,14.3,5.7,32.6,4.1,45.3-5s3.7-3.2.1-7.4c-6.7-7.8-17.4-13.5-27.8-13.4ZM394.5,321.3c-1.7-1.7-5.9-2.3-8.3-2.5s-6.3-.4-8.2.7l16.5,1.7ZM463.5,318.8h-8.8c-1.1,0-5.8,1.3-7.1,1.9s-1,.7.1.6c2.8-.1,6.1-1.2,9-1.5s4.1.2,6,0,1.6-.4.7-1Z"/>
21
- <path class="st0" d="M379.5,296.1l1,.5c1.6-.4,6.9-7.4,8-6.3-.1,4.6.4,9.8,2.3,14s.1,1.4,1,1,6.1-9.3,6.8-10.7,1.5-4.1,2.3-5.7,0-.8,1.1-.6c.3,4.5,1.4,9.3,1.5,13.7s0,8.9-.6,12-1.3,2.9-3.2,2.8-7.7-2.5-11.1-3-4.4-.6-5.9-.6-6.4,1.3-7.5,0-2.6-11.3-2.8-13.2c-1.8-31.3,28.1-57.5,58.9-49.9s2.6.5,3.1.9,0,1.2.2,1.7c1.3,2.4,7.7.6,8.8,1.8s.5,8.2,1.5,11c3,8.5,11.8,12.9,20.4,12.8,4.7,11.2,4.8,23.8,1.1,35.3-8.5-.8-16.5,0-24.4,3-1.6-3.7,4.9-6,1.8-9s-14-2.2-17.6-3.9-6.4-7.2-8.9-8.6-5.8.7-4.4,3.9,2.5,2.1,2.6,3.3-1.2,7.3-1.5,8-.3,1.5-1.2,1.3c-1.3-.3-5.9-22.9-6.3-26,5.1,4.2,10.9,7,17.5,8,.2-2.2-.3-4.2-1-6.3s-3.5-6.1-3.5-6.5c0-.9,1.1-.4,1.4-.4,1.9.1,3.9,1,5.9.7s.8.3.8-.8c0-7.8-8.5-12.6-15.5-12.8l1-5c-6-.4-11.4,2.4-13.8,8-5.1-3.6-11.6-3.5-16.2.8l4,4c-2.1,1.5-4.2,3.3-5.4,5.6s-2.1,6.1-2.1,7.4v7.5ZM433.5,259.8c9.3,2.5,10.3-4.1.2-1.5l-.2,1.5ZM434.5,266.8c.4.7,7.6-.5,6.9-2.7s-5.4.7-6.7.7l-.2,2ZM437,272.8c1,1.4,6.7-2.1,6.5-3.2-.5-2.2-7.8,1.4-6.5,3.2ZM447,273.3c-1.1-1.1-5.9,3.3-5.5,4.7.7,2.8,6.8-3.5,5.5-4.7ZM449.6,277.4c-.3.2-3.7,5.4-1.8,5.9s4.1-4,4.2-4.8-1.6-1.5-2.4-1.1ZM454,286.3c2.5.9,4.5-6,2.7-6.5-2.2-.7-3.1,6.1-2.7,6.5ZM464,287.8c.6-2,1.3-5.6-1.2-6.5-1.2.3-.7,4.6-.7,5.7l.4.6,1.5.2Z"/>
22
- <path class="st0" d="M462,273.3c-5.9-.9-10.8-4.3-12.6-10.1s.6-4.8,4.2-1.7,9.8,10.3,8.5,11.8Z"/>
23
- <path class="st0" d="M420.5,289.8c-5.8-.7-10.5-4.3-14-8.8s-1.8-2.1-2-3.2c1.2-1.2,10.1,7.8,11.2,8,2.8.5-2.1-4.2-2.5-4.5-1.2-1-6.4-4.2-6.7-4.8-.5-1,.6-.6,1-.6,6.2,1,12,7.8,12.9,13.8Z"/>
24
- <path class="st0" d="M396.5,279.3c-1.3,4.4-3.6,8.7-3.5,13.5h1.5c.6-4.4,1.8-9.3,4.3-13,1.2,5.7-1.8,13.7-5.3,18.2s-.5,1-1.4.8c-1.3-5.3-1.6-12.8,1.8-17.5s2.2-2.6,2.7-2Z"/>
25
- <path class="st0" d="M409.5,273.8c.1-1,2.5-.5,3.1-.4,2.8.5,4.7,2,7.4,2.4-1.4-3.7-6.7-3.8-10-4.5-.1-.9,1.1-.5,1.7-.5,3.3,0,6.6.8,9.2,2.8s4.8,4.7,1.4,4.6c-5.1-.1-8.4-2.8-12.9-4.4Z"/>
26
- <path class="st0" d="M390.5,277.3c-1.3,1.9-3.5,3.6-4.7,5.5s-2.3,3.3-.5,3,3.3-4.8,5-5.5-1.1,4.3-1.3,4.7c-.5.8-5.6,6.2-6.4,5.3-.2-5.5,2.1-11.7,8-13Z"/>
27
- <path class="st0" d="M440,312.8l-1.2,3c-4.3-2.7-9.5-3.3-14.3-4.7.6-.8,1.3-.8,2.2-.8,4,.1,9.2,2.1,13.3,2.5Z"/>
28
- <path class="st0" d="M416.5,311.3c0-1.2.1-6.9,1.7-6.5,4.7,4.2,7.2,7.3-1.7,6.5Z"/>
29
- <path class="st0" d="M396.5,273.3c-2.1-.3-4.1.8-6.2.5s-2.7-1-2.3-1.7c1-1.9,8.2-1.7,8.5,1.2Z"/>
30
- <path class="st0" d="M409,265.8c.5,3.5-4.3,3.9-6.5,5.5-.7-2.1,5.9-6.1,6.5-5.5Z"/>
31
- <path class="st0" d="M428,308.3c-3-.2-4.9-1.5-6.5-4,2-.5,2.4,1,3.5,1.7s3.1.3,3,2.3Z"/>
32
- <path class="st2" d="M434.5,266.8l.2-2c1.3,0,6.1-2.6,6.7-.7s-6.5,3.4-6.9,2.7Z"/>
33
- <path class="st2" d="M433.5,259.8l.2-1.5c10-2.5,9.1,4-.2,1.5Z"/>
34
- <path class="st2" d="M437,272.8c-1.3-1.8,6-5.5,6.5-3.2s-5.5,4.7-6.5,3.2Z"/>
35
- <path class="st2" d="M447,273.3c1.3,1.3-4.7,7.6-5.5,4.7s4.4-5.8,5.5-4.7Z"/>
36
- <path class="st2" d="M449.6,277.4c.8-.5,2.5,0,2.4,1.1s-2.8,5.2-4.2,4.8,1.5-5.7,1.8-5.9Z"/>
37
- <path class="st2" d="M454,286.3c-.4-.4.5-7.2,2.7-6.5,1.7.5-.2,7.4-2.7,6.5Z"/>
38
- <path class="st2" d="M464,287.8l-1.5-.2-.4-.6c0-1.1-.5-5.4.7-5.7,2.5.9,1.8,4.5,1.2,6.5Z"/>
39
- <path class="st0" d="M420.4,316.4c10.5-.1,21.2,5.6,27.8,13.4s4.5,4.1-.1,7.4c-12.7,9.1-30.9,10.7-45.3,5-2.2-.9-12.4-6-12.4-8.1s4.7-6.3,5.7-7.3c6.3-5.9,15.5-10.2,24.2-10.4Z"/>
40
- <path class="st0" d="M394.5,321.3l-16.5-1.7c2-1.2,5.9-.9,8.2-.7s6.6.8,8.3,2.5Z"/>
41
- <path class="st0" d="M463.5,318.8c.8.6,0,.9-.7,1-1.9.2-4.1-.2-6,0-2.9.3-6.2,1.4-9,1.5s-1.3-.1-.1-.6,6-1.9,7.1-1.9h8.8Z"/>
42
- <path class="st2" d="M666.3,296.5c0-32.5-40.7-63.3-103.1-82.4,14.4-63.6,8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6,0,8.3.9,11.4,2.6,13.6,7.8,19.5,37.5,14.9,75.7-1.1,9.4-2.9,19.3-5.1,29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50,32.6-30.3,63.2-46.9,84-46.9v-22.3c-27.5,0-63.5,19.6-99.9,53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7,0,51.4,16.5,84,46.6-14,14.7-28,31.4-41.3,49.9-22.6,2.4-44,6.1-63.6,11-2.3-10-4-19.7-5.2-29-4.7-38.2,1.1-67.9,14.6-75.8,3-1.8,6.9-2.6,11.5-2.6v-22.3c-8.4,0-16,1.8-22.6,5.6-28.1,16.2-34.4,66.7-19.9,130.1-62.2,19.2-102.7,49.9-102.7,82.3s40.7,63.3,103.1,82.4c-14.4,63.6-8,114.2,20.2,130.4,6.5,3.8,14.1,5.6,22.5,5.6,27.5,0,63.5-19.6,99.9-53.6,36.4,33.8,72.4,53.2,99.9,53.2s16-1.8,22.6-5.6c28.1-16.2,34.4-66.7,19.9-130.1,62-19.1,102.5-49.9,102.5-82.3h0ZM536.1,229.8c-3.7,12.9-8.3,26.2-13.5,39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4,14.2,2.1,27.9,4.7,41,7.9h0ZM490.3,336.3c-7.8,13.5-15.8,26.3-24.1,38.2-14.9,1.3-30,2-45.2,2s-30.2-.7-45-1.9c-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8,6.2-13.4,13.2-26.8,20.7-39.9,7.8-13.5,15.8-26.3,24.1-38.2,14.9-1.3,30-2,45.2-2s30.2.7,45,1.9c8.3,11.9,16.4,24.6,24.2,38,7.6,13.1,14.5,26.4,20.8,39.8-6.3,13.4-13.2,26.8-20.7,39.9h0ZM522.6,323.3c5.4,13.4,10,26.8,13.8,39.8-13.1,3.2-26.9,5.9-41.2,8,4.9-7.7,9.8-15.6,14.4-23.7,4.6-8,8.9-16.1,13-24.1h0ZM421.2,430c-9.3-9.6-18.6-20.3-27.8-32,9,.4,18.2.7,27.5.7s18.7-.2,27.8-.7c-9,11.7-18.3,22.4-27.5,32ZM346.8,371.1c-14.2-2.1-27.9-4.7-41-7.9,3.7-12.9,8.3-26.2,13.5-39.5,4.1,8,8.4,16,13.1,24s9.5,15.8,14.4,23.4ZM420.7,163c9.3,9.6,18.6,20.3,27.8,32-9-.4-18.2-.7-27.5-.7s-18.7.2-27.8.7c9-11.7,18.3-22.4,27.5-32ZM346.7,221.9c-4.9,7.7-9.8,15.6-14.4,23.7-4.6,8-8.9,16-13,24-5.4-13.4-10-26.8-13.8-39.8,13.1-3.1,26.9-5.8,41.2-7.9h0ZM256.2,347.1c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6,58.3-50.6c8.6-3.7,18-7,27.7-10.1,5.7,19.6,13.2,40,22.5,60.9-9.2,20.8-16.6,41.1-22.2,60.6-9.9-3.1-19.3-6.5-28-10.2h0ZM310,490c-13.6-7.8-19.5-37.5-14.9-75.7,1.1-9.4,2.9-19.3,5.1-29.4,19.6,4.8,41,8.5,63.5,10.9,13.5,18.5,27.5,35.3,41.6,50-32.6,30.3-63.2,46.9-84,46.9-4.5-.1-8.3-1-11.3-2.7h0ZM547.2,413.8c4.7,38.2-1.1,67.9-14.6,75.8-3,1.8-6.9,2.6-11.5,2.6-20.7,0-51.4-16.5-84-46.6,14-14.7,28-31.4,41.3-49.9,22.6-2.4,44-6.1,63.6-11,2.3,10.1,4.1,19.8,5.2,29.1ZM585.7,347.1c-8.6,3.7-18,7-27.7,10.1-5.7-19.6-13.2-40-22.5-60.9,9.2-20.8,16.6-41.1,22.2-60.6,9.9,3.1,19.3,6.5,28.1,10.2,35.4,15.1,58.3,34.9,58.3,50.6,0,15.7-23,35.6-58.4,50.6h0Z"/>
43
- <path class="st1" d="M520.5,78.1"/>
15
+ <g>
16
+ <path class="st1" d="M666.3,296.5c0-32.5-40.7-63.3-103.1-82.4,14.4-63.6,8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6,0,8.3.9,11.4,2.6,13.6,7.8,19.5,37.5,14.9,75.7-1.1,9.4-2.9,19.3-5.1,29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50,32.6-30.3,63.2-46.9,84-46.9v-22.3c-27.5,0-63.5,19.6-99.9,53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7,0,51.4,16.5,84,46.6-14,14.7-28,31.4-41.3,49.9-22.6,2.4-44,6.1-63.6,11-2.3-10-4-19.7-5.2-29-4.7-38.2,1.1-67.9,14.6-75.8,3-1.8,6.9-2.6,11.5-2.6v-22.3c-8.4,0-16,1.8-22.6,5.6-28.1,16.2-34.4,66.7-19.9,130.1-62.2,19.2-102.7,49.9-102.7,82.3s40.7,63.3,103.1,82.4c-14.4,63.6-8,114.2,20.2,130.4,6.5,3.8,14.1,5.6,22.5,5.6,27.5,0,63.5-19.6,99.9-53.6,36.4,33.8,72.4,53.2,99.9,53.2s16-1.8,22.6-5.6c28.1-16.2,34.4-66.7,19.9-130.1,62-19.1,102.5-49.9,102.5-82.3h0ZM536.1,229.8c-3.7,12.9-8.3,26.2-13.5,39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4,14.2,2.1,27.9,4.7,41,7.9h0ZM490.3,336.3c-7.8,13.5-15.8,26.3-24.1,38.2-14.9,1.3-30,2-45.2,2s-30.2-.7-45-1.9c-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8,6.2-13.4,13.2-26.8,20.7-39.9,7.8-13.5,15.8-26.3,24.1-38.2,14.9-1.3,30-2,45.2-2s30.2.7,45,1.9c8.3,11.9,16.4,24.6,24.2,38,7.6,13.1,14.5,26.4,20.8,39.8-6.3,13.4-13.2,26.8-20.7,39.9h0ZM522.6,323.3c5.4,13.4,10,26.8,13.8,39.8-13.1,3.2-26.9,5.9-41.2,8,4.9-7.7,9.8-15.6,14.4-23.7,4.6-8,8.9-16.1,13-24.1h0ZM421.2,430c-9.3-9.6-18.6-20.3-27.8-32,9,.4,18.2.7,27.5.7s18.7-.2,27.8-.7c-9,11.7-18.3,22.4-27.5,32ZM346.8,371.1c-14.2-2.1-27.9-4.7-41-7.9,3.7-12.9,8.3-26.2,13.5-39.5,4.1,8,8.4,16,13.1,24s9.5,15.8,14.4,23.4ZM420.7,163c9.3,9.6,18.6,20.3,27.8,32-9-.4-18.2-.7-27.5-.7s-18.7.2-27.8.7c9-11.7,18.3-22.4,27.5-32ZM346.7,221.9c-4.9,7.7-9.8,15.6-14.4,23.7-4.6,8-8.9,16-13,24-5.4-13.4-10-26.8-13.8-39.8,13.1-3.1,26.9-5.8,41.2-7.9h0ZM256.2,347.1c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6,58.3-50.6c8.6-3.7,18-7,27.7-10.1,5.7,19.6,13.2,40,22.5,60.9-9.2,20.8-16.6,41.1-22.2,60.6-9.9-3.1-19.3-6.5-28-10.2h0ZM310,490c-13.6-7.8-19.5-37.5-14.9-75.7,1.1-9.4,2.9-19.3,5.1-29.4,19.6,4.8,41,8.5,63.5,10.9,13.5,18.5,27.5,35.3,41.6,50-32.6,30.3-63.2,46.9-84,46.9-4.5-.1-8.3-1-11.3-2.7h0ZM547.2,413.8c4.7,38.2-1.1,67.9-14.6,75.8-3,1.8-6.9,2.6-11.5,2.6-20.7,0-51.4-16.5-84-46.6,14-14.7,28-31.4,41.3-49.9,22.6-2.4,44-6.1,63.6-11,2.3,10.1,4.1,19.8,5.2,29.1ZM585.7,347.1c-8.6,3.7-18,7-27.7,10.1-5.7-19.6-13.2-40-22.5-60.9,9.2-20.8,16.6-41.1,22.2-60.6,9.9,3.1,19.3,6.5,28.1,10.2,35.4,15.1,58.3,34.9,58.3,50.6,0,15.7-23,35.6-58.4,50.6h0Z"/>
17
+ <circle class="st1" cx="420.9" cy="296.5" r="45.7"/>
18
+ <path class="st1" d="M520.5,78.1"/>
19
+ </g>
20
+ <circle class="st0" cx="420.8" cy="296.6" r="43"/>
21
+ <path class="st1" d="M466.1,296.6c0,25-20.2,45.2-45.2,45.2s-45.2-20.2-45.2-45.2,20.2-45.2,45.2-45.2,45.2,20.2,45.2,45.2ZM386,295.6v-6.3c0-1.1,1.2-5.1,1.8-6.2,1-1.9,2.9-3.5,4.6-4.7l-3.4-3.4c4-3.6,9.4-3.7,13.7-.7,1.9-4.7,6.6-7.1,11.6-6.7l-.8,4.2c5.9.2,13.1,4.1,13.1,10.8s0,.5-.7.7c-1.7.3-3.4-.4-5-.6s-1.2-.4-1.2.3,2.5,4.1,3,5.5,1,3.5.8,5.3c-5.6-.8-10.5-3.2-14.8-6.7.3,2.6,4.1,21.7,5.3,21.9s.8-.6,1-1.1,1.3-6.3,1.3-6.7c0-1-1.7-1.8-2.2-2.8-1.2-2.7,1.3-4.7,3.7-3.3s5.2,6.2,7.5,7.3,13,1.4,14.8,3.3-2.9,4.6-1.5,7.6c6.7-2.6,13.5-3.3,20.6-2.5,3.1-9.7,3.1-20.3-.9-29.8-7.3,0-14.7-3.6-17.2-10.8-2.5-7.2-.7-8.6-1.3-9.3-.8-1-6.3.6-7.4-1.5s.3-1.1-.2-1.4-1.9-.6-2.6-.8c-26-6.4-51.3,15.7-49.7,42.1,0,1.6,1.6,10.3,2.4,11.1s4.8,0,6.3,0,3.7.3,5,.5c2.9.4,7.2,2.4,9.4,2.5s2.4-.8,2.7-2.4c.4-2.6.5-7.4.5-10.1s-1-7.8-1.3-11.6c-.9-.2-.7,0-.9.5-.7,1.3-1.1,3.2-1.9,4.8s-5.2,8.7-5.7,9-.7-.5-.8-.8c-1.6-3.5-2-7.9-1.9-11.8-.9-1-5.4,4.9-6.7,5.3l-.8-.4v-.3h-.2ZM455.6,276.4c1.1-1.2-6-8.9-7.2-10-3-2.7-5.4-4.5-3.5,1.4s5.7,7.8,10.6,8.5h.1ZM410.9,270.1c-.4-.5-6.1,2.9-5.5,4.6,1.9-1.3,5.9-1.7,5.5-4.6ZM400.4,276.4c-.3-2.4-6.3-2.7-7.2-1s1.6,1.4,1.9,1.4c1.8.3,3.5-.6,5.2-.4h.1ZM411.3,276.8c3.8,1.3,6.6,3.6,10.9,3.7s0-3-1.2-3.9c-2.2-1.7-5.1-2.4-7.8-2.4s-1.6-.3-1.4.4c2.8.6,7.3.7,8.4,3.8-2.3-.3-3.9-1.6-6.2-2s-2.5-.5-2.6.3h0ZM420.6,290.3c-.8-5.1-5.7-10.8-10.9-11.6s-1.3-.4-.8.5,4.7,3.2,5.7,4,4.5,4.2,2.1,3.8-8.4-7.8-9.4-6.7c.2.9,1.1,1.9,1.7,2.7,3,3.8,6.9,6.8,11.8,7.4h-.2ZM395.3,279.8c-5,1.1-6.9,6.3-6.7,11,.7.8,5-3.8,5.4-4.5s2.7-4.6,1.1-4-2.9,4.4-4.2,4.6.2-2.1.4-2.5c1.1-1.6,2.9-3.1,4-4.6h0ZM400.4,281.5c-.4-.5-2,1.3-2.3,1.7-2.9,3.9-2.6,10.2-1.5,14.8.8.2.8-.3,1.2-.7,3-3.8,5.5-10.5,4.5-15.4-2.1,3.1-3.1,7.3-3.6,11h-1.3c0-4,1.9-7.7,3-11.4h0ZM426.9,305.9c0-1.7-1.7-1.4-2.5-1.9s-1.3-1.9-3-1.4c1.3,2.1,3,3.2,5.5,3.4h0ZM417.2,308.5c7.6.7,5.5-1.9,1.4-5.5-1.3-.3-1.5,4.5-1.4,5.5ZM437,309.7c-3.5-.3-7.8-2-11.2-2.1s-1.3,0-1.9.7c4,1.3,8.4,1.7,12.1,4l1-2.5h0ZM420.5,312.8c-7.3,0-15.1,3.7-20.4,8.8s-4.8,5.3-4.8,6.2c0,1.8,8.6,6.2,10.5,6.8,12.1,4.8,27.5,3.5,38.2-4.2s3.1-2.7,0-6.2c-5.7-6.6-14.7-11.4-23.4-11.3h-.1ZM398.7,316.9c-1.4-1.4-5-1.9-7-2.1s-5.3-.3-6.9.6l13.9,1.4h0ZM456.9,314.8h-7.4c-.9,0-4.9,1.1-6,1.6s-.8.6,0,.5c2.4,0,5.1-1,7.6-1.3s3.5.2,5.1,0,1.3-.3.6-.8h0Z"/>
22
+ <path class="st0" d="M386,295.6l.8.4c1.3-.3,5.8-6.2,6.7-5.3,0,3.9.3,8.3,1.9,11.8s0,1.2.8.8,5.1-7.8,5.7-9,1.3-3.5,1.9-4.8,0-.7.9-.5c.3,3.8,1.2,7.8,1.3,11.6s0,7.5-.5,10.1-1.1,2.4-2.7,2.4-6.5-2.1-9.4-2.5-3.7-.5-5-.5-5.4,1.1-6.3,0-2.2-9.5-2.4-11.1c-1.5-26.4,23.7-48.5,49.7-42.1s2.2.4,2.6.8,0,1,.2,1.4c1.1,2,6.5.5,7.4,1.5s.4,6.9,1.3,9.3c2.5,7.2,10,10.9,17.2,10.8,4,9.4,4,20.1.9,29.8-7.2-.7-13.9,0-20.6,2.5-1.3-3.1,4.1-5.1,1.5-7.6s-11.8-1.9-14.8-3.3-5.4-6.1-7.5-7.3-4.9.6-3.7,3.3,2.1,1.8,2.2,2.8-1,6.2-1.3,6.7-.3,1.3-1,1.1c-1.1-.3-5-19.3-5.3-21.9,4.3,3.5,9.2,5.9,14.8,6.7.2-1.9-.3-3.5-.8-5.3s-3-5.1-3-5.5c0-.8.9-.3,1.2-.3,1.6,0,3.3.8,5,.6s.7.3.7-.7c0-6.6-7.2-10.6-13.1-10.8l.8-4.2c-5.1-.3-9.6,2-11.6,6.7-4.3-3-9.8-3-13.7.7l3.4,3.4c-1.8,1.3-3.5,2.8-4.6,4.7s-1.8,5.1-1.8,6.2v6.6h.2ZM431.6,265c7.8,2.1,8.7-3.5.2-1.3l-.2,1.3ZM432.4,270.9c.3.6,6.4-.4,5.8-2.3s-4.6.6-5.7.6l-.2,1.7h.1ZM434.5,276c.8,1.2,5.7-1.8,5.5-2.7-.4-1.9-6.6,1.2-5.5,2.7ZM442.9,276.4c-.9-.9-5,2.8-4.6,4,.6,2.4,5.7-3,4.6-4ZM445.1,279.9c-.3.2-3.1,4.6-1.5,5s3.5-3.4,3.5-4-1.3-1.3-2-.9h0ZM448.9,287.4c2.1.8,3.8-5.1,2.3-5.5-1.9-.6-2.6,5.1-2.3,5.5ZM457.3,288.6c.5-1.7,1.1-4.7-1-5.5-1,.3-.6,3.9-.6,4.8l.3.5,1.3.2h0Z"/>
23
+ <path class="st0" d="M455.6,276.4c-5-.8-9.1-3.6-10.6-8.5s.5-4,3.5-1.4,8.3,8.7,7.2,10h-.1Z"/>
24
+ <path class="st0" d="M420.6,290.3c-4.9-.6-8.9-3.6-11.8-7.4s-1.5-1.8-1.7-2.7c1-1,8.5,6.6,9.4,6.7,2.4.4-1.8-3.5-2.1-3.8-1-.8-5.4-3.5-5.7-4-.4-.8.5-.5.8-.5,5.2.8,10.1,6.6,10.9,11.6h.2Z"/>
25
+ <path class="st0" d="M400.4,281.5c-1.1,3.7-3,7.3-3,11.4h1.3c.5-3.7,1.5-7.8,3.6-11,1,4.8-1.5,11.6-4.5,15.4s-.4.8-1.2.7c-1.1-4.5-1.3-10.8,1.5-14.8s1.9-2.2,2.3-1.7h0Z"/>
26
+ <path class="st0" d="M411.3,276.8c0-.8,2.1-.4,2.6-.3,2.4.4,4,1.7,6.2,2-1.2-3.1-5.7-3.2-8.4-3.8,0-.8.9-.4,1.4-.4,2.8,0,5.6.7,7.8,2.4,2.2,1.7,4,4,1.2,3.9-4.3,0-7.1-2.4-10.9-3.7h0Z"/>
27
+ <path class="st0" d="M395.3,279.8c-1.1,1.6-3,3-4,4.6s-1.9,2.8-.4,2.5,2.8-4,4.2-4.6-.9,3.6-1.1,4c-.4.7-4.7,5.2-5.4,4.5-.2-4.6,1.8-9.9,6.7-11h0Z"/>
28
+ <path class="st0" d="M437,309.7l-1,2.5c-3.6-2.3-8-2.8-12.1-4,.5-.7,1.1-.7,1.9-.7,3.4,0,7.8,1.8,11.2,2.1h0Z"/>
29
+ <path class="st0" d="M417.2,308.5c0-1,0-5.8,1.4-5.5,4,3.5,6.1,6.2-1.4,5.5Z"/>
30
+ <path class="st0" d="M400.4,276.4c-1.8-.3-3.5.7-5.2.4s-2.3-.8-1.9-1.4c.8-1.6,6.9-1.4,7.2,1h-.1Z"/>
31
+ <path class="st0" d="M410.9,270.1c.4,3-3.6,3.3-5.5,4.6-.6-1.8,5-5.1,5.5-4.6Z"/>
32
+ <path class="st0" d="M426.9,305.9c-2.5-.2-4.1-1.3-5.5-3.4,1.7-.4,2,.8,3,1.4s2.6.3,2.5,1.9h0Z"/>
33
+ <path class="st1" d="M432.4,270.9l.2-1.7c1.1,0,5.1-2.2,5.7-.6s-5.5,2.9-5.8,2.3h-.1Z"/>
34
+ <path class="st1" d="M431.6,265l.2-1.3c8.4-2.1,7.7,3.4-.2,1.3Z"/>
35
+ <path class="st1" d="M434.5,276c-1.1-1.5,5.1-4.6,5.5-2.7s-4.6,4-5.5,2.7Z"/>
36
+ <path class="st1" d="M442.9,276.4c1.1,1.1-4,6.4-4.6,4s3.7-4.9,4.6-4Z"/>
37
+ <path class="st1" d="M445.1,279.9c.7-.4,2.1,0,2,.9s-2.4,4.4-3.5,4,1.3-4.8,1.5-5h0Z"/>
38
+ <path class="st1" d="M448.9,287.4c-.3-.3.4-6.1,2.3-5.5,1.4.4-.2,6.2-2.3,5.5Z"/>
39
+ <path class="st1" d="M457.3,288.6l-1.3-.2-.3-.5c0-.9-.4-4.6.6-4.8,2.1.8,1.5,3.8,1,5.5h0Z"/>
40
+ <path class="st0" d="M420.5,312.8c8.9,0,17.9,4.7,23.4,11.3,5.6,6.6,3.8,3.5,0,6.2-10.7,7.7-26.1,9-38.2,4.2-1.9-.8-10.5-5.1-10.5-6.8s4-5.3,4.8-6.2c5.3-5,13.1-8.6,20.4-8.8h.1Z"/>
41
+ <path class="st0" d="M398.7,316.9l-13.9-1.4c1.7-1,5-.8,6.9-.6s5.6.7,7,2.1h0Z"/>
42
+ <path class="st0" d="M456.9,314.8c.7.5,0,.8-.6.8-1.6.2-3.5-.2-5.1,0-2.4.3-5.2,1.2-7.6,1.3s-1.1,0,0-.5,5.1-1.6,6-1.6h7.4,0Z"/>
44
43
  </svg>