Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

app build: don't merge dynamic params with query params #72294

Merged

Conversation

ztanner
Copy link
Member

@ztanner ztanner commented Nov 4, 2024

At build time we merge dynamic params (e.g. [lang]) with search params into the same object used as part of the pages/app renders. This is semantically incorrect and has led to some unexpected downstream behavior (such as dynamic params showing up as cache keys in flight data for app router). Pages router seems to rely on this behavior (for ex, useRouter().query combines both dynamic params with search params).

This avoids mutating query and instead combines them specifically in the pages export case. This also fixes an inconsistency in where we're reading params in pages render, specifically getStaticProps now reads params from params rather than query to align with getServerSideProps and not rely on the fact that we happen to merge them.

@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. type: next labels Nov 4, 2024
Copy link
Member Author

ztanner commented Nov 4, 2024

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @ztanner and the rest of your teammates on Graphite Graphite

@ijjk
Copy link
Member

ijjk commented Nov 4, 2024

Tests Passed

@ztanner ztanner force-pushed the 11-04-build_don_t_merge_dynamic_params_with_query_params branch from 4a22f2f to b92028f Compare November 5, 2024 02:35
@ijjk
Copy link
Member

ijjk commented Nov 5, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
buildDuration 21.2s 18.4s N/A
buildDurationCached 17.6s 15.5s N/A
nodeModulesSize 403 MB 403 MB ⚠️ +1.87 kB
nextStartRea..uration (ms) 486ms 490ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
3073-HASH.js gzip 45.4 kB 45.4 kB N/A
3898-HASH.js gzip 5.27 kB 5.27 kB N/A
7183.HASH.js gzip 169 B 168 B N/A
b5cfd723-HASH.js gzip 52.5 kB 52.5 kB
framework-HASH.js gzip 57.3 kB 57.3 kB N/A
main-app-HASH.js gzip 235 B 231 B N/A
main-HASH.js gzip 33.1 kB 33.1 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB
Overall change 54.2 kB 54.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
_app-HASH.js gzip 193 B 194 B N/A
_error-HASH.js gzip 192 B 192 B
amp-HASH.js gzip 513 B 511 B N/A
css-HASH.js gzip 343 B 344 B N/A
dynamic-HASH.js gzip 1.85 kB 1.84 kB N/A
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 392 B 393 B N/A
image-HASH.js gzip 4.41 kB 4.4 kB N/A
index-HASH.js gzip 268 B 266 B N/A
link-HASH.js gzip 2.77 kB 2.78 kB N/A
routerDirect..HASH.js gzip 327 B 325 B N/A
script-HASH.js gzip 396 B 397 B N/A
withRouter-HASH.js gzip 324 B 324 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 887 B 887 B
Client Build Manifests
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
_buildManifest.js gzip 748 B 748 B
Overall change 748 B 748 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
index.html gzip 524 B 522 B N/A
link.html gzip 539 B 535 B N/A
withRouter.html gzip 519 B 519 B
Overall change 519 B 519 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
edge-ssr.js gzip 128 kB 128 kB N/A
page.js gzip 198 kB 198 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
middleware-b..fest.js gzip 668 B 668 B
middleware-r..fest.js gzip 156 B 155 B N/A
middleware.js gzip 31 kB 31 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 1.51 kB 1.51 kB
Next Runtimes
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
10-experimen...dev.js gzip 319 B 319 B
10.runtime.dev.js gzip 311 B 311 B
app-page-exp...dev.js gzip 318 kB 318 kB
app-page-exp..prod.js gzip 123 kB 123 kB
app-page-tur..prod.js gzip 136 kB 136 kB
app-page-tur..prod.js gzip 131 kB 131 kB
app-page.run...dev.js gzip 309 kB 309 kB
app-page.run..prod.js gzip 119 kB 119 kB
app-route-ex...dev.js gzip 35.9 kB 35.9 kB
app-route-ex..prod.js gzip 24.4 kB 24.4 kB
app-route-tu..prod.js gzip 24.4 kB 24.4 kB
app-route-tu..prod.js gzip 24.2 kB 24.2 kB
app-route.ru...dev.js gzip 37.5 kB 37.5 kB
app-route.ru..prod.js gzip 24.2 kB 24.2 kB
pages-api-tu..prod.js gzip 9.59 kB 9.59 kB
pages-api.ru...dev.js gzip 11.4 kB 11.4 kB
pages-api.ru..prod.js gzip 9.58 kB 9.58 kB
pages-turbo...prod.js gzip 20.9 kB 20.9 kB N/A
pages.runtim...dev.js gzip 26.5 kB 26.5 kB N/A
pages.runtim..prod.js gzip 20.9 kB 20.9 kB N/A
server.runti..prod.js gzip 915 kB 915 kB
Overall change 2.25 MB 2.25 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js 11-04-build_don_t_merge_dynamic_params_with_query_params Change
0.pack gzip 2 MB 2 MB N/A
index.pack gzip 147 kB 147 kB ⚠️ +205 B
Overall change 147 kB 147 kB ⚠️ +205 B
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
       /***/
     },
 
