remix-validated-form 4.6.4 → 4.6.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. package/.turbo/turbo-build.log +12 -12
  2. package/.turbo/turbo-typecheck.log +1 -0
  3. package/README.md +10 -9
  4. package/browser/ValidatedForm.d.ts +3 -3
  5. package/browser/hooks.d.ts +1 -1
  6. package/browser/internal/formContext.d.ts +3 -3
  7. package/browser/internal/getInputProps.d.ts +7 -7
  8. package/browser/internal/hydratable.d.ts +1 -1
  9. package/browser/internal/state/createFormStore.d.ts +3 -3
  10. package/browser/internal/state/fieldArray.d.ts +5 -5
  11. package/browser/internal/state/types.d.ts +1 -1
  12. package/browser/server.d.ts +1 -1
  13. package/browser/unreleased/formStateHooks.d.ts +2 -2
  14. package/browser/userFacingFormContext.d.ts +1 -1
  15. package/browser/validation/types.d.ts +15 -15
  16. package/dist/index.cjs.js +1928 -0
  17. package/dist/index.cjs.js.map +1 -0
  18. package/dist/index.d.ts +337 -0
  19. package/dist/{remix-validated-form.es.js → index.esm.js} +573 -869
  20. package/dist/index.esm.js.map +1 -0
  21. package/package.json +14 -11
  22. package/src/ValidatedForm.tsx +19 -6
  23. package/src/hooks.ts +1 -1
  24. package/src/internal/formContext.ts +2 -2
  25. package/src/server.ts +1 -1
  26. package/stats.html +1 -1
  27. package/tsup.config.ts +3 -0
  28. package/dist/remix-validated-form.cjs.js +0 -27
  29. package/dist/remix-validated-form.cjs.js.map +0 -1
  30. package/dist/remix-validated-form.es.js.map +0 -1
  31. package/dist/remix-validated-form.umd.js +0 -27
  32. package/dist/remix-validated-form.umd.js.map +0 -1
  33. package/dist/types/ValidatedForm.d.ts +0 -50
  34. package/dist/types/hooks.d.ts +0 -67
  35. package/dist/types/index.d.ts +0 -7
  36. package/dist/types/internal/MultiValueMap.d.ts +0 -11
  37. package/dist/types/internal/constants.d.ts +0 -3
  38. package/dist/types/internal/flatten.d.ts +0 -1
  39. package/dist/types/internal/formContext.d.ts +0 -12
  40. package/dist/types/internal/getInputProps.d.ts +0 -29
  41. package/dist/types/internal/hooks.d.ts +0 -35
  42. package/dist/types/internal/hydratable.d.ts +0 -14
  43. package/dist/types/internal/logic/getCheckboxChecked.d.ts +0 -1
  44. package/dist/types/internal/logic/getRadioChecked.d.ts +0 -1
  45. package/dist/types/internal/logic/requestSubmit.d.ts +0 -5
  46. package/dist/types/internal/state/arrayUtil.d.ts +0 -12
  47. package/dist/types/internal/state/controlledFields.d.ts +0 -7
  48. package/dist/types/internal/state/createFormStore.d.ts +0 -79
  49. package/dist/types/internal/state/fieldArray.d.ts +0 -28
  50. package/dist/types/internal/state/storeHooks.d.ts +0 -3
  51. package/dist/types/internal/state/types.d.ts +0 -1
  52. package/dist/types/internal/submissionCallbacks.d.ts +0 -1
  53. package/dist/types/internal/util.d.ts +0 -5
  54. package/dist/types/server.d.ts +0 -21
  55. package/dist/types/unreleased/formStateHooks.d.ts +0 -64
  56. package/dist/types/userFacingFormContext.d.ts +0 -85
  57. package/dist/types/validation/createValidator.d.ts +0 -7
  58. package/dist/types/validation/types.d.ts +0 -58
  59. package/vite.config.ts +0 -7
