@ahmedrowaihi/pdf-forge-preview 1.0.0-canary.0 → 1.0.0-canary.2

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.
Files changed (51) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/fallback-build-manifest.json +2 -2
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/server/app/_global-error.html +2 -2
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/page/server-reference-manifest.json +1 -1
  16. package/.next/server/app/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/preview/[...slug]/page/server-reference-manifest.json +4 -4
  18. package/.next/server/app/preview/[...slug]/page.js +1 -1
  19. package/.next/server/app/preview/[...slug]/page.js.nft.json +1 -1
  20. package/.next/server/app/preview/[...slug]/page_client-reference-manifest.js +1 -1
  21. package/.next/server/chunks/ssr/[root-of-the-server]__1536282c._.js +1 -1
  22. package/.next/server/chunks/ssr/[root-of-the-server]__1536282c._.js.map +1 -1
  23. package/.next/server/chunks/ssr/[root-of-the-server]__95852430._.js +3 -0
  24. package/.next/server/chunks/ssr/[root-of-the-server]__95852430._.js.map +1 -0
  25. package/.next/server/chunks/ssr/[root-of-the-server]__cb0c7b1a._.js +1 -1
  26. package/.next/server/chunks/ssr/[root-of-the-server]__ecac8617._.js +2 -2
  27. package/.next/server/chunks/ssr/_810f54e9._.js +1 -1
  28. package/.next/server/chunks/ssr/_810f54e9._.js.map +1 -1
  29. package/.next/server/chunks/ssr/_c57c12df._.js +1 -1
  30. package/.next/server/chunks/ssr/_c57c12df._.js.map +1 -1
  31. package/.next/server/chunks/ssr/packages_preview-server_src_e17a2a9b._.js +1 -1
  32. package/.next/server/chunks/ssr/packages_preview-server_src_e17a2a9b._.js.map +1 -1
  33. package/.next/server/pages/500.html +2 -2
  34. package/.next/server/server-reference-manifest.js +1 -1
  35. package/.next/server/server-reference-manifest.json +5 -5
  36. package/.next/static/chunks/{959ed978a6e89a66.js → 2ecbbe3fa6012870.js} +1 -1
  37. package/.next/static/chunks/{a6db6456c5b75734.js → 8adcb219445d6056.js} +1 -1
  38. package/.next/trace +1 -1
  39. package/.next/trace-build +1 -1
  40. package/CHANGELOG.md +18 -0
  41. package/next.config.mjs +1 -1
  42. package/package.json +5 -5
  43. package/src/actions/export-single-template.ts +114 -21
  44. package/src/app/preview/[...slug]/download-button.tsx +1 -6
  45. package/src/app/preview/[...slug]/preview.tsx +3 -3
  46. package/src/utils/asset-registry.ts +152 -0
  47. package/.next/server/chunks/ssr/[root-of-the-server]__025eaae9._.js +0 -3
  48. package/.next/server/chunks/ssr/[root-of-the-server]__025eaae9._.js.map +0 -1
  49. /package/.next/static/{cdYIhKFtJ0GB-yJK5ywz_ → MJwu4qo8243SZCjO3lRNL}/_buildManifest.js +0 -0
  50. /package/.next/static/{cdYIhKFtJ0GB-yJK5ywz_ → MJwu4qo8243SZCjO3lRNL}/_clientMiddlewareManifest.json +0 -0
  51. /package/.next/static/{cdYIhKFtJ0GB-yJK5ywz_ → MJwu4qo8243SZCjO3lRNL}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[39806,a=>a.a(async(b,c)=>{try{let b=await a.y("playwright-28ce85b391eb2b8b");a.n(b),c()}catch(a){c(a)}},!0),82221,(a,b,c)=>{b.exports=a.x("sharp-03c9e6d01f648d5d",()=>require("sharp-03c9e6d01f648d5d"))},36327,a=>a.a(async(b,c)=>{try{var d=a.i(12714),e=a.i(39806),f=a.i(82221),g=b([e]);[e]=g.then?(await g)():g;var h=class{debug(a){}log(a){console.log(`[PDF Printer] ${a}`)}warn(a){console.warn(`[PDF Printer] ${a}`)}error(a,b){console.error(`[PDF Printer] ${a}`,b)}};async function i(a,b){return await (0,f.default)(a).resize(b??{width:1920,kernel:"lanczos3",fastShrinkOnLoad:!1}).toBuffer()}var j=class{constructor(a=new h){this.logger=a}async launchBrowser(){let a={headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-web-security","--disable-dev-shm-usage","--disable-blink-features=AutomationControlled","--disable-features=IsolateOrigins,site-per-process"]};if(process.env.CHROMIUM_EXECUTABLE_PATH)try{await (0,d.access)(process.env.CHROMIUM_EXECUTABLE_PATH),a.executablePath=process.env.CHROMIUM_EXECUTABLE_PATH,this.logger.debug(`Using system Chromium at: ${process.env.CHROMIUM_EXECUTABLE_PATH}`)}catch{this.logger.warn(`Chromium path specified but not found: ${process.env.CHROMIUM_EXECUTABLE_PATH}, using Playwright's bundled browser`)}return e.chromium.launch(a)}async render(a){let b=null;try{b=await this.launchBrowser();let c={colorScheme:a.darkMode?"dark":"light",locale:"en-US",reducedMotion:"reduce",viewport:{width:794,height:1123},isMobile:!1,hasTouch:!1,deviceScaleFactor:2,bypassCSP:!0},d={...c,...a.contextOptions,viewport:a.contextOptions?.viewport??c.viewport},e={colorScheme:d.colorScheme,locale:d.locale,reducedMotion:d.reducedMotion,viewport:d.viewport,isMobile:d.isMobile,hasTouch:d.hasTouch,deviceScaleFactor:d.deviceScaleFactor,bypassCSP:d.bypassCSP},f=await (await b.newContext(e)).newPage();if(f.on("console",a=>this.logger.debug(`[Browser Log] ${a.text()}`)),f.on("requestfailed",a=>{this.logger.error(`[Browser Error] Failed to load resource: ${a.url()} - ${a.failure()?.errorText}`)}),a.url?(await f.goto(a.url,{waitUntil:"load",timeout:6e4}),await f.waitForLoadState("networkidle",{timeout:6e4})):a.html&&(await f.setContent(a.html,{waitUntil:"load",timeout:6e4}),await f.waitForLoadState("networkidle",{timeout:6e4})),a.darkMode&&await f.evaluate(()=>{document.documentElement.classList.add("dark"),document.body.classList.add("dark")}),"pdf"===a.outputType&&await f.emulateMedia({media:"print"}),this.logger.log(`Page content loaded, generating ${a.outputType}...`),"screenshot"===a.outputType){let b={fullPage:!0,type:"png",scale:"css",animations:"disabled",caret:"hide",omitBackground:!0,...a.screenshotOptions},c={fullPage:b.fullPage,type:b.type,quality:b.quality,scale:b.scale,animations:b.animations,caret:b.caret,omitBackground:b.omitBackground,clip:b.clip},d=await f.screenshot(c);if(a.sharpResizeOptions){let b=await i(Buffer.from(d),a.sharpResizeOptions);return new Uint8Array(b)}return new Uint8Array(d)}let g={format:"A4",printBackground:!0,preferCSSPageSize:!0,displayHeaderFooter:!1,outline:!1,scale:1,margin:{top:"0px",right:"0px",bottom:"0px",left:"0px"}},h={...g,...a.pdfOptions,margin:a.pdfOptions?.margin??g.margin},j={format:h.format,width:h.width,height:h.height,printBackground:h.printBackground,preferCSSPageSize:h.preferCSSPageSize,displayHeaderFooter:h.displayHeaderFooter,headerTemplate:h.headerTemplate,footerTemplate:h.footerTemplate,outline:h.outline,scale:h.scale,margin:h.margin},k=await f.pdf(j);return new Uint8Array(k)}catch(a){throw this.logger.error("Playwright error:",a),a instanceof Error&&a.message.includes("browser")&&(this.logger.error("\n💡 Troubleshooting tips:"),this.logger.error(" 1. Make sure Chromium is installed"),this.logger.error(" 2. Try running: bunx playwright install chromium"),this.logger.error(" 3. Check system permissions")),a}finally{b&&await b.close()}}};a.s(["PlaywrightPdfService",()=>j]),c()}catch(a){c(a)}},!1),73691,a=>{"use strict";var b=a.i(12714),c=a.i(50227);let d=new Map;async function e(a,d=a){let f=new Map;try{for(let g of(await b.default.readdir(a,{withFileTypes:!0}))){let b=c.default.join(a,g.name),h=c.default.relative(d,b);if(g.isDirectory())for(let[a,c]of(await e(b,d)))f.set(a,c);else f.set(h,b)}}catch{}return f}async function f(a,d){let e=await b.default.stat(a),f=(await b.default.readFile(a)).toString("base64"),g=c.default.extname(d).toLowerCase();return{base64:`data:${({".woff2":"font/woff2",".woff":"font/woff",".otf":"font/otf",".ttf":"font/ttf",".eot":"application/vnd.ms-fontobject",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp"})[g]||"application/octet-stream"};base64,${f}`,mtime:e.mtimeMs}}async function g(a){let g=d.get(a);if(g){let a=new Map;for(let[b,c]of g)a.set(b,c.base64);return a}let h=c.default.dirname(a),i=c.default.join(h,"static"),j=new Map;try{await b.default.access(i)}catch{return d.set(a,j),new Map}for(let[a,b]of(await e(i,i))){let c=`/${a.replace(/\\/g,"/")}`,{base64:d,mtime:e}=await f(b,c);j.set(c,{base64:d,mtime:e}),c.startsWith("/")&&j.set(c.slice(1),{base64:d,mtime:e})}d.set(a,j);let k=new Map;for(let[a,b]of j)k.set(a,b.base64);return k}a.s(["getAssetRegistry",()=>g])},53772,a=>{"use strict";function b(a){return"object"==typeof a&&null!==a&&"digest"in a&&"BAILOUT_TO_CLIENT_SIDE_RENDERING"===a.digest}let c=new Set(Object.values({NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401}));function d(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,d]=a.digest.split(";");return"NEXT_HTTP_ERROR_FALLBACK"===b&&c.has(Number(d))}function e(a){return Number(a.digest.split(";")[1])}var f,g,h,i,j=((h=j||{})[h.SeeOther=303]="SeeOther",h[h.TemporaryRedirect=307]="TemporaryRedirect",h[h.PermanentRedirect=308]="PermanentRedirect",h);function k(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let b=a.digest.split(";"),[c,d]=b,e=b.slice(2,-2).join(";"),f=Number(b.at(-2));return"NEXT_REDIRECT"===c&&("replace"===d||"push"===d)&&"string"==typeof e&&!isNaN(f)&&f in j}let l=Symbol.for("react.postpone");var m=class a{#a;static isNavigationError(a){var c,e,f;return k(a)||d(a)||b(a)||"object"==typeof(e=c=a)&&null!==e&&"digest"in e&&"string"==typeof e.digest&&"DYNAMIC_SERVER_USAGE"===e.digest||b(c)||k(f=c)||d(f)||function(a){if("object"==typeof a&&null!==a&&"string"==typeof a.message){var b;return(b=a.message).includes("needs to bail out of prerendering at this point because it used")&&b.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}return!1}(c)||"object"==typeof a&&null!==a&&a.$$typeof===l}static getNavigationKind(a){return k(a)?"redirect":d(a)&&404===e(a)?"notFound":d(a)&&403===e(a)?"forbidden":d(a)&&401===e(a)?"unauthorized":"other"}handleError(b){if(a.isNavigationError(b)){this.#a=b;return}throw b}get error(){return this.#a}};let n={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")};function o(a,b){return b}function p(a,b){return a.filter(a=>void 0!==a)}function q(a){return"object"!=typeof a||null===a?0:Array.isArray(a)?2:!function(a){if(!s.includes(Object.prototype.toString.call(a)))return!1;let{constructor:b}=a;if(void 0===b)return!0;let c=b.prototype;return null!==c&&"object"==typeof c&&!!s.includes(Object.prototype.toString.call(c))&&!!c.hasOwnProperty("isPrototypeOf")}(a)?a instanceof Set?3:a instanceof Map?4:5:1}function r(a){let b=0,c=a[0]?.[Symbol.iterator]();return{[Symbol.iterator]:()=>({next(){for(;;){if(void 0===c)return{done:!0,value:void 0};let d=c.next();if(!0===d.done){b+=1,c=a[b]?.[Symbol.iterator]();continue}return{done:!1,value:d.value}}}})}}n.defaultMerge,(f=i||(i={}))[f.NOT=0]="NOT",f[f.RECORD=1]="RECORD",f[f.ARRAY=2]="ARRAY",f[f.SET=3]="SET",f[f.MAP=4]="MAP",f[f.OTHER=5]="OTHER";let s=["[object Object]","[object Module]"],t={mergeRecords:function(a,b,c){let d={};for(let e of function(a){let b=new Set;for(let c of a)for(let a of[...Object.keys(c),...Object.getOwnPropertySymbols(c)])b.add(a);return b}(a)){let f=[];for(let b of a)"object"==typeof b&&Object.prototype.propertyIsEnumerable.call(b,e)&&f.push(b[e]);if(0===f.length)continue;let g=b.metaDataUpdater(c,{key:e,parents:a}),h=u(f,b,g);h!==n.skip&&("__proto__"===e?Object.defineProperty(d,e,{value:h,configurable:!0,enumerable:!0,writable:!0}):d[e]=h)}return d},mergeArrays:function(a){return a.flat()},mergeSets:function(a){return new Set(r(a))},mergeMaps:function(a){return new Map(r(a))},mergeOthers:function(a){return a.at(-1)}};function u(a,b,c){var d,e,f,g,h,i,j,k,l,m,o,p;let r=b.filterValues?.(a,c)??a;if(0===r.length)return;if(1===r.length)return v(r,b,c);let s=q(r[0]);if(0!==s&&5!==s){for(let a=1;a<r.length;a++)if(q(r[a])!==s)return v(r,b,c)}switch(s){case 1:let t;return d=r,e=b,f=c,(t=e.mergeFunctions.mergeRecords(d,e,f))===n.defaultMerge||e.useImplicitDefaultMerging&&void 0===t&&e.mergeFunctions.mergeRecords!==e.defaultMergeFunctions.mergeRecords?e.defaultMergeFunctions.mergeRecords(d,e,f):t;case 2:let u;return g=r,h=b,i=c,(u=h.mergeFunctions.mergeArrays(g,h,i))===n.defaultMerge||h.useImplicitDefaultMerging&&void 0===u&&h.mergeFunctions.mergeArrays!==h.defaultMergeFunctions.mergeArrays?h.defaultMergeFunctions.mergeArrays(g):u;case 3:let w;return j=r,k=b,l=c,(w=k.mergeFunctions.mergeSets(j,k,l))===n.defaultMerge||k.useImplicitDefaultMerging&&void 0===w&&k.mergeFunctions.mergeSets!==k.defaultMergeFunctions.mergeSets?k.defaultMergeFunctions.mergeSets(j):w;case 4:let x;return m=r,o=b,p=c,(x=o.mergeFunctions.mergeMaps(m,o,p))===n.defaultMerge||o.useImplicitDefaultMerging&&void 0===x&&o.mergeFunctions.mergeMaps!==o.defaultMergeFunctions.mergeMaps?o.defaultMergeFunctions.mergeMaps(m):x;default:return v(r,b,c)}}function v(a,b,c){let d=b.mergeFunctions.mergeOthers(a,b,c);return d===n.defaultMerge||b.useImplicitDefaultMerging&&void 0===d&&b.mergeFunctions.mergeOthers!==b.defaultMergeFunctions.mergeOthers?b.defaultMergeFunctions.mergeOthers(a):d}async function w(a,b){return a["~standard"].validate(b)}let x="Something went wrong while executing the operation.",y=a=>"object"==typeof a?a.key:a,z=a=>a.unionErrors?a.unionErrors.map(a=>a.issues.map(a=>a.message)).flat():a.message,A=a=>{let b={};for(let c of a){let{path:a,message:d,unionErrors:e}=c;if(!a||0===a.length){b._errors=b._errors?[...b._errors,d]:[d];continue}let f=b;for(let b=0;b<a.length-1;b++){let c=y(a[b]);f[c]||(f[c]={}),f=f[c]}let g=y(a[a.length-1]),h=z(c);f[g]=f[g]?._errors?{...structuredClone(f[g]),_errors:[...f[g]._errors,h]}:{...structuredClone(f[g]),_errors:e?h:[h]}}return b};var B=class extends Error{validationErrors;constructor(a){super("Server Action server validation error(s) occurred"),this.validationErrors=a}},C=class extends Error{validationErrors;constructor(a,b){super(b??"Server Action validation error(s) occurred"),this.validationErrors=a}},D=class extends Error{validationErrors;constructor(a){super("Server Action bind args validation error(s) occurred"),this.validationErrors=a}},E=class extends Error{validationErrors;constructor(a){super("Invalid metadata input. Please be sure to pass metadata via `metadata` method before defining the action."),this.name="ActionMetadataError",this.validationErrors=a}},F=class extends Error{validationErrors;constructor(a){super("Invalid action data (output). Please be sure to return data following the shape of the schema passed to `dataSchema` method."),this.name="ActionOutputDataError",this.validationErrors=a}};function G(a){let b=a.bindArgsSchemas??[];function c({withState:c}){return{action:(d,e)=>async(...f)=>{let g={},h={success:!1},i={},j=[],k=new m,l=!1;c&&(i=f.splice(b.length,1)[0]),b.length+1>f.length&&f.push(void 0);let q=async(e=0)=>{if(k.error)return;let r=a.middlewareFns[e];h.ctx=g;try{if(0===e&&a.metadataSchema){let b=await w(a.metadataSchema,a.metadata);if(b.issues)throw new E(A(b.issues))}if(r)await r({clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],ctx:g,metadata:a.metadata,next:async a=>(g=function(...a){return(function(a,b){var c,d;let e=(c=a,d=f,{defaultMergeFunctions:t,mergeFunctions:{...t,...Object.fromEntries(Object.entries(c).filter(([a,b])=>Object.hasOwn(t,a)).map(([a,b])=>!1===b?[a,t.mergeOthers]:[a,b]))},metaDataUpdater:c.metaDataUpdater??o,deepmerge:d,useImplicitDefaultMerging:c.enableImplicitDefaultMerging??!1,filterValues:!1===c.filterValues?void 0:c.filterValues??p,actions:n});function f(...a){return u(a,e,void 0)}return f})({})(...a)}(g,a?.ctx??{}),await q(e+1),h)}).catch(a=>{k.handleError(a),k.error&&(h.success=!1,h.navigationKind=m.getNavigationKind(k.error))});else{let e=await Promise.all(f.map(async(c,d)=>d===f.length-1?void 0===a.inputSchemaFn?{value:void 0}:w(await a.inputSchemaFn(),c):w(b[d],c))),l=!1,n=Array(e.length-1).fill({});for(let c=0;c<e.length;c++){let d=e[c];if(d.issues)if(c<e.length-1)n[c]=A(d.issues),l=!0;else{let c=A(d.issues);h.validationErrors=await Promise.resolve(a.handleValidationErrorsShape(c,{clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],ctx:g,metadata:a.metadata}))}else j.push(d.value)}if(l)throw new D(n);if(h.validationErrors)return;let o=[];o[0]={parsedInput:j.at(-1),bindArgsParsedInputs:j.slice(0,-1),clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],ctx:g,metadata:a.metadata},c&&(o[1]={prevResult:structuredClone(i)});let p=await d(...o).catch(a=>k.handleError(a));if(void 0!==a.outputSchema&&!k.error){let b=await w(a.outputSchema,p);if(b.issues)throw new F(A(b.issues))}k.error?(h.success=!1,h.navigationKind=m.getNavigationKind(k.error)):(h.success=!0,h.data=p),h.parsedInput=j.at(-1),h.bindArgsParsedInputs=j.slice(0,-1)}}catch(c){if(l)throw c;if(c instanceof B){let d=c.validationErrors;h.validationErrors=await Promise.resolve(a.handleValidationErrorsShape(d,{clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],ctx:g,metadata:a.metadata}))}else{l=!0;let d=c instanceof Error?c:Error(x);h.serverError=await Promise.resolve(a.handleServerError(d,{clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],ctx:g,metadata:a.metadata}))}}};await q();let r=[];if(k.error)throw r.push(e?.onNavigation?.({metadata:a.metadata,ctx:g,clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],navigationKind:m.getNavigationKind(k.error)})),r.push(e?.onSettled?.({metadata:a.metadata,ctx:g,clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],result:{},navigationKind:m.getNavigationKind(k.error)})),await Promise.all(r),k.error;let s={};if(void 0!==h.validationErrors)if(((...a)=>a.reduce((a,b)=>"boolean"==typeof b?b:a,!1))(a.throwValidationErrors,void 0===e?.throwValidationErrors?void 0:!!e.throwValidationErrors)){let a="object"==typeof e?.throwValidationErrors&&e?.throwValidationErrors.overrideErrorMessage?e?.throwValidationErrors.overrideErrorMessage:void 0;throw new C(h.validationErrors,await a?.(h.validationErrors))}else s.validationErrors=h.validationErrors;if(void 0!==h.serverError)if(e?.throwServerError)throw h.serverError;else s.serverError=h.serverError;return h.success?(void 0!==h.data&&(s.data=h.data),r.push(e?.onSuccess?.({metadata:a.metadata,ctx:g,data:s.data,clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],parsedInput:j.at(-1),bindArgsParsedInputs:j.slice(0,-1)}))):r.push(e?.onError?.({metadata:a.metadata,ctx:g,clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],error:s})),r.push(e?.onSettled?.({metadata:a.metadata,ctx:g,clientInput:f.at(-1),bindArgsClientInputs:b.length?f.slice(0,-1):[],result:s})),await Promise.all(r),s}}}return{action:c({withState:!1}).action,stateAction:c({withState:!0}).action}}var H=class a{#b;constructor(a){this.#b=a}use(b){return new a({...this.#b,middlewareFns:[...this.#b.middlewareFns,b],ctxType:{}})}metadata(b){return new a({...this.#b,metadata:b,metadataProvided:!0})}inputSchema(b,c){return new a({...this.#b,inputSchemaFn:"AsyncFunction"===b[Symbol.toStringTag]?async()=>b(await this.#b.inputSchemaFn?.()):async()=>b,handleValidationErrorsShape:c?.handleValidationErrorsShape??this.#b.handleValidationErrorsShape})}schema=this.inputSchema;bindArgsSchemas(b){return new a({...this.#b,bindArgsSchemas:b,handleValidationErrorsShape:this.#b.handleValidationErrorsShape})}outputSchema(b){return new a({...this.#b,outputSchema:b})}action(a,b){return G(this.#b).action(a,b)}stateAction(a,b){return G(this.#b).stateAction(a,b)}},I=a.i(46057);let J=(g={defineMetadataSchema:()=>I.z.object({actionName:I.z.string()}),handleServerError:(a,b)=>(console.error(`Action error: ${b.metadata.actionName}`,a),x)},new H({middlewareFns:[async({next:a})=>a({ctx:{}})],handleServerError:g?.handleServerError||(a=>(console.error("Action error:",a.message),x)),inputSchemaFn:void 0,bindArgsSchemas:[],outputSchema:void 0,ctxType:{},metadataSchema:g?.defineMetadataSchema?.()??void 0,metadata:void 0,defaultValidationErrorsShape:g?.defaultValidationErrorsShape??"formatted",throwValidationErrors:!!g?.throwValidationErrors,handleValidationErrorsShape:async a=>g?.defaultValidationErrorsShape==="flattened"?function(a){let b={formErrors:[],fieldErrors:{}};for(let[c,d]of Object.entries(a??{}))"_errors"===c&&Array.isArray(d)?b.formErrors=[...d]:"_errors"in d&&(b.fieldErrors[c]=[...d._errors]);return b}(a):a}));a.s(["baseActionClient",0,J],53772)},93421,a=>a.a(async(b,c)=>{try{var d=a.i(20279),e=a.i(36327),f=a.i(46057),g=a.i(73691),h=a.i(96105),i=a.i(64300),j=a.i(53772),k=a.i(2054),l=b([e]);[e]=l.then?(await l)():l;let m=new e.PlaywrightPdfService,n=j.baseActionClient.metadata({actionName:"exportSingleTemplate"}).inputSchema(f.z.object({templateSlug:f.z.string(),format:f.z.enum(["html","pdf","screenshot"]).default("html"),darkMode:f.z.boolean().optional()})).action(async({parsedInput:a})=>{try{let c,d,e=await (0,h.getTemplatePathFromSlug)(a.templateSlug),f=await (0,i.renderTemplateByPath)(e);if("error"in f)throw Error(`Failed to render template: ${f.error.message}`);let j=f.markup;if("html"!==a.format){var b;let a,c,d=await (0,g.getAssetRegistry)(e);b=j,a=a=>d.get(a)||d.get(`/${a}`)||d.get(a.slice(1)),c=a=>a.startsWith("data:")||a.startsWith("http://")||a.startsWith("https://")||a.startsWith("#")||a.startsWith("mailto:")||a.startsWith("tel:"),j=b.replace(/url\((['"]?)([^'")]+)\1\)/gi,(b,d,e)=>{if(c(e))return b;let f=a(e);return f?`url(${d}${f}${d})`:b}).replace(/src\s*=\s*(['"])([^'"]+)\1/gi,(b,d,e)=>{if(c(e))return b;let f=a(e);return f?`src=${d}${f}${d}`:b}).replace(/href\s*=\s*(['"])([^'"]+)\1/gi,(b,d,e)=>{if(c(e))return b;let f=a(e);return f?`href=${d}${f}${d}`:b})}if("html"===a.format)return{name:f.basename,html:j,format:"html",status:"succeeded"};"pdf"===a.format?(c=await m.render({html:j,outputType:"pdf",darkMode:a.darkMode}),d="application/pdf"):(c=await m.render({html:j,outputType:"screenshot",darkMode:a.darkMode,sharpResizeOptions:{width:2480,height:3508,fit:"cover",position:"center",kernel:"lanczos3",withoutEnlargement:!1}}),d="image/png");let k=Buffer.from(c).toString("base64");return{name:f.basename,data:k,format:a.format,mimeType:d,status:"succeeded"}}catch(a){throw console.error("Template export error:",a),Error(`Failed to export template. ${a instanceof Error?a.message:"Unknown error"}`)}});(0,k.ensureServerEntryExports)([n]),(0,d.registerServerReference)(n,"7f0543ce0ca69bb7dfeb468ba3f59d4368a5c2f77f",null),a.s(["exportSingleTemplate",0,n]),c()}catch(a){c(a)}},!1),37838,a=>a.a(async(b,c)=>{try{a.i(94107),a.i(96105),a.i(64300);var d=a.i(93421),e=b([d]);[d]=e.then?(await e)():e,a.s([]),c()}catch(a){c(a)}},!1),70284,a=>a.a(async(b,c)=>{try{var d=a.i(37838),e=a.i(94107),f=a.i(96105),g=a.i(64300),h=a.i(93421),i=b([d,h]);[d,h]=i.then?(await i)():i,a.s(["60774bc609cd1ab3ab60ed72f9d448a7b1d402ed26",()=>g.renderTemplateByPath,"78771297828582a56297020d3b0622a57014c4c245",()=>e.getTemplatesDirectoryMetadataAction,"7f0543ce0ca69bb7dfeb468ba3f59d4368a5c2f77f",()=>h.exportSingleTemplate,"7f8c9ac338dae58e3fe310463dbb8aaf915448f2b0",()=>f.getTemplatePathFromSlug]),c()}catch(a){c(a)}},!1)];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__95852430._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/pdf-forge-printer/src/logger.ts","../../../../../../packages/pdf-forge-printer/src/playwright-pdf.service.ts","../../../../../../packages/preview-server/src/utils/asset-registry.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/next/errors/bailout-to-csr.ts","../../../../../../packages/preview-server/src/actions/safe-action.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/.pnpm/deepmerge-ts%407.1.5/node_modules/deepmerge-ts/dist/index.mjs","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/next/errors/http-access-fallback.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/next/errors/redirect.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/next/errors/router.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/next/errors/dynamic-usage.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/next/errors/postpone.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/next/errors/index.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/standard-schema.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/utils.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/validation-errors.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/action-builder.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/safe-action-client.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/middleware.ts","../../../../../../node_modules/.pnpm/next-safe-action%408.0.11_next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3___1762ef4b96abee09b68830bbee582b54/node_modules/next-safe-action/src/index.ts","../../../../../../packages/preview-server/src/actions/export-single-template.ts","../../../../../../packages/preview-server/.next-internal/server/app/preview/%5B...slug%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export interface PdfLogger {\n debug(message: string): void;\n log(message: string): void;\n warn(message: string): void;\n error(message: string, error?: unknown): void;\n}\n\nexport class ConsoleLogger implements PdfLogger {\n debug(message: string): void {\n if (process.env.NODE_ENV === 'development') {\n console.debug(`[PDF Printer] ${message}`);\n }\n }\n\n log(message: string): void {\n console.log(`[PDF Printer] ${message}`);\n }\n\n warn(message: string): void {\n console.warn(`[PDF Printer] ${message}`);\n }\n\n error(message: string, error?: unknown): void {\n console.error(`[PDF Printer] ${message}`, error);\n }\n}\n","import { access } from 'node:fs/promises';\nimport type { PageScreenshotOptions } from 'playwright';\nimport {\n type Browser,\n type BrowserContextOptions,\n chromium,\n type Page,\n} from 'playwright';\nimport sharp, { type ResizeOptions } from 'sharp';\nimport type { PdfLogger } from './logger';\nimport { ConsoleLogger } from './logger';\n\ntype PDFOptions = Parameters<Page['pdf']>[0];\n\nexport interface RenderContextOptions {\n viewport?: {\n width: number;\n height: number;\n };\n deviceScaleFactor?: number;\n locale?: string;\n colorScheme?: 'light' | 'dark';\n isMobile?: boolean;\n hasTouch?: boolean;\n reducedMotion?: 'reduce' | 'no-preference';\n bypassCSP?: boolean;\n}\n\nexport interface RenderScreenshotOptions {\n fullPage?: boolean;\n type?: 'png' | 'jpeg';\n quality?: number;\n scale?: 'css' | 'device';\n animations?: 'disabled' | 'allow';\n caret?: 'hide' | 'initial';\n omitBackground?: boolean;\n clip?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n}\n\nexport interface RenderPdfOptions {\n format?: 'A4' | 'Letter' | 'Legal' | 'Tabloid' | 'Ledger';\n width?: number;\n height?: number;\n printBackground?: boolean;\n preferCSSPageSize?: boolean;\n displayHeaderFooter?: boolean;\n headerTemplate?: string;\n footerTemplate?: string;\n outline?: boolean;\n scale?: number;\n margin?: {\n top?: string;\n right?: string;\n bottom?: string;\n left?: string;\n };\n}\n\n// A4 dimensions in pixels at 96 DPI (standard web resolution)\n// A4 = 210mm × 297mm = 8.27\" × 11.69\" = 794px × 1123px at 96 DPI\nconst A4_WIDTH = 794;\nconst A4_HEIGHT = 1123;\n\nasync function upscaleImage(\n inputBuffer: Buffer,\n resizeOptions?: ResizeOptions,\n): Promise<Buffer> {\n const defaultOptions: ResizeOptions = {\n width: 1920,\n kernel: 'lanczos3' as const,\n fastShrinkOnLoad: false,\n };\n\n return await sharp(inputBuffer)\n .resize(resizeOptions ?? defaultOptions)\n .toBuffer();\n}\n\nexport class PlaywrightPdfService {\n private readonly logger: PdfLogger;\n\n constructor(logger: PdfLogger = new ConsoleLogger()) {\n this.logger = logger;\n }\n\n private async launchBrowser(): Promise<Browser> {\n const launchOptions: Parameters<typeof chromium.launch>[0] = {\n headless: true,\n args: [\n '--no-sandbox',\n '--disable-setuid-sandbox',\n '--disable-web-security',\n '--disable-dev-shm-usage',\n '--disable-blink-features=AutomationControlled',\n // Bypass CSP (Content Security Policy)\n '--disable-features=IsolateOrigins,site-per-process',\n ],\n };\n\n if (process.env.CHROMIUM_EXECUTABLE_PATH) {\n try {\n await access(process.env.CHROMIUM_EXECUTABLE_PATH);\n launchOptions.executablePath = process.env.CHROMIUM_EXECUTABLE_PATH;\n this.logger.debug(\n `Using system Chromium at: ${process.env.CHROMIUM_EXECUTABLE_PATH}`,\n );\n } catch {\n this.logger.warn(\n `Chromium path specified but not found: ${process.env.CHROMIUM_EXECUTABLE_PATH}, using Playwright's bundled browser`,\n );\n }\n }\n\n return chromium.launch(launchOptions);\n }\n\n async render(input: {\n html?: string;\n url?: string;\n outputType: 'pdf' | 'screenshot';\n darkMode?: boolean;\n contextOptions?: Partial<RenderContextOptions>;\n screenshotOptions?: Partial<RenderScreenshotOptions>;\n pdfOptions?: Partial<RenderPdfOptions>;\n sharpResizeOptions?: ResizeOptions;\n }): Promise<Uint8Array> {\n let browser: Browser | null = null;\n\n try {\n browser = await this.launchBrowser();\n\n const defaultContextOptions: RenderContextOptions = {\n colorScheme: input.darkMode ? 'dark' : 'light',\n locale: 'en-US',\n reducedMotion: 'reduce',\n viewport: { width: A4_WIDTH, height: A4_HEIGHT },\n isMobile: false,\n hasTouch: false,\n deviceScaleFactor: 2,\n bypassCSP: true,\n };\n\n const mergedContextOptions: RenderContextOptions = {\n ...defaultContextOptions,\n ...input.contextOptions,\n viewport:\n input.contextOptions?.viewport ?? defaultContextOptions.viewport,\n };\n\n const playwrightContextOptions: BrowserContextOptions = {\n colorScheme: mergedContextOptions.colorScheme,\n locale: mergedContextOptions.locale,\n reducedMotion: mergedContextOptions.reducedMotion,\n viewport: mergedContextOptions.viewport,\n isMobile: mergedContextOptions.isMobile,\n hasTouch: mergedContextOptions.hasTouch,\n deviceScaleFactor: mergedContextOptions.deviceScaleFactor,\n bypassCSP: mergedContextOptions.bypassCSP,\n };\n\n const context = await browser.newContext(playwrightContextOptions);\n\n const page = await context.newPage();\n\n page.on('console', (msg) =>\n this.logger.debug(`[Browser Log] ${msg.text()}`),\n );\n page.on('requestfailed', (request) => {\n this.logger.error(\n `[Browser Error] Failed to load resource: ${request.url()} - ${request.failure()?.errorText}`,\n );\n });\n\n if (input.url) {\n await page.goto(input.url, {\n waitUntil: 'load',\n timeout: 60000,\n });\n await page.waitForLoadState('networkidle', { timeout: 60000 });\n } else if (input.html) {\n await page.setContent(input.html, {\n waitUntil: 'load',\n timeout: 60000,\n });\n await page.waitForLoadState('networkidle', { timeout: 60000 });\n }\n\n if (input.darkMode) {\n await page.evaluate(() => {\n document.documentElement.classList.add('dark');\n document.body.classList.add('dark');\n });\n }\n\n if (input.outputType === 'pdf') {\n await page.emulateMedia({ media: 'print' });\n }\n\n this.logger.log(`Page content loaded, generating ${input.outputType}...`);\n\n if (input.outputType === 'screenshot') {\n const defaultScreenshotOptions: RenderScreenshotOptions = {\n fullPage: true,\n type: 'png',\n scale: 'css',\n animations: 'disabled',\n caret: 'hide',\n omitBackground: true,\n };\n\n const mergedScreenshotOptions: RenderScreenshotOptions = {\n ...defaultScreenshotOptions,\n ...input.screenshotOptions,\n };\n\n const playwrightScreenshotOptions: PageScreenshotOptions = {\n fullPage: mergedScreenshotOptions.fullPage,\n type: mergedScreenshotOptions.type,\n quality: mergedScreenshotOptions.quality,\n scale: mergedScreenshotOptions.scale,\n animations: mergedScreenshotOptions.animations,\n caret: mergedScreenshotOptions.caret,\n omitBackground: mergedScreenshotOptions.omitBackground,\n clip: mergedScreenshotOptions.clip,\n };\n\n const screenshotBuffer = await page.screenshot(\n playwrightScreenshotOptions,\n );\n\n if (input.sharpResizeOptions) {\n const upscaledBuffer = await upscaleImage(\n Buffer.from(screenshotBuffer),\n input.sharpResizeOptions,\n );\n return new Uint8Array(upscaledBuffer);\n }\n\n return new Uint8Array(screenshotBuffer);\n }\n\n const defaultPdfOptions: RenderPdfOptions = {\n format: 'A4',\n printBackground: true,\n preferCSSPageSize: true,\n displayHeaderFooter: false,\n outline: false,\n scale: 1,\n margin: {\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px',\n },\n };\n\n const mergedPdfOptions: RenderPdfOptions = {\n ...defaultPdfOptions,\n ...input.pdfOptions,\n margin: input.pdfOptions?.margin ?? defaultPdfOptions.margin,\n };\n\n const playwrightPdfOptions: PDFOptions = {\n format: mergedPdfOptions.format,\n width: mergedPdfOptions.width,\n height: mergedPdfOptions.height,\n printBackground: mergedPdfOptions.printBackground,\n preferCSSPageSize: mergedPdfOptions.preferCSSPageSize,\n displayHeaderFooter: mergedPdfOptions.displayHeaderFooter,\n headerTemplate: mergedPdfOptions.headerTemplate,\n footerTemplate: mergedPdfOptions.footerTemplate,\n outline: mergedPdfOptions.outline,\n scale: mergedPdfOptions.scale,\n margin: mergedPdfOptions.margin,\n };\n\n const pdfBuffer = await page.pdf(playwrightPdfOptions);\n return new Uint8Array(pdfBuffer);\n } catch (error) {\n this.logger.error('Playwright error:', error);\n if (error instanceof Error && error.message.includes('browser')) {\n this.logger.error('\\n💡 Troubleshooting tips:');\n this.logger.error(' 1. Make sure Chromium is installed');\n this.logger.error(\n ' 2. Try running: bunx playwright install chromium',\n );\n this.logger.error(' 3. Check system permissions');\n }\n throw error;\n } finally {\n if (browser) await browser.close();\n }\n }\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\n\n/**\n * Asset Registry - In-memory cache for template assets\n *\n * Strategy: Lazy-loading cache with template-level scoping\n * - First export: Scan static/ directory, cache all assets as base64\n * - Subsequent exports: Use cached data (zero file I/O)\n * - Cache key: templatePath → Map<url, base64>\n *\n * Benefits:\n * - Fast: O(1) lookups, no file I/O after first scan\n * - Memory efficient: Only caches assets for templates that are exported\n * - ISR-friendly: Cache persists across requests\n */\n\ninterface AssetCacheEntry {\n base64: string;\n mtime: number;\n}\n\nconst templateAssetCache = new Map<string, Map<string, AssetCacheEntry>>();\n\n/**\n * Recursively scan a directory and return all files with their relative paths\n */\nasync function scanDirectoryRecursive(\n dir: string,\n baseDir: string = dir,\n): Promise<Map<string, string>> {\n const files = new Map<string, string>();\n\n try {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n const relativePath = path.relative(baseDir, fullPath);\n\n if (entry.isDirectory()) {\n const subFiles = await scanDirectoryRecursive(fullPath, baseDir);\n for (const [relPath, absPath] of subFiles) {\n files.set(relPath, absPath);\n }\n } else {\n files.set(relativePath, fullPath);\n }\n }\n } catch {\n return files;\n }\n\n return files;\n}\n\n/**\n * Load a file and convert it to base64 data URI\n */\nasync function loadAssetAsBase64(\n filePath: string,\n url: string,\n): Promise<{ base64: string; mtime: number }> {\n const stats = await fs.stat(filePath);\n const buffer = await fs.readFile(filePath);\n const base64 = buffer.toString('base64');\n\n const ext = path.extname(url).toLowerCase();\n const mimeTypes: Record<string, string> = {\n '.woff2': 'font/woff2',\n '.woff': 'font/woff',\n '.otf': 'font/otf',\n '.ttf': 'font/ttf',\n '.eot': 'application/vnd.ms-fontobject',\n '.svg': 'image/svg+xml',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n };\n const mimeType = mimeTypes[ext] || 'application/octet-stream';\n\n const dataUri = `data:${mimeType};base64,${base64}`;\n\n return { base64: dataUri, mtime: stats.mtimeMs };\n}\n\n/**\n * Get or build asset registry for a template\n *\n * @param templatePath - Absolute path to the template file\n * @returns Map of asset URLs to base64 data URIs\n */\nexport async function getAssetRegistry(\n templatePath: string,\n): Promise<Map<string, string>> {\n const cached = templateAssetCache.get(templatePath);\n if (cached) {\n const result = new Map<string, string>();\n for (const [url, entry] of cached) {\n result.set(url, entry.base64);\n }\n return result;\n }\n\n const templateDir = path.dirname(templatePath);\n const staticDir = path.join(templateDir, 'static');\n\n const assetMap = new Map<string, AssetCacheEntry>();\n\n try {\n await fs.access(staticDir);\n } catch {\n templateAssetCache.set(templatePath, assetMap);\n return new Map<string, string>();\n }\n\n const files = await scanDirectoryRecursive(staticDir, staticDir);\n\n for (const [relativePath, absolutePath] of files) {\n const url = `/${relativePath.replace(/\\\\/g, '/')}`;\n const { base64, mtime } = await loadAssetAsBase64(absolutePath, url);\n\n assetMap.set(url, { base64, mtime });\n if (url.startsWith('/')) {\n assetMap.set(url.slice(1), { base64, mtime });\n }\n }\n\n templateAssetCache.set(templatePath, assetMap);\n\n const result = new Map<string, string>();\n for (const [url, entry] of assetMap) {\n result.set(url, entry.base64);\n }\n return result;\n}\n\n/**\n * Clear cache for a specific template (useful for hot-reload scenarios)\n */\nexport function clearAssetCache(templatePath: string): void {\n templateAssetCache.delete(templatePath);\n}\n\n/**\n * Clear all asset caches\n */\nexport function clearAllAssetCaches(): void {\n templateAssetCache.clear();\n}\n","// Comes from https://github.com/vercel/next.js/blob/canary/packages/next/src/shared/lib/lazy-dynamic/bailout-to-csr.ts\n\n// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = \"BAILOUT_TO_CLIENT_SIDE_RENDERING\";\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nclass BailoutToCSRError extends Error {\n\tpublic readonly digest = BAILOUT_TO_CSR;\n\n\tconstructor(public readonly reason: string) {\n\t\tsuper(`Bail out to client-side rendering: ${reason}`);\n\t}\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n\tif (typeof err !== \"object\" || err === null || !(\"digest\" in err)) {\n\t\treturn false;\n\t}\n\n\treturn err.digest === BAILOUT_TO_CSR;\n}\n","import {\n createSafeActionClient,\n DEFAULT_SERVER_ERROR_MESSAGE,\n} from 'next-safe-action';\nimport { z } from 'zod';\n\nexport const baseActionClient = createSafeActionClient({\n defineMetadataSchema() {\n return z.object({ actionName: z.string() });\n },\n handleServerError(error, options) {\n console.error(`Action error: ${options.metadata.actionName}`, error);\n return DEFAULT_SERVER_ERROR_MESSAGE;\n },\n});\n","/**\n * Special values that tell deepmerge to perform a certain action.\n */\nconst actions = {\n defaultMerge: Symbol(\"deepmerge-ts: default merge\"),\n skip: Symbol(\"deepmerge-ts: skip\"),\n};\n/**\n * Special values that tell deepmergeInto to perform a certain action.\n */\nconst actionsInto = {\n defaultMerge: actions.defaultMerge,\n};\n\n/**\n * The default function to update meta data.\n *\n * It doesn't update the meta data.\n */\nfunction defaultMetaDataUpdater(previousMeta, metaMeta) {\n return metaMeta;\n}\n/**\n * The default function to filter values.\n *\n * It filters out undefined values.\n */\nfunction defaultFilterValues(values, meta) {\n return values.filter((value) => value !== undefined);\n}\n\n/**\n * The different types of objects deepmerge-ts support.\n */\nvar ObjectType;\n(function (ObjectType) {\n ObjectType[ObjectType[\"NOT\"] = 0] = \"NOT\";\n ObjectType[ObjectType[\"RECORD\"] = 1] = \"RECORD\";\n ObjectType[ObjectType[\"ARRAY\"] = 2] = \"ARRAY\";\n ObjectType[ObjectType[\"SET\"] = 3] = \"SET\";\n ObjectType[ObjectType[\"MAP\"] = 4] = \"MAP\";\n ObjectType[ObjectType[\"OTHER\"] = 5] = \"OTHER\";\n})(ObjectType || (ObjectType = {}));\n/**\n * Get the type of the given object.\n *\n * @param object - The object to get the type of.\n * @returns The type of the given object.\n */\nfunction getObjectType(object) {\n if (typeof object !== \"object\" || object === null) {\n return 0 /* ObjectType.NOT */;\n }\n if (Array.isArray(object)) {\n return 2 /* ObjectType.ARRAY */;\n }\n if (isRecord(object)) {\n return 1 /* ObjectType.RECORD */;\n }\n if (object instanceof Set) {\n return 3 /* ObjectType.SET */;\n }\n if (object instanceof Map) {\n return 4 /* ObjectType.MAP */;\n }\n return 5 /* ObjectType.OTHER */;\n}\n/**\n * Get the keys of the given objects including symbol keys.\n *\n * Note: Only keys to enumerable properties are returned.\n *\n * @param objects - An array of objects to get the keys of.\n * @returns A set containing all the keys of all the given objects.\n */\nfunction getKeys(objects) {\n const keys = new Set();\n for (const object of objects) {\n for (const key of [...Object.keys(object), ...Object.getOwnPropertySymbols(object)]) {\n keys.add(key);\n }\n }\n return keys;\n}\n/**\n * Does the given object have the given property.\n *\n * @param object - The object to test.\n * @param property - The property to test.\n * @returns Whether the object has the property.\n */\nfunction objectHasProperty(object, property) {\n return typeof object === \"object\" && Object.prototype.propertyIsEnumerable.call(object, property);\n}\n/**\n * Get an iterable object that iterates over the given iterables.\n */\nfunction getIterableOfIterables(iterables) {\n let mut_iterablesIndex = 0;\n let mut_iterator = iterables[0]?.[Symbol.iterator]();\n return {\n [Symbol.iterator]() {\n return {\n next() {\n do {\n if (mut_iterator === undefined) {\n return { done: true, value: undefined };\n }\n const result = mut_iterator.next();\n if (result.done === true) {\n mut_iterablesIndex += 1;\n mut_iterator = iterables[mut_iterablesIndex]?.[Symbol.iterator]();\n continue;\n }\n return {\n done: false,\n value: result.value,\n };\n } while (true);\n },\n };\n },\n };\n}\n// eslint-disable-next-line unicorn/prefer-set-has -- Array is more performant for a low number of elements.\nconst validRecordToStringValues = [\"[object Object]\", \"[object Module]\"];\n/**\n * Does the given object appear to be a record.\n */\nfunction isRecord(value) {\n // All records are objects.\n if (!validRecordToStringValues.includes(Object.prototype.toString.call(value))) {\n return false;\n }\n const { constructor } = value;\n // If has modified constructor.\n // eslint-disable-next-line ts/no-unnecessary-condition\n if (constructor === undefined) {\n return true;\n }\n const prototype = constructor.prototype;\n // If has modified prototype.\n if (prototype === null ||\n typeof prototype !== \"object\" ||\n !validRecordToStringValues.includes(Object.prototype.toString.call(prototype))) {\n return false;\n }\n // If constructor does not have an Object-specific method.\n // eslint-disable-next-line sonar/prefer-single-boolean-return, no-prototype-builtins\n if (!prototype.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n // Most likely a record.\n return true;\n}\n\n/**\n * The default strategy to merge records.\n *\n * @param values - The records.\n */\nfunction mergeRecords$1(values, utils, meta) {\n const result = {};\n for (const key of getKeys(values)) {\n const propValues = [];\n for (const value of values) {\n if (objectHasProperty(value, key)) {\n propValues.push(value[key]);\n }\n }\n if (propValues.length === 0) {\n continue;\n }\n const updatedMeta = utils.metaDataUpdater(meta, {\n key,\n parents: values,\n });\n const propertyResult = mergeUnknowns(propValues, utils, updatedMeta);\n if (propertyResult === actions.skip) {\n continue;\n }\n if (key === \"__proto__\") {\n Object.defineProperty(result, key, {\n value: propertyResult,\n configurable: true,\n enumerable: true,\n writable: true,\n });\n }\n else {\n result[key] = propertyResult;\n }\n }\n return result;\n}\n/**\n * The default strategy to merge arrays.\n *\n * @param values - The arrays.\n */\nfunction mergeArrays$1(values) {\n return values.flat();\n}\n/**\n * The default strategy to merge sets.\n *\n * @param values - The sets.\n */\nfunction mergeSets$1(values) {\n return new Set(getIterableOfIterables(values));\n}\n/**\n * The default strategy to merge maps.\n *\n * @param values - The maps.\n */\nfunction mergeMaps$1(values) {\n return new Map(getIterableOfIterables(values));\n}\n/**\n * Get the last value in the given array.\n */\nfunction mergeOthers$1(values) {\n return values.at(-1);\n}\n/**\n * The merge functions.\n */\nconst mergeFunctions = {\n mergeRecords: mergeRecords$1,\n mergeArrays: mergeArrays$1,\n mergeSets: mergeSets$1,\n mergeMaps: mergeMaps$1,\n mergeOthers: mergeOthers$1,\n};\n\n/**\n * Deeply merge objects.\n *\n * @param objects - The objects to merge.\n */\nfunction deepmerge(...objects) {\n return deepmergeCustom({})(...objects);\n}\nfunction deepmergeCustom(options, rootMetaData) {\n const utils = getUtils(options, customizedDeepmerge);\n /**\n * The customized deepmerge function.\n */\n function customizedDeepmerge(...objects) {\n return mergeUnknowns(objects, utils, rootMetaData);\n }\n return customizedDeepmerge;\n}\n/**\n * The the utils that are available to the merge functions.\n *\n * @param options - The options the user specified\n */\nfunction getUtils(options, customizedDeepmerge) {\n return {\n defaultMergeFunctions: mergeFunctions,\n mergeFunctions: {\n ...mergeFunctions,\n ...Object.fromEntries(Object.entries(options)\n .filter(([key, option]) => Object.hasOwn(mergeFunctions, key))\n .map(([key, option]) => (option === false ? [key, mergeFunctions.mergeOthers] : [key, option]))),\n },\n metaDataUpdater: (options.metaDataUpdater ?? defaultMetaDataUpdater),\n deepmerge: customizedDeepmerge,\n useImplicitDefaultMerging: options.enableImplicitDefaultMerging ?? false,\n filterValues: options.filterValues === false ? undefined : (options.filterValues ?? defaultFilterValues),\n actions,\n };\n}\n/**\n * Merge unknown things.\n *\n * @param values - The values.\n */\nfunction mergeUnknowns(values, utils, meta) {\n const filteredValues = utils.filterValues?.(values, meta) ?? values;\n if (filteredValues.length === 0) {\n return undefined;\n }\n if (filteredValues.length === 1) {\n return mergeOthers(filteredValues, utils, meta);\n }\n const type = getObjectType(filteredValues[0]);\n if (type !== 0 /* ObjectType.NOT */ && type !== 5 /* ObjectType.OTHER */) {\n for (let mut_index = 1; mut_index < filteredValues.length; mut_index++) {\n if (getObjectType(filteredValues[mut_index]) === type) {\n continue;\n }\n return mergeOthers(filteredValues, utils, meta);\n }\n }\n switch (type) {\n case 1 /* ObjectType.RECORD */: {\n return mergeRecords(filteredValues, utils, meta);\n }\n case 2 /* ObjectType.ARRAY */: {\n return mergeArrays(filteredValues, utils, meta);\n }\n case 3 /* ObjectType.SET */: {\n return mergeSets(filteredValues, utils, meta);\n }\n case 4 /* ObjectType.MAP */: {\n return mergeMaps(filteredValues, utils, meta);\n }\n default: {\n return mergeOthers(filteredValues, utils, meta);\n }\n }\n}\n/**\n * Merge records.\n *\n * @param values - The records.\n */\nfunction mergeRecords(values, utils, meta) {\n const result = utils.mergeFunctions.mergeRecords(values, utils, meta);\n if (result === actions.defaultMerge ||\n (utils.useImplicitDefaultMerging &&\n result === undefined &&\n utils.mergeFunctions.mergeRecords !== utils.defaultMergeFunctions.mergeRecords)) {\n return utils.defaultMergeFunctions.mergeRecords(values, utils, meta);\n }\n return result;\n}\n/**\n * Merge arrays.\n *\n * @param values - The arrays.\n */\nfunction mergeArrays(values, utils, meta) {\n const result = utils.mergeFunctions.mergeArrays(values, utils, meta);\n if (result === actions.defaultMerge ||\n (utils.useImplicitDefaultMerging &&\n result === undefined &&\n utils.mergeFunctions.mergeArrays !== utils.defaultMergeFunctions.mergeArrays)) {\n return utils.defaultMergeFunctions.mergeArrays(values);\n }\n return result;\n}\n/**\n * Merge sets.\n *\n * @param values - The sets.\n */\nfunction mergeSets(values, utils, meta) {\n const result = utils.mergeFunctions.mergeSets(values, utils, meta);\n if (result === actions.defaultMerge ||\n (utils.useImplicitDefaultMerging &&\n result === undefined &&\n utils.mergeFunctions.mergeSets !== utils.defaultMergeFunctions.mergeSets)) {\n return utils.defaultMergeFunctions.mergeSets(values);\n }\n return result;\n}\n/**\n * Merge maps.\n *\n * @param values - The maps.\n */\nfunction mergeMaps(values, utils, meta) {\n const result = utils.mergeFunctions.mergeMaps(values, utils, meta);\n if (result === actions.defaultMerge ||\n (utils.useImplicitDefaultMerging &&\n result === undefined &&\n utils.mergeFunctions.mergeMaps !== utils.defaultMergeFunctions.mergeMaps)) {\n return utils.defaultMergeFunctions.mergeMaps(values);\n }\n return result;\n}\n/**\n * Merge other things.\n *\n * @param values - The other things.\n */\nfunction mergeOthers(values, utils, meta) {\n const result = utils.mergeFunctions.mergeOthers(values, utils, meta);\n if (result === actions.defaultMerge ||\n (utils.useImplicitDefaultMerging &&\n result === undefined &&\n utils.mergeFunctions.mergeOthers !== utils.defaultMergeFunctions.mergeOthers)) {\n return utils.defaultMergeFunctions.mergeOthers(values);\n }\n return result;\n}\n\n/**\n * The default strategy to merge records into a target record.\n *\n * @param mut_target - The result will be mutated into this record\n * @param values - The records (including the target's value if there is one).\n */\nfunction mergeRecordsInto$1(mut_target, values, utils, meta) {\n for (const key of getKeys(values)) {\n const propValues = [];\n for (const value of values) {\n if (objectHasProperty(value, key)) {\n propValues.push(value[key]);\n }\n }\n if (propValues.length === 0) {\n continue;\n }\n const updatedMeta = utils.metaDataUpdater(meta, {\n key,\n parents: values,\n });\n const propertyTarget = { value: propValues[0] };\n mergeUnknownsInto(propertyTarget, propValues, utils, updatedMeta);\n if (key === \"__proto__\") {\n Object.defineProperty(mut_target.value, key, {\n value: propertyTarget.value,\n configurable: true,\n enumerable: true,\n writable: true,\n });\n }\n else {\n mut_target.value[key] = propertyTarget.value;\n }\n }\n}\n/**\n * The default strategy to merge arrays into a target array.\n *\n * @param mut_target - The result will be mutated into this array\n * @param values - The arrays (including the target's value if there is one).\n */\nfunction mergeArraysInto$1(mut_target, values) {\n mut_target.value.push(...values.slice(1).flat());\n}\n/**\n * The default strategy to merge sets into a target set.\n *\n * @param mut_target - The result will be mutated into this set\n * @param values - The sets (including the target's value if there is one).\n */\nfunction mergeSetsInto$1(mut_target, values) {\n for (const value of getIterableOfIterables(values.slice(1))) {\n mut_target.value.add(value);\n }\n}\n/**\n * The default strategy to merge maps into a target map.\n *\n * @param mut_target - The result will be mutated into this map\n * @param values - The maps (including the target's value if there is one).\n */\nfunction mergeMapsInto$1(mut_target, values) {\n for (const [key, value] of getIterableOfIterables(values.slice(1))) {\n mut_target.value.set(key, value);\n }\n}\n/**\n * Set the target to the last value.\n */\nfunction mergeOthersInto$1(mut_target, values) {\n mut_target.value = values.at(-1);\n}\n/**\n * The merge functions.\n */\nconst mergeIntoFunctions = {\n mergeRecords: mergeRecordsInto$1,\n mergeArrays: mergeArraysInto$1,\n mergeSets: mergeSetsInto$1,\n mergeMaps: mergeMapsInto$1,\n mergeOthers: mergeOthersInto$1,\n};\n\nfunction deepmergeInto(target, ...objects) {\n return void deepmergeIntoCustom({})(target, ...objects);\n}\nfunction deepmergeIntoCustom(options, rootMetaData) {\n const utils = getIntoUtils(options, customizedDeepmergeInto);\n /**\n * The customized deepmerge function.\n */\n function customizedDeepmergeInto(target, ...objects) {\n mergeUnknownsInto({ value: target }, [target, ...objects], utils, rootMetaData);\n }\n return customizedDeepmergeInto;\n}\n/**\n * The the utils that are available to the merge functions.\n *\n * @param options - The options the user specified\n */\nfunction getIntoUtils(options, customizedDeepmergeInto) {\n return {\n defaultMergeFunctions: mergeIntoFunctions,\n mergeFunctions: {\n ...mergeIntoFunctions,\n ...Object.fromEntries(Object.entries(options)\n .filter(([key, option]) => Object.hasOwn(mergeIntoFunctions, key))\n .map(([key, option]) => (option === false ? [key, mergeIntoFunctions.mergeOthers] : [key, option]))),\n },\n metaDataUpdater: (options.metaDataUpdater ?? defaultMetaDataUpdater),\n deepmergeInto: customizedDeepmergeInto,\n filterValues: options.filterValues === false ? undefined : (options.filterValues ?? defaultFilterValues),\n actions: actionsInto,\n };\n}\n/**\n * Merge unknown things into a target.\n *\n * @param mut_target - The target to merge into.\n * @param values - The values.\n */\nfunction mergeUnknownsInto(mut_target, values, utils, meta) {\n const filteredValues = utils.filterValues?.(values, meta) ?? values;\n if (filteredValues.length === 0) {\n return;\n }\n if (filteredValues.length === 1) {\n return void mergeOthersInto(mut_target, filteredValues, utils, meta);\n }\n const type = getObjectType(mut_target.value);\n if (type !== 0 /* ObjectType.NOT */ && type !== 5 /* ObjectType.OTHER */) {\n for (let mut_index = 1; mut_index < filteredValues.length; mut_index++) {\n if (getObjectType(filteredValues[mut_index]) === type) {\n continue;\n }\n return void mergeOthersInto(mut_target, filteredValues, utils, meta);\n }\n }\n switch (type) {\n case 1 /* ObjectType.RECORD */: {\n return void mergeRecordsInto(mut_target, filteredValues, utils, meta);\n }\n case 2 /* ObjectType.ARRAY */: {\n return void mergeArraysInto(mut_target, filteredValues, utils, meta);\n }\n case 3 /* ObjectType.SET */: {\n return void mergeSetsInto(mut_target, filteredValues, utils, meta);\n }\n case 4 /* ObjectType.MAP */: {\n return void mergeMapsInto(mut_target, filteredValues, utils, meta);\n }\n default: {\n return void mergeOthersInto(mut_target, filteredValues, utils, meta);\n }\n }\n}\n/**\n * Merge records into a target record.\n *\n * @param mut_target - The target to merge into.\n * @param values - The records.\n */\nfunction mergeRecordsInto(mut_target, values, utils, meta) {\n const action = utils.mergeFunctions.mergeRecords(mut_target, values, utils, meta);\n if (action === actionsInto.defaultMerge) {\n utils.defaultMergeFunctions.mergeRecords(mut_target, values, utils, meta);\n }\n}\n/**\n * Merge arrays into a target array.\n *\n * @param mut_target - The target to merge into.\n * @param values - The arrays.\n */\nfunction mergeArraysInto(mut_target, values, utils, meta) {\n const action = utils.mergeFunctions.mergeArrays(mut_target, values, utils, meta);\n if (action === actionsInto.defaultMerge) {\n utils.defaultMergeFunctions.mergeArrays(mut_target, values);\n }\n}\n/**\n * Merge sets into a target set.\n *\n * @param mut_target - The target to merge into.\n * @param values - The sets.\n */\nfunction mergeSetsInto(mut_target, values, utils, meta) {\n const action = utils.mergeFunctions.mergeSets(mut_target, values, utils, meta);\n if (action === actionsInto.defaultMerge) {\n utils.defaultMergeFunctions.mergeSets(mut_target, values);\n }\n}\n/**\n * Merge maps into a target map.\n *\n * @param mut_target - The target to merge into.\n * @param values - The maps.\n */\nfunction mergeMapsInto(mut_target, values, utils, meta) {\n const action = utils.mergeFunctions.mergeMaps(mut_target, values, utils, meta);\n if (action === actionsInto.defaultMerge) {\n utils.defaultMergeFunctions.mergeMaps(mut_target, values);\n }\n}\n/**\n * Merge other things into a target.\n *\n * @param mut_target - The target to merge into.\n * @param values - The other things.\n */\nfunction mergeOthersInto(mut_target, values, utils, meta) {\n const action = utils.mergeFunctions.mergeOthers(mut_target, values, utils, meta);\n if (action === actionsInto.defaultMerge || mut_target.value === actionsInto.defaultMerge) {\n utils.defaultMergeFunctions.mergeOthers(mut_target, values);\n }\n}\n\nexport { deepmerge, deepmergeCustom, deepmergeInto, deepmergeIntoCustom, getKeys, getObjectType, objectHasProperty };\n","// Comes from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/components/http-access-fallback/http-access-fallback.ts\n\nconst HTTPAccessErrorStatus = {\n\tNOT_FOUND: 404,\n\tFORBIDDEN: 403,\n\tUNAUTHORIZED: 401,\n};\n\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\n\nconst HTTP_ERROR_FALLBACK_ERROR_CODE = \"NEXT_HTTP_ERROR_FALLBACK\";\n\nexport type HTTPAccessFallbackError = Error & {\n\tdigest: `${typeof HTTP_ERROR_FALLBACK_ERROR_CODE};${string}`;\n};\n\n/**\n * Checks an error to determine if it's an error generated by\n * the HTTP navigation APIs `notFound()`, `forbidden()` or `unauthorized()`.\n *\n * @param error the error that may reference a HTTP access error\n * @returns true if the error is a HTTP access error\n */\nexport function isHTTPAccessFallbackError(error: unknown): error is HTTPAccessFallbackError {\n\tif (typeof error !== \"object\" || error === null || !(\"digest\" in error) || typeof error.digest !== \"string\") {\n\t\treturn false;\n\t}\n\tconst [prefix, httpStatus] = error.digest.split(\";\");\n\n\treturn prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\n\nexport function getAccessFallbackHTTPStatus(error: HTTPAccessFallbackError): number {\n\tconst httpStatus = error.digest.split(\";\")[1];\n\treturn Number(httpStatus);\n}\n","// Comes from: https://github.com/vercel/next.js/blob/canary/packages/next/src/client/components/redirect-error.ts\n\nenum RedirectStatusCode {\n\tSeeOther = 303,\n\tTemporaryRedirect = 307,\n\tPermanentRedirect = 308,\n}\n\nconst REDIRECT_ERROR_CODE = \"NEXT_REDIRECT\";\n\nenum RedirectType {\n\tpush = \"push\",\n\treplace = \"replace\",\n}\n\nexport type RedirectError = Error & {\n\tdigest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${string};${RedirectStatusCode};`;\n};\n\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */\nexport function isRedirectError(error: unknown): error is RedirectError {\n\tif (typeof error !== \"object\" || error === null || !(\"digest\" in error) || typeof error.digest !== \"string\") {\n\t\treturn false;\n\t}\n\n\tconst digest = error.digest.split(\";\");\n\tconst [errorCode, type] = digest;\n\tconst destination = digest.slice(2, -2).join(\";\");\n\tconst status = digest.at(-2);\n\n\tconst statusCode = Number(status);\n\n\treturn (\n\t\terrorCode === REDIRECT_ERROR_CODE &&\n\t\t(type === \"replace\" || type === \"push\") &&\n\t\ttypeof destination === \"string\" &&\n\t\t!isNaN(statusCode) &&\n\t\tstatusCode in RedirectStatusCode\n\t);\n}\n","// Comes from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/components/is-next-router-error.ts\n\nimport { isHTTPAccessFallbackError, type HTTPAccessFallbackError } from \"./http-access-fallback\";\nimport { isRedirectError, type RedirectError } from \"./redirect\";\n\n/**\n * Returns true if the error is a navigation signal error. These errors are\n * thrown by user code to perform navigation operations and interrupt the React\n * render.\n */\nexport function isNextRouterError(error: unknown): error is RedirectError | HTTPAccessFallbackError {\n\treturn isRedirectError(error) || isHTTPAccessFallbackError(error);\n}\n","// Comes from https://github.com/vercel/next.js/blob/canary/packages/next/src/export/helpers/is-dynamic-usage-error.ts\n\nimport { isBailoutToCSRError } from \"./bailout-to-csr\";\nimport { isNextRouterError } from \"./router\";\n\nconst DYNAMIC_ERROR_CODE = \"DYNAMIC_SERVER_USAGE\";\n\nclass DynamicServerError extends Error {\n\tdigest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE;\n\n\tconstructor(public readonly description: string) {\n\t\tsuper(`Dynamic server usage: ${description}`);\n\t}\n}\n\nfunction isDynamicServerError(err: unknown): err is DynamicServerError {\n\tif (typeof err !== \"object\" || err === null || !(\"digest\" in err) || typeof err.digest !== \"string\") {\n\t\treturn false;\n\t}\n\n\treturn err.digest === DYNAMIC_ERROR_CODE;\n}\n\nfunction isDynamicPostponeReason(reason: string) {\n\treturn (\n\t\treason.includes(\"needs to bail out of prerendering at this point because it used\") &&\n\t\treason.includes(\"Learn more: https://nextjs.org/docs/messages/ppr-caught-error\")\n\t);\n}\n\nfunction isDynamicPostpone(err: unknown) {\n\tif (\n\t\ttypeof err === \"object\" &&\n\t\terr !== null &&\n\t\t// eslint-disable-next-line\n\t\ttypeof (err as any).message === \"string\"\n\t) {\n\t\t// eslint-disable-next-line\n\t\treturn isDynamicPostponeReason((err as any).message);\n\t}\n\treturn false;\n}\n\nexport const isDynamicUsageError = (err: unknown) =>\n\tisDynamicServerError(err) || isBailoutToCSRError(err) || isNextRouterError(err) || isDynamicPostpone(err);\n","// Comes from https://github.com/vercel/next.js/blob/canary/packages/next/src/server/lib/router-utils/is-postpone.ts\n\nconst REACT_POSTPONE_TYPE: symbol = Symbol.for(\"react.postpone\");\n\nexport function isPostpone(error: any): boolean {\n\treturn (\n\t\ttypeof error === \"object\" &&\n\t\terror !== null &&\n\t\t// eslint-disable-next-line\n\t\terror.$$typeof === REACT_POSTPONE_TYPE\n\t);\n}\n","import type { NavigationKind } from \"../../index.types\";\nimport { isBailoutToCSRError } from \"./bailout-to-csr\";\nimport { isDynamicUsageError } from \"./dynamic-usage\";\nimport { getAccessFallbackHTTPStatus, isHTTPAccessFallbackError } from \"./http-access-fallback\";\nimport { isPostpone } from \"./postpone\";\nimport { isRedirectError } from \"./redirect\";\nimport { isNextRouterError } from \"./router\";\n\nexport class FrameworkErrorHandler {\n\t#frameworkError: Error | undefined;\n\n\tstatic isNavigationError(error: unknown): error is Error {\n\t\treturn isNextRouterError(error) || isBailoutToCSRError(error) || isDynamicUsageError(error) || isPostpone(error);\n\t}\n\n\tstatic getNavigationKind(error: Error): NavigationKind {\n\t\tif (isRedirectError(error)) {\n\t\t\treturn \"redirect\";\n\t\t} else if (isHTTPAccessFallbackError(error) && getAccessFallbackHTTPStatus(error) === 404) {\n\t\t\treturn \"notFound\";\n\t\t} else if (isHTTPAccessFallbackError(error) && getAccessFallbackHTTPStatus(error) === 403) {\n\t\t\treturn \"forbidden\";\n\t\t} else if (isHTTPAccessFallbackError(error) && getAccessFallbackHTTPStatus(error) === 401) {\n\t\t\treturn \"unauthorized\";\n\t\t} else {\n\t\t\treturn \"other\";\n\t\t}\n\t}\n\n\t// Used in action builder.\n\thandleError(e: unknown) {\n\t\tif (FrameworkErrorHandler.isNavigationError(e)) {\n\t\t\tthis.#frameworkError = e;\n\t\t\treturn;\n\t\t}\n\n\t\t// If it's not a framework error, rethrow it, so it gets returned as a server error.\n\t\tthrow e;\n\t}\n\n\tget error() {\n\t\treturn this.#frameworkError;\n\t}\n}\n","/** The Standard Schema interface. */\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n\t/** The Standard Schema properties. */\n\treadonly \"~standard\": StandardSchemaV1.Props<Input, Output>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport declare namespace StandardSchemaV1 {\n\t/** The Standard Schema properties interface. */\n\texport interface Props<Input = unknown, Output = Input> {\n\t\t/** The version number of the standard. */\n\t\treadonly version: 1;\n\t\t/** The vendor name of the schema library. */\n\t\treadonly vendor: string;\n\t\t/** Validates unknown input values. */\n\t\treadonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;\n\t\t/** Inferred types associated with the schema. */\n\t\treadonly types?: Types<Input, Output> | undefined;\n\t}\n\n\t/** The result interface of the validate function. */\n\texport type Result<Output> = SuccessResult<Output> | FailureResult;\n\n\t/** The result interface if validation succeeds. */\n\texport interface SuccessResult<Output> {\n\t\t/** The typed output value. */\n\t\treadonly value: Output;\n\t\t/** The non-existent issues. */\n\t\treadonly issues?: undefined;\n\t}\n\n\t/** The result interface if validation fails. */\n\texport interface FailureResult {\n\t\t/** The issues of failed validation. */\n\t\treadonly issues: ReadonlyArray<Issue>;\n\t}\n\n\t/** The issue interface of the failure output. */\n\texport interface Issue {\n\t\t/** The error message of the issue. */\n\t\treadonly message: string;\n\t\t/** The path of the issue, if any. */\n\t\treadonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;\n\t}\n\n\t/** The path segment interface of the issue. */\n\texport interface PathSegment {\n\t\t/** The key representing a path segment. */\n\t\treadonly key: PropertyKey;\n\t}\n\n\t/** The Standard Schema types interface. */\n\texport interface Types<Input = unknown, Output = Input> {\n\t\t/** The input type of the schema. */\n\t\treadonly input: Input;\n\t\t/** The output type of the schema. */\n\t\treadonly output: Output;\n\t}\n\n\t/** Infers the input type of a Standard Schema. */\n\texport type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"input\"];\n\n\t/** Infers the output type of a Standard Schema. */\n\texport type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"output\"];\n}\n\n// custom helpers\n\n/** Infer the input type of an array of Standard Schemas. */\nexport type InferInputArray<Schemas extends readonly StandardSchemaV1[]> = {\n\t[K in keyof Schemas]: StandardSchemaV1.InferInput<Schemas[K]>;\n};\n\n/** Infer the output type of an array of Standard Schemas. */\nexport type InferOutputArray<Schemas extends readonly StandardSchemaV1[]> = {\n\t[K in keyof Schemas]: StandardSchemaV1.InferOutput<Schemas[K]>;\n};\n\n/** Infer the input type of a Standard Schema, or a default type if the schema is undefined. */\nexport type InferInputOrDefault<MaybeSchema, Default> = MaybeSchema extends StandardSchemaV1\n\t? StandardSchemaV1.InferInput<MaybeSchema>\n\t: Default;\n\n/** Infer the output type of a Standard Schema, or a default type if the schema is undefined. */\nexport type InferOutputOrDefault<MaybeSchema, Default> = MaybeSchema extends StandardSchemaV1\n\t? StandardSchemaV1.InferOutput<MaybeSchema>\n\t: Default;\n\nexport async function standardParse<Output>(schema: StandardSchemaV1<unknown, Output>, value: unknown) {\n\treturn schema[\"~standard\"].validate(value);\n}\n","export const DEFAULT_SERVER_ERROR_MESSAGE = \"Something went wrong while executing the operation.\";\n\n/**\n * Checks if passed argument is an instance of Error.\n */\nexport const isError = (error: unknown): error is Error => error instanceof Error;\n\n/**\n * Checks what the winning boolean value is from a series of values, from lowest to highest priority.\n * `null` and `undefined` values are skipped.\n */\nexport const winningBoolean = (...args: (boolean | undefined | null)[]) => {\n\treturn args.reduce((acc, v) => (typeof v === \"boolean\" ? v : acc), false) as boolean;\n};\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment */\nimport type { StandardSchemaV1 } from \"./standard-schema\";\nimport type { FlattenedValidationErrors, IssueWithUnionErrors, ValidationErrors } from \"./validation-errors.types\";\n\nconst getKey = (segment: PropertyKey | StandardSchemaV1.PathSegment) =>\n\ttypeof segment === \"object\" ? segment.key : segment;\n\nconst getIssueMessage = (issue: IssueWithUnionErrors) => {\n\tif (issue.unionErrors) {\n\t\treturn issue.unionErrors.map((u) => u.issues.map((i) => i.message)).flat();\n\t}\n\treturn issue.message;\n};\n\n// This function is used internally to build the validation errors object from a list of validation issues.\nexport const buildValidationErrors = <S extends StandardSchemaV1 | undefined>(\n\tissues: readonly IssueWithUnionErrors[]\n) => {\n\tconst ve: any = {};\n\n\tfor (const issue of issues) {\n\t\tconst { path, message, unionErrors } = issue;\n\n\t\t// When path is undefined or empty, set root errors.\n\t\tif (!path || path.length === 0) {\n\t\t\tve._errors = ve._errors ? [...ve._errors, message] : [message];\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Reference to errors object.\n\t\tlet ref = ve;\n\n\t\t// Set object for the path, if it doesn't exist.\n\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\tconst k = getKey(path[i]!);\n\n\t\t\tif (!ref[k]) {\n\t\t\t\tref[k] = {};\n\t\t\t}\n\n\t\t\tref = ref[k];\n\t\t}\n\n\t\t// Key is always the last element of the path.\n\t\tconst key = getKey(path[path.length - 1]!);\n\n\t\tconst issueMessage = getIssueMessage(issue);\n\n\t\t// Set error for the current path. If `_errors` array exists, add the message to it.\n\t\tref[key] = ref[key]?._errors\n\t\t\t? {\n\t\t\t\t\t...structuredClone(ref[key]),\n\t\t\t\t\t_errors: [...ref[key]._errors, issueMessage],\n\t\t\t\t}\n\t\t\t: { ...structuredClone(ref[key]), _errors: unionErrors ? issueMessage : [issueMessage] };\n\t}\n\n\treturn ve as ValidationErrors<S>;\n};\n\n// This class is internally used to throw validation errors in action's server code function, using\n// `returnValidationErrors`.\nexport class ActionServerValidationError<S extends StandardSchemaV1> extends Error {\n\tpublic validationErrors: ValidationErrors<S>;\n\tconstructor(validationErrors: ValidationErrors<S>) {\n\t\tsuper(\"Server Action server validation error(s) occurred\");\n\t\tthis.validationErrors = validationErrors;\n\t}\n}\n\n// This class is internally used to throw validation errors in action's server code function, using\n// `returnValidationErrors`.\nexport class ActionValidationError<CVE> extends Error {\n\tpublic validationErrors: CVE;\n\tconstructor(validationErrors: CVE, overriddenErrorMessage?: string) {\n\t\tsuper(overriddenErrorMessage ?? \"Server Action validation error(s) occurred\");\n\t\tthis.validationErrors = validationErrors;\n\t}\n}\n\n// This class is internally used to throw validation errors in action's server code function, using\n// `returnValidationErrors`.\nexport class ActionBindArgsValidationError extends Error {\n\tpublic validationErrors: unknown[];\n\tconstructor(validationErrors: unknown[]) {\n\t\tsuper(\"Server Action bind args validation error(s) occurred\");\n\t\tthis.validationErrors = validationErrors;\n\t}\n}\n\n/**\n * Return custom validation errors to the client from the action's server code function.\n * Code declared after this function invocation will not be executed.\n * @param schema Input schema\n * @param validationErrors Validation errors object\n *\n * {@link https://next-safe-action.dev/docs/define-actions/validation-errors#returnvalidationerrors See docs for more information}\n */\nexport function returnValidationErrors<\n\tS extends StandardSchemaV1 | (() => Promise<StandardSchemaV1>),\n\tAS extends StandardSchemaV1 = S extends () => Promise<StandardSchemaV1> ? Awaited<ReturnType<S>> : S, // actual schema\n>(schema: S, validationErrors: ValidationErrors<AS>): never {\n\tthrow new ActionServerValidationError<AS>(validationErrors);\n}\n\n/**\n * Default validation errors format.\n * Emulation of `zod`'s [`format`](https://zod.dev/ERROR_HANDLING?id=formatting-errors) function.\n */\nexport function formatValidationErrors<VE extends ValidationErrors<any>>(validationErrors: VE) {\n\treturn validationErrors;\n}\n\n/**\n * Transform default formatted validation errors into flattened structure.\n * `formErrors` contains global errors, and `fieldErrors` contains errors for each field,\n * one level deep. It discards errors for nested fields.\n * Emulation of `zod`'s [`flatten`](https://zod.dev/ERROR_HANDLING?id=flattening-errors) function.\n * @param {ValidationErrors} [validationErrors] Validation errors object\n *\n * {@link https://next-safe-action.dev/docs/define-actions/validation-errors#flattenvalidationerrorsutility-function See docs for more information}\n */\nexport function flattenValidationErrors<VE extends ValidationErrors<any>>(validationErrors: VE) {\n\tconst flattened: FlattenedValidationErrors<VE> = {\n\t\tformErrors: [],\n\t\tfieldErrors: {},\n\t};\n\n\tfor (const [key, value] of Object.entries<string[] | { _errors: string[] }>(validationErrors ?? {})) {\n\t\tif (key === \"_errors\" && Array.isArray(value)) {\n\t\t\tflattened.formErrors = [...value];\n\t\t} else {\n\t\t\tif (\"_errors\" in value) {\n\t\t\t\tflattened.fieldErrors[key as keyof Omit<VE, \"_errors\">] = [...value._errors];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn flattened;\n}\n\n/**\n * This error is thrown when an action metadata is invalid, i.e. when there's a mismatch between the\n * type of the metadata schema returned from `defineMetadataSchema` and the actual data passed.\n */\nexport class ActionMetadataValidationError<MDS extends StandardSchemaV1 | undefined> extends Error {\n\tpublic validationErrors: ValidationErrors<MDS>;\n\n\tconstructor(validationErrors: ValidationErrors<MDS>) {\n\t\tsuper(\"Invalid metadata input. Please be sure to pass metadata via `metadata` method before defining the action.\");\n\t\tthis.name = \"ActionMetadataError\";\n\t\tthis.validationErrors = validationErrors;\n\t}\n}\n\n/**\n * This error is thrown when an action's data (output) is invalid, i.e. when there's a mismatch between the\n * type of the data schema passed to `dataSchema` method and the actual return of the action.\n */\nexport class ActionOutputDataValidationError<DS extends StandardSchemaV1 | undefined> extends Error {\n\tpublic validationErrors: ValidationErrors<DS>;\n\n\tconstructor(validationErrors: ValidationErrors<DS>) {\n\t\tsuper(\n\t\t\t\"Invalid action data (output). Please be sure to return data following the shape of the schema passed to `dataSchema` method.\"\n\t\t);\n\t\tthis.name = \"ActionOutputDataError\";\n\t\tthis.validationErrors = validationErrors;\n\t}\n}\n","import { deepmerge } from \"deepmerge-ts\";\nimport type {} from \"zod\";\nimport type {\n\tDVES,\n\tMiddlewareResult,\n\tSafeActionClientArgs,\n\tSafeActionFn,\n\tSafeActionResult,\n\tSafeActionUtils,\n\tSafeStateActionFn,\n\tServerCodeFn,\n\tStateServerCodeFn,\n} from \"./index.types\";\nimport { FrameworkErrorHandler } from \"./next/errors\";\nimport type {\n\tInferInputArray,\n\tInferInputOrDefault,\n\tInferOutputArray,\n\tInferOutputOrDefault,\n\tStandardSchemaV1,\n} from \"./standard-schema\";\nimport { standardParse } from \"./standard-schema\";\nimport { DEFAULT_SERVER_ERROR_MESSAGE, isError, winningBoolean } from \"./utils\";\nimport {\n\tActionBindArgsValidationError,\n\tActionMetadataValidationError,\n\tActionOutputDataValidationError,\n\tActionServerValidationError,\n\tActionValidationError,\n\tbuildValidationErrors,\n} from \"./validation-errors\";\nimport type { ValidationErrors } from \"./validation-errors.types\";\n\nexport function actionBuilder<\n\tServerError,\n\tODVES extends DVES | undefined, // override default validation errors shape\n\tMetadataSchema extends StandardSchemaV1 | undefined = undefined,\n\tMD = InferOutputOrDefault<MetadataSchema, undefined>, // metadata type (inferred from metadata schema)\n\tCtx extends object = {},\n\tISF extends (() => Promise<StandardSchemaV1>) | undefined = undefined, // input schema function\n\tIS extends StandardSchemaV1 | undefined = ISF extends Function ? Awaited<ReturnType<ISF>> : undefined, // input schema\n\tOS extends StandardSchemaV1 | undefined = undefined, // output schema\n\tconst BAS extends readonly StandardSchemaV1[] = [],\n\tCVE = undefined,\n>(args: SafeActionClientArgs<ServerError, ODVES, MetadataSchema, MD, true, Ctx, ISF, IS, OS, BAS, CVE>) {\n\tconst bindArgsSchemas = args.bindArgsSchemas ?? [];\n\n\tfunction buildAction({ withState }: { withState: false }): {\n\t\taction: <Data extends InferOutputOrDefault<OS, any>>(\n\t\t\tserverCodeFn: ServerCodeFn<MD, Ctx, IS, BAS, Data>,\n\t\t\tutils?: SafeActionUtils<ServerError, MD, Ctx, IS, BAS, CVE, Data>\n\t\t) => SafeActionFn<ServerError, IS, BAS, CVE, Data>;\n\t};\n\tfunction buildAction({ withState }: { withState: true }): {\n\t\taction: <Data extends InferOutputOrDefault<OS, any>>(\n\t\t\tserverCodeFn: StateServerCodeFn<ServerError, MD, Ctx, IS, BAS, CVE, Data>,\n\t\t\tutils?: SafeActionUtils<ServerError, MD, Ctx, IS, BAS, CVE, Data>\n\t\t) => SafeStateActionFn<ServerError, IS, BAS, CVE, Data>;\n\t};\n\tfunction buildAction({ withState }: { withState: boolean }) {\n\t\treturn {\n\t\t\taction: <Data extends InferOutputOrDefault<OS, any>>(\n\t\t\t\tserverCodeFn:\n\t\t\t\t\t| ServerCodeFn<MD, Ctx, IS, BAS, Data>\n\t\t\t\t\t| StateServerCodeFn<ServerError, MD, Ctx, IS, BAS, CVE, Data>,\n\t\t\t\tutils?: SafeActionUtils<ServerError, MD, Ctx, IS, BAS, CVE, Data>\n\t\t\t) => {\n\t\t\t\treturn async (...clientInputs: unknown[]) => {\n\t\t\t\t\tlet currentCtx: object = {};\n\t\t\t\t\tconst middlewareResult: MiddlewareResult<ServerError, object> = { success: false };\n\t\t\t\t\ttype PrevResult = SafeActionResult<ServerError, IS, CVE, Data>;\n\t\t\t\t\tlet prevResult: PrevResult = {};\n\t\t\t\t\tconst parsedInputDatas: any[] = [];\n\t\t\t\t\tconst frameworkErrorHandler = new FrameworkErrorHandler();\n\n\t\t\t\t\t// Track if server error has been handled.\n\t\t\t\t\tlet serverErrorHandled = false;\n\n\t\t\t\t\tif (withState) {\n\t\t\t\t\t\t// Previous state is placed between bind args and main arg inputs, so it's always at the index of\n\t\t\t\t\t\t// the bind args schemas + 1. Get it and remove it from the client inputs array.\n\t\t\t\t\t\tprevResult = clientInputs.splice(bindArgsSchemas.length, 1)[0] as PrevResult;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the number of bind args schemas + 1 (which is the optional main arg schema) is greater\n\t\t\t\t\t// than the number of provided client inputs, it means that the main argument is missing.\n\t\t\t\t\t// This happens when the main schema is missing (since it's optional), or if a void main schema\n\t\t\t\t\t// is provided along with bind args schemas.\n\t\t\t\t\tif (bindArgsSchemas.length + 1 > clientInputs.length) {\n\t\t\t\t\t\tclientInputs.push(undefined);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Execute the middleware stack.\n\t\t\t\t\tconst executeMiddlewareStack = async (idx = 0) => {\n\t\t\t\t\t\tif (frameworkErrorHandler.error) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst middlewareFn = args.middlewareFns[idx];\n\t\t\t\t\t\tmiddlewareResult.ctx = currentCtx;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (idx === 0) {\n\t\t\t\t\t\t\t\tif (args.metadataSchema) {\n\t\t\t\t\t\t\t\t\t// Validate metadata input.\n\t\t\t\t\t\t\t\t\tconst parsedMd = await standardParse(args.metadataSchema, args.metadata);\n\n\t\t\t\t\t\t\t\t\tif (parsedMd.issues) {\n\t\t\t\t\t\t\t\t\t\tthrow new ActionMetadataValidationError<MetadataSchema>(buildValidationErrors(parsedMd.issues));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Middleware function.\n\t\t\t\t\t\t\tif (middlewareFn) {\n\t\t\t\t\t\t\t\tawait middlewareFn({\n\t\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1), // pass raw client input\n\t\t\t\t\t\t\t\t\tbindArgsClientInputs: bindArgsSchemas.length ? clientInputs.slice(0, -1) : [],\n\t\t\t\t\t\t\t\t\tctx: currentCtx,\n\t\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\t\tnext: async (nextOpts) => {\n\t\t\t\t\t\t\t\t\t\tcurrentCtx = deepmerge(currentCtx, nextOpts?.ctx ?? {});\n\t\t\t\t\t\t\t\t\t\tawait executeMiddlewareStack(idx + 1);\n\t\t\t\t\t\t\t\t\t\treturn middlewareResult;\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}).catch((e) => {\n\t\t\t\t\t\t\t\t\tframeworkErrorHandler.handleError(e);\n\t\t\t\t\t\t\t\t\tif (frameworkErrorHandler.error) {\n\t\t\t\t\t\t\t\t\t\tmiddlewareResult.success = false;\n\t\t\t\t\t\t\t\t\t\tmiddlewareResult.navigationKind = FrameworkErrorHandler.getNavigationKind(\n\t\t\t\t\t\t\t\t\t\t\tframeworkErrorHandler.error\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t// Action function.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Validate the client inputs in parallel.\n\t\t\t\t\t\t\t\tconst parsedInputs = await Promise.all(\n\t\t\t\t\t\t\t\t\tclientInputs.map(async (input, i) => {\n\t\t\t\t\t\t\t\t\t\t// Last client input in the array, main argument (no bind arg).\n\t\t\t\t\t\t\t\t\t\tif (i === clientInputs.length - 1) {\n\t\t\t\t\t\t\t\t\t\t\t// If schema is undefined, set parsed data to undefined.\n\t\t\t\t\t\t\t\t\t\t\tif (typeof args.inputSchemaFn === \"undefined\") {\n\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t} as const satisfies StandardSchemaV1.Result<undefined>;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Otherwise, parse input with the schema.\n\t\t\t\t\t\t\t\t\t\t\treturn standardParse(await args.inputSchemaFn(), input);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Otherwise, we're processing bind args client inputs.\n\t\t\t\t\t\t\t\t\t\treturn standardParse(bindArgsSchemas[i]!, input);\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tlet hasBindValidationErrors = false;\n\n\t\t\t\t\t\t\t\t// Initialize the bind args validation errors array with null values.\n\t\t\t\t\t\t\t\t// It has the same length as the number of bind arguments (parsedInputs - 1).\n\t\t\t\t\t\t\t\tconst bindArgsValidationErrors = Array(parsedInputs.length - 1).fill({});\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < parsedInputs.length; i++) {\n\t\t\t\t\t\t\t\t\tconst parsedInput = parsedInputs[i]!;\n\n\t\t\t\t\t\t\t\t\tif (!parsedInput.issues) {\n\t\t\t\t\t\t\t\t\t\tparsedInputDatas.push(parsedInput.value);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// If we're processing a bind argument and there are validation errors for this one,\n\t\t\t\t\t\t\t\t\t\t// we need to store them in the bind args validation errors array at this index.\n\t\t\t\t\t\t\t\t\t\tif (i < parsedInputs.length - 1) {\n\t\t\t\t\t\t\t\t\t\t\tbindArgsValidationErrors[i] = buildValidationErrors<BAS[number]>(parsedInput.issues);\n\t\t\t\t\t\t\t\t\t\t\thasBindValidationErrors = true;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t// Otherwise, we're processing the non-bind argument (the last one) in the array.\n\t\t\t\t\t\t\t\t\t\t\tconst validationErrors = buildValidationErrors<IS>(parsedInput.issues);\n\n\t\t\t\t\t\t\t\t\t\t\tmiddlewareResult.validationErrors = await Promise.resolve(\n\t\t\t\t\t\t\t\t\t\t\t\targs.handleValidationErrorsShape(validationErrors, {\n\t\t\t\t\t\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? clientInputs.slice(0, -1)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If there are bind args validation errors, throw an error.\n\t\t\t\t\t\t\t\tif (hasBindValidationErrors) {\n\t\t\t\t\t\t\t\t\tthrow new ActionBindArgsValidationError(bindArgsValidationErrors);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (middlewareResult.validationErrors) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\tconst scfArgs: Parameters<StateServerCodeFn<ServerError, MD, Ctx, IS, BAS, CVE, Data>> = [];\n\n\t\t\t\t\t\t\t\t// Server code function always has this object as the first argument.\n\t\t\t\t\t\t\t\tscfArgs[0] = {\n\t\t\t\t\t\t\t\t\tparsedInput: parsedInputDatas.at(-1) as InferOutputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\t\tbindArgsParsedInputs: parsedInputDatas.slice(0, -1) as InferOutputArray<BAS>,\n\t\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length\n\t\t\t\t\t\t\t\t\t\t? clientInputs.slice(0, -1)\n\t\t\t\t\t\t\t\t\t\t: []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t// If this action is stateful, server code function also has a `prevResult` property inside the second\n\t\t\t\t\t\t\t\t// argument object.\n\t\t\t\t\t\t\t\tif (withState) {\n\t\t\t\t\t\t\t\t\tscfArgs[1] = { prevResult: structuredClone(prevResult) };\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst data = await serverCodeFn(...scfArgs).catch((e) => frameworkErrorHandler.handleError(e));\n\n\t\t\t\t\t\t\t\t// If a `outputSchema` is passed, validate the action return value.\n\t\t\t\t\t\t\t\tif (typeof args.outputSchema !== \"undefined\" && !frameworkErrorHandler.error) {\n\t\t\t\t\t\t\t\t\tconst parsedData = await standardParse(args.outputSchema, data);\n\n\t\t\t\t\t\t\t\t\tif (parsedData.issues) {\n\t\t\t\t\t\t\t\t\t\tthrow new ActionOutputDataValidationError<OS>(buildValidationErrors(parsedData.issues));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (frameworkErrorHandler.error) {\n\t\t\t\t\t\t\t\t\tmiddlewareResult.success = false;\n\t\t\t\t\t\t\t\t\tmiddlewareResult.navigationKind = FrameworkErrorHandler.getNavigationKind(\n\t\t\t\t\t\t\t\t\t\tframeworkErrorHandler.error\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmiddlewareResult.success = true;\n\t\t\t\t\t\t\t\t\tmiddlewareResult.data = data;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tmiddlewareResult.parsedInput = parsedInputDatas.at(-1);\n\t\t\t\t\t\t\t\tmiddlewareResult.bindArgsParsedInputs = parsedInputDatas.slice(0, -1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e: unknown) {\n\t\t\t\t\t\t\t// Only handle server errors once. If already handled, rethrow to bubble up.\n\t\t\t\t\t\t\tif (serverErrorHandled) {\n\t\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// If error is `ActionServerValidationError`, return `validationErrors` as if schema validation would fail.\n\t\t\t\t\t\t\tif (e instanceof ActionServerValidationError) {\n\t\t\t\t\t\t\t\tconst ve = e.validationErrors as ValidationErrors<IS>;\n\t\t\t\t\t\t\t\tmiddlewareResult.validationErrors = await Promise.resolve(\n\t\t\t\t\t\t\t\t\targs.handleValidationErrorsShape(ve, {\n\t\t\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length\n\t\t\t\t\t\t\t\t\t\t\t? clientInputs.slice(0, -1)\n\t\t\t\t\t\t\t\t\t\t\t: []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Mark that we're handling the server error to prevent multiple calls.\n\t\t\t\t\t\t\t\tserverErrorHandled = true;\n\n\t\t\t\t\t\t\t\t// If error is not an instance of Error, wrap it in an Error object with\n\t\t\t\t\t\t\t\t// the default message.\n\t\t\t\t\t\t\t\tconst error = isError(e) ? e : new Error(DEFAULT_SERVER_ERROR_MESSAGE);\n\t\t\t\t\t\t\t\tconst returnedError = await Promise.resolve(\n\t\t\t\t\t\t\t\t\targs.handleServerError(error, {\n\t\t\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1), // pass raw client input\n\t\t\t\t\t\t\t\t\t\tbindArgsClientInputs: bindArgsSchemas.length ? clientInputs.slice(0, -1) : [],\n\t\t\t\t\t\t\t\t\t\tctx: currentCtx,\n\t\t\t\t\t\t\t\t\t\tmetadata: args.metadata as InferOutputOrDefault<MetadataSchema, undefined>,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tmiddlewareResult.serverError = returnedError;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// Execute middleware chain + action function.\n\t\t\t\t\tawait executeMiddlewareStack();\n\n\t\t\t\t\tconst callbackPromises: (Promise<unknown> | undefined)[] = [];\n\n\t\t\t\t\t// If an internal (navigation) framework error occurred, throw it, so it will be processed by Next.js.\n\t\t\t\t\tif (frameworkErrorHandler.error) {\n\t\t\t\t\t\tcallbackPromises.push(\n\t\t\t\t\t\t\tutils?.onNavigation?.({\n\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length ? clientInputs.slice(0, -1) : []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\t\tnavigationKind: FrameworkErrorHandler.getNavigationKind(frameworkErrorHandler.error),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tcallbackPromises.push(\n\t\t\t\t\t\t\tutils?.onSettled?.({\n\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length ? clientInputs.slice(0, -1) : []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\t\tresult: {},\n\t\t\t\t\t\t\t\tnavigationKind: FrameworkErrorHandler.getNavigationKind(frameworkErrorHandler.error),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tawait Promise.all(callbackPromises);\n\n\t\t\t\t\t\tthrow frameworkErrorHandler.error;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst actionResult: SafeActionResult<ServerError, IS, CVE, Data> = {};\n\n\t\t\t\t\tif (typeof middlewareResult.validationErrors !== \"undefined\") {\n\t\t\t\t\t\t// `utils.throwValidationErrors` has higher priority since it's set at the action level.\n\t\t\t\t\t\t// It overrides the client setting, if set.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\twinningBoolean(\n\t\t\t\t\t\t\t\targs.throwValidationErrors,\n\t\t\t\t\t\t\t\ttypeof utils?.throwValidationErrors === \"undefined\" ? undefined : Boolean(utils.throwValidationErrors)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst overrideErrorMessageFn =\n\t\t\t\t\t\t\t\ttypeof utils?.throwValidationErrors === \"object\" && utils?.throwValidationErrors.overrideErrorMessage\n\t\t\t\t\t\t\t\t\t? utils?.throwValidationErrors.overrideErrorMessage\n\t\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\tthrow new ActionValidationError(\n\t\t\t\t\t\t\t\tmiddlewareResult.validationErrors as CVE,\n\t\t\t\t\t\t\t\tawait overrideErrorMessageFn?.(middlewareResult.validationErrors as CVE)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tactionResult.validationErrors = middlewareResult.validationErrors as CVE;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof middlewareResult.serverError !== \"undefined\") {\n\t\t\t\t\t\tif (utils?.throwServerError) {\n\t\t\t\t\t\t\tthrow middlewareResult.serverError;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tactionResult.serverError = middlewareResult.serverError;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (middlewareResult.success) {\n\t\t\t\t\t\tif (typeof middlewareResult.data !== \"undefined\") {\n\t\t\t\t\t\t\tactionResult.data = middlewareResult.data as Data;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcallbackPromises.push(\n\t\t\t\t\t\t\tutils?.onSuccess?.({\n\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\t\tdata: actionResult.data as Data,\n\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length ? clientInputs.slice(0, -1) : []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\t\tparsedInput: parsedInputDatas.at(-1) as InferOutputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\tbindArgsParsedInputs: parsedInputDatas.slice(0, -1) as InferOutputArray<BAS>,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallbackPromises.push(\n\t\t\t\t\t\t\tutils?.onError?.({\n\t\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length ? clientInputs.slice(0, -1) : []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\t\terror: actionResult,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// onSettled, if provided, is always executed.\n\t\t\t\t\tcallbackPromises.push(\n\t\t\t\t\t\tutils?.onSettled?.({\n\t\t\t\t\t\t\tmetadata: args.metadata,\n\t\t\t\t\t\t\tctx: currentCtx as Ctx,\n\t\t\t\t\t\t\tclientInput: clientInputs.at(-1) as InferInputOrDefault<IS, undefined>,\n\t\t\t\t\t\t\tbindArgsClientInputs: (bindArgsSchemas.length ? clientInputs.slice(0, -1) : []) as InferInputArray<BAS>,\n\t\t\t\t\t\t\tresult: actionResult,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\t\tawait Promise.all(callbackPromises);\n\n\t\t\t\t\treturn actionResult;\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Define the action.\n\t\t * @param serverCodeFn Code that will be executed on the **server side**\n\t\t *\n\t\t * {@link https://next-safe-action.dev/docs/define-actions/instance-methods#action--stateaction See docs for more information}\n\t\t */\n\t\taction: buildAction({ withState: false }).action,\n\n\t\t/**\n\t\t * Define the stateful action. To be used with the [`useStateAction`](https://next-safe-action.dev/docs/execute-actions/hooks/usestateaction) hook.\n\t\t * @param serverCodeFn Code that will be executed on the **server side**\n\t\t *\n\t\t * {@link https://next-safe-action.dev/docs/define-actions/instance-methods#action--stateaction See docs for more information}\n\t\t */\n\t\tstateAction: buildAction({ withState: true }).action,\n\t};\n}\n","import { actionBuilder } from \"./action-builder\";\nimport type {\n\tDVES,\n\tMiddlewareFn,\n\tSafeActionClientArgs,\n\tSafeActionUtils,\n\tServerCodeFn,\n\tStateServerCodeFn,\n} from \"./index.types\";\nimport type { InferOutputOrDefault, StandardSchemaV1 } from \"./standard-schema\";\nimport type {\n\tFlattenedValidationErrors,\n\tHandleValidationErrorsShapeFn,\n\tValidationErrors,\n} from \"./validation-errors.types\";\n\nexport class SafeActionClient<\n\tServerError,\n\tODVES extends DVES | undefined, // override default validation errors shape\n\tMetadataSchema extends StandardSchemaV1 | undefined = undefined,\n\tMD = InferOutputOrDefault<MetadataSchema, undefined>, // metadata type (inferred from metadata schema)\n\tMDProvided extends boolean = MetadataSchema extends undefined ? true : false,\n\tCtx extends object = {},\n\tISF extends (() => Promise<StandardSchemaV1>) | undefined = undefined, // input schema function\n\tIS extends StandardSchemaV1 | undefined = ISF extends Function ? Awaited<ReturnType<ISF>> : undefined, // input schema\n\tOS extends StandardSchemaV1 | undefined = undefined, // output schema\n\tconst BAS extends readonly StandardSchemaV1[] = [],\n\tCVE = undefined,\n> {\n\treadonly #args: SafeActionClientArgs<ServerError, ODVES, MetadataSchema, MD, MDProvided, Ctx, ISF, IS, OS, BAS, CVE>;\n\n\tconstructor(\n\t\targs: SafeActionClientArgs<ServerError, ODVES, MetadataSchema, MD, MDProvided, Ctx, ISF, IS, OS, BAS, CVE>\n\t) {\n\t\tthis.#args = args;\n\t}\n\n\t/**\n\t * Use a middleware function.\n\t * @param middlewareFn Middleware function\n\t *\n\t * {@link https://next-safe-action.dev/docs/define-actions/instance-methods#use See docs for more information}\n\t */\n\tuse<NextCtx extends object>(middlewareFn: MiddlewareFn<ServerError, MD, Ctx, Ctx & NextCtx>) {\n\t\treturn new SafeActionClient({\n\t\t\t...this.#args,\n\t\t\tmiddlewareFns: [...this.#args.middlewareFns, middlewareFn],\n\t\t\tctxType: {} as Ctx & NextCtx,\n\t\t});\n\t}\n\n\t/**\n\t * Define metadata for the action.\n\t * @param data Metadata with the same type as the return value of the [`defineMetadataSchema`](https://next-safe-action.dev/docs/define-actions/create-the-client#definemetadataschema) optional initialization function\n\t *\n\t * {@link https://next-safe-action.dev/docs/define-actions/instance-methods#metadata See docs for more information}\n\t */\n\tmetadata(data: MD) {\n\t\treturn new SafeActionClient({\n\t\t\t...this.#args,\n\t\t\tmetadata: data,\n\t\t\tmetadataProvided: true,\n\t\t});\n\t}\n\n\t/**\n\t * Define the input validation schema for the action.\n\t * @param inputSchema Input validation schema\n\t * @param utils Optional utils object\n\t *\n\t * {@link https://next-safe-action.dev/docs/define-actions/create-the-client#inputschema See docs for more information}\n\t */\n\tinputSchema<\n\t\tOIS extends StandardSchemaV1 | ((prevSchema: IS) => Promise<StandardSchemaV1>), // override input schema\n\t\tAIS extends StandardSchemaV1 = OIS extends (prevSchema: IS) => Promise<StandardSchemaV1> // actual input schema\n\t\t\t? Awaited<ReturnType<OIS>>\n\t\t\t: OIS,\n\t\t// override custom validation errors shape\n\t\tOCVE = ODVES extends \"flattened\" ? FlattenedValidationErrors<ValidationErrors<AIS>> : ValidationErrors<AIS>,\n\t>(\n\t\tinputSchema: OIS,\n\t\tutils?: {\n\t\t\thandleValidationErrorsShape?: HandleValidationErrorsShapeFn<AIS, BAS, MD, Ctx, OCVE>;\n\t\t}\n\t) {\n\t\treturn new SafeActionClient({\n\t\t\t...this.#args,\n\t\t\t// @ts-expect-error\n\t\t\tinputSchemaFn: (inputSchema[Symbol.toStringTag] === \"AsyncFunction\"\n\t\t\t\t? async () => {\n\t\t\t\t\t\tconst prevSchema = await this.#args.inputSchemaFn?.();\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\treturn inputSchema(prevSchema as IS) as AIS;\n\t\t\t\t\t}\n\t\t\t\t: async () => inputSchema) as ISF,\n\t\t\thandleValidationErrorsShape: (utils?.handleValidationErrorsShape ??\n\t\t\t\tthis.#args.handleValidationErrorsShape) as HandleValidationErrorsShapeFn<AIS, BAS, MD, Ctx, OCVE>,\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated Alias for `inputSchema` method. Use that instead.\n\t */\n\tschema = this.inputSchema;\n\n\t/**\n\t * Define the bind args input validation schema for the action.\n\t * @param bindArgsSchemas Bind args input validation schemas\n\t *\n\t * {@link https://next-safe-action.dev/docs/define-actions/instance-methods#bindargsschemas See docs for more information}\n\t */\n\tbindArgsSchemas<const OBAS extends readonly StandardSchemaV1[]>(bindArgsSchemas: OBAS) {\n\t\treturn new SafeActionClient({\n\t\t\t...this.#args,\n\t\t\tbindArgsSchemas,\n\t\t\thandleValidationErrorsShape: this.#args.handleValidationErrorsShape as unknown as HandleValidationErrorsShapeFn<\n\t\t\t\tIS,\n\t\t\t\tOBAS,\n\t\t\t\tMD,\n\t\t\t\tCtx,\n\t\t\t\tCVE\n\t\t\t>,\n\t\t});\n\t}\n\n\t/**\n\t * Define the output data validation schema for the action.\n\t * @param schema Output data validation schema\n\t *\n\t * {@link https://next-safe-action.dev/docs/define-actions/create-the-client#outputschema See docs for more information}\n\t */\n\toutputSchema<OOS extends StandardSchemaV1>(dataSchema: OOS) {\n\t\treturn new SafeActionClient({\n\t\t\t...this.#args,\n\t\t\toutputSchema: dataSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Define the action.\n\t * @param serverCodeFn Code that will be executed on the **server side**\n\t * @param [cb] Optional callbacks that will be called after action execution, on the server.\n\t *\n\t * {@link https://next-safe-action.dev/docs/define-actions/instance-methods#action--stateaction See docs for more information}\n\t */\n\taction<Data extends InferOutputOrDefault<OS, any>>(\n\t\tthis: MDProvided extends true\n\t\t\t? SafeActionClient<ServerError, ODVES, MetadataSchema, MD, MDProvided, Ctx, ISF, IS, OS, BAS, CVE>\n\t\t\t: never,\n\t\tserverCodeFn: ServerCodeFn<MD, Ctx, IS, BAS, Data>,\n\t\tutils?: SafeActionUtils<ServerError, MD, Ctx, IS, BAS, CVE, Data>\n\t) {\n\t\treturn actionBuilder(this.#args).action(serverCodeFn, utils);\n\t}\n\n\t/**\n\t * Define the stateful action.\n\t * To be used with the [`useStateAction`](https://next-safe-action.dev/docs/execute-actions/hooks/usestateaction) hook.\n\t * @param serverCodeFn Code that will be executed on the **server side**\n\t * @param [cb] Optional callbacks that will be called after action execution, on the server.\n\t *\n\t * {@link https://next-safe-action.dev/docs/define-actions/instance-methods#action--stateaction See docs for more information}\n\t */\n\tstateAction<Data extends InferOutputOrDefault<OS, any>>(\n\t\tthis: MDProvided extends true\n\t\t\t? SafeActionClient<ServerError, ODVES, MetadataSchema, MD, MDProvided, Ctx, ISF, IS, OS, BAS, CVE>\n\t\t\t: never,\n\t\tserverCodeFn: StateServerCodeFn<ServerError, MD, Ctx, IS, BAS, CVE, Data>,\n\t\tutils?: SafeActionUtils<ServerError, MD, Ctx, IS, BAS, CVE, Data>\n\t) {\n\t\treturn actionBuilder(this.#args).stateAction(serverCodeFn, utils);\n\t}\n}\n","import type { MiddlewareFn } from \"./index.types\";\n\n/**\n * Creates a standalone middleware function. It accepts a generic object with optional `serverError`, `ctx` and `metadata`\n * properties, if you need one or all of them to be typed. The type for each property that is passed as generic is the\n * **minimum** shape required to define the middleware function, but it can also be larger than that.\n *\n * {@link https://next-safe-action.dev/docs/define-actions/middleware#create-standalone-middleware See docs for more information}\n */\nexport const createMiddleware = <BaseData extends { serverError?: any; ctx?: object; metadata?: any }>() => {\n\treturn {\n\t\tdefine: <NextCtx extends object>(\n\t\t\tmiddlewareFn: MiddlewareFn<\n\t\t\t\tBaseData extends { serverError: infer SE } ? SE : any,\n\t\t\t\tBaseData extends { metadata: infer MD } ? MD : any,\n\t\t\t\tBaseData extends { ctx: infer Ctx extends object } ? Ctx : object,\n\t\t\t\tNextCtx\n\t\t\t>\n\t\t) => middlewareFn,\n\t};\n};\n","import type { CreateClientOpts, DVES, HandleServerErrorFn } from \"./index.types\";\nimport { SafeActionClient } from \"./safe-action-client\";\nimport type { InferOutputOrDefault, StandardSchemaV1 } from \"./standard-schema\";\nimport { DEFAULT_SERVER_ERROR_MESSAGE } from \"./utils\";\nimport { flattenValidationErrors, formatValidationErrors } from \"./validation-errors\";\n\nexport { createMiddleware } from \"./middleware\";\nexport { DEFAULT_SERVER_ERROR_MESSAGE } from \"./utils\";\nexport {\n\tActionBindArgsValidationError,\n\tActionMetadataValidationError,\n\tActionOutputDataValidationError,\n\tActionValidationError,\n\tflattenValidationErrors,\n\tformatValidationErrors,\n\treturnValidationErrors,\n} from \"./validation-errors\";\n\nexport type * from \"./index.types\";\nexport type * from \"./validation-errors.types\";\n\n/**\n * Create a new safe action client.\n * Note: this client only works with Zod as the validation library.\n * @param createOpts Initialization options\n *\n * {@link https://next-safe-action.dev/docs/define-actions/create-the-client#initialization-options See docs for more information}\n */\nexport const createSafeActionClient = <\n\tODVES extends DVES | undefined = undefined,\n\tServerError = string,\n\tMetadataSchema extends StandardSchemaV1 | undefined = undefined,\n>(\n\tcreateOpts?: CreateClientOpts<ODVES, ServerError, MetadataSchema>\n) => {\n\t// If `handleServerError` is provided, use it, otherwise default to log to console and generic error message.\n\tconst handleServerError: HandleServerErrorFn<ServerError, MetadataSchema> =\n\t\tcreateOpts?.handleServerError ||\n\t\t((e) => {\n\t\t\tconsole.error(\"Action error:\", e.message);\n\t\t\treturn DEFAULT_SERVER_ERROR_MESSAGE as ServerError;\n\t\t});\n\n\treturn new SafeActionClient({\n\t\tmiddlewareFns: [async ({ next }) => next({ ctx: {} })],\n\t\thandleServerError,\n\t\tinputSchemaFn: undefined,\n\t\tbindArgsSchemas: [],\n\t\toutputSchema: undefined,\n\t\tctxType: {},\n\t\tmetadataSchema: (createOpts?.defineMetadataSchema?.() ?? undefined) as MetadataSchema,\n\t\tmetadata: undefined as InferOutputOrDefault<MetadataSchema, undefined>,\n\t\tdefaultValidationErrorsShape: (createOpts?.defaultValidationErrorsShape ?? \"formatted\") as ODVES,\n\t\tthrowValidationErrors: Boolean(createOpts?.throwValidationErrors),\n\t\thandleValidationErrorsShape: async (ve) =>\n\t\t\tcreateOpts?.defaultValidationErrorsShape === \"flattened\"\n\t\t\t\t? flattenValidationErrors(ve)\n\t\t\t\t: formatValidationErrors(ve),\n\t});\n};\n","'use server';\n\nimport { PlaywrightPdfService } from '@ahmedrowaihi/pdf-forge-printer';\nimport { z } from 'zod';\nimport { getAssetRegistry } from '../utils/asset-registry';\nimport { getTemplatePathFromSlug } from './get-template-path-from-slug';\nimport { renderTemplateByPath } from './render-template-by-path';\nimport { baseActionClient } from './safe-action';\n\nconst pdfService = new PlaywrightPdfService();\n\n/**\n * Process HTML to replace relative asset URLs with base64 data URIs using asset registry\n *\n * Performance: Uses in-memory cache (zero file I/O after first scan)\n * Strategy: Multiple simple regex passes (faster than complex combined pattern)\n *\n * Why regex over AST?\n * - Regex: ~1-5ms for 200KB HTML (simple string ops)\n * - AST: ~25-80ms (parse + traverse + serialize overhead)\n * - HTML is well-formed from React, so regex is safe and faster\n */\nfunction embedAssetsInHtml(\n html: string,\n assetRegistry: Map<string, string>,\n): string {\n const getBase64 = (url: string): string | undefined => {\n return (\n assetRegistry.get(url) ||\n assetRegistry.get(`/${url}`) ||\n assetRegistry.get(url.slice(1))\n );\n };\n\n const shouldSkip = (url: string): boolean => {\n return (\n url.startsWith('data:') ||\n url.startsWith('http://') ||\n url.startsWith('https://') ||\n url.startsWith('#') ||\n url.startsWith('mailto:') ||\n url.startsWith('tel:')\n );\n };\n\n let processedHtml = html;\n\n // Pattern 1: CSS url() - matches url('/fonts/...') or url(\"/fonts/...\")\n processedHtml = processedHtml.replace(\n /url\\((['\"]?)([^'\")]+)\\1\\)/gi,\n (match: string, quote: string, url: string) => {\n if (shouldSkip(url)) return match;\n const base64 = getBase64(url);\n return base64 ? `url(${quote}${base64}${quote})` : match;\n },\n );\n\n // Pattern 2: src attribute - matches src=\"/fonts/...\" or src='/fonts/...'\n processedHtml = processedHtml.replace(\n /src\\s*=\\s*(['\"])([^'\"]+)\\1/gi,\n (match: string, quote: string, url: string) => {\n if (shouldSkip(url)) return match;\n const base64 = getBase64(url);\n return base64 ? `src=${quote}${base64}${quote}` : match;\n },\n );\n\n // Pattern 3: href attribute - matches href=\"/fonts/...\" or href='/fonts/...'\n processedHtml = processedHtml.replace(\n /href\\s*=\\s*(['\"])([^'\"]+)\\1/gi,\n (match: string, quote: string, url: string) => {\n if (shouldSkip(url)) return match;\n const base64 = getBase64(url);\n return base64 ? `href=${quote}${base64}${quote}` : match;\n },\n );\n\n return processedHtml;\n}\n\n/**\n * Export a single template as a PDF or HTML file.\n * Renders the template on the server and bundles assets automatically.\n */\nexport const exportSingleTemplate = baseActionClient\n .metadata({\n actionName: 'exportSingleTemplate',\n })\n .inputSchema(\n z.object({\n templateSlug: z.string(),\n format: z.enum(['html', 'pdf', 'screenshot']).default('html'),\n darkMode: z.boolean().optional(),\n }),\n )\n .action(async ({ parsedInput }) => {\n try {\n const templatePath = await getTemplatePathFromSlug(\n parsedInput.templateSlug,\n );\n\n const renderingResult = await renderTemplateByPath(templatePath);\n if ('error' in renderingResult) {\n throw new Error(\n `Failed to render template: ${renderingResult.error.message}`,\n );\n }\n\n let html = renderingResult.markup;\n\n if (parsedInput.format !== 'html') {\n const assetRegistry = await getAssetRegistry(templatePath);\n html = embedAssetsInHtml(html, assetRegistry);\n }\n\n if (parsedInput.format === 'html') {\n return {\n name: renderingResult.basename,\n html,\n format: 'html' as const,\n status: 'succeeded' as const,\n };\n }\n\n let buffer: Uint8Array;\n let mimeType: string;\n\n if (parsedInput.format === 'pdf') {\n buffer = await pdfService.render({\n html,\n outputType: 'pdf',\n darkMode: parsedInput.darkMode,\n });\n mimeType = 'application/pdf';\n } else {\n buffer = await pdfService.render({\n html,\n outputType: 'screenshot',\n darkMode: parsedInput.darkMode,\n sharpResizeOptions: {\n width: 2480,\n height: 3508,\n fit: 'cover',\n position: 'center',\n kernel: 'lanczos3' as const,\n withoutEnlargement: false,\n },\n });\n mimeType = 'image/png';\n }\n\n const base64 = Buffer.from(buffer).toString('base64');\n\n return {\n name: renderingResult.basename,\n data: base64,\n format: parsedInput.format,\n mimeType,\n status: 'succeeded' as const,\n };\n } catch (error) {\n console.error('Template export error:', error);\n throw new Error(\n `Failed to export template. ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n });\n","export {getTemplatesDirectoryMetadataAction as '78771297828582a56297020d3b0622a57014c4c245'} from 'ACTIONS_MODULE0'\nexport {getTemplatePathFromSlug as '7f8c9ac338dae58e3fe310463dbb8aaf915448f2b0'} from 'ACTIONS_MODULE1'\nexport {renderTemplateByPath as '60774bc609cd1ab3ab60ed72f9d448a7b1d402ed26'} from 'ACTIONS_MODULE2'\nexport {getTemplatePathFromSlug as '7f8c9ac338dae58e3fe310463dbb8aaf915448f2b0'} from 'ACTIONS_MODULE1'\nexport {renderTemplateByPath as '60774bc609cd1ab3ab60ed72f9d448a7b1d402ed26'} from 'ACTIONS_MODULE2'\nexport {exportSingleTemplate as '7f0543ce0ca69bb7dfeb468ba3f59d4368a5c2f77f'} from 'ACTIONS_MODULE3'\n"],"names":["launchOptions: Parameters<typeof chromium.launch>[0]","browser: Browser | null","defaultContextOptions: RenderContextOptions","mergedContextOptions: RenderContextOptions","playwrightContextOptions: BrowserContextOptions","mergedScreenshotOptions: RenderScreenshotOptions","playwrightScreenshotOptions: PageScreenshotOptions","defaultPdfOptions: RenderPdfOptions","mergedPdfOptions: RenderPdfOptions","playwrightPdfOptions: PDFOptions","err: unknown","error: unknown","error: HTTPAccessFallbackError","ObjectType","REACT_POSTPONE_TYPE: symbol","error: any","error: Error","#frameworkError","schema: StandardSchemaV1<unknown, Output>","value: unknown","segment: PropertyKey | StandardSchemaV1.PathSegment","issue: IssueWithUnionErrors","issues: readonly IssueWithUnionErrors[]","ve: any","validationErrors: ValidationErrors<S>","validationErrors: CVE","overriddenErrorMessage?: string","validationErrors: unknown[]","schema: S","validationErrors: ValidationErrors<AS>","validationErrors: VE","flattened: FlattenedValidationErrors<VE>","validationErrors: ValidationErrors<MDS>","validationErrors: ValidationErrors<DS>","args: SafeActionClientArgs<ServerError, ODVES, MetadataSchema, MD, true, Ctx, ISF, IS, OS, BAS, CVE>","currentCtx: object","middlewareResult: MiddlewareResult<ServerError, object>","prevResult: PrevResult","parsedInputDatas: any[]","scfArgs: Parameters<StateServerCodeFn<ServerError, MD, Ctx, IS, BAS, CVE, Data>>","e: unknown","callbackPromises: (Promise<unknown> | undefined)[]","actionResult: SafeActionResult<ServerError, IS, CVE, Data>","args: SafeActionClientArgs<ServerError, ODVES, MetadataSchema, MD, MDProvided, Ctx, ISF, IS, OS, BAS, CVE>","#args","middlewareFn: MiddlewareFn<ServerError, MD, Ctx, Ctx & NextCtx>","data: MD","inputSchema: OIS","utils?: {\n\t\t\thandleValidationErrorsShape?: HandleValidationErrorsShapeFn<AIS, BAS, MD, Ctx, OCVE>;\n\t\t}","bindArgsSchemas: OBAS","dataSchema: OOS","serverCodeFn: ServerCodeFn<MD, Ctx, IS, BAS, Data>","utils?: SafeActionUtils<ServerError, MD, Ctx, IS, BAS, CVE, Data>","serverCodeFn: StateServerCodeFn<ServerError, MD, Ctx, IS, BAS, CVE, Data>","middlewareFn: MiddlewareFn<\n\t\t\t\tBaseData extends { serverError: infer SE } ? SE : any,\n\t\t\t\tBaseData extends { metadata: infer MD } ? MD : any,\n\t\t\t\tBaseData extends { ctx: infer Ctx extends object } ? Ctx : object,\n\t\t\t\tNextCtx\n\t\t\t>","createOpts?: CreateClientOpts<ODVES, ServerError, MetadataSchema>","handleServerError: HandleServerErrorFn<ServerError, MetadataSchema>"],"mappings":"sUAOA,IAAa,EAAb,MACE,AAD8C,MACxC,CAAA,CAAuB,EAM7B,IAAI,CAAA,CAAuB,CACzB,QAAQ,GAAA,CAAI,CAAA,cAAA,EAAiB,EAAA,CAAA,CAAU,CAGzC,KAAK,CAAA,CAAuB,CAC1B,QAAQ,IAAA,CAAK,CAAA,cAAA,EAAiB,EAAA,CAAA,CAAU,CAG1C,MAAM,CAAA,CAAiB,CAAA,CAAuB,CAC5C,QAAQ,KAAA,CAAM,CAAA,cAAA,EAAiB,EAAA,CAAA,CAAW,KC6C9C,CD7CoD,cC6CrC,EACb,CAAA,CACA,CAAA,EACiB,AAOjB,OAAO,MAAA,CAAA,EAAM,EAAA,OAAA,EAAM,GAChB,MAAA,CAAO,EADqB,CANO,CACpC,MAAO,KACP,OAAQ,WACR,kBAAkB,EACnB,CAGyC,CACvC,QAAA,EAAU,CAGf,IAAa,EAAb,MAAkC,AAGhC,YAAY,EAAoB,IAAI,CAAe,CAAE,CACnD,IAAA,CAAK,MAAA,CAAS,EAGhB,MAAc,eAAkC,CAC9C,IAAMA,EAAuD,CAC3D,UAAU,EACV,KAAM,CACJ,eACA,2BACA,yBACA,0BACA,gDAEA,qDACD,CACF,CAED,GAAI,QAAQ,GAAA,CAAI,wBAAA,CACd,GAAI,CACF,MAAA,CAAA,EAAM,EAAA,MAAA,EAAO,QAAQ,GAAA,CAAI,wBAAA,CAAyB,CAClD,EAAc,cAAA,CAAiB,QAAQ,GAAA,CAAI,wBAAA,CAC3C,IAAA,CAAK,MAAA,CAAO,KAAA,CACV,CAAA,0BAAA,EAA6B,QAAQ,GAAA,CAAI,wBAAA,CAAA,CAAA,CAC1C,MACK,CACN,IAAA,CAAK,MAAA,CAAO,IAAA,CACV,CAAA,uCAAA,EAA0C,QAAQ,GAAA,CAAI,wBAAA,CAAyB,oCAAA,CAAA,CAChF,CAIL,OAAO,EAAA,QAAA,CAAS,MAAA,CAAO,GAGzB,MAAM,KAHiC,EAG1B,CAAA,CASW,CACtB,IAAIC,EAA0B,KAE9B,GAAI,CACF,EAAU,MAAM,IAAA,CAAK,aAAA,EAAe,CAEpC,IAAMC,EAA8C,CAClD,YAAa,EAAM,QAAA,CAAW,OAAS,QACvC,OAAQ,QACR,cAAe,SACf,SAAU,CAAE,MA3EH,CA2EU,GAAU,OA1EnB,CA0E2B,IAAW,CAChD,SAAU,GACV,UAAU,EACV,kBAAmB,EACnB,WAAW,EACZ,CAEKC,EAA6C,CACjD,GAAG,CAAA,CACH,GAAG,EAAM,cAAA,CACT,SACE,EAAM,cAAA,EAAgB,UAAY,EAAsB,QAAA,CAC3D,CAEKC,EAAkD,CACtD,YAAa,EAAqB,WAAA,CAClC,OAAQ,EAAqB,MAAA,CAC7B,cAAe,EAAqB,aAAA,CACpC,SAAU,EAAqB,QAAA,CAC/B,SAAU,EAAqB,QAAA,CAC/B,SAAU,EAAqB,QAAA,CAC/B,kBAAmB,EAAqB,iBAAA,CACxC,UAAW,EAAqB,SAAA,CACjC,CAIK,EAAO,MAAA,CAFG,MAAM,EAAQ,UAAA,CAAW,EAAA,CAAyB,CAEvC,OAAA,EAAS,CAsCpC,GApCA,EAAK,EAAA,CAAG,UAAA,AAAY,GAClB,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAA,cAAA,EAAiB,EAAI,IAAA,EAAM,CAAA,CAAA,CAAG,CACjD,CACD,EAAK,EAAA,CAAG,gBAAA,AAAkB,IACxB,IAAA,CAAK,GAD+B,GAC/B,CAAO,KAAA,CACV,CAAA,yCAAA,EAA4C,EAAQ,GAAA,EAAK,CAAC,GAAA,EAAK,EAAQ,OAAA,EAAS,EAAE,UAAA,CAAA,CACnF,EACD,CAEE,EAAM,GAAA,EAAK,AACb,MAAM,EAAK,IAAA,CAAK,EAAM,GAAA,CAAK,CACzB,UAAW,OACX,QAAS,IACV,CAAC,CACF,MAAM,EAAK,gBAAA,CAAiB,cAAe,CAAE,QAAS,GAAA,CAAO,CAAC,EACrD,EAAM,IAAA,EAAM,CACrB,MAAM,EAAK,UAAA,CAAW,EAAM,IAAA,CAAM,CAChC,UAAW,OACX,QAAS,IACV,CAAC,CACF,MAAM,EAAK,gBAAA,CAAiB,cAAe,CAAE,QAAS,GAAA,CAAO,CAAC,EAG5D,EAAM,QAAA,CACR,CAAA,MAAM,EAAK,QAAA,CAAA,KACT,CADwB,QACf,eAAA,CAAgB,SAAA,CAAU,GAAA,CAAI,OAAO,CAC9C,SAAS,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,OAAO,EACnC,CAGqB,AAArB,MACF,IADQ,UAAA,EACR,MAAM,EAAK,YAAA,CAAa,CAAE,MAAO,OAAA,CAAS,CAAC,CAG7C,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAA,gCAAA,EAAmC,EAAM,UAAA,CAAW,GAAA,CAAA,CAAK,CAEhD,eAArB,EAAM,UAAA,CAA6B,CAUrC,IAAMC,EAAmD,CARvD,UAAU,EACV,KAAM,MACN,MAAO,MACP,WAAY,WACZ,MAAO,OACP,gBAAgB,EAKhB,GAAG,EAAM,iBAAA,CACV,CAEKC,EAAqD,CACzD,SAAU,EAAwB,QAAA,CAClC,KAAM,EAAwB,IAAA,CAC9B,QAAS,EAAwB,OAAA,CACjC,MAAO,EAAwB,KAAA,CAC/B,WAAY,EAAwB,UAAA,CACpC,MAAO,EAAwB,KAAA,CAC/B,eAAgB,EAAwB,cAAA,CACxC,KAAM,EAAwB,IAAA,CAC/B,CAEK,EAAmB,MAAM,EAAK,UAAA,CAClC,GAGF,GAAI,EAAM,kBAAA,CAAoB,CAF7B,AAGC,IAAM,EAAiB,MAAM,EAC3B,OAAO,IAAA,CAAK,GACZ,EAAM,YADuB,MACvB,CACP,CACD,OAAO,IAAI,WAAW,GAGxB,OAAO,IAAI,CAH4B,UAGjB,GAGxB,IAAMC,EAAsC,CAC1C,OAAQ,AAJ+B,KAKvC,iBAAiB,EACjB,mBAAmB,EACnB,oBAAqB,GACrB,QAAS,GACT,MAAO,EACP,OAAQ,CACN,IAAK,MACL,MAAO,MACP,OAAQ,MACR,KAAM,MACP,CACF,CAEKC,EAAqC,CACzC,GAAG,CAAA,CACH,GAAG,EAAM,UAAA,CACT,OAAQ,EAAM,UAAA,EAAY,QAAU,EAAkB,MAAA,CACvD,CAEKC,EAAmC,CACvC,OAAQ,EAAiB,MAAA,CACzB,MAAO,EAAiB,KAAA,CACxB,OAAQ,EAAiB,MAAA,CACzB,gBAAiB,EAAiB,eAAA,CAClC,kBAAmB,EAAiB,iBAAA,CACpC,oBAAqB,EAAiB,mBAAA,CACtC,eAAgB,EAAiB,cAAA,CACjC,eAAgB,EAAiB,cAAA,CACjC,QAAS,EAAiB,OAAA,CAC1B,MAAO,EAAiB,KAAA,CACxB,OAAQ,EAAiB,MAAA,CAC1B,CAEK,EAAY,MAAM,EAAK,GAAA,CAAI,GACjC,OAAO,IAAI,OAD2C,IAChC,SACf,CADyB,CAClB,CAUd,MATA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,oBAAqB,GACnC,GADyC,UACxB,OAAS,EAAM,OAAA,CAAQ,QAAA,CAAS,UAAU,EAAE,CAC/D,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,6BAA6B,CAC/C,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,wCAAwC,CAC1D,IAAA,CAAK,MAAA,CAAO,KAAA,CACV,sDACD,CACD,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,iCAAiC,EAE/C,SACE,CACJ,GAAS,KAAA,CAAM,EAAQ,KAAA,EAAO,uFCvSxC,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAqBA,IAAM,EAAqB,IAAI,IAK/B,eAAe,EACb,CAAW,CACX,EAAkB,CAAG,EAErB,IAAM,EAAQ,IAAI,IAElB,GAAI,CAGF,IAAK,IAAM,IAFK,KAEI,EAFE,EAAA,OAAE,CAAC,OAAO,CAAC,EAAK,CAAE,eAAe,CAAK,EAAA,EAE/B,CAC3B,IAAM,EAAW,EAAA,OAAI,CAAC,IAAI,CAAC,EAAK,EAAM,IAAI,EACpC,EAAe,EAAA,OAAI,CAAC,QAAQ,CAAC,EAAS,GAE5C,GAAI,EAAM,WAAW,GAEnB,CAFuB,GAElB,GAAM,CAAC,EAAS,EAAQ,EADZ,EACgB,KADV,EAAuB,EACH,AADa,EAAA,EAEtD,EAAM,GAAG,CAAC,EAAS,QAGrB,EAAM,GAAG,CAAC,EAAc,EAE5B,CACF,CAAE,KAAM,CAER,CAEA,OAAO,CACT,CAKA,eAAe,EACb,CAAgB,CAChB,CAAW,EAEX,IAAM,EAAQ,MAAM,EAAA,OAAE,CAAC,IAAI,CAAC,GAEtB,EAAS,CADA,MAAM,EAAA,OAAE,CAAC,QAAQ,CAAC,EAAA,EACX,QAAQ,CAAC,UAEzB,EAAM,EAAA,OAAI,CAAC,OAAO,CAAC,GAAK,WAAW,GAkBzC,MAAO,CAAE,OAFO,CAAC,AAEA,KAFK,EAFL,AAEO,CAfkB,CACxC,SAAU,aACV,QAAS,YACT,OAAQ,WACR,OAAQ,WACR,OAAQ,gCACR,OAAQ,gBACR,OAAQ,YACR,OAAQ,aACR,QAAS,aACT,OAAQ,YACR,QAAS,aACX,CAC0B,CAAC,EAAI,EAAI,2BAEF,QAAQ,EAAE,EAAA,CAAQ,CAEzB,MAAO,EAAM,OAAO,AAAC,CACjD,CAQO,eAAe,EACpB,CAAoB,EAEpB,IAAM,EAAS,EAAmB,GAAG,CAAC,GACtC,GAAI,EAAQ,CACV,IAAM,EAAS,IAAI,IACnB,IAAK,GAAM,CAAC,EAAK,EAAM,GAAI,EACzB,EAAO,GAAG,AADuB,CACtB,EAAK,EAAM,MAAM,EAE9B,OAAO,CACT,CAEA,IAAM,EAAc,EAAA,OAAI,CAAC,OAAO,CAAC,GAC3B,EAAY,EAAA,OAAI,CAAC,IAAI,CAAC,EAAa,UAEnC,EAAW,IAAI,IAErB,GAAI,CACF,MAAM,EAAA,OAAE,CAAC,MAAM,CAAC,EAClB,CAAE,KAAM,CAEN,OADA,EAAmB,GAAG,CAAC,EAAc,GAC9B,IAAI,GACb,CAIA,IAAK,GAAM,CAAC,EAAc,EAAa,GAFzB,CAE6B,KAFvB,EAAuB,EAAW,EAAA,EAEJ,CAChD,IAAM,EAAM,CAAC,CAAC,EAAE,EAAa,OAAO,CAAC,MAAO,KAAA,CAAM,CAC5C,QAAE,CAAM,OAAE,CAAK,CAAE,CAAG,MAAM,EAAkB,EAAc,GAEhE,EAAS,GAAG,CAAC,EAAK,QAAE,QAAQ,CAAM,GAC9B,EAAI,UAAU,CAAC,MAAM,AACvB,EAAS,GAAG,CAAC,EAAI,KAAK,CAAC,GAAI,QAAE,QAAQ,CAAM,EAE/C,CAEA,EAAmB,GAAG,CAAC,EAAc,GAErC,IAAM,EAAS,IAAI,IACnB,IAAK,GAAM,CAAC,EAAK,EAAM,GAAI,EACzB,EAAO,GAAG,CAAC,CADwB,CACnB,EAAM,MAAM,EAE9B,OAAO,CACT,kEC1HgB,EAAoBC,CAAAA,EAAwC,MAC3E,AAAmB,UAAf,OAAO,GAA4B,OAAR,CAAgB,CAAA,CAAE,WAAY,GAbvC,AAauC,EAC5D,CAAA,OAAO,2BAGD,EAAI,MAAA,CGZZ,IHYuB,AGZjB,EAAgB,IAAI,IAAI,OAAO,MAAA,CAAO,AANd,CAC7B,UAAA,IACA,OAIiE,GAJtD,IACX,aAAc,GACd,IAiBD,SAAgB,EAA0BC,CAAAA,EAAkD,AAC3F,GAAqB,UAAjB,OAAO,GAAgC,OAAV,GAAkB,CAAA,CAAE,WAAY,CAAA,CAAA,EAAU,AAAwB,SAClG,QADiF,EAAM,MAAA,CAGxF,KAAM,CAAC,CAAA,MAEA,CAFQ,CAER,EAAW,CAAA,EAAA,KAFQ,CAER,CAAA,CAFW,IAEX,CAAA,CAFiB,OAAO,GAjBJ,GAiBU,IAAI,mDAM9C,EAA0B,CAAM,CAAI,AAAJ,CAAK,AAE3C,MAFmB,CAEnB,KAFyB,EACX,AACd,EADyB,GADO,GACP,CAAA,KAAA,CAAA,IAAA,CAAA,EAAA,MDCfE,MADP,MACOA,CAAY,CE3BvB,GAAM,CAAA,EAAsB,6HAkB5B,SAAA,EAAA,CAAA,EAKC,GAAqB,AAArB,UAAA,OAAM,GAAsB,AAAU,CAAvB,SAAuB,CAAA,CAAA,WAAA,CAAA,CAAA,EAAA,UAAA,OAAA,EAAA,MAAA,CACtC,OAAO,MACD,EAAA,EADY,AACE,MAAO,CAAA,KAAM,CAAA,EAAG,GAAG,AACjC,CADkC,AAClC,EAAS,EAAO,CADuB,AACpB,CAAA,AAAH,CAAM,AAEtB,CAFS,CAEI,AAH8B,EAGvB,IAAA,CAAA,CAAO,EAAA,CAAd,AAAc,GAAA,IAAA,CAAA,KASjC,EAAA,OANC,AAMD,EANe,EAAA,CAAA,CAAA,mBACb,SAAS,aAAa,SAAS,WAChC,OAAO,gBAAgB,YACvB,CAAC,CI1BD,GNsGmB,CAAA,CE5EZ,CI1BmB,CACzB,MAAA,EAAO,CJyBU,AIzBV,CAAA,GJ0BR,cAAc,CIZd,IAAA,EAA0B,AAAtB,MAAsB,IAEzB,INkGK,CAAC,GMpGqC,ANoGrC,EMpGuC,EAAE,cNoGzC,CAAA,CAAA,KAlBgB,EIjFR,EACf,AJgE8B,EM/D7B,OFdK,AEcL,CNyDM,CMzDN,EFdS,EJuEe,EMzDxB,IAAA,EAAA,CFdoB,CAAA,EETtB,AF6BO,CJmDmB,KAOE,WI1DrB,EJyEiB,EM/EtB,INgE0B,OAAA,GAAA,WAAA,GAAA,UAAA,OAAA,EAAA,MAAA,EIpEFH,KAAc,8BEnBfC,EAAgC,CAAA,KFKtC,EELsC,EFIa,CACvC,CJ2EL,EAAA,IKhF1B,ACAyD,CFKlB,GJ4FhB,KI5FwB,AJ4FxB,CAAA,CI5F0B,YAAY,QAAQ,OAAO,IAAI,WAAW,SAC1F,QAAO,0GCfT,EAAMG,ELwGqC,MAAA,CAAA,2EM/Fe,IAS7C,iBAAA,AAcV,GAdoC,AAAU,MAAJ,CAc1C,GAd8C,AAc9C,EAd8C,QAAA,GAAA,CAA4B,MAAM,KAAK,IACrF,QAAO,aNyHF,AMtGP,ENsGO,CAAA,AMtGH,ENsGG,WMrGC,EN4GU,CM5GLG,EN4GK,CAAA,MAAA,EAAA,GAAA,WAIR,EAAA,IAAA,MAAA,EAAA,GAAA,YM9GV,EAAA,IAAA,KAAA,GAAA,GAAA,uHNxCD,IAAM,EAAU,CACZ,aAAc,OAAO,8BAA8B,CACnD,KAAM,OAAO,uBAcjB,SAAS,EAAuB,CAAA,CAAc,CAAA,EAAU,AACpD,OAAO,CACV,CAMD,SAAS,EAAoB,CAAA,CAAQ,CAAA,EACjC,OAAA,EAAc,MAAA,CAAO,AAAC,GAAoB,KAAA,EAAU,EAApB,EACnC,CAoBD,QCjBgB,CDiBP,EAAc,CAAA,EAAQ,MAC3B,AAAsB,UAAlB,MClBoCL,CDkB7B,GAAkC,GClBmC,EDmB5E,CAAA,CAD8B,EACvB,EAEP,IE3BQ,EF2BF,OAAA,CAAQ,GACP,GE5BiBD,AF8BxB,CAHqB,CACrB,CAAA,IE5BgE,EF2HrD,CAAA,QAAe,AAIvB,QAAA,CAAA,OAAA,SAAA,CAAA,QAAA,CAAA,IAAA,CAAA,IAAA,OAAA,sGAQX,CAAA,EAAwB,GAAQ,CAAvB,IAAuB,CAAA,CAAO,MAAM,GAArB,MAAqB,CAAA,QAAA,CAAA,IAAA,CAAA,MAGrC,CAAA,EAAM,IADV,CACuB,CAAE,KADpB,GACoB,AADd,CACc,MADP,QAAQ,EAOtB,EAlHS,AA4GY,GADQ,EAAE,EA3Gf,AA4GK,CEzIP,AF8Bd,CAAA,OAEkB,IAClB,AE7BqB,CF6BrB,CE7BqB,AF+BrB,EE9BD,CAAC,UF8BkB,CE9BF,GF+BT,AE/BY,AF+BnB,CAAA,CAEG,EARH,CASP,CA+BD,CIjEE,QAAA,EJkE2B,CAAA,EACzB,IAAI,EAAe,EACnB,CIzDS,CJ0DG,AAFiB,CIxDE,AJyDxB,CACiB,CAApB,CAAoB,AAAnB,CAF6B,CAEV,CAAA,CI1DO,CAClC,EJyDe,CAF6B,EIvD5C,QAAA,CAAA,AJuDuD,GAG5C,MAAA,CAEQ,CAAA,GAAG,IAAA,QAAA,CAAA,MACK,QACqB,OAAA,CKtGjC,ALsGmD,EKpGjE,CLoGsD,AKpGtD,KAAA,GAFyBI,CAEzB,ELsGsB,IKxGwB,ELwGlB,CACF,IADW,EACX,CAAO,CACP,MAAA,KAAA,CACA,MADsB,WAGzB,IAAA,IAAA,EAAA,IAAA,CAAA,MAEG,EMvGnB,ANuGyB,CMvGP,CNuGO,AMvGP,EAAA,CAAA,CAAA,CAAA,OAAA,QAAA,CAAA,GNwGC,QACH,EMtGjB,KNuGqB,CAEhB,KAAA,CAAA,EMxGS,AN0GjB,IM3GqBC,EN2GrB,EAAA,GM3GmD,EN2GnD,AACJ,CAED,CAAM,AMpGH,GNwGH,AM3Ga,EAUV,ANtBiB,AACF,EAAQ,GMqBlBC,CNiGC,QArHR,AADyB,CAyBtBJ,GAMD,IAAe,EAAa,AMpBQ,ENoBN,CAAA,CAN7BA,CAM+B,AANpBA,CMd8B,CNcnB,CAMvB,EANuB,AMduB,CNcd,CAAA,CAAA,CAAK,GAAd,GACtBA,CEnCC,CFmCUA,CEnCV,CFmCqB,MAAA,CAAY,CAAA,CAAA,CAAK,AAAjB,AAAiB,IMfkC,KNgBzEA,CMhB+E,ANgB/EA,CAAWA,EAAW,EMhB8D,GNgB9D,CMfvB,ANekC,EAAA,CAAK,CAAhB,GEpC1B,CIqBU,GNgBNA,CAAAA,CAAWA,EAAW,GAAA,CAAS,CAAA,CAAA,CAAK,GAAd,GACtBA,CAAAA,CAAWA,EAAW,GAAA,CAAS,CAAA,CAAA,CAAK,GAAd,IACtBA,CAAWA,EAAW,KAAA,CAAW,CAAA,CAAA,CAAK,CAAhB,QA6FtB,GAAA,EAAwB,CAAA,kBAAA,kBAAA,CA2G5B,EAAsB,CAAb,AACL,OAAO,AADoB,GAAZ,GA/DX,AA+Dc,CACX,GAjEG,EACF,GAAA,CAAmB,AAgEJ,CAhEI,AAgEF,CAhEU,CAC3B,AA+DkB,CAjEe,AAEjC,AA+DmB,EA7DvB,CA6D0B,CAjEuB,EAI7C,CAAA,AAJmB,CAIX,CAAA,EAJ4C,AAiEtB,EA7DtB,AAEJ,EAAA,IADJ,AACW,IANqD,CAtG5E,AA4GuB,EADJ,OA3GV,AAAQ,CAAA,EAAS,AACtB,IAAM,CA0GwB,CA1GjB,IAAI,CAAX,EA0GgC,CAzGtC,IAyG2C,AAzGtC,IAAM,EADL,GACe,EAKrB,IAAA,CAJS,AAIF,CGxEK,EAAA,CHoEG,GAAA,CAAO,CAAC,GAAG,OAAO,KAAK,OAAO,EAAE,GAAG,OAAO,sBAAsB,MAKlF,CALyF,AAAC,GAC/E,GAIX,EAJgB,CAwGM,GAxGF,AAwGE,EACP,EAzGS,CAyGT,EAAc,EAAA,EACd,GADc,AACd,IAAA,EAAY,GAAA,EIlKnB,KJkKmB,IAAA,CA5F3B,CItEQ,SAAA,OAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CJkKmB,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,EAAA,GACZ,EAAU,IAAV,EAAU,KAAA,CAAA,CAAA,SACb,EAAC,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,KAGF,EAEP,KAFc,GAEd,CACD,GAHsB,AAIzB,EAAA,CADU,CACV,EAAA,EAAA,mFAMD,KAAS,OAAA,EACL,IAAO,CADY,KACZ,CAAO,AACjB,EAF8B,IACP,eA0CvB,aAAA,4BACD,QAAS,GAAA,aAAgB,SAAS,SAtBlC,EAuBI,GAD4C,GACtC,CAvBD,GAMT,CAiBU,GAAQ,EAjBZ,GAAA,CAAiB,CAAA,AANA,CAOnB,CAgBuB,MAhBvB,AAP2B,GAuBK,CAhBhC,GAAc,CAAA,EAAA,IACd,SAeoD,IAfvC,AAIhB,SAAA,CADgB,AAChB,oBAgFA,SAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,kBQ1TY,EAAA,EAAA,EAAA,ACOP,CDPO,AAA+B,CCOnBQ,ADPmB,GCK3C,AAEuB,CAACA,AAFjB,CAEiBA,oHTyTzB,IAAA,EAAS,EAAA,EAAa,EAAA,EAAe,EAAM,AAAb,GAAa,AAArB,GAAqB,CAAA,AAAN,IACjC,GAAM,EAAS,CAAM,CAAA,CADkB,AACH,CAAA,GAArB,CAAkC,EACjD,EAAI,EADqD,GACrD,EAAW,EADiD,AACzC,EAClB,AADU,CACJ,CAKX,CACH,AARwE,KAO9D,EACV,cA6BG,CAAO,KAlCC,GA4BO,EAAQ,EAAA,EAAA,CADa,CA3BjB,AA4BI,CAAA,EAClB,CAMR,AANQ,EAFyC,CAOvC,EALI,AAKJ,CAjCC,IA0B8C,EA1BxC,KA0B+C,EAOtD,CAAA,EAP2D,KA1BrC,KAiCtB,CAAA,CAJC,CAID,EAAA,MACV,CAlCiD,CAkCjD,AALsB,KA7BiC,KA8B5C,EAIX,EAAA,EAAA,AAJiB,WA9B4D,IA8B7C,SA7BzB,CAiCP,EAAA,EAJ8C,GAI9C,AAjCc,GA6BsC,CAIpD,EAjCoB,CAiCpB,EAAA,cAAA,CAAA,CAJ0E,GA7BhC,OA8BnC,CAGP,GAAA,EAjCuD,AAiCvD,EAHc,MAAM,AA9B2C,OAAO,KAAK,CAiC3E,CAAA,QAH0C,IAG1C,CAMQ,CAAT,CAAS,GAT4C,CASlC,MATyC,EASjC,OAAO,EAAA,CAAA,GAAM,SAAA,CAAA,EAAA,EAAA,GAC9B,QAAS,MAAM,eAAe,KAcxC,AACI,IADK,CAdyC,AAexC,QAfgD,OAAO,KAAK,iBAe5D,EAAS,CAAM,AAAN,EADE,EAAQ,OAAO,EAEhC,EAAI,AAFkC,AAElC,MAD4C,CACjC,OADyC,CACjC,MADwC,IACxC,CAD6C,CAO7D,KAAA,IAAP,EALK,CAMR,EADU,AACV,GANc,OACH,IAKX,CAAA,MALsB,KAKtB,GAAA,EAAA,eAJgC,MAIhC,CAAA,SAJgD,EAIhD,CAJsD,EAAA,CAAA,UAAsB,UAAA,CAAA,CACrE,QAAO,EAAA,CAAA,GAAM,eAnDrB,MAAS,CAAA,AAmDkC,EAnDlC,CAAY,GAAe,IAAM,CAAb,CAAa,AAmDa,OAAO,iDQ7X9D,EAAa,CAAA,MAAU,CAACV,UAAmC,OAAA,EAAA,AAAiB,KAAA,IAAjB,GAAiB,EAAA,CAAA,aAAA,CAAA,SAAA,GAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,GAM/D,CRqUT,MAAM,QACN,AQtU0B,CRqUX,AQrUY,CRsUvB,EQtU0B,GRsU1B,AADiB,EACN,IAAA,AAAQ,AQtUgD,ECJlDU,CAAgC,CT2UhD,ES3UgD,AAIxD,AACA,CTsUc,AS1UV,ETwUmC,ASxU7B,AAGH,EANY,AAGT,CACT,GAEY,KAFL,CTuU2C,CS3UrB,GAItB,CAAM,GTuU6C,CS3UrB,KAIxB,CAJ8B,AAI9B,ATuUoD,AAGvD,ES1Ue,AAAK,EAAQ,CTuUgC,CSvUzC,CAAC,AAAM,GAGrC,CAH8C,AT0UxB,CSvUtB,GAHkD,CAAC,KT2UxC,CS3U8C,EAAE,AAG3D,EAGD,CTqUkB,CSrUL,CAAA,GANuD,CAAC,CAAC,MAAM,ET2U3C,OSrUI,CACpCC,GAAAA,EAEkB,GTkU8B,ESlU9B,ITkUoC,ASlUtD,GAEA,CAHI,AACEC,CAED,CAAA,EAAM,CAFK,CAAE,OAEE,EAAA,CAAA,ETgUwD,GShUhD,IAAA,GAAA,ETiUrB,ASjUqB,QTiUd,MAAM,OSjUQ,CAAA,SAAA,CAItB,CAAL,CAAa,ET6T4B,CS7TrC,CAAC,CAAa,ST6TmC,ES7TxB,GAAG,ET6T4B,AS7T5B,CAAA,SAAA,CAAA,GAC5B,CT8TF,MAAO,CS9TK,ET+Tf,CS/TkB,MT+TlB,EAAA,ES/T4B,AT+T5B,CS/T6B,CT+T7B,ES/TgC,EAW9B,CAXiC,EAW7B,AAIJ,CAJK,IAAI,CAIH,CAfoC,CAYhC,CAAT,AAAW,AAGF,CAAA,CAAA,CAAA,CAHL,AAGK,CAfwC,EAgBlD,EAhBqD,CAAC,AAgBtD,EAAA,EAAA,GAhB8D,WAgB9D,CAAA,WAAA,CAAA,EAAA,EAAA,UAKD,CAFA,EAAM,CAEA,EAAA,EAAe,AAFG,CAAZ,AAAO,IAAU,KAER,EAGrB,EAHqC,AAGjC,CALsC,AAKtC,CAHuC,EAGhC,IAAI,MAAM,UAClB,CAAA,EACA,AAAG,GAAA,EAAA,GAAgB,IACnB,EADuB,AACvB,CAD4B,EACnB,CAAC,GAAG,IAAI,GAAA,CAAA,CAAK,SAAS,CAAA,GAAA,EAAa,qBAAA,CAAA,WAAA,CAEvC,EAAH,AAAG,GAAA,IAAgB,IAAI,KAAK,KAAA,CAAA,WAAA,CAAA,GAAE,EAQrC,CAR2F,CAA7C,EAQjC,WAAA,CAR+C,CAQ/C,CAAb,CAAA,CAAA,EAAA,AACQ,IADqE,GACrE,CAAA,CATmE,AASnE,CAToE,AAQO,WAC3E,CAAA,AATiF,QASjF,CAAA,GACP,AAIA,IAAA,EAAA,MAJYC,kBAAuC,kLAkCpD,GAAA,CAAgB,KAAA,CAAA,SAAA,CAAA,CAAA,OAGdI,MAAAA,CAAAA,CAAWC,CAAAA,CACZ,GAAA,CAAM,GAAI,CAAA,GAAA,EAAA,EADiD,IACjD,CAAA,CACV,EAAA,EAD0C,KAC1C,CAAA,EAAA,OAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gDAMD,IAAgB,EAAA,EAAA,CAAA,CAAA,EAAA,CACf,CAAO,CAAA,CAAA,CADiEC,CACjE,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GACP,EAAA,CAAA,CAAA,CAF8F,CAE9F,0GAWD,GAAA,CAAgB,eAAA,CAAA,CAAA,EAAA,CAA0DA,CACzE,EAAMC,MAAAA,EAA2C,EAAA,CAAA,EAAA,AAChD,EAF8F,AAG9F,AACA,OAAA,CAFY,AAIb,CAJe,IACD,CAGT,AAHW,EAQb,IALQ,AAIL,CAJM,CAKC,IALI,IAKJ,EALU,CAIJ,CACM,EALE,AAU3B,IALG,CAA0D,CAAC,CAL5B,AAU3B,EAL0D,MALW,AAKL,CAKhE,AACP,MAN+E,OAM/E,CAAA,CAAA,IAXgG,CAAE,EAAC,CAClG,KAAI,QAAQ,aAAa,MAAM,QAAQ,MAAM,EAC5C,UAAU,aAAa,CAAC,GAAG,GAejB,EAAA,AAfuB,QAepC,MAAA,MACQ,EADqF,MAAM,QAC3F,AAEP,aAAYC,CAAAA,CAAyC,CAAA,CAAA,CACpD,KAAA,CAAM,GAAA,8CACN,IAAA,CAAK,OAAO,SAAA,CAAA,EACZ,CACA,CACD,EAAA,CAFM,OAF6G,MAInH,MAFyB,qHAQ1B,EACQ,AAAP,CADY,ACpCH,EAAO,GAD4B,CAA7B,CAA+B,IAC9B,KAAA,YACP,CAF6B,KDqCvC,ICnCU,KACD,EAAC,CAAC,EDkCmF,GClCnF,CAAa,CAAP,AAAO,CAAN,ADkCkF,KCjC3F,CADe,AACf,qBAAsB,YAAY,EAAE,0EACpC,IAAA,CAAA,IAAI,CAAA,mBAAsB,OAAO,EAChC,eAAA,CAAiB,CAAA,GAchB,EAAgB,CAFkB,CAXnC,AAWI,CAZuB,AAI3B,EAUmC,EAA9B,CAFK,MAEE,AAAuB,GACjC,EAde,AAaA,CAOhB,CATsB,IAGd,EACN,GAJ6B,IAItB,CAKF,CApB0B,AAoB1B,KAJL,EAKF,KADqB,CACrB,CAAA,CAAA,CAGD,EAJ4B,GAI5B,CAxBwD,AAwBxD,CAJiC,GAKjC,EAAC,CADM,AAER,SANiD,EAnB/C,AAmBiD,GAI7B,GAJmC,aAInB,GAvBd,CAuBmB,KAtBzC,CAsB+C,sFAQlD,IAAA,CAAM,CAAA,uBAEN,EAFiC,EAEjC,CAAA,GAFuC,EAElC,IAAI,IAAI,GAFuC,AAEpC,CAAA,CAAI,CAGnB,MAL4D,AAG5D,EAH8D,CAAC,CAa7D,CAAA,CAX8B,AAC1B,AAEF,CAAC,AAQG,CAb4D,AAa5D,CAb8D,EAa9D,AAb+D,GAE/B,EAatC,AAAM,EAAA,CAbqC,AAG5B,CAFG,EAYZ,AAAmB,KAT1B,MAHgC,AAYN,EAAA,EAAA,KAA0B,EATnC,EAWhB,CAAA,EAXqB,AAWrB,KAF+D,MAE/D,CAXiC,AASqC,AAErD,CAAA,KAXsB,IAarC,CAFkC,MAGlC,AAHwC,CAGxC,EAAA,GADa,CAIb,CANgD,CAGzB,EAGlB,EAAA,GALN,AAKM,GAJqB,EADtB,CACyB,GAAG,AACO,CAIvC,CAAU,CAAA,EAAK,AACd,CACF,CAAA,CAAA,CALI,EAGO,MAEX,CAAA,EACD,EANkB,AAMlB,CAAA,CATkC,CAWpC,EAAA,CAR0B,CAQ1B,CAGG,CAX0B,CAY7B,EAZgC,EAYhC,CAXO,CAAE,AAcV,CAHO,CAGH,CAAiB,CAlBkC,CAe5C,AAQX,IAAMO,EAAqF,CAAF,CAAE,KAJ1F,CAI0F,AALtE,CAKsE,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CARlD,CAWzC,EAAa,IAAL,EAAK,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,IAAA,CAAA,KAAA,MACZ,CAAA,EAAa,EAAiB,GAAG,CAAA,CAAG,CAAvB,AAAuB,CAAA,MACpC,CAAA,EAAsB,KAAA,CAAA,QAAiB,CACvC,EAAA,CADsB,CACT,CADgC,CAChC,EAAa,AADsB,GACnB,AADsB,AACtC,GAAmB,KAAA,CAAA,EAAA,GAChC,GAAA,CAAA,CAAuB,GAGvB,CAAA,EACA,CADK,CACK,GAAA,CAAV,AAAe,GACf,CALuC,CAKvC,EADU,MAHP,MAIH,CAAA,CAID,EAAI,EAAA,CARa,CAShB,IAAQ,CATc,AAStB,CAAQ,EAAO,AATU,CASZ,CAAc,CATC,AASb,AAAY,GARxB,CAAE,SAQsC,CAAA,EAAA,IAAW,CAAE,GAAA,EAGzD,GAAM,EAAO,IAAM,CAAN,CAAM,CAAA,MAAA,GAAa,CAAA,EAAG,AAAsB,EAAsB,EAAe,IAAnD,AAAgD,CAA/C,CAAiD,AAAC,EAG9F,CAGC,EANiD,AAG9C,CAH2E,AAA5B,AAMlD,CAAI,CAGJ,IATwD,AAG9C,CAIT,CAED,EAAA,CANe,AAQhB,CALgB,CAKZ,CAJI,IAAI,KAIR,EAAsB,EAAA,CAAA,AARO,CAQP,CAAO,EAChC,EADyB,KAJsB,IAJA,CAAC,IAS/B,KAAA,EAAU,EAAA,IAL0C,AAK1C,CAAA,EAAA,EAT2C,GAS3C,CAAA,EALqD,AAKrD,CATkD,AASlD,GAAA,EAAA,CAL4D,AAMvF,IAAA,EAGA,KAAM,IAHW,AAGX,EAAA,QAAA,CACN,KAAA,CAJkC,KAIlC,GAAiB,CACjB,EVaR,AUbQ,EAAiB,EVYf,GUbyB,EACH,AVahC,EUlBgE,CVkBhE,CAAA,gBUjBS,WVqCL,EAAA,KAAA,IUrC2B,MACtB,EVqCT,EADI,oFAOL,GAAS,GAAA,CAAA,CAAA,CAAA,EAAA,EAAc,CAAA,EAAQ,CAAA,KAAO,CAAA,KAAM,CAAA,CAAA,EAAA,IACxC,CAAM,EAAA,CAAA,CAAA,CAAA,EAAA,EAAiB,IAAM,IAAA,AAAe,EAAA,CAAA,EAAQ,CAAA,CAAS,CAAJ,IAAI,MAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAC7D,AAGA,CAHI,CAMJ,CAHI,IAGE,OAAO,EANM,EAGA,AAGN,EAAA,CAAc,MANG,EAC1B,AAE0B,EAC1B,IAEuB,CAAe,CAL/B,AAKkC,EAC7C,AAHW,GAGP,OAAA,CAAS,CAEL,AALe,IAKX,AAF2B,SAAS,EAC5C,CAJmC,EAKb,GADjB,EAJqC,EAIjC,CACa,EALyB,AAKV,IAAA,KADhB,AAC2B,GADxB,EAC6B,KAC7C,KAF4B,IAE5B,GAAA,EAEJ,MAJ+C,CAIxC,OAA4B,AAJoB,GAIb,CAAnC,EAAY,GAAA,IAJiD,KAIjD,CAAgB,AAAY,KAAA,EAAA,EAAA,YAAA,EAAA,UAClD,CAEL,GArCA,CACI,EADG,EAqCC,IApCJ,EAAuB,AAoC3B,GApC2B,CAAA,EACvB,OAAA,AADuB,EACP,EAAA,KAAA,EAAA,IACZ,CACA,EADG,CACA,EAAA,IAGN,CAHa,UUxBW,EVwBC,AUxBD,GAAA,IVwBQ,CUxBR,CAAA,GACxB,GVuBwC,GUvBxC,EAAA,EAAA,CVuBgD,CACxC,CUtBT,EAEA,GAAA,CVoBgB,CAAC,AUtBA,CVsBC,EUpBlB,CAAA,EVoBuB,EUnBxB,EAAoB,GVmBW,AUnBvBC,CAHwB,EAGZ,EVmBgB,GUnBhB,CAAA,GVmBuB,AUjBvC,EACH,CAAM,GAN0C,CAM1C,AVgB2C,EUtBE,AAM7C,CAIH,EAAa,AAVsC,IAMtD,GAIgB,CAAA,GVYiD,AUZjD,AAChB,EAAa,CAAP,CVW+D,CAAC,CAC7D,EUZE,EVYE,AUZA,CVYC,CAAC,AUb8B,IAChC,CVYO,AUZP,EAAA,KVYc,KAAM,OUZpB,CACb,EAAiB,CVW2B,IUX3B,EAMf,EVKkD,CAAC,AUXjB,CAAnB,CAMV,EACL,CACA,AVGwD,CUXhB,AAQvC,CACF,EAAA,CAFW,CAEX,GATiD,CAOjC,EAEhB,GVEwE,EUVxE,GAQA,EARK,CAQL,CACD,EVCqF,AUD/E,EAAA,CAAA,CAAA,AVCkF,CAAC,KUDnF,AVCwF,EUDxF,IAEN,AVDqG,EAAE,CAAC,CUCxG,EAAqB,EAXa,IAAI,AAWjB,CAAA,EAIrB,AAAM,CAJe,CAIf,GAA6B,CAArB,EAA2B,CAA3B,EAAA,EAAQ,EAAE,GAAG,AAAc,IAAV,EAAA,CAAU,CAAN,AAAM,MAAA,KAAA,CAAA,EACnC,EAAgB,GAAM,GAAA,EAAQ,CAAd,OACrB,KAAK,GAAA,GAEJ,EAAsB,CAAgB,CAAA,EAAA,CAAA,IAAS,AAFzB,CAMvB,CAJuB,EAIvB,EAED,CAR+B,CAQA,KAN+B,CAM/B,EAAA,AAAd,GANmD,GAMrC,AANwC,CAMxC,EAN2C,CAM3C,EAN8C,CAAE,CAMhD,CAAA,CAAA,GAC/B,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,MAAA,CAAA,IAAA,CACD,IAAA,EAAA,CAAA,CAAA,EAAA,CACD,GAAA,CAAA,CAAA,MAAA,CAGK,GAAA,EAAA,EAAwB,MAAA,CAAA,EAExBC,CAFwB,AAE+B,CAAA,EAAA,CAAA,EAAA,EAAA,MAAA,EAGzD,EAAsB,AAHiC,CAG1B,AAH4B,MAI5D,CAEE,IAAU,CAFK,CAEA,EAAA,CAAA,CAHQ,AAExB,AACgB,MAAA,CADT,CAEN,CAAK,CAAA,YAFgB,IAEhB,CAAA,MAAA,QAAA,OAAA,CACL,EAAA,GAAa,aAAa,GAAG,GAAG,KAAA,CAAA,EAAA,CAChC,YAAA,EAAuB,CAAA,CAAA,CAAA,CAAA,EAAgB,CACvC,QADgD,EAChC,WAD6C,AAC7C,EAAsB,IAD6B,EAC7B,CADgC,AAChC,CAAA,CAAkB,CAAA,AADiB,GAAG,CAAE,AACtB,CAAA,EAAA,CAAA,EAAsB,CAAA,EAAA,CAAM,AAErF,IAAA,EAED,SAAiB,EAChB,OAAO,CAAA,AACN,GAEA,EAFU,IArBZ,CAqBiB,CArBjB,AAoBoB,EAGL,EAvBf,CAAA,EAAA,KAAA,CAwBE,CACA,CAF0B,EAE1B,CAF6B,CAErB,AAAE,CAAA,CAFsB,IAEtB,IAAA,EAAA,EADa,CAEvB,GAAA,EAAgB,QAAA,EAFuB,KAED,CAAA,CAAA,EAFU,KAIjD,IAAA,EAAA,EAJ8D,AAEL,AAEzD,CAED,CAAM,CAAA,CAAA,CAAA,CAAQ,AANuD,CAQrE,CAFkB,CANsD,AAQlE,GARqE,GAAG,CAAE,GAQ1E,EAAsB,CANoD,CAMpD,CAAA,CAFO,AAEP,GAC5B,AAPsF,EAM1D,mBAC5B,EAAA,KAAA,CAAA,EAAA,CAAA,GAED,CAAMC,WAAAA,EAA+D,CAAF,CAAE,CAAA,CAAA,GAEjE,MAAO,eAAA,CAAiB,CAAA,MAAqB,CAAA,EAGhD,CACC,IAAA,CAAA,CADD,CACC,CAAA,GAAA,CACC,CAAA,CAID,EAAM,CAJA,CAIA,EAKN,EAAM,IAAI,GAAA,EAAA,QAAA,AAIV,CAZC,AAIA,CAaC,CAJF,EAJC,AAQQ,CAAA,CAAA,CAjBD,AAIA,AAaC,CAAiB,CAAA,CAAA,CAAA,GAjBX,AAIA,CASF,MAJK,AAQwB,CAAA,UAC3C,EALiC,GAK7B,CAAA,CARF,CANwC,AAJA,CAkB/B,GAGV,AAHU,CARH,EAWP,EAAA,CAAa,CARoC,CAMjD,AAfqD,EAJE,CAqB1C,IAjB+C,AAetD,CAEqB,GArBwC,AAqBxC,CAAA,AAAiB,IAAA,CAAA,CAXZ,CAV2C,CAqB/B,EAAA,EAFrB,CAnB0D,IAIC,IAiBtC,CAAA,CAXK,GAe/C,GAAA,AAA0B,MAzB2E,CACtG,EACA,AAuBC,EAfuE,AAevE,AApBE,CAoBe,MApBR,GAoBiB,EAAA,EAAA,CAAA,EAAA,KAAA,CAAA,CACzB,IAAA,CArB8B,AAqBvB,CAAA,KAAiB,CAAA,EAAS,EAAA,EACpC,EADoC,QACpC,AArBI,CAqBJ,CAAa,EAGd,GAAA,EAHqB,AAGJ,GAChB,GAAA,CADgB,AAEf,EADM,IACI,IAAA,AAL0B,CAKrB,CAAA,EADG,AACH,EAAA,MAAA,EACf,CACM,EADD,AACc,KAAA,EAAA,AACnB,EAAa,EADM,IACO,CAAA,CAAb,CAAgB,EAAG,AAChC,EAAA,EAAuB,YAAA,CAAA,CAAgB,CAAS,CAAa,MAAM,CAAnB,EAAsB,GAAG,GAAG,CAAE,CAC9E,EAAa,IAAiB,CAAA,EAAjB,AAAoB,EAInC,CAJsC,CAKtC,EAAiB,KAChB,EAAA,EACC,EAAe,AADT,IACI,AAAK,CAAA,GAEf,CAFe,CADC,AAGH,MAAa,EAAb,CAAgB,EAAA,CAAG,EAAA,EAAA,CAAA,CAAA,GAChC,EAAA,EAAuB,gBAAgB,EAAA,CAAA,EAAsB,EAAb,GAAa,CAAM,EAAG,CAAA,EAAG,AACzE,CACC,CACF,CAH6E,CAAE,CACvE,GAER,EAAA,CAIF,GAAA,EACC,EAAO,IAAA,EADS,AAEf,GAAA,EADD,CAAmB,CACR,KAAK,IAAA,EAAA,CACf,EAAK,EAAA,EAAA,EAAA,gBAAA,CACL,EAAa,MAAa,EAAb,CAAgB,GAAG,IAAA,CAAA,MAAA,QAAA,OAAA,CAChC,EAAA,aAAuB,cAAA,CAAA,CAAgB,CAAA,CACvC,GAAQ,EADwC,OACxC,EAAA,EAAA,CAAA,CADqD,AACrD,GAET,GAHoE,GAAG,GAAG,GAAG,CAAE,QAG/E,EAAA,MAAA,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA,GAAA,EAAA,CAEK,IAAA,EAEN,CAFc,AAEP,IAFW,IAEX,EAAA,QAAA,AACP,GAHmC,AAMtC,KAAA,CAEM,EAAA,GAON,EAAQ,EAAA,ED3UF,AC2Uc,AAAE,ED5UYhB,AC4UZ,KD3UU,MAAA,MC2UC,EAAA,AAAQ,CAAC,AD5UyB,CC4U3B,IAAE,GCvX3C,EAEE,GADDiB,MACC,EAAA,CD6X0B,EC7X1B,EF0C4E,ECmVlD,IAAW,IAAA,CAAM,EAAC,CAAC,GAAA,CAC9C,EAAA,iBAAA,CAAA,EAAA,CACD,YAAA,EAAA,EAAA,CAAA,CAAA,2EChZY,GAkBNC,CACL,OADa,GAlBf,MAAa,iBAYX,AAkCC,gCAnB0BC,SAAAA,CAAiE,CAAA,QAAA,CAC5F,CAAO,GAAI,EACP,GAAKD,SAAAA,EAAAA,CADmB,CACnBA,CAAAA,CAAAA,GACR,UAAe,CAAC,GAAG,KAAKA,EAAAA,EAAM,CAAA,CAAe,IAAA,CAAA,EAAa,GAAA,EAAA,CAAA,EAAA,CAAA,GAAA,EAAA,CAC1D,IAAS,CAAE,UAAA,EAAA,iBAAA,CAAA,EAAA,KAAA,CACX,yHASF,EAASE,KAAU,CAAA,EAClB,CAAO,IAAI,UAAA,EAAiB,IAAA,aAAA,CAAA,EAAA,KAAA,CACxB,IAEH,AAFQF,MAER,QAAA,CAAkB,EAAA,CAAA,GAClB,EAAA,KAAA,6CFqBK,CAAA,GAAA,IACP,CAFD,CAEajB,MAAAA,CAAAA,CAAAA,EAAAA,GAFsC,CAET,KAFe,MAEf,CAAA,MAAA,EAAA,EAAA,EAAA,KACxC,MAAM,uDAAuD,+BEb9D,CAaC,EAAO,EALPoB,AAKW,EACFH,UAAL,CALJI,EAKSJ,EADmB,EACnBA,CAFR,EAEQA,uBAAAA,GAAAA,sBAAAA,qBAER,GAAgB,YAAY,OAAO,GAAA,cAAiB,OAE3C,KAAA,CAEN,GAHA,CAGO,EAFY,CAEZ,IAAA,CAFkB,CAIzB,EALY,AAKA,EAJkBA,AAEX,MAFiB,CAIxB,IAFwB,GAExB,CACf,MAAA,EALwD,EAKnB,EAAA,YAAP,EAC7B,EAAA,EAEF,CAFOA,KAEP,CAFa,CAEb,gBAAA,CAAA,EAAA,gBAAA,uGA+CD,GAICO,IA9CD,CAAS,CAAK,IAAA,GAAA,EAAA,8FAQd,SAAgEF,GAAAA,EAAuB,EAAA,CAAA,CAAA,GACtF,CAAO,IAAI,gBAAiB,EAAA,MAAA,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA,GAAA,EAAA,CACxB,GAAKL,SAAAA,EAAAA,EAAAA,CAAAA,CAAAA,GACR,qBAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EACA,KAQD,EAAA,IAAA,CAAA,GAAA,UAR8B,AAQ9B,KARmCA,MAAM,oFAgB1C,MAA2CM,CAC1C,EAAO,EAEN,EAAc,AAFJ,IAEI,AAH4C,CAI1D,GAAA,EADc,OAFa,GAG3B,CACD,SAAA,EAAA,QAAA,4GAaAC,CAGA,KAAO,IAFPC,OACC,GACoB,KAAKR,MAAM,CAAC,OAAO,cAAc,MAAM,uBAmB5D,GAAA,EAAA,MAAA,GACD,CAAA,iCCnKD,IAAa,GAAA,IAAA,EAAmB,CAA4E,AAC3G,GAAA,EAAO,EACN,CAAA,CAF8B,AAE9B,CAAA,CASD,CATS,CACPU,YAQF,IAAA,CAFM,GAEN,EAAA,CAAA,CAAA,MADC,OACD,CAAA,EAAA,0BCQD,IAAa,GAAA,IAAA,EAAA,CAAyB,AAQrC,CAHAC,EAGA,CAAMC,GAAAA,EAAAA,CAAAA,CAGJ,KALE,EAKM,EAAA,CAFT,CAGC,CADc,KACP,KAHI,OAEoB,AACxB,CACP,CAFiC,CAInC,CAOC,CACA,KAZ0C,AAIpC,IAAI,CALT,AAaS,CAbR,AAaQ,CADO,AACP,CAAA,CAAA,CAAA,CACV,CAdQ,MAcR,GAT2B,CAS3B,EAAA,CACA,CAD+B,CAFsB,CAGrD,GAHyD,CAGzD,EAAA,CAAA,CACA,EAF2C,MACpB,MAKvB,EAL+B,CAElB,WAF8B,IAK3C,CAAA,CAN2E,AAM3E,CAJ6B,MAI7B,CAJoC,OACnC,CAFgE,EAKjE,CAAA,CACD,kBAJ+C,cAC1C,wBAAwB,GAAG,GAC3B,uBAAuB,GAAG,mXdrDhC,EAAA,EAAA,CAAA,CAAA,OAEO,IAAM,KAA0C,cAAvB,QAC9B,IACS,EAAA,CAAC,CAAC,MAAM,CAAC,CAAE,WAAY,EAAA,CAAC,CAAC,MAAM,EAAG,GAE3C,mBAAkB,EAAO,GAAF,EACrB,EAD8B,MACtB,KAAK,CAAC,CAAC,cAAc,EAAE,EAAQ,QAAQ,CAAC,UAAU,CAAA,CAAE,CAAE,GACvD,EAEX,weWwFO,KADG,IACH,AACC,CADG,AACH,QADW,AACF,EAAL,CAAJ,IAAS,AAER,KAAM,CAFkB,CAElB,CAEN,QAFiB,EAEb,EAAA,CAAA,CAFmB,IAEV,EAGb,KAFC,GAHoC,IAG9B,CAHmC,GAG/B,aAH+C,IASxD,AAAJ,CATiE,SAUhE,AAVyE,EAS1E,CAN2D,EAO1D,CADG,EACG,GAAA,OAAA,CAAA,EAAa,CAAA,EAAA,CAP6D,SAAS,AAOtE,CAAA,IAAA,EAP6E,AAO7E,CAClB,SAAa,GAAA,IAAA,EAAa,AAAM,GAAH,GAAG,KAAA,CAAA,EAAA,CAAA,IAAA,EAAA,OAAA,CAAA,QAChC,CAAA,QACA,KAAK,QADiB,gBAAgB,SAAS,aAAa,MAAM,GAAG,GAAG,GAAG,CAAE,oBInHtF,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,qDAEA,IAAM,EAAa,IAAI,EAAA,oBAAoB,CA2E9B,EAAuB,EAAA,gBAAgB,CACjD,QAAQ,CAAC,CACR,WAAY,sBACd,GACC,WAAW,CACV,EAAA,CAAC,CAAC,MAAM,CAAC,CACP,aAAc,EAAA,CAAC,CAAC,MAAM,GACtB,OAAQ,EAAA,CAAC,CAAC,IAAI,CAAC,CAAC,OAAQ,MAAO,aAAa,EAAE,OAAO,CAAC,QACtD,SAAU,EAAA,CAAC,CAAC,OAAO,GAAG,QAAQ,EAChC,IAED,MAAM,CAAC,MAAO,aAAE,CAAW,CAAE,IAC5B,GAAI,CACF,IA2BI,EACA,EA5BE,EAAe,MAAM,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAChD,EAAY,YAAY,EAGpB,EAAkB,MAAM,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,GACnD,GAAI,UAAW,EACb,MAAM,AAAI,MACR,CAAC,EAF2B,yBAEA,EAAE,EAAgB,KAAK,CAAC,OAAO,CAAA,CAAE,EAIjE,IAAI,EAAO,EAAgB,MAAM,CAEjC,GAA2B,SAAvB,EAAY,MAAM,CAAa,OACjC,MA7EA,EA6EM,EAAgB,MAAM,CAAA,EAAA,EAAA,gBAAA,AAAgB,EAAC,GAxFnD,EAyF+B,EAzFnB,AAGN,EAFN,AAEkB,AAAC,GAEf,EAAc,GAAG,CAAC,IAJY,AAK9B,EAAc,GAAG,CAAC,CAAC,CAAC,EAAE,EAAA,CAAK,GAmFM,AAlFjC,EAAc,GAAG,CAAC,EAAI,KAAK,CAAC,MAIb,AAAC,GAEhB,EAAI,UAAU,CAAC,UACf,EAAI,UAAU,CAAC,YACf,EAAI,UAAU,CAAC,aACf,EAAI,UAAU,CAAC,MACf,EAAI,UAAU,CAAC,YACf,EAAI,UAAU,CAAC,QAuEb,EAnEc,AAGJ,AAUA,AAUA,EApBc,GAgEjB,IAhEwB,CACnC,8BACA,CAAC,EAAe,EAAe,KAC7B,GAAI,EAAW,GAAM,OAAO,EAC5B,IAAM,EAAS,EAAU,GACzB,OAAO,EAAS,CAAC,IAAI,EAAE,EAAA,EAAQ,EAAA,EAAS,EAAM,CAAC,CAAC,CAAG,CACrD,GAI4B,OAAO,CACnC,+BACA,CAAC,EAAe,EAAe,KAC7B,GAAI,EAAW,GAAM,OAAO,EAC5B,IAAM,EAAS,EAAU,GACzB,OAAO,EAAS,CAAC,IAAI,EAAE,EAAA,EAAQ,EAAA,EAAS,EAAA,CAAO,CAAG,CACpD,GAI4B,OAAO,CACnC,gCACA,CAAC,EAAe,EAAe,KAC7B,GAAI,EAAW,GAAM,OAAO,EAC5B,IAAM,EAAS,EAAU,GACzB,OAAO,EAAS,CAAC,KAAK,EAAE,EAAA,EAAQ,EAAA,EAAS,EAAA,CAAO,CAAG,CACrD,EAuCE,CAEA,GAA2B,QAAQ,CAA/B,EAAY,MAAM,CACpB,MAAO,CACL,KAAM,EAAgB,QAAQ,MAC9B,EACA,OAAQ,OACR,OAAQ,WACV,EAMyB,OAAO,CAA9B,EAAY,MAAM,EACpB,EAAS,MAAM,EAAW,MAAM,CAAC,MAC/B,EACA,WAAY,MACZ,SAAU,EAAY,QAAQ,AAChC,GACA,EAAW,oBAEX,EAAS,MAAM,EAAW,MAAM,CAAC,MAC/B,EACA,WAAY,aACZ,SAAU,EAAY,QAAQ,CAC9B,mBAAoB,CAClB,MAAO,KACP,OAAQ,KACR,IAAK,QACL,SAAU,SACV,OAAQ,WACR,oBAAoB,CACtB,CACF,GACA,EAAW,aAGb,IAAM,EAAS,OAAO,IAAI,CAAC,GAAQ,QAAQ,CAAC,UAE5C,MAAO,CACL,KAAM,EAAgB,QAAQ,CAC9B,KAAM,EACN,OAAQ,EAAY,MAAM,UAC1B,EACA,OAAQ,WACV,CACF,CAAE,MAAO,EAAO,CAEd,MADA,QAAQ,KAAK,CAAC,yBAA0B,GAClC,AAAI,MACR,CAAC,2BAA2B,EAAE,aAAiB,MAAQ,EAAM,OAAO,CAAG,gBAAA,CAAiB,CAE5F,CACF,kNCtKF,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAGA,IAAA,EAAA,EAAA,CAAA,CAAA","ignoreList":[3,5,6,7,8,9,10,11,12,13,14,15,16,17,18]}
@@ -1,4 +1,4 @@
1
1
  module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},70722,(a,b,c)=>{b.exports=a.x("tty",()=>require("tty"))},27699,(a,b,c)=>{b.exports=a.x("events",()=>require("events"))},88947,(a,b,c)=>{b.exports=a.x("stream",()=>require("stream"))},874,(a,b,c)=>{b.exports=a.x("buffer",()=>require("buffer"))},20279,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(21739)},2054,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},94107,a=>{"use strict";var b=a.i(20279),c=a.i(83990),d=a.i(2054);let e=async(a,b=!1,d=!1,e=a)=>(0,c.getTemplatesDirectoryMetadata)(a,b,d,e);(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"78b81665c2f52df9f88fe99a7a917efcffc2994c9c",null),a.s(["getTemplatesDirectoryMetadataAction",0,e])}];
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},94107,a=>{"use strict";var b=a.i(20279),c=a.i(83990),d=a.i(2054);let e=async(a,b=!1,d=!1,e=a)=>(0,c.getTemplatesDirectoryMetadata)(a,b,d,e);(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"78771297828582a56297020d3b0622a57014c4c245",null),a.s(["getTemplatesDirectoryMetadataAction",0,e])}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__cb0c7b1a._.js.map