-    /***/ 5958: /***/ (
+    /***/ 4083: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -30,7 +30,7 @@
         default: () => /* binding */ nHandler,
       });
 
-      // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats3Zj7FN%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats3Zj7FN%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
       var page_next_edge_ssr_entry_namespaceObject = {};
       __webpack_require__.r(page_next_edge_ssr_entry_namespaceObject);
       __webpack_require__.d(page_next_edge_ssr_entry_namespaceObject, {
@@ -83,35 +83,35 @@
         workUnitAsyncStorage: () => entry_base /* workUnitAsyncStorage */.FP,
       });
 
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/web/globals.js
-      var globals = __webpack_require__(0);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
-      var adapter = __webpack_require__(1466);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
-      var render = __webpack_require__(1263);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 6 modules
-      var incremental_cache = __webpack_require__(6813);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/app-render/app-render.js + 64 modules
-      var app_render = __webpack_require__(8974);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
-      var module_compiled = __webpack_require__(7347);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/route-kind.js
-      var route_kind = __webpack_require__(5839);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/client/components/error-boundary.js
-      var error_boundary = __webpack_require__(8999);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/app-render/entry-base.js + 26 modules
-      var entry_base = __webpack_require__(1642); // ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats3Zj7FN%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/web/globals.js
+      var globals = __webpack_require__(2887);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+      var adapter = __webpack_require__(9579);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
+      var render = __webpack_require__(7792);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 6 modules
+      var incremental_cache = __webpack_require__(432);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/app-render/app-render.js + 64 modules
+      var app_render = __webpack_require__(5003);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+      var module_compiled = __webpack_require__(8273);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/route-kind.js
+      var route_kind = __webpack_require__(4278);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/client/components/error-boundary.js
+      var error_boundary = __webpack_require__(6144);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/app-render/entry-base.js + 26 modules
+      var entry_base = __webpack_require__(9139); // ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats3Zj7FN%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
       const module0 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 3319)
+          __webpack_require__.bind(__webpack_require__, 4385)
         );
       const module1 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 9845)
+          __webpack_require__.bind(__webpack_require__, 4604)
         );
       const page2 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 1457)
+          __webpack_require__.bind(__webpack_require__, 1035)
         );
 
       // We inject the tree and pages here so that we can use them in the route
