puffin-app/public/Puffin Offset.svg
Matt 82f72941ca
Some checks failed
Build and Push Docker Images / docker (push) Failing after 1m58s
Migrate from Vite to Next.js 16 with Turbopack
This is a major migration from Vite to Next.js 16.0.1 for improved
performance, better SEO, and modern React features.

## Next.js Migration Changes
- Upgraded to Next.js 16.0.1 with Turbopack (from Vite 6)
- Migrated from client-side routing to App Router architecture
- Created app/ directory with Next.js page structure
- Added server components and client components pattern
- Configured standalone Docker builds for production

## Bug Fixes - React Hooks
- Fixed infinite loop in Header.tsx scroll behavior (removed lastScrollY state dependency)
- Fixed infinite loop in useCalculatorState.ts (wrapped saveState/clearState in useCallback)
- Fixed infinite loop in OffsetOrder.tsx (removed savedState from useEffect dependencies)
- Removed unused React imports from all client components

## Environment Variable Migration
- Migrated all VITE_ variables to NEXT_PUBLIC_ prefix
- Updated src/utils/config.ts to use direct static references (required for Next.js)
- Updated src/api/checkoutClient.ts, emailClient.ts, aisClient.ts for Next.js env vars
- Updated src/vite-env.d.ts types for Next.js environment
- Maintained backward compatibility with Docker window.env

## Layout & UX Improvements
- Fixed footer to always stay at bottom of viewport using flexbox
- Updated app/layout.tsx with flex-1 main content area
- Preserved glass morphism effects and luxury styling

## TypeScript & Build
- Fixed TypeScript strict mode compilation errors
- Removed unused imports and variables
- Fixed Axios interceptor types in project/src/api/wrenClient.ts
- Production build verified and passing

## Testing & Verification
- Tested calculator end-to-end in Playwright
- Verified Wren API integration working (11 portfolios fetched)
- Confirmed calculation: 5000L → 13.47 tons CO₂ → $3,206 total
- All navigation routes working correctly
- Footer positioning verified across all pages

## Files Added
- app/ directory with Next.js routes
- components/ directory with client components
- next.config.mjs, next-env.d.ts
- ENV_MIGRATION.md, NEXTJS_MIGRATION_COMPLETE.md documentation

## Files Modified
- Docker configuration for Next.js standalone builds
- package.json dependencies (Next.js, React 19)
- ts config.json for Next.js
- All API clients for new env var pattern

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 22:23:45 +01:00

1 line
14 KiB
XML