package/tsup.config.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { config } from "tsup-config";
2
+
3
+ export default config;
@@ -1,27 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var p=require("react"),K=require("@remix-run/react");function Ht(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var P=Ht(p),Lt=globalThis&&globalThis.__spreadArray||function(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,u;n<o;n++)(u||!(n in t))&&(u||(u=Array.prototype.slice.call(t,0,n)),u[n]=t[n]);return e.concat(u||Array.prototype.slice.call(t))};function Q(e,t,r){var n=e.length-t.length,o=Array.from(t);if(n===0)return e.apply(void 0,o);if(n===1){var u=function(s){return e.apply(void 0,Lt([s],o,!1))};return(r||e.lazy)&&(u.lazy=r||e.lazy,u.lazyArgs=t),u}throw new Error("Wrong number of arguments")}function zt(e,t,r){return e.reduce(function(n,o,u){var s=r?t(o,u,e):t(o);return s.hasMany===!0?n.push.apply(n,s.next):s.hasNext===!0&&n.push(s.next),n},[])}var Qe=Array.isArray,Ze=Object.keys,Bt=Object.prototype.hasOwnProperty;function Ee(){return Q(qt,arguments)}function qt(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){var r=Qe(e),n=Qe(t),o=void 0,u=void 0,s=void 0;if(r&&n){if(u=e.length,u!==t.length)return!1;for(o=u;o--!==0;)if(!Ee(e[o],t[o]))return!1;return!0}if(r!==n)return!1;var i=e instanceof Date,a=t instanceof Date;if(i!==a)return!1;if(i&&a)return e.getTime()===t.getTime();var l=e instanceof RegExp,c=t instanceof RegExp;if(l!==c)return!1;if(l&&c)return e.toString()===t.toString();var v=Ze(e);if(u=v.length,u!==Ze(t).length)return!1;for(o=u;o--!==0;)if(!Bt.call(t,v[o]))return!1;for(o=u;o--!==0;)if(s=v[o],!Ee(e[s],t[s]))return!1;return!0}return e!==e&&t!==t}function Kt(){return Q(Wt,arguments)}function Wt(e,t){var r=new Set(t);return Object.entries(e).reduce(function(n,o){var u=o[0],s=o[1];return r.has(u)||(n[u]=s),n},{})}function Gt(){return Q(Jt,arguments)}function Jt(e,t){return Object.keys(e).reduce(function(r,n){return t(e[n],n)||(r[n]=e[n]),r},{})}function Xt(){return Q(Qt,arguments)}function Qt(e,t,r){for(var n=e,o=0,u=t;o<u.length;o++){var s=u[o];if(n==null||n[s]==null)return r;n=n[s]}return n}function W(){return Q(Zt,arguments,W.lazy)}function Zt(e){return zt(e,W.lazy())}(function(e){function t(){var r=new Set;return function(n){return r.has(n)?{done:!1,hasNext:!1}:(r.add(n),{done:!1,hasNext:!0,next:n})}}e.lazy=t})(W||(W={}));const Yt=(e="on",t)=>{if(Array.isArray(t))return t.some(r=>r===!0||r===e);if(typeof t=="boolean")return t;if(typeof t=="string")return t===e},Nt=(e="on",t)=>{if(typeof t=="string")return t===e},er={initial:"onBlur",whenTouched:"onChange",whenSubmitted:"onChange"},tr=({clearError:e,validate:t,defaultValue:r,touched:n,setTouched:o,hasBeenSubmitted:u,validationBehavior:s,name:i})=>{const a={...er,...s};return(l={})=>{const c=u?a.whenSubmitted:n?a.whenTouched:a.initial,v={...l,onChange:(...h)=>{var f;return c==="onChange"?t():e(),(f=l==null?void 0:l.onChange)==null?void 0:f.call(l,...h)},onBlur:(...h)=>{var f;return c==="onBlur"&&t(),o(!0),(f=l==null?void 0:l.onBlur)==null?void 0:f.call(l,...h)},name:i};return l.type==="checkbox"?v.defaultChecked=Yt(l.value,r):l.type==="radio"?v.defaultChecked=Nt(l.value,r):l.value===void 0&&(v.defaultValue=r),Gt(v,h=>h===void 0)}},Oe=e=>{if(e.length===0)return[];const t=e.match(/^\[(.+?)\](.*)$/)||e.match(/^\.?([^\.\[\]]+)(.*)$/);if(t){const[r,n,o]=t;return[/^\d+$/.test(n)?Number(n):n,...Oe(o)]}return[e]};function $(e,t,r){return rr(e,Oe(t),r)}function rr(e,t,r){var s;const n=t.slice(0,-1),o=t[t.length-1];let u=e;for(let i=0;i<n.length;i++){const a=n[i];if(u[a]===void 0){const l=(s=n[i+1])!=null?s:o;u[a]=typeof l=="number"?[]:{}}u=u[a]}return u[o]=r,e}const _=(e,t)=>Xt(e,Oe(t),void 0);var nr=!0,de="Invariant failed";function j(e,t){if(!e){if(nr)throw new Error(de);var r=typeof t=="function"?t():t,n=r?de+": "+r:de;throw new Error(n)}}const q="__rvfInternalFormId",or="__rvfInternalFormDefaults",ct=e=>`${or}_${e}`,ft=p.createContext(null),Ce=e=>({hydrateTo:()=>e,map:t=>Ce(t(e))}),Ae=()=>({hydrateTo:e=>e,map:()=>Ae()}),ur=(e,t)=>t?Ae():Ce(e),z={serverData:Ce,hydratedData:Ae,from:ur},Ye=e=>{let t;const r=new Set,n=(a,l)=>{const c=typeof a=="function"?a(t):a;if(c!==t){const v=t;t=l?c:Object.assign({},t,c),r.forEach(h=>h(t,v))}},o=()=>t,i={setState:n,getState:o,subscribe:a=>(r.add(a),()=>r.delete(a)),destroy:()=>r.clear()};return t=e(n,o,i),i},sr=e=>e?Ye(e):Ye;var dt={exports:{}},mt={},vt={exports:{}},ht={};/**
2
- * @license React
3
- * use-sync-external-store-shim.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */var x=P.default;function ir(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var lr=typeof Object.is=="function"?Object.is:ir,ar=x.useState,cr=x.useEffect,fr=x.useLayoutEffect,dr=x.useDebugValue;function mr(e,t){var r=t(),n=ar({inst:{value:r,getSnapshot:t}}),o=n[0].inst,u=n[1];return fr(function(){o.value=r,o.getSnapshot=t,me(o)&&u({inst:o})},[e,r,t]),cr(function(){return me(o)&&u({inst:o}),e(function(){me(o)&&u({inst:o})})},[e]),dr(r),r}function me(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!lr(e,r)}catch{return!0}}function vr(e,t){return t()}var hr=typeof window=="undefined"||typeof window.document=="undefined"||typeof window.document.createElement=="undefined"?vr:mr;ht.useSyncExternalStore=x.useSyncExternalStore!==void 0?x.useSyncExternalStore:hr;vt.exports=ht;/**
10
- * @license React
11
- * use-sync-external-store-shim/with-selector.production.min.js
12
- *
13
- * Copyright (c) Facebook, Inc. and its affiliates.
14
- *
15
- * This source code is licensed under the MIT license found in the
16
- * LICENSE file in the root directory of this source tree.
17
- */var ae=P.default,pr=vt.exports;function yr(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Fr=typeof Object.is=="function"?Object.is:yr,br=pr.useSyncExternalStore,Er=ae.useRef,gr=ae.useEffect,Sr=ae.useMemo,Vr=ae.useDebugValue;mt.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var u=Er(null);if(u.current===null){var s={hasValue:!1,value:null};u.current=s}else s=u.current;u=Sr(function(){function a(f){if(!l){if(l=!0,c=f,f=n(f),o!==void 0&&s.hasValue){var F=s.value;if(o(F,f))return v=F}return v=f}if(F=v,Fr(c,f))return F;var y=n(f);return o!==void 0&&o(F,y)?F:(c=f,v=y)}var l=!1,c,v,h=r===void 0?null:r;return[function(){return a(t())},h===null?void 0:function(){return a(h())}]},[t,r,n,o]);var i=br(e,u[0],u[1]);return gr(function(){s.hasValue=!0,s.value=i},[i]),Vr(i),i};dt.exports=mt;function Pr(e,t=e.getState,r){const n=dt.exports.useSyncExternalStoreWithSelector(e.subscribe,e.getState,e.getServerState||e.getState,t,r);return p.useDebugValue(n),n}const Ne=e=>{const t=typeof e=="function"?sr(e):e,r=(n,o)=>Pr(t,n,o);return Object.assign(r,t),r},wr=e=>e?Ne(e):Ne;var Ir=wr;function w(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];throw Error("[Immer] minified error nr: "+e+(r.length?" "+r.map(function(o){return"'"+o+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function H(e){return!!e&&!!e[S]}function U(e){return!!e&&(function(t){if(!t||typeof t!="object")return!1;var r=Object.getPrototypeOf(t);if(r===null)return!0;var n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return n===Object||typeof n=="function"&&Function.toString.call(n)===Rr}(e)||Array.isArray(e)||!!e[it]||!!e.constructor[it]||Te(e)||je(e))}function G(e,t,r){r===void 0&&(r=!1),L(e)===0?(r?Object.keys:Ue)(e).forEach(function(n){r&&typeof n=="symbol"||t(n,e[n],e)}):e.forEach(function(n,o){return t(o,n,e)})}function L(e){var t=e[S];return t?t.i>3?t.i-4:t.i:Array.isArray(e)?1:Te(e)?2:je(e)?3:0}function ge(e,t){return L(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Dr(e,t){return L(e)===2?e.get(t):e[t]}function pt(e,t,r){var n=L(e);n===2?e.set(t,r):n===3?(e.delete(t),e.add(r)):e[t]=r}function Or(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function Te(e){return jr&&e instanceof Map}function je(e){return kr&&e instanceof Set}function M(e){return e.o||e.t}function ke(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=Mr(e);delete t[S];for(var r=Ue(t),n=0;n<r.length;n++){var o=r[n],u=t[o];u.writable===!1&&(u.writable=!0,u.configurable=!0),(u.get||u.set)&&(t[o]={configurable:!0,writable:!0,enumerable:u.enumerable,value:e[o]})}return Object.create(Object.getPrototypeOf(e),t)}function Re(e,t){return t===void 0&&(t=!1),Me(e)||H(e)||!U(e)||(L(e)>1&&(e.set=e.add=e.clear=e.delete=Cr),Object.freeze(e),t&&G(e,function(r,n){return Re(n,!0)},!0)),e}function Cr(){w(2)}function Me(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function D(e){var t=_r[e];return t||w(18,e),t}function et(){return J}function ve(e,t){t&&(D("Patches"),e.u=[],e.s=[],e.v=t)}function se(e){Se(e),e.p.forEach(Ar),e.p=null}function Se(e){e===J&&(J=e.l)}function tt(e){return J={p:[],l:J,h:e,m:!0,_:0}}function Ar(e){var t=e[S];t.i===0||t.i===1?t.j():t.O=!0}function he(e,t){t._=t.p.length;var r=t.p[0],n=e!==void 0&&e!==r;return t.h.g||D("ES5").S(t,e,n),n?(r[S].P&&(se(t),w(4)),U(e)&&(e=ie(t,e),t.l||le(t,e)),t.u&&D("Patches").M(r[S].t,e,t.u,t.s)):e=ie(t,r,[]),se(t),t.u&&t.v(t.u,t.s),e!==yt?e:void 0}function ie(e,t,r){if(Me(t))return t;var n=t[S];if(!n)return G(t,function(u,s){return rt(e,n,t,u,s,r)},!0),t;if(n.A!==e)return t;if(!n.P)return le(e,n.t,!0),n.t;if(!n.I){n.I=!0,n.A._--;var o=n.i===4||n.i===5?n.o=ke(n.k):n.o;G(n.i===3?new Set(o):o,function(u,s){return rt(e,n,o,u,s,r)}),le(e,o,!1),r&&e.u&&D("Patches").R(n,r,e.u,e.s)}return n.o}function rt(e,t,r,n,o,u){if(H(o)){var s=ie(e,o,u&&t&&t.i!==3&&!ge(t.D,n)?u.concat(n):void 0);if(pt(r,n,s),!H(s))return;e.m=!1}if(U(o)&&!Me(o)){if(!e.h.F&&e._<1)return;ie(e,o),t&&t.A.l||le(e,o)}}function le(e,t,r){r===void 0&&(r=!1),e.h.F&&e.m&&Re(t,r)}function pe(e,t){var r=e[S];return(r?M(r):e)[t]}function nt(e,t){if(t in e)for(var r=Object.getPrototypeOf(e);r;){var n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Object.getPrototypeOf(r)}}function Ve(e){e.P||(e.P=!0,e.l&&Ve(e.l))}function ye(e){e.o||(e.o=ke(e.t))}function Pe(e,t,r){var n=Te(t)?D("MapSet").N(t,r):je(t)?D("MapSet").T(t,r):e.g?function(o,u){var s=Array.isArray(o),i={i:s?1:0,A:u?u.A:et(),P:!1,I:!1,D:{},l:u,t:o,k:null,o:null,j:null,C:!1},a=i,l=we;s&&(a=[i],l=B);var c=Proxy.revocable(a,l),v=c.revoke,h=c.proxy;return i.k=h,i.j=v,h}(t,r):D("ES5").J(t,r);return(r?r.A:et()).p.push(n),n}function Tr(e){return H(e)||w(22,e),function t(r){if(!U(r))return r;var n,o=r[S],u=L(r);if(o){if(!o.P&&(o.i<4||!D("ES5").K(o)))return o.t;o.I=!0,n=ot(r,u),o.I=!1}else n=ot(r,u);return G(n,function(s,i){o&&Dr(o.t,s)===i||pt(n,s,t(i))}),u===3?new Set(n):n}(e)}function ot(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return ke(e)}var ut,J,_e=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",jr=typeof Map!="undefined",kr=typeof Set!="undefined",st=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",yt=_e?Symbol.for("immer-nothing"):((ut={})["immer-nothing"]=!0,ut),it=_e?Symbol.for("immer-draftable"):"__$immer_draftable",S=_e?Symbol.for("immer-state"):"__$immer_state",Rr=""+Object.prototype.constructor,Ue=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Mr=Object.getOwnPropertyDescriptors||function(e){var t={};return Ue(e).forEach(function(r){t[r]=Object.getOwnPropertyDescriptor(e,r)}),t},_r={},we={get:function(e,t){if(t===S)return e;var r=M(e);if(!ge(r,t))return function(o,u,s){var i,a=nt(u,s);return a?"value"in a?a.value:(i=a.get)===null||i===void 0?void 0:i.call(o.k):void 0}(e,r,t);var n=r[t];return e.I||!U(n)?n:n===pe(e.t,t)?(ye(e),e.o[t]=Pe(e.A.h,n,e)):n},has:function(e,t){return t in M(e)},ownKeys:function(e){return Reflect.ownKeys(M(e))},set:function(e,t,r){var n=nt(M(e),t);if(n!=null&&n.set)return n.set.call(e.k,r),!0;if(!e.P){var o=pe(M(e),t),u=o==null?void 0:o[S];if(u&&u.t===r)return e.o[t]=r,e.D[t]=!1,!0;if(Or(r,o)&&(r!==void 0||ge(e.t,t)))return!0;ye(e),Ve(e)}return e.o[t]===r&&typeof r!="number"&&(r!==void 0||t in e.o)||(e.o[t]=r,e.D[t]=!0,!0)},deleteProperty:function(e,t){return pe(e.t,t)!==void 0||t in e.t?(e.D[t]=!1,ye(e),Ve(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var r=M(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty:function(){w(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){w(12)}},B={};G(we,function(e,t){B[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),B.deleteProperty=function(e,t){return B.set.call(this,e,t,void 0)},B.set=function(e,t,r){return we.set.call(this,e[0],t,r,e[0])};var Ur=function(){function e(r){var n=this;this.g=st,this.F=!0,this.produce=function(o,u,s){if(typeof o=="function"&&typeof u!="function"){var i=u;u=o;var a=n;return function(y){var A=this;y===void 0&&(y=i);for(var T=arguments.length,C=Array(T>1?T-1:0),k=1;k<T;k++)C[k-1]=arguments[k];return a.produce(y,function(ce){var R;return(R=u).call.apply(R,[A,ce].concat(C))})}}var l;if(typeof u!="function"&&w(6),s!==void 0&&typeof s!="function"&&w(7),U(o)){var c=tt(n),v=Pe(n,o,void 0),h=!0;try{l=u(v),h=!1}finally{h?se(c):Se(c)}return typeof Promise!="undefined"&&l instanceof Promise?l.then(function(y){return ve(c,s),he(y,c)},function(y){throw se(c),y}):(ve(c,s),he(l,c))}if(!o||typeof o!="object"){if((l=u(o))===void 0&&(l=o),l===yt&&(l=void 0),n.F&&Re(l,!0),s){var f=[],F=[];D("Patches").M(o,l,f,F),s(f,F)}return l}w(21,o)},this.produceWithPatches=function(o,u){if(typeof o=="function")return function(l){for(var c=arguments.length,v=Array(c>1?c-1:0),h=1;h<c;h++)v[h-1]=arguments[h];return n.produceWithPatches(l,function(f){return o.apply(void 0,[f].concat(v))})};var s,i,a=n.produce(o,u,function(l,c){s=l,i=c});return typeof Promise!="undefined"&&a instanceof Promise?a.then(function(l){return[l,s,i]}):[a,s,i]},typeof(r==null?void 0:r.useProxies)=="boolean"&&this.setUseProxies(r.useProxies),typeof(r==null?void 0:r.autoFreeze)=="boolean"&&this.setAutoFreeze(r.autoFreeze)}var t=e.prototype;return t.createDraft=function(r){U(r)||w(8),H(r)&&(r=Tr(r));var n=tt(this),o=Pe(this,r,void 0);return o[S].C=!0,Se(n),o},t.finishDraft=function(r,n){var o=r&&r[S],u=o.A;return ve(u,n),he(void 0,u)},t.setAutoFreeze=function(r){this.F=r},t.setUseProxies=function(r){r&&!st&&w(20),this.g=r},t.applyPatches=function(r,n){var o;for(o=n.length-1;o>=0;o--){var u=n[o];if(u.path.length===0&&u.op==="replace"){r=u.value;break}}o>-1&&(n=n.slice(o+1));var s=D("Patches").$;return H(r)?s(r,n):this.produce(r,function(i){return s(i,n)})},e}(),V=new Ur,$r=V.produce;V.produceWithPatches.bind(V);V.setAutoFreeze.bind(V);V.setUseProxies.bind(V);V.applyPatches.bind(V);V.createDraft.bind(V);V.finishDraft.bind(V);const xr=e=>(t,r,n)=>(n.setState=(o,u,...s)=>{const i=typeof o=="function"?$r(o):o;return t(i,u,...s)},e(n.setState,r,n)),Hr=xr,Lr=(e,t)=>{if(typeof Object.getPrototypeOf(e).requestSubmit=="function"){e.requestSubmit(t);return}if(t){zr(e,t),t.click();return}const r=document.createElement("input");r.type="submit",r.hidden=!0,e.appendChild(r),r.click(),e.removeChild(r)};function zr(e,t){t instanceof HTMLElement||Fe(TypeError,"parameter 1 is not of type 'HTMLElement'"),"type"in t&&t.type==="submit"||Fe(TypeError,"The specified element is not a submit button"),"form"in t&&t.form===e||Fe(DOMException,"The specified element is not owned by this form element","NotFoundError")}function Fe(e,t,r){throw new e("Failed to execute 'requestSubmit' on 'HTMLFormElement': "+t+".",r)}const E=(e,t)=>{const r=_(e,t);if(r==null){const n=[];return $(e,t,n),n}return j(Array.isArray(r),`FieldArray: defaultValue value for ${t} must be an array, null, or undefined`),r},te=(e,t,r)=>{const n=e[t],o=e[r],u=t in e,s=r in e;u?e[r]=n:delete e[r],s?e[t]=o:delete e[t]};function X(e,t,r,n){return e.length<t&&n&&(e.length=t),arguments.length===4?e.splice(t,r,n):e.splice(t,r)}const re=(e,t,r)=>{const[n]=X(e,t,1);X(e,r,0,n)},ne=(e,t,r)=>{X(e,t,0,r)},oe=(e,t)=>{X(e,t,1)},ue=(e,t,r)=>{X(e,t,1,r)},g=(e,t,r)=>{const n=new Set,o=[];for(const[s,i]of Object.entries(t))s.startsWith(e)&&s!==e&&(n.add(s),$(o,s.substring(e.length),i));r(o);for(const s of n)delete t[s];const u=Ie(o);for(const s of u){const i=_(o,s);i!==void 0&&(t[`${e}${s}`]=i)}},Ie=(e,t="")=>Array.isArray(e)?e.flatMap((r,n)=>Ie(r,`${t}[${n}]`)):typeof e=="object"?Object.keys(e).flatMap(r=>Ie(e[r],`${t}.${r}`)):[t],b=()=>{},Br={isHydrated:!1,isSubmitting:!1,hasBeenSubmitted:!1,touchedFields:{},fieldErrors:{},formElement:null,isValid:()=>!0,startSubmit:b,endSubmit:b,setTouched:b,setFieldError:b,setFieldErrors:b,clearFieldError:b,currentDefaultValues:{},reset:()=>b,syncFormProps:b,setFormElement:b,validateField:async()=>null,validate:async()=>{throw new Error("Validate called before form was initialized.")},submit:async()=>{throw new Error("Submit called before form was initialized.")},resetFormElement:b,getValues:()=>new FormData,controlledFields:{values:{},refCounts:{},valueUpdatePromises:{},valueUpdateResolvers:{},register:b,unregister:b,setValue:b,getValue:b,kickoffValueUpdate:b,awaitValueUpdate:async()=>{throw new Error("AwaitValueUpdate called before form was initialized.")},array:{push:b,swap:b,move:b,insert:b,unshift:b,remove:b,pop:b,replace:b}}},qr=(e,t)=>({isHydrated:!1,isSubmitting:!1,hasBeenSubmitted:!1,touchedFields:{},fieldErrors:{},formElement:null,currentDefaultValues:{},isValid:()=>Object.keys(t().fieldErrors).length===0,startSubmit:()=>e(r=>{r.isSubmitting=!0,r.hasBeenSubmitted=!0}),endSubmit:()=>e(r=>{r.isSubmitting=!1}),setTouched:(r,n)=>e(o=>{o.touchedFields[r]=n}),setFieldError:(r,n)=>e(o=>{o.fieldErrors[r]=n}),setFieldErrors:r=>e(n=>{n.fieldErrors=r}),clearFieldError:r=>e(n=>{delete n.fieldErrors[r]}),reset:()=>e(r=>{var o,u;r.fieldErrors={},r.touchedFields={},r.hasBeenSubmitted=!1;const n=(u=(o=r.formProps)==null?void 0:o.defaultValues)!=null?u:{};r.controlledFields.values=n,r.currentDefaultValues=n}),syncFormProps:r=>e(n=>{n.isHydrated||(n.controlledFields.values=r.defaultValues,n.currentDefaultValues=r.defaultValues),n.formProps=r,n.isHydrated=!0}),setFormElement:r=>{t().formElement!==r&&e(n=>{n.formElement=r})},validateField:async r=>{var s,i,a;const n=t().formElement;j(n,"Cannot find reference to form. This is probably a bug in remix-validated-form.");const o=(s=t().formProps)==null?void 0:s.validator;j(o,"Cannot validator. This is probably a bug in remix-validated-form."),await((a=(i=t().controlledFields).awaitValueUpdate)==null?void 0:a.call(i,r));const{error:u}=await o.validateField(new FormData(n),r);return u?(t().setFieldError(r,u),u):(t().clearFieldError(r),null)},validate:async()=>{var u;const r=t().formElement;j(r,"Cannot find reference to form. This is probably a bug in remix-validated-form.");const n=(u=t().formProps)==null?void 0:u.validator;j(n,"Cannot validator. This is probably a bug in remix-validated-form.");const o=await n.validate(new FormData(r));return o.error&&t().setFieldErrors(o.error.fieldErrors),o},submit:()=>{const r=t().formElement;j(r,"Cannot find reference to form. This is probably a bug in remix-validated-form."),Lr(r)},getValues:()=>{var r;return new FormData((r=t().formElement)!=null?r:void 0)},resetFormElement:()=>{var r;return(r=t().formElement)==null?void 0:r.reset()},controlledFields:{values:{},refCounts:{},valueUpdatePromises:{},valueUpdateResolvers:{},register:r=>{e(n=>{var u;const o=(u=n.controlledFields.refCounts[r])!=null?u:0;n.controlledFields.refCounts[r]=o+1})},unregister:r=>{t()===null||t()===void 0||e(n=>{var s,i,a;const o=(s=n.controlledFields.refCounts[r])!=null?s:0;if(o>1){n.controlledFields.refCounts[r]=o-1;return}Object.keys(n.controlledFields.refCounts).some(l=>r.startsWith(l)&&l!==r)||($(n.controlledFields.values,r,_((i=n.formProps)==null?void 0:i.defaultValues,r)),$(n.currentDefaultValues,r,_((a=n.formProps)==null?void 0:a.defaultValues,r))),delete n.controlledFields.refCounts[r]})},getValue:r=>_(t().controlledFields.values,r),setValue:(r,n)=>{e(o=>{$(o.controlledFields.values,r,n)}),t().controlledFields.kickoffValueUpdate(r)},kickoffValueUpdate:r=>{const n=()=>e(o=>{delete o.controlledFields.valueUpdateResolvers[r],delete o.controlledFields.valueUpdatePromises[r]});e(o=>{const u=new Promise(s=>{o.controlledFields.valueUpdateResolvers[r]=s}).then(n);o.controlledFields.valueUpdatePromises[r]=u})},awaitValueUpdate:async r=>{await t().controlledFields.valueUpdatePromises[r]},array:{push:(r,n)=>{e(o=>{E(o.controlledFields.values,r).push(n),E(o.currentDefaultValues,r).push(n)}),t().controlledFields.kickoffValueUpdate(r)},swap:(r,n,o)=>{e(u=>{te(E(u.controlledFields.values,r),n,o),te(E(u.currentDefaultValues,r),n,o),g(r,u.touchedFields,s=>te(s,n,o)),g(r,u.fieldErrors,s=>te(s,n,o))}),t().controlledFields.kickoffValueUpdate(r)},move:(r,n,o)=>{e(u=>{re(E(u.controlledFields.values,r),n,o),re(E(u.currentDefaultValues,r),n,o),g(r,u.touchedFields,s=>re(s,n,o)),g(r,u.fieldErrors,s=>re(s,n,o))}),t().controlledFields.kickoffValueUpdate(r)},insert:(r,n,o)=>{e(u=>{ne(E(u.controlledFields.values,r),n,o),ne(E(u.currentDefaultValues,r),n,o),g(r,u.touchedFields,s=>ne(s,n,!1)),g(r,u.fieldErrors,s=>ne(s,n,void 0))}),t().controlledFields.kickoffValueUpdate(r)},remove:(r,n)=>{e(o=>{oe(E(o.controlledFields.values,r),n),oe(E(o.currentDefaultValues,r),n),g(r,o.touchedFields,u=>oe(u,n)),g(r,o.fieldErrors,u=>oe(u,n))}),t().controlledFields.kickoffValueUpdate(r)},pop:r=>{e(n=>{E(n.controlledFields.values,r).pop(),E(n.currentDefaultValues,r).pop(),g(r,n.touchedFields,o=>o.pop()),g(r,n.fieldErrors,o=>o.pop())}),t().controlledFields.kickoffValueUpdate(r)},unshift:(r,n)=>{e(o=>{E(o.controlledFields.values,r).unshift(n),E(o.currentDefaultValues,r).unshift(n),g(r,o.touchedFields,u=>u.unshift(!1)),g(r,o.fieldErrors,u=>u.unshift(void 0))})},replace:(r,n,o)=>{e(u=>{ue(E(u.controlledFields.values,r),n,o),ue(E(u.currentDefaultValues,r),n,o),g(r,u.touchedFields,s=>ue(s,n,o)),g(r,u.fieldErrors,s=>ue(s,n,o))}),t().controlledFields.kickoffValueUpdate(r)}}}}),De=Ir()(Hr((e,t)=>({forms:{},form:r=>{var n;return(n=t().forms[r])!=null?n:Br},cleanupForm:r=>{e(n=>{delete n.forms[r]})},registerForm:r=>{t().forms[r]||e(n=>{n.forms[r]=qr(o=>e(u=>o(u.forms[r])),()=>t().forms[r])})}}))),d=(e,t)=>De(r=>t(r.form(e))),O=(e,t)=>{const r=p.useContext(ft);if(e)return{formId:e};if(r)return r;throw new Error(`Unable to determine form for ${t}. Please use it inside a ValidatedForm or pass a 'formId'.`)};function $e({fetcher:e,subaction:t,formId:r}){var o;const n=K.useActionData();return e?(o=e.data)!=null&&o.fieldErrors?e.data:null:n!=null&&n.fieldErrors?typeof r=="string"&&n.formId?n.formId===r?n:null:!t&&!n.subaction||n.subaction===t?n:null:null}const Ft=e=>{const t=$e(e),r=d(e.formId,n=>n.isHydrated);return z.from(t==null?void 0:t.fieldErrors,r)},bt=({formId:e})=>{const t=K.useMatches();if(typeof e=="string"){const r=ct(e),n=t.reverse().find(o=>o.data&&r in o.data);return n==null?void 0:n.data[r]}return null},Et=e=>{const{formId:t,defaultValuesProp:r}=e,n=d(t,s=>s.isHydrated),o=$e(e),u=bt(e);return n?z.hydratedData():o!=null&&o.repopulateFields?(j(typeof o.repopulateFields=="object","repopulateFields returned something other than an object"),z.serverData(o.repopulateFields)):r?z.serverData(r):z.serverData(u)},Kr=({fetcher:e})=>{const t=K.useTransition();return e?e.state==="submitting":!!t.submission},Wr=(e,{formId:t})=>{const r=d(t,u=>u.touchedFields[e]),n=d(t,u=>u.setTouched),o=p.useCallback(u=>n(e,u),[e,n]);return[r,o]},gt=(e,t)=>{const r=Ft(t),n=d(t.formId,o=>o.fieldErrors[e]);return r.map(o=>o==null?void 0:o[e]).hydrateTo(n)},St=e=>{const{formId:t}=e;return d(t,r=>r.clearFieldError)},Gr=(e,t)=>d(e,r=>_(r.currentDefaultValues,t)),xe=(e,t)=>{const r=Et(t),n=Gr(t.formId,e);return r.map(o=>_(o,e)).hydrateTo(n)},Vt=e=>d(e,t=>t.isSubmitting),Pt=e=>d(e,t=>t.isValid()),He=e=>d(e,t=>t.hasBeenSubmitted),Le=e=>d(e,t=>t.validateField),Jr=e=>d(e,t=>t.validate),Xr=()=>()=>{},wt=e=>d(e,t=>{var r,n;return(n=(r=t.formProps)==null?void 0:r.registerReceiveFocus)!=null?n:Xr}),Qr={},Zr=e=>d(e,t=>{var r,n;return(n=(r=t.formProps)==null?void 0:r.defaultValues)!=null?n:Qr}),Yr=({formId:e})=>d(e,t=>t.setTouched),Nr=e=>d(e,t=>t.touchedFields),en=e=>d(e,t=>t.fieldErrors),It=e=>d(e,t=>t.setFieldErrors),tn=e=>d(e,t=>t.resetFormElement),rn=e=>d(e,t=>t.submit),nn=e=>d(e,t=>{var r;return(r=t.formProps)==null?void 0:r.action}),on=e=>d(e,t=>{var r;return(r=t.formProps)==null?void 0:r.subaction}),un=e=>d(e,t=>t.getValues),sn=(e,t)=>{const r=d(e.formId,u=>u.controlledFields.getValue(t)),n=d(e.formId,u=>u.isHydrated),o=xe(t,e);return n?r:o},Dt=(e,t)=>{const r=d(e.formId,u=>u.controlledFields.valueUpdateResolvers[t]);p.useEffect(()=>{r==null||r()},[r]);const n=d(e.formId,u=>u.controlledFields.register),o=d(e.formId,u=>u.controlledFields.unregister);p.useEffect(()=>(n(t),()=>o(t)),[e.formId,t,n,o])},ln=(e,t)=>{Dt(e,t);const r=d(e.formId,u=>u.controlledFields.setValue),n=p.useCallback(u=>r(t,u),[t,r]);return[sn(e,t),n]},an=e=>{const t=d(e,r=>r.controlledFields.setValue);return p.useCallback((r,n)=>t(r,n),[t])},Ot=e=>{const t=O(e,"useIsSubmitting");return Vt(t.formId)},Ct=e=>{const t=O(e,"useIsValid");return Pt(t.formId)},cn=(e,t)=>{const{formId:r,handleReceiveFocus:n}=t!=null?t:{},o=O(r,"useField"),u=xe(e,o),[s,i]=Wr(e,o),a=gt(e,o),l=St(o),c=He(o.formId),v=Le(o.formId),h=wt(o.formId);return p.useEffect(()=>{if(n)return h(e,n)},[n,e,h]),p.useMemo(()=>{const F={error:a,clearError:()=>l(e),validate:()=>{v(e)},defaultValue:u,touched:s,setTouched:i},y=tr({...F,name:e,hasBeenSubmitted:c,validationBehavior:t==null?void 0:t.validationBehavior});return{...F,getInputProps:y}},[a,l,u,s,i,e,c,t==null?void 0:t.validationBehavior,v])},fn=(e,t)=>{const r=O(t,"useControlField"),[n,o]=ln(r,e);return[n,o]},dn=e=>{const t=O(e,"useControlField");return an(t.formId)};/**
18
- * @remix-run/server-runtime v1.6.5
19
- *
20
- * Copyright (c) Remix Software Inc.
21
- *
22
- * This source code is licensed under the MIT license found in the
23
- * LICENSE.md file in the root directory of this source tree.
24
- *
25
- * @license MIT
26
- */const mn=(e,t={})=>{let r=typeof t=="number"?{status:t}:t,n=new Headers(r.headers);return n.has("Content-Type")||n.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(e),{...r,headers:n})};function vn(e,t,r){return mn({fieldErrors:e.fieldErrors,subaction:e.subaction,repopulateFields:t,formId:e.formId},{status:422,...r})}const hn=(e,t)=>({[ct(e)]:t});class At{constructor(){this.dict=new Map,this.add=(t,r)=>{this.dict.has(t)?this.dict.get(t).push(r):this.dict.set(t,[r])},this.delete=t=>{this.dict.delete(t)},this.remove=(t,r)=>{if(!this.dict.has(t))return;const n=this.dict.get(t),o=n.indexOf(r);o!==-1&&n.splice(o,1),n.length===0&&this.dict.delete(t)},this.getAll=t=>{var r;return(r=this.dict.get(t))!=null?r:[]},this.entries=()=>this.dict.entries(),this.values=()=>this.dict.values(),this.has=t=>this.dict.has(t)}}const pn=()=>{const e=p.useRef(null);return p.useCallback(()=>(e.current||(e.current=new At),e.current),[])};function Tt(e,t){const r=p.useRef(!1);p.useEffect(()=>{e&&(r.current=!0),!e&&r.current&&(r.current=!1,t())})}const yn=e=>t=>{e.filter(Boolean).forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})},be=typeof window!="undefined"?p.useLayoutEffect:p.useEffect,Fn=e=>{const t=p.useRef(e),r=t.current===e||Ee(t.current,e);return p.useEffect(()=>{r||(t.current=e)}),r?t.current:e},bn=e=>new FormData(e);function En(e){return e!==null}const gn=(e,t,r)=>{var u;const n=[...r.elements].map(s=>{const i=s instanceof RadioNodeList?s[0]:s;return i instanceof HTMLElement&&"name"in i?i.name:null}).filter(En).filter(s=>s in e),o=W(n);for(const s of o){if(t.has(s)){t.getAll(s).forEach(a=>{a()});break}const i=r.elements.namedItem(s);if(!!i){if(i instanceof RadioNodeList){const a=(u=[...i].filter(l=>l instanceof HTMLInputElement).find(l=>l.value===i.value))!=null?u:i[0];if(a&&a instanceof HTMLInputElement){a.focus();break}}if(i instanceof HTMLElement){if(i instanceof HTMLInputElement&&i.type==="hidden")continue;i.focus();break}}}},Sn=e=>{const[t]=p.useState(()=>Symbol("remix-validated-form-id"));return e!=null?e:t},Vn=({resetAfterSubmit:e,formRef:t})=>{const r=Ot(),n=Ct();return Tt(r,()=>{var o;n&&e&&((o=t.current)==null||o.reset())}),null};function Pn(e){let t=!1;return new Proxy(e,{get:(r,n)=>n==="preventDefault"?()=>{t=!0}:n==="defaultPrevented"?t:r[n]})}function wn({validator:e,onSubmit:t,children:r,fetcher:n,action:o,defaultValues:u,formRef:s,onReset:i,subaction:a,resetAfterSubmit:l=!1,disableFocusOnError:c,method:v,replace:h,id:f,...F}){var Ge;const y=Sn(f),A=Fn(u),T=p.useMemo(()=>({formId:y,action:o,subaction:a,defaultValuesProp:A,fetcher:n}),[o,n,y,A,a]),C=$e(T),k=bt(T),ce=Kr(T),R=p.useRef(null),kt=(Ge=n==null?void 0:n.Form)!=null?Ge:K.Form,Rt=K.useSubmit(),Z=It(y),Mt=d(y,m=>m.setFieldError),_t=d(y,m=>m.reset),Ut=d(y,m=>m.startSubmit),fe=d(y,m=>m.endSubmit),ze=d(y,m=>m.syncFormProps),Be=d(y,m=>m.setFormElement),qe=De(m=>m.cleanupForm),Ke=De(m=>m.registerForm),Y=pn(),We=p.useCallback((m,N)=>(Y().add(m,N),()=>{Y().remove(m,N)}),[Y]);be(()=>(Ke(y),()=>qe(y)),[qe,y,Ke]),be(()=>{var m;ze({action:o,defaultValues:(m=A!=null?A:k)!=null?m:{},subaction:a,registerReceiveFocus:We,validator:e})},[o,A,We,a,ze,k,e]),be(()=>{Be(R.current)},[Be]),p.useEffect(()=>{var m;Z((m=C==null?void 0:C.fieldErrors)!=null?m:{})},[C==null?void 0:C.fieldErrors,Z,Mt]),Tt(ce,()=>{fe()});const $t=async(m,N,xt)=>{Ut();const I=xt.submitter,Je=bn(m.currentTarget);I!=null&&I.name&&Je.append(I.name,I.value);const ee=await e.validate(Je);if(ee.error)Z(ee.error.fieldErrors),fe(),c||gn(ee.error.fieldErrors,Y(),R.current);else{Z({});const Xe=Pn(m);if(await(t==null?void 0:t(ee.data,Xe)),Xe.defaultPrevented){fe();return}n?n.submit(I||m.currentTarget):Rt(I||N,{replace:h,method:(I==null?void 0:I.formMethod)||v})}};return P.default.createElement(kt,{ref:yn([R,s]),...F,id:f,action:o,method:v,replace:h,onSubmit:m=>{m.preventDefault(),$t(m,m.currentTarget,m.nativeEvent)},onReset:m=>{i==null||i(m),!m.defaultPrevented&&_t()}},P.default.createElement(ft.Provider,{value:T},P.default.createElement(P.default.Fragment,null,P.default.createElement(Vn,{formRef:R,resetAfterSubmit:l}),a&&P.default.createElement("input",{type:"hidden",value:a,name:"subaction"}),f&&P.default.createElement("input",{type:"hidden",value:f,name:q}),r)))}const lt=e=>{const t=new At;return e.forEach(([r,n])=>t.add(r,n)),[...t.entries()].reduce((r,[n,o])=>$(r,n,o.length===1?o[0]:o),{})},at=e=>"entries"in e&&typeof e.entries=="function"?lt([...e.entries()]):lt(Object.entries(e)),In=e=>Kt(e,[q]);function Dn(e){return{validate:async t=>{const r=at(t),n=await e.validate(In(r));return n.error?{data:void 0,error:{fieldErrors:n.error,subaction:r.subaction,formId:r[q]},submittedData:r,formId:r[q]}:{data:n.data,error:void 0,submittedData:r,formId:r[q]}},validateField:(t,r)=>e.validateField(at(t),r)}}const On=e=>{const t=O(e,"useFormState"),r=Vt(t.formId),n=He(t.formId),o=Nr(t.formId),u=Pt(t.formId),s=nn(t.formId),i=on(t.formId),a=Zr(t.formId),c=Et(t).hydrateTo(a),v=en(t.formId),f=Ft(t).hydrateTo(v);return p.useMemo(()=>({action:s,subaction:i,defaultValues:c,fieldErrors:f!=null?f:{},hasBeenSubmitted:n,isSubmitting:r,touchedFields:o,isValid:u}),[s,n,c,f,r,u,i,o])},Cn=e=>{const t=O(e,"useFormHelpers"),r=Yr(t),n=Le(t.formId),o=Jr(t.formId),u=St(t),s=It(t.formId),i=tn(t.formId),a=rn(t.formId),l=un(t.formId);return p.useMemo(()=>({setTouched:r,validateField:n,clearError:u,validate:o,clearAllErrors:()=>s({}),reset:i,submit:a,getValues:l}),[u,i,s,r,a,o,n,l])},An=e=>{const t=O(e,"useFormContext"),r=On(e),{clearError:n,setTouched:o,validateField:u,clearAllErrors:s,validate:i,reset:a,submit:l,getValues:c}=Cn(e),v=wt(t.formId),h=p.useCallback((...f)=>{f.forEach(F=>{n(F)})},[n]);return p.useMemo(()=>({...r,setFieldTouched:o,validateField:u,clearError:h,registerReceiveFocus:v,clearAllErrors:s,validate:i,reset:a,submit:l,getValues:c}),[s,h,v,a,o,r,l,i,u,c])},jt=(e,t,r)=>{const n=xe(t,e);Dt(e,t);const o=He(e.formId),u=Le(e.formId),s=gt(t,e),i={initial:"onSubmit",whenSubmitted:"onChange",...r},a=o?i.whenSubmitted:i.initial,l=p.useCallback(()=>{a==="onChange"&&u(t)},[a,t,u]);j(n==null||Array.isArray(n),`FieldArray: defaultValue value for ${t} must be an array, null, or undefined`);const c=d(e.formId,f=>f.controlledFields.array),v=p.useMemo(()=>({push:f=>{c.push(t,f),l()},swap:(f,F)=>{c.swap(t,f,F),l()},move:(f,F)=>{c.move(t,f,F),l()},insert:(f,F)=>{c.insert(t,f,F),l()},unshift:f=>{c.unshift(t,f),l()},remove:f=>{c.remove(t,f),l()},pop:()=>{c.pop(t),l()},replace:(f,F)=>{c.replace(t,f,F),l()}}),[c,t,l]);return[p.useMemo(()=>n!=null?n:[],[n]),v,s]};function Tn(e,{formId:t,validationBehavior:r}={}){const n=O(t,"FieldArray");return jt(n,e,r)}const jn=({name:e,children:t,formId:r,validationBehavior:n})=>{const o=O(r,"FieldArray"),[u,s,i]=jt(o,e,n);return P.default.createElement(P.default.Fragment,null,t(u,s,i))};exports.FieldArray=jn;exports.ValidatedForm=wn;exports.createValidator=Dn;exports.setFormDefaults=hn;exports.useControlField=fn;exports.useField=cn;exports.useFieldArray=Tn;exports.useFormContext=An;exports.useIsSubmitting=Ot;exports.useIsValid=Ct;exports.useUpdateControlledField=dn;exports.validationError=vn;
27
- //# sourceMappingURL=remix-validated-form.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remix-validated-form.cjs.js","sources":["../../../node_modules/remeda/dist/es/purry.js","../../../node_modules/remeda/dist/es/_reduceLazy.js","../../../node_modules/remeda/dist/es/equals.js","../../../node_modules/remeda/dist/es/omit.js","../../../node_modules/remeda/dist/es/omitBy.js","../../../node_modules/remeda/dist/es/pathOr.js","../../../node_modules/remeda/dist/es/uniq.js","../src/internal/logic/getCheckboxChecked.ts","../src/internal/logic/getRadioChecked.ts","../src/internal/getInputProps.ts","../../set-get/src/stringToPathArray.ts","../../set-get/src/setPath.ts","../../set-get/src/getPath.ts","../../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../src/internal/constants.ts","../src/internal/formContext.ts","../src/internal/hydratable.ts","../../../node_modules/zustand/esm/vanilla.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/use-sync-external-store/shim/index.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../../node_modules/use-sync-external-store/shim/with-selector.js","../../../node_modules/zustand/esm/index.js","../../../node_modules/immer/dist/immer.esm.js","../../../node_modules/zustand/esm/middleware/immer.js","../src/internal/logic/requestSubmit.ts","../src/internal/state/arrayUtil.ts","../src/internal/state/createFormStore.ts","../src/internal/state/storeHooks.ts","../src/internal/hooks.ts","../src/internal/state/controlledFields.ts","../src/hooks.ts","../../../node_modules/@remix-run/server-runtime/dist/esm/responses.js","../src/server.ts","../src/internal/MultiValueMap.ts","../src/internal/submissionCallbacks.ts","../src/internal/util.ts","../src/ValidatedForm.tsx","../src/internal/flatten.ts","../src/validation/createValidator.ts","../src/unreleased/formStateHooks.ts","../src/userFacingFormContext.ts","../src/internal/state/fieldArray.tsx"],"sourcesContent":["var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * Creates a function with `data-first` and `data-last` signatures.\n *\n * `purry` is a dynamic function and it's not type safe. It should be wrapped by a function that have proper typings.\n * Refer to the example below for correct usage.\n *\n * @param fn the function to purry.\n * @param args the arguments\n * @signature R.purry(fn, arguments);\n * @example-raw\n * function _findIndex(array, fn) {\n * for (let i = 0; i < array.length; i++) {\n * if (fn(array[i])) {\n * return i;\n * }\n * }\n * return -1;\n * }\n *\n * // data-first\n * function findIndex<T>(array: T[], fn: (item: T) => boolean): number;\n *\n * // data-last\n * function findIndex<T>(fn: (item: T) => boolean): (array: T[]) => number;\n *\n * function findIndex() {\n * return R.purry(_findIndex, arguments);\n * }\n * @category Function\n */\nexport function purry(fn, args, lazy) {\n var diff = fn.length - args.length;\n var arrayArgs = Array.from(args);\n if (diff === 0) {\n return fn.apply(void 0, arrayArgs);\n }\n if (diff === 1) {\n var ret = function (data) { return fn.apply(void 0, __spreadArray([data], arrayArgs, false)); };\n if (lazy || fn.lazy) {\n ret.lazy = lazy || fn.lazy;\n ret.lazyArgs = args;\n }\n return ret;\n }\n throw new Error('Wrong number of arguments');\n}\n","export function _reduceLazy(array, lazy, indexed) {\n return array.reduce(function (acc, item, index) {\n var result = indexed ? lazy(item, index, array) : lazy(item);\n if (result.hasMany === true) {\n acc.push.apply(acc, result.next);\n }\n else if (result.hasNext === true) {\n acc.push(result.next);\n }\n return acc;\n }, []);\n}\n","import { purry } from './purry';\n// from https://github.com/epoberezkin/fast-deep-equal/blob/master/index.js\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nexport function equals() {\n return purry(_equals, arguments);\n}\nfunction _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var arrA = isArray(a);\n var arrB = isArray(b);\n var i = void 0;\n var length = void 0;\n var key = void 0;\n if (arrA && arrB) {\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (arrA !== arrB) {\n return false;\n }\n var dateA = a instanceof Date;\n var dateB = b instanceof Date;\n if (dateA !== dateB) {\n return false;\n }\n if (dateA && dateB) {\n return a.getTime() === b.getTime();\n }\n var regexpA = a instanceof RegExp;\n var regexpB = b instanceof RegExp;\n if (regexpA !== regexpB) {\n return false;\n }\n if (regexpA && regexpB) {\n return a.toString() === b.toString();\n }\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equals(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n","import { purry } from './purry';\nexport function omit() {\n return purry(_omit, arguments);\n}\nfunction _omit(object, names) {\n var set = new Set(names);\n return Object.entries(object).reduce(function (acc, _a) {\n var name = _a[0], value = _a[1];\n if (!set.has(name)) {\n acc[name] = value;\n }\n return acc;\n }, {});\n}\n","import { purry } from './purry';\nexport function omitBy() {\n return purry(_omitBy, arguments);\n}\nfunction _omitBy(object, fn) {\n return Object.keys(object).reduce(function (acc, key) {\n if (!fn(object[key], key)) {\n acc[key] = object[key];\n }\n return acc;\n }, {});\n}\n","import { purry } from './purry';\nexport function pathOr() {\n return purry(_pathOr, arguments);\n}\nfunction _pathOr(object, path, defaultValue) {\n var current = object;\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var prop = path_1[_i];\n if (current == null || current[prop] == null) {\n return defaultValue;\n }\n current = current[prop];\n }\n return current;\n}\n","import { purry } from './purry';\nimport { _reduceLazy } from './_reduceLazy';\nexport function uniq() {\n return purry(_uniq, arguments, uniq.lazy);\n}\nfunction _uniq(array) {\n return _reduceLazy(array, uniq.lazy());\n}\n(function (uniq) {\n function lazy() {\n var set = new Set();\n return function (value) {\n if (set.has(value)) {\n return {\n done: false,\n hasNext: false,\n };\n }\n set.add(value);\n return {\n done: false,\n hasNext: true,\n next: value,\n };\n };\n }\n uniq.lazy = lazy;\n})(uniq || (uniq = {}));\n","export const getCheckboxChecked = (\n checkboxValue: string | undefined = \"on\",\n newValue: unknown\n): boolean | undefined => {\n if (Array.isArray(newValue))\n return newValue.some((val) => val === true || val === checkboxValue);\n if (typeof newValue === \"boolean\") return newValue;\n if (typeof newValue === \"string\") return newValue === checkboxValue;\n return undefined;\n};\n","export const getRadioChecked = (\n radioValue: string | undefined = \"on\",\n newValue: unknown\n) => {\n if (typeof newValue === \"string\") return newValue === radioValue;\n return undefined;\n};\n\nif (import.meta.vitest) {\n const { it, expect } = import.meta.vitest;\n it(\"getRadioChecked\", () => {\n expect(getRadioChecked(\"on\", \"on\")).toBe(true);\n expect(getRadioChecked(\"on\", undefined)).toBe(undefined);\n expect(getRadioChecked(\"trueValue\", undefined)).toBe(undefined);\n expect(getRadioChecked(\"trueValue\", \"bob\")).toBe(false);\n expect(getRadioChecked(\"trueValue\", \"trueValue\")).toBe(true);\n });\n}\n","import * as R from \"remeda\";\nimport { getCheckboxChecked } from \"./logic/getCheckboxChecked\";\nimport { getRadioChecked } from \"./logic/getRadioChecked\";\n\nexport type ValidationBehavior = \"onBlur\" | \"onChange\" | \"onSubmit\";\n\nexport type ValidationBehaviorOptions = {\n initial: ValidationBehavior;\n whenTouched: ValidationBehavior;\n whenSubmitted: ValidationBehavior;\n};\n\nexport type CreateGetInputPropsOptions = {\n clearError: () => void;\n validate: () => void;\n defaultValue?: any;\n touched: boolean;\n setTouched: (touched: boolean) => void;\n hasBeenSubmitted: boolean;\n validationBehavior?: Partial<ValidationBehaviorOptions>;\n name: string;\n};\n\ntype HandledProps = \"name\" | \"defaultValue\" | \"defaultChecked\";\ntype Callbacks = \"onChange\" | \"onBlur\";\n\ntype MinimalInputProps = {\n onChange?: (...args: any[]) => void;\n onBlur?: (...args: any[]) => void;\n defaultValue?: any;\n defaultChecked?: boolean;\n name?: string;\n type?: string;\n};\n\nexport type GetInputProps = <T extends MinimalInputProps>(\n props?: Omit<T, HandledProps | Callbacks> & Partial<Pick<T, Callbacks>>\n) => T;\n\nconst defaultValidationBehavior: ValidationBehaviorOptions = {\n initial: \"onBlur\",\n whenTouched: \"onChange\",\n whenSubmitted: \"onChange\",\n};\n\nexport const createGetInputProps = ({\n clearError,\n validate,\n defaultValue,\n touched,\n setTouched,\n hasBeenSubmitted,\n validationBehavior,\n name,\n}: CreateGetInputPropsOptions): GetInputProps => {\n const validationBehaviors = {\n ...defaultValidationBehavior,\n ...validationBehavior,\n };\n\n return <T extends MinimalInputProps>(props = {} as any) => {\n const behavior = hasBeenSubmitted\n ? validationBehaviors.whenSubmitted\n : touched\n ? validationBehaviors.whenTouched\n : validationBehaviors.initial;\n\n const inputProps: MinimalInputProps = {\n ...props,\n onChange: (...args: unknown[]) => {\n if (behavior === \"onChange\") validate();\n else clearError();\n return props?.onChange?.(...args);\n },\n onBlur: (...args: unknown[]) => {\n if (behavior === \"onBlur\") validate();\n setTouched(true);\n return props?.onBlur?.(...args);\n },\n name,\n };\n\n if (props.type === \"checkbox\") {\n inputProps.defaultChecked = getCheckboxChecked(props.value, defaultValue);\n } else if (props.type === \"radio\") {\n inputProps.defaultChecked = getRadioChecked(props.value, defaultValue);\n } else if (props.value === undefined) {\n // We should only set the defaultValue if the input is uncontrolled.\n inputProps.defaultValue = defaultValue;\n }\n\n return R.omitBy(inputProps, (value) => value === undefined) as T;\n };\n};\n","export const stringToPathArray = <T extends string>(\n path: T\n): (string | number)[] => {\n if (path.length === 0) return [];\n\n const match =\n path.match(/^\\[(.+?)\\](.*)$/) || path.match(/^\\.?([^\\.\\[\\]]+)(.*)$/);\n if (match) {\n const [_, key, rest] = match;\n return [/^\\d+$/.test(key) ? Number(key) : key, ...stringToPathArray(rest)];\n }\n return [path];\n};\n","import { stringToPathArray } from \"./stringToPathArray\";\n\nexport function setPath<T>(object: T, path: string, defaultValue: any) {\n return _setPathNormalized(object, stringToPathArray(path), defaultValue);\n}\n\nfunction _setPathNormalized(\n object: any,\n path: (string | number)[],\n value: any\n): any {\n const leadingSegments = path.slice(0, -1);\n const lastSegment = path[path.length - 1];\n\n let obj = object;\n for (let i = 0; i < leadingSegments.length; i++) {\n const segment = leadingSegments[i];\n if (obj[segment] === undefined) {\n const nextSegment = leadingSegments[i + 1] ?? lastSegment;\n obj[segment] = typeof nextSegment === \"number\" ? [] : {};\n }\n obj = obj[segment];\n }\n obj[lastSegment] = value;\n return object;\n}\n","import * as R from \"remeda\";\nimport { stringToPathArray } from \"./stringToPathArray\";\n\n// pathOr types don't support deeper than 3 levels, but the code works\nexport const getPath = (object: any, path: string) =>\n R.pathOr(object, stringToPathArray(path) as any, undefined);\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","export const FORM_ID_FIELD = \"__rvfInternalFormId\" as const;\nexport const FORM_DEFAULTS_FIELD = \"__rvfInternalFormDefaults\" as const;\nexport const formDefaultValuesKey = (formId: string) =>\n `${FORM_DEFAULTS_FIELD}_${formId}`;\n","import { useFetcher } from \"@remix-run/react\";\nimport { createContext } from \"react\";\n\nexport type InternalFormContextValue = {\n formId: string | symbol;\n action?: string;\n subaction?: string;\n defaultValuesProp?: { [fieldName: string]: any };\n fetcher?: ReturnType<typeof useFetcher>;\n};\n\nexport const InternalFormContext =\n createContext<InternalFormContextValue | null>(null);\n","/**\n * The purpose of this type is to simplify the logic\n * around data that needs to come from the server initially,\n * but from the internal state after hydration.\n */\nexport type Hydratable<T> = {\n hydrateTo: (data: T) => T;\n map: <U>(fn: (data: T) => U) => Hydratable<U>;\n};\n\nconst serverData = <T>(data: T): Hydratable<T> => ({\n hydrateTo: () => data,\n map: (fn) => serverData(fn(data)),\n});\n\nconst hydratedData = <T>(): Hydratable<T> => ({\n hydrateTo: (hydratedData: T) => hydratedData,\n map: <U>() => hydratedData<U>(),\n});\n\nconst from = <T>(data: T, hydrated: boolean): Hydratable<T> =>\n hydrated ? hydratedData<T>() : serverData<T>(data);\n\nexport const hydratable = {\n serverData,\n hydratedData,\n from,\n};\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js';\n\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(api.subscribe, api.getState, api.getServerState || api.getState, selector, equalityFn);\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar create$1 = create;\n\nexport { create$1 as default, useStore };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","/**\n * Ponyfill of the HTMLFormElement.requestSubmit() method.\n * Based on polyfill from: https://github.com/javan/form-request-submit-polyfill/blob/main/form-request-submit-polyfill.js\n */\nexport const requestSubmit = (\n element: HTMLFormElement,\n submitter?: HTMLElement\n) => {\n // In vitest, let's test the polyfill.\n // Cypress will test the native implementation by nature of using chrome.\n if (\n typeof Object.getPrototypeOf(element).requestSubmit === \"function\" &&\n !import.meta.vitest\n ) {\n element.requestSubmit(submitter);\n return;\n }\n\n if (submitter) {\n validateSubmitter(element, submitter);\n submitter.click();\n return;\n }\n\n const dummySubmitter = document.createElement(\"input\");\n dummySubmitter.type = \"submit\";\n dummySubmitter.hidden = true;\n element.appendChild(dummySubmitter);\n dummySubmitter.click();\n element.removeChild(dummySubmitter);\n};\n\nfunction validateSubmitter(element: HTMLFormElement, submitter: HTMLElement) {\n // Should be redundant, but here for completeness\n const isHtmlElement = submitter instanceof HTMLElement;\n if (!isHtmlElement) {\n raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n }\n\n const hasSubmitType =\n \"type\" in submitter && (submitter as HTMLInputElement).type === \"submit\";\n if (!hasSubmitType)\n raise(TypeError, \"The specified element is not a submit button\");\n\n const isForCorrectForm =\n \"form\" in submitter && (submitter as HTMLInputElement).form === element;\n if (!isForCorrectForm)\n raise(\n DOMException,\n \"The specified element is not owned by this form element\",\n \"NotFoundError\"\n );\n}\n\ninterface ErrorConstructor {\n new (message: string, name?: string): Error;\n}\n\nfunction raise(\n errorConstructor: ErrorConstructor,\n message: string,\n name?: string\n): never {\n throw new errorConstructor(\n \"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\",\n name\n );\n}\n\nif (import.meta.vitest) {\n const { it, expect } = import.meta.vitest;\n it(\"should validate the submitter\", () => {\n const form = document.createElement(\"form\");\n document.body.appendChild(form);\n\n const submitter = document.createElement(\"input\");\n expect(() => validateSubmitter(null as any, null as any)).toThrow();\n expect(() => validateSubmitter(form, null as any)).toThrow();\n expect(() => validateSubmitter(form, submitter)).toThrow();\n expect(() =>\n validateSubmitter(form, document.createElement(\"div\"))\n ).toThrow();\n\n submitter.type = \"submit\";\n expect(() => validateSubmitter(form, submitter)).toThrow();\n\n form.appendChild(submitter);\n expect(() => validateSubmitter(form, submitter)).not.toThrow();\n\n form.removeChild(submitter);\n expect(() => validateSubmitter(form, submitter)).toThrow();\n\n document.body.appendChild(submitter);\n form.id = \"test-form\";\n submitter.setAttribute(\"form\", \"test-form\");\n expect(() => validateSubmitter(form, submitter)).not.toThrow();\n\n const button = document.createElement(\"button\");\n button.type = \"submit\";\n form.appendChild(button);\n expect(() => validateSubmitter(form, button)).not.toThrow();\n });\n}\n","import { getPath, setPath } from \"set-get\";\nimport invariant from \"tiny-invariant\";\n\n////\n// All of these array helpers are written in a way that mutates the original array.\n// This is because we're working with immer.\n////\n\nexport const getArray = (values: any, field: string): unknown[] => {\n const value = getPath(values, field);\n if (value === undefined || value === null) {\n const newValue: unknown[] = [];\n setPath(values, field, newValue);\n return newValue;\n }\n invariant(\n Array.isArray(value),\n `FieldArray: defaultValue value for ${field} must be an array, null, or undefined`\n );\n return value;\n};\n\nexport const swap = (array: unknown[], indexA: number, indexB: number) => {\n const itemA = array[indexA];\n const itemB = array[indexB];\n\n const hasItemA = indexA in array;\n const hasItemB = indexB in array;\n\n // If we're dealing with a sparse array (i.e. one of the indeces doesn't exist),\n // we should keep it sparse\n if (hasItemA) {\n array[indexB] = itemA;\n } else {\n delete array[indexB];\n }\n\n if (hasItemB) {\n array[indexA] = itemB;\n } else {\n delete array[indexA];\n }\n};\n\n// A splice that can handle sparse arrays\nfunction sparseSplice(\n array: unknown[],\n start: number,\n deleteCount: number,\n item?: unknown\n) {\n // Inserting an item into an array won't behave as we need it to if the array isn't\n // at least as long as the start index. We can force the array to be long enough like this.\n if (array.length < start && item) {\n array.length = start;\n }\n\n // If we just pass item in, it'll be undefined and splice will delete the item.\n if (arguments.length === 4) return array.splice(start, deleteCount, item);\n return array.splice(start, deleteCount);\n}\n\nexport const move = (array: unknown[], from: number, to: number) => {\n const [item] = sparseSplice(array, from, 1);\n sparseSplice(array, to, 0, item);\n};\n\nexport const insert = (array: unknown[], index: number, value: unknown) => {\n sparseSplice(array, index, 0, value);\n};\n\nexport const remove = (array: unknown[], index: number) => {\n sparseSplice(array, index, 1);\n};\n\nexport const replace = (array: unknown[], index: number, value: unknown) => {\n sparseSplice(array, index, 1, value);\n};\n\n/**\n * The purpose of this helper is to make it easier to update `fieldErrors` and `touchedFields`.\n * We key those objects by full paths to the fields.\n * When we're doing array mutations, that makes it difficult to update those objects.\n */\nexport const mutateAsArray = (\n field: string,\n obj: Record<string, any>,\n mutate: (arr: any[]) => void\n) => {\n const beforeKeys = new Set<string>();\n const arr: any[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n if (key.startsWith(field) && key !== field) {\n beforeKeys.add(key);\n setPath(arr, key.substring(field.length), value);\n }\n }\n\n mutate(arr);\n for (const key of beforeKeys) {\n delete obj[key];\n }\n\n const newKeys = getDeepArrayPaths(arr);\n for (const key of newKeys) {\n const val = getPath(arr, key);\n if (val !== undefined) {\n obj[`${field}${key}`] = val;\n }\n }\n};\n\nconst getDeepArrayPaths = (obj: any, basePath: string = \"\"): string[] => {\n // This only needs to handle arrays and plain objects\n // and we can assume the first call is always an array.\n\n if (Array.isArray(obj)) {\n return obj.flatMap((item, index) =>\n getDeepArrayPaths(item, `${basePath}[${index}]`)\n );\n }\n\n if (typeof obj === \"object\") {\n return Object.keys(obj).flatMap((key) =>\n getDeepArrayPaths(obj[key], `${basePath}.${key}`)\n );\n }\n\n return [basePath];\n};\n\nif (import.meta.vitest) {\n const { describe, expect, it } = import.meta.vitest;\n\n // Count the actual number of items in the array\n // instead of just getting the length.\n // This is useful for validating that sparse arrays are handled correctly.\n const countArrayItems = (arr: any[]) => {\n let count = 0;\n arr.forEach(() => count++);\n return count;\n };\n\n describe(\"getArray\", () => {\n it(\"shoud get a deeply nested array that can be mutated to update the nested value\", () => {\n const values = {\n d: [\n { foo: \"bar\", baz: [true, false] },\n { e: true, f: \"hi\" },\n ],\n };\n const result = getArray(values, \"d[0].baz\");\n const finalValues = {\n d: [\n { foo: \"bar\", baz: [true, false, true] },\n { e: true, f: \"hi\" },\n ],\n };\n\n expect(result).toEqual([true, false]);\n result.push(true);\n expect(values).toEqual(finalValues);\n });\n\n it(\"should return an empty array that can be mutated if result is null or undefined\", () => {\n const values = {};\n const result = getArray(values, \"a.foo[0].bar\");\n const finalValues = {\n a: { foo: [{ bar: [\"Bob ross\"] }] },\n };\n\n expect(result).toEqual([]);\n result.push(\"Bob ross\");\n expect(values).toEqual(finalValues);\n });\n\n it(\"should throw if the value is defined and not an array\", () => {\n const values = { foo: \"foo\" };\n expect(() => getArray(values, \"foo\")).toThrow();\n });\n });\n\n describe(\"swap\", () => {\n it(\"should swap two items\", () => {\n const array = [1, 2, 3];\n swap(array, 0, 1);\n expect(array).toEqual([2, 1, 3]);\n });\n\n it(\"should work for sparse arrays\", () => {\n // A bit of a sanity check for native array behavior\n const arr = [] as any[];\n arr[0] = true;\n swap(arr, 0, 2);\n\n expect(countArrayItems(arr)).toEqual(1);\n expect(0 in arr).toBe(false);\n expect(2 in arr).toBe(true);\n expect(arr[2]).toEqual(true);\n });\n });\n\n describe(\"move\", () => {\n it(\"should move an item to a new index\", () => {\n const array = [1, 2, 3];\n move(array, 0, 1);\n expect(array).toEqual([2, 1, 3]);\n });\n\n it(\"should work with sparse arrays\", () => {\n const array = [1];\n move(array, 0, 2);\n\n expect(countArrayItems(array)).toEqual(1);\n expect(array).toEqual([undefined, undefined, 1]);\n });\n });\n\n describe(\"insert\", () => {\n it(\"should insert an item at a new index\", () => {\n const array = [1, 2, 3];\n insert(array, 1, 4);\n expect(array).toEqual([1, 4, 2, 3]);\n });\n\n it(\"should be able to insert falsey values\", () => {\n const array = [1, 2, 3];\n insert(array, 1, null);\n expect(array).toEqual([1, null, 2, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n insert(array, 0, true);\n\n expect(countArrayItems(array)).toEqual(2);\n expect(array).toEqual([true, undefined, undefined, true]);\n });\n });\n\n describe(\"remove\", () => {\n it(\"should remove an item at a given index\", () => {\n const array = [1, 2, 3];\n remove(array, 1);\n expect(array).toEqual([1, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n remove(array, 0);\n\n expect(countArrayItems(array)).toEqual(1);\n expect(array).toEqual([undefined, true]);\n });\n });\n\n describe(\"replace\", () => {\n it(\"should replace an item at a given index\", () => {\n const array = [1, 2, 3];\n replace(array, 1, 4);\n expect(array).toEqual([1, 4, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n replace(array, 0, true);\n expect(countArrayItems(array)).toEqual(2);\n expect(array).toEqual([true, undefined, true]);\n });\n });\n\n describe(\"mutateAsArray\", () => {\n it(\"should handle swap\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[2]\": \"bar\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"bar\",\n \"myField[2]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should swap sparse arrays\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[2]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle arrays with nested values\", () => {\n const values = {\n myField: \"something\",\n \"myField[0].title\": \"foo\",\n \"myField[0].note\": \"bar\",\n \"myField[2].title\": \"other\",\n \"myField[2].note\": \"other\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0].title\": \"other\",\n \"myField[0].note\": \"other\",\n \"myField[2].title\": \"foo\",\n \"myField[2].note\": \"bar\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle move\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"bar\",\n \"myField[2]\": \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n move(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"bar\",\n \"myField[1]\": \"baz\",\n \"myField[2]\": \"foo\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should not create keys for `undefined`\", () => {\n const values = {\n \"myField[0]\": \"foo\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n arr.unshift(undefined);\n });\n expect(Object.keys(values)).toHaveLength(1);\n expect(values).toEqual({\n \"myField[1]\": \"foo\",\n });\n });\n\n it(\"should handle remove\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"bar\",\n \"myField[2]\": \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n remove(arr, 1);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"baz\",\n \"otherField[0]\": \"something else\",\n });\n expect(\"myField[2]\" in values).toBe(false);\n });\n });\n\n describe(\"getDeepArrayPaths\", () => {\n it(\"should return all paths recursively\", () => {\n const obj = [\n true,\n true,\n [true, true],\n { foo: true, bar: { baz: true, test: [true] } },\n ];\n\n expect(getDeepArrayPaths(obj, \"myField\")).toEqual([\n \"myField[0]\",\n \"myField[1]\",\n \"myField[2][0]\",\n \"myField[2][1]\",\n \"myField[3].foo\",\n \"myField[3].bar.baz\",\n \"myField[3].bar.test[0]\",\n ]);\n });\n });\n}\n","import { WritableDraft } from \"immer/dist/internal\";\nimport { getPath, setPath } from \"set-get\";\nimport invariant from \"tiny-invariant\";\nimport create, { GetState } from \"zustand\";\nimport { immer } from \"zustand/middleware/immer\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n Validator,\n} from \"../../validation/types\";\nimport { requestSubmit } from \"../logic/requestSubmit\";\nimport * as arrayUtil from \"./arrayUtil\";\nimport { InternalFormId } from \"./types\";\n\nexport type SyncedFormProps = {\n formId?: string;\n action?: string;\n subaction?: string;\n defaultValues: { [fieldName: string]: any };\n registerReceiveFocus: (fieldName: string, handler: () => void) => () => void;\n validator: Validator<unknown>;\n};\n\nexport type FormStoreState = {\n forms: { [formId: InternalFormId]: FormState };\n form: (formId: InternalFormId) => FormState;\n registerForm: (formId: InternalFormId) => void;\n cleanupForm: (formId: InternalFormId) => void;\n};\n\nexport type FormState = {\n isHydrated: boolean;\n isSubmitting: boolean;\n hasBeenSubmitted: boolean;\n fieldErrors: FieldErrors;\n touchedFields: TouchedFields;\n formProps?: SyncedFormProps;\n formElement: HTMLFormElement | null;\n currentDefaultValues: Record<string, any>;\n\n isValid: () => boolean;\n startSubmit: () => void;\n endSubmit: () => void;\n setTouched: (field: string, touched: boolean) => void;\n setFieldError: (field: string, error: string) => void;\n setFieldErrors: (errors: FieldErrors) => void;\n clearFieldError: (field: string) => void;\n reset: () => void;\n syncFormProps: (props: SyncedFormProps) => void;\n setFormElement: (formElement: HTMLFormElement | null) => void;\n validateField: (fieldName: string) => Promise<string | null>;\n validate: () => Promise<ValidationResult<unknown>>;\n resetFormElement: () => void;\n submit: () => void;\n getValues: () => FormData;\n\n controlledFields: {\n values: { [fieldName: string]: any };\n refCounts: { [fieldName: string]: number };\n valueUpdatePromises: { [fieldName: string]: Promise<void> };\n valueUpdateResolvers: { [fieldName: string]: () => void };\n\n register: (fieldName: string) => void;\n unregister: (fieldName: string) => void;\n setValue: (fieldName: string, value: unknown) => void;\n kickoffValueUpdate: (fieldName: string) => void;\n getValue: (fieldName: string) => unknown;\n awaitValueUpdate: (fieldName: string) => Promise<void>;\n\n array: {\n push: (fieldName: string, value: unknown) => void;\n swap: (fieldName: string, indexA: number, indexB: number) => void;\n move: (fieldName: string, fromIndex: number, toIndex: number) => void;\n insert: (fieldName: string, index: number, value: unknown) => void;\n unshift: (fieldName: string, value: unknown) => void;\n remove: (fieldName: string, index: number) => void;\n pop: (fieldName: string) => void;\n replace: (fieldName: string, index: number, value: unknown) => void;\n };\n };\n};\n\nconst noOp = () => {};\nconst defaultFormState: FormState = {\n isHydrated: false,\n isSubmitting: false,\n hasBeenSubmitted: false,\n touchedFields: {},\n fieldErrors: {},\n formElement: null,\n isValid: () => true,\n startSubmit: noOp,\n endSubmit: noOp,\n setTouched: noOp,\n setFieldError: noOp,\n setFieldErrors: noOp,\n clearFieldError: noOp,\n currentDefaultValues: {},\n\n reset: () => noOp,\n syncFormProps: noOp,\n setFormElement: noOp,\n validateField: async () => null,\n\n validate: async () => {\n throw new Error(\"Validate called before form was initialized.\");\n },\n\n submit: async () => {\n throw new Error(\"Submit called before form was initialized.\");\n },\n\n resetFormElement: noOp,\n getValues: () => new FormData(),\n\n controlledFields: {\n values: {},\n refCounts: {},\n valueUpdatePromises: {},\n valueUpdateResolvers: {},\n\n register: noOp,\n unregister: noOp,\n setValue: noOp,\n getValue: noOp,\n kickoffValueUpdate: noOp,\n awaitValueUpdate: async () => {\n throw new Error(\"AwaitValueUpdate called before form was initialized.\");\n },\n\n array: {\n push: noOp,\n swap: noOp,\n move: noOp,\n insert: noOp,\n unshift: noOp,\n remove: noOp,\n pop: noOp,\n replace: noOp,\n },\n },\n};\n\nconst createFormState = (\n set: (setter: (draft: WritableDraft<FormState>) => void) => void,\n get: GetState<FormState>\n): FormState => ({\n // It's not \"hydrated\" until the form props are synced\n isHydrated: false,\n isSubmitting: false,\n hasBeenSubmitted: false,\n touchedFields: {},\n fieldErrors: {},\n formElement: null,\n currentDefaultValues: {},\n\n isValid: () => Object.keys(get().fieldErrors).length === 0,\n startSubmit: () =>\n set((state) => {\n state.isSubmitting = true;\n state.hasBeenSubmitted = true;\n }),\n endSubmit: () =>\n set((state) => {\n state.isSubmitting = false;\n }),\n setTouched: (fieldName, touched) =>\n set((state) => {\n state.touchedFields[fieldName] = touched;\n }),\n setFieldError: (fieldName: string, error: string) =>\n set((state) => {\n state.fieldErrors[fieldName] = error;\n }),\n setFieldErrors: (errors: FieldErrors) =>\n set((state) => {\n state.fieldErrors = errors;\n }),\n clearFieldError: (fieldName: string) =>\n set((state) => {\n delete state.fieldErrors[fieldName];\n }),\n reset: () =>\n set((state) => {\n state.fieldErrors = {};\n state.touchedFields = {};\n state.hasBeenSubmitted = false;\n const nextDefaults = state.formProps?.defaultValues ?? {};\n state.controlledFields.values = nextDefaults;\n state.currentDefaultValues = nextDefaults;\n }),\n syncFormProps: (props: SyncedFormProps) =>\n set((state) => {\n if (!state.isHydrated) {\n state.controlledFields.values = props.defaultValues;\n state.currentDefaultValues = props.defaultValues;\n }\n\n state.formProps = props;\n state.isHydrated = true;\n }),\n setFormElement: (formElement: HTMLFormElement | null) => {\n // This gets called frequently, so we want to avoid calling set() every time\n // Or else we wind up with an infinite loop\n if (get().formElement === formElement) return;\n set((state) => {\n // weird type issue here\n // seems to be because formElement is a writable draft\n state.formElement = formElement as any;\n });\n },\n validateField: async (field: string) => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n const validator = get().formProps?.validator;\n invariant(\n validator,\n \"Cannot validator. This is probably a bug in remix-validated-form.\"\n );\n\n await get().controlledFields.awaitValueUpdate?.(field);\n\n const { error } = await validator.validateField(\n new FormData(formElement),\n field\n );\n\n if (error) {\n get().setFieldError(field, error);\n return error;\n } else {\n get().clearFieldError(field);\n return null;\n }\n },\n\n validate: async () => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n const validator = get().formProps?.validator;\n invariant(\n validator,\n \"Cannot validator. This is probably a bug in remix-validated-form.\"\n );\n\n const result = await validator.validate(new FormData(formElement));\n if (result.error) get().setFieldErrors(result.error.fieldErrors);\n return result;\n },\n\n submit: () => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n requestSubmit(formElement);\n },\n\n getValues: () => new FormData(get().formElement ?? undefined),\n\n resetFormElement: () => get().formElement?.reset(),\n\n controlledFields: {\n values: {},\n refCounts: {},\n valueUpdatePromises: {},\n valueUpdateResolvers: {},\n\n register: (fieldName) => {\n set((state) => {\n const current = state.controlledFields.refCounts[fieldName] ?? 0;\n state.controlledFields.refCounts[fieldName] = current + 1;\n });\n },\n unregister: (fieldName) => {\n // For this helper in particular, we may run into a case where state is undefined.\n // When the whole form unmounts, the form state may be cleaned up before the fields are.\n if (get() === null || get() === undefined) return;\n set((state) => {\n const current = state.controlledFields.refCounts[fieldName] ?? 0;\n if (current > 1) {\n state.controlledFields.refCounts[fieldName] = current - 1;\n return;\n }\n\n const isNested = Object.keys(state.controlledFields.refCounts).some(\n (key) => fieldName.startsWith(key) && key !== fieldName\n );\n\n // When nested within a field array, we should leave resetting up to the field array\n if (!isNested) {\n setPath(\n state.controlledFields.values,\n fieldName,\n getPath(state.formProps?.defaultValues, fieldName)\n );\n setPath(\n state.currentDefaultValues,\n fieldName,\n getPath(state.formProps?.defaultValues, fieldName)\n );\n }\n\n delete state.controlledFields.refCounts[fieldName];\n });\n },\n getValue: (fieldName) => getPath(get().controlledFields.values, fieldName),\n setValue: (fieldName, value) => {\n set((state) => {\n setPath(state.controlledFields.values, fieldName, value);\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n kickoffValueUpdate: (fieldName) => {\n const clear = () =>\n set((state) => {\n delete state.controlledFields.valueUpdateResolvers[fieldName];\n delete state.controlledFields.valueUpdatePromises[fieldName];\n });\n set((state) => {\n const promise = new Promise<void>((resolve) => {\n state.controlledFields.valueUpdateResolvers[fieldName] = resolve;\n }).then(clear);\n state.controlledFields.valueUpdatePromises[fieldName] = promise;\n });\n },\n\n awaitValueUpdate: async (fieldName) => {\n await get().controlledFields.valueUpdatePromises[fieldName];\n },\n\n array: {\n push: (fieldName, item) => {\n set((state) => {\n arrayUtil\n .getArray(state.controlledFields.values, fieldName)\n .push(item);\n arrayUtil.getArray(state.currentDefaultValues, fieldName).push(item);\n // New item added to the end, no need to update touched or error\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n\n swap: (fieldName, indexA, indexB) => {\n set((state) => {\n arrayUtil.swap(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n indexA,\n indexB\n );\n arrayUtil.swap(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n indexA,\n indexB\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.swap(array, indexA, indexB)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.swap(array, indexA, indexB)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n\n move: (fieldName, from, to) => {\n set((state) => {\n arrayUtil.move(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n from,\n to\n );\n arrayUtil.move(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n from,\n to\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.move(array, from, to)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.move(array, from, to)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n insert: (fieldName, index, item) => {\n set((state) => {\n arrayUtil.insert(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index,\n item\n );\n arrayUtil.insert(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index,\n item\n );\n // Even though this is a new item, we need to push around other items.\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.insert(array, index, false)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.insert(array, index, undefined)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n remove: (fieldName, index) => {\n set((state) => {\n arrayUtil.remove(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index\n );\n arrayUtil.remove(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.remove(array, index)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.remove(array, index)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n pop: (fieldName) => {\n set((state) => {\n arrayUtil.getArray(state.controlledFields.values, fieldName).pop();\n arrayUtil.getArray(state.currentDefaultValues, fieldName).pop();\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n array.pop()\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n array.pop()\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n unshift: (fieldName, value) => {\n set((state) => {\n arrayUtil\n .getArray(state.controlledFields.values, fieldName)\n .unshift(value);\n arrayUtil\n .getArray(state.currentDefaultValues, fieldName)\n .unshift(value);\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n array.unshift(false)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n array.unshift(undefined)\n );\n });\n },\n replace: (fieldName, index, item) => {\n set((state) => {\n arrayUtil.replace(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index,\n item\n );\n arrayUtil.replace(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index,\n item\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.replace(array, index, item)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.replace(array, index, item)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n },\n },\n});\n\nexport const useRootFormStore = create<FormStoreState>()(\n immer((set, get) => ({\n forms: {},\n form: (formId) => {\n return get().forms[formId] ?? defaultFormState;\n },\n cleanupForm: (formId: InternalFormId) => {\n set((state) => {\n delete state.forms[formId];\n });\n },\n registerForm: (formId: InternalFormId) => {\n if (get().forms[formId]) return;\n set((state) => {\n state.forms[formId] = createFormState(\n (setter) => set((state) => setter(state.forms[formId])),\n () => get().forms[formId]\n ) as WritableDraft<FormState>;\n });\n },\n }))\n);\n","import { FormState, useRootFormStore } from \"./createFormStore\";\nimport { InternalFormId } from \"./types\";\n\nexport const useFormStore = <T>(\n formId: InternalFormId,\n selector: (state: FormState) => T\n) => {\n return useRootFormStore((state) => selector(state.form(formId)));\n};\n","import { useActionData, useMatches, useTransition } from \"@remix-run/react\";\nimport { useCallback, useContext } from \"react\";\nimport { getPath } from \"set-get\";\nimport invariant from \"tiny-invariant\";\nimport { FieldErrors, ValidationErrorResponseData } from \"..\";\nimport { formDefaultValuesKey } from \"./constants\";\nimport { InternalFormContext, InternalFormContextValue } from \"./formContext\";\nimport { Hydratable, hydratable } from \"./hydratable\";\nimport { useFormStore } from \"./state/storeHooks\";\nimport { InternalFormId } from \"./state/types\";\n\nexport const useInternalFormContext = (\n formId?: string | symbol,\n hookName?: string\n) => {\n const formContext = useContext(InternalFormContext);\n\n if (formId) return { formId };\n if (formContext) return formContext;\n\n throw new Error(\n `Unable to determine form for ${hookName}. Please use it inside a ValidatedForm or pass a 'formId'.`\n );\n};\n\nexport function useErrorResponseForForm({\n fetcher,\n subaction,\n formId,\n}: InternalFormContextValue): ValidationErrorResponseData | null {\n const actionData = useActionData<any>();\n if (fetcher) {\n if ((fetcher.data as any)?.fieldErrors) return fetcher.data as any;\n return null;\n }\n\n if (!actionData?.fieldErrors) return null;\n\n // If there's an explicit id, we should ignore data that has the wrong id\n if (typeof formId === \"string\" && actionData.formId)\n return actionData.formId === formId ? actionData : null;\n\n if (\n (!subaction && !actionData.subaction) ||\n actionData.subaction === subaction\n )\n return actionData;\n\n return null;\n}\n\nexport const useFieldErrorsForForm = (\n context: InternalFormContextValue\n): Hydratable<FieldErrors | undefined> => {\n const response = useErrorResponseForForm(context);\n const hydrated = useFormStore(context.formId, (state) => state.isHydrated);\n return hydratable.from(response?.fieldErrors, hydrated);\n};\n\nexport const useDefaultValuesFromLoader = ({\n formId,\n}: InternalFormContextValue) => {\n const matches = useMatches();\n if (typeof formId === \"string\") {\n const dataKey = formDefaultValuesKey(formId);\n // If multiple loaders declare the same default values,\n // we should use the data from the deepest route.\n const match = matches\n .reverse()\n .find((match) => match.data && dataKey in match.data);\n return match?.data[dataKey];\n }\n\n return null;\n};\n\nexport const useDefaultValuesForForm = (\n context: InternalFormContextValue\n): Hydratable<{ [fieldName: string]: any }> => {\n const { formId, defaultValuesProp } = context;\n const hydrated = useFormStore(formId, (state) => state.isHydrated);\n const errorResponse = useErrorResponseForForm(context);\n const defaultValuesFromLoader = useDefaultValuesFromLoader(context);\n\n // Typical flow is:\n // - Default values only available from props or server\n // - Props have a higher priority than server\n // - State gets hydrated with default values\n // - After submit, we may need to use values from the error\n\n if (hydrated) return hydratable.hydratedData();\n if (errorResponse?.repopulateFields) {\n invariant(\n typeof errorResponse.repopulateFields === \"object\",\n \"repopulateFields returned something other than an object\"\n );\n return hydratable.serverData(errorResponse.repopulateFields);\n }\n if (defaultValuesProp) return hydratable.serverData(defaultValuesProp);\n\n return hydratable.serverData(defaultValuesFromLoader);\n};\n\nexport const useHasActiveFormSubmit = ({\n fetcher,\n}: InternalFormContextValue): boolean => {\n const transition = useTransition();\n const hasActiveSubmission = fetcher\n ? fetcher.state === \"submitting\"\n : !!transition.submission;\n return hasActiveSubmission;\n};\n\nexport const useFieldTouched = (\n field: string,\n { formId }: InternalFormContextValue\n) => {\n const touched = useFormStore(formId, (state) => state.touchedFields[field]);\n const setFieldTouched = useFormStore(formId, (state) => state.setTouched);\n const setTouched = useCallback(\n (touched: boolean) => setFieldTouched(field, touched),\n [field, setFieldTouched]\n );\n return [touched, setTouched] as const;\n};\n\nexport const useFieldError = (\n name: string,\n context: InternalFormContextValue\n) => {\n const fieldErrors = useFieldErrorsForForm(context);\n const state = useFormStore(\n context.formId,\n (state) => state.fieldErrors[name]\n );\n return fieldErrors.map((fieldErrors) => fieldErrors?.[name]).hydrateTo(state);\n};\n\nexport const useClearError = (context: InternalFormContextValue) => {\n const { formId } = context;\n return useFormStore(formId, (state) => state.clearFieldError);\n};\n\nexport const useCurrentDefaultValueForField = (\n formId: InternalFormId,\n field: string\n) =>\n useFormStore(formId, (state) => getPath(state.currentDefaultValues, field));\n\nexport const useFieldDefaultValue = (\n name: string,\n context: InternalFormContextValue\n) => {\n const defaultValues = useDefaultValuesForForm(context);\n const state = useCurrentDefaultValueForField(context.formId, name);\n\n return defaultValues.map((val) => getPath(val, name)).hydrateTo(state);\n};\n\nexport const useInternalIsSubmitting = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.isSubmitting);\n\nexport const useInternalIsValid = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.isValid());\n\nexport const useInternalHasBeenSubmitted = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.hasBeenSubmitted);\n\nexport const useValidateField = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.validateField);\n\nexport const useValidate = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.validate);\n\nconst noOpReceiver = () => () => {};\nexport const useRegisterReceiveFocus = (formId: InternalFormId) =>\n useFormStore(\n formId,\n (state) => state.formProps?.registerReceiveFocus ?? noOpReceiver\n );\n\nconst defaultDefaultValues = {};\nexport const useSyncedDefaultValues = (formId: InternalFormId) =>\n useFormStore(\n formId,\n (state) => state.formProps?.defaultValues ?? defaultDefaultValues\n );\n\nexport const useSetTouched = ({ formId }: InternalFormContextValue) =>\n useFormStore(formId, (state) => state.setTouched);\n\nexport const useTouchedFields = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.touchedFields);\n\nexport const useFieldErrors = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.fieldErrors);\n\nexport const useSetFieldErrors = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.setFieldErrors);\n\nexport const useResetFormElement = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.resetFormElement);\n\nexport const useSubmitForm = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.submit);\n\nexport const useFormActionProp = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.formProps?.action);\n\nexport const useFormSubactionProp = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.formProps?.subaction);\n\nexport const useFormValues = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.getValues);\n","import { useCallback, useEffect } from \"react\";\nimport { InternalFormContextValue } from \"../formContext\";\nimport { useFieldDefaultValue } from \"../hooks\";\nimport { useFormStore } from \"./storeHooks\";\nimport { InternalFormId } from \"./types\";\n\nexport const useControlledFieldValue = (\n context: InternalFormContextValue,\n field: string\n) => {\n const value = useFormStore(context.formId, (state) =>\n state.controlledFields.getValue(field)\n );\n const isFormHydrated = useFormStore(\n context.formId,\n (state) => state.isHydrated\n );\n const defaultValue = useFieldDefaultValue(field, context);\n\n return isFormHydrated ? value : defaultValue;\n};\n\nexport const useRegisterControlledField = (\n context: InternalFormContextValue,\n field: string\n) => {\n const resolveUpdate = useFormStore(\n context.formId,\n (state) => state.controlledFields.valueUpdateResolvers[field]\n );\n useEffect(() => {\n resolveUpdate?.();\n }, [resolveUpdate]);\n\n const register = useFormStore(\n context.formId,\n (state) => state.controlledFields.register\n );\n const unregister = useFormStore(\n context.formId,\n (state) => state.controlledFields.unregister\n );\n useEffect(() => {\n register(field);\n return () => unregister(field);\n }, [context.formId, field, register, unregister]);\n};\n\nexport const useControllableValue = (\n context: InternalFormContextValue,\n field: string\n) => {\n useRegisterControlledField(context, field);\n\n const setControlledFieldValue = useFormStore(\n context.formId,\n (state) => state.controlledFields.setValue\n );\n const setValue = useCallback(\n (value: unknown) => setControlledFieldValue(field, value),\n [field, setControlledFieldValue]\n );\n\n const value = useControlledFieldValue(context, field);\n\n return [value, setValue] as const;\n};\n\nexport const useUpdateControllableValue = (formId: InternalFormId) => {\n const setValue = useFormStore(\n formId,\n (state) => state.controlledFields.setValue\n );\n return useCallback(\n (field: string, value: unknown) => setValue(field, value),\n [setValue]\n );\n};\n\nexport const useAwaitValue = (formId: InternalFormId) => {\n const awaitValue = useFormStore(\n formId,\n (state) => state.controlledFields.awaitValueUpdate\n );\n return useCallback((field: string) => awaitValue(field), [awaitValue]);\n};\n","import { useEffect, useMemo } from \"react\";\nimport {\n createGetInputProps,\n GetInputProps,\n ValidationBehaviorOptions,\n} from \"./internal/getInputProps\";\nimport {\n useInternalFormContext,\n useFieldTouched,\n useFieldError,\n useFieldDefaultValue,\n useClearError,\n useInternalIsSubmitting,\n useInternalIsValid,\n useInternalHasBeenSubmitted,\n useValidateField,\n useRegisterReceiveFocus,\n} from \"./internal/hooks\";\nimport {\n useControllableValue,\n useUpdateControllableValue,\n} from \"./internal/state/controlledFields\";\n\n/**\n * Returns whether or not the parent form is currently being submitted.\n * This is different from remix's `useTransition().submission` in that it\n * is aware of what form it's in and when _that_ form is being submitted.\n *\n * @param formId\n */\nexport const useIsSubmitting = (formId?: string) => {\n const formContext = useInternalFormContext(formId, \"useIsSubmitting\");\n return useInternalIsSubmitting(formContext.formId);\n};\n\n/**\n * Returns whether or not the current form is valid.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useIsValid = (formId?: string) => {\n const formContext = useInternalFormContext(formId, \"useIsValid\");\n return useInternalIsValid(formContext.formId);\n};\n\nexport type FieldProps = {\n /**\n * The validation error message if there is one.\n */\n error?: string;\n /**\n * Clears the error message.\n */\n clearError: () => void;\n /**\n * Validates the field.\n */\n validate: () => void;\n /**\n * The default value of the field, if there is one.\n */\n defaultValue?: any;\n /**\n * Whether or not the field has been touched.\n */\n touched: boolean;\n /**\n * Helper to set the touched state of the field.\n */\n setTouched: (touched: boolean) => void;\n /**\n * Helper to get all the props necessary for a regular input.\n */\n getInputProps: GetInputProps;\n};\n\n/**\n * Provides the data and helpers necessary to set up a field.\n */\nexport const useField = (\n name: string,\n options?: {\n /**\n * Allows you to configure a custom function that will be called\n * when the input needs to receive focus due to a validation error.\n * This is useful for custom components that use a hidden input.\n */\n handleReceiveFocus?: () => void;\n /**\n * Allows you to specify when a field gets validated (when using getInputProps)\n */\n validationBehavior?: Partial<ValidationBehaviorOptions>;\n /**\n * The formId of the form you want to use.\n * This is not necesary if the input is used inside a form.\n */\n formId?: string;\n }\n): FieldProps => {\n const { formId: providedFormId, handleReceiveFocus } = options ?? {};\n const formContext = useInternalFormContext(providedFormId, \"useField\");\n\n const defaultValue = useFieldDefaultValue(name, formContext);\n const [touched, setTouched] = useFieldTouched(name, formContext);\n const error = useFieldError(name, formContext);\n const clearError = useClearError(formContext);\n\n const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);\n const validateField = useValidateField(formContext.formId);\n const registerReceiveFocus = useRegisterReceiveFocus(formContext.formId);\n\n useEffect(() => {\n if (handleReceiveFocus)\n return registerReceiveFocus(name, handleReceiveFocus);\n }, [handleReceiveFocus, name, registerReceiveFocus]);\n\n const field = useMemo<FieldProps>(() => {\n const helpers = {\n error,\n clearError: () => clearError(name),\n validate: () => {\n validateField(name);\n },\n defaultValue,\n touched,\n setTouched,\n };\n const getInputProps = createGetInputProps({\n ...helpers,\n name,\n hasBeenSubmitted,\n validationBehavior: options?.validationBehavior,\n });\n return {\n ...helpers,\n getInputProps,\n };\n }, [\n error,\n clearError,\n defaultValue,\n touched,\n setTouched,\n name,\n hasBeenSubmitted,\n options?.validationBehavior,\n validateField,\n ]);\n\n return field;\n};\n\nexport const useControlField = <T>(name: string, formId?: string) => {\n const context = useInternalFormContext(formId, \"useControlField\");\n const [value, setValue] = useControllableValue(context, name);\n return [value as T, setValue as (value: T) => void] as const;\n};\n\nexport const useUpdateControlledField = (formId?: string) => {\n const context = useInternalFormContext(formId, \"useControlField\");\n return useUpdateControllableValue(context.formId);\n};\n","/**\n * @remix-run/server-runtime v1.6.5\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// must be a type since this is a subtype of response\n// interfaces must conform to the types they extend\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @see https://remix.run/api/remix#json\n */\nconst json = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), { ...responseInit,\n headers\n });\n};\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n *\n * @see https://remix.run/api/remix#redirect\n */\nconst redirect = (url, init = 302) => {\n let responseInit = init;\n\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, { ...responseInit,\n headers\n });\n};\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nfunction isRedirectResponse(response) {\n return redirectStatusCodes.has(response.status);\n}\nfunction isCatchResponse(response) {\n return response.headers.get(\"X-Remix-Catch\") != null;\n}\n\nexport { isCatchResponse, isRedirectResponse, isResponse, json, redirect };\n","import { json } from \"remix\";\nimport {\n formDefaultValuesKey,\n FORM_DEFAULTS_FIELD,\n} from \"./internal/constants\";\nimport {\n ValidatorError,\n ValidationErrorResponseData,\n} from \"./validation/types\";\n\n/**\n * Takes the errors from a `Validator` and returns a `Response`.\n * When you return this from your action, `ValidatedForm` on the frontend will automatically\n * display the errors on the correct fields on the correct form.\n *\n * You can also provide a second argument to `validationError`\n * to specify how to repopulate the form when JS is disabled.\n *\n * @example\n * ```ts\n * const result = validator.validate(await request.formData());\n * if (result.error) return validationError(result.error, result.submittedData);\n * ```\n */\nexport function validationError(\n error: ValidatorError,\n repopulateFields?: unknown,\n init?: ResponseInit\n) {\n return json<ValidationErrorResponseData>(\n {\n fieldErrors: error.fieldErrors,\n subaction: error.subaction,\n repopulateFields,\n formId: error.formId,\n },\n { status: 422, ...init }\n );\n}\n\nexport type FormDefaults = {\n [formDefaultsKey: `${typeof FORM_DEFAULTS_FIELD}_${string}`]: any;\n};\n\nexport const setFormDefaults = <DataType = any>(\n formId: string,\n defaultValues: Partial<DataType>\n): FormDefaults => ({\n [formDefaultValuesKey(formId)]: defaultValues,\n});\n","import { useCallback, useRef } from \"react\";\n\nexport class MultiValueMap<Key, Value> {\n private dict: Map<Key, Value[]> = new Map();\n\n add = (key: Key, value: Value) => {\n if (this.dict.has(key)) {\n this.dict.get(key)!.push(value);\n } else {\n this.dict.set(key, [value]);\n }\n };\n\n delete = (key: Key) => {\n this.dict.delete(key);\n };\n\n remove = (key: Key, value: Value) => {\n if (!this.dict.has(key)) return;\n const array = this.dict.get(key)!;\n const index = array.indexOf(value);\n if (index !== -1) array.splice(index, 1);\n if (array.length === 0) this.dict.delete(key);\n };\n\n getAll = (key: Key): Value[] => {\n return this.dict.get(key) ?? [];\n };\n\n entries = (): IterableIterator<[Key, Value[]]> => this.dict.entries();\n\n values = (): IterableIterator<Value[]> => this.dict.values();\n\n has = (key: Key): boolean => this.dict.has(key);\n}\n\nexport const useMultiValueMap = <Key, Value>() => {\n const ref = useRef<MultiValueMap<Key, Value> | null>(null);\n return useCallback(() => {\n if (ref.current) return ref.current;\n ref.current = new MultiValueMap();\n return ref.current;\n }, []);\n};\n","import { useEffect, useRef } from \"react\";\n\nexport function useSubmitComplete(isSubmitting: boolean, callback: () => void) {\n const isPending = useRef(false);\n useEffect(() => {\n if (isSubmitting) {\n isPending.current = true;\n }\n\n if (!isSubmitting && isPending.current) {\n isPending.current = false;\n callback();\n }\n });\n}\n","import type React from \"react\";\nimport { useEffect, useLayoutEffect, useRef } from \"react\";\nimport * as R from \"remeda\";\n\nexport const omit = (obj: any, ...keys: string[]) => {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n};\n\nexport const mergeRefs = <T = any>(\n refs: Array<React.MutableRefObject<T> | React.LegacyRef<T> | undefined>\n): React.RefCallback<T> => {\n return (value: T) => {\n refs.filter(Boolean).forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n });\n };\n};\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const useDeepEqualsMemo = <T>(item: T): T => {\n const ref = useRef<T>(item);\n const areEqual = ref.current === item || R.equals(ref.current, item);\n useEffect(() => {\n if (!areEqual) {\n ref.current = item;\n }\n });\n return areEqual ? ref.current : item;\n};\n","import {\n Form as RemixForm,\n FormMethod,\n useFetcher,\n useSubmit,\n} from \"@remix-run/react\";\nimport React, {\n ComponentProps,\n FormEvent,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport * as R from \"remeda\";\nimport { useIsSubmitting, useIsValid } from \"./hooks\";\nimport { FORM_ID_FIELD } from \"./internal/constants\";\nimport {\n InternalFormContext,\n InternalFormContextValue,\n} from \"./internal/formContext\";\nimport {\n useDefaultValuesFromLoader,\n useErrorResponseForForm,\n useHasActiveFormSubmit,\n useSetFieldErrors,\n} from \"./internal/hooks\";\nimport { MultiValueMap, useMultiValueMap } from \"./internal/MultiValueMap\";\nimport {\n SyncedFormProps,\n useRootFormStore,\n} from \"./internal/state/createFormStore\";\nimport { useFormStore } from \"./internal/state/storeHooks\";\nimport { useSubmitComplete } from \"./internal/submissionCallbacks\";\nimport {\n mergeRefs,\n useDeepEqualsMemo,\n useIsomorphicLayoutEffect as useLayoutEffect,\n} from \"./internal/util\";\nimport { FieldErrors, Validator } from \"./validation/types\";\n\nexport type FormProps<DataType> = {\n /**\n * A `Validator` object that describes how to validate the form.\n */\n validator: Validator<DataType>;\n /**\n * A submit callback that gets called when the form is submitted\n * after all validations have been run.\n */\n onSubmit?: (\n data: DataType,\n event: React.FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n /**\n * Allows you to provide a `fetcher` from remix's `useFetcher` hook.\n * The form will use the fetcher for loading states, action data, etc\n * instead of the default form action.\n */\n fetcher?: ReturnType<typeof useFetcher>;\n /**\n * Accepts an object of default values for the form\n * that will automatically be propagated to the form fields via `useField`.\n */\n defaultValues?: Partial<DataType>;\n /**\n * A ref to the form element.\n */\n formRef?: React.RefObject<HTMLFormElement>;\n /**\n * An optional sub-action to use for the form.\n * Setting a value here will cause the form to be submitted with an extra `subaction` value.\n * This can be useful when there are multiple forms on the screen handled by the same action.\n */\n subaction?: string;\n /**\n * Reset the form to the default values after the form has been successfully submitted.\n * This is useful if you want to submit the same form multiple times,\n * and don't redirect in-between submissions.\n */\n resetAfterSubmit?: boolean;\n /**\n * Normally, the first invalid input will be focused when the validation fails on form submit.\n * Set this to `false` to disable this behavior.\n */\n disableFocusOnError?: boolean;\n} & Omit<ComponentProps<typeof RemixForm>, \"onSubmit\">;\n\nconst getDataFromForm = (el: HTMLFormElement) => new FormData(el);\n\nfunction nonNull<T>(value: T | null | undefined): value is T {\n return value !== null;\n}\n\nconst focusFirstInvalidInput = (\n fieldErrors: FieldErrors,\n customFocusHandlers: MultiValueMap<string, () => void>,\n formElement: HTMLFormElement\n) => {\n const namesInOrder = [...formElement.elements]\n .map((el) => {\n const input = el instanceof RadioNodeList ? el[0] : el;\n if (input instanceof HTMLElement && \"name\" in input)\n return (input as any).name;\n return null;\n })\n .filter(nonNull)\n .filter((name) => name in fieldErrors);\n const uniqueNamesInOrder = R.uniq(namesInOrder);\n\n for (const fieldName of uniqueNamesInOrder) {\n if (customFocusHandlers.has(fieldName)) {\n customFocusHandlers.getAll(fieldName).forEach((handler) => {\n handler();\n });\n break;\n }\n\n const elem = formElement.elements.namedItem(fieldName);\n if (!elem) continue;\n\n if (elem instanceof RadioNodeList) {\n const selectedRadio =\n [...elem]\n .filter(\n (item): item is HTMLInputElement => item instanceof HTMLInputElement\n )\n .find((item) => item.value === elem.value) ?? elem[0];\n if (selectedRadio && selectedRadio instanceof HTMLInputElement) {\n selectedRadio.focus();\n break;\n }\n }\n\n if (elem instanceof HTMLElement) {\n if (elem instanceof HTMLInputElement && elem.type === \"hidden\") {\n continue;\n }\n\n elem.focus();\n break;\n }\n }\n};\n\nconst useFormId = (providedId?: string): string | symbol => {\n // We can use a `Symbol` here because we only use it after hydration\n const [symbolId] = useState(() => Symbol(\"remix-validated-form-id\"));\n return providedId ?? symbolId;\n};\n\n/**\n * Use a component to access the state so we don't cause\n * any extra rerenders of the whole form.\n */\nconst FormResetter = ({\n resetAfterSubmit,\n formRef,\n}: {\n resetAfterSubmit: boolean;\n formRef: RefObject<HTMLFormElement>;\n}) => {\n const isSubmitting = useIsSubmitting();\n const isValid = useIsValid();\n useSubmitComplete(isSubmitting, () => {\n if (isValid && resetAfterSubmit) {\n formRef.current?.reset();\n }\n });\n return null;\n};\n\nfunction formEventProxy<T extends object>(event: T): T {\n let defaultPrevented = false;\n return new Proxy(event, {\n get: (target, prop) => {\n if (prop === \"preventDefault\") {\n return () => {\n defaultPrevented = true;\n };\n }\n\n if (prop === \"defaultPrevented\") {\n return defaultPrevented;\n }\n\n return target[prop as keyof T];\n },\n }) as T;\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\n/**\n * The primary form component of `remix-validated-form`.\n */\nexport function ValidatedForm<DataType>({\n validator,\n onSubmit,\n children,\n fetcher,\n action,\n defaultValues: unMemoizedDefaults,\n formRef: formRefProp,\n onReset,\n subaction,\n resetAfterSubmit = false,\n disableFocusOnError,\n method,\n replace,\n id,\n ...rest\n}: FormProps<DataType>) {\n const formId = useFormId(id);\n const providedDefaultValues = useDeepEqualsMemo(unMemoizedDefaults);\n const contextValue = useMemo<InternalFormContextValue>(\n () => ({\n formId,\n action,\n subaction,\n defaultValuesProp: providedDefaultValues,\n fetcher,\n }),\n [action, fetcher, formId, providedDefaultValues, subaction]\n );\n const backendError = useErrorResponseForForm(contextValue);\n const backendDefaultValues = useDefaultValuesFromLoader(contextValue);\n const hasActiveSubmission = useHasActiveFormSubmit(contextValue);\n const formRef = useRef<HTMLFormElement>(null);\n const Form = fetcher?.Form ?? RemixForm;\n\n const submit = useSubmit();\n const setFieldErrors = useSetFieldErrors(formId);\n const setFieldError = useFormStore(formId, (state) => state.setFieldError);\n const reset = useFormStore(formId, (state) => state.reset);\n const startSubmit = useFormStore(formId, (state) => state.startSubmit);\n const endSubmit = useFormStore(formId, (state) => state.endSubmit);\n const syncFormProps = useFormStore(formId, (state) => state.syncFormProps);\n const setFormElementInState = useFormStore(\n formId,\n (state) => state.setFormElement\n );\n const cleanupForm = useRootFormStore((state) => state.cleanupForm);\n const registerForm = useRootFormStore((state) => state.registerForm);\n\n const customFocusHandlers = useMultiValueMap<string, () => void>();\n const registerReceiveFocus: SyncedFormProps[\"registerReceiveFocus\"] =\n useCallback(\n (fieldName, handler) => {\n customFocusHandlers().add(fieldName, handler);\n return () => {\n customFocusHandlers().remove(fieldName, handler);\n };\n },\n [customFocusHandlers]\n );\n\n // TODO: all these hooks running at startup cause extra, unnecessary renders\n // There must be a nice way to avoid this.\n useLayoutEffect(() => {\n registerForm(formId);\n return () => cleanupForm(formId);\n }, [cleanupForm, formId, registerForm]);\n\n useLayoutEffect(() => {\n syncFormProps({\n action,\n defaultValues: providedDefaultValues ?? backendDefaultValues ?? {},\n subaction,\n registerReceiveFocus,\n validator,\n });\n }, [\n action,\n providedDefaultValues,\n registerReceiveFocus,\n subaction,\n syncFormProps,\n backendDefaultValues,\n validator,\n ]);\n\n useLayoutEffect(() => {\n setFormElementInState(formRef.current);\n }, [setFormElementInState]);\n\n useEffect(() => {\n setFieldErrors(backendError?.fieldErrors ?? {});\n }, [backendError?.fieldErrors, setFieldErrors, setFieldError]);\n\n useSubmitComplete(hasActiveSubmission, () => {\n endSubmit();\n });\n\n const handleSubmit = async (\n e: FormEvent<HTMLFormElement>,\n target: typeof e.currentTarget,\n nativeEvent: HTMLSubmitEvent[\"nativeEvent\"]\n ) => {\n startSubmit();\n const submitter = nativeEvent.submitter as HTMLFormSubmitter | null;\n const formDataToValidate = getDataFromForm(e.currentTarget);\n if (submitter?.name) {\n formDataToValidate.append(submitter.name, submitter.value);\n }\n\n const result = await validator.validate(formDataToValidate);\n if (result.error) {\n setFieldErrors(result.error.fieldErrors);\n endSubmit();\n if (!disableFocusOnError) {\n focusFirstInvalidInput(\n result.error.fieldErrors,\n customFocusHandlers(),\n formRef.current!\n );\n }\n } else {\n setFieldErrors({});\n const eventProxy = formEventProxy(e);\n await onSubmit?.(result.data, eventProxy);\n if (eventProxy.defaultPrevented) {\n endSubmit();\n return;\n }\n\n // We deviate from the remix code here a bit because of our async submit.\n // In remix's `FormImpl`, they use `event.currentTarget` to get the form,\n // but we already have the form in `formRef.current` so we can just use that.\n // If we use `event.currentTarget` here, it will break because `currentTarget`\n // will have changed since the start of the submission.\n if (fetcher) fetcher.submit(submitter || e.currentTarget);\n else\n submit(submitter || target, {\n replace,\n method: (submitter?.formMethod as FormMethod) || method,\n });\n }\n };\n\n return (\n <Form\n ref={mergeRefs([formRef, formRefProp])}\n {...rest}\n id={id}\n action={action}\n method={method}\n replace={replace}\n onSubmit={(e) => {\n e.preventDefault();\n handleSubmit(\n e,\n e.currentTarget,\n (e as unknown as HTMLSubmitEvent).nativeEvent\n );\n }}\n onReset={(event) => {\n onReset?.(event);\n if (event.defaultPrevented) return;\n reset();\n }}\n >\n <InternalFormContext.Provider value={contextValue}>\n <>\n <FormResetter formRef={formRef} resetAfterSubmit={resetAfterSubmit} />\n {subaction && (\n <input type=\"hidden\" value={subaction} name=\"subaction\" />\n )}\n {id && <input type=\"hidden\" value={id} name={FORM_ID_FIELD} />}\n {children}\n </>\n </InternalFormContext.Provider>\n </Form>\n );\n}\n","import { setPath } from \"set-get\";\nimport { MultiValueMap } from \"./MultiValueMap\";\n\nexport const objectFromPathEntries = (entries: [string, any][]) => {\n const map = new MultiValueMap<string, any>();\n entries.forEach(([key, value]) => map.add(key, value));\n return [...map.entries()].reduce(\n (acc, [key, value]) =>\n setPath(acc, key, value.length === 1 ? value[0] : value),\n {} as Record<string, any>\n );\n};\n","import * as R from \"remeda\";\nimport { CreateValidatorArg, GenericObject, Validator } from \"..\";\nimport { FORM_ID_FIELD } from \"../internal/constants\";\nimport { objectFromPathEntries } from \"../internal/flatten\";\n\nconst preprocessFormData = (data: GenericObject | FormData): GenericObject => {\n // A slightly janky way of determining if the data is a FormData object\n // since node doesn't really have FormData\n if (\"entries\" in data && typeof data.entries === \"function\")\n return objectFromPathEntries([...data.entries()]);\n return objectFromPathEntries(Object.entries(data));\n};\n\nconst omitInternalFields = (data: GenericObject): GenericObject =>\n R.omit(data, [FORM_ID_FIELD]);\n\n/**\n * Used to create a validator for a form.\n * It provides built-in handling for unflattening nested objects and\n * extracting the values from FormData.\n */\nexport function createValidator<T>(\n validator: CreateValidatorArg<T>\n): Validator<T> {\n return {\n validate: async (value) => {\n const data = preprocessFormData(value);\n const result = await validator.validate(omitInternalFields(data));\n\n if (result.error) {\n return {\n data: undefined,\n error: {\n fieldErrors: result.error,\n subaction: data.subaction,\n formId: data[FORM_ID_FIELD],\n },\n submittedData: data,\n formId: data[FORM_ID_FIELD],\n };\n }\n\n return {\n data: result.data,\n error: undefined,\n submittedData: data,\n formId: data[FORM_ID_FIELD],\n };\n },\n validateField: (data: GenericObject | FormData, field: string) =>\n validator.validateField(preprocessFormData(data), field),\n };\n}\n","import { useMemo } from \"react\";\nimport {} from \"../internal/getInputProps\";\nimport {\n useInternalFormContext,\n useClearError,\n useSetTouched,\n useDefaultValuesForForm,\n useFieldErrorsForForm,\n useInternalIsSubmitting,\n useInternalHasBeenSubmitted,\n useTouchedFields,\n useInternalIsValid,\n useFieldErrors,\n useValidateField,\n useValidate,\n useSetFieldErrors,\n useResetFormElement,\n useSyncedDefaultValues,\n useFormActionProp,\n useFormSubactionProp,\n useSubmitForm,\n useFormValues,\n} from \"../internal/hooks\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n} from \"../validation/types\";\n\nexport type FormState = {\n fieldErrors: FieldErrors;\n isSubmitting: boolean;\n hasBeenSubmitted: boolean;\n touchedFields: TouchedFields;\n defaultValues: { [fieldName: string]: any };\n action?: string;\n subaction?: string;\n isValid: boolean;\n};\n\n/**\n * Returns information about the form.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useFormState = (formId?: string): FormState => {\n const formContext = useInternalFormContext(formId, \"useFormState\");\n const isSubmitting = useInternalIsSubmitting(formContext.formId);\n const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);\n const touchedFields = useTouchedFields(formContext.formId);\n const isValid = useInternalIsValid(formContext.formId);\n const action = useFormActionProp(formContext.formId);\n const subaction = useFormSubactionProp(formContext.formId);\n\n const syncedDefaultValues = useSyncedDefaultValues(formContext.formId);\n const defaultValuesToUse = useDefaultValuesForForm(formContext);\n const hydratedDefaultValues =\n defaultValuesToUse.hydrateTo(syncedDefaultValues);\n\n const fieldErrorsFromState = useFieldErrors(formContext.formId);\n const fieldErrorsToUse = useFieldErrorsForForm(formContext);\n const hydratedFieldErrors = fieldErrorsToUse.hydrateTo(fieldErrorsFromState);\n\n return useMemo(\n () => ({\n action,\n subaction,\n defaultValues: hydratedDefaultValues,\n fieldErrors: hydratedFieldErrors ?? {},\n hasBeenSubmitted,\n isSubmitting,\n touchedFields,\n isValid,\n }),\n [\n action,\n hasBeenSubmitted,\n hydratedDefaultValues,\n hydratedFieldErrors,\n isSubmitting,\n isValid,\n subaction,\n touchedFields,\n ]\n );\n};\n\nexport type FormHelpers = {\n /**\n * Clear the error of the specified field.\n */\n clearError: (fieldName: string) => void;\n /**\n * Validate the specified field.\n */\n validateField: (fieldName: string) => Promise<string | null>;\n /**\n * Change the touched state of the specified field.\n */\n setTouched: (fieldName: string, touched: boolean) => void;\n /**\n * Validate the whole form and populate any errors.\n */\n validate: () => Promise<ValidationResult<unknown>>;\n /**\n * Clears all errors on the form.\n */\n clearAllErrors: () => void;\n /**\n * Resets the form.\n *\n * _Note_: The equivalent behavior can be achieved by calling formElement.reset()\n * or clicking a button element with `type=\"reset\"`.\n */\n reset: () => void;\n /**\n * Submits the form, running all validations first.\n *\n * _Note_: This is equivalent to clicking a button element with `type=\"submit\"` or calling formElement.submit().\n */\n submit: () => void;\n /**\n * Returns the current form values as FormData\n */\n getValues: () => FormData;\n};\n\n/**\n * Returns helpers that can be used to update the form state.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useFormHelpers = (formId?: string): FormHelpers => {\n const formContext = useInternalFormContext(formId, \"useFormHelpers\");\n const setTouched = useSetTouched(formContext);\n const validateField = useValidateField(formContext.formId);\n const validate = useValidate(formContext.formId);\n const clearError = useClearError(formContext);\n const setFieldErrors = useSetFieldErrors(formContext.formId);\n const reset = useResetFormElement(formContext.formId);\n const submit = useSubmitForm(formContext.formId);\n const getValues = useFormValues(formContext.formId);\n return useMemo(\n () => ({\n setTouched,\n validateField,\n clearError,\n validate,\n clearAllErrors: () => setFieldErrors({}),\n reset,\n submit,\n getValues,\n }),\n [\n clearError,\n reset,\n setFieldErrors,\n setTouched,\n submit,\n validate,\n validateField,\n getValues,\n ]\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport {\n useInternalFormContext,\n useRegisterReceiveFocus,\n} from \"./internal/hooks\";\nimport { useFormHelpers, useFormState } from \"./unreleased/formStateHooks\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n} from \"./validation/types\";\n\nexport type FormContextValue = {\n /**\n * All the errors in all the fields in the form.\n */\n fieldErrors: FieldErrors;\n /**\n * Clear the errors of the specified fields.\n */\n clearError: (...names: string[]) => void;\n /**\n * Validate the specified field.\n */\n validateField: (fieldName: string) => Promise<string | null>;\n /**\n * The `action` prop of the form.\n */\n action?: string;\n /**\n * The `subaction` prop of the form.\n */\n subaction?: string;\n /**\n * Whether or not the form is submitting.\n */\n isSubmitting: boolean;\n /**\n * Whether or not a submission has been attempted.\n * This is true once the form has been submitted, even if there were validation errors.\n * Resets to false when the form is reset.\n */\n hasBeenSubmitted: boolean;\n /**\n * Whether or not the form is valid.\n */\n isValid: boolean;\n /**\n * The default values of the form.\n */\n defaultValues?: { [fieldName: string]: any };\n /**\n * Register a custom focus handler to be used when\n * the field needs to receive focus due to a validation error.\n */\n registerReceiveFocus: (fieldName: string, handler: () => void) => () => void;\n /**\n * Any fields that have been touched by the user.\n */\n touchedFields: TouchedFields;\n /**\n * Change the touched state of the specified field.\n */\n setFieldTouched: (fieldName: string, touched: boolean) => void;\n /**\n * Validate the whole form and populate any errors.\n */\n validate: () => Promise<ValidationResult<unknown>>;\n /**\n * Clears all errors on the form.\n */\n clearAllErrors: () => void;\n /**\n * Resets the form.\n *\n * _Note_: The equivalent behavior can be achieved by calling formElement.reset()\n * or clicking a button element with `type=\"reset\"`.\n */\n reset: () => void;\n /**\n * Submits the form, running all validations first.\n *\n * _Note_: This is equivalent to clicking a button element with `type=\"submit\"` or calling formElement.submit().\n */\n submit: () => void;\n /**\n * Returns the current form values as FormData\n */\n getValues: () => FormData;\n};\n\n/**\n * Provides access to some of the internal state of the form.\n */\nexport const useFormContext = (formId?: string): FormContextValue => {\n // Try to access context so we get our error specific to this hook if it's not there\n const context = useInternalFormContext(formId, \"useFormContext\");\n const state = useFormState(formId);\n const {\n clearError: internalClearError,\n setTouched,\n validateField,\n clearAllErrors,\n validate,\n reset,\n submit,\n getValues,\n } = useFormHelpers(formId);\n\n const registerReceiveFocus = useRegisterReceiveFocus(context.formId);\n\n const clearError = useCallback(\n (...names: string[]) => {\n names.forEach((name) => {\n internalClearError(name);\n });\n },\n [internalClearError]\n );\n\n return useMemo(\n () => ({\n ...state,\n setFieldTouched: setTouched,\n validateField,\n clearError,\n registerReceiveFocus,\n clearAllErrors,\n validate,\n reset,\n submit,\n getValues,\n }),\n [\n clearAllErrors,\n clearError,\n registerReceiveFocus,\n reset,\n setTouched,\n state,\n submit,\n validate,\n validateField,\n getValues,\n ]\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useCallback } from \"react\";\nimport invariant from \"tiny-invariant\";\nimport { InternalFormContextValue } from \"../formContext\";\nimport {\n useFieldDefaultValue,\n useFieldError,\n useInternalFormContext,\n useInternalHasBeenSubmitted,\n useValidateField,\n} from \"../hooks\";\nimport { useRegisterControlledField } from \"./controlledFields\";\nimport { useFormStore } from \"./storeHooks\";\n\nexport type FieldArrayValidationBehavior = \"onChange\" | \"onSubmit\";\n\nexport type FieldArrayValidationBehaviorOptions = {\n initial: FieldArrayValidationBehavior;\n whenSubmitted: FieldArrayValidationBehavior;\n};\n\nconst useInternalFieldArray = (\n context: InternalFormContextValue,\n field: string,\n validationBehavior?: Partial<FieldArrayValidationBehaviorOptions>\n) => {\n const value = useFieldDefaultValue(field, context);\n useRegisterControlledField(context, field);\n const hasBeenSubmitted = useInternalHasBeenSubmitted(context.formId);\n const validateField = useValidateField(context.formId);\n const error = useFieldError(field, context);\n\n const resolvedValidationBehavior: FieldArrayValidationBehaviorOptions = {\n initial: \"onSubmit\",\n whenSubmitted: \"onChange\",\n ...validationBehavior,\n };\n\n const behavior = hasBeenSubmitted\n ? resolvedValidationBehavior.whenSubmitted\n : resolvedValidationBehavior.initial;\n\n const maybeValidate = useCallback(() => {\n if (behavior === \"onChange\") {\n validateField(field);\n }\n }, [behavior, field, validateField]);\n\n invariant(\n value === undefined || value === null || Array.isArray(value),\n `FieldArray: defaultValue value for ${field} must be an array, null, or undefined`\n );\n\n const arr = useFormStore(\n context.formId,\n (state) => state.controlledFields.array\n );\n\n const helpers = useMemo(\n () => ({\n push: (item: any) => {\n arr.push(field, item);\n maybeValidate();\n },\n swap: (indexA: number, indexB: number) => {\n arr.swap(field, indexA, indexB);\n maybeValidate();\n },\n move: (from: number, to: number) => {\n arr.move(field, from, to);\n maybeValidate();\n },\n insert: (index: number, value: any) => {\n arr.insert(field, index, value);\n maybeValidate();\n },\n unshift: (value: any) => {\n arr.unshift(field, value);\n maybeValidate();\n },\n remove: (index: number) => {\n arr.remove(field, index);\n maybeValidate();\n },\n pop: () => {\n arr.pop(field);\n maybeValidate();\n },\n replace: (index: number, value: any) => {\n arr.replace(field, index, value);\n maybeValidate();\n },\n }),\n [arr, field, maybeValidate]\n );\n\n const arrayValue = useMemo(() => value ?? [], [value]);\n\n return [arrayValue, helpers, error] as const;\n};\n\nexport type FieldArrayHelpers<Item = any> = {\n push: (item: Item) => void;\n swap: (indexA: number, indexB: number) => void;\n move: (from: number, to: number) => void;\n insert: (index: number, value: Item) => void;\n unshift: (value: Item) => void;\n remove: (index: number) => void;\n pop: () => void;\n replace: (index: number, value: Item) => void;\n};\n\nexport type UseFieldArrayOptions = {\n formId?: string;\n validationBehavior?: Partial<FieldArrayValidationBehaviorOptions>;\n};\n\nexport function useFieldArray<Item = any>(\n name: string,\n { formId, validationBehavior }: UseFieldArrayOptions = {}\n) {\n const context = useInternalFormContext(formId, \"FieldArray\");\n\n return useInternalFieldArray(context, name, validationBehavior) as [\n itemDefaults: Item[],\n helpers: FieldArrayHelpers,\n error: string | undefined\n ];\n}\n\nexport type FieldArrayProps = {\n name: string;\n children: (\n itemDefaults: any[],\n helpers: FieldArrayHelpers,\n error: string | undefined\n ) => React.ReactNode;\n formId?: string;\n validationBehavior?: FieldArrayValidationBehaviorOptions;\n};\n\nexport const FieldArray = ({\n name,\n children,\n formId,\n validationBehavior,\n}: FieldArrayProps) => {\n const context = useInternalFormContext(formId, \"FieldArray\");\n const [value, helpers, error] = useInternalFieldArray(\n context,\n name,\n validationBehavior\n );\n return <>{children(value, helpers, error)}</>;\n};\n"],"names":["__spreadArray","this","to","from","pack","i","l","ar","purry","fn","args","lazy","diff","arrayArgs","ret","data","_reduceLazy","array","indexed","acc","item","index","result","isArray","keyList","hasProp","equals","_equals","a","b","arrA","arrB","length","key","dateA","dateB","regexpA","regexpB","keys","omit","_omit","object","names","set","_a","name","value","omitBy","_omitBy","pathOr","_pathOr","path","defaultValue","current","_i","path_1","prop","uniq","_uniq","getCheckboxChecked","checkboxValue","newValue","val","getRadioChecked","radioValue","defaultValidationBehavior","createGetInputProps","clearError","validate","touched","setTouched","hasBeenSubmitted","validationBehavior","validationBehaviors","props","behavior","inputProps","R.omitBy","stringToPathArray","match","_","rest","setPath","_setPathNormalized","leadingSegments","lastSegment","obj","segment","nextSegment","getPath","R.pathOr","isProduction","prefix","invariant","condition","message","provided","FORM_ID_FIELD","FORM_DEFAULTS_FIELD","formDefaultValuesKey","formId","InternalFormContext","createContext","serverData","hydratedData","hydrated","hydratable","createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","createStore","e","require$$0","h","k","m","n","p","q","d","f","c","g","r","t","u","useSyncExternalStoreShim_production_min","shimModule","require$$1","v","w","withSelector_production_min","withSelectorModule","useStore","selector","equalityFn","slice","useSyncExternalStoreWithSelector","useDebugValue","createImpl","createStore__default","useBoundStore","create","create$1","Q","Z","L","s","o","nn","X","rn","y","tn","U","j","O","S","P","M","x","H","A","z","I","E","R","en","on","D","F","G","W","B","un","an","immerImpl","initializer","get","store","updater","produce","immer","requestSubmit","element","submitter","validateSubmitter","dummySubmitter","raise","errorConstructor","getArray","values","field","swap","indexA","indexB","itemA","itemB","hasItemA","hasItemB","sparseSplice","start","deleteCount","move","insert","remove","mutateAsArray","mutate","beforeKeys","arr","newKeys","getDeepArrayPaths","basePath","noOp","defaultFormState","createFormState","fieldName","error","errors","nextDefaults","_b","formElement","validator","_c","clear","promise","resolve","arrayUtil.getArray","arrayUtil.swap","arrayUtil.mutateAsArray","arrayUtil.move","arrayUtil.insert","arrayUtil.remove","arrayUtil.replace","useRootFormStore","setter","useFormStore","useInternalFormContext","hookName","formContext","useContext","useErrorResponseForForm","fetcher","subaction","actionData","useActionData","useFieldErrorsForForm","context","response","useDefaultValuesFromLoader","matches","useMatches","dataKey","useDefaultValuesForForm","defaultValuesProp","errorResponse","defaultValuesFromLoader","useHasActiveFormSubmit","transition","useTransition","useFieldTouched","setFieldTouched","useCallback","useFieldError","fieldErrors","useClearError","useCurrentDefaultValueForField","useFieldDefaultValue","defaultValues","useInternalIsSubmitting","useInternalIsValid","useInternalHasBeenSubmitted","useValidateField","useValidate","noOpReceiver","useRegisterReceiveFocus","defaultDefaultValues","useSyncedDefaultValues","useSetTouched","useTouchedFields","useFieldErrors","useSetFieldErrors","useResetFormElement","useSubmitForm","useFormActionProp","useFormSubactionProp","useFormValues","useControlledFieldValue","isFormHydrated","useRegisterControlledField","resolveUpdate","useEffect","register","unregister","useControllableValue","setControlledFieldValue","setValue","useUpdateControllableValue","useIsSubmitting","useIsValid","useField","options","providedFormId","handleReceiveFocus","validateField","registerReceiveFocus","useMemo","helpers","getInputProps","useControlField","useUpdateControlledField","json","init","responseInit","headers","validationError","repopulateFields","setFormDefaults","MultiValueMap","useMultiValueMap","ref","useRef","useSubmitComplete","isSubmitting","callback","isPending","mergeRefs","refs","useIsomorphicLayoutEffect","useLayoutEffect","useDeepEqualsMemo","areEqual","R.equals","getDataFromForm","el","nonNull","focusFirstInvalidInput","customFocusHandlers","namesInOrder","input","uniqueNamesInOrder","R.uniq","handler","elem","selectedRadio","useFormId","providedId","symbolId","useState","FormResetter","resetAfterSubmit","formRef","isValid","formEventProxy","event","defaultPrevented","target","ValidatedForm","onSubmit","children","action","unMemoizedDefaults","formRefProp","onReset","disableFocusOnError","method","id","providedDefaultValues","contextValue","backendError","backendDefaultValues","hasActiveSubmission","Form","RemixForm","submit","useSubmit","setFieldErrors","setFieldError","reset","startSubmit","endSubmit","syncFormProps","setFormElementInState","cleanupForm","registerForm","handleSubmit","nativeEvent","formDataToValidate","eventProxy","React","objectFromPathEntries","entries","map","preprocessFormData","omitInternalFields","R.omit","createValidator","useFormState","touchedFields","syncedDefaultValues","hydratedDefaultValues","fieldErrorsFromState","hydratedFieldErrors","useFormHelpers","getValues","useFormContext","internalClearError","clearAllErrors","useInternalFieldArray","resolvedValidationBehavior","maybeValidate","useFieldArray","FieldArray"],"mappings":"sPAAIA,GAAiBC,YAAQA,WAAK,eAAkB,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KACxEE,GAAM,EAAEF,KAAKF,MACRI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,GAAKF,EAAKE,IAGrB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CAC3D,EA+BO,SAASK,EAAMC,EAAIC,EAAMC,EAAM,CAClC,IAAIC,EAAOH,EAAG,OAASC,EAAK,OACxBG,EAAY,MAAM,KAAKH,CAAI,EAC/B,GAAIE,IAAS,EACT,OAAOH,EAAG,MAAM,OAAQI,CAAS,EAErC,GAAID,IAAS,EAAG,CACZ,IAAIE,EAAM,SAAUC,EAAM,CAAE,OAAON,EAAG,MAAM,OAAQT,GAAc,CAACe,CAAI,EAAGF,EAAW,EAAK,CAAC,CAAE,EAC7F,OAAIF,GAAQF,EAAG,QACXK,EAAI,KAAOH,GAAQF,EAAG,KACtBK,EAAI,SAAWJ,GAEZI,CACV,CACD,MAAM,IAAI,MAAM,2BAA2B,CAC/C,CCtDO,SAASE,GAAYC,EAAON,EAAMO,EAAS,CAC9C,OAAOD,EAAM,OAAO,SAAUE,EAAKC,EAAMC,EAAO,CAC5C,IAAIC,EAASJ,EAAUP,EAAKS,EAAMC,EAAOJ,CAAK,EAAIN,EAAKS,CAAI,EAC3D,OAAIE,EAAO,UAAY,GACnBH,EAAI,KAAK,MAAMA,EAAKG,EAAO,IAAI,EAE1BA,EAAO,UAAY,IACxBH,EAAI,KAAKG,EAAO,IAAI,EAEjBH,CACV,EAAE,CAAE,CAAA,CACT,CCTA,IAAII,GAAU,MAAM,QAChBC,GAAU,OAAO,KACjBC,GAAU,OAAO,UAAU,eACxB,SAASC,IAAS,CACrB,OAAOlB,EAAMmB,GAAS,SAAS,CACnC,CACA,SAASA,GAAQC,EAAGC,EAAG,CACnB,GAAID,IAAMC,EACN,MAAO,GAEX,GAAID,GAAKC,GAAK,OAAOD,GAAM,UAAY,OAAOC,GAAM,SAAU,CAC1D,IAAIC,EAAOP,GAAQK,CAAC,EAChBG,EAAOR,GAAQM,CAAC,EAChBxB,EAAI,OACJ2B,EAAS,OACTC,EAAM,OACV,GAAIH,GAAQC,EAAM,CAEd,GADAC,EAASJ,EAAE,OACPI,IAAWH,EAAE,OACb,MAAO,GAEX,IAAKxB,EAAI2B,EAAQ3B,MAAQ,GACrB,GAAI,CAACqB,GAAOE,EAAEvB,GAAIwB,EAAExB,EAAE,EAClB,MAAO,GAGf,MAAO,EACV,CACD,GAAIyB,IAASC,EACT,MAAO,GAEX,IAAIG,EAAQN,aAAa,KACrBO,EAAQN,aAAa,KACzB,GAAIK,IAAUC,EACV,MAAO,GAEX,GAAID,GAASC,EACT,OAAOP,EAAE,QAAO,IAAOC,EAAE,QAAO,EAEpC,IAAIO,EAAUR,aAAa,OACvBS,EAAUR,aAAa,OAC3B,GAAIO,IAAYC,EACZ,MAAO,GAEX,GAAID,GAAWC,EACX,OAAOT,EAAE,SAAQ,IAAOC,EAAE,SAAQ,EAEtC,IAAIS,EAAOd,GAAQI,CAAC,EAEpB,GADAI,EAASM,EAAK,OACVN,IAAWR,GAAQK,CAAC,EAAE,OACtB,MAAO,GAEX,IAAKxB,EAAI2B,EAAQ3B,MAAQ,GACrB,GAAI,CAACoB,GAAQ,KAAKI,EAAGS,EAAKjC,EAAE,EACxB,MAAO,GAGf,IAAKA,EAAI2B,EAAQ3B,MAAQ,GAErB,GADA4B,EAAMK,EAAKjC,GACP,CAACqB,GAAOE,EAAEK,GAAMJ,EAAEI,EAAI,EACtB,MAAO,GAGf,MAAO,EACV,CACD,OAAOL,IAAMA,GAAKC,IAAMA,CAC5B,CCnEO,SAASU,IAAO,CACnB,OAAO/B,EAAMgC,GAAO,SAAS,CACjC,CACA,SAASA,GAAMC,EAAQC,EAAO,CAC1B,IAAIC,EAAM,IAAI,IAAID,CAAK,EACvB,OAAO,OAAO,QAAQD,CAAM,EAAE,OAAO,SAAUtB,EAAKyB,EAAI,CACpD,IAAIC,EAAOD,EAAG,GAAIE,EAAQF,EAAG,GAC7B,OAAKD,EAAI,IAAIE,CAAI,IACb1B,EAAI0B,GAAQC,GAET3B,CACV,EAAE,CAAE,CAAA,CACT,CCZO,SAAS4B,IAAS,CACrB,OAAOvC,EAAMwC,GAAS,SAAS,CACnC,CACA,SAASA,GAAQP,EAAQhC,EAAI,CACzB,OAAO,OAAO,KAAKgC,CAAM,EAAE,OAAO,SAAUtB,EAAKc,EAAK,CAClD,OAAKxB,EAAGgC,EAAOR,GAAMA,CAAG,IACpBd,EAAIc,GAAOQ,EAAOR,IAEfd,CACV,EAAE,CAAE,CAAA,CACT,CCVO,SAAS8B,IAAS,CACrB,OAAOzC,EAAM0C,GAAS,SAAS,CACnC,CACA,SAASA,GAAQT,EAAQU,EAAMC,EAAc,CAEzC,QADIC,EAAUZ,EACLa,EAAK,EAAGC,EAASJ,EAAMG,EAAKC,EAAO,OAAQD,IAAM,CACtD,IAAIE,EAAOD,EAAOD,GAClB,GAAID,GAAW,MAAQA,EAAQG,IAAS,KACpC,OAAOJ,EAEXC,EAAUA,EAAQG,EACrB,CACD,OAAOH,CACX,CCZO,SAASI,GAAO,CACnB,OAAOjD,EAAMkD,GAAO,UAAWD,EAAK,IAAI,CAC5C,CACA,SAASC,GAAMzC,EAAO,CAClB,OAAOD,GAAYC,EAAOwC,EAAK,KAAM,CAAA,CACzC,EACC,SAAUA,EAAM,CACb,SAAS9C,GAAO,CACZ,IAAIgC,EAAM,IAAI,IACd,OAAO,SAAUG,EAAO,CACpB,OAAIH,EAAI,IAAIG,CAAK,EACN,CACH,KAAM,GACN,QAAS,EAC7B,GAEYH,EAAI,IAAIG,CAAK,EACN,CACH,KAAM,GACN,QAAS,GACT,KAAMA,CACtB,EACA,CACK,CACDW,EAAK,KAAO9C,CAChB,GAAG8C,IAASA,EAAO,CAAA,EAAG,EC3Bf,MAAME,GAAqB,CAChCC,EAAoC,KACpCC,IACwB,CACpB,GAAA,MAAM,QAAQA,CAAQ,EACxB,OAAOA,EAAS,KAAMC,GAAQA,IAAQ,IAAQA,IAAQF,CAAa,EACrE,GAAI,OAAOC,GAAa,UAAkB,OAAAA,EAC1C,GAAI,OAAOA,GAAa,SAAU,OAAOA,IAAaD,CAExD,ECTaG,GAAkB,CAC7BC,EAAiC,KACjCH,IACG,CACH,GAAI,OAAOA,GAAa,SAAU,OAAOA,IAAaG,CAExD,ECiCMC,GAAuD,CAC3D,QAAS,SACT,YAAa,WACb,cAAe,UACjB,EAEaC,GAAsB,CAAC,CAClC,WAAAC,EACA,SAAAC,EACA,aAAAhB,EACA,QAAAiB,EACA,WAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,KAAA3B,CACF,IAAiD,CAC/C,MAAM4B,EAAsB,CAC1B,GAAGR,GACH,GAAGO,CAAA,EAGE,MAAA,CAA8BE,EAAQ,KAAc,CACzD,MAAMC,EAAWJ,EACbE,EAAoB,cACpBJ,EACAI,EAAoB,YACpBA,EAAoB,QAElBG,EAAgC,CACpC,GAAGF,EACH,SAAU,IAAIhE,IAAoB,OAChC,OAAIiE,IAAa,WAAqBP,IACtBD,KACTvB,EAAA8B,GAAA,YAAAA,EAAO,WAAP,YAAA9B,EAAA,KAAA8B,EAAkB,GAAGhE,EAC9B,EACA,OAAQ,IAAIA,IAAoB,OAC9B,OAAIiE,IAAa,UAAmBP,IACpCE,EAAW,EAAI,GACR1B,EAAA8B,GAAA,YAAAA,EAAO,SAAP,YAAA9B,EAAA,KAAA8B,EAAgB,GAAGhE,EAC5B,EACA,KAAAmC,CAAA,EAGE,OAAA6B,EAAM,OAAS,WACjBE,EAAW,eAAiBjB,GAAmBe,EAAM,MAAOtB,CAAY,EAC/DsB,EAAM,OAAS,QACxBE,EAAW,eAAiBb,GAAgBW,EAAM,MAAOtB,CAAY,EAC5DsB,EAAM,QAAU,SAEzBE,EAAW,aAAexB,GAGrByB,GAASD,EAAa9B,GAAUA,IAAU,MAAS,CAAA,CAE9D,EC7FagC,GACX3B,GACwB,CACxB,GAAIA,EAAK,SAAW,EAAG,MAAO,GAE9B,MAAM4B,EACJ5B,EAAK,MAAM,iBAAiB,GAAKA,EAAK,MAAM,uBAAuB,EACrE,GAAI4B,EAAO,CACT,KAAM,CAACC,EAAG/C,EAAKgD,CAAI,EAAIF,EACvB,MAAO,CAAC,QAAQ,KAAK9C,CAAG,EAAI,OAAOA,CAAG,EAAIA,EAAK,GAAG6C,GAAkBG,CAAI,CAAC,CAC3E,CACA,MAAO,CAAC9B,CAAI,CACd,ECVgB,SAAA+B,EAAWzC,EAAWU,EAAcC,EAAmB,CACrE,OAAO+B,GAAmB1C,EAAQqC,GAAkB3B,CAAI,EAAGC,CAAY,CACzE,CAEA,SAAS+B,GACP1C,EACAU,EACAL,EACK,OACL,MAAMsC,EAAkBjC,EAAK,MAAM,EAAG,EAAE,EAClCkC,EAAclC,EAAKA,EAAK,OAAS,GAEvC,IAAImC,EAAM7C,EACV,QAAS,EAAI,EAAG,EAAI2C,EAAgB,OAAQ,IAAK,CAC/C,MAAMG,EAAUH,EAAgB,GAC5B,GAAAE,EAAIC,KAAa,OAAW,CACxB,MAAAC,GAAc5C,EAAAwC,EAAgB,EAAI,KAApB,KAAAxC,EAA0ByC,EAC9CC,EAAIC,GAAW,OAAOC,GAAgB,SAAW,GAAK,EACxD,CACAF,EAAMA,EAAIC,EACZ,CACA,OAAAD,EAAID,GAAevC,EACZL,CACT,CCrBa,MAAAgD,EAAU,CAAChD,EAAaU,IACnCuC,GAASjD,EAAQqC,GAAkB3B,CAAI,EAAU,MAAS,ECL5D,IAAIwC,GAAe,GACfC,GAAS,mBACb,SAASC,EAAUC,EAAWC,EAAS,CACnC,GAAI,CAAAD,EAGJ,IAAIH,GACA,MAAM,IAAI,MAAMC,EAAM,EAE1B,IAAII,EAAW,OAAOD,GAAY,WAAaA,EAAO,EAAKA,EACvDjD,EAAQkD,EAAWJ,GAAS,KAAOI,EAAWJ,GAClD,MAAM,IAAI,MAAM9C,CAAK,EACzB,CCZO,MAAMmD,EAAgB,sBAChBC,GAAsB,4BACtBC,GAAwBC,GACnC,GAAGF,MAAuBE,ICQfC,GACXC,gBAA+C,IAAI,ECF/CC,GAAiBxF,IAA4B,CACjD,UAAW,IAAMA,EACjB,IAAMN,GAAO8F,GAAW9F,EAAGM,CAAI,CAAC,CAClC,GAEMyF,GAAe,KAAyB,CAC5C,UAAYA,GAAoBA,EAChC,IAAK,IAASA,GAAgB,CAChC,GAEMrG,GAAO,CAAIY,EAAS0F,IACxBA,EAAWD,KAAoBD,GAAcxF,CAAI,EAEtC2F,EAAa,CACxB,WAAAH,GACA,aAAAC,GACA,KAAArG,EACF,EC3BMwG,GAAmBC,GAAgB,CACvC,IAAIC,EACJ,MAAMC,EAA4B,IAAI,IAChCC,EAAW,CAACC,EAASC,IAAY,CACrC,MAAMC,EAAY,OAAOF,GAAY,WAAaA,EAAQH,CAAK,EAAIG,EACnE,GAAIE,IAAcL,EAAO,CACvB,MAAMM,EAAgBN,EACtBA,EAAQI,EAAUC,EAAY,OAAO,OAAO,GAAIL,EAAOK,CAAS,EAChEJ,EAAU,QAASM,GAAaA,EAASP,EAAOM,CAAa,CAAC,CAC/D,CACL,EACQE,EAAW,IAAMR,EAMjBS,EAAM,CAAE,SAAAP,EAAU,SAAAM,EAAU,UALfD,IACjBN,EAAU,IAAIM,CAAQ,EACf,IAAMN,EAAU,OAAOM,CAAQ,GAGK,QAD7B,IAAMN,EAAU,OACoB,EACpD,OAAAD,EAAQD,EAAYG,EAAUM,EAAUC,CAAG,EACpCA,CACT,EACMC,GAAeX,GAAgBA,EAAcD,GAAgBC,CAAW,EAAID;;;;;;;;GCZrE,IAAIa,EAAEC,EAAgB,QAAC,SAASC,GAAE9F,EAAEC,EAAE,CAAC,OAAOD,IAAIC,IAAQD,IAAJ,GAAO,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAC,CAAC,IAAI8F,GAAe,OAAO,OAAO,IAA3B,WAA8B,OAAO,GAAGD,GAAEpH,GAAEkH,EAAE,SAASI,GAAEJ,EAAE,UAAUK,GAAEL,EAAE,gBAAgBM,GAAEN,EAAE,cAAc,SAASO,GAAEnG,EAAEC,EAAE,CAAC,IAAImG,EAAEnG,EAAC,EAAGoG,EAAE3H,GAAE,CAAC,KAAK,CAAC,MAAM0H,EAAE,YAAYnG,CAAC,CAAC,CAAC,EAAEqG,EAAED,EAAE,GAAG,KAAKE,EAAEF,EAAE,GAAGJ,OAAAA,GAAE,UAAU,CAACK,EAAE,MAAMF,EAAEE,EAAE,YAAYrG,EAAEuG,GAAEF,CAAC,GAAGC,EAAE,CAAC,KAAKD,CAAC,CAAC,CAAC,EAAE,CAACtG,EAAEoG,EAAEnG,CAAC,CAAC,EAAE+F,GAAE,UAAU,CAACQ,OAAAA,GAAEF,CAAC,GAAGC,EAAE,CAAC,KAAKD,CAAC,CAAC,EAAStG,EAAE,UAAU,CAACwG,GAAEF,CAAC,GAAGC,EAAE,CAAC,KAAKD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAACtG,CAAC,CAAC,EAAEkG,GAAEE,CAAC,EAASA,CAAC,CAClc,SAASI,GAAExG,EAAE,CAAC,IAAIC,EAAED,EAAE,YAAYA,EAAEA,EAAE,MAAM,GAAG,CAAC,IAAIoG,EAAEnG,EAAG,EAAC,MAAM,CAAC8F,GAAE/F,EAAEoG,CAAC,CAAC,MAAC,CAAS,MAAM,EAAE,CAAC,CAAC,SAASK,GAAEzG,EAAEC,EAAE,CAAC,OAAOA,EAAC,CAAE,CAAC,IAAIyG,GAAgB,OAAO,QAArB,aAA2C,OAAO,OAAO,UAA5B,aAAoD,OAAO,OAAO,SAAS,eAArC,YAAmDD,GAAEN,GAA8BQ,GAAA,qBAAUf,EAAE,uBAAX,OAAgCA,EAAE,qBAAqBc,GCPxUE,GAAA,QAAiBf;;;;;;;;GCMN,IAAIC,GAAED,EAAAA,QAAiBI,GAAEY,WAAwC,SAASX,GAAElG,EAAEC,EAAE,CAAC,OAAOD,IAAIC,IAAQD,IAAJ,GAAO,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAC,CAAC,IAAIkG,GAAe,OAAO,OAAO,IAA3B,WAA8B,OAAO,GAAGD,GAAEM,GAAEP,GAAE,qBAAqBQ,GAAEX,GAAE,OAAOY,GAAEZ,GAAE,UAAUgB,GAAEhB,GAAE,QAAQiB,GAAEjB,GAAE,cAC/PkB,GAAA,iCAAyC,SAAShH,EAAEC,EAAE2F,EAAElH,EAAE6H,EAAE,CAAC,IAAID,EAAEG,GAAE,IAAI,EAAE,GAAUH,EAAE,UAAT,KAAiB,CAAC,IAAID,EAAE,CAAC,SAAS,GAAG,MAAM,IAAI,EAAEC,EAAE,QAAQD,CAAC,MAAMA,EAAEC,EAAE,QAAQA,EAAEQ,GAAE,UAAU,CAAC,SAAS,EAAE9G,EAAE,CAAC,GAAG,CAACsG,EAAE,CAAiB,GAAhBA,EAAE,GAAGF,EAAEpG,EAAEA,EAAEtB,EAAEsB,CAAC,EAAcuG,IAAT,QAAYF,EAAE,SAAS,CAAC,IAAIpG,EAAEoG,EAAE,MAAM,GAAGE,EAAEtG,EAAED,CAAC,EAAE,OAAO+F,EAAE9F,CAAC,CAAC,OAAO8F,EAAE/F,CAAC,CAAK,GAAJC,EAAE8F,EAAKI,GAAEC,EAAEpG,CAAC,EAAE,OAAOC,EAAE,IAAI2F,EAAElH,EAAEsB,CAAC,EAAE,OAAYuG,IAAT,QAAYA,EAAEtG,EAAE2F,CAAC,EAAS3F,GAAEmG,EAAEpG,EAAS+F,EAAEH,EAAC,CAAC,IAAIU,EAAE,GAAGF,EAAEL,EAAEC,EAAWJ,IAAT,OAAW,KAAKA,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE3F,EAAG,CAAA,CAAC,EAAS+F,IAAP,KAAS,OAAO,UAAU,CAAC,OAAO,EAAEA,EAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC/F,EAAE2F,EAAElH,EAAE6H,CAAC,CAAC,EAAE,IAAIH,EAAEI,GAAExG,EAAEsG,EAAE,GAAGA,EAAE,EAAE,EACrfI,OAAAA,GAAE,UAAU,CAACL,EAAE,SAAS,GAAGA,EAAE,MAAMD,CAAC,EAAE,CAACA,CAAC,CAAC,EAAEW,GAAEX,CAAC,EAASA,CAAC,ECRtDa,GAAA,QAAiBpB,GCGnB,SAASqB,GAASxB,EAAKyB,EAAWzB,EAAI,SAAU0B,EAAY,CAC1D,MAAMC,EAAQC,GAAgC,QAAA,iCAAC5B,EAAI,UAAWA,EAAI,SAAUA,EAAI,gBAAkBA,EAAI,SAAUyB,EAAUC,CAAU,EACpIG,OAAAA,EAAa,cAACF,CAAK,EACZA,CACT,CACA,MAAMG,GAAcxC,GAAgB,CAClC,MAAMU,EAAM,OAAOV,GAAgB,WAAayC,GAAqBzC,CAAW,EAAIA,EAC9E0C,EAAgB,CAACP,EAAUC,IAAeF,GAASxB,EAAKyB,EAAUC,CAAU,EAClF,cAAO,OAAOM,EAAehC,CAAG,EACzBgC,CACT,EACMC,GAAU3C,GAAgBA,EAAcwC,GAAWxC,CAAW,EAAIwC,GACxE,IAAII,GAAWD,GClBf,SAAS1B,EAAEA,EAAE,CAAC,QAAQO,EAAE,UAAU,OAAOC,EAAE,MAAMD,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEZ,EAAE,EAAEA,EAAEY,EAAEZ,IAAIa,EAAEb,EAAE,GAAG,UAAUA,GAAkJ,MAAM,MAAM,8BAA8BK,GAAGQ,EAAE,OAAO,IAAIA,EAAE,IAAK,SAASR,EAAE,CAAC,MAAM,IAAIA,EAAE,GAAG,CAAG,EAAC,KAAK,GAAG,EAAE,IAAI,kDAAkD,CAAC,CAAC,SAASO,EAAEP,EAAE,CAAC,MAAM,CAAC,CAACA,GAAG,CAAC,CAACA,EAAE4B,EAAE,CAAC,SAASpB,EAAER,EAAE,CAAC,MAAM,CAAC,CAACA,IAAI,SAASA,EAAE,CAAC,GAAG,CAACA,GAAa,OAAOA,GAAjB,SAAmB,MAAM,GAAG,IAAI,EAAE,OAAO,eAAeA,CAAC,EAAE,GAAU,IAAP,KAAS,MAAM,GAAG,IAAIQ,EAAE,OAAO,eAAe,KAAK,EAAE,aAAa,GAAG,EAAE,YAAY,OAAOA,IAAI,QAAoB,OAAOA,GAAnB,YAAsB,SAAS,SAAS,KAAKA,CAAC,IAAIqB,EAAC,EAAE7B,CAAC,GAAG,MAAM,QAAQA,CAAC,GAAG,CAAC,CAACA,EAAE8B,KAAI,CAAC,CAAC9B,EAAE,YAAY8B,KAAIC,GAAE/B,CAAC,GAAGa,GAAEb,CAAC,EAAE,CAA2C,SAASxH,EAAEwH,EAAEO,EAAEC,EAAE,CAAUA,IAAT,SAAaA,EAAE,IAAQwB,EAAEhC,CAAC,IAAP,GAAUQ,EAAE,OAAO,KAAKyB,IAAIjC,CAAC,EAAE,QAAS,SAASL,EAAE,CAACa,GAAa,OAAOb,GAAjB,UAAoBY,EAAEZ,EAAEK,EAAEL,GAAGK,CAAC,CAAC,CAAG,EAACA,EAAE,QAAS,SAASQ,EAAEb,EAAE,CAAC,OAAOY,EAAEZ,EAAEa,EAAER,CAAC,CAAC,CAAG,CAAA,CAAC,SAASgC,EAAEhC,EAAE,CAAC,IAAIO,EAAEP,EAAE4B,GAAG,OAAOrB,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,MAAM,QAAQP,CAAC,EAAE,EAAE+B,GAAE/B,CAAC,EAAE,EAAEa,GAAEb,CAAC,EAAE,EAAE,CAAC,CAAC,SAASS,GAAET,EAAEO,EAAE,CAAC,OAAWyB,EAAEhC,CAAC,IAAP,EAASA,EAAE,IAAIO,CAAC,EAAE,OAAO,UAAU,eAAe,KAAKP,EAAEO,CAAC,CAAC,CAAC,SAASxG,GAAEiG,EAAEO,EAAE,CAAC,OAAWyB,EAAEhC,CAAC,IAAP,EAASA,EAAE,IAAIO,CAAC,EAAEP,EAAEO,EAAE,CAAC,SAASH,GAAEJ,EAAEO,EAAEC,EAAE,CAAC,IAAIb,EAAEqC,EAAEhC,CAAC,EAAML,IAAJ,EAAMK,EAAE,IAAIO,EAAEC,CAAC,EAAMb,IAAJ,GAAOK,EAAE,OAAOO,CAAC,EAAEP,EAAE,IAAIQ,CAAC,GAAGR,EAAEO,GAAGC,CAAC,CAAC,SAASH,GAAEL,EAAEO,EAAE,CAAC,OAAOP,IAAIO,EAAMP,IAAJ,GAAO,EAAEA,GAAG,EAAEO,EAAEP,GAAGA,GAAGO,GAAGA,CAAC,CAAC,SAASwB,GAAE/B,EAAE,CAAC,OAAOkC,IAAGlC,aAAa,GAAG,CAAC,SAASa,GAAEb,EAAE,CAAC,OAAOE,IAAGF,aAAa,GAAG,CAAC,SAASC,EAAED,EAAE,CAAC,OAAOA,EAAE,GAAGA,EAAE,CAAC,CAAC,SAASvH,GAAEuH,EAAE,CAAC,GAAG,MAAM,QAAQA,CAAC,EAAE,OAAO,MAAM,UAAU,MAAM,KAAKA,CAAC,EAAE,IAAIO,EAAE4B,GAAGnC,CAAC,EAAE,OAAOO,EAAEqB,GAAG,QAAQpB,EAAEyB,GAAG1B,CAAC,EAAEZ,EAAE,EAAEA,EAAEa,EAAE,OAAOb,IAAI,CAAC,IAAInH,EAAEgI,EAAEb,GAAGqC,EAAEzB,EAAE/H,GAAQwJ,EAAE,WAAP,KAAkBA,EAAE,SAAS,GAAGA,EAAE,aAAa,KAAKA,EAAE,KAAKA,EAAE,OAAOzB,EAAE/H,GAAG,CAAC,aAAa,GAAG,SAAS,GAAG,WAAWwJ,EAAE,WAAW,MAAMhC,EAAExH,EAAE,EAAE,CAAC,OAAO,OAAO,OAAO,OAAO,eAAewH,CAAC,EAAEO,CAAC,CAAC,CAAC,SAASJ,GAAEH,EAAEL,EAAE,CAAC,OAAgBA,IAAT,SAAaA,EAAE,IAAIyC,GAAEpC,CAAC,GAAGO,EAAEP,CAAC,GAAG,CAACQ,EAAER,CAAC,IAAKgC,EAAEhC,CAAC,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,MAAMA,EAAE,OAAOH,IAAG,OAAO,OAAOG,CAAC,EAAEL,GAAGnH,EAAEwH,EAAG,SAASA,EAAEO,EAAE,CAAC,OAAOJ,GAAEI,EAAE,EAAE,CAAC,EAAG,EAAE,GAAEP,CAAE,CAAC,SAASH,IAAG,CAACG,EAAE,CAAC,CAAC,CAAC,SAASoC,GAAEpC,EAAE,CAAC,OAAaA,GAAN,MAAmB,OAAOA,GAAjB,UAAoB,OAAO,SAASA,CAAC,CAAC,CAAC,SAAShG,EAAEuG,EAAE,CAAC,IAAI,EAAE8B,GAAG9B,GAAG,OAAO,GAAGP,EAAE,GAAGO,CAAC,EAAE,CAAC,CAAkC,SAASpD,IAAG,CAAC,OAAmDmF,CAAC,CAAC,SAASC,GAAEvC,EAAEO,EAAE,CAACA,IAAIvG,EAAE,SAAS,EAAEgG,EAAE,EAAE,CAAA,EAAGA,EAAE,EAAE,CAAA,EAAGA,EAAE,EAAEO,EAAE,CAAC,SAASiC,GAAExC,EAAE,CAACM,GAAEN,CAAC,EAAEA,EAAE,EAAE,QAAQyC,EAAC,EAAEzC,EAAE,EAAE,IAAI,CAAC,SAASM,GAAEN,EAAE,CAACA,IAAIsC,IAAIA,EAAEtC,EAAE,EAAE,CAAC,SAASc,GAAEd,EAAE,CAAC,OAAOsC,EAAE,CAAC,EAAE,CAAA,EAAG,EAAEA,EAAE,EAAEtC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAASyC,GAAEzC,EAAE,CAAC,IAAIO,EAAEP,EAAE4B,GAAOrB,EAAE,IAAN,GAAaA,EAAE,IAAN,EAAQA,EAAE,EAAG,EAACA,EAAE,EAAE,EAAE,CAAC,SAASmC,GAAEnC,EAAEZ,EAAE,CAACA,EAAE,EAAEA,EAAE,EAAE,OAAO,IAAInH,EAAEmH,EAAE,EAAE,GAAGqC,EAAWzB,IAAT,QAAYA,IAAI/H,EAAE,OAAOmH,EAAE,EAAE,GAAG3F,EAAE,KAAK,EAAE,EAAE2F,EAAEY,EAAEyB,CAAC,EAAEA,GAAGxJ,EAAEoJ,GAAG,IAAIY,GAAE7C,CAAC,EAAEK,EAAE,CAAC,GAAGQ,EAAED,CAAC,IAAIA,EAAEoC,GAAEhD,EAAEY,CAAC,EAAEZ,EAAE,GAAGiD,GAAEjD,EAAEY,CAAC,GAAGZ,EAAE,GAAG3F,EAAE,SAAS,EAAE,EAAExB,EAAEoJ,GAAG,EAAErB,EAAEZ,EAAE,EAAEA,EAAE,CAAC,GAAGY,EAAEoC,GAAEhD,EAAEnH,EAAE,CAAE,CAAA,EAAEgK,GAAE7C,CAAC,EAAEA,EAAE,GAAGA,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAEY,IAAIsC,GAAEtC,EAAE,MAAM,CAAC,SAASoC,GAAE3C,EAAEO,EAAEC,EAAE,CAAC,GAAG4B,GAAE7B,CAAC,EAAE,OAAOA,EAAE,IAAIZ,EAAEY,EAAEqB,GAAG,GAAG,CAACjC,EAAE,OAAOnH,EAAE+H,EAAG,SAAS/H,EAAEwJ,EAAE,CAAC,OAAOc,GAAE9C,EAAEL,EAAEY,EAAE/H,EAAEwJ,EAAExB,CAAC,CAAC,EAAG,EAAE,EAAED,EAAE,GAAGZ,EAAE,IAAIK,EAAE,OAAOO,EAAE,GAAG,CAACZ,EAAE,EAAE,OAAOiD,GAAE5C,EAAEL,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,GAAG,CAACA,EAAE,EAAE,CAACA,EAAE,EAAE,GAAGA,EAAE,EAAE,IAAI,IAAI,EAAMA,EAAE,IAAN,GAAaA,EAAE,IAAN,EAAQA,EAAE,EAAElH,GAAEkH,EAAE,CAAC,EAAEA,EAAE,EAAEnH,EAAMmH,EAAE,IAAN,EAAQ,IAAI,IAAI,CAAC,EAAE,EAAG,SAASY,EAAE/H,EAAE,CAAC,OAAOsK,GAAE9C,EAAEL,EAAE,EAAEY,EAAE/H,EAAEgI,CAAC,CAAC,CAAC,EAAGoC,GAAE5C,EAAE,EAAE,EAAE,EAAEQ,GAAGR,EAAE,GAAGhG,EAAE,SAAS,EAAE,EAAE2F,EAAEa,EAAER,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,OAAOL,EAAE,CAAC,CAAC,SAASmD,GAAE,EAAEtK,EAAEwJ,EAAEjI,EAAEsG,EAAE0B,EAAE,CAAC,GAAoDxB,EAAEF,CAAC,EAAE,CAAC,IAAIQ,EAAE8B,GAAE,EAAEtC,EAAE0B,GAAGvJ,GAAOA,EAAE,IAAN,GAAS,CAACiI,GAAEjI,EAAE,EAAEuB,CAAC,EAAEgI,EAAE,OAAOhI,CAAC,EAAE,MAAM,EAAE,GAAGqG,GAAE4B,EAAEjI,EAAE8G,CAAC,EAAE,CAACN,EAAEM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAGL,EAAEH,CAAC,GAAG,CAAC+B,GAAE/B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAOsC,GAAE,EAAEtC,CAAC,EAAE7H,GAAGA,EAAE,EAAE,GAAGoK,GAAE,EAAEvC,CAAC,CAAC,CAAC,CAAC,SAASuC,GAAE5C,EAAEO,EAAEC,EAAE,CAAUA,IAAT,SAAaA,EAAE,IAAIR,EAAE,EAAE,GAAGA,EAAE,GAAGG,GAAEI,EAAEC,CAAC,CAAC,CAAC,SAASuC,GAAE/C,EAAEO,EAAE,CAAC,IAAIC,EAAER,EAAE4B,GAAG,OAAOpB,EAAEP,EAAEO,CAAC,EAAER,GAAGO,EAAE,CAAC,SAASyC,GAAEhD,EAAEO,EAAE,CAAC,GAAGA,KAAKP,EAAE,QAAQQ,EAAE,OAAO,eAAeR,CAAC,EAAEQ,GAAG,CAAC,IAAIb,EAAE,OAAO,yBAAyBa,EAAED,CAAC,EAAE,GAAGZ,EAAE,OAAOA,EAAEa,EAAE,OAAO,eAAeA,CAAC,CAAC,CAAC,CAAC,SAASV,GAAEE,EAAE,CAACA,EAAE,IAAIA,EAAE,EAAE,GAAGA,EAAE,GAAGF,GAAEE,EAAE,CAAC,EAAE,CAAC,SAASiD,GAAEjD,EAAE,CAACA,EAAE,IAAIA,EAAE,EAAEvH,GAAEuH,EAAE,CAAC,EAAE,CAAC,SAASkD,GAAElD,EAAEO,EAAEC,EAAE,CAAC,IAAIb,EAAEoC,GAAExB,CAAC,EAAEvG,EAAE,QAAQ,EAAE,EAAEuG,EAAEC,CAAC,EAAEK,GAAEN,CAAC,EAAEvG,EAAE,QAAQ,EAAE,EAAEuG,EAAEC,CAAC,EAAER,EAAE,EAAE,SAASA,EAAEO,EAAE,CAAC,IAAIC,EAAE,MAAM,QAAQR,CAAC,EAAEL,EAAE,CAAC,EAAEa,EAAE,EAAE,EAAE,EAAED,EAAEA,EAAE,EAAEpD,GAAC,EAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA,EAAG,EAAEoD,EAAE,EAAEP,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAExH,EAAEmH,EAAEqC,EAAEmB,GAAG3C,IAAIhI,EAAE,CAACmH,CAAC,EAAEqC,EAAEoB,GAAI,IAAI3C,EAAE,MAAM,UAAUjI,EAAEwJ,CAAC,EAAEjI,EAAE0G,EAAE,OAAOL,EAAEK,EAAE,MAAM,OAAOd,EAAE,EAAES,EAAET,EAAE,EAAE5F,EAAEqG,CAAC,EAAEG,EAAEC,CAAC,EAAExG,EAAE,KAAK,EAAE,EAAEuG,EAAEC,CAAC,EAAE,OAAOA,EAAEA,EAAE,EAAErD,GAAG,GAAE,EAAE,KAAKwC,CAAC,EAAEA,CAAC,CAAC,SAAS0D,GAAE,EAAE,CAAC,OAAO9C,EAAE,CAAC,GAAGP,EAAE,GAAG,CAAC,EAAE,SAASA,EAAE,EAAE,CAAC,GAAG,CAACQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAIb,EAAEc,EAAE,EAAEmB,GAAGvB,EAAE2B,EAAE,CAAC,EAAE,GAAGvB,EAAE,CAAC,GAAG,CAACA,EAAE,IAAIA,EAAE,EAAE,GAAG,CAACzG,EAAE,KAAK,EAAE,EAAEyG,CAAC,GAAG,OAAOA,EAAE,EAAEA,EAAE,EAAE,GAAGd,EAAE2D,GAAE,EAAEjD,CAAC,EAAEI,EAAE,EAAE,EAAE,MAAMd,EAAE2D,GAAE,EAAEjD,CAAC,EAAE,OAAO7H,EAAEmH,EAAG,SAASY,EAAEC,EAAE,CAACC,GAAG1G,GAAE0G,EAAE,EAAEF,CAAC,IAAIC,GAAGJ,GAAET,EAAEY,EAAEP,EAAEQ,CAAC,CAAC,CAAC,CAAG,EAAKH,IAAJ,EAAM,IAAI,IAAIV,CAAC,EAAEA,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS2D,GAAEtD,EAAEO,EAAE,CAAC,OAAOA,OAAQ,GAAE,OAAO,IAAI,IAAIP,CAAC,MAAO,GAAE,OAAO,MAAM,KAAKA,CAAC,EAAE,OAAOvH,GAAEuH,CAAC,CAAC,CAAirO,IAACuD,GAAEjB,EAAEkB,GAAe,OAAO,QAApB,aAAsC,OAAO,OAAO,GAAG,GAA3B,SAA6BtB,GAAe,OAAO,KAApB,YAAwBhC,GAAe,OAAO,KAApB,YAAwBuD,GAAe,OAAO,OAApB,aAAoC,MAAM,YAAf,QAAuC,OAAO,SAApB,YAA4BZ,GAAEW,GAAE,OAAO,IAAI,eAAe,IAAID,GAAE,CAAA,GAAI,iBAAiB,GAAGA,IAAGzB,GAAE0B,GAAE,OAAO,IAAI,iBAAiB,EAAE,qBAAqB5B,EAAE4B,GAAE,OAAO,IAAI,aAAa,EAAE,iBAAy2D3B,GAAE,GAAG,OAAO,UAAU,YAAYI,GAAgB,OAAO,SAApB,aAA6B,QAAQ,QAAQ,QAAQ,QAAiB,OAAO,wBAAhB,OAAsC,SAASjC,EAAE,CAAC,OAAO,OAAO,oBAAoBA,CAAC,EAAE,OAAO,OAAO,sBAAsBA,CAAC,CAAC,CAAC,EAAE,OAAO,oBAAoBmC,GAAG,OAAO,2BAA2B,SAASnC,EAAE,CAAC,IAAIO,EAAE,CAAE,EAAC,OAAO0B,GAAGjC,CAAC,EAAE,QAAS,SAASQ,EAAE,CAACD,EAAEC,GAAG,OAAO,yBAAyBR,EAAEQ,CAAC,CAAC,CAAG,EAACD,CAAC,EAAE8B,GAAG,CAAA,EAAGc,GAAG,CAAC,IAAI,SAASnD,EAAEO,EAAE,CAAC,GAAGA,IAAIqB,EAAE,OAAO5B,EAAE,IAAIL,EAAEM,EAAED,CAAC,EAAE,GAAG,CAACS,GAAEd,EAAEY,CAAC,EAAE,OAAO,SAASP,EAAEO,EAAEC,EAAE,CAAC,IAAIb,EAAEnH,EAAEwK,GAAEzC,EAAEC,CAAC,EAAE,OAAOhI,EAAE,UAAUA,EAAEA,EAAE,OAAcmH,EAAEnH,EAAE,OAAZ,MAA2BmH,IAAT,OAAW,OAAOA,EAAE,KAAKK,EAAE,CAAC,EAAE,MAAM,EAAEA,EAAEL,EAAEY,CAAC,EAAE,IAAI/H,EAAEmH,EAAEY,GAAG,OAAOP,EAAE,GAAG,CAACQ,EAAEhI,CAAC,EAAEA,EAAEA,IAAIuK,GAAE/C,EAAE,EAAEO,CAAC,GAAG0C,GAAEjD,CAAC,EAAEA,EAAE,EAAEO,GAAG2C,GAAElD,EAAE,EAAE,EAAExH,EAAEwH,CAAC,GAAGxH,CAAC,EAAE,IAAI,SAASwH,EAAEO,EAAE,CAAC,OAAOA,KAAKN,EAAED,CAAC,CAAC,EAAE,QAAQ,SAASA,EAAE,CAAC,OAAO,QAAQ,QAAQC,EAAED,CAAC,CAAC,CAAC,EAAE,IAAI,SAASA,EAAEO,EAAEC,EAAE,CAAC,IAAIb,EAAEqD,GAAE/C,EAAED,CAAC,EAAEO,CAAC,EAAE,GAASZ,GAAN,MAAeA,EAAE,IAAI,OAAOA,EAAE,IAAI,KAAKK,EAAE,EAAEQ,CAAC,EAAE,GAAG,GAAG,CAACR,EAAE,EAAE,CAAC,IAAIxH,EAAEuK,GAAE9C,EAAED,CAAC,EAAEO,CAAC,EAAEyB,EAAQxJ,GAAN,KAAQ,OAAOA,EAAEoJ,GAAG,GAAGI,GAAGA,EAAE,IAAIxB,EAAE,OAAOR,EAAE,EAAEO,GAAGC,EAAER,EAAE,EAAEO,GAAG,GAAG,GAAG,GAAGF,GAAEG,EAAEhI,CAAC,IAAagI,IAAT,QAAYC,GAAET,EAAE,EAAEO,CAAC,GAAG,MAAM,GAAG0C,GAAEjD,CAAC,EAAEF,GAAEE,CAAC,CAAC,CAAC,OAAOA,EAAE,EAAEO,KAAKC,GAAa,OAAOA,GAAjB,WAA8BA,IAAT,QAAYD,KAAKP,EAAE,KAAKA,EAAE,EAAEO,GAAGC,EAAER,EAAE,EAAEO,GAAG,GAAG,GAAG,EAAE,eAAe,SAASP,EAAEO,EAAE,CAAC,OAAgBwC,GAAE/C,EAAE,EAAEO,CAAC,IAAhB,QAAmBA,KAAKP,EAAE,GAAGA,EAAE,EAAEO,GAAG,GAAG0C,GAAEjD,CAAC,EAAEF,GAAEE,CAAC,GAAG,OAAOA,EAAE,EAAEO,GAAGP,EAAE,GAAG,OAAOA,EAAE,EAAEO,GAAG,EAAE,EAAE,yBAAyB,SAASP,EAAEO,EAAE,CAAC,IAAIC,EAAEP,EAAED,CAAC,EAAEL,EAAE,QAAQ,yBAAyBa,EAAED,CAAC,EAAE,OAAOZ,GAAE,CAAC,SAAS,GAAG,aAAiBK,EAAE,IAAN,GAAoBO,IAAX,SAAa,WAAWZ,EAAE,WAAW,MAAMa,EAAED,EAAE,CAAG,EAAE,eAAe,UAAU,CAACP,EAAE,EAAE,CAAC,EAAE,eAAe,SAASA,EAAE,CAAC,OAAO,OAAO,eAAeA,EAAE,CAAC,CAAC,EAAE,eAAe,UAAU,CAACA,EAAE,EAAE,CAAC,CAAC,EAAEoD,EAAG,CAAA,EAAG5K,EAAE2K,GAAI,SAASnD,EAAEO,EAAE,CAAC6C,EAAGpD,GAAG,UAAU,CAAC,OAAO,UAAU,GAAG,UAAU,GAAG,GAAGO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAG6C,EAAG,eAAe,SAAS7C,EAAE,EAAE,CAAC,OAAqE6C,EAAG,IAAI,KAAK,KAAK7C,EAAE,EAAE,MAAM,CAAC,EAAE6C,EAAG,IAAI,SAAS7C,EAAE,EAAEZ,EAAE,CAAC,OAAmFwD,GAAG,IAAI,KAAK,KAAK5C,EAAE,GAAG,EAAEZ,EAAEY,EAAE,EAAE,CAAC,EAAK,IAACmD,GAAG,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI/D,EAAE,KAAK,KAAK,EAAE8D,GAAE,KAAK,EAAE,GAAG,KAAK,QAAQ,SAASlD,EAAE/H,EAAEwJ,EAAE,CAAC,GAAe,OAAOzB,GAAnB,YAAkC,OAAO/H,GAAnB,WAAqB,CAAC,IAAIiI,EAAEjI,EAAEA,EAAE+H,EAAE,IAAI,EAAEZ,EAAE,OAAO,SAASK,EAAE,CAAC,IAAIO,EAAE,KAAcP,IAAT,SAAaA,EAAES,GAAG,QAAQD,EAAE,UAAU,OAAOb,EAAE,MAAMa,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEwB,EAAE,EAAEA,EAAExB,EAAEwB,IAAIrC,EAAEqC,EAAE,GAAG,UAAUA,GAAG,OAAO,EAAE,QAAQhC,EAAG,SAASA,GAAE,CAAC,IAAIQ,EAAE,OAAOA,EAAEhI,GAAG,KAAK,MAAMgI,EAAE,CAACD,EAAEP,EAAC,EAAE,OAAOL,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,IAAIS,EAAE,GAAe,OAAO5H,GAAnB,YAAsBwH,EAAE,CAAC,EAAWgC,IAAT,QAAwB,OAAOA,GAAnB,YAAsBhC,EAAE,CAAC,EAAEQ,EAAED,CAAC,EAAE,CAAC,IAAI,EAAEO,GAAEnB,CAAC,EAAEoC,EAAEmB,GAAEvD,EAAEY,EAAE,MAAM,EAAEM,EAAE,GAAG,GAAG,CAACT,EAAE5H,EAAEuJ,CAAC,EAAElB,EAAE,EAAE,QAAC,CAAQA,EAAE2B,GAAE,CAAC,EAAElC,GAAE,CAAC,CAAC,CAAC,OAAmB,OAAO,SAApB,aAA6BF,aAAa,QAAQA,EAAE,KAAM,SAASJ,EAAE,CAAC,OAAOuC,GAAE,EAAEP,CAAC,EAAEU,GAAE1C,EAAE,CAAC,CAAC,EAAI,SAASA,EAAE,CAAC,MAAMwC,GAAE,CAAC,EAAExC,CAAC,CAAG,GAAEuC,GAAE,EAAEP,CAAC,EAAEU,GAAEtC,EAAE,CAAC,EAAE,CAAC,GAAG,CAACG,GAAa,OAAOA,GAAjB,SAAmB,CAAC,IAAaH,EAAE5H,EAAE+H,CAAC,KAAf,SAAoBH,EAAEG,GAAGH,IAAIyC,KAAIzC,EAAE,QAAQT,EAAE,GAAGQ,GAAEC,EAAE,EAAE,EAAE4B,EAAE,CAAC,IAAI/B,EAAE,CAAE,EAACxH,EAAE,CAAE,EAACuB,EAAE,SAAS,EAAE,EAAEuG,EAAEH,EAAEH,EAAExH,CAAC,EAAEuJ,EAAE/B,EAAExH,CAAC,CAAC,CAAC,OAAO2H,CAAC,CAACJ,EAAE,GAAGO,CAAC,CAAC,EAAE,KAAK,mBAAmB,SAASP,EAAEO,EAAE,CAAC,GAAe,OAAOP,GAAnB,WAAqB,OAAO,SAASO,EAAE,CAAC,QAAQC,EAAE,UAAU,OAAOhI,EAAE,MAAMgI,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEwB,EAAE,EAAEA,EAAExB,EAAEwB,IAAIxJ,EAAEwJ,EAAE,GAAG,UAAUA,GAAG,OAAOrC,EAAE,mBAAmBY,EAAG,SAASA,EAAE,CAAC,OAAOP,EAAE,MAAM,OAAO,CAACO,CAAC,EAAE,OAAO/H,CAAC,CAAC,CAAC,CAAG,CAAA,EAAE,IAAIgI,EAAE,EAAEwB,EAAErC,EAAE,QAAQK,EAAEO,EAAG,SAASP,EAAEO,EAAE,CAACC,EAAER,EAAE,EAAEO,CAAC,CAAG,EAAC,OAAmB,OAAO,SAApB,aAA6ByB,aAAa,QAAQA,EAAE,KAAM,SAAShC,EAAE,CAAC,MAAM,CAACA,EAAEQ,EAAE,CAAC,CAAC,CAAC,EAAG,CAACwB,EAAExB,EAAE,CAAC,CAAC,EAAa,OAAa,GAAN,KAAQ,OAAO,EAAE,aAAnC,WAAgD,KAAK,cAAc,EAAE,UAAU,EAAa,OAAa,GAAN,KAAQ,OAAO,EAAE,aAAnC,WAAgD,KAAK,cAAc,EAAE,UAAU,CAAC,CAAC,IAAIhI,EAAE,EAAE,UAAU,OAAOA,EAAE,YAAY,SAASmH,EAAE,CAACa,EAAEb,CAAC,GAAGK,EAAE,CAAC,EAAEO,EAAEZ,CAAC,IAAIA,EAAE0D,GAAE1D,CAAC,GAAG,IAAInH,EAAEsI,GAAE,IAAI,EAAE,EAAEoC,GAAE,KAAKvD,EAAE,MAAM,EAAE,OAAO,EAAEiC,GAAG,EAAE,GAAGtB,GAAE9H,CAAC,EAAE,CAAC,EAAEA,EAAE,YAAY,SAAS,EAAEgI,EAAE,CAAC,IAAIb,EAAE,GAAG,EAAEiC,GAAsEpJ,EAAEmH,EAAE,EAAE,OAAO4C,GAAE/J,EAAEgI,CAAC,EAAEkC,GAAE,OAAOlK,CAAC,CAAC,EAAEA,EAAE,cAAc,SAASwH,EAAE,CAAC,KAAK,EAAEA,CAAC,EAAExH,EAAE,cAAc,SAAS,EAAE,CAAC,GAAG,CAACiL,IAAGzD,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAExH,EAAE,aAAa,SAASwH,EAAEQ,EAAE,CAAC,IAAIb,EAAE,IAAIA,EAAEa,EAAE,OAAO,EAAEb,GAAG,EAAEA,IAAI,CAAC,IAAInH,EAAEgI,EAAEb,GAAG,GAAOnH,EAAE,KAAK,SAAX,GAA+BA,EAAE,KAAd,UAAiB,CAACwH,EAAExH,EAAE,MAAM,KAAK,CAAC,CAACmH,EAAE,KAAKa,EAAEA,EAAE,MAAMb,EAAE,CAAC,GAAG,IAAIqC,EAAEhI,EAAE,SAAS,EAAE,EAAE,OAAOuG,EAAEP,CAAC,EAAEgC,EAAEhC,EAAEQ,CAAC,EAAE,KAAK,QAAQR,EAAG,SAASA,EAAE,CAAC,OAAOgC,EAAEhC,EAAEQ,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,EAAG,EAACmD,EAAG,IAAID,GAAG9K,GAAG+K,EAAG,QAAWA,EAAG,mBAAmB,KAAKA,CAAE,EAAKA,EAAG,cAAc,KAAKA,CAAE,EAAKA,EAAG,cAAc,KAAKA,CAAE,EAAKA,EAAG,aAAa,KAAKA,CAAE,EAAKA,EAAG,YAAY,KAAKA,CAAE,EAAKA,EAAG,YAAY,KAAKA,CAAE,ECEp8iB,MAAMC,GAAaC,GAAgB,CAAC/I,EAAKgJ,EAAKC,KAC5CA,EAAM,SAAW,CAACC,EAAS5E,KAAYrF,IAAM,CAC3C,MAAMsF,EAAY,OAAO2E,GAAY,WAAaC,GAAQD,CAAO,EAAIA,EACrE,OAAOlJ,EAAIuE,EAAWD,EAAS,GAAGrF,CAAC,CACvC,EACS8J,EAAYE,EAAM,SAAUD,EAAKC,CAAK,GAEzCG,GAAQN,GCLDO,GAAgB,CAC3BC,EACAC,IACG,CAID,GAAA,OAAO,OAAO,eAAeD,CAAO,EAAE,eAAkB,WAExD,CACAA,EAAQ,cAAcC,CAAS,EAC/B,MACF,CAEA,GAAIA,EAAW,CACbC,GAAkBF,EAASC,CAAS,EACpCA,EAAU,MAAM,EAChB,MACF,CAEM,MAAAE,EAAiB,SAAS,cAAc,OAAO,EACrDA,EAAe,KAAO,SACtBA,EAAe,OAAS,GACxBH,EAAQ,YAAYG,CAAc,EAClCA,EAAe,MAAM,EACrBH,EAAQ,YAAYG,CAAc,CACpC,EAEA,SAASD,GAAkBF,EAA0BC,EAAwB,CAErDA,aAAqB,aAEzCG,GAAM,UAAW,0CAA0C,EAI3D,SAAUH,GAAcA,EAA+B,OAAS,UAEhEG,GAAM,UAAW,8CAA8C,EAG/D,SAAUH,GAAcA,EAA+B,OAASD,GAEhEI,GACE,aACA,0DACA,eAAA,CAEN,CAMA,SAASA,GACPC,EACAvG,EACAlD,EACO,CACP,MAAM,IAAIyJ,EACR,2DAA6DvG,EAAU,IACvElD,CAAA,CAEJ,CC3Da,MAAA0J,EAAW,CAACC,EAAaC,IAA6B,CAC3D,MAAA3J,EAAQ2C,EAAQ+G,EAAQC,CAAK,EAC/B,GAAuB3J,GAAU,KAAM,CACzC,MAAMe,EAAsB,CAAA,EACpB,OAAAqB,EAAAsH,EAAQC,EAAO5I,CAAQ,EACxBA,CACT,CACA,OAAAgC,EACE,MAAM,QAAQ/C,CAAK,EACnB,sCAAsC2J,wCAAA,EAEjC3J,CACT,EAEa4J,GAAO,CAACzL,EAAkB0L,EAAgBC,IAAmB,CACxE,MAAMC,EAAQ5L,EAAM0L,GACdG,EAAQ7L,EAAM2L,GAEdG,EAAWJ,KAAU1L,EACrB+L,EAAWJ,KAAU3L,EAIvB8L,EACF9L,EAAM2L,GAAUC,EAEhB,OAAO5L,EAAM2L,GAGXI,EACF/L,EAAM0L,GAAUG,EAEhB,OAAO7L,EAAM0L,EAEjB,EAGA,SAASM,EACPhM,EACAiM,EACAC,EACA/L,EACA,CAQA,OALIH,EAAM,OAASiM,GAAS9L,IAC1BH,EAAM,OAASiM,GAIb,UAAU,SAAW,EAAUjM,EAAM,OAAOiM,EAAOC,EAAa/L,CAAI,EACjEH,EAAM,OAAOiM,EAAOC,CAAW,CACxC,CAEO,MAAMC,GAAO,CAACnM,EAAkBd,EAAcD,IAAe,CAClE,KAAM,CAACkB,CAAI,EAAI6L,EAAahM,EAAOd,EAAM,CAAC,EAC7B8M,EAAAhM,EAAOf,EAAI,EAAGkB,CAAI,CACjC,EAEaiM,GAAS,CAACpM,EAAkBI,EAAeyB,IAAmB,CAC5DmK,EAAAhM,EAAOI,EAAO,EAAGyB,CAAK,CACrC,EAEawK,GAAS,CAACrM,EAAkBI,IAAkB,CAC5C4L,EAAAhM,EAAOI,EAAO,CAAC,CAC9B,EAEa4F,GAAU,CAAChG,EAAkBI,EAAeyB,IAAmB,CAC7DmK,EAAAhM,EAAOI,EAAO,EAAGyB,CAAK,CACrC,EAOayK,EAAgB,CAC3Bd,EACAnH,EACAkI,IACG,CACG,MAAAC,MAAiB,IACjBC,EAAa,CAAA,EAEnB,SAAW,CAACzL,EAAKa,CAAK,IAAK,OAAO,QAAQwC,CAAG,EACvCrD,EAAI,WAAWwK,CAAK,GAAKxK,IAAQwK,IACnCgB,EAAW,IAAIxL,CAAG,EAClBiD,EAAQwI,EAAKzL,EAAI,UAAUwK,EAAM,MAAM,EAAG3J,CAAK,GAInD0K,EAAOE,CAAG,EACV,UAAWzL,KAAOwL,EAChB,OAAOnI,EAAIrD,GAGP,MAAA0L,EAAUC,GAAkBF,CAAG,EACrC,UAAWzL,KAAO0L,EAAS,CACnB,MAAA7J,EAAM2B,EAAQiI,EAAKzL,CAAG,EACxB6B,IAAQ,SACNwB,EAAA,GAAGmH,IAAQxK,KAAS6B,EAE5B,CACF,EAEM8J,GAAoB,CAACtI,EAAUuI,EAAmB,KAIlD,MAAM,QAAQvI,CAAG,EACZA,EAAI,QAAQ,CAAClE,EAAMC,IACxBuM,GAAkBxM,EAAM,GAAGyM,KAAYxM,IAAQ,CAAA,EAI/C,OAAOiE,GAAQ,SACV,OAAO,KAAKA,CAAG,EAAE,QAASrD,GAC/B2L,GAAkBtI,EAAIrD,GAAM,GAAG4L,KAAY5L,GAAK,CAAA,EAI7C,CAAC4L,CAAQ,EC9CZC,EAAO,IAAM,CAAC,EACdC,GAA8B,CAClC,WAAY,GACZ,aAAc,GACd,iBAAkB,GAClB,cAAe,CAAC,EAChB,YAAa,CAAC,EACd,YAAa,KACb,QAAS,IAAM,GACf,YAAaD,EACb,UAAWA,EACX,WAAYA,EACZ,cAAeA,EACf,eAAgBA,EAChB,gBAAiBA,EACjB,qBAAsB,CAAC,EAEvB,MAAO,IAAMA,EACb,cAAeA,EACf,eAAgBA,EAChB,cAAe,SAAY,KAE3B,SAAU,SAAY,CACd,MAAA,IAAI,MAAM,8CAA8C,CAChE,EAEA,OAAQ,SAAY,CACZ,MAAA,IAAI,MAAM,4CAA4C,CAC9D,EAEA,iBAAkBA,EAClB,UAAW,IAAM,IAAI,SAErB,iBAAkB,CAChB,OAAQ,CAAC,EACT,UAAW,CAAC,EACZ,oBAAqB,CAAC,EACtB,qBAAsB,CAAC,EAEvB,SAAUA,EACV,WAAYA,EACZ,SAAUA,EACV,SAAUA,EACV,mBAAoBA,EACpB,iBAAkB,SAAY,CACtB,MAAA,IAAI,MAAM,sDAAsD,CACxE,EAEA,MAAO,CACL,KAAMA,EACN,KAAMA,EACN,KAAMA,EACN,OAAQA,EACR,QAASA,EACT,OAAQA,EACR,IAAKA,EACL,QAASA,CACX,CACF,CACF,EAEME,GAAkB,CACtBrL,EACAgJ,KACe,CAEf,WAAY,GACZ,aAAc,GACd,iBAAkB,GAClB,cAAe,CAAC,EAChB,YAAa,CAAC,EACd,YAAa,KACb,qBAAsB,CAAC,EAEvB,QAAS,IAAM,OAAO,KAAKA,IAAM,WAAW,EAAE,SAAW,EACzD,YAAa,IACXhJ,EAAKkE,GAAU,CACbA,EAAM,aAAe,GACrBA,EAAM,iBAAmB,EAAA,CAC1B,EACH,UAAW,IACTlE,EAAKkE,GAAU,CACbA,EAAM,aAAe,EAAA,CACtB,EACH,WAAY,CAACoH,EAAW5J,IACtB1B,EAAKkE,GAAU,CACbA,EAAM,cAAcoH,GAAa5J,CAAA,CAClC,EACH,cAAe,CAAC4J,EAAmBC,IACjCvL,EAAKkE,GAAU,CACbA,EAAM,YAAYoH,GAAaC,CAAA,CAChC,EACH,eAAiBC,GACfxL,EAAKkE,GAAU,CACbA,EAAM,YAAcsH,CAAA,CACrB,EACH,gBAAkBF,GAChBtL,EAAKkE,GAAU,CACb,OAAOA,EAAM,YAAYoH,EAAA,CAC1B,EACH,MAAO,IACLtL,EAAKkE,GAAU,SACbA,EAAM,YAAc,GACpBA,EAAM,cAAgB,GACtBA,EAAM,iBAAmB,GACzB,MAAMuH,GAAeC,GAAAzL,EAAAiE,EAAM,YAAN,YAAAjE,EAAiB,gBAAjB,KAAAyL,EAAkC,CAAA,EACvDxH,EAAM,iBAAiB,OAASuH,EAChCvH,EAAM,qBAAuBuH,CAAA,CAC9B,EACH,cAAgB1J,GACd/B,EAAKkE,GAAU,CACRA,EAAM,aACHA,EAAA,iBAAiB,OAASnC,EAAM,cACtCmC,EAAM,qBAAuBnC,EAAM,eAGrCmC,EAAM,UAAYnC,EAClBmC,EAAM,WAAa,EAAA,CACpB,EACH,eAAiByH,GAAwC,CAGnD3C,EAAA,EAAM,cAAgB2C,GAC1B3L,EAAKkE,GAAU,CAGbA,EAAM,YAAcyH,CAAA,CACrB,CACH,EACA,cAAe,MAAO7B,GAAkB,WAChC,MAAA6B,EAAc3C,EAAM,EAAA,YAC1B9F,EACEyI,EACA,gFAAA,EAGI,MAAAC,GAAY3L,EAAA+I,IAAM,YAAN,YAAA/I,EAAiB,UACnCiD,EACE0I,EACA,mEAAA,EAGF,OAAMC,GAAAH,EAAA1C,EAAI,EAAE,kBAAiB,mBAAvB,YAAA6C,EAAA,KAAAH,EAA0C5B,IAEhD,KAAM,CAAE,MAAAyB,CAAA,EAAU,MAAMK,EAAU,cAChC,IAAI,SAASD,CAAW,EACxB7B,CAAA,EAGF,OAAIyB,GACEvC,IAAE,cAAcc,EAAOyB,CAAK,EACzBA,IAEHvC,EAAA,EAAE,gBAAgBc,CAAK,EACpB,KAEX,EAEA,SAAU,SAAY,OACd,MAAA6B,EAAc3C,EAAM,EAAA,YAC1B9F,EACEyI,EACA,gFAAA,EAGI,MAAAC,GAAY3L,EAAA+I,IAAM,YAAN,YAAA/I,EAAiB,UACnCiD,EACE0I,EACA,mEAAA,EAGF,MAAMjN,EAAS,MAAMiN,EAAU,SAAS,IAAI,SAASD,CAAW,CAAC,EACjE,OAAIhN,EAAO,OAAOqK,EAAM,EAAA,eAAerK,EAAO,MAAM,WAAW,EACxDA,CACT,EAEA,OAAQ,IAAM,CACN,MAAAgN,EAAc3C,EAAM,EAAA,YAC1B9F,EACEyI,EACA,gFAAA,EAGFtC,GAAcsC,CAAW,CAC3B,EAEA,UAAW,IAAM,OAAA,WAAI,UAAS1L,EAAA+I,EAAI,EAAE,cAAN,KAAA/I,EAAqB,MAAS,GAE5D,iBAAkB,IAAM,OAAA,OAAAA,EAAA+I,IAAM,cAAN,YAAA/I,EAAmB,SAE3C,iBAAkB,CAChB,OAAQ,CAAC,EACT,UAAW,CAAC,EACZ,oBAAqB,CAAC,EACtB,qBAAsB,CAAC,EAEvB,SAAWqL,GAAc,CACvBtL,EAAKkE,GAAU,OACb,MAAMxD,GAAUT,EAAAiE,EAAM,iBAAiB,UAAUoH,KAAjC,KAAArL,EAA+C,EACzDiE,EAAA,iBAAiB,UAAUoH,GAAa5K,EAAU,CAAA,CACzD,CACH,EACA,WAAa4K,GAAc,CAGrBtC,EAAI,IAAM,MAAQA,EAAA,IAAU,QAChChJ,EAAKkE,GAAU,WACb,MAAMxD,GAAUT,EAAAiE,EAAM,iBAAiB,UAAUoH,KAAjC,KAAArL,EAA+C,EAC/D,GAAIS,EAAU,EAAG,CACTwD,EAAA,iBAAiB,UAAUoH,GAAa5K,EAAU,EACxD,MACF,CAEiB,OAAO,KAAKwD,EAAM,iBAAiB,SAAS,EAAE,KAC5D5E,GAAQgM,EAAU,WAAWhM,CAAG,GAAKA,IAAQgM,CAAA,IAK9C/I,EACE2B,EAAM,iBAAiB,OACvBoH,EACAxI,GAAQ4I,EAAAxH,EAAM,YAAN,YAAAwH,EAAiB,cAAeJ,CAAS,CAAA,EAEnD/I,EACE2B,EAAM,qBACNoH,EACAxI,GAAQ+I,EAAA3H,EAAM,YAAN,YAAA2H,EAAiB,cAAeP,CAAS,CAAA,GAI9C,OAAApH,EAAM,iBAAiB,UAAUoH,EAAA,CACzC,CACH,EACA,SAAWA,GAAcxI,EAAQkG,IAAM,iBAAiB,OAAQsC,CAAS,EACzE,SAAU,CAACA,EAAWnL,IAAU,CAC9BH,EAAKkE,GAAU,CACb3B,EAAQ2B,EAAM,iBAAiB,OAAQoH,EAAWnL,CAAK,CAAA,CACxD,EACG6I,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,mBAAqBA,GAAc,CACjC,MAAMQ,EAAQ,IACZ9L,EAAKkE,GAAU,CACN,OAAAA,EAAM,iBAAiB,qBAAqBoH,GAC5C,OAAApH,EAAM,iBAAiB,oBAAoBoH,EAAA,CACnD,EACHtL,EAAKkE,GAAU,CACb,MAAM6H,EAAU,IAAI,QAAeC,GAAY,CACvC9H,EAAA,iBAAiB,qBAAqBoH,GAAaU,CAAA,CAC1D,EAAE,KAAKF,CAAK,EACP5H,EAAA,iBAAiB,oBAAoBoH,GAAaS,CAAA,CACzD,CACH,EAEA,iBAAkB,MAAOT,GAAc,CAC/B,MAAAtC,EAAA,EAAM,iBAAiB,oBAAoBsC,EACnD,EAEA,MAAO,CACL,KAAM,CAACA,EAAW7M,IAAS,CACzBuB,EAAKkE,GAAU,CACb+H,EACY/H,EAAM,iBAAiB,OAAQoH,CAAS,EACjD,KAAK7M,CAAI,EACZwN,EAAmB/H,EAAM,qBAAsBoH,CAAS,EAAE,KAAK7M,CAAI,CAAA,CAEpE,EACGuK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EAEA,KAAM,CAACA,EAAWtB,EAAQC,IAAW,CACnCjK,EAAKkE,GAAU,CACHgI,GACRD,EAAmB/H,EAAM,iBAAiB,OAAQoH,CAAS,EAC3DtB,EACAC,CAAA,EAEQiC,GACRD,EAAmB/H,EAAM,qBAAsBoH,CAAS,EACxDtB,EACAC,CAAA,EAEQkC,EAAcb,EAAWpH,EAAM,cAAgB5F,GACvD4N,GAAe5N,EAAO0L,EAAQC,CAAM,CAAA,EAE5BkC,EAAcb,EAAWpH,EAAM,YAAc5F,GACrD4N,GAAe5N,EAAO0L,EAAQC,CAAM,CAAA,CACtC,CACD,EACGjB,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EAEA,KAAM,CAACA,EAAW9N,EAAMD,IAAO,CAC7ByC,EAAKkE,GAAU,CACHkI,GACRH,EAAmB/H,EAAM,iBAAiB,OAAQoH,CAAS,EAC3D9N,EACAD,CAAA,EAEQ6O,GACRH,EAAmB/H,EAAM,qBAAsBoH,CAAS,EACxD9N,EACAD,CAAA,EAEQ4O,EAAcb,EAAWpH,EAAM,cAAgB5F,GACvD8N,GAAe9N,EAAOd,EAAMD,CAAE,CAAA,EAEtB4O,EAAcb,EAAWpH,EAAM,YAAc5F,GACrD8N,GAAe9N,EAAOd,EAAMD,CAAE,CAAA,CAChC,CACD,EACGyL,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,OAAQ,CAACA,EAAW5M,EAAOD,IAAS,CAClCuB,EAAKkE,GAAU,CACHmI,GACRJ,EAAmB/H,EAAM,iBAAiB,OAAQoH,CAAS,EAC3D5M,EACAD,CAAA,EAEQ4N,GACRJ,EAAmB/H,EAAM,qBAAsBoH,CAAS,EACxD5M,EACAD,CAAA,EAGQ0N,EAAcb,EAAWpH,EAAM,cAAgB5F,GACvD+N,GAAiB/N,EAAOI,EAAO,EAAK,CAAA,EAE5ByN,EAAcb,EAAWpH,EAAM,YAAc5F,GACrD+N,GAAiB/N,EAAOI,EAAO,MAAS,CAAA,CAC1C,CACD,EACGsK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,OAAQ,CAACA,EAAW5M,IAAU,CAC5BsB,EAAKkE,GAAU,CACHoI,GACRL,EAAmB/H,EAAM,iBAAiB,OAAQoH,CAAS,EAC3D5M,CAAA,EAEQ4N,GACRL,EAAmB/H,EAAM,qBAAsBoH,CAAS,EACxD5M,CAAA,EAEQyN,EAAcb,EAAWpH,EAAM,cAAgB5F,GACvDgO,GAAiBhO,EAAOI,CAAK,CAAA,EAErByN,EAAcb,EAAWpH,EAAM,YAAc5F,GACrDgO,GAAiBhO,EAAOI,CAAK,CAAA,CAC/B,CACD,EACGsK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,IAAMA,GAAc,CAClBtL,EAAKkE,GAAU,CACb+H,EAAmB/H,EAAM,iBAAiB,OAAQoH,CAAS,EAAE,MAC7DW,EAAmB/H,EAAM,qBAAsBoH,CAAS,EAAE,IAAI,EACpDa,EAAcb,EAAWpH,EAAM,cAAgB5F,GACvDA,EAAM,IAAI,CAAA,EAEF6N,EAAcb,EAAWpH,EAAM,YAAc5F,GACrDA,EAAM,IAAI,CAAA,CACZ,CACD,EACG0K,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,QAAS,CAACA,EAAWnL,IAAU,CAC7BH,EAAKkE,GAAU,CACb+H,EACY/H,EAAM,iBAAiB,OAAQoH,CAAS,EACjD,QAAQnL,CAAK,EAChB8L,EACY/H,EAAM,qBAAsBoH,CAAS,EAC9C,QAAQnL,CAAK,EACNgM,EAAcb,EAAWpH,EAAM,cAAgB5F,GACvDA,EAAM,QAAQ,EAAK,CAAA,EAEX6N,EAAcb,EAAWpH,EAAM,YAAc5F,GACrDA,EAAM,QAAQ,MAAS,CAAA,CACzB,CACD,CACH,EACA,QAAS,CAACgN,EAAW5M,EAAOD,IAAS,CACnCuB,EAAKkE,GAAU,CACHqI,GACRN,EAAmB/H,EAAM,iBAAiB,OAAQoH,CAAS,EAC3D5M,EACAD,CAAA,EAEQ8N,GACRN,EAAmB/H,EAAM,qBAAsBoH,CAAS,EACxD5M,EACAD,CAAA,EAEQ0N,EAAcb,EAAWpH,EAAM,cAAgB5F,GACvDiO,GAAkBjO,EAAOI,EAAOD,CAAI,CAAA,EAE5B0N,EAAcb,EAAWpH,EAAM,YAAc5F,GACrDiO,GAAkBjO,EAAOI,EAAOD,CAAI,CAAA,CACtC,CACD,EACGuK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,CACF,CACF,CACF,GAEakB,GAAmB5F,GAAuB,EACrDwC,GAAM,CAACpJ,EAAKgJ,KAAS,CACnB,MAAO,CAAC,EACR,KAAOvF,GAAW,OACT,OAAAxD,EAAA+I,EAAA,EAAM,MAAMvF,KAAZ,KAAAxD,EAAuBmL,EAChC,EACA,YAAc3H,GAA2B,CACvCzD,EAAKkE,GAAU,CACb,OAAOA,EAAM,MAAMT,EAAA,CACpB,CACH,EACA,aAAeA,GAA2B,CACpCuF,EAAA,EAAM,MAAMvF,IAChBzD,EAAKkE,GAAU,CACbA,EAAM,MAAMT,GAAU4H,GACnBoB,GAAWzM,EAAKkE,GAAUuI,EAAOvI,EAAM,MAAMT,EAAO,CAAC,EACtD,IAAMuF,EAAI,EAAE,MAAMvF,EAAA,CACpB,CACD,CACH,CAAA,EACA,CACJ,EC9faiJ,EAAe,CAC1BjJ,EACA2C,IAEOoG,GAAkBtI,GAAUkC,EAASlC,EAAM,KAAKT,CAAM,CAAC,CAAC,ECIpDkJ,EAAyB,CACpClJ,EACAmJ,IACG,CACG,MAAAC,EAAcC,aAAWpJ,EAAmB,EAE9C,GAAAD,EAAQ,MAAO,CAAE,OAAAA,CAAO,EACxB,GAAAoJ,EAAoB,OAAAA,EAExB,MAAM,IAAI,MACR,gCAAgCD,6DAAA,CAEpC,EAEO,SAASG,GAAwB,CACtC,QAAAC,EACA,UAAAC,EACA,OAAAxJ,CACF,EAAiE,OAC/D,MAAMyJ,EAAaC,EAAAA,gBACnB,OAAIH,GACG/M,EAAA+M,EAAQ,OAAR,MAAA/M,EAAsB,YAAoB+M,EAAQ,KAChD,KAGJE,GAAA,MAAAA,EAAY,YAGb,OAAOzJ,GAAW,UAAYyJ,EAAW,OACpCA,EAAW,SAAWzJ,EAASyJ,EAAa,KAGlD,CAACD,GAAa,CAACC,EAAW,WAC3BA,EAAW,YAAcD,EAElBC,EAEF,KAZ8B,IAavC,CAEa,MAAAE,GACXC,GACwC,CAClC,MAAAC,EAAWP,GAAwBM,CAAO,EAC1CvJ,EAAW4I,EAAaW,EAAQ,OAASnJ,GAAUA,EAAM,UAAU,EACzE,OAAOH,EAAW,KAAKuJ,GAAA,YAAAA,EAAU,YAAaxJ,CAAQ,CACxD,EAEayJ,GAA6B,CAAC,CACzC,OAAA9J,CACF,IAAgC,CAC9B,MAAM+J,EAAUC,EAAAA,aACZ,GAAA,OAAOhK,GAAW,SAAU,CACxB,MAAAiK,EAAUlK,GAAqBC,CAAM,EAGrCrB,EAAQoL,EACX,QAAA,EACA,KAAMpL,GAAUA,EAAM,MAAQsL,KAAWtL,EAAM,IAAI,EACtD,OAAOA,GAAA,YAAAA,EAAO,KAAKsL,EACrB,CAEO,OAAA,IACT,EAEaC,GACXN,GAC6C,CACvC,KAAA,CAAE,OAAA5J,EAAQ,kBAAAmK,CAAsB,EAAAP,EAChCvJ,EAAW4I,EAAajJ,EAASS,GAAUA,EAAM,UAAU,EAC3D2J,EAAgBd,GAAwBM,CAAO,EAC/CS,EAA0BP,GAA2BF,CAAO,EAQ9D,OAAAvJ,EAAiBC,EAAW,eAC5B8J,GAAA,MAAAA,EAAe,kBACjB3K,EACE,OAAO2K,EAAc,kBAAqB,SAC1C,0DAAA,EAEK9J,EAAW,WAAW8J,EAAc,gBAAgB,GAEzDD,EAA0B7J,EAAW,WAAW6J,CAAiB,EAE9D7J,EAAW,WAAW+J,CAAuB,CACtD,EAEaC,GAAyB,CAAC,CACrC,QAAAf,CACF,IAAyC,CACvC,MAAMgB,EAAaC,EAAAA,gBAIZ,OAHqBjB,EACxBA,EAAQ,QAAU,aAClB,CAAC,CAACgB,EAAW,UAEnB,EAEaE,GAAkB,CAC7BpE,EACA,CAAE,OAAArG,KACC,CACH,MAAM/B,EAAUgL,EAAajJ,EAASS,GAAUA,EAAM,cAAc4F,EAAM,EACpEqE,EAAkBzB,EAAajJ,EAASS,GAAUA,EAAM,UAAU,EAClEvC,EAAayM,EAAA,YAChB1M,GAAqByM,EAAgBrE,EAAOpI,CAAO,EACpD,CAACoI,EAAOqE,CAAe,CAAA,EAElB,MAAA,CAACzM,EAASC,CAAU,CAC7B,EAEa0M,GAAgB,CAC3BnO,EACAmN,IACG,CACG,MAAAiB,EAAclB,GAAsBC,CAAO,EAC3CnJ,EAAQwI,EACZW,EAAQ,OACPnJ,GAAUA,EAAM,YAAYhE,EAAA,EAExB,OAAAoO,EAAY,IAAKA,GAAgBA,GAAAA,YAAAA,EAAcpO,EAAK,EAAE,UAAUgE,CAAK,CAC9E,EAEaqK,GAAiBlB,GAAsC,CAC5D,KAAA,CAAE,OAAA5J,CAAW,EAAA4J,EACnB,OAAOX,EAAajJ,EAASS,GAAUA,EAAM,eAAe,CAC9D,EAEasK,GAAiC,CAC5C/K,EACAqG,IAEA4C,EAAajJ,EAASS,GAAUpB,EAAQoB,EAAM,qBAAsB4F,CAAK,CAAC,EAE/D2E,GAAuB,CAClCvO,EACAmN,IACG,CACG,MAAAqB,EAAgBf,GAAwBN,CAAO,EAC/CnJ,EAAQsK,GAA+BnB,EAAQ,OAAQnN,CAAI,EAE1D,OAAAwO,EAAc,IAAKvN,GAAQ2B,EAAQ3B,EAAKjB,CAAI,CAAC,EAAE,UAAUgE,CAAK,CACvE,EAEayK,GAA2BlL,GACtCiJ,EAAajJ,EAASS,GAAUA,EAAM,YAAY,EAEvC0K,GAAsBnL,GACjCiJ,EAAajJ,EAASS,GAAUA,EAAM,QAAA,CAAS,EAEpC2K,GAA+BpL,GAC1CiJ,EAAajJ,EAASS,GAAUA,EAAM,gBAAgB,EAE3C4K,GAAoBrL,GAC/BiJ,EAAajJ,EAASS,GAAUA,EAAM,aAAa,EAExC6K,GAAetL,GAC1BiJ,EAAajJ,EAASS,GAAUA,EAAM,QAAQ,EAE1C8K,GAAe,IAAM,IAAM,CAAC,EACrBC,GAA2BxL,GACtCiJ,EACEjJ,EACCS,GAAU,SAAA,OAAAwH,GAAAzL,EAAAiE,EAAM,YAAN,YAAAjE,EAAiB,uBAAjB,KAAAyL,EAAyCsD,GACtD,EAEIE,GAAuB,CAAA,EAChBC,GAA0B1L,GACrCiJ,EACEjJ,EACCS,GAAU,SAAA,OAAAwH,GAAAzL,EAAAiE,EAAM,YAAN,YAAAjE,EAAiB,gBAAjB,KAAAyL,EAAkCwD,GAC/C,EAEWE,GAAgB,CAAC,CAAE,OAAA3L,CAAO,IACrCiJ,EAAajJ,EAASS,GAAUA,EAAM,UAAU,EAErCmL,GAAoB5L,GAC/BiJ,EAAajJ,EAASS,GAAUA,EAAM,aAAa,EAExCoL,GAAkB7L,GAC7BiJ,EAAajJ,EAASS,GAAUA,EAAM,WAAW,EAEtCqL,GAAqB9L,GAChCiJ,EAAajJ,EAASS,GAAUA,EAAM,cAAc,EAEzCsL,GAAuB/L,GAClCiJ,EAAajJ,EAASS,GAAUA,EAAM,gBAAgB,EAE3CuL,GAAiBhM,GAC5BiJ,EAAajJ,EAASS,GAAUA,EAAM,MAAM,EAEjCwL,GAAqBjM,GAChCiJ,EAAajJ,EAASS,UAAU,OAAAjE,EAAAiE,EAAM,YAAN,YAAAjE,EAAiB,OAAM,EAE5C0P,GAAwBlM,GACnCiJ,EAAajJ,EAASS,UAAU,OAAAjE,EAAAiE,EAAM,YAAN,YAAAjE,EAAiB,UAAS,EAE/C2P,GAAiBnM,GAC5BiJ,EAAajJ,EAASS,GAAUA,EAAM,SAAS,EC/MpC2L,GAA0B,CACrCxC,EACAvD,IACG,CACH,MAAM3J,EAAQuM,EAAaW,EAAQ,OAASnJ,GAC1CA,EAAM,iBAAiB,SAAS4F,CAAK,CAAA,EAEjCgG,EAAiBpD,EACrBW,EAAQ,OACPnJ,GAAUA,EAAM,UAAA,EAEbzD,EAAegO,GAAqB3E,EAAOuD,CAAO,EAExD,OAAOyC,EAAiB3P,EAAQM,CAClC,EAEasP,GAA6B,CACxC1C,EACAvD,IACG,CACH,MAAMkG,EAAgBtD,EACpBW,EAAQ,OACPnJ,GAAUA,EAAM,iBAAiB,qBAAqB4F,EAAA,EAEzDmG,EAAAA,UAAU,IAAM,CACED,GAAA,MAAAA,GAAA,EACf,CAACA,CAAa,CAAC,EAElB,MAAME,EAAWxD,EACfW,EAAQ,OACPnJ,GAAUA,EAAM,iBAAiB,QAAA,EAE9BiM,EAAazD,EACjBW,EAAQ,OACPnJ,GAAUA,EAAM,iBAAiB,UAAA,EAEpC+L,EAAAA,UAAU,KACRC,EAASpG,CAAK,EACP,IAAMqG,EAAWrG,CAAK,GAC5B,CAACuD,EAAQ,OAAQvD,EAAOoG,EAAUC,CAAU,CAAC,CAClD,EAEaC,GAAuB,CAClC/C,EACAvD,IACG,CACHiG,GAA2B1C,EAASvD,CAAK,EAEzC,MAAMuG,EAA0B3D,EAC9BW,EAAQ,OACPnJ,GAAUA,EAAM,iBAAiB,QAAA,EAE9BoM,EAAWlC,EAAA,YACdjO,GAAmBkQ,EAAwBvG,EAAO3J,CAAK,EACxD,CAAC2J,EAAOuG,CAAuB,CAAA,EAK1B,MAAA,CAFOR,GAAwBxC,EAASvD,CAAK,EAErCwG,CAAQ,CACzB,EAEaC,GAA8B9M,GAA2B,CACpE,MAAM6M,EAAW5D,EACfjJ,EACCS,GAAUA,EAAM,iBAAiB,QAAA,EAE7B,OAAAkK,EAAA,YACL,CAACtE,EAAe3J,IAAmBmQ,EAASxG,EAAO3J,CAAK,EACxD,CAACmQ,CAAQ,CAAA,CAEb,EC/CaE,GAAmB/M,GAAoB,CAC5C,MAAAoJ,EAAcF,EAAuBlJ,EAAQ,iBAAiB,EAC7D,OAAAkL,GAAwB9B,EAAY,MAAM,CACnD,EAOa4D,GAAchN,GAAoB,CACvC,MAAAoJ,EAAcF,EAAuBlJ,EAAQ,YAAY,EACxD,OAAAmL,GAAmB/B,EAAY,MAAM,CAC9C,EAoCa6D,GAAW,CACtBxQ,EACAyQ,IAiBe,CACf,KAAM,CAAE,OAAQC,EAAgB,mBAAAC,CAAmB,EAAIF,GAAA,KAAAA,EAAW,CAAA,EAC5D9D,EAAcF,EAAuBiE,EAAgB,UAAU,EAE/DnQ,EAAegO,GAAqBvO,EAAM2M,CAAW,EACrD,CAACnL,EAASC,CAAU,EAAIuM,GAAgBhO,EAAM2M,CAAW,EACzDtB,EAAQ8C,GAAcnO,EAAM2M,CAAW,EACvCrL,EAAa+M,GAAc1B,CAAW,EAEtCjL,EAAmBiN,GAA4BhC,EAAY,MAAM,EACjEiE,EAAgBhC,GAAiBjC,EAAY,MAAM,EACnDkE,EAAuB9B,GAAwBpC,EAAY,MAAM,EAEvEoD,OAAAA,EAAAA,UAAU,IAAM,CACV,GAAAY,EACK,OAAAE,EAAqB7Q,EAAM2Q,CAAkB,CACrD,EAAA,CAACA,EAAoB3Q,EAAM6Q,CAAoB,CAAC,EAErCC,EAAAA,QAAoB,IAAM,CACtC,MAAMC,EAAU,CACd,MAAA1F,EACA,WAAY,IAAM/J,EAAWtB,CAAI,EACjC,SAAU,IAAM,CACd4Q,EAAc5Q,CAAI,CACpB,EACA,aAAAO,EACA,QAAAiB,EACA,WAAAC,CAAA,EAEIuP,EAAgB3P,GAAoB,CACxC,GAAG0P,EACH,KAAA/Q,EACA,iBAAA0B,EACA,mBAAoB+O,GAAA,YAAAA,EAAS,kBAAA,CAC9B,EACM,MAAA,CACL,GAAGM,EACH,cAAAC,CAAA,CACF,EACC,CACD3F,EACA/J,EACAf,EACAiB,EACAC,EACAzB,EACA0B,EACA+O,GAAA,YAAAA,EAAS,mBACTG,CAAA,CACD,CAGH,EAEaK,GAAkB,CAAIjR,EAAcuD,IAAoB,CAC7D,MAAA4J,EAAUV,EAAuBlJ,EAAQ,iBAAiB,EAC1D,CAACtD,EAAOmQ,CAAQ,EAAIF,GAAqB/C,EAASnN,CAAI,EACrD,MAAA,CAACC,EAAYmQ,CAA8B,CACpD,EAEac,GAA4B3N,GAAoB,CACrD,MAAA4J,EAAUV,EAAuBlJ,EAAQ,iBAAiB,EACzD,OAAA8M,GAA2BlD,EAAQ,MAAM,CAClD,ECjKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmBA,MAAMgE,GAAO,CAACjT,EAAMkT,EAAO,KAAO,CAChC,IAAIC,EAAe,OAAOD,GAAS,SAAW,CAC5C,OAAQA,CACT,EAAGA,EACAE,EAAU,IAAI,QAAQD,EAAa,OAAO,EAE9C,OAAKC,EAAQ,IAAI,cAAc,GAC7BA,EAAQ,IAAI,eAAgB,iCAAiC,EAGxD,IAAI,SAAS,KAAK,UAAUpT,CAAI,EAAG,CAAE,GAAGmT,EAC7C,QAAAC,CACJ,CAAG,CACH,ECRgB,SAAAC,GACdlG,EACAmG,EACAJ,EACA,CACO,OAAAD,GACL,CACE,YAAa9F,EAAM,YACnB,UAAWA,EAAM,UACjB,iBAAAmG,EACA,OAAQnG,EAAM,MAChB,EACA,CAAE,OAAQ,IAAK,GAAG+F,CAAK,CAAA,CAE3B,CAMa,MAAAK,GAAkB,CAC7BlO,EACAiL,KACkB,CAClB,CAAClL,GAAqBC,CAAM,GAAIiL,CAClC,GC/CO,MAAMkD,EAA0B,CAAhC,aAAA,CACG,KAAA,SAA8B,IAEhC,KAAA,IAAA,CAACtS,EAAUa,IAAiB,CAC5B,KAAK,KAAK,IAAIb,CAAG,EACnB,KAAK,KAAK,IAAIA,CAAG,EAAG,KAAKa,CAAK,EAE9B,KAAK,KAAK,IAAIb,EAAK,CAACa,CAAK,CAAC,CAC5B,EAGF,KAAA,OAAUb,GAAa,CAChB,KAAA,KAAK,OAAOA,CAAG,CAAA,EAGb,KAAA,OAAA,CAACA,EAAUa,IAAiB,CACnC,GAAI,CAAC,KAAK,KAAK,IAAIb,CAAG,EAAG,OACzB,MAAMhB,EAAQ,KAAK,KAAK,IAAIgB,CAAG,EACzBZ,EAAQJ,EAAM,QAAQ6B,CAAK,EAC7BzB,IAAU,IAAUJ,EAAA,OAAOI,EAAO,CAAC,EACnCJ,EAAM,SAAW,GAAQ,KAAA,KAAK,OAAOgB,CAAG,CAAA,EAG9C,KAAA,OAAUA,GAAsB,OAC9B,OAAOW,EAAA,KAAK,KAAK,IAAIX,CAAG,IAAjB,KAAAW,EAAsB,CAAA,CAAC,EAGtB,KAAA,QAAA,IAAwC,KAAK,KAAK,QAAQ,EAE3D,KAAA,OAAA,IAAiC,KAAK,KAAK,OAAO,EAE3D,KAAA,IAAOX,GAAsB,KAAK,KAAK,IAAIA,CAAG,CAAA,CAChD,CAEO,MAAMuS,GAAmB,IAAkB,CAC1C,MAAAC,EAAMC,SAAyC,IAAI,EACzD,OAAO3D,cAAY,KACb0D,EAAI,UACJA,EAAA,QAAU,IAAIF,IACXE,EAAI,SACV,CAAE,CAAA,CACP,ECzCgB,SAAAE,GAAkBC,EAAuBC,EAAsB,CACvE,MAAAC,EAAYJ,SAAO,EAAK,EAC9B9B,EAAAA,UAAU,IAAM,CACVgC,IACFE,EAAU,QAAU,IAGlB,CAACF,GAAgBE,EAAU,UAC7BA,EAAU,QAAU,GACXD,IACX,CACD,CACH,CCFa,MAAAE,GACXC,GAEQlS,GAAa,CACnBkS,EAAK,OAAO,OAAO,EAAE,QAASP,GAAQ,CAChC,OAAOA,GAAQ,WACjBA,EAAI3R,CAAK,EACA2R,GAAO,OACfA,EAAyC,QAAU3R,EACtD,CACD,CAAA,EAIQmS,GACX,OAAO,QAAW,YAAcC,EAAAA,gBAAkBtC,EAAAA,UAEvCuC,GAAwB/T,GAAe,CAC5C,MAAAqT,EAAMC,SAAUtT,CAAI,EACpBgU,EAAWX,EAAI,UAAYrT,GAAQiU,GAASZ,EAAI,QAASrT,CAAI,EACnEwR,OAAAA,EAAAA,UAAU,IAAM,CACTwC,IACHX,EAAI,QAAUrT,EAChB,CACD,EACMgU,EAAWX,EAAI,QAAUrT,CAClC,ECoDMkU,GAAmBC,GAAwB,IAAI,SAASA,CAAE,EAEhE,SAASC,GAAW1S,EAAyC,CAC3D,OAAOA,IAAU,IACnB,CAEA,MAAM2S,GAAyB,CAC7BxE,EACAyE,EACApH,IACG,OACG,MAAAqH,EAAe,CAAC,GAAGrH,EAAY,QAAQ,EAC1C,IAAKiH,GAAO,CACX,MAAMK,EAAQL,aAAc,cAAgBA,EAAG,GAAKA,EAChD,OAAAK,aAAiB,aAAe,SAAUA,EACpCA,EAAc,KACjB,IAAA,CACR,EACA,OAAOJ,EAAO,EACd,OAAQ3S,GAASA,KAAQoO,CAAW,EACjC4E,EAAqBC,EAAOH,CAAY,EAE9C,UAAW1H,KAAa4H,EAAoB,CACtC,GAAAH,EAAoB,IAAIzH,CAAS,EAAG,CACtCyH,EAAoB,OAAOzH,CAAS,EAAE,QAAS8H,GAAY,CACjDA,GAAA,CACT,EACD,KACF,CAEA,MAAMC,EAAO1H,EAAY,SAAS,UAAUL,CAAS,EACrD,GAAI,EAAC+H,EAEL,IAAIA,aAAgB,cAAe,CACjC,MAAMC,GACJrT,EAAA,CAAC,GAAGoT,CAAI,EACL,OACE5U,GAAmCA,aAAgB,gBAAA,EAErD,KAAMA,GAASA,EAAK,QAAU4U,EAAK,KAAK,IAJ3C,KAAApT,EAIgDoT,EAAK,GACnD,GAAAC,GAAiBA,aAAyB,iBAAkB,CAC9DA,EAAc,MAAM,EACpB,KACF,CACF,CAEA,GAAID,aAAgB,YAAa,CAC/B,GAAIA,aAAgB,kBAAoBA,EAAK,OAAS,SACpD,SAGFA,EAAK,MAAM,EACX,KACF,EACF,CACF,EAEME,GAAaC,GAAyC,CAE1D,KAAM,CAACC,CAAQ,EAAIC,EAAAA,SAAS,IAAM,OAAO,yBAAyB,CAAC,EACnE,OAAOF,GAAA,KAAAA,EAAcC,CACvB,EAMME,GAAe,CAAC,CACpB,iBAAAC,EACA,QAAAC,CACF,IAGM,CACJ,MAAM5B,EAAezB,KACfsD,EAAUrD,KAChB,OAAAuB,GAAkBC,EAAc,IAAM,OAChC6B,GAAWF,KACb3T,EAAA4T,EAAQ,UAAR,MAAA5T,EAAiB,QACnB,CACD,EACM,IACT,EAEA,SAAS8T,GAAiCC,EAAa,CACrD,IAAIC,EAAmB,GAChB,OAAA,IAAI,MAAMD,EAAO,CACtB,IAAK,CAACE,EAAQrT,IACRA,IAAS,iBACJ,IAAM,CACQoT,EAAA,EAAA,EAInBpT,IAAS,mBACJoT,EAGFC,EAAOrT,EAChB,CACD,CACH,CAaO,SAASsT,GAAwB,CACtC,UAAAvI,EACA,SAAAwI,EACA,SAAAC,EACA,QAAArH,EACA,OAAAsH,EACA,cAAeC,EACf,QAASC,EACT,QAAAC,EACA,UAAAxH,EACA,iBAAA2G,EAAmB,GACnB,oBAAAc,EACA,OAAAC,EACA,QAAArQ,EACA,GAAAsQ,KACGtS,CACL,EAAwB,QAChB,MAAAmB,EAAS8P,GAAUqB,CAAE,EACrBC,EAAwBrC,GAAkB+B,CAAkB,EAC5DO,EAAe9D,EAAA,QACnB,KAAO,CACL,OAAAvN,EACA,OAAA6Q,EACA,UAAArH,EACA,kBAAmB4H,EACnB,QAAA7H,CAAA,GAEF,CAACsH,EAAQtH,EAASvJ,EAAQoR,EAAuB5H,CAAS,CAAA,EAEtD8H,EAAehI,GAAwB+H,CAAY,EACnDE,EAAuBzH,GAA2BuH,CAAY,EAC9DG,GAAsBlH,GAAuB+G,CAAY,EACzDjB,EAAU9B,SAAwB,IAAI,EACtCmD,IAAOjV,GAAA+M,GAAA,YAAAA,EAAS,OAAT,KAAA/M,GAAiBkV,OAExBC,GAASC,EAAAA,YACTC,EAAiB/F,GAAkB9L,CAAM,EACzC8R,GAAgB7I,EAAajJ,EAASS,GAAUA,EAAM,aAAa,EACnEsR,GAAQ9I,EAAajJ,EAASS,GAAUA,EAAM,KAAK,EACnDuR,GAAc/I,EAAajJ,EAASS,GAAUA,EAAM,WAAW,EAC/DwR,GAAYhJ,EAAajJ,EAASS,GAAUA,EAAM,SAAS,EAC3DyR,GAAgBjJ,EAAajJ,EAASS,GAAUA,EAAM,aAAa,EACnE0R,GAAwBlJ,EAC5BjJ,EACCS,GAAUA,EAAM,cAAA,EAEb2R,GAAcrJ,GAAkBtI,GAAUA,EAAM,WAAW,EAC3D4R,GAAetJ,GAAkBtI,GAAUA,EAAM,YAAY,EAE7D6O,EAAsBlB,KACtBd,GACJ3C,EAAA,YACE,CAAC9C,EAAW8H,KACUL,IAAE,IAAIzH,EAAW8H,CAAO,EACrC,IAAM,CACSL,IAAE,OAAOzH,EAAW8H,CAAO,CAAA,GAGnD,CAACL,CAAmB,CAAA,EAKxBR,GAAgB,KACduD,GAAarS,CAAM,EACZ,IAAMoS,GAAYpS,CAAM,GAC9B,CAACoS,GAAapS,EAAQqS,EAAY,CAAC,EAEtCvD,GAAgB,IAAM,OACNoD,GAAA,CACZ,OAAArB,EACA,eAAerU,EAAA4U,GAAA,KAAAA,EAAyBG,IAAzB,KAAA/U,EAAiD,CAAC,EACjE,UAAAgN,EACA,qBAAA8D,GACA,UAAAnF,CAAA,CACD,CAAA,EACA,CACD0I,EACAO,EACA9D,GACA9D,EACA0I,GACAX,EACApJ,CAAA,CACD,EAED2G,GAAgB,IAAM,CACpBqD,GAAsB/B,EAAQ,OAAO,CAAA,EACpC,CAAC+B,EAAqB,CAAC,EAE1B3F,EAAAA,UAAU,IAAM,OACCqF,GAAArV,EAAA8U,GAAA,YAAAA,EAAc,cAAd,KAAA9U,EAA6B,CAAA,CAAE,GAC7C,CAAC8U,GAAA,YAAAA,EAAc,YAAaO,EAAgBC,EAAa,CAAC,EAE7DvD,GAAkBiD,GAAqB,IAAM,CACjCS,IAAA,CACX,EAED,MAAMK,GAAe,MACnBlR,EACAqP,EACA8B,KACG,CACSP,KACZ,MAAMlM,EAAYyM,GAAY,UACxBC,GAAqBtD,GAAgB9N,EAAE,aAAa,EACtD0E,GAAA,MAAAA,EAAW,MACb0M,GAAmB,OAAO1M,EAAU,KAAMA,EAAU,KAAK,EAG3D,MAAM5K,GAAS,MAAMiN,EAAU,SAASqK,EAAkB,EAC1D,GAAItX,GAAO,MACM2W,EAAA3W,GAAO,MAAM,WAAW,EAC7B+W,KACLhB,GACH5B,GACEnU,GAAO,MAAM,YACboU,EAAoB,EACpBc,EAAQ,OAAA,MAGP,CACLyB,EAAe,CAAE,CAAA,EACX,MAAAY,GAAanC,GAAelP,CAAC,EAEnC,GADM,MAAAuP,GAAA,YAAAA,EAAWzV,GAAO,KAAMuX,KAC1BA,GAAW,iBAAkB,CACrBR,KACV,MACF,CAOI1I,EAAiBA,EAAA,OAAOzD,GAAa1E,EAAE,aAAa,EAEtDuQ,GAAO7L,GAAa2K,EAAQ,CAC1B,QAAA5P,EACA,QAASiF,GAAA,YAAAA,EAAW,aAA6BoL,CAAA,CAClD,CACL,CAAA,EAGF,OACGwB,EAAA,QAAA,cAAAjB,GAAA,CACC,IAAK9C,GAAU,CAACyB,EAASW,CAAW,CAAC,EACpC,GAAGlS,EACJ,GAAAsS,EACA,OAAAN,EACA,OAAAK,EACA,QAAArQ,EACA,SAAWO,GAAM,CACfA,EAAE,eAAe,EACjBkR,GACElR,EACAA,EAAE,cACDA,EAAiC,WAAA,CAEtC,EACA,QAAUmP,GAAU,CAClBS,GAAA,MAAAA,EAAUT,GACN,CAAAA,EAAM,kBACJwB,IACR,CAEA,EAAAW,UAAA,cAACzS,GAAoB,SAApB,CAA6B,MAAOoR,CAAA,kDAEhCqB,EAAA,QAAA,cAAAxC,GAAA,CAAa,QAAAE,EAAkB,iBAAAD,CAAoC,CAAA,EACnE3G,GACEkJ,UAAA,cAAA,QAAA,CAAM,KAAK,SAAS,MAAOlJ,EAAW,KAAK,WAAY,CAAA,EAEzD2H,GAAOuB,UAAA,cAAA,QAAA,CAAM,KAAK,SAAS,MAAOvB,EAAI,KAAMtR,CAAA,CAAe,EAC3D+Q,CACH,CACF,CACF,CAEJ,CC3Xa,MAAA+B,GAAyBC,GAA6B,CAC3D,MAAAC,EAAM,IAAI1E,GACR,OAAAyE,EAAA,QAAQ,CAAC,CAAC/W,EAAKa,CAAK,IAAMmW,EAAI,IAAIhX,EAAKa,CAAK,CAAC,EAC9C,CAAC,GAAGmW,EAAI,QAAA,CAAS,EAAE,OACxB,CAAC9X,EAAK,CAACc,EAAKa,CAAK,IACfoC,EAAQ/D,EAAKc,EAAKa,EAAM,SAAW,EAAIA,EAAM,GAAKA,CAAK,EACzD,CAAC,CAAA,CAEL,ECNMoW,GAAsBnY,GAGtB,YAAaA,GAAQ,OAAOA,EAAK,SAAY,WACxCgY,GAAsB,CAAC,GAAGhY,EAAK,QAAA,CAAS,CAAC,EAC3CgY,GAAsB,OAAO,QAAQhY,CAAI,CAAC,EAG7CoY,GAAsBpY,GAC1BqY,GAAOrY,EAAM,CAACkF,CAAa,CAAC,EAOvB,SAASoT,GACd9K,EACc,CACP,MAAA,CACL,SAAU,MAAOzL,GAAU,CACnB,MAAA/B,EAAOmY,GAAmBpW,CAAK,EAC/BxB,EAAS,MAAMiN,EAAU,SAAS4K,GAAmBpY,CAAI,CAAC,EAEhE,OAAIO,EAAO,MACF,CACL,KAAM,OACN,MAAO,CACL,YAAaA,EAAO,MACpB,UAAWP,EAAK,UAChB,OAAQA,EAAKkF,EACf,EACA,cAAelF,EACf,OAAQA,EAAKkF,EAAA,EAIV,CACL,KAAM3E,EAAO,KACb,MAAO,OACP,cAAeP,EACf,OAAQA,EAAKkF,EAAA,CAEjB,EACA,cAAe,CAAClF,EAAgC0L,IAC9C8B,EAAU,cAAc2K,GAAmBnY,CAAI,EAAG0L,CAAK,CAAA,CAE7D,CCPa,MAAA6M,GAAgBlT,GAA+B,CACpD,MAAAoJ,EAAcF,EAAuBlJ,EAAQ,cAAc,EAC3DwO,EAAetD,GAAwB9B,EAAY,MAAM,EACzDjL,EAAmBiN,GAA4BhC,EAAY,MAAM,EACjE+J,EAAgBvH,GAAiBxC,EAAY,MAAM,EACnDiH,EAAUlF,GAAmB/B,EAAY,MAAM,EAC/CyH,EAAS5E,GAAkB7C,EAAY,MAAM,EAC7CI,EAAY0C,GAAqB9C,EAAY,MAAM,EAEnDgK,EAAsB1H,GAAuBtC,EAAY,MAAM,EAE/DiK,EADqBnJ,GAAwBd,CAAW,EAEzC,UAAUgK,CAAmB,EAE5CE,EAAuBzH,GAAezC,EAAY,MAAM,EAExDmK,EADmB5J,GAAsBP,CAAW,EACb,UAAUkK,CAAoB,EAEpE,OAAA/F,EAAA,QACL,KAAO,CACL,OAAAsD,EACA,UAAArH,EACA,cAAe6J,EACf,YAAaE,GAAA,KAAAA,EAAuB,CAAC,EACrC,iBAAApV,EACA,aAAAqQ,EACA,cAAA2E,EACA,QAAA9C,CAAA,GAEF,CACEQ,EACA1S,EACAkV,EACAE,EACA/E,EACA6B,EACA7G,EACA2J,CACF,CAAA,CAEJ,EA+CaK,GAAkBxT,GAAiC,CACxD,MAAAoJ,EAAcF,EAAuBlJ,EAAQ,gBAAgB,EAC7D9B,EAAayN,GAAcvC,CAAW,EACtCiE,EAAgBhC,GAAiBjC,EAAY,MAAM,EACnDpL,EAAWsN,GAAYlC,EAAY,MAAM,EACzCrL,EAAa+M,GAAc1B,CAAW,EACtCyI,EAAiB/F,GAAkB1C,EAAY,MAAM,EACrD2I,EAAQhG,GAAoB3C,EAAY,MAAM,EAC9CuI,EAAS3F,GAAc5C,EAAY,MAAM,EACzCqK,EAAYtH,GAAc/C,EAAY,MAAM,EAC3C,OAAAmE,EAAA,QACL,KAAO,CACL,WAAArP,EACA,cAAAmP,EACA,WAAAtP,EACA,SAAAC,EACA,eAAgB,IAAM6T,EAAe,EAAE,EACvC,MAAAE,EACA,OAAAJ,EACA,UAAA8B,CAAA,GAEF,CACE1V,EACAgU,EACAF,EACA3T,EACAyT,EACA3T,EACAqP,EACAoG,CACF,CAAA,CAEJ,ECtEaC,GAAkB1T,GAAsC,CAE7D,MAAA4J,EAAUV,EAAuBlJ,EAAQ,gBAAgB,EACzDS,EAAQyS,GAAalT,CAAM,EAC3B,CACJ,WAAY2T,EACZ,WAAAzV,EACA,cAAAmP,EACA,eAAAuG,EACA,SAAA5V,EACA,MAAA+T,EACA,OAAAJ,EACA,UAAA8B,CAAA,EACED,GAAexT,CAAM,EAEnBsN,EAAuB9B,GAAwB5B,EAAQ,MAAM,EAE7D7L,EAAa4M,EAAA,YACjB,IAAIrO,IAAoB,CAChBA,EAAA,QAASG,GAAS,CACtBkX,EAAmBlX,CAAI,CAAA,CACxB,CACH,EACA,CAACkX,CAAkB,CAAA,EAGd,OAAApG,EAAA,QACL,KAAO,CACL,GAAG9M,EACH,gBAAiBvC,EACjB,cAAAmP,EACA,WAAAtP,EACA,qBAAAuP,EACA,eAAAsG,EACA,SAAA5V,EACA,MAAA+T,EACA,OAAAJ,EACA,UAAA8B,CAAA,GAEF,CACEG,EACA7V,EACAuP,EACAyE,EACA7T,EACAuC,EACAkR,EACA3T,EACAqP,EACAoG,CACF,CAAA,CAEJ,EC7HMI,GAAwB,CAC5BjK,EACAvD,EACAjI,IACG,CACG,MAAA1B,EAAQsO,GAAqB3E,EAAOuD,CAAO,EACjD0C,GAA2B1C,EAASvD,CAAK,EACnC,MAAAlI,EAAmBiN,GAA4BxB,EAAQ,MAAM,EAC7DyD,EAAgBhC,GAAiBzB,EAAQ,MAAM,EAC/C9B,EAAQ8C,GAAcvE,EAAOuD,CAAO,EAEpCkK,EAAkE,CACtE,QAAS,WACT,cAAe,WACf,GAAG1V,CAAA,EAGCG,EAAWJ,EACb2V,EAA2B,cAC3BA,EAA2B,QAEzBC,EAAgBpJ,EAAAA,YAAY,IAAM,CAClCpM,IAAa,YACf8O,EAAchH,CAAK,CAEpB,EAAA,CAAC9H,EAAU8H,EAAOgH,CAAa,CAAC,EAEnC5N,EACyB/C,GAAU,MAAQ,MAAM,QAAQA,CAAK,EAC5D,sCAAsC2J,wCAAA,EAGxC,MAAMiB,EAAM2B,EACVW,EAAQ,OACPnJ,GAAUA,EAAM,iBAAiB,KAAA,EAG9B+M,EAAUD,EAAA,QACd,KAAO,CACL,KAAOvS,GAAc,CACfsM,EAAA,KAAKjB,EAAOrL,CAAI,EACN+Y,GAChB,EACA,KAAM,CAACxN,EAAgBC,IAAmB,CACpCc,EAAA,KAAKjB,EAAOE,EAAQC,CAAM,EAChBuN,GAChB,EACA,KAAM,CAACha,EAAcD,IAAe,CAC9BwN,EAAA,KAAKjB,EAAOtM,EAAMD,CAAE,EACVia,GAChB,EACA,OAAQ,CAAC9Y,EAAeyB,IAAe,CACjC4K,EAAA,OAAOjB,EAAOpL,EAAOyB,CAAK,EAChBqX,GAChB,EACA,QAAUrX,GAAe,CACnB4K,EAAA,QAAQjB,EAAO3J,CAAK,EACVqX,GAChB,EACA,OAAS9Y,GAAkB,CACrBqM,EAAA,OAAOjB,EAAOpL,CAAK,EACT8Y,GAChB,EACA,IAAK,IAAM,CACTzM,EAAI,IAAIjB,CAAK,EACC0N,GAChB,EACA,QAAS,CAAC9Y,EAAeyB,IAAe,CAClC4K,EAAA,QAAQjB,EAAOpL,EAAOyB,CAAK,EACjBqX,GAChB,CAAA,GAEF,CAACzM,EAAKjB,EAAO0N,CAAa,CAAA,EAKrB,MAAA,CAFYxG,EAAAA,QAAQ,IAAM7Q,GAAA,KAAAA,EAAS,CAAA,EAAI,CAACA,CAAK,CAAC,EAEjC8Q,EAAS1F,CAAK,CACpC,EAkBO,SAASkM,GACdvX,EACA,CAAE,OAAAuD,EAAQ,mBAAA5B,CAAmB,EAA0B,CAAA,EACvD,CACM,MAAAwL,EAAUV,EAAuBlJ,EAAQ,YAAY,EAEpD,OAAA6T,GAAsBjK,EAASnN,EAAM2B,CAAkB,CAKhE,CAaO,MAAM6V,GAAa,CAAC,CACzB,KAAAxX,EACA,SAAAmU,EACA,OAAA5Q,EACA,mBAAA5B,CACF,IAAuB,CACf,MAAAwL,EAAUV,EAAuBlJ,EAAQ,YAAY,EACrD,CAACtD,EAAO8Q,EAAS1F,CAAK,EAAI+L,GAC9BjK,EACAnN,EACA2B,CAAA,EAEF,OAAUsU,UAAA,cAAAA,EAAA,QAAA,SAAA,KAAA9B,EAASlU,EAAO8Q,EAAS1F,CAAK,CAAE,CAC5C"}