@@ -174,12 +174,12 @@
       });
 
       //# sourceMappingURL=app-page.js.map
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/lib/page-types.js
-      var page_types = __webpack_require__(982);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/app-render/encryption-utils.js
-      var encryption_utils = __webpack_require__(4011);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/esm/server/app-render/action-utils.js
-      var action_utils = __webpack_require__(1436); // ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sImV4cGlyZVRpbWUiOjMxNTM2MDAwLCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sIm91dHB1dEZpbGVUcmFjaW5nUm9vdCI6Ii90bXAvbmV4dC1zdGF0czNaajdGTi9zdGF0cy1hcHAiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjYwfSwibWludXRlcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MCwiZXhwaXJlIjozNjAwfSwiaG91cnMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MzYwMCwiZXhwaXJlIjo4NjQwMH0sImRheXMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6ODY0MDAsImV4cGlyZSI6NjA0ODAwfSwid2Vla3MiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6NjA0ODAwLCJleHBpcmUiOjI1OTIwMDB9LCJtYXgiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MjU5MjAwMCwiZXhwaXJlIjo0Mjk0OTY3Mjk0fX0sImNhY2hlSGFuZGxlcnMiOnt9LCJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpbWdPcHRDb25jdXJyZW5jeSI6bnVsbCwiaW1nT3B0VGltZW91dEluU2Vjb25kcyI6NywiaW1nT3B0TWF4SW5wdXRQaXhlbHMiOjI2ODQwMjY4OSwiaXNyRmx1c2hUb0Rpc2siOnRydWUsIndvcmtlclRocmVhZHMiOmZhbHNlLCJvcHRpbWl6ZUNzcyI6ZmFsc2UsIm5leHRTY3JpcHRXb3JrZXJzIjpmYWxzZSwic2Nyb2xsUmVzdG9yYXRpb24iOmZhbHNlLCJleHRlcm5hbERpciI6ZmFsc2UsImRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nIjpmYWxzZSwiZ3ppcFNpemUiOnRydWUsImNyYUNvbXBhdCI6ZmFsc2UsImVzbUV4dGVybmFscyI6dHJ1ZSwiZnVsbHlTcGVjaWZpZWQiOmZhbHNlLCJzd2NUcmFjZVByb2ZpbGluZyI6ZmFsc2UsImZvcmNlU3djVHJhbnNmb3JtcyI6ZmFsc2UsImxhcmdlUGFnZURhdGFCeXRlcyI6MTI4MDAwLCJ0dXJibyI6eyJyb290IjoiL3RtcC9uZXh0LXN0YXRzM1pqN0ZOL3N0YXRzLWFwcCJ9LCJ0eXBlZFJvdXRlcyI6ZmFsc2UsInR5cGVkRW52IjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJDb21waWxlcyI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQnVpbGRUcmFjZXMiOmZhbHNlLCJwcHIiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzM1pqN0ZOL3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzM1pqN0ZOJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30=","cacheHandlers":"{}"}!
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/lib/page-types.js
+      var page_types = __webpack_require__(4853);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+      var encryption_utils = __webpack_require__(2052);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/esm/server/app-render/action-utils.js
+      var action_utils = __webpack_require__(743); // ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sImV4cGlyZVRpbWUiOjMxNTM2MDAwLCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sIm91dHB1dEZpbGVUcmFjaW5nUm9vdCI6Ii90bXAvbmV4dC1zdGF0czNaajdGTi9zdGF0cy1hcHAiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjYwfSwibWludXRlcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MCwiZXhwaXJlIjozNjAwfSwiaG91cnMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MzYwMCwiZXhwaXJlIjo4NjQwMH0sImRheXMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6ODY0MDAsImV4cGlyZSI6NjA0ODAwfSwid2Vla3MiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6NjA0ODAwLCJleHBpcmUiOjI1OTIwMDB9LCJtYXgiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MjU5MjAwMCwiZXhwaXJlIjo0Mjk0OTY3Mjk0fX0sImNhY2hlSGFuZGxlcnMiOnt9LCJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpbWdPcHRDb25jdXJyZW5jeSI6bnVsbCwiaW1nT3B0VGltZW91dEluU2Vjb25kcyI6NywiaW1nT3B0TWF4SW5wdXRQaXhlbHMiOjI2ODQwMjY4OSwiaXNyRmx1c2hUb0Rpc2siOnRydWUsIndvcmtlclRocmVhZHMiOmZhbHNlLCJvcHRpbWl6ZUNzcyI6ZmFsc2UsIm5leHRTY3JpcHRXb3JrZXJzIjpmYWxzZSwic2Nyb2xsUmVzdG9yYXRpb24iOmZhbHNlLCJleHRlcm5hbERpciI6ZmFsc2UsImRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nIjpmYWxzZSwiZ3ppcFNpemUiOnRydWUsImNyYUNvbXBhdCI6ZmFsc2UsImVzbUV4dGVybmFscyI6dHJ1ZSwiZnVsbHlTcGVjaWZpZWQiOmZhbHNlLCJzd2NUcmFjZVByb2ZpbGluZyI6ZmFsc2UsImZvcmNlU3djVHJhbnNmb3JtcyI6ZmFsc2UsImxhcmdlUGFnZURhdGFCeXRlcyI6MTI4MDAwLCJ0dXJibyI6eyJyb290IjoiL3RtcC9uZXh0LXN0YXRzM1pqN0ZOL3N0YXRzLWFwcCJ9LCJ0eXBlZFJvdXRlcyI6ZmFsc2UsInR5cGVkRW52IjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJDb21waWxlcyI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQnVpbGRUcmFjZXMiOmZhbHNlLCJwcHIiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzM1pqN0ZOL3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzM1pqN0ZOJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30=","cacheHandlers":"{}"}!
       var _self___RSC_MANIFEST;
 
       const incrementalCacheHandler = null;