<?xml version="1.0"?><svg version="1.2" baseProfile="tiny-ps" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Puffin Offset</title><g><g fill="#f6fbfa" transform="matrix(.1 0 0 -.1 0 300)"><path d="M1455 2836c-88-35-109-41-235-75l-115-32-112-54-112-55-100-75-101-76-81-90-81-91-63-97c-110-170-163-294-196-464l-19-98v-197l-32-33c-49-52-132-151-151-179l-17-26 120-28 120-29 7-26c11-49 114-245 176-336l62-90 100-101 100-101 85-58c47-32 129-80 183-107l98-49 117-39 117-39 115-17 115-16 115 6 115 6 90 20c189 42 339 105 485 203l75 51 130 130 131 131 58 89c32 49 74 123 94 165l35 75 34 136 35 135-5 190-5 190-27 95-27 95-47 100c-26 55-74 140-106 190l-58 90-76 81c-42 44-98 106-124 137-85 100-227 194-380 252-37 14-98 40-135 59s-97 44-132 55l-63 21-126-1h-126l-60-23z"/></g><g fill="#a9c9cd" transform="matrix(.1 0 0 -.1 0 300)"><path d="M1308 2783c7-3 16-2 19 1 4 3-2 6-13 5l-19-1 13-5zm217-37c-22-7-60-23-84-35l-44-23-51-52-51-51-29-58-29-58 9-9 9-8 182-8 181-7 24-36 23-36 37-3 37-3 20 11c12 6 28 24 36 41l16 30-7 22c-3 12-16 32-27 45l-20 22h-76l-33-28-33-29-97 5c-54 2-98 6-98 9 0 2 6 16 14 31 20 37 63 75 116 103l45 23h170l40-21 40-21 46-49 46-49 14-40 13-39 1-70v-70l-18-47-19-48-40-35-41-35-56-21-56-22-60 1h-60l-58 22-59 22-54 54-54 54-17 58-17 58h-145l-5-21c-3-11-6-57-6-102v-82l64-31 64-30 27-31c14-18 35-50 47-72l20-40 5-76 5-76-11-58-12-57-34-68-34-67-55-66-55-66-76-52c-92-64-227-128-357-170l-97-31-88-10c-48-5-119-10-158-10h-70l15-10c8-6 65-26 125-46l110-36 143-11 143-11 67 12c37 6 98 21 136 34l68 22 94 55 93 56 159 133c170 140 209 182 273 287 73 120 92 184 109 354l10 104 27 39c16 21 38 52 51 70 12 17 29 54 37 81l15 51v135l-22 58-21 57-50 53c-27 29-70 66-96 82l-46 30-60 16-59 15-71-1h-70l-40-13zm495-105c0-6 4-12 9-15s22-30 39-59l29-52 12-53c6-29 11-77 11-106v-54l-20-64-20-65-30-44-29-44 35-3c19-2 59 2 88 8l53 11 26 27c14 15 32 44 41 66l16 38v47c0 26-6 71-14 101s-13 56-11 58 15-17 30-41l26-46 6-68 5-68-16-39c-9-22-14-41-11-44s50 7 106 23l101 28-6 31c-4 17-20 59-36 94l-29 63-59 58-58 59-69 44c-85 54-202 118-215 118-6 0-10-4-10-9zm-880-20c-30-10-96-38-145-64l-90-47-82-65c-135-108-256-252-343-411l-39-70-35-105-34-104-16-94c-18-106-19-131-8-131 4 0 74 74 155 164s198 213 260 273l112 108 62 33 63 33 42 7 43 7 6 100 6 100 18 70c9 39 32 101 51 139s33 71 31 72c-1 1-27-6-57-15zm1250-65c0-2 8-10 18-17l17-14-14 18c-13 16-21 21-21 13zM650 2433l-55-58 58 55c53 50 62 60 54 60-1 0-27-26-57-57zm1820 43c0-2 8-10 18-17l17-14-14 18c-13 16-21 21-21 13zm60-79c0-2 15-16 33-33l32-29-29 33c-28 30-36 37-36 29zm80-80c0-2 15-16 33-33l32-29-29 33c-28 30-36 37-36 29zm-2-189-3-43-55-6c-31-3-78-13-105-22-28-9-103-30-168-47l-118-30h-129v-43c0-24-9-79-20-123l-21-79-40-84c-22-46-38-86-35-88 2-3 26 3 53 12 26 9 85 21 130 26l82 9 72-10c40-6 102-17 137-25l64-15 97-50 96-50 60-49 60-49 25-41 25-40 10 3 10 3 7 49c3 27 7 90 7 140l1 91-15 85c-28 160-96 335-182 464-20 30-37 54-39 54-1 0-4-19-6-42zM995 2012l-60-29-68-58-68-58-136-156c-75-86-201-221-280-300l-144-144 11-11 11-11 145-3 144-4 83 12 82 11 90 31c105 36 188 76 266 129l56 38 59 64 59 65 33 65 32 66 10 53 10 53-6 41c-3 22-16 58-27 79l-22 39-54 28-53 28h-113l-60-28zm-744-318 1-19 5 13c3 7 2 16-1 19-3 4-6-2-5-13zm-9-69v-30l5 18c2 9 2 23 0 30l-5 12v-30zm1802-149c-183-35-271-86-549-321-108-92-204-153-313-200l-80-35-78-16-79-16-100 4-100 5-128 33-128 32-6-6-7-6 17-34c8-19 42-72 75-117l60-84 86-83 87-84 63-29 62-29 80-12 79-11 101 20 101 21 94 45 94 46 90 79c50 43 125 118 168 165l77 86 79 59 78 59 78 32c42 18 109 39 149 48l71 15 70-6c137-11 276-65 359-137l46-41 5 14c3 7 14 41 25 76l20 63-29 58-30 58-48 47c-91 90-207 156-338 192l-50 14-90 5-90 5-71-14zM291 1094l1-19 5 13c3 7 2 16-1 19-3 4-6-2-5-13zm1919-74c-64-12-124-35-200-77l-65-36-180-177-180-177-78-51-78-51-77-29c-42-17-103-35-134-42l-58-11v-9c0-14 9-17 136-49l119-31 90-8 90-9 125 8 125 8 105 31 105 31 110 54 110 53 105 85 105 86 53 63c29 35 73 89 98 121l46 59-23 24c-37 39-114 84-186 109l-68 23-75 5-75 6-45-9zM340 981c0-6 4-13 10-16l10-6-6 15c-7 18-14 21-14 7zm26-44c3-10 9-15 12-12s0 11-7 18l-12 12 7-18zm29-57c9-16 18-30 21-30 2 0-2 14-11 30-9 17-18 30-21 30-2 0 2-13 11-30zm162-225c28-33 75-82 104-110l54-50-75 80c-107 116-141 149-83 80zm178-175c10-11 20-20 23-20s-3 9-13 20-20 20-23 20 3-9 13-20zm129-89c7-11 46-35 46-28 0 3-12 12-26 22l-26 17 6-11zm90-55c11-9 24-16 30-16 12 0 7 5-24 19l-25 12 19-15zm824-163c7-3 16-2 19 1 4 3-2 6-13 5l-19-1 13-5zm-260-10c6-2 18-2 25 0l12 5h-50l13-5zm155 0c9-2 23-2 30 0l12 5h-60l18-5z"/></g><g fill="#19c0ce" transform="matrix(.1 0 0 -.1 0 300)"><path d="M1547 2750c-61-16-136-59-188-107l-49-46-30-52c-17-29-30-59-30-67v-15l38-7c20-3 64-6 98-6 33 0 102-3 152-6l92-7 6-19c3-10 15-28 27-38l21-20h22c13 0 34 5 47 11l25 11 11 25c6 13 11 35 11 49v25l-26 24-27 25h-23c-33 0-71-20-88-45l-14-22-54 8c-29 4-77 8-106 8l-52 1 19 38c24 46 53 73 111 104l45 23 78 4 78 3 46-17 46-18 39-35c22-19 51-56 66-81l27-46v-190l-23-48-24-47-44-31c-24-17-70-39-102-50l-57-21-55 5c-143 13-257 99-292 221l-14 48h-139l-6-28c-4-16-7-61-8-100l-1-71 44-17 44-17 47-41 46-40 21-42 22-41 4-96 4-96-17-59c-9-33-31-85-47-117l-31-57-60-66c-105-115-253-202-462-273-112-38-194-51-315-51h-94l9-9c6-5 62-26 125-47l115-38h190l190-1 80 28 80 28 90 54 90 54 150 124 150 123 57 68 56 67 40 77c54 105 68 150 81 267 6 55 14 114 17 132l5 32 36 43c20 24 48 68 61 98l26 55v90l1 90-32 66-33 66-67 57-68 56-54 21-55 20-81 4-80 4-38-9zm501-142c11-18 29-51 41-73l20-40 12-71 12-72-17-75-17-75-34-57c-19-32-35-60-35-62 0-7 94 5 143 18l37 10 25 37c13 20 29 58 35 84l12 47-15 73c-8 40-18 82-23 93l-7 20 16-15c8-8 27-36 41-63l25-47 6-53 7-52-20-52-20-52 30 6c16 3 62 16 101 28l72 22-3 24c-1 13-16 52-32 87l-29 62-53 56c-29 31-78 73-108 94-72 48-216 130-230 130h-12l20-32zm-925 2c-150-53-294-151-426-289l-85-90-60-90c-71-105-111-186-145-291-28-86-60-256-55-291l3-23 135 149c74 83 180 196 235 253l100 103 65 44 65 43 61 18 61 18 7 91 6 90 24 92 24 92 26 47c14 25 26 48 26 50 0 6-13 3-67-16zm1487-490v-40h-28c-15 0-50-6-77-14-28-7-111-30-185-50l-135-36-77-6-78-7v-106l-26-83c-14-46-41-113-59-149l-33-66 61 19 62 20 101 5 100 6 105-23 104-22 105-54 105-53 59-53c32-29 71-70 87-91l28-38 7 36 6 36-5 157-5 157-26 93c-35 125-76 222-137 320-27 45-52 82-55 82-2 0-4-18-4-40zm-1572-93c-20-8-58-27-85-42l-48-28-95-96c-53-53-150-157-217-232s-174-187-238-249l-116-114 23-9 23-9h165l165-1 73 16c102 24 236 75 327 128l78 44 57 55c67 64 118 142 149 223l21 58v120l-16 32c-23 46-44 66-88 89l-39 20-51 4-51 4-37-13zm993-558c-164-32-288-106-525-313-99-86-183-141-290-191-103-48-156-62-271-76l-80-9-79 11c-44 6-128 23-188 39l-108 28v-18c0-41 144-231 246-322 84-76 127-101 211-123l57-15h66c128 1 279 49 398 127l57 38 191 187 192 186 93 46c52 24 122 52 155 60l62 16h170l88-26c99-28 166-61 224-111l39-33 22 69 23 70-25 53-24 52-50 51c-93 94-243 176-373 204l-53 11-92-1c-51-1-112-5-136-10zm132-464c-135-38-205-88-416-298l-172-172-82-49-82-48-98-34c-54-19-108-34-120-34h-23v-9c0-5 8-12 18-15 9-2 49-14 88-25 158-46 335-60 507-41l87 10 118 39c65 21 149 55 187 74 117 59 280 184 342 262 86 107 153 196 153 204 0 5-30 30-67 55l-68 46-60 21-60 21-100 4-100 4-52-15z"/></g><g fill="#0e99a4" transform="matrix(.1 0 0 -.1 0 300)"><path d="M1547 2750c-61-16-136-59-188-107l-49-46-30-52c-17-29-30-59-30-67v-15l38-7c20-3 64-6 98-6 33 0 102-3 152-6l92-7 6-19c3-10 15-28 27-38l21-20h22c13 0 34 5 47 11l25 11 11 25c6 13 11 35 11 49v25l-26 24-27 25h-23c-33 0-71-20-88-45l-14-22-54 8c-29 4-77 8-106 8l-52 1 19 38c24 46 53 73 111 104l45 23 78 4 78 3 46-17 46-18 39-35c22-19 51-56 66-81l27-46v-190l-23-48-24-47-44-31c-24-17-70-39-102-50l-57-21-55 5c-143 13-257 99-292 221l-14 48h-139l-6-28c-4-16-7-61-8-100l-1-71 44-17 44-17 47-41 46-40 21-42 22-41 4-96 4-96-17-59c-9-33-31-85-47-117l-31-57-60-66c-105-115-253-202-462-273-112-38-194-51-315-51h-94l9-9c6-5 62-26 125-47l115-38h190l190-1 80 28 80 28 90 54 90 54 110 92c61 50 138 118 171 151l62 60-16 19c-9 11-22 19-29 19h-13l-6 26-6 25 17 94 18 94-6 96-6 97 25-6 24-6 69 14c38 8 83 21 99 30l30 15 6 35 7 35 36 43c20 24 48 68 61 98l26 55v90l1 90-32 66-33 66-67 57-68 56-54 21-55 20-81 4-80 4-38-9zm501-142c11-18 29-51 41-73l20-40 12-71 12-72-17-75-17-75-34-57c-19-32-35-60-35-62 0-7 94 5 143 18l37 10 25 37c13 20 29 58 35 84l12 47-15 73c-8 40-18 82-23 93l-7 20 16-15c8-8 27-36 41-63l25-47 6-53 7-52-20-52-20-52 30 6c16 3 62 16 101 28l72 22-3 24c-1 13-16 52-32 87l-29 62-53 56c-29 31-78 73-108 94-72 48-216 130-230 130h-12l20-32zm-964-131c-22-18-50-42-63-54s-38-29-55-37-49-33-71-55l-39-41h-23c-24 0-57-15-81-37-7-7-21-13-31-13-9 0-22-5-29-12l-11-11-16 13-16 13 6 16 5 16-30-35c-90-103-182-265-224-392-27-85-59-254-54-289l3-23 135 149c74 83 180 196 235 253l100 103 65 44c60 39 142 75 174 75h13l6 93 6 92 21 79c12 43 19 80 18 82-2 2-22-11-44-29zm-46-450c-20-8-58-27-85-42l-48-28-95-96c-53-53-150-157-217-232s-174-187-238-249l-116-114 23-9 23-9h165l165-1 73 16c102 24 236 75 327 128l78 44 57 55c67 64 118 142 149 223l21 58v120l-16 32c-23 46-44 66-88 89l-39 20-51 4-51 4-37-13zm1222-28c-41-10-109-22-150-25l-75-7-3-60-2-60-31-91c-16-50-43-114-59-142l-28-51 56 20 57 19 111 5 111 6 104-23 104-22 89-46 89-46 64-51 63-51 34-47 33-47 7 53c3 28 6 95 6 148v96l-22 29c-13 16-32 39-42 52l-20 22h-33c-18 0-42-5-52-12l-20-12-68 11c-146 25-190 35-230 54-24 12-43 24-43 29s-18 11-40 15l-40 7v9c0 5-7 9-15 9-23 0-63 21-69 37l-6 14 29 27c45 43 64 57 118 87 28 16 56 37 62 47l11 18-12-1c-7-1-47-10-88-20zm-605-722c-23-18-81-66-130-108-119-100-199-153-309-204-103-48-156-62-271-76l-80-9-79 11c-44 6-128 23-188 39l-108 28v-18c0-41 144-231 246-322 84-76 127-101 211-123l57-15h66c127 1 277 48 398 126l57 37 150 152c83 83 177 173 210 200l60 49 70 32c39 18 99 40 135 49l65 18h180l90-27c99-30 159-61 214-112l37-33 23 69 22 69-27 53c-14 29-38 65-52 81l-26 27h-45c-25-1-71-6-101-13l-55-13-290 3-290 2-95 9c-52 5-98 8-102 5-5-2-13-1-19 2l-10 7 17 19c24 27 15 23-31-14zm508-272c-135-38-205-88-416-298l-172-172-82-49-82-48-98-34c-54-19-108-34-120-34h-23v-9c0-5 8-12 18-15 9-2 49-14 88-25 158-46 339-61 504-41l85 11 100 30c182 56 303 122 453 248l73 61-47 21-47 21-81-4-81-5-48-23-49-23-53-48c-29-27-58-49-64-49h-11v21c0 11-5 29-10 39l-10 19-45 7-45 6v11c0 7 29 40 65 74l66 63 72 34 73 35 71 12 71 13 71-13 72-13 57-28c31-16 62-30 68-32l11-3 37 48c20 26 36 51 36 56s-30 30-67 55l-68 46-60 21-60 21-100 4-100 4-52-15z"/></g><g fill="#0c556b" transform="matrix(.1 0 0 -.1 0 300)"><path d="M1547 2749c-59-14-136-57-188-106l-49-46-30-52c-17-29-30-59-30-67v-15l38-7c20-3 69-6 107-6 39 0 107-3 152-6l82-7 11-27 11-27 25-12c14-6 34-11 45-11h21l29 29 29 29v63l-26 24-27 25h-53l-24-17c-14-9-30-24-37-33l-12-17-73 9c-40 5-88 8-105 6-18-2-33-2-33-1 0 2 9 20 19 41 24 46 53 73 111 104l45 23 78 4 78 3 46-17 46-18 39-35c22-19 51-55 65-80l26-45 5-77 4-78-17-51-17-52-33-34-34-33-55-26-55-26-46-7-45-6-61 13-62 13-56 38-56 38-25 37c-14 20-32 57-41 83l-16 46-70 3-70 3-7-47c-3-26-6-70-6-99v-52l47-18 47-18 47-44 47-44 22-52 23-52v-85l1-85-18-60-17-60-39-65-38-65-54-56c-98-102-252-191-438-253-121-40-198-54-327-58l-92-3 7-6c15-14 204-69 274-80l72-11 131 5 130 5 80 25 80 26 88 53c49 29 106 67 127 85l37 32 6 29c3 16 15 40 26 53 52 61 94 124 130 197l40 78 21 85 22 84-5 75c-3 41-8 82-12 91l-6 16 81 6 81 5 46 24 47 23 13 38 13 39 31 36c18 20 43 61 57 91l25 54 1 91 1 91-32 65-32 65-53 46c-76 64-116 86-189 104l-64 15-50-1c-27-1-67-5-88-10zm508-151c41-66 54-100 66-176l12-70-17-75-17-75-34-57c-19-32-35-59-35-61 0-7 31-4 98 7l66 12 28 31 29 31 15 51 15 52-11 66c-6 36-15 77-20 92-17 45-3 39 29-11l30-47 10-49c15-68 14-81-8-139l-19-50 26 7c15 3 61 16 102 28l75 23-3 23c-1 13-15 51-31 84l-28 60-53 58c-29 32-79 76-109 97-65 44-219 130-233 130h-9l26-42zm-990-198c-28-11-128-118-156-168l-24-42h-12c-6 0-14-8-17-18s-51-64-106-120l-100-102h-14c-7 0-26-6-41-14-24-13-138-33-157-28-17 4-88-277-88-350v-20l68 73c38 41 109 119 159 174s129 139 176 186l86 86 61 41 62 40 59 19 59 18-1 20v20l-9-20-9-20v23l-1 22h20v48c1 26 5 66 9 90 9 47 6 53-24 42zm-27-373c-20-8-58-27-85-42l-48-28-95-96c-53-53-147-154-210-226-63-71-169-183-235-248l-120-117 13-9c8-4 66-11 130-15l117-6 85 10c113 15 154 24 251 60 220 80 362 197 440 364l32 69 4 71 4 71-23 45-23 45-46 28-46 28-54 5-54 4-37-13zm1115-1025-61-19-77-44-78-44-171-171-171-171-65-43c-77-53-212-113-293-130-32-8-60-16-62-20-5-8 145-54 235-71l65-13 145 1h145l58 12c31 7 57 16 57 20s-5 34-12 67l-12 59-15 12c-9 7-26 13-38 13h-23v14c0 15 49 83 123 169l50 58 63 45c35 25 91 56 126 71l63 25 75 5 76 6 54-12 55-11 63-33 64-32 39 45c21 25 39 50 39 56s-27 30-59 53l-60 41-68 27-68 26-100 3-100 4-62-18zm-888-20c-27-14-84-38-126-53l-77-28-88-12-88-11-67 6c-36 3-125 21-198 39l-131 33v-16c0-9 33-63 74-121l73-104 85-80 84-80 55-26c138-67 294-63 474 12l74 30 71 50 70 50 96 97c53 53 102 109 109 123l14 25-20 12-20 13-62 5c-34 3-89 7-122 9-86 5-149 16-156 27-3 5-18 11-34 14s-31 7-34 9c-3 1-28-9-56-23zm957-332c-60-22-137-75-168-117-11-15-51-72-87-125l-67-98h20c30 0 204 66 278 105 69 36 162 103 242 174l45 39-45 21-45 21-60-1h-60l-53-19z"/></g><g fill="#060c1c" transform="matrix(.1 0 0 -.1 0 300)"><path d="m1578 2750-57-7-56-28-56-27-52-52-53-51-29-57c-16-31-27-59-25-61 3-3 84-8 180-12l175-7-11 11-10 11-87 2-87 2v9c0 40 75 117 145 148l50 23h150l46-21 47-21 40-40c51-51 70-87 83-157l10-55-10-57c-6-31-19-72-28-92l-18-36-48-36-48-36-53-16-53-17h-99l-50 15-49 15-48 36-48 35-30 47c-16 26-34 64-40 84l-10 38h-128l-4-8c-3-4-7-47-8-96l-3-89 44-19c24-10 63-34 86-54l43-34 25-53c14-28 28-72 32-96l7-43 68 70 67 71 34-9c67-20 206-2 278 35l30 16v46l50 65 50 64 15 44 15 43 2 76 1 77-17 51-17 50-36 43c-21 24-64 63-96 87l-59 43-52 14c-70 19-130 24-198 16zm488-167c42-70 53-107 61-200l6-72-22-69-23-69-28-44c-16-24-28-44-27-46 2-1 35 3 75 9l72 10 26 21 27 20 18 41 19 41v122l-15 49c-29 96-13 101 34 10l32-63 6-56 6-55-17-47-16-47 31 6c16 3 61 15 99 27l69 21-18 49c-42 109-113 198-211 266-43 29-226 133-234 133-3 0 11-26 30-57zm-393-73c-17-10-37-28-43-39l-11-21 16-30c8-16 26-37 40-46l24-16 30 7 31 7 20 25 20 26v49l-29 29-29 29h-19c-10 0-32-9-50-20zm-603-480c-55-10-125-49-199-112l-69-58-123-143c-68-78-192-212-276-297l-153-155 28-6c15-4 91-7 168-8l142-1 83 16 84 16 94 35c52 19 126 54 165 76l71 42 71 70 70 70 28 50c15 28 36 76 47 107l19 57v82l-15 37c-38 90-135 140-235 122zm-241-846-125-44-125-10c-68-6-128-12-134-14-5-2 34-17 89-35l99-32 103-10 103-9 40 9c22 5 42 6 45 4 3-3 7 12 11 33 3 22 10 58 16 82 5 24 7 47 4 52l-5 8 12 5c7 3 9 5 3 5-5-1-67-20-136-44zm1354-178-62-15-83-42-83-43-185-181c-204-200-239-227-373-290l-92-43-58-13c-32-7-60-15-62-19-11-18 264-80 353-80h44l-4 12-4 12 47 37c64 52 109 99 194 204 163 203 286 287 452 309l52 7 68-11 67-11 66-32c36-18 67-33 70-35 3-1 23 18 44 44l38 45-17 19c-31 34-112 81-183 106l-68 23-79 5-80 6-62-14zM490 943c0-4 10-24 22-43l22-35 4 22 3 23 27 7 26 6-20 7c-10 4-34 11-51 14l-33 8v-9zm1784-283c-52-11-130-50-174-86l-33-28-74-114c-41-62-73-115-71-117 7-7 191 61 264 98 65 33 180 114 262 185l32 29-37 16c-21 9-58 18-83 21l-45 5-41-9z"/></g></g></svg>