@@ -461,105 +461,105 @@
       /***/
     },
 
-    /***/ 4632: /***/ (
+    /***/ 8679: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5583)
+        __webpack_require__.bind(__webpack_require__, 8448)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1343)
+        __webpack_require__.bind(__webpack_require__, 3258)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 899)
+        __webpack_require__.bind(__webpack_require__, 5228)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8999)
+        __webpack_require__.bind(__webpack_require__, 6144)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 594)
+        __webpack_require__.bind(__webpack_require__, 8115)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2533)
+        __webpack_require__.bind(__webpack_require__, 6974)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8838)
+        __webpack_require__.bind(__webpack_require__, 1901)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 272)
+        __webpack_require__.bind(__webpack_require__, 4344)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2925)
+        __webpack_require__.bind(__webpack_require__, 7714)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8474)
+        __webpack_require__.bind(__webpack_require__, 7409)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8839)
+        __webpack_require__.bind(__webpack_require__, 6096)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7445)
+        __webpack_require__.bind(__webpack_require__, 5450)
       );
 
       /***/
     },
 
-    /***/ 9480: /***/ (
+    /***/ 7999: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6643)
+        __webpack_require__.bind(__webpack_require__, 4209)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 3535)
+        __webpack_require__.bind(__webpack_require__, 8101)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8467)
+        __webpack_require__.bind(__webpack_require__, 4508)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 871)
+        __webpack_require__.bind(__webpack_require__, 4656)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 884)
+        __webpack_require__.bind(__webpack_require__, 7995)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2669)
+        __webpack_require__.bind(__webpack_require__, 1814)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7094)
+        __webpack_require__.bind(__webpack_require__, 877)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6067)
+        __webpack_require__.bind(__webpack_require__, 8424)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7653)
+        __webpack_require__.bind(__webpack_require__, 7178)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9482)
+        __webpack_require__.bind(__webpack_require__, 5793)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1639)
+        __webpack_require__.bind(__webpack_require__, 2832)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8442)
+        __webpack_require__.bind(__webpack_require__, 7618)
       );
 
       /***/
     },
 
-    /***/ 7471: /***/ () => {
+    /***/ 694: /***/ () => {
       /***/
     },
 
-    /***/ 5719: /***/ () => {
+    /***/ 7550: /***/ () => {
       /***/
     },
 
-    /***/ 1457: /***/ (
+    /***/ 1035: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -579,7 +579,7 @@
       /***/
     },
 
-    /***/ 3319: /***/ (
+    /***/ 4385: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -591,7 +591,7 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(9282);
+        __webpack_require__(5103);
 
       function RootLayout({ children }) {
         return /*#__PURE__*/ (0,
@@ -610,7 +610,7 @@
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [945, 775], () => __webpack_exec__(5958));
+    /******/ __webpack_require__.O(0, [563, 298], () => __webpack_exec__(4083));
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ (_ENTRIES = typeof _ENTRIES === "undefined" ? {} : _ENTRIES)[
       "middleware_app/app-edge-ssr/page"
Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2983],
   {
-    /***/ 8916: /***/ (
+    /***/ 7893: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(4209);
+          return __webpack_require__(3231);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 9265: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4457: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(9577)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1436)
+        __webpack_require__(5156)
       );
-      const _getimgprops = __webpack_require__(8517);
-      const _imageconfig = __webpack_require__(2168);
-      const _imageconfigcontextsharedruntime = __webpack_require__(9202);
-      const _warnonce = __webpack_require__(6992);
-      const _routercontextsharedruntime = __webpack_require__(8155);
+      const _getimgprops = __webpack_require__(637);
+      const _imageconfig = __webpack_require__(2720);
+      const _imageconfigcontextsharedruntime = __webpack_require__(8650);
+      const _warnonce = __webpack_require__(5752);
+      const _routercontextsharedruntime = __webpack_require__(5139);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(345)
+        __webpack_require__(2801)
       );
-      const _usemergedref = __webpack_require__(2806);
+      const _usemergedref = __webpack_require__(1985);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
       /***/
     },
 
-    /***/ 2806: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1985: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
       /***/
     },
 
-    /***/ 8517: /***/ (
+    /***/ 637: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -448,9 +448,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(6992);
-      const _imageblursvg = __webpack_require__(1692);
-      const _imageconfig = __webpack_require__(2168);
+      const _warnonce = __webpack_require__(5752);
+      const _imageblursvg = __webpack_require__(1732);
+      const _imageconfig = __webpack_require__(2720);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -824,7 +824,7 @@
       /***/
     },
 
-    /***/ 1692: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1732: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -879,7 +879,7 @@
       /***/
     },
 
-    /***/ 4673: /***/ (
+    /***/ 857: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -906,10 +906,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(1739);
-      const _getimgprops = __webpack_require__(8517);
-      const _imagecomponent = __webpack_require__(9265);
+      const _getimgprops = __webpack_require__(637);
+      const _imagecomponent = __webpack_require__(4457);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(345)
+        __webpack_require__(2801)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -941,7 +941,7 @@
       /***/
     },
 
-    /***/ 345: /***/ (__unused_webpack_module, exports) => {
+    /***/ 2801: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -976,7 +976,7 @@
       /***/
     },
 
-    /***/ 4209: /***/ (
+    /***/ 3231: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -993,8 +993,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.0.0-rc-7c8e5e7a-20241101/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(7515);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/image.js
-      var next_image = __webpack_require__(7265);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/image.js
+      var next_image = __webpack_require__(3120);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1024,12 +1024,12 @@
       /***/
     },
 
-    /***/ 7265: /***/ (
+    /***/ 3120: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(4673);
+      module.exports = __webpack_require__(857);
 
       /***/
     },
@@ -1039,7 +1039,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8916)
+      __webpack_exec__(7893)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for main-HASH.js

Diff too large to display

Diff for pages-turbo...time.prod.js
@@ -22,7 +22,7 @@ Read more: https://nextjs.org/docs/messages/${r}`};function e1(e,t,r){let{destin
 `+i.join(" and ")+"\nSee more info here: https://nextjs.org/docs/messages/invalid-redirect-gssp")}async function e4(n,s,a,i,l,d){var u,c;let p,h,m,f;(0,b.C4)({req:n},"cookies",(u=n.headers,function(){let{cookie:e}=u;if(!e)return{};let{parse:t}=r("./dist/compiled/cookie/index.js");return t(Array.isArray(e)?e.join("; "):e)}));let g={};if(g.assetQueryString=l.dev&&l.assetQueryString||"",l.dev&&!g.assetQueryString){let e=(n.headers["user-agent"]||"").toLowerCase();e.includes("safari")&&!e.includes("chrome")&&(g.assetQueryString=`?ts=${Date.now()}`)}l.deploymentId&&(g.assetQueryString+=`${g.assetQueryString?"&":"?"}dpl=${l.deploymentId}`),i=Object.assign({},i);let{err:v,dev:x=!1,ampPath:w="",pageConfig:S={},buildManifest:R,reactLoadableManifest:E,ErrorDebug:T,getStaticProps:N,getStaticPaths:$,getServerSideProps:k,isNextDataRequest:M,params:D,previewProps:F,basePath:B,images:H,runtime:G,isExperimentalCompile:K,expireTime:ee}=l,{App:er}=d,ea=g.assetQueryString,ei=d.Document,el=l.Component,ed=!!i.__nextFallback,ep=i.__nextNotFoundSrcPage;!function(e){for(let t of eA)delete e[t]}(i);let eh=!!N,em=eh&&l.nextExport,ef=er.getInitialProps===er.origGetInitialProps,eg=!!(null==el?void 0:el.getInitialProps),ev=null==el?void 0:el.unstable_scriptLoader,ey=V(a),eb="/_error"===a&&el.getInitialProps===el.origGetInitialProps;l.nextExport&&eg&&!eb&&t(`Detected getInitialProps on page '${a}' while running export. It's recommended to use getStaticProps which has a more correct behavior for static exporting.
 Read more: https://nextjs.org/docs/messages/get-initial-props-export`);let ex=!eg&&ef&&!eh&&!k;if(ex&&!x&&K&&(s.setHeader("Cache-Control",function({revalidate:e,expireTime:t}){let r="number"==typeof e&&void 0!==t?e>=t?"":`stale-while-revalidate=${t-e}`:"stale-while-revalidate";return 0===e?"private, no-cache, no-store, max-age=0, must-revalidate":"number"==typeof e?`s-maxage=${e}, ${r}`:`s-maxage=${C.qF}, ${r}`}({revalidate:!1,expireTime:ee})),ex=!1),eg&&eh)throw Error(C.iS+` ${a}`);if(eg&&k)throw Error(C.bX+` ${a}`);if(k&&eh)throw Error(C.g0+` ${a}`);if(k&&"export"===l.nextConfigOutput)throw Error('getServerSideProps cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if($&&!ey)throw Error(`getStaticPaths is only allowed for dynamic SSG pages and was found on '${a}'.
 Read more: https://nextjs.org/docs/messages/non-dynamic-getstaticpaths-usage`);if($&&!eh)throw Error(`getStaticPaths was added without a getStaticProps in ${a}. Without getStaticProps, getStaticPaths does nothing`);if(eh&&ey&&!$)throw Error(`getStaticPaths is required for dynamic SSG pages and is missing for '${a}'.
-Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:i}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
+Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:D}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
 See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerender`);e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0}if((x||em)&&!g.isNotFound&&!O(a,"getStaticProps",e.props))throw Error("invariant: getStaticProps did not return valid props. Please report this.");if("revalidate"in e){if(e.revalidate&&"export"===l.nextConfigOutput)throw Error('ISR cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if("number"==typeof e.revalidate){if(Number.isInteger(e.revalidate)){if(e.revalidate<=0)throw Error(`A page's revalidate option can not be less than or equal to zero for ${n.url}. A revalidate option of zero means to revalidate after _every_ request, and implies stale data cannot be tolerated.
 
 To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
Diff for pages.runtime.dev.js

Diff too large to display

Diff for pages.runtime.prod.js
@@ -22,7 +22,7 @@ Read more: https://nextjs.org/docs/messages/${r}`};function e1(e,t,r){let{destin
 `+i.join(" and ")+"\nSee more info here: https://nextjs.org/docs/messages/invalid-redirect-gssp")}async function e4(n,s,a,i,l,d){var u,c;let p,h,m,f;(0,b.C4)({req:n},"cookies",(u=n.headers,function(){let{cookie:e}=u;if(!e)return{};let{parse:t}=r("./dist/compiled/cookie/index.js");return t(Array.isArray(e)?e.join("; "):e)}));let g={};if(g.assetQueryString=l.dev&&l.assetQueryString||"",l.dev&&!g.assetQueryString){let e=(n.headers["user-agent"]||"").toLowerCase();e.includes("safari")&&!e.includes("chrome")&&(g.assetQueryString=`?ts=${Date.now()}`)}l.deploymentId&&(g.assetQueryString+=`${g.assetQueryString?"&":"?"}dpl=${l.deploymentId}`),i=Object.assign({},i);let{err:v,dev:x=!1,ampPath:w="",pageConfig:S={},buildManifest:R,reactLoadableManifest:E,ErrorDebug:T,getStaticProps:N,getStaticPaths:$,getServerSideProps:k,isNextDataRequest:M,params:D,previewProps:F,basePath:B,images:H,runtime:G,isExperimentalCompile:K,expireTime:ee}=l,{App:er}=d,ea=g.assetQueryString,ei=d.Document,el=l.Component,ed=!!i.__nextFallback,ep=i.__nextNotFoundSrcPage;!function(e){for(let t of eA)delete e[t]}(i);let eh=!!N,em=eh&&l.nextExport,ef=er.getInitialProps===er.origGetInitialProps,eg=!!(null==el?void 0:el.getInitialProps),ev=null==el?void 0:el.unstable_scriptLoader,ey=V(a),eb="/_error"===a&&el.getInitialProps===el.origGetInitialProps;l.nextExport&&eg&&!eb&&t(`Detected getInitialProps on page '${a}' while running export. It's recommended to use getStaticProps which has a more correct behavior for static exporting.
 Read more: https://nextjs.org/docs/messages/get-initial-props-export`);let ex=!eg&&ef&&!eh&&!k;if(ex&&!x&&K&&(s.setHeader("Cache-Control",function({revalidate:e,expireTime:t}){let r="number"==typeof e&&void 0!==t?e>=t?"":`stale-while-revalidate=${t-e}`:"stale-while-revalidate";return 0===e?"private, no-cache, no-store, max-age=0, must-revalidate":"number"==typeof e?`s-maxage=${e}, ${r}`:`s-maxage=${C.qF}, ${r}`}({revalidate:!1,expireTime:ee})),ex=!1),eg&&eh)throw Error(C.iS+` ${a}`);if(eg&&k)throw Error(C.bX+` ${a}`);if(k&&eh)throw Error(C.g0+` ${a}`);if(k&&"export"===l.nextConfigOutput)throw Error('getServerSideProps cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if($&&!ey)throw Error(`getStaticPaths is only allowed for dynamic SSG pages and was found on '${a}'.
 Read more: https://nextjs.org/docs/messages/non-dynamic-getstaticpaths-usage`);if($&&!eh)throw Error(`getStaticPaths was added without a getStaticProps in ${a}. Without getStaticProps, getStaticPaths does nothing`);if(eh&&ey&&!$)throw Error(`getStaticPaths is required for dynamic SSG pages and is missing for '${a}'.
-Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:i}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
+Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:D}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
 See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerender`);e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0}if((x||em)&&!g.isNotFound&&!O(a,"getStaticProps",e.props))throw Error("invariant: getStaticProps did not return valid props. Please report this.");if("revalidate"in e){if(e.revalidate&&"export"===l.nextConfigOutput)throw Error('ISR cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if("number"==typeof e.revalidate){if(Number.isInteger(e.revalidate)){if(e.revalidate<=0)throw Error(`A page's revalidate option can not be less than or equal to zero for ${n.url}. A revalidate option of zero means to revalidate after _every_ request, and implies stale data cannot be tolerated.
 
 To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
Commit: b1ec09b

@ztanner ztanner force-pushed the 11-04-build_don_t_merge_dynamic_params_with_query_params branch 4 times, most recently from e0dca64 to cafaa57 Compare November 5, 2024 16:16
@ijjk ijjk added the tests label Nov 5, 2024
@ztanner ztanner changed the title build: don't merge dynamic params with query params app build: don't merge dynamic params with query params Nov 5, 2024
@ztanner ztanner force-pushed the 11-04-build_don_t_merge_dynamic_params_with_query_params branch from cafaa57 to 0450aed Compare November 5, 2024 16:21
@ztanner ztanner marked this pull request as ready for review November 5, 2024 16:24
@ztanner ztanner requested review from acdlite and ijjk November 5, 2024 16:24
Copy link
Contributor

@acdlite acdlite left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense to me

@ztanner ztanner force-pushed the 11-04-build_don_t_merge_dynamic_params_with_query_params branch from 0450aed to b1ec09b Compare November 5, 2024 16:30
@ztanner ztanner merged commit 3a1e37d into canary Nov 5, 2024
103 of 108 checks passed
@ztanner ztanner deleted the 11-04-build_don_t_merge_dynamic_params_with_query_params branch November 5, 2024 16:54
stipsan pushed a commit to sanity-io/next.js that referenced this pull request Nov 6, 2024
At build time we merge dynamic params (e.g. `[lang]`) with search params
into the same object used as part of the pages/app renders. This is
semantically incorrect and has led to some unexpected downstream
behavior (such as dynamic params showing up as cache keys in flight data
for app router). Pages router seems to rely on this behavior (for ex,
`useRouter().query` combines both dynamic params with search params).

This avoids mutating `query` and instead combines them specifically in
the pages export case. This also fixes an inconsistency in where we're
reading params in pages render, specifically `getStaticProps` now reads
params from `params` rather than `query` to align with
`getServerSideProps` and not rely on the fact that we happen to merge
them.
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 20, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants