@bitkyc08/opencodex 2.89.0 → 2.90.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/gui/dist/assets/App-DgxkE6Md.js +58 -0
- package/gui/dist/assets/{Tray-7z1COnmz.js → Tray-DbTNc_88.js} +1 -1
- package/gui/dist/assets/{index-uchD-ngf.js → index-TmaHa54u.js} +5 -5
- package/gui/dist/assets/quota-summary-B16x5DZZ.js +1 -0
- package/gui/dist/index.html +1 -1
- package/package.json +2 -2
- package/src/adapters/base.ts +4 -0
- package/src/adapters/claude-cli/adapter.ts +13 -7
- package/src/adapters/claude-cli/usage-admission.ts +14 -2
- package/src/adapters/coding-agent/turn.ts +14 -4
- package/src/adapters/cursor/protobuf-request.ts +3 -0
- package/src/adapters/google-progress-history.ts +19 -1
- package/src/adapters/google.ts +28 -9
- package/src/adapters/image.ts +5 -3
- package/src/adapters/input-media-guard.ts +5 -2
- package/src/adapters/kiro-refusal.ts +41 -1
- package/src/adapters/ollama-native.ts +1 -0
- package/src/adapters/openai-chat/messages.ts +34 -4
- package/src/adapters/openai-chat/passthrough.ts +37 -4
- package/src/adapters/openai-chat/reasoning-replay.ts +98 -13
- package/src/adapters/openai-chat/serialized-tool-call-content.ts +95 -134
- package/src/adapters/openai-chat/serialized-tool-call-markup.ts +108 -0
- package/src/adapters/openai-chat/standalone-bare-tool-calls.ts +136 -0
- package/src/adapters/openai-chat.ts +7 -6
- package/src/adapters/openai-responses/opengateway-input.ts +139 -0
- package/src/adapters/openai-responses/passthrough.ts +5 -1
- package/src/adapters/openai-responses/transport.ts +13 -1
- package/src/claude/desktop-3p-library.ts +43 -3
- package/src/claude/desktop-3p.ts +20 -10
- package/src/claude/desktop-picker-profile.ts +18 -9
- package/src/claude/desktop-remote-store-io.ts +2 -2
- package/src/cli/ensure-desktop-cold-start.ts +2 -2
- package/src/codex/account-lifecycle.ts +19 -6
- package/src/codex/account-store.ts +27 -8
- package/src/codex/account-usability.ts +4 -1
- package/src/codex/auth-api/account-list.ts +10 -5
- package/src/codex/auth-api/account-pause-group.ts +2 -22
- package/src/codex/auth-api/login-collision.ts +59 -0
- package/src/codex/auth-api/login-flow.ts +12 -7
- package/src/codex/auth-api/pool-mode-gate.ts +81 -13
- package/src/codex/auth-collision.ts +31 -4
- package/src/codex/auth-context.ts +48 -6
- package/src/codex/cli-update-plan.ts +18 -3
- package/src/codex/collision-identity.ts +78 -0
- package/src/codex/main-account-hard-lock.ts +14 -0
- package/src/codex/routing/cooldown-math.ts +5 -0
- package/src/codex/routing/failure-window.ts +61 -9
- package/src/codex/routing.ts +4 -3
- package/src/codex/shim-diagnostics.ts +2 -1
- package/src/codex/shim-fingerprint.ts +11 -2
- package/src/codex/shim-templates.ts +16 -5
- package/src/codex/shim-windows-refresh.ts +224 -0
- package/src/codex/shim.ts +45 -21
- package/src/combos/failover.ts +8 -1
- package/src/config/provider-validation.ts +7 -2
- package/src/generated/compatibility-version.json +168 -108
- package/src/generated/model-metadata.ts +1 -1
- package/src/images/loop.ts +2 -2
- package/src/lib/bun-transpiler-cache-scope.mjs +31 -17
- package/src/lib/provider-admission-wait.ts +14 -0
- package/src/lib/service-secrets.ts +37 -2
- package/src/lib/translator-budget.ts +1 -1
- package/src/lib/upstream-retry.ts +15 -0
- package/src/oauth/account-import/google-antigravity-adapter.ts +38 -2
- package/src/oauth/account-import/parser.ts +15 -2
- package/src/oauth/account-import/types.ts +7 -0
- package/src/oauth/chatgpt-shared.ts +10 -1
- package/src/oauth/dsh.ts +45 -2
- package/src/oauth/kiro.ts +44 -1
- package/src/oauth/login-flow-state.ts +11 -2
- package/src/providers/claude-cli-usage.ts +20 -5
- package/src/providers/initial-model-selection.ts +2 -2
- package/src/providers/key-failover.ts +10 -2
- package/src/providers/key-store.ts +8 -3
- package/src/providers/mistral-transport.ts +207 -0
- package/src/providers/openai-sidecar.ts +5 -0
- package/src/providers/quota/anthropic-account-quota.ts +18 -6
- package/src/providers/quota/antigravity.ts +6 -2
- package/src/providers/quota/failure-codes.ts +18 -0
- package/src/providers/quota/vendor-probes-oauth.ts +12 -3
- package/src/providers/quota-routing-cache.ts +1 -1
- package/src/providers/quota.ts +5 -1
- package/src/providers/registry/entries-extended.ts +6 -1
- package/src/providers/routed-config.ts +1 -1
- package/src/providers/xai-transport.ts +2 -1
- package/src/responses/audio.ts +46 -0
- package/src/responses/input-media.ts +37 -15
- package/src/responses/parser-content.ts +22 -27
- package/src/responses/reasoning-retention.ts +218 -11
- package/src/responses/schema.ts +3 -4
- package/src/responses/web-search-replay.ts +11 -2
- package/src/server/chat-native.ts +8 -7
- package/src/server/index/serve-options.ts +8 -2
- package/src/server/index/websocket-handler.ts +10 -0
- package/src/server/lifecycle.ts +17 -1
- package/src/server/management/oauth-account-routes.ts +2 -1
- package/src/server/messages-native.ts +11 -0
- package/src/server/request-log.ts +16 -7
- package/src/server/responses/adapter-continuation.ts +2 -2
- package/src/server/responses/adapter-dispatch.ts +2 -2
- package/src/server/responses/codex-ws-exchange.ts +3 -0
- package/src/server/responses/codex-ws-metadata.ts +44 -0
- package/src/server/responses/codex-ws-session.ts +21 -1
- package/src/server/responses/combo-stream-preflight.ts +7 -2
- package/src/server/responses/compact.ts +2 -0
- package/src/server/responses/core-auth.ts +20 -0
- package/src/server/responses/core-codex-account.ts +21 -14
- package/src/server/responses/core-combo.ts +3 -0
- package/src/server/responses/core-opaque-recovery.ts +20 -11
- package/src/server/responses/deepseek-image-files.ts +121 -0
- package/src/server/responses/empty-completion-guard.ts +8 -0
- package/src/server/responses/fetch-helpers.ts +30 -10
- package/src/server/responses/input-admission.ts +6 -2
- package/src/server/responses/main-hard-lock-routing.ts +33 -8
- package/src/server/responses/opengateway-completion-guard.ts +232 -0
- package/src/server/responses/passthrough-completion.ts +41 -0
- package/src/server/responses/passthrough-delivery.ts +2 -0
- package/src/server/responses/passthrough-dispatch.ts +13 -13
- package/src/server/responses/passthrough-key-rotation.ts +40 -0
- package/src/server/responses/reasoning-archive-error.ts +21 -0
- package/src/server/responses/request-prepare.ts +11 -1
- package/src/server/responses/request-transport.ts +61 -3
- package/src/service/orchestration.ts +17 -0
- package/src/types/provider.ts +2 -0
- package/src/types/request.ts +16 -1
- package/src/types.ts +1 -0
- package/src/web-search/loop.ts +2 -2
- package/gui/dist/assets/App-BnRSujOq.js +0 -58
- package/gui/dist/assets/quota-summary-BY_10IEz.js +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/App-
|
|
2
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function S(){}var C={H:null,A:null,T:null,S:null},te=Object.prototype.hasOwnProperty;function ne(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function re(e,t){return ne(e.type,t,e.props)}function ie(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function se(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function ce(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(S,S):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function le(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,le(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+se(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),le(o,r,i,``,function(e){return e})):o!=null&&(ie(o)&&(o=re(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u<e.length;u++)a=e[u],s=l+se(a,u),c+=le(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+se(a,u++),c+=le(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return le(ce(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function ue(e,t,n){if(e==null)return e;var r=[],i=0;return le(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function de(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var w=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},T={map:ue,forEach:function(e,t,n){ue(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ue(e,function(){t++}),t},toArray:function(e){return ue(e,function(e){return e})||[]},only:function(e){if(!ie(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=T,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=C,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return C.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!te.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return ne(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)te.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return ne(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=ie,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:de}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=C.T,n={};C.T=n;try{var r=e(),i=C.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(S,w)}catch(e){w(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),C.T=t}},e.unstable_useCacheRefresh=function(){return C.H.useCacheRefresh()},e.use=function(e){return C.H.use(e)},e.useActionState=function(e,t,n){return C.H.useActionState(e,t,n)},e.useCallback=function(e,t){return C.H.useCallback(e,t)},e.useContext=function(e){return C.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return C.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return C.H.useEffect(e,t)},e.useEffectEvent=function(e){return C.H.useEffectEvent(e)},e.useId=function(){return C.H.useId()},e.useImperativeHandle=function(e,t,n){return C.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return C.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return C.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return C.H.useMemo(e,t)},e.useOptimistic=function(e,t){return C.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return C.H.useReducer(e,t,n)},e.useRef=function(e){return C.H.useRef(e)},e.useState=function(e){return C.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return C.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return C.H.useTransition()},e.version=`19.2.8`})),u=o(((e,t)=>{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,ee||(ee=!0,ie());else{var t=n(l);t!==null&&se(x,t.startTime-e)}}}var ee=!1,S=-1,C=5,te=-1;function ne(){return g?!0:!(e.unstable_now()-te<C)}function re(){if(g=!1,ee){var t=e.unstable_now();te=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(S),S=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&se(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}}}finally{i?ie():ee=!1}}}var ie;if(typeof y==`function`)ie=function(){y(re)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=re,ie=function(){oe.postMessage(null)}}else ie=function(){_(re,0)};function se(t,n){S=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):C=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(S),S=-1):h=!0,se(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,ie()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`);function o(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var s=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return o(e,t,null,r)},e.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=c(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=c(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},e.useFormStatus=function(){return s.H.useHostTransitionStatus()},e.version=`19.2.8`})),m=o(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function d(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function p(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=p(e),t!==null)return t;e=e.sibling}return null}var h=Object.assign,g=Symbol.for(`react.element`),_=Symbol.for(`react.transitional.element`),v=Symbol.for(`react.portal`),y=Symbol.for(`react.fragment`),b=Symbol.for(`react.strict_mode`),x=Symbol.for(`react.profiler`),ee=Symbol.for(`react.consumer`),S=Symbol.for(`react.context`),C=Symbol.for(`react.forward_ref`),te=Symbol.for(`react.suspense`),ne=Symbol.for(`react.suspense_list`),re=Symbol.for(`react.memo`),ie=Symbol.for(`react.lazy`),ae=Symbol.for(`react.activity`),oe=Symbol.for(`react.memo_cache_sentinel`),se=Symbol.iterator;function ce(e){return typeof e!=`object`||!e?null:(e=se&&e[se]||e[`@@iterator`],typeof e==`function`?e:null)}var le=Symbol.for(`react.client.reference`);function ue(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===le?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case y:return`Fragment`;case x:return`Profiler`;case b:return`StrictMode`;case te:return`Suspense`;case ne:return`SuspenseList`;case ae:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case v:return`Portal`;case S:return e.displayName||`Context`;case ee:return(e._context.displayName||`Context`)+`.Consumer`;case C:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case re:return t=e.displayName||null,t===null?ue(e.type)||`Memo`:t;case ie:t=e._payload,e=e._init;try{return ue(e(t))}catch{}}return null}var de=Array.isArray,w=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,T=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fe={pending:!1,data:null,method:null,action:null},pe=[],me=-1;function he(e){return{current:e}}function E(e){0>me||(e.current=pe[me],pe[me]=null,me--)}function D(e,t){me++,pe[me]=e.current,e.current=t}var ge=he(null),_e=he(null),ve=he(null),ye=he(null);function be(e,t){switch(D(ve,t),D(_e,e),D(ge,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}E(ge),D(ge,e)}function xe(){E(ge),E(_e),E(ve)}function Se(e){e.memoizedState!==null&&D(ye,e);var t=ge.current,n=Hd(t,e.type);t!==n&&(D(_e,e),D(ge,n))}function Ce(e){_e.current===e&&(E(ge),E(_e)),ye.current===e&&(E(ye),Qf._currentValue=fe)}var we,Te;function Ee(e){if(we===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);we=t&&t[1]||``,Te=-1<e.stack.indexOf(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/App-DgxkE6Md.js","assets/quota-summary-B16x5DZZ.js","assets/App-dnkJ85te.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function S(){}var C={H:null,A:null,T:null,S:null},te=Object.prototype.hasOwnProperty;function ne(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function re(e,t){return ne(e.type,t,e.props)}function ie(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function se(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function ce(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(S,S):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function le(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,le(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+se(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),le(o,r,i,``,function(e){return e})):o!=null&&(ie(o)&&(o=re(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u<e.length;u++)a=e[u],s=l+se(a,u),c+=le(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+se(a,u++),c+=le(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return le(ce(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function ue(e,t,n){if(e==null)return e;var r=[],i=0;return le(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function de(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var w=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},T={map:ue,forEach:function(e,t,n){ue(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ue(e,function(){t++}),t},toArray:function(e){return ue(e,function(e){return e})||[]},only:function(e){if(!ie(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=T,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=C,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return C.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!te.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return ne(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)te.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return ne(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=ie,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:de}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=C.T,n={};C.T=n;try{var r=e(),i=C.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(S,w)}catch(e){w(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),C.T=t}},e.unstable_useCacheRefresh=function(){return C.H.useCacheRefresh()},e.use=function(e){return C.H.use(e)},e.useActionState=function(e,t,n){return C.H.useActionState(e,t,n)},e.useCallback=function(e,t){return C.H.useCallback(e,t)},e.useContext=function(e){return C.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return C.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return C.H.useEffect(e,t)},e.useEffectEvent=function(e){return C.H.useEffectEvent(e)},e.useId=function(){return C.H.useId()},e.useImperativeHandle=function(e,t,n){return C.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return C.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return C.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return C.H.useMemo(e,t)},e.useOptimistic=function(e,t){return C.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return C.H.useReducer(e,t,n)},e.useRef=function(e){return C.H.useRef(e)},e.useState=function(e){return C.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return C.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return C.H.useTransition()},e.version=`19.2.8`})),u=o(((e,t)=>{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,ee||(ee=!0,ie());else{var t=n(l);t!==null&&se(x,t.startTime-e)}}}var ee=!1,S=-1,C=5,te=-1;function ne(){return g?!0:!(e.unstable_now()-te<C)}function re(){if(g=!1,ee){var t=e.unstable_now();te=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(S),S=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&se(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ie():ee=!1}}}var ie;if(typeof y==`function`)ie=function(){y(re)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=re,ie=function(){oe.postMessage(null)}}else ie=function(){_(re,0)};function se(t,n){S=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):C=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(S),S=-1):h=!0,se(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,ie()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`);function o(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var s=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return o(e,t,null,r)},e.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=c(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=c(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},e.useFormStatus=function(){return s.H.useHostTransitionStatus()},e.version=`19.2.8`})),m=o(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function d(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function p(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=p(e),t!==null)return t;e=e.sibling}return null}var h=Object.assign,g=Symbol.for(`react.element`),_=Symbol.for(`react.transitional.element`),v=Symbol.for(`react.portal`),y=Symbol.for(`react.fragment`),b=Symbol.for(`react.strict_mode`),x=Symbol.for(`react.profiler`),ee=Symbol.for(`react.consumer`),S=Symbol.for(`react.context`),C=Symbol.for(`react.forward_ref`),te=Symbol.for(`react.suspense`),ne=Symbol.for(`react.suspense_list`),re=Symbol.for(`react.memo`),ie=Symbol.for(`react.lazy`),ae=Symbol.for(`react.activity`),oe=Symbol.for(`react.memo_cache_sentinel`),se=Symbol.iterator;function ce(e){return typeof e!=`object`||!e?null:(e=se&&e[se]||e[`@@iterator`],typeof e==`function`?e:null)}var le=Symbol.for(`react.client.reference`);function ue(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===le?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case y:return`Fragment`;case x:return`Profiler`;case b:return`StrictMode`;case te:return`Suspense`;case ne:return`SuspenseList`;case ae:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case v:return`Portal`;case S:return e.displayName||`Context`;case ee:return(e._context.displayName||`Context`)+`.Consumer`;case C:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case re:return t=e.displayName||null,t===null?ue(e.type)||`Memo`:t;case ie:t=e._payload,e=e._init;try{return ue(e(t))}catch{}}return null}var de=Array.isArray,w=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,T=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fe={pending:!1,data:null,method:null,action:null},pe=[],me=-1;function he(e){return{current:e}}function E(e){0>me||(e.current=pe[me],pe[me]=null,me--)}function D(e,t){me++,pe[me]=e.current,e.current=t}var ge=he(null),_e=he(null),ve=he(null),ye=he(null);function be(e,t){switch(D(ve,t),D(_e,e),D(ge,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}E(ge),D(ge,e)}function xe(){E(ge),E(_e),E(ve)}function Se(e){e.memoizedState!==null&&D(ye,e);var t=ge.current,n=Hd(t,e.type);t!==n&&(D(_e,e),D(ge,n))}function Ce(e){_e.current===e&&(E(ge),E(_e)),ye.current===e&&(E(ye),Qf._currentValue=fe)}var we,Te;function Ee(e){if(we===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);we=t&&t[1]||``,Te=-1<e.stack.indexOf(`
|
|
3
3
|
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
|
|
4
4
|
`+we+e+Te}var De=!1;function Oe(e,t){if(!e||De)return``;De=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
|
|
5
5
|
`),l=s.split(`
|
|
6
6
|
`);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=`
|
|
7
7
|
`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{De=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ee(n):``}function ke(e,t){switch(e.tag){case 26:case 27:case 5:return Ee(e.type);case 16:return Ee(`Lazy`);case 13:return e.child!==t&&t!==null?Ee(`Suspense Fallback`):Ee(`Suspense`);case 19:return Ee(`SuspenseList`);case 0:case 15:return Oe(e.type,!1);case 11:return Oe(e.type.render,!1);case 1:return Oe(e.type,!0);case 31:return Ee(`Activity`);default:return``}}function Ae(e){try{var t=``,n=null;do t+=ke(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
|
|
8
8
|
Error generating stack: `+e.message+`
|
|
9
|
-
`+e.stack}}var je=Object.prototype.hasOwnProperty,Me=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,Pe=t.unstable_shouldYield,Fe=t.unstable_requestPaint,Ie=t.unstable_now,Le=t.unstable_getCurrentPriorityLevel,Re=t.unstable_ImmediatePriority,ze=t.unstable_UserBlockingPriority,Be=t.unstable_NormalPriority,Ve=t.unstable_LowPriority,He=t.unstable_IdlePriority,Ue=t.log,We=t.unstable_setDisableYieldValue,Ge=null,Ke=null;function qe(e){if(typeof Ue==`function`&&We(e),Ke&&typeof Ke.setStrictMode==`function`)try{Ke.setStrictMode(Ge,e)}catch{}}var Je=Math.clz32?Math.clz32:Ze,Ye=Math.log,Xe=Math.LN2;function Ze(e){return e>>>=0,e===0?32:31-(Ye(e)/Xe|0)|0}var Qe=256,$e=262144,et=4194304;function tt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function nt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=tt(n))):i=tt(o):i=tt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=tt(n))):i=tt(o)):i=tt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function rt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function it(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function at(){var e=et;return et<<=1,!(et&62914560)&&(et=4194304),e}function ot(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function st(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ct(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-Je(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&<(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function lt(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Je(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function ut(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Je(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function dt(e,t){var n=t&-t;return n=n&42?1:ft(n),(n&(e.suspendedLanes|t))===0?n:0}function ft(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function pt(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function mt(){var e=T.p;return e===0?(e=window.event,e===void 0?32:mp(e.type)):e}function ht(e,t){var n=T.p;try{return T.p=e,t()}finally{T.p=n}}var O=Math.random().toString(36).slice(2),k=`__reactFiber$`+O,gt=`__reactProps$`+O,_t=`__reactContainer$`+O,vt=`__reactEvents$`+O,yt=`__reactListeners$`+O,bt=`__reactHandles$`+O,xt=`__reactResources$`+O,St=`__reactMarker$`+O;function Ct(e){delete e[k],delete e[gt],delete e[vt],delete e[yt],delete e[bt]}function wt(e){var t=e[k];if(t)return t;for(var n=e.parentNode;n;){if(t=n[_t]||n[k]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=df(e);e!==null;){if(n=e[k])return n;e=df(e)}return t}e=n,n=e.parentNode}return null}function Tt(e){if(e=e[k]||e[_t]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Et(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function Dt(e){var t=e[xt];return t||=e[xt]={hoistableStyles:new Map,hoistableScripts:new Map},t}function A(e){e[St]=!0}var Ot=new Set,kt={};function At(e,t){jt(e,t),jt(e+`Capture`,t)}function jt(e,t){for(kt[e]=t,e=0;e<t.length;e++)Ot.add(t[e])}var Mt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),Nt={},Pt={};function Ft(e){return je.call(Pt,e)?!0:je.call(Nt,e)?!1:Mt.test(e)?Pt[e]=!0:(Nt[e]=!0,!1)}function It(e,t,n){if(Ft(t)){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,``+n)}}}function Lt(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,``+n)}}function Rt(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,``+r)}}function j(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function zt(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function Bt(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Vt(e){if(!e._valueTracker){var t=zt(e)?`checked`:`value`;e._valueTracker=Bt(e,t,``+e[t])}}function Ht(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=zt(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}function Ut(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}var Wt=/[\n"\\]/g;function Gt(e){return e.replace(Wt,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function Kt(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+j(t)):e.value!==``+j(t)&&(e.value=``+j(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):Jt(e,o,j(n)):Jt(e,o,j(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+j(s):e.removeAttribute(`name`)}function qt(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){Vt(e);return}n=n==null?``:``+j(n),t=t==null?n:``+j(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),Vt(e)}function Jt(e,t,n){t===`number`&&Ut(e.ownerDocument)===e||e.defaultValue===``+n||(e.defaultValue=``+n)}function Yt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+j(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function Xt(e,t,n){if(t!=null&&(t=``+j(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n==null?``:``+j(n)}function Zt(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(de(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=j(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),Vt(e)}function Qt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var $t=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function en(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||$t.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function tn(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&en(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&en(e,o,t[o])}function nn(e){if(e.indexOf(`-`)===-1)return!1;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var rn=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),an=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function on(e){return an.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function sn(){}var cn=null;function ln(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var un=null,dn=null;function fn(e){var t=Tt(e);if(t&&(e=t.stateNode)){var n=e[gt]||null;a:switch(e=t.stateNode,t.type){case`input`:if(Kt(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+Gt(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[gt]||null;if(!a)throw Error(i(90));Kt(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&Ht(r)}break a;case`textarea`:Xt(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&Yt(e,!!n.multiple,t,!1)}}}var pn=!1;function mn(e,t,n){if(pn)return e(t,n);pn=!0;try{return e(t)}finally{if(pn=!1,(un!==null||dn!==null)&&(bu(),un&&(t=un,e=dn,dn=un=null,fn(t),e)))for(t=0;t<e.length;t++)fn(e[t])}}function hn(e,t){var n=e.stateNode;if(n===null)return null;var r=n[gt]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var gn=!(typeof window>`u`||window.document===void 0||window.document.createElement===void 0),_n=!1;if(gn)try{var vn={};Object.defineProperty(vn,"passive",{get:function(){_n=!0}}),window.addEventListener(`test`,vn,vn),window.removeEventListener(`test`,vn,vn)}catch{_n=!1}var yn=null,bn=null,xn=null;function Sn(){if(xn)return xn;var e,t=bn,n=t.length,r,i=`value`in yn?yn.value:yn.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return xn=i.slice(e,1<r?1-r:void 0)}function Cn(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function wn(){return!0}function Tn(){return!1}function En(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?wn:Tn,this.isPropagationStopped=Tn,this}return h(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=wn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=wn)},persist:function(){},isPersistent:wn}),t}var Dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},On=En(Dn),kn=h({},Dn,{view:0,detail:0}),An=En(kn),jn,Mn,Nn,Pn=h({},kn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Gn,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==Nn&&(Nn&&e.type===`mousemove`?(jn=e.screenX-Nn.screenX,Mn=e.screenY-Nn.screenY):Mn=jn=0,Nn=e),jn)},movementY:function(e){return`movementY`in e?e.movementY:Mn}}),Fn=En(Pn),In=En(h({},Pn,{dataTransfer:0})),Ln=En(h({},kn,{relatedTarget:0})),Rn=En(h({},Dn,{animationName:0,elapsedTime:0,pseudoElement:0})),zn=En(h({},Dn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),Bn=En(h({},Dn,{data:0})),Vn={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},Hn={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},Un={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function Wn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Un[e])?!!t[e]:!1}function Gn(){return Wn}var Kn=En(h({},kn,{key:function(e){if(e.key){var t=Vn[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=Cn(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?Hn[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Gn,charCode:function(e){return e.type===`keypress`?Cn(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?Cn(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),qn=En(h({},Pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Jn=En(h({},kn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Gn})),Yn=En(h({},Dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Xn=En(h({},Pn,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),Zn=En(h({},Dn,{newState:0,oldState:0})),Qn=[9,13,27,32],$n=gn&&`CompositionEvent`in window,er=null;gn&&`documentMode`in document&&(er=document.documentMode);var tr=gn&&`TextEvent`in window&&!er,nr=gn&&(!$n||er&&8<er&&11>=er),rr=` `,ir=!1;function ar(e,t){switch(e){case`keyup`:return Qn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function or(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var sr=!1;function cr(e,t){switch(e){case`compositionend`:return or(t);case`keypress`:return t.which===32?(ir=!0,rr):null;case`textInput`:return e=t.data,e===rr&&ir?null:e;default:return null}}function lr(e,t){if(sr)return e===`compositionend`||!$n&&ar(e,t)?(e=Sn(),xn=bn=yn=null,sr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return nr&&t.locale!==`ko`?null:t.data;default:return null}}var ur={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function dr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!ur[e.type]:t===`textarea`}function fr(e,t,n,r){un?dn?dn.push(r):dn=[r]:un=r,t=Ed(t,`onChange`),0<t.length&&(n=new On(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var pr=null,mr=null;function hr(e){yd(e,0)}function gr(e){if(Ht(Et(e)))return e}function _r(e,t){if(e===`change`)return t}var vr=!1;if(gn){var yr;if(gn){var br=`oninput`in document;if(!br){var xr=document.createElement(`div`);xr.setAttribute(`oninput`,`return;`),br=typeof xr.oninput==`function`}yr=br}else yr=!1;vr=yr&&(!document.documentMode||9<document.documentMode)}function Sr(){pr&&(pr.detachEvent(`onpropertychange`,Cr),mr=pr=null)}function Cr(e){if(e.propertyName===`value`&&gr(mr)){var t=[];fr(t,mr,e,ln(e)),mn(hr,t)}}function wr(e,t,n){e===`focusin`?(Sr(),pr=t,mr=n,pr.attachEvent(`onpropertychange`,Cr)):e===`focusout`&&Sr()}function Tr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return gr(mr)}function Er(e,t){if(e===`click`)return gr(t)}function Dr(e,t){if(e===`input`||e===`change`)return gr(t)}function Or(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var kr=typeof Object.is==`function`?Object.is:Or;function Ar(e,t){if(kr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!je.call(t,i)||!kr(e[i],t[i]))return!1}return!0}function jr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Mr(e,t){var n=jr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=jr(n)}}function Nr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Nr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Pr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ut(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ut(e.document)}return t}function Fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Ir=gn&&`documentMode`in document&&11>=document.documentMode,Lr=null,Rr=null,zr=null,Br=!1;function Vr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Br||Lr==null||Lr!==Ut(r)||(r=Lr,`selectionStart`in r&&Fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),zr&&Ar(zr,r)||(zr=r,r=Ed(Rr,`onSelect`),0<r.length&&(t=new On(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=Lr)))}function Hr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var Ur={animationend:Hr(`Animation`,`AnimationEnd`),animationiteration:Hr(`Animation`,`AnimationIteration`),animationstart:Hr(`Animation`,`AnimationStart`),transitionrun:Hr(`Transition`,`TransitionRun`),transitionstart:Hr(`Transition`,`TransitionStart`),transitioncancel:Hr(`Transition`,`TransitionCancel`),transitionend:Hr(`Transition`,`TransitionEnd`)},Wr={},Gr={};gn&&(Gr=document.createElement(`div`).style,`AnimationEvent`in window||(delete Ur.animationend.animation,delete Ur.animationiteration.animation,delete Ur.animationstart.animation),`TransitionEvent`in window||delete Ur.transitionend.transition);function Kr(e){if(Wr[e])return Wr[e];if(!Ur[e])return e;var t=Ur[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Gr)return Wr[e]=t[n];return e}var qr=Kr(`animationend`),Jr=Kr(`animationiteration`),Yr=Kr(`animationstart`),Xr=Kr(`transitionrun`),Zr=Kr(`transitionstart`),Qr=Kr(`transitioncancel`),$r=Kr(`transitionend`),ei=new Map,ti=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);ti.push(`scrollEnd`);function ni(e,t){ei.set(e,t),At(t,[e])}var ri=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},ii=[],ai=0,oi=0;function si(){for(var e=ai,t=oi=ai=0;t<e;){var n=ii[t];ii[t++]=null;var r=ii[t];ii[t++]=null;var i=ii[t];ii[t++]=null;var a=ii[t];if(ii[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&di(n,i,a)}}function ci(e,t,n,r){ii[ai++]=e,ii[ai++]=t,ii[ai++]=n,ii[ai++]=r,oi|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function li(e,t,n,r){return ci(e,t,n,r),fi(e)}function ui(e,t){return ci(e,null,null,t),fi(e)}function di(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-Je(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function fi(e){if(50<du)throw du=0,fu=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var pi={};function mi(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function hi(e,t,n,r){return new mi(e,t,n,r)}function gi(e){return e=e.prototype,!(!e||!e.isReactComponent)}function _i(e,t){var n=e.alternate;return n===null?(n=hi(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function vi(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function yi(e,t,n,r,a,o){var s=0;if(r=e,typeof e==`function`)gi(e)&&(s=1);else if(typeof e==`string`)s=Uf(e,n,ge.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(e){case ae:return e=hi(31,n,t,a),e.elementType=ae,e.lanes=o,e;case y:return bi(n.children,a,o,t);case b:s=8,a|=24;break;case x:return e=hi(12,n,t,a|2),e.elementType=x,e.lanes=o,e;case te:return e=hi(13,n,t,a),e.elementType=te,e.lanes=o,e;case ne:return e=hi(19,n,t,a),e.elementType=ne,e.lanes=o,e;default:if(typeof e==`object`&&e)switch(e.$$typeof){case S:s=10;break a;case ee:s=9;break a;case C:s=11;break a;case re:s=14;break a;case ie:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=hi(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function bi(e,t,n,r){return e=hi(7,e,r,t),e.lanes=n,e}function xi(e,t,n){return e=hi(6,e,null,t),e.lanes=n,e}function Si(e){var t=hi(18,null,null,0);return t.stateNode=e,t}function Ci(e,t,n){return t=hi(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var wi=new WeakMap;function Ti(e,t){if(typeof e==`object`&&e){var n=wi.get(e);return n===void 0?(t={value:e,source:t,stack:Ae(t)},wi.set(e,t),t):n}return{value:e,source:t,stack:Ae(t)}}var Ei=[],Di=0,Oi=null,ki=0,Ai=[],ji=0,Mi=null,Ni=1,Pi=``;function Fi(e,t){Ei[Di++]=ki,Ei[Di++]=Oi,Oi=e,ki=t}function Ii(e,t,n){Ai[ji++]=Ni,Ai[ji++]=Pi,Ai[ji++]=Mi,Mi=e;var r=Ni;e=Pi;var i=32-Je(r)-1;r&=~(1<<i),n+=1;var a=32-Je(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,Ni=1<<32-Je(t)+i|n<<i|r,Pi=a+e}else Ni=1<<a|n<<i|r,Pi=e}function Li(e){e.return!==null&&(Fi(e,1),Ii(e,1,0))}function Ri(e){for(;e===Oi;)Oi=Ei[--Di],Ei[Di]=null,ki=Ei[--Di],Ei[Di]=null;for(;e===Mi;)Mi=Ai[--ji],Ai[ji]=null,Pi=Ai[--ji],Ai[ji]=null,Ni=Ai[--ji],Ai[ji]=null}function zi(e,t){Ai[ji++]=Ni,Ai[ji++]=Pi,Ai[ji++]=Mi,Ni=t.id,Pi=t.overflow,Mi=e}var Bi=null,M=null,N=!1,Vi=null,Hi=!1,Ui=Error(i(519));function Wi(e){throw Xi(Ti(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),Ui}function Gi(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[k]=e,t[gt]=r,n){case`dialog`:Q(`cancel`,t),Q(`close`,t);break;case`iframe`:case`object`:case`embed`:Q(`load`,t);break;case`video`:case`audio`:for(n=0;n<_d.length;n++)Q(_d[n],t);break;case`source`:Q(`error`,t);break;case`img`:case`image`:case`link`:Q(`error`,t),Q(`load`,t);break;case`details`:Q(`toggle`,t);break;case`input`:Q(`invalid`,t),qt(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:Q(`invalid`,t);break;case`textarea`:Q(`invalid`,t),Zt(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||Md(t.textContent,n)?(r.popover!=null&&(Q(`beforetoggle`,t),Q(`toggle`,t)),r.onScroll!=null&&Q(`scroll`,t),r.onScrollEnd!=null&&Q(`scrollend`,t),r.onClick!=null&&(t.onclick=sn),t=!0):t=!1,t||Wi(e,!0)}function Ki(e){for(Bi=e.return;Bi;)switch(Bi.tag){case 5:case 31:case 13:Hi=!1;return;case 27:case 3:Hi=!0;return;default:Bi=Bi.return}}function qi(e){if(e!==Bi)return!1;if(!N)return Ki(e),N=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=n===`form`||n===`button`||Ud(e.type,e.memoizedProps)),n=!n),n&&M&&Wi(e),Ki(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));M=uf(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));M=uf(e)}else t===27?(t=M,Zd(e.type)?(e=lf,lf=null,M=e):M=t):M=Bi?cf(e.stateNode.nextSibling):null;return!0}function Ji(){M=Bi=null,N=!1}function Yi(){var e=Vi;return e!==null&&(Zl===null?Zl=e:Zl.push.apply(Zl,e),Vi=null),e}function Xi(e){Vi===null?Vi=[e]:Vi.push(e)}var Zi=he(null),Qi=null,$i=null;function ea(e,t,n){D(Zi,t._currentValue),t._currentValue=n}function ta(e){e._currentValue=Zi.current,E(Zi)}function na(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function ra(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),na(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),na(s,n,e),s=null}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function ia(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;kr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===ye.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[Qf]:e.push(Qf))}a=a.return}e!==null&&ra(t,e,n,r),t.flags|=262144}function aa(e){for(e=e.firstContext;e!==null;){if(!kr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function oa(e){Qi=e,$i=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function sa(e){return la(Qi,e)}function ca(e,t){return Qi===null&&oa(e),la(e,t)}function la(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},$i===null){if(e===null)throw Error(i(308));$i=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else $i=$i.next=t;return n}var ua=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},da=t.unstable_scheduleCallback,fa=t.unstable_NormalPriority,P={$$typeof:S,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function pa(){return{controller:new ua,data:new Map,refCount:0}}function ma(e){e.refCount--,e.refCount===0&&da(fa,function(){e.controller.abort()})}var ha=null,ga=0,_a=0,va=null;function ya(e,t){if(ha===null){var n=ha=[];ga=0,_a=dd(),va={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return ga++,t.then(ba,ba),t}function ba(){if(--ga===0&&ha!==null){va!==null&&(va.status=`fulfilled`);var e=ha;ha=null,_a=0,va=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function xa(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var Sa=w.S;w.S=function(e,t){eu=Ie(),typeof t==`object`&&t&&typeof t.then==`function`&&ya(e,t),Sa!==null&&Sa(e,t)};var Ca=he(null);function wa(){var e=Ca.current;return e===null?K.pooledCache:e}function Ta(e,t){t===null?D(Ca,Ca.current):D(Ca,t.pool)}function Ea(){var e=wa();return e===null?null:{parent:P._currentValue,pool:e}}var Da=Error(i(460)),Oa=Error(i(474)),ka=Error(i(542)),Aa={then:function(){}};function ja(e){return e=e.status,e===`fulfilled`||e===`rejected`}function Ma(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(sn,sn),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Ia(e),e;default:if(typeof t.status==`string`)t.then(sn,sn);else{if(e=K,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Ia(e),e}throw Pa=t,Da}}function Na(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(Pa=e,Da):e}}var Pa=null;function Fa(){if(Pa===null)throw Error(i(459));var e=Pa;return Pa=null,e}function Ia(e){if(e===Da||e===ka)throw Error(i(483))}var La=null,Ra=0;function za(e){var t=Ra;return Ra+=1,La===null&&(La=[]),Ma(La,e,t)}function Ba(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function Va(e,t){throw t.$$typeof===g?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function Ha(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=_i(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=67108866,n):(r=r.index,r<n?(t.flags|=67108866,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=67108866),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=xi(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===y?d(e,t,n.props.children,r,n.key):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===ie&&Na(i)===t.type)?(t=a(t,n.props),Ba(t,n),t.return=e,t):(t=yi(n.type,n.key,n.props,null,e.mode,r),Ba(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=Ci(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=bi(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=xi(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case _:return n=yi(t.type,t.key,t.props,null,e.mode,n),Ba(n,t),n.return=e,n;case v:return t=Ci(t,e.mode,n),t.return=e,t;case ie:return t=Na(t),f(e,t,n)}if(de(t)||ce(t))return t=bi(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,za(t),n);if(t.$$typeof===S)return f(e,ca(e,t),n);Va(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case _:return n.key===i?l(e,t,n,r):null;case v:return n.key===i?u(e,t,n,r):null;case ie:return n=Na(n),p(e,t,n,r)}if(de(n)||ce(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,za(n),r);if(n.$$typeof===S)return p(e,t,ca(e,n),r);Va(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case _:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case v:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case ie:return r=Na(r),m(e,t,n,r,i)}if(de(r)||ce(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,za(r),i);if(r.$$typeof===S)return m(e,t,n,ca(t,r),i);Va(t,r)}return null}function h(i,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),N&&Fi(i,h),l;if(d===null){for(;h<s.length;h++)d=f(i,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return N&&Fi(i,h),l}for(d=r(d);h<s.length;h++)g=m(d,i,h,s[h],c),g!==null&&(e&&g.alternate!==null&&d.delete(g.key===null?h:g.key),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(i,e)}),N&&Fi(i,h),l}function g(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),N&&Fi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return N&&Fi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),N&&Fi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ie&&Na(l)===r.type){n(e,r.sibling),c=a(r,o.props),Ba(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===y?(c=bi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=yi(o.type,o.key,o.props,null,e.mode,c),Ba(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Ci(o,e.mode,c),c.return=e,e=c}return s(e);case ie:return o=Na(o),b(e,r,o,c)}if(de(o))return h(e,r,o,c);if(ce(o)){if(l=ce(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,za(o),c);if(o.$$typeof===S)return b(e,r,ca(e,o),c);Va(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=xi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ra=0;var i=b(e,t,n,r);return La=null,i}catch(t){if(t===Da||t===ka)throw t;var a=hi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ua=Ha(!0),Wa=Ha(!1),Ga=!1;function Ka(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function qa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ja(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ya(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,G&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=fi(e),di(e,null,n),t}return ci(e,r,t,n),fi(e)}function Xa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ut(e,n)}}function Za(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Qa=!1;function $a(){if(Qa){var e=va;if(e!==null)throw e}}function eo(e,t,n,r){Qa=!1;var i=e.updateQueue;Ga=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(J&f)===f:(r&f)===f){f!==0&&f===_a&&(Qa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ga=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function to(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function no(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)to(n[e],t)}var ro=he(null),io=he(0);function ao(e,t){e=Wl,D(io,e),D(ro,t),Wl=e|t.baseLanes}function oo(){D(io,Wl),D(ro,ro.current)}function so(){Wl=io.current,E(ro),E(io)}var co=he(null),lo=null;function uo(e){var t=e.alternate;D(F,F.current&1),D(co,e),lo===null&&(t===null||ro.current!==null||t.memoizedState!==null)&&(lo=e)}function fo(e){D(F,F.current),D(co,e),lo===null&&(lo=e)}function po(e){e.tag===22?(D(F,F.current),D(co,e),lo===null&&(lo=e)):mo(e)}function mo(){D(F,F.current),D(co,co.current)}function ho(e){E(co),lo===e&&(lo=null),E(F)}var F=he(0);function go(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||af(n)||of(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder===`forwards`||t.memoizedProps.revealOrder===`backwards`||t.memoizedProps.revealOrder===`unstable_legacy-backwards`||t.memoizedProps.revealOrder===`together`)){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var _o=0,I=null,L=null,R=null,vo=!1,yo=!1,bo=!1,xo=0,So=0,Co=null,wo=0;function z(){throw Error(i(321))}function To(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!kr(e[n],t[n]))return!1;return!0}function Eo(e,t,n,r,i,a){return _o=a,I=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,w.H=e===null||e.memoizedState===null?Hs:Us,bo=!1,a=n(r,i),bo=!1,yo&&(a=Oo(t,n,r,i)),Do(e),a}function Do(e){w.H=Vs;var t=L!==null&&L.next!==null;if(_o=0,R=L=I=null,vo=!1,So=0,Co=null,t)throw Error(i(300));e===null||V||(e=e.dependencies,e!==null&&aa(e)&&(V=!0))}function Oo(e,t,n,r){I=e;var a=0;do{if(yo&&(Co=null),So=0,yo=!1,25<=a)throw Error(i(301));if(a+=1,R=L=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}w.H=Ws,o=t(n,r)}while(yo);return o}function ko(){var e=w.H,t=e.useState()[0];return t=typeof t.then==`function`?Fo(t):t,e=e.useState()[0],(L===null?null:L.memoizedState)!==e&&(I.flags|=1024),t}function Ao(){var e=xo!==0;return xo=0,e}function jo(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Mo(e){if(vo){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}vo=!1}_o=0,R=L=I=null,yo=!1,So=xo=0,Co=null}function No(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return R===null?I.memoizedState=R=e:R=R.next=e,R}function B(){if(L===null){var e=I.alternate;e=e===null?null:e.memoizedState}else e=L.next;var t=R===null?I.memoizedState:R.next;if(t!==null)R=t,L=e;else{if(e===null)throw I.alternate===null?Error(i(467)):Error(i(310));L=e,e={memoizedState:L.memoizedState,baseState:L.baseState,baseQueue:L.baseQueue,queue:L.queue,next:null},R===null?I.memoizedState=R=e:R=R.next=e}return R}function Po(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Fo(e){var t=So;return So+=1,Co===null&&(Co=[]),e=Ma(Co,e,t),t=I,(R===null?t.memoizedState:R.next)===null&&(t=t.alternate,w.H=t===null||t.memoizedState===null?Hs:Us),e}function Io(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return Fo(e);if(e.$$typeof===S)return sa(e)}throw Error(i(438,String(e)))}function Lo(e){var t=null,n=I.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=I.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=Po(),I.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=oe;return t.index++,n}function Ro(e,t){return typeof t==`function`?t(e):t}function zo(e){return Bo(B(),L,e)}function Bo(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(_o&f)===f:(J&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===_a&&(d=!0);else if((_o&p)===p){u=u.next,p===_a&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,I.lanes|=p,Gl|=p;f=u.action,bo&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,I.lanes|=f,Gl|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!kr(o,e.memoizedState)&&(V=!0,d&&(n=va,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Vo(e){var t=B(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);kr(o,t.memoizedState)||(V=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Ho(e,t,n){var r=I,a=B(),o=N;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!kr((L||a).memoizedState,n);if(s&&(a.memoizedState=n,V=!0),a=a.queue,ps(Go.bind(null,r,a,e),[e]),a.getSnapshot!==t||s||R!==null&&R.memoizedState.tag&1){if(r.flags|=2048,cs(9,{destroy:void 0},Wo.bind(null,r,a,n,t),null),K===null)throw Error(i(349));o||_o&127||Uo(r,t,n)}return n}function Uo(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=I.updateQueue,t===null?(t=Po(),I.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Wo(e,t,n,r){t.value=n,t.getSnapshot=r,Ko(t)&&qo(e)}function Go(e,t,n){return n(function(){Ko(t)&&qo(e)})}function Ko(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!kr(e,n)}catch{return!0}}function qo(e){var t=ui(e,2);t!==null&&hu(t,e,2)}function Jo(e){var t=No();if(typeof e==`function`){var n=e;if(e=n(),bo){qe(!0);try{n()}finally{qe(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:e},t}function Yo(e,t,n,r){return e.baseState=n,Bo(e,L,typeof r==`function`?r:Ro)}function Xo(e,t,n,r,a){if(Rs(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};w.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,Zo(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Zo(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=w.T,o={};w.T=o;try{var s=n(i,r),c=w.S;c!==null&&c(o,s),Qo(e,t,s)}catch(n){es(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),w.T=a}}else try{a=n(i,r),Qo(e,t,a)}catch(n){es(e,t,n)}}function Qo(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){$o(e,t,n)},function(n){return es(e,t,n)}):$o(e,t,n)}function $o(e,t,n){t.status=`fulfilled`,t.value=n,ts(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Zo(e,n)))}function es(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,ts(t),t=t.next;while(t!==r)}e.action=null}function ts(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function ns(e,t){return t}function rs(e,t){if(N){var n=K.formState;if(n!==null){a:{var r=I;if(N){if(M){b:{for(var i=M,a=Hi;i.nodeType!==8;){if(!a){i=null;break b}if(i=cf(i.nextSibling),i===null){i=null;break b}}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){M=cf(i.nextSibling),r=i.data===`F!`;break a}}Wi(r)}r=!1}r&&(t=n[0])}}return n=No(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ns,lastRenderedState:t},n.queue=r,n=Fs.bind(null,I,r),r.dispatch=n,r=Jo(!1),a=Ls.bind(null,I,!1,r.queue),r=No(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=Xo.bind(null,I,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function is(e){return as(B(),L,e)}function as(e,t,n){if(t=Bo(e,t,ns)[0],e=zo(Ro)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=Fo(t)}catch(e){throw e===Da?ka:e}else r=t;t=B();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(I.flags|=2048,cs(9,{destroy:void 0},os.bind(null,i,n),null)),[r,a,e]}function os(e,t){e.action=t}function ss(e){var t=B(),n=L;if(n!==null)return as(t,n,e);B(),t=t.memoizedState,n=B();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function cs(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=I.updateQueue,t===null&&(t=Po(),I.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ls(){return B().memoizedState}function us(e,t,n,r){var i=No();I.flags|=e,i.memoizedState=cs(1|t,{destroy:void 0},n,r===void 0?null:r)}function ds(e,t,n,r){var i=B();r=r===void 0?null:r;var a=i.memoizedState.inst;L!==null&&r!==null&&To(r,L.memoizedState.deps)?i.memoizedState=cs(t,a,n,r):(I.flags|=e,i.memoizedState=cs(1|t,a,n,r))}function fs(e,t){us(8390656,8,e,t)}function ps(e,t){ds(2048,8,e,t)}function ms(e){I.flags|=4;var t=I.updateQueue;if(t===null)t=Po(),I.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function hs(e){var t=B().memoizedState;return ms({ref:t,nextImpl:e}),function(){if(G&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function gs(e,t){return ds(4,2,e,t)}function _s(e,t){return ds(4,4,e,t)}function vs(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function ys(e,t,n){n=n==null?null:n.concat([e]),ds(4,4,vs.bind(null,t,e),n)}function bs(){}function xs(e,t){var n=B();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&To(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ss(e,t){var n=B();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&To(t,r[1]))return r[0];if(r=e(),bo){qe(!0);try{e()}finally{qe(!1)}}return n.memoizedState=[r,t],r}function Cs(e,t,n){return n===void 0||_o&1073741824&&!(J&261930)?e.memoizedState=t:(e.memoizedState=n,e=mu(),I.lanes|=e,Gl|=e,n)}function ws(e,t,n,r){return kr(n,t)?n:ro.current===null?!(_o&42)||_o&1073741824&&!(J&261930)?(V=!0,e.memoizedState=n):(e=mu(),I.lanes|=e,Gl|=e,t):(e=Cs(e,n,r),kr(e,t)||(V=!0),e)}function Ts(e,t,n,r,i){var a=T.p;T.p=a!==0&&8>a?a:8;var o=w.T,s={};w.T=s,Ls(e,!1,t,n);try{var c=i(),l=w.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Is(e,t,xa(c,r),pu(e)):Is(e,t,r,pu(e))}catch(n){Is(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{T.p=a,o!==null&&s.types!==null&&(o.types=s.types),w.T=o}}function Es(){}function Ds(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Os(e).queue;Ts(e,a,t,fe,n===null?Es:function(){return ks(e),n(r)})}function Os(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:fe,baseState:fe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:fe},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ks(e){var t=Os(e);t.next===null&&(t=e.alternate.memoizedState),Is(e,t.next.queue,{},pu())}function As(){return sa(Qf)}function js(){return B().memoizedState}function Ms(){return B().memoizedState}function Ns(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Ja(n);var r=Ya(t,e,n);r!==null&&(hu(r,t,n),Xa(r,t,n)),t={cache:pa()},e.payload=t;return}t=t.return}}function Ps(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Rs(e)?zs(t,n):(n=li(e,t,n,r),n!==null&&(hu(n,e,r),Bs(n,t,r)))}function Fs(e,t,n){Is(e,t,n,pu())}function Is(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Rs(e))zs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,kr(s,o))return ci(e,t,i,0),K===null&&si(),!1}catch{}if(n=li(e,t,i,r),n!==null)return hu(n,e,r),Bs(n,t,r),!0}return!1}function Ls(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Rs(e)){if(t)throw Error(i(479))}else t=li(e,n,r,2),t!==null&&hu(t,e,2)}function Rs(e){var t=e.alternate;return e===I||t!==null&&t===I}function zs(e,t){yo=vo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ut(e,n)}}var Vs={readContext:sa,use:Io,useCallback:z,useContext:z,useEffect:z,useImperativeHandle:z,useLayoutEffect:z,useInsertionEffect:z,useMemo:z,useReducer:z,useRef:z,useState:z,useDebugValue:z,useDeferredValue:z,useTransition:z,useSyncExternalStore:z,useId:z,useHostTransitionStatus:z,useFormState:z,useActionState:z,useOptimistic:z,useMemoCache:z,useCacheRefresh:z};Vs.useEffectEvent=z;var Hs={readContext:sa,use:Io,useCallback:function(e,t){return No().memoizedState=[e,t===void 0?null:t],e},useContext:sa,useEffect:fs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),us(4194308,4,vs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return us(4194308,4,e,t)},useInsertionEffect:function(e,t){us(4,2,e,t)},useMemo:function(e,t){var n=No();t=t===void 0?null:t;var r=e();if(bo){qe(!0);try{e()}finally{qe(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=No();if(n!==void 0){var i=n(t);if(bo){qe(!0);try{n(t)}finally{qe(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ps.bind(null,I,e),[r.memoizedState,e]},useRef:function(e){var t=No();return e={current:e},t.memoizedState=e},useState:function(e){e=Jo(e);var t=e.queue,n=Fs.bind(null,I,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:bs,useDeferredValue:function(e,t){return Cs(No(),e,t)},useTransition:function(){var e=Jo(!1);return e=Ts.bind(null,I,e.queue,!0,!1),No().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=I,a=No();if(N){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),K===null)throw Error(i(349));J&127||Uo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,fs(Go.bind(null,r,o,e),[e]),r.flags|=2048,cs(9,{destroy:void 0},Wo.bind(null,r,o,n,t),null),n},useId:function(){var e=No(),t=K.identifierPrefix;if(N){var n=Pi,r=Ni;n=(r&~(1<<32-Je(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=xo++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=wo++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:As,useFormState:rs,useActionState:rs,useOptimistic:function(e){var t=No();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Ls.bind(null,I,!0,n),n.dispatch=t,[e,t]},useMemoCache:Lo,useCacheRefresh:function(){return No().memoizedState=Ns.bind(null,I)},useEffectEvent:function(e){var t=No(),n={impl:e};return t.memoizedState=n,function(){if(G&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},Us={readContext:sa,use:Io,useCallback:xs,useContext:sa,useEffect:ps,useImperativeHandle:ys,useInsertionEffect:gs,useLayoutEffect:_s,useMemo:Ss,useReducer:zo,useRef:ls,useState:function(){return zo(Ro)},useDebugValue:bs,useDeferredValue:function(e,t){return ws(B(),L.memoizedState,e,t)},useTransition:function(){var e=zo(Ro)[0],t=B().memoizedState;return[typeof e==`boolean`?e:Fo(e),t]},useSyncExternalStore:Ho,useId:js,useHostTransitionStatus:As,useFormState:is,useActionState:is,useOptimistic:function(e,t){return Yo(B(),L,e,t)},useMemoCache:Lo,useCacheRefresh:Ms};Us.useEffectEvent=hs;var Ws={readContext:sa,use:Io,useCallback:xs,useContext:sa,useEffect:ps,useImperativeHandle:ys,useInsertionEffect:gs,useLayoutEffect:_s,useMemo:Ss,useReducer:Vo,useRef:ls,useState:function(){return Vo(Ro)},useDebugValue:bs,useDeferredValue:function(e,t){var n=B();return L===null?Cs(n,e,t):ws(n,L.memoizedState,e,t)},useTransition:function(){var e=Vo(Ro)[0],t=B().memoizedState;return[typeof e==`boolean`?e:Fo(e),t]},useSyncExternalStore:Ho,useId:js,useHostTransitionStatus:As,useFormState:ss,useActionState:ss,useOptimistic:function(e,t){var n=B();return L===null?(n.baseState=e,[e,n.queue.dispatch]):Yo(n,L,e,t)},useMemoCache:Lo,useCacheRefresh:Ms};Ws.useEffectEvent=hs;function Gs(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:h({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Ks={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=pu(),i=Ja(r);i.payload=t,n!=null&&(i.callback=n),t=Ya(e,i,r),t!==null&&(hu(t,e,r),Xa(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=pu(),i=Ja(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=Ya(e,i,r),t!==null&&(hu(t,e,r),Xa(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=pu(),r=Ja(n);r.tag=2,t!=null&&(r.callback=t),t=Ya(e,r,n),t!==null&&(hu(t,e,n),Xa(t,e,n))}};function qs(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!Ar(n,r)||!Ar(i,a):!0}function Js(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Ks.enqueueReplaceState(t,t.state,null)}function Ys(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=h({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Xs(e){ri(e)}function Zs(e){console.error(e)}function Qs(e){ri(e)}function $s(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function ec(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function tc(e,t,n){return n=Ja(n),n.tag=3,n.payload={element:null},n.callback=function(){$s(e,t)},n}function nc(e){return e=Ja(e),e.tag=3,e}function rc(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){ec(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){ec(t,n,r),typeof i!=`function`&&(ru===null?ru=new Set([this]):ru.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function ic(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&ia(t,n,a,!0),n=co.current,n!==null){switch(n.tag){case 31:case 13:return lo===null?Du():n.alternate===null&&X===0&&(X=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===Aa?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),Gu(e,r,a)),!1;case 22:return n.flags|=65536,r===Aa?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),Gu(e,r,a)),!1}throw Error(i(435,n.tag))}return Gu(e,r,a),Du(),!1}if(N)return t=co.current,t===null?(r!==Ui&&(t=Error(i(423),{cause:r}),Xi(Ti(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=Ti(r,n),a=tc(e.stateNode,r,a),Za(e,a),X!==4&&(X=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==Ui&&(e=Error(i(422),{cause:r}),Xi(Ti(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=Ti(o,n),Xl===null?Xl=[o]:Xl.push(o),X!==4&&(X=2),t===null)return!0;r=Ti(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=tc(n.stateNode,r,e),Za(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(ru===null||!ru.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=nc(a),rc(a,e,n,r),Za(n,a),!1}n=n.return}while(n!==null);return!1}var ac=Error(i(461)),V=!1;function oc(e,t,n,r){t.child=e===null?Wa(t,null,n,r):Ua(t,e.child,n,r)}function sc(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return oa(t),r=Eo(e,t,n,o,a,i),s=Ao(),e!==null&&!V?(jo(e,t,i),jc(e,t,i)):(N&&s&&Li(t),t.flags|=1,oc(e,t,r,i),t.child)}function cc(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!gi(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,lc(e,t,a,r,i)):(e=yi(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!Mc(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?Ar:n,n(o,r)&&e.ref===t.ref)return jc(e,t,i)}return t.flags|=1,e=_i(a,r),e.ref=t.ref,e.return=t,t.child=e}function lc(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(Ar(a,r)&&e.ref===t.ref){if(V=!1,t.pendingProps=r=a,Mc(e,i))e.flags&131072&&(V=!0);else return t.lanes=e.lanes,jc(e,t,i)}}return _c(e,t,n,r,i)}function uc(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return fc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Ta(t,a===null?null:a.cachePool),a===null?oo():ao(t,a),po(t);else return r=t.lanes=536870912,fc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&Ta(t,null),oo(),mo(t)):(Ta(t,a.cachePool),ao(t,a),mo(t),t.memoizedState=null);return oc(e,t,i,n),t.child}function dc(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function fc(e,t,n,r,i){var a=wa();return a=a===null?null:{parent:P._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&Ta(t,null),oo(),po(t),e!==null&&ia(e,t,r,!0),t.childLanes=i,null}function pc(e,t){return t=Ec({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function mc(e,t,n){return Ua(t,e.child,null,n),e=pc(t,t.pendingProps),e.flags|=2,ho(t),t.memoizedState=null,e}function hc(e,t,n){var r=t.pendingProps,a=!!(t.flags&128);if(t.flags&=-129,e===null){if(N){if(r.mode===`hidden`)return e=pc(t,r),t.lanes=536870912,dc(null,e);if(fo(t),(e=M)?(e=rf(e,Hi),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Mi===null?null:{id:Ni,overflow:Pi},retryLane:536870912,hydrationErrors:null},n=Si(e),n.return=t,t.child=n,Bi=t,M=null)):e=null,e===null)throw Wi(t);return t.lanes=536870912,null}return pc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(fo(t),a){if(t.flags&256)t.flags&=-257,t=mc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558))}else if(V||ia(e,t,n,!1),a=(n&e.childLanes)!==0,V||a){if(r=K,r!==null&&(s=dt(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,ui(e,s),hu(r,e,s),ac;Du(),t=mc(e,t,n)}else e=o.treeContext,M=cf(s.nextSibling),Bi=t,N=!0,Vi=null,Hi=!1,e!==null&&zi(t,e),t=pc(t,r),t.flags|=4096;return t}return e=_i(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function gc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function _c(e,t,n,r,i){return oa(t),n=Eo(e,t,n,r,void 0,i),r=Ao(),e!==null&&!V?(jo(e,t,i),jc(e,t,i)):(N&&r&&Li(t),t.flags|=1,oc(e,t,n,i),t.child)}function vc(e,t,n,r,i,a){return oa(t),t.updateQueue=null,n=Oo(t,r,n,i),Do(e),r=Ao(),e!==null&&!V?(jo(e,t,a),jc(e,t,a)):(N&&r&&Li(t),t.flags|=1,oc(e,t,n,a),t.child)}function yc(e,t,n,r,i){if(oa(t),t.stateNode===null){var a=pi,o=n.contextType;typeof o==`object`&&o&&(a=sa(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=Ks,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},Ka(t),o=n.contextType,a.context=typeof o==`object`&&o?sa(o):pi,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(Gs(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&Ks.enqueueReplaceState(a,a.state,null),eo(t,r,a,i),$a(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=Ys(n,s);a.props=c;var l=a.context,u=n.contextType;o=pi,typeof u==`object`&&u&&(o=sa(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&Js(t,a,r,o),Ga=!1;var f=t.memoizedState;a.state=f,eo(t,r,a,i),$a(),l=t.memoizedState,s||f!==l||Ga?(typeof d==`function`&&(Gs(t,n,d,r),l=t.memoizedState),(c=Ga||qs(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,qa(e,t),o=t.memoizedProps,u=Ys(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=pi,typeof l==`object`&&l&&(c=sa(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&Js(t,a,r,c),Ga=!1,f=t.memoizedState,a.state=f,eo(t,r,a,i),$a();var p=t.memoizedState;o!==d||f!==p||Ga||e!==null&&e.dependencies!==null&&aa(e.dependencies)?(typeof s==`function`&&(Gs(t,n,s,r),p=t.memoizedState),(u=Ga||qs(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&aa(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,gc(e,t),r=!!(t.flags&128),a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=Ua(t,e.child,null,i),t.child=Ua(t,null,n,i)):oc(e,t,n,i),t.memoizedState=a.state,e=t.child):e=jc(e,t,i),e}function bc(e,t,n,r){return Ji(),t.flags|=256,oc(e,t,n,r),t.child}var xc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Sc(e){return{baseLanes:e,cachePool:Ea()}}function Cc(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=Jl),e}function wc(e,t,n){var r=t.pendingProps,a=!1,o=!!(t.flags&128),s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:!!(F.current&2)),s&&(a=!0,t.flags&=-129),s=!!(t.flags&32),t.flags&=-33,e===null){if(N){if(a?uo(t):mo(t),(e=M)?(e=rf(e,Hi),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Mi===null?null:{id:Ni,overflow:Pi},retryLane:536870912,hydrationErrors:null},n=Si(e),n.return=t,t.child=n,Bi=t,M=null)):e=null,e===null)throw Wi(t);return of(e)?t.lanes=32:t.lanes=536870912,null}var c=r.children;return r=r.fallback,a?(mo(t),a=t.mode,c=Ec({mode:`hidden`,children:c},a),r=bi(r,a,n,null),c.return=t,r.return=t,c.sibling=r,t.child=c,r=t.child,r.memoizedState=Sc(n),r.childLanes=Cc(e,s,n),t.memoizedState=xc,dc(null,r)):(uo(t),Tc(t,c))}var l=e.memoizedState;if(l!==null&&(c=l.dehydrated,c!==null)){if(o)t.flags&256?(uo(t),t.flags&=-257,t=Dc(e,t,n)):t.memoizedState===null?(mo(t),c=r.fallback,a=t.mode,r=Ec({mode:`visible`,children:r.children},a),c=bi(c,a,n,null),c.flags|=2,r.return=t,c.return=t,r.sibling=c,t.child=r,Ua(t,e.child,null,n),r=t.child,r.memoizedState=Sc(n),r.childLanes=Cc(e,s,n),t.memoizedState=xc,t=dc(null,r)):(mo(t),t.child=e.child,t.flags|=128,t=null);else if(uo(t),of(c)){if(s=c.nextSibling&&c.nextSibling.dataset,s)var u=s.dgst;s=u,r=Error(i(419)),r.stack=``,r.digest=s,Xi({value:r,source:null,stack:null}),t=Dc(e,t,n)}else if(V||ia(e,t,n,!1),s=(n&e.childLanes)!==0,V||s){if(s=K,s!==null&&(r=dt(s,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,ui(e,r),hu(s,e,r),ac;af(c)||Du(),t=Dc(e,t,n)}else af(c)?(t.flags|=192,t.child=e.child,t=null):(e=l.treeContext,M=cf(c.nextSibling),Bi=t,N=!0,Vi=null,Hi=!1,e!==null&&zi(t,e),t=Tc(t,r.children),t.flags|=4096);return t}return a?(mo(t),c=r.fallback,a=t.mode,l=e.child,u=l.sibling,r=_i(l,{mode:`hidden`,children:r.children}),r.subtreeFlags=l.subtreeFlags&65011712,u===null?(c=bi(c,a,n,null),c.flags|=2):c=_i(u,c),c.return=t,r.return=t,r.sibling=c,t.child=r,dc(null,r),r=t.child,c=e.child.memoizedState,c===null?c=Sc(n):(a=c.cachePool,a===null?a=Ea():(l=P._currentValue,a=a.parent===l?a:{parent:l,pool:l}),c={baseLanes:c.baseLanes|n,cachePool:a}),r.memoizedState=c,r.childLanes=Cc(e,s,n),t.memoizedState=xc,dc(e.child,r)):(uo(t),n=e.child,e=n.sibling,n=_i(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(s=t.deletions,s===null?(t.deletions=[e],t.flags|=16):s.push(e)),t.child=n,t.memoizedState=null,n)}function Tc(e,t){return t=Ec({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function Ec(e,t){return e=hi(22,e,null,t),e.lanes=0,e}function Dc(e,t,n){return Ua(t,e.child,null,n),e=Tc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Oc(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),na(e.return,t,n)}function kc(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function Ac(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=F.current,s=!!(o&2);if(s?(o=o&1|2,t.flags|=128):o&=1,D(F,o),oc(e,t,r,n),r=N?ki:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Oc(e,n,t);else if(e.tag===19)Oc(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`forwards`:for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&go(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),kc(t,!1,i,n,a,r);break;case`backwards`:case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&go(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}kc(t,!0,n,null,a,r);break;case`together`:kc(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function jc(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Gl|=t.lanes,(n&t.childLanes)===0){if(e!==null){if(ia(e,t,n,!1),(n&t.childLanes)===0)return null}else return null}if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=_i(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=_i(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Mc(e,t){return(e.lanes&t)!==0||(e=e.dependencies,!!(e!==null&&aa(e)))}function Nc(e,t,n){switch(t.tag){case 3:be(t,t.stateNode.containerInfo),ea(t,P,e.memoizedState.cache),Ji();break;case 27:case 5:Se(t);break;case 4:be(t,t.stateNode.containerInfo);break;case 10:ea(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,fo(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(uo(t),e=jc(e,t,n),e===null?null:e.sibling):wc(e,t,n):(uo(t),t.flags|=128,null);uo(t);break;case 19:var i=!!(e.flags&128);if(r=(n&t.childLanes)!==0,r||=(ia(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return Ac(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),D(F,F.current),r)break;return null;case 22:return t.lanes=0,uc(e,t,n,t.pendingProps);case 24:ea(t,P,e.memoizedState.cache)}return jc(e,t,n)}function Pc(e,t,n){if(e!==null){if(e.memoizedProps!==t.pendingProps)V=!0;else{if(!Mc(e,n)&&!(t.flags&128))return V=!1,Nc(e,t,n);V=!!(e.flags&131072)}}else V=!1,N&&t.flags&1048576&&Ii(t,ki,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=Na(t.elementType),t.type=e,typeof e==`function`)gi(e)?(r=Ys(e,r),t.tag=1,t=yc(null,t,e,r,n)):(t.tag=0,t=_c(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===C){t.tag=11,t=sc(null,t,e,r,n);break a}if(a===re){t.tag=14,t=cc(null,t,e,r,n);break a}}throw t=ue(e)||e,Error(i(306,t,``))}}return t;case 0:return _c(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=Ys(r,t.pendingProps),yc(e,t,r,a,n);case 3:a:{if(be(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,qa(e,t),eo(t,r,null,n);var s=t.memoizedState;if(r=s.cache,ea(t,P,r),r!==o.cache&&ra(t,[P],n,!0),$a(),r=s.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=bc(e,t,r,n);break a}if(r!==a){a=Ti(Error(i(424)),t),Xi(a),t=bc(e,t,r,n);break a}switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(M=cf(e.firstChild),Bi=t,N=!0,Vi=null,Hi=!0,n=Wa(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Ji(),r===a){t=jc(e,t,n);break a}oc(e,t,r,n)}t=t.child}return t;case 26:return gc(e,t),e===null?(n=kf(t.type,null,t.pendingProps,null))?t.memoizedState=n:N||(n=t.type,e=t.pendingProps,r=Bd(ve.current).createElement(n),r[k]=t,r[gt]=e,Pd(r,n,e),A(r),t.stateNode=r):t.memoizedState=kf(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Se(t),e===null&&N&&(r=t.stateNode=ff(t.type,t.pendingProps,ve.current),Bi=t,Hi=!0,a=M,Zd(t.type)?(lf=a,M=cf(r.firstChild)):M=a),oc(e,t,t.pendingProps.children,n),gc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&N&&((a=r=M)&&(r=tf(r,t.type,t.pendingProps,Hi),r===null?a=!1:(t.stateNode=r,Bi=t,M=cf(r.firstChild),Hi=!1,a=!0)),a||Wi(t)),Se(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,Ud(a,o)?r=null:s!==null&&Ud(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=Eo(e,t,ko,null,null,n),Qf._currentValue=a),gc(e,t),oc(e,t,r,n),t.child;case 6:return e===null&&N&&((e=n=M)&&(n=nf(n,t.pendingProps,Hi),n===null?e=!1:(t.stateNode=n,Bi=t,M=null,e=!0)),e||Wi(t)),null;case 13:return wc(e,t,n);case 4:return be(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Ua(t,null,r,n):oc(e,t,r,n),t.child;case 11:return sc(e,t,t.type,t.pendingProps,n);case 7:return oc(e,t,t.pendingProps,n),t.child;case 8:return oc(e,t,t.pendingProps.children,n),t.child;case 12:return oc(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,ea(t,t.type,r.value),oc(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,oa(t),a=sa(a),r=r(a),t.flags|=1,oc(e,t,r,n),t.child;case 14:return cc(e,t,t.type,t.pendingProps,n);case 15:return lc(e,t,t.type,t.pendingProps,n);case 19:return Ac(e,t,n);case 31:return hc(e,t,n);case 22:return uc(e,t,n,t.pendingProps);case 24:return oa(t),r=sa(P),e===null?(a=wa(),a===null&&(a=K,o=pa(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},Ka(t),ea(t,P,a)):((e.lanes&n)!==0&&(qa(e,t),eo(t,null,null,n),$a()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,ea(t,P,r),r!==a.cache&&ra(t,[P],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),ea(t,P,r))),oc(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function Fc(e){e.flags|=4}function Ic(e,t,n,r,i){if((t=!!(e.mode&32))&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i){if(e.stateNode.complete)e.flags|=8192;else if(wu())e.flags|=8192;else throw Pa=Aa,Oa}}else e.flags&=-16777217}function Lc(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Wf(t)){if(wu())e.flags|=8192;else throw Pa=Aa,Oa}}function Rc(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:at(),e.lanes|=t,Yl|=t)}function zc(e,t){if(!N)switch(e.tailMode){case`hidden`:t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case`collapsed`:n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function H(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&65011712,r|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Bc(e,t,n){var r=t.pendingProps;switch(Ri(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return H(t),null;case 1:return H(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),ta(P),xe(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(qi(t)?Fc(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Yi())),H(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(Fc(t),o===null?(H(t),Ic(t,a,null,r,n)):(H(t),Lc(t,o))):o?o===e.memoizedState?(H(t),t.flags&=-16777217):(Fc(t),H(t),Lc(t,o)):(e=e.memoizedProps,e!==r&&Fc(t),H(t),Ic(t,a,e,r,n)),null;case 27:if(Ce(t),n=ve.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return H(t),null}e=ge.current,qi(t)?Gi(t,e):(e=ff(a,r,n),t.stateNode=e,Fc(t))}return H(t),null;case 5:if(Ce(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return H(t),null}if(o=ge.current,qi(t))Gi(t,o);else{var s=Bd(ve.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[k]=t,o[gt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Fc(t)}}return H(t),Ic(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ve.current,qi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Bi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[k]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Wi(t,!0)}else e=Bd(e).createTextNode(r),e[k]=t,t.stateNode=e}return H(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=qi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[k]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),e=!1}else n=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ho(t),t):(ho(t),null);if(t.flags&128)throw Error(i(558))}return H(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=qi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[k]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),a=!1}else a=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ho(t),t):(ho(t),null)}return ho(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Rc(t,t.updateQueue),H(t),null);case 4:return xe(),e===null&&Sd(t.stateNode.containerInfo),H(t),null;case 10:return ta(t.type),H(t),null;case 19:if(E(F),r=t.memoizedState,r===null)return H(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)zc(r,!1);else{if(X!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=go(e),o!==null){for(t.flags|=128,zc(r,!1),e=o.updateQueue,t.updateQueue=e,Rc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)vi(n,e),n=n.sibling;return D(F,F.current&1|2),N&&Fi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ie()>tu&&(t.flags|=128,a=!0,zc(r,!1),t.lanes=4194304)}}else{if(!a){if(e=go(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Rc(t,e),zc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!N)return H(t),null}else 2*Ie()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,zc(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(H(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ie(),e.sibling=null,n=F.current,D(F,a?n&1|2:n&1),N&&Fi(t,r.treeForkCount),e);case 22:case 23:return ho(t),so(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(H(t),t.subtreeFlags&6&&(t.flags|=8192)):H(t),n=t.updateQueue,n!==null&&Rc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&E(Ca),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ta(P),H(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Vc(e,t){switch(Ri(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ta(P),xe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ce(t),null;case 31:if(t.memoizedState!==null){if(ho(t),t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ho(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return E(F),null;case 4:return xe(),null;case 10:return ta(t.type),null;case 22:case 23:return ho(t),so(),e!==null&&E(Ca),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ta(P),null;case 25:return null;default:return null}}function Hc(e,t){switch(Ri(t),t.tag){case 3:ta(P),xe();break;case 26:case 27:case 5:Ce(t);break;case 4:xe();break;case 31:t.memoizedState!==null&&ho(t);break;case 13:ho(t);break;case 19:E(F);break;case 10:ta(t.type);break;case 22:case 23:ho(t),so(),e!==null&&E(Ca);break;case 24:ta(P)}}function Uc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Wc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Gc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{no(t,n)}catch(t){Z(e,e.return,t)}}}function Kc(e,t,n){n.props=Ys(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function qc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Jc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Yc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Xc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[gt]=t}catch(t){Z(e,e.return,t)}}function Zc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Qc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Zc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function $c(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=sn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for($c(e,t,n),e=e.sibling;e!==null;)$c(e,t,n),e=e.sibling}function el(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(el(e,t,n),e=e.sibling;e!==null;)el(e,t,n),e=e.sibling}function tl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[k]=e,t[gt]=n}catch(t){Z(e,e.return,t)}}var nl=!1,U=!1,rl=!1,il=typeof WeakSet==`function`?WeakSet:Set,al=null;function ol(e,t){if(e=e.containerInfo,Rd=sp,e=Pr(e),Fr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,al=t;al!==null;)if(t=al,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,al=e;else for(;al!==null;){switch(t=al,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n<e.length;n++)a=e[n],a.ref.impl=a.nextImpl;break;case 11:case 15:break;case 1:if(e&1024&&o!==null){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var h=Ys(n.type,a);e=r.getSnapshotBeforeUpdate(h,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(e){Z(n,n.return,e)}}break;case 3:if(e&1024){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)ef(e);else if(n===1)switch(e.nodeName){case`HEAD`:case`HTML`:case`BODY`:ef(e);break;default:e.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(e&1024)throw Error(i(163))}if(e=t.sibling,e!==null){e.return=t.return,al=e;break}al=t.return}}function sl(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:xl(e,n),r&4&&Uc(5,n);break;case 1:if(xl(e,n),r&4){if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Z(n,n.return,e)}else{var i=Ys(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Z(n,n.return,e)}}}r&64&&Gc(n),r&512&&qc(n,n.return);break;case 3:if(xl(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{no(e,t)}catch(e){Z(n,n.return,e)}}break;case 27:t===null&&r&4&&tl(n);case 26:case 5:xl(e,n),t===null&&r&4&&Yc(n),r&512&&qc(n,n.return);break;case 12:xl(e,n);break;case 31:xl(e,n),r&4&&fl(e,n);break;case 13:xl(e,n),r&4&&pl(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=Ju.bind(null,n),sf(e,n))));break;case 22:if(r=n.memoizedState!==null||nl,!r){t=t!==null&&t.memoizedState!==null||U,i=nl;var a=U;nl=r,(U=t)&&!a?Cl(e,n,!!(n.subtreeFlags&8772)):xl(e,n),nl=i,U=a}break;case 30:break;default:xl(e,n)}}function cl(e){var t=e.alternate;t!==null&&(e.alternate=null,cl(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&Ct(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var W=null,ll=!1;function ul(e,t,n){for(n=n.child;n!==null;)dl(e,t,n),n=n.sibling}function dl(e,t,n){if(Ke&&typeof Ke.onCommitFiberUnmount==`function`)try{Ke.onCommitFiberUnmount(Ge,n)}catch{}switch(n.tag){case 26:U||Jc(n,t),ul(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:U||Jc(n,t);var r=W,i=ll;Zd(n.type)&&(W=n.stateNode,ll=!1),ul(e,t,n),pf(n.stateNode),W=r,ll=i;break;case 5:U||Jc(n,t);case 6:if(r=W,i=ll,W=null,ul(e,t,n),W=r,ll=i,W!==null){if(ll)try{(W.nodeType===9?W.body:W.nodeName===`HTML`?W.ownerDocument.body:W).removeChild(n.stateNode)}catch(e){Z(n,t,e)}else try{W.removeChild(n.stateNode)}catch(e){Z(n,t,e)}}break;case 18:W!==null&&(ll?(e=W,Qd(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Np(e)):Qd(W,n.stateNode));break;case 4:r=W,i=ll,W=n.stateNode.containerInfo,ll=!0,ul(e,t,n),W=r,ll=i;break;case 0:case 11:case 14:case 15:Wc(2,n,t),U||Wc(4,n,t),ul(e,t,n);break;case 1:U||(Jc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Kc(n,t,r)),ul(e,t,n);break;case 21:ul(e,t,n);break;case 22:U=(r=U)||n.memoizedState!==null,ul(e,t,n),U=r;break;default:ul(e,t,n)}}function fl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Np(e)}catch(e){Z(t,t.return,e)}}}function pl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Np(e)}catch(e){Z(t,t.return,e)}}function ml(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new il),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new il),t;default:throw Error(i(435,e.tag))}}function hl(e,t){var n=ml(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Yu.bind(null,e,t);t.then(r,r)}})}function gl(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var a=n[r],o=e,s=t,c=s;a:for(;c!==null;){switch(c.tag){case 27:if(Zd(c.type)){W=c.stateNode,ll=!1;break a}break;case 5:W=c.stateNode,ll=!1;break a;case 3:case 4:W=c.stateNode.containerInfo,ll=!0;break a}c=c.return}if(W===null)throw Error(i(160));dl(o,s,a),W=null,ll=!1,o=a.alternate,o!==null&&(o.return=null),a.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)vl(t,e),t=t.sibling}var _l=null;function vl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:gl(t,e),yl(e),r&4&&(Wc(3,e,e.return),Uc(3,e),Wc(5,e,e.return));break;case 1:gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),r&64&&nl&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?r:n.concat(r))));break;case 26:var a=_l;if(gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),r&4){var o=n===null?null:n.memoizedState;if(r=e.memoizedState,n===null){if(r===null){if(e.stateNode===null){a:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;b:switch(r){case`title`:o=a.getElementsByTagName(`title`)[0],(!o||o[St]||o[k]||o.namespaceURI===`http://www.w3.org/2000/svg`||o.hasAttribute(`itemprop`))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector(`head > title`))),Pd(o,r,n),o[k]=e,A(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&o.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&o.getAttribute(`title`)===(n.title==null?null:n.title)&&o.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){s.splice(c,1);break b}}o=a.createElement(r),Pd(o,r,n),a.head.appendChild(o);break;case`meta`:if(s=Vf(`meta`,`content`,a).get(r+(n.content||``))){for(c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`content`)===(n.content==null?null:``+n.content)&&o.getAttribute(`name`)===(n.name==null?null:n.name)&&o.getAttribute(`property`)===(n.property==null?null:n.property)&&o.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&o.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){s.splice(c,1);break b}}o=a.createElement(r),Pd(o,r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[k]=e,A(o),r=o}e.stateNode=r}else Hf(a,e.type,e.stateNode)}else e.stateNode=If(a,r,e.memoizedProps)}else o===r?r===null&&e.stateNode!==null&&Xc(e,e.memoizedProps,n.memoizedProps):(o===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):o.count--,r===null?Hf(a,e.type,e.stateNode):If(a,r,e.memoizedProps))}break;case 27:gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),n!==null&&r&4&&Xc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),e.flags&32){a=e.stateNode;try{Qt(a,``)}catch(t){Z(e,e.return,t)}}r&4&&e.stateNode!=null&&(a=e.memoizedProps,Xc(e,a,n===null?a:n.memoizedProps)),r&1024&&(rl=!0);break;case 6:if(gl(t,e),yl(e),r&4){if(e.stateNode===null)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(t){Z(e,e.return,t)}}break;case 3:if(Bf=null,a=_l,_l=gf(t.containerInfo),gl(t,e),_l=a,yl(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Np(t.containerInfo)}catch(t){Z(e,e.return,t)}rl&&(rl=!1,bl(e));break;case 4:r=_l,_l=gf(e.stateNode.containerInfo),gl(t,e),yl(e),_l=r;break;case 12:gl(t,e),yl(e);break;case 31:gl(t,e),yl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 13:gl(t,e),yl(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&($l=Ie()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 22:a=e.memoizedState!==null;var l=n!==null&&n.memoizedState!==null,u=nl,d=U;if(nl=u||a,U=d||l,gl(t,e),U=d,nl=u,yl(e),r&8192)a:for(t=e.stateNode,t._visibility=a?t._visibility&-2:t._visibility|1,a&&(n===null||l||nl||U||Sl(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){l=n=t;try{if(o=l.stateNode,a)s=o.style,typeof s.setProperty==`function`?s.setProperty(`display`,`none`,`important`):s.display=`none`;else{c=l.stateNode;var f=l.memoizedProps.style,p=f!=null&&f.hasOwnProperty(`display`)?f.display:null;c.style.display=p==null||typeof p==`boolean`?``:(``+p).trim()}}catch(e){Z(l,l.return,e)}}}else if(t.tag===6){if(n===null){l=t;try{l.stateNode.nodeValue=a?``:l.memoizedProps}catch(e){Z(l,l.return,e)}}}else if(t.tag===18){if(n===null){l=t;try{var m=l.stateNode;a?$d(m,!0):$d(l.stateNode,!1)}catch(e){Z(l,l.return,e)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break a;for(;t.sibling===null;){if(t.return===null||t.return===e)break a;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}r&4&&(r=e.updateQueue,r!==null&&(n=r.retryQueue,n!==null&&(r.retryQueue=null,hl(e,n))));break;case 19:gl(t,e),yl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 30:break;case 21:break;default:gl(t,e),yl(e)}}function yl(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Zc(r)){n=r;break}r=r.return}if(n==null)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;el(e,Qc(e),a);break;case 5:var o=n.stateNode;n.flags&32&&(Qt(o,``),n.flags&=-33),el(e,Qc(e),o);break;case 3:case 4:var s=n.stateNode.containerInfo;$c(e,Qc(e),s);break;default:throw Error(i(161))}}catch(t){Z(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function bl(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;bl(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function xl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)sl(e,t.alternate,t),t=t.sibling}function Sl(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Wc(4,t,t.return),Sl(t);break;case 1:Jc(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount==`function`&&Kc(t,t.return,n),Sl(t);break;case 27:pf(t.stateNode);case 26:case 5:Jc(t,t.return),Sl(t);break;case 22:t.memoizedState===null&&Sl(t);break;case 30:Sl(t);break;default:Sl(t)}e=e.sibling}}function Cl(e,t,n){for(n&&=!!(t.subtreeFlags&8772),t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags;switch(a.tag){case 0:case 11:case 15:Cl(i,a,n),Uc(4,a);break;case 1:if(Cl(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Z(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var s=r.stateNode;try{var c=i.shared.hiddenCallbacks;if(c!==null)for(i.shared.hiddenCallbacks=null,i=0;i<c.length;i++)to(c[i],s)}catch(e){Z(r,r.return,e)}}n&&o&64&&Gc(a),qc(a,a.return);break;case 27:tl(a);case 26:case 5:Cl(i,a,n),n&&r===null&&o&4&&Yc(a),qc(a,a.return);break;case 12:Cl(i,a,n);break;case 31:Cl(i,a,n),n&&o&4&&fl(i,a);break;case 13:Cl(i,a,n),n&&o&4&&pl(i,a);break;case 22:a.memoizedState===null&&Cl(i,a,n),qc(a,a.return);break;case 30:break;default:Cl(i,a,n)}t=t.sibling}}function wl(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&ma(n))}function Tl(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ma(e))}function El(e,t,n,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Dl(e,t,n,r),t=t.sibling}function Dl(e,t,n,r){var i=t.flags;switch(t.tag){case 0:case 11:case 15:El(e,t,n,r),i&2048&&Uc(9,t);break;case 1:El(e,t,n,r);break;case 3:El(e,t,n,r),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ma(e)));break;case 12:if(i&2048){El(e,t,n,r),e=t.stateNode;try{var a=t.memoizedProps,o=a.id,s=a.onPostCommit;typeof s==`function`&&s(o,t.alternate===null?`mount`:`update`,e.passiveEffectDuration,-0)}catch(e){Z(t,t.return,e)}}else El(e,t,n,r);break;case 31:El(e,t,n,r);break;case 13:El(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,o=t.alternate,t.memoizedState===null?a._visibility&2?El(e,t,n,r):(a._visibility|=2,Ol(e,t,n,r,!!(t.subtreeFlags&10256)||!1)):a._visibility&2?El(e,t,n,r):kl(e,t),i&2048&&wl(o,t);break;case 24:El(e,t,n,r),i&2048&&Tl(t.alternate,t);break;default:El(e,t,n,r)}}function Ol(e,t,n,r,i){for(i&&=!!(t.subtreeFlags&10256)||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:Ol(a,o,s,c,i),Uc(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,Ol(a,o,s,c,i)):u._visibility&2?Ol(a,o,s,c,i):kl(a,o),i&&l&2048&&wl(o.alternate,o);break;case 24:Ol(a,o,s,c,i),i&&l&2048&&Tl(o.alternate,o);break;default:Ol(a,o,s,c,i)}t=t.sibling}}function kl(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:kl(n,r),i&2048&&wl(r.alternate,r);break;case 24:kl(n,r),i&2048&&Tl(r.alternate,r);break;default:kl(n,r)}t=t.sibling}}var Al=8192;function jl(e,t,n){if(e.subtreeFlags&Al)for(e=e.child;e!==null;)Ml(e,t,n),e=e.sibling}function Ml(e,t,n){switch(e.tag){case 26:jl(e,t,n),e.flags&Al&&e.memoizedState!==null&&Gf(n,_l,e.memoizedState,e.memoizedProps);break;case 5:jl(e,t,n);break;case 3:case 4:var r=_l;_l=gf(e.stateNode.containerInfo),jl(e,t,n),_l=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Al,Al=16777216,jl(e,t,n),Al=r):jl(e,t,n));break;default:jl(e,t,n)}}function Nl(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Pl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];al=r,Ll(r,e)}Nl(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Fl(e),e=e.sibling}function Fl(e){switch(e.tag){case 0:case 11:case 15:Pl(e),e.flags&2048&&Wc(9,e,e.return);break;case 3:Pl(e);break;case 12:Pl(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Il(e)):Pl(e);break;default:Pl(e)}}function Il(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];al=r,Ll(r,e)}Nl(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Wc(8,t,t.return),Il(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Il(t));break;default:Il(t)}e=e.sibling}}function Ll(e,t){for(;al!==null;){var n=al;switch(n.tag){case 0:case 11:case 15:Wc(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:ma(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,al=r;else a:for(n=e;al!==null;){r=al;var i=r.sibling,a=r.return;if(cl(r),r===n){al=null;break a}if(i!==null){i.return=a,al=i;break a}al=a}}}var Rl={getCacheForType:function(e){var t=sa(P),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return sa(P).controller.signal}},zl=typeof WeakMap==`function`?WeakMap:Map,G=0,K=null,q=null,J=0,Y=0,Bl=null,Vl=!1,Hl=!1,Ul=!1,Wl=0,X=0,Gl=0,Kl=0,ql=0,Jl=0,Yl=0,Xl=null,Zl=null,Ql=!1,$l=0,eu=0,tu=1/0,nu=null,ru=null,iu=0,au=null,ou=null,su=0,cu=0,lu=null,uu=null,du=0,fu=null;function pu(){return G&2&&J!==0?J&-J:w.T===null?mt():dd()}function mu(){if(Jl===0){if(!(J&536870912)||N){var e=$e;$e<<=1,!($e&3932160)&&($e=262144),Jl=e}else Jl=536870912}return e=co.current,e!==null&&(e.flags|=32),Jl}function hu(e,t,n){(e===K&&(Y===2||Y===9)||e.cancelPendingCommit!==null)&&(Su(e,0),yu(e,J,Jl,!1)),st(e,n),(!(G&2)||e!==K)&&(e===K&&(!(G&2)&&(Kl|=n),X===4&&yu(e,J,Jl,!1)),rd(e))}function gu(e,t,n){if(G&6)throw Error(i(327));var r=!n&&!(t&127)&&(t&e.expiredLanes)===0||rt(e,t),a=r?Au(e,t):Ou(e,t,!0),o=r;do{if(a===0){Hl&&!r&&yu(e,t,0,!1);break}if(n=e.current.alternate,o&&!vu(n)){a=Ou(e,t,!1),o=!1;continue}if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=Xl;var l=c.current.memoizedState.isDehydrated;if(l&&(Su(c,s).flags|=256),s=Ou(c,s,!1),s!==2){if(Ul&&!l){c.errorRecoveryDisabledLanes|=o,Kl|=o,a=4;break a}o=Zl,Zl=a,o!==null&&(Zl===null?Zl=o:Zl.push.apply(Zl,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){Su(e,0),yu(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t)break;case 6:yu(r,t,Jl,!Vl);break a;case 2:Zl=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=$l+300-Ie(),10<a)){if(yu(r,t,Jl,!Vl),nt(r,0,!0)!==0)break a;su=t,r.timeoutHandle=Kd(_u.bind(null,r,n,Zl,nu,Ql,t,Jl,Kl,Yl,Vl,o,`Throttled`,-0,0),a);break a}_u(r,n,Zl,nu,Ql,t,Jl,Kl,Yl,Vl,o,null,-0,0)}break}while(1);rd(e)}function _u(e,t,n,r,i,a,o,s,c,l,u,d,f,p){if(e.timeoutHandle=-1,d=t.subtreeFlags,d&8192||(d&16785408)==16785408){d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:sn},Ml(t,a,d);var m=(a&62914560)===a?$l-Ie():(a&4194048)===a?eu-Ie():0;if(m=qf(d,m),m!==null){su=a,e.cancelPendingCommit=m(Lu.bind(null,e,t,a,n,r,i,o,s,c,u,d,null,f,p)),yu(e,a,o,!l);return}}Lu(e,t,a,n,r,i,o,s,c)}function vu(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!kr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function yu(e,t,n,r){t&=~ql,t&=~Kl,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-Je(i),o=1<<a;r[a]=-1,i&=~o}n!==0&<(e,n,t)}function bu(){return G&6?!0:(id(0,!1),!1)}function xu(){if(q!==null){if(Y===0)var e=q.return;else e=q,$i=Qi=null,Mo(e),La=null,Ra=0,e=q;for(;e!==null;)Hc(e.alternate,e),e=e.return;q=null}}function Su(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,qd(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),su=0,xu(),K=e,q=n=_i(e.current,null),J=t,Y=0,Bl=null,Vl=!1,Hl=rt(e,t),Ul=!1,Yl=Jl=ql=Kl=Gl=X=0,Zl=Xl=null,Ql=!1,t&8&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var i=31-Je(r),a=1<<i;t|=e[i],r&=~a}return Wl=t,si(),n}function Cu(e,t){I=null,w.H=Vs,t===Da||t===ka?(t=Fa(),Y=3):t===Oa?(t=Fa(),Y=4):Y=t===ac?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,Bl=t,q===null&&(X=1,$s(e,Ti(t,e.current)))}function wu(){var e=co.current;return e===null?!0:(J&4194048)===J?lo===null:(J&62914560)===J||J&536870912?e===lo:!1}function Tu(){var e=w.H;return w.H=Vs,e===null?Vs:e}function Eu(){var e=w.A;return w.A=Rl,e}function Du(){X=4,Vl||(J&4194048)!==J&&co.current!==null||(Hl=!0),!(Gl&134217727)&&!(Kl&134217727)||K===null||yu(K,J,Jl,!1)}function Ou(e,t,n){var r=G;G|=2;var i=Tu(),a=Eu();(K!==e||J!==t)&&(nu=null,Su(e,t)),t=!1;var o=X;a:do try{if(Y!==0&&q!==null){var s=q,c=Bl;switch(Y){case 8:xu(),o=6;break a;case 3:case 2:case 9:case 6:co.current===null&&(t=!0);var l=Y;if(Y=0,Bl=null,Pu(e,s,c,l),n&&Hl){o=0;break a}break;default:l=Y,Y=0,Bl=null,Pu(e,s,c,l)}}ku(),o=X;break}catch(t){Cu(e,t)}while(1);return t&&e.shellSuspendCounter++,$i=Qi=null,G=r,w.H=i,w.A=a,q===null&&(K=null,J=0,si()),o}function ku(){for(;q!==null;)Mu(q)}function Au(e,t){var n=G;G|=2;var r=Tu(),a=Eu();K!==e||J!==t?(nu=null,tu=Ie()+500,Su(e,t)):Hl=rt(e,t);a:do try{if(Y!==0&&q!==null){t=q;var o=Bl;b:switch(Y){case 1:Y=0,Bl=null,Pu(e,t,o,1);break;case 2:case 9:if(ja(o)){Y=0,Bl=null,Nu(t);break}t=function(){Y!==2&&Y!==9||K!==e||(Y=7),rd(e)},o.then(t,t);break a;case 3:Y=7;break a;case 4:Y=5;break a;case 7:ja(o)?(Y=0,Bl=null,Nu(t)):(Y=0,Bl=null,Pu(e,t,o,7));break;case 5:var s=null;switch(q.tag){case 26:s=q.memoizedState;case 5:case 27:var c=q;if(s?Wf(s):c.stateNode.complete){Y=0,Bl=null;var l=c.sibling;if(l!==null)q=l;else{var u=c.return;u===null?q=null:(q=u,Fu(u))}break b}}Y=0,Bl=null,Pu(e,t,o,5);break;case 6:Y=0,Bl=null,Pu(e,t,o,6);break;case 8:xu(),X=6;break a;default:throw Error(i(462))}}ju();break}catch(t){Cu(e,t)}while(1);return $i=Qi=null,w.H=r,w.A=a,G=n,q===null?(K=null,J=0,si(),X):0}function ju(){for(;q!==null&&!Pe();)Mu(q)}function Mu(e){var t=Pc(e.alternate,e,Wl);e.memoizedProps=e.pendingProps,t===null?Fu(e):q=t}function Nu(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=vc(n,t,t.pendingProps,t.type,void 0,J);break;case 11:t=vc(n,t,t.pendingProps,t.type.render,t.ref,J);break;case 5:Mo(t);default:Hc(n,t),t=q=vi(t,Wl),t=Pc(n,t,Wl)}e.memoizedProps=e.pendingProps,t===null?Fu(e):q=t}function Pu(e,t,n,r){$i=Qi=null,Mo(t),La=null,Ra=0;var i=t.return;try{if(ic(e,i,t,n,J)){X=1,$s(e,Ti(n,e.current)),q=null;return}}catch(t){if(i!==null)throw q=i,t;X=1,$s(e,Ti(n,e.current)),q=null;return}t.flags&32768?(N||r===1?e=!0:Hl||J&536870912?e=!1:(Vl=e=!0,(r===2||r===9||r===3||r===6)&&(r=co.current,r!==null&&r.tag===13&&(r.flags|=16384))),Iu(t,e)):Fu(t)}function Fu(e){var t=e;do{if(t.flags&32768){Iu(t,Vl);return}e=t.return;var n=Bc(t.alternate,t,Wl);if(n!==null){q=n;return}if(t=t.sibling,t!==null){q=t;return}q=t=e}while(t!==null);X===0&&(X=5)}function Iu(e,t){do{var n=Vc(e.alternate,e);if(n!==null){n.flags&=32767,q=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){q=e;return}q=e=n}while(e!==null);X=6,q=null}function Lu(e,t,n,r,a,o,s,c,l){e.cancelPendingCommit=null;do Hu();while(iu!==0);if(G&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,o|=oi,ct(e,n,o,s,c,l),e===K&&(q=K=null,J=0),ou=t,au=e,su=n,cu=o,lu=a,uu=r,t.subtreeFlags&10256||t.flags&10256?(e.callbackNode=null,e.callbackPriority=0,Xu(Be,function(){return Uu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(t.flags&13878),t.subtreeFlags&13878||r){r=w.T,w.T=null,a=T.p,T.p=2,s=G,G|=4;try{ol(e,t,n)}finally{G=s,T.p=a,w.T=r}}iu=1,Ru(),zu(),Bu()}}function Ru(){if(iu===1){iu=0;var e=au,t=ou,n=!!(t.flags&13878);if(t.subtreeFlags&13878||n){n=w.T,w.T=null;var r=T.p;T.p=2;var i=G;G|=4;try{vl(t,e);var a=zd,o=Pr(e.containerInfo),s=a.focusedElem,c=a.selectionRange;if(o!==s&&s&&s.ownerDocument&&Nr(s.ownerDocument.documentElement,s)){if(c!==null&&Fr(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=Mr(s,h),v=Mr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}sp=!!Rd,zd=Rd=null}finally{G=i,T.p=r,w.T=n}}e.current=t,iu=2}}function zu(){if(iu===2){iu=0;var e=au,t=ou,n=!!(t.flags&8772);if(t.subtreeFlags&8772||n){n=w.T,w.T=null;var r=T.p;T.p=2;var i=G;G|=4;try{sl(e,t.alternate,t)}finally{G=i,T.p=r,w.T=n}}iu=3}}function Bu(){if(iu===4||iu===3){iu=0,Fe();var e=au,t=ou,n=su,r=uu;t.subtreeFlags&10256||t.flags&10256?iu=5:(iu=0,ou=au=null,Vu(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(ru=null),pt(n),t=t.stateNode,Ke&&typeof Ke.onCommitFiberRoot==`function`)try{Ke.onCommitFiberRoot(Ge,t,void 0,(t.current.flags&128)==128)}catch{}if(r!==null){t=w.T,i=T.p,T.p=2,w.T=null;try{for(var a=e.onRecoverableError,o=0;o<r.length;o++){var s=r[o];a(s.value,{componentStack:s.stack})}}finally{w.T=t,T.p=i}}su&3&&Hu(),rd(e),i=e.pendingLanes,n&261930&&i&42?e===fu?du++:(du=0,fu=e):du=0,id(0,!1)}}function Vu(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,ma(t)))}function Hu(){return Ru(),zu(),Bu(),Uu()}function Uu(){if(iu!==5)return!1;var e=au,t=cu;cu=0;var n=pt(su),r=w.T,a=T.p;try{T.p=32>n?32:n,w.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,G&6)throw Error(i(331));var c=G;if(G|=4,Fl(o.current),Dl(o,o.current,s,n),G=c,id(0,!1),Ke&&typeof Ke.onPostCommitFiberRoot==`function`)try{Ke.onPostCommitFiberRoot(Ge,o)}catch{}return!0}finally{T.p=a,w.T=r,Vu(e,t)}}function Wu(e,t,n){t=Ti(n,t),t=tc(e.stateNode,t,2),e=Ya(e,t,2),e!==null&&(st(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=Ti(n,e),n=nc(2),r=Ya(t,n,2),r!==null&&(rc(n,r,t,e),st(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new zl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Ul=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,K===e&&(J&n)===n&&(X===4||X===3&&(J&62914560)===J&&300>Ie()-$l?!(G&2)&&Su(e,0):ql|=n,Yl===J&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=at()),e=ui(e,t),e!==null&&(st(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Me(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Je(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=J,a=nt(r,r===K?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||rt(r,a)||(n=!0,ld(r,a))}r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Ie(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-Je(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=it(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=K,n=J,n=nt(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(Y===2||Y===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&Ne(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||rt(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&Ne(r),pt(n)){case 2:case 8:n=ze;break;case 32:n=Be;break;case 268435456:n=He;break;default:n=Be}return r=cd.bind(null,e),n=Me(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&Ne(r),e.callbackPriority=2,e.callbackNode=null,2}function cd(e,t){if(iu!==0&&iu!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Hu()&&e.callbackNode!==n)return null;var r=J;return r=nt(e,e===K?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(gu(e,r,t),sd(e,Ie()),e.callbackNode!=null&&e.callbackNode===n?cd.bind(null,e):null)}function ld(e,t){if(Hu())return null;gu(e,t,!0)}function ud(){Yd(function(){G&6?Me(Re,ad):od()})}function dd(){if(nd===0){var e=_a;e===0&&(e=Qe,Qe<<=1,!(Qe&261888)&&(Qe=256)),nd=e}return nd}function fd(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:on(``+e)}function pd(e,t){var n=t.ownerDocument.createElement(`input`);return n.name=t.name,n.value=t.value,e.id&&n.setAttribute(`form`,e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function md(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=fd((i[gt]||null).action),o=r.submitter;o&&(t=(t=o[gt]||null)?fd(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new On(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(nd!==0){var e=o?pd(i,o):new FormData(i);Ds(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=o?pd(i,o):new FormData(i),Ds(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var hd=0;hd<ti.length;hd++){var gd=ti[hd];ni(gd.toLowerCase(),`on`+(gd[0].toUpperCase()+gd.slice(1)))}ni(qr,`onAnimationEnd`),ni(Jr,`onAnimationIteration`),ni(Yr,`onAnimationStart`),ni(`dblclick`,`onDoubleClick`),ni(`focusin`,`onFocus`),ni(`focusout`,`onBlur`),ni(Xr,`onTransitionRun`),ni(Zr,`onTransitionStart`),ni(Qr,`onTransitionCancel`),ni($r,`onTransitionEnd`),jt(`onMouseEnter`,[`mouseout`,`mouseover`]),jt(`onMouseLeave`,[`mouseout`,`mouseover`]),jt(`onPointerEnter`,[`pointerout`,`pointerover`]),jt(`onPointerLeave`,[`pointerout`,`pointerover`]),At(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),At(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),At(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),At(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),At(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),At(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var _d=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),vd=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(_d));function yd(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){ri(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){ri(e)}i.currentTarget=null,a=c}}}}function Q(e,t){var n=t[vt];n===void 0&&(n=t[vt]=new Set);var r=e+`__bubble`;n.has(r)||(Cd(t,e,2,!1),n.add(r))}function bd(e,t,n){var r=0;t&&(r|=4),Cd(n,e,r,t)}var xd=`_reactListening`+Math.random().toString(36).slice(2);function Sd(e){if(!e[xd]){e[xd]=!0,Ot.forEach(function(t){t!==`selectionchange`&&(vd.has(t)||bd(t,!1,e),bd(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[xd]||(t[xd]=!0,bd(`selectionchange`,!1,t))}}function Cd(e,t,n,r){switch(mp(t)){case 2:var i=cp;break;case 8:i=lp;break;default:i=up}n=i.bind(null,t,n,e),i=void 0,!_n||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function wd(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var s=r.tag;if(s===3||s===4){var c=r.stateNode.containerInfo;if(c===i)break;if(s===4)for(s=r.return;s!==null;){var l=s.tag;if((l===3||l===4)&&s.stateNode.containerInfo===i)return;s=s.return}for(;c!==null;){if(s=wt(c),s===null)return;if(l=s.tag,l===5||l===6||l===26||l===27){r=a=s;continue a}c=c.parentNode}}r=r.return}mn(function(){var r=a,i=ln(n),s=[];a:{var c=ei.get(e);if(c!==void 0){var l=On,u=e;switch(e){case`keypress`:if(Cn(n)===0)break a;case`keydown`:case`keyup`:l=Kn;break;case`focusin`:u=`focus`,l=Ln;break;case`focusout`:u=`blur`,l=Ln;break;case`beforeblur`:case`afterblur`:l=Ln;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=Fn;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=In;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=Jn;break;case qr:case Jr:case Yr:l=Rn;break;case $r:l=Yn;break;case`scroll`:case`scrollend`:l=An;break;case`wheel`:l=Xn;break;case`copy`:case`cut`:case`paste`:l=zn;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=qn;break;case`toggle`:case`beforetoggle`:l=Zn}var d=!!(t&4),f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=hn(m,p),g!=null&&d.push(Td(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),s.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(c=e===`mouseover`||e===`pointerover`,l=e===`mouseout`||e===`pointerout`,c&&n!==cn&&(u=n.relatedTarget||n.fromElement)&&(wt(u)||u[_t]))break a;if((l||c)&&(c=i.window===i?i:(c=i.ownerDocument)?c.defaultView||c.parentWindow:window,l?(u=n.relatedTarget||n.toElement,l=r,u=u?wt(u):null,u!==null&&(f=o(u),d=u.tag,u!==f||d!==5&&d!==27&&d!==6)&&(u=null)):(l=null,u=r),l!==u)){if(d=Fn,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=qn,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=l==null?c:Et(l),h=u==null?c:Et(u),c=new d(g,m+`leave`,l,n,i),c.target=f,c.relatedTarget=h,g=null,wt(i)===r&&(d=new d(p,m+`enter`,u,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,l&&u)b:{for(d=Dd,p=l,m=u,h=0,g=p;g;g=d(g))h++;g=0;for(var _=m;_;_=d(_))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||m!==null&&p===m.alternate){d=p;break b}p=d(p),m=d(m)}d=null}else d=null;l!==null&&Od(s,c,l,d,!1),u!==null&&f!==null&&Od(s,f,u,d,!0)}}a:{if(c=r?Et(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var v=_r;else if(dr(c)){if(vr)v=Dr;else{v=Tr;var y=wr}}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&nn(r.elementType)&&(v=_r):v=Er;if(v&&=v(e,r)){fr(s,v,n,i);break a}y&&y(e,c,r),e===`focusout`&&r&&c.type===`number`&&r.memoizedProps.value!=null&&Jt(c,`number`,c.value)}switch(y=r?Et(r):window,e){case`focusin`:(dr(y)||y.contentEditable===`true`)&&(Lr=y,Rr=r,zr=null);break;case`focusout`:zr=Rr=Lr=null;break;case`mousedown`:Br=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:Br=!1,Vr(s,n,i);break;case`selectionchange`:if(Ir)break;case`keydown`:case`keyup`:Vr(s,n,i)}var b;if($n)b:{switch(e){case`compositionstart`:var x=`onCompositionStart`;break b;case`compositionend`:x=`onCompositionEnd`;break b;case`compositionupdate`:x=`onCompositionUpdate`;break b}x=void 0}else sr?ar(e,n)&&(x=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(x=`onCompositionStart`);x&&(nr&&n.locale!==`ko`&&(sr||x!==`onCompositionStart`?x===`onCompositionEnd`&&sr&&(b=Sn()):(yn=i,bn=`value`in yn?yn.value:yn.textContent,sr=!0)),y=Ed(r,x),0<y.length&&(x=new Bn(x,e,null,n,i),s.push({event:x,listeners:y}),b?x.data=b:(b=or(n),b!==null&&(x.data=b)))),(b=tr?cr(e,n):lr(e,n))&&(x=Ed(r,`onBeforeInput`),0<x.length&&(y=new Bn(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:y,listeners:x}),y.data=b)),md(s,e,r,n,i)}yd(s,t)})}function Td(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Ed(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=hn(e,n),i!=null&&r.unshift(Td(e,i,a)),i=hn(e,t),i!=null&&r.push(Td(e,i,a))),e.tag===3)return r;e=e.return}return[]}function Dd(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Od(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=hn(n,a),l!=null&&o.unshift(Td(n,l,c))):i||(l=hn(n,a),l!=null&&o.push(Td(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var kd=/\r\n?/g,Ad=/\u0000|\uFFFD/g;function jd(e){return(typeof e==`string`?e:``+e).replace(kd,`
|
|
10
|
-
`).replace(Ad,``)}function Md(e,t){return t=jd(t),jd(e)===t}function $(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Qt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Qt(e,``+r);break;case`className`:Lt(e,`class`,r);break;case`tabIndex`:Lt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Lt(e,n,r);break;case`style`:tn(e,r,o);break;case`data`:if(t!==`object`){Lt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=on(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&$(e,t,`name`,a.name,a,null),$(e,t,`formEncType`,a.formEncType,a,null),$(e,t,`formMethod`,a.formMethod,a,null),$(e,t,`formTarget`,a.formTarget,a,null)):($(e,t,`encType`,a.encType,a,null),$(e,t,`method`,a.method,a,null),$(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=on(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=sn);break;case`onScroll`:r!=null&&Q(`scroll`,e);break;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=on(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Q(`beforetoggle`,e),Q(`toggle`,e),It(e,`popover`,r);break;case`xlinkActuate`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Rt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Rt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Rt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:It(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=rn.get(n)||n,It(e,n,r))}}function Nd(e,t,n,r,a,o){switch(n){case`style`:tn(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Qt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Qt(e,``+r);break;case`onScroll`:r!=null&&Q(`scroll`,e);break;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=sn);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!kt.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[gt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):It(e,n,r)}}}function Pd(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Q(`error`,e),Q(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,o,s,n,null)}}a&&$(e,t,`srcSet`,n.srcSet,n,null),r&&$(e,t,`src`,n.src,n,null);return;case`input`:Q(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:$(e,t,r,d,n,null)}}qt(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Q(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:$(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&Yt(e,!!r,n,!0):Yt(e,!!r,t,!1);return;case`textarea`:for(s in Q(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:$(e,t,s,c,n,null)}Zt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:$(e,t,l,r,n,null)}return;case`dialog`:Q(`beforetoggle`,e),Q(`toggle`,e),Q(`cancel`,e),Q(`close`,e);break;case`iframe`:case`object`:Q(`load`,e);break;case`video`:case`audio`:for(r=0;r<_d.length;r++)Q(_d[r],e);break;case`image`:Q(`error`,e),Q(`load`,e);break;case`details`:Q(`toggle`,e);break;case`embed`:case`source`:case`link`:Q(`error`,e),Q(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,u,r,n,null)}return;default:if(nn(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Nd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&$(e,t,c,r,n,null))}function Fd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||$(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&$(e,t,p,m,r,f)}}Kt(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||$(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&$(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?Yt(e,!!n,n?[]:``,!1):Yt(e,!!n,t,!0)):Yt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:$(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&$(e,t,s,a,r,o)}Xt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:$(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:$(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&$(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:$(e,t,u,p,r,m)}return;default:if(nn(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Nd(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Nd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&$(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||$(e,t,f,p,r,m)}function Id(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Ld(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&Id(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Rd=null,zd=null;function Bd(e){return e.nodeType===9?e:e.ownerDocument}function Vd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Hd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Ud(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Wd=null;function Gd(){var e=window.event;return e&&e.type===`popstate`?e!==Wd&&(Wd=e,!0):(Wd=null,!1)}var Kd=typeof setTimeout==`function`?setTimeout:void 0,qd=typeof clearTimeout==`function`?clearTimeout:void 0,Jd=typeof Promise==`function`?Promise:void 0,Yd=typeof queueMicrotask==`function`?queueMicrotask:Jd===void 0?Kd:function(e){return Jd.resolve(null).then(e).catch(Xd)};function Xd(e){setTimeout(function(){throw e})}function Zd(e){return e===`head`}function Qd(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Np(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)pf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,pf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[St]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&pf(e.ownerDocument.body)}n=i}while(n);Np(t)}function $d(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8){if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++}n=r}while(n)}function ef(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:ef(n),Ct(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function tf(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r){if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e}else if(!e[St])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=cf(e.nextSibling),e===null)break}return null}function nf(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=cf(e.nextSibling),e===null))return null;return e}function rf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=cf(e.nextSibling),e===null))return null;return e}function af(e){return e.data===`$?`||e.data===`$~`}function of(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function sf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function cf(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var lf=null;function uf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return cf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function df(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function ff(e,t,n){switch(t=Bd(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function pf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Ct(e)}var mf=new Map,hf=new Set;function gf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var _f=T.d;T.d={f:vf,r:yf,D:Sf,C:Cf,L:wf,m:Tf,X:Df,S:Ef,M:Of};function vf(){var e=_f.f(),t=bu();return e||t}function yf(e){var t=Tt(e);t!==null&&t.tag===5&&t.type===`form`?ks(t):_f.r(e)}var bf=typeof document>`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Gt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),A(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Gt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Gt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Gt(n.imageSizes)+`"]`)):i+=`[href="`+Gt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),A(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Gt(r)+`"][href="`+Gt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),A(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Dt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);A(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Dt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),A(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Dt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),A(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ve.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Dt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=Dt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Dt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Gt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),A(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Gt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Gt(n.href)+`"]`);if(r)return t.instance=r,A(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),A(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,A(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),A(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,A(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),A(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Rf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function zf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Bf=null;function Vf(e,t,n){if(Bf===null){var r=new Map,i=Bf=new Map;i.set(n,r)}else i=Bf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[St]||a[k]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Hf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,A(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),A(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Kf===0&&(Kf=62500*Ld());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=Jf.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var Qf={$$typeof:S,Provider:null,Consumer:null,_currentValue:fe,_currentValue2:fe,_threadCount:0};function $f(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=ot(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ot(0),this.hiddenUpdates=ot(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function ep(e,t,n,r,i,a,o,s,c,l,u,d){return e=new $f(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=hi(3,null,null,t),e.current=a,a.stateNode=e,t=pa(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Ka(a),e}function tp(e){return e?(e=pi,e):pi}function np(e,t,n,r,i,a){i=tp(i),r.context===null?r.context=i:r.pendingContext=i,r=Ja(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=Ya(e,r,t),n!==null&&(hu(n,e,t),Xa(n,e,t))}function rp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ip(e,t){rp(e,t),(e=e.alternate)&&rp(e,t)}function ap(e){if(e.tag===13||e.tag===31){var t=ui(e,67108864);t!==null&&hu(t,e,67108864),ip(e,67108864)}}function op(e){if(e.tag===13||e.tag===31){var t=pu();t=ft(t);var n=ui(e,t);n!==null&&hu(n,e,t),ip(e,t)}}var sp=!0;function cp(e,t,n,r){var i=w.T;w.T=null;var a=T.p;try{T.p=2,up(e,t,n,r)}finally{T.p=a,w.T=i}}function lp(e,t,n,r){var i=w.T;w.T=null;var a=T.p;try{T.p=8,up(e,t,n,r)}finally{T.p=a,w.T=i}}function up(e,t,n,r){if(sp){var i=dp(r);if(i===null)wd(e,t,r,fp,n),Cp(e,r);else if(Tp(i,e,t,n,r))r.stopPropagation();else if(Cp(e,r),t&4&&-1<Sp.indexOf(e)){for(;i!==null;){var a=Tt(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=tt(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-Je(o);s.entanglements[1]|=c,o&=~c}rd(a),!(G&6)&&(tu=Ie()+500,id(0,!1))}}break;case 31:case 13:s=ui(a,2),s!==null&&hu(s,a,2),bu(),ip(a,2)}if(a=dp(r),a===null&&wd(e,t,r,fp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else wd(e,t,r,null,n)}}function dp(e){return e=ln(e),pp(e)}var fp=null;function pp(e){if(fp=null,e=wt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return fp=e,null}function mp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(Le()){case Re:return 2;case ze:return 8;case Be:case Ve:return 32;case He:return 268435456;default:return 32}default:return 32}}var hp=!1,gp=null,_p=null,vp=null,yp=new Map,bp=new Map,xp=[],Sp=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Cp(e,t){switch(e){case`focusin`:case`focusout`:gp=null;break;case`dragenter`:case`dragleave`:_p=null;break;case`mouseover`:case`mouseout`:vp=null;break;case`pointerover`:case`pointerout`:yp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:bp.delete(t.pointerId)}}function wp(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=Tt(t),t!==null&&ap(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Tp(e,t,n,r,i){switch(t){case`focusin`:return gp=wp(gp,e,t,n,r,i),!0;case`dragenter`:return _p=wp(_p,e,t,n,r,i),!0;case`mouseover`:return vp=wp(vp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return yp.set(a,wp(yp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,bp.set(a,wp(bp.get(a)||null,e,t,n,r,i)),!0}return!1}function Ep(e){var t=wt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,ht(e.priority,function(){op(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,ht(e.priority,function(){op(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Dp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=dp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);cn=r,n.target.dispatchEvent(r),cn=null}else return t=Tt(n),t!==null&&ap(t),e.blockedOn=n,!1;t.shift()}return!0}function Op(e,t,n){Dp(e)&&n.delete(t)}function kp(){hp=!1,gp!==null&&Dp(gp)&&(gp=null),_p!==null&&Dp(_p)&&(_p=null),vp!==null&&Dp(vp)&&(vp=null),yp.forEach(Op),bp.forEach(Op)}function Ap(e,n){e.blockedOn===n&&(e.blockedOn=null,hp||(hp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,kp)))}var jp=null;function Mp(e){jp!==e&&(jp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){jp===e&&(jp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(pp(r||n)===null)continue;break}var a=Tt(n);a!==null&&(e.splice(t,3),t-=3,Ds(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Np(e){function t(t){return Ap(t,e)}gp!==null&&Ap(gp,e),_p!==null&&Ap(_p,e),vp!==null&&Ap(vp,e),yp.forEach(t),bp.forEach(t);for(var n=0;n<xp.length;n++){var r=xp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<xp.length&&(n=xp[0],n.blockedOn===null);)Ep(n),n.blockedOn===null&&xp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[gt]||null;if(typeof a==`function`)o||Mp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[gt]||null)s=o.formAction;else if(pp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Mp(n)}}}function Pp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Fp(e){this._internalRoot=e}Ip.prototype.render=Fp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;np(n,pu(),e,t,null,null)},Ip.prototype.unmount=Fp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;np(e.current,2,null,e,null,null),bu(),t[_t]=null}};function Ip(e){this._internalRoot=e}Ip.prototype.unstable_scheduleHydration=function(e){if(e){var t=mt();e={blockedOn:null,target:e,priority:t};for(var n=0;n<xp.length&&t!==0&&t<xp[n].priority;n++);xp.splice(n,0,e),n===0&&Ep(e)}};var Lp=n.version;if(Lp!==`19.2.8`)throw Error(i(527,Lp,`19.2.8`));T.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=d(t),e=e===null?null:p(e),e=e===null?null:e.stateNode,e};var Rp={bundleType:0,version:`19.2.8`,rendererPackageName:`react-dom`,currentDispatcherRef:w,reconcilerVersion:`19.2.8`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var zp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!zp.isDisabled&&zp.supportsFiber)try{Ge=zp.inject(Rp),Ke=zp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Xs,s=Zs,c=Qs;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=ep(e,1,!1,null,null,n,r,null,o,s,c,Pp),e[_t]=t.current,Sd(e),new Fp(t)}})),g=o(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=c(g(),1),y=[`en`,`ko`,`de`,`fr`,`zh`,`zh-TW`,`ru`,`ja`,`tr`,`vi`,`pt`],b={observation:[`Identity-checked usage responses: JSON {json}, SSE {sse}; active bound streams: {streams}. Counts do not identify the sending process or prove composer recovery.`,`신원이 확인된 사용량 응답: JSON {json}, SSE {sse}; 연결된 검증 스트림: {streams}. 이 수치로 발신 프로세스나 입력창 복구를 확인할 수는 없습니다.`,`Nutzungsantworten mit geprüfter Identität: JSON {json}, SSE {sse}; aktive zugeordnete Streams: {streams}. Die Zahlen belegen weder den sendenden Prozess noch die Wiederherstellung der Eingabe.`,`Réponses d’usage à identité vérifiée : JSON {json}, SSE {sse} ; flux associés actifs : {streams}. Ces nombres ne prouvent ni le processus émetteur ni le rétablissement de la saisie.`,`身份已验证的用量响应:JSON {json},SSE {sse};活动绑定流:{streams}。这些计数无法证明发送进程或输入框已恢复。`,`身分已驗證的用量回應:JSON {json},SSE {sse};作用中的綁定串流:{streams}。這些計數無法證明傳送程序或輸入框已恢復。`,`Ответы об использовании с проверенной идентичностью: JSON {json}, SSE {sse}; активные связанные потоки: {streams}. Счётчики не подтверждают процесс-отправитель или восстановление ввода.`,`本人確認済みの使用量応答: JSON {json}、SSE {sse}。接続中の確認済みストリーム: {streams}。この数値だけでは送信プロセスや入力欄の復旧を確認できません。`,`Kimliği doğrulanmış kullanım yanıtları: JSON {json}, SSE {sse}; etkin bağlı akışlar: {streams}. Sayılar gönderen süreci veya giriş alanının düzeldiğini kanıtlamaz.`,`Phản hồi mức dùng đã xác minh danh tính: JSON {json}, SSE {sse}; luồng liên kết đang hoạt động: {streams}. Các số này không xác nhận tiến trình gửi hay ô nhập đã phục hồi.`,`Respostas de uso com identidade verificada: JSON {json}, SSE {sse}; fluxos vinculados ativos: {streams}. As contagens não identificam o processo que enviou nem comprovam a recuperação do campo de texto.`],cacheRefreshHint:[`Stopping correction does not immediately reset the Codex display. Codex must receive fresh usage data; this panel cannot confirm that refresh.`,`교정을 중단해도 Codex 화면이 즉시 원복되지는 않습니다. Codex가 새 사용량 데이터를 받아야 하며, 이 패널에서는 해당 갱신을 확인할 수 없습니다.`,`Das Stoppen der Korrektur setzt die Codex-Anzeige nicht sofort zurück. Codex muss neue Nutzungsdaten empfangen; dieses Panel kann die Aktualisierung nicht bestätigen.`,`L’arrêt de la correction ne rétablit pas immédiatement l’affichage de Codex. Codex doit recevoir de nouvelles données d’usage ; ce panneau ne peut pas confirmer cette actualisation.`,`停止修正不会立即恢复 Codex 界面。Codex 必须收到新的用量数据;此面板无法确认是否已刷新。`,`停止修正不會立即還原 Codex 畫面。Codex 必須收到新的用量資料;此面板無法確認是否已更新。`,`Остановка коррекции не восстанавливает отображение Codex мгновенно. Codex должен получить свежие данные об использовании; эта панель не может подтвердить обновление.`,`補正を停止しても Codex の表示はすぐには戻りません。Codex が新しい使用量データを受信する必要があり、このパネルでは更新を確認できません。`,`Düzeltmeyi durdurmak Codex görünümünü hemen eski haline getirmez. Codex yeni kullanım verilerini almalıdır; bu panel yenilemeyi doğrulayamaz.`,`Dừng hiệu chỉnh không khôi phục ngay giao diện Codex. Codex phải nhận dữ liệu sử dụng mới; bảng này không thể xác nhận việc làm mới.`,`Interromper a correção não redefine imediatamente a exibição do Codex. O Codex precisa receber dados de uso atualizados; este painel não consegue confirmar essa atualização.`],routingChanged:[`Native Codex routing no longer matches this OpenCodex process. Correction is off; review the integration before restarting observation.`,`Codex 기본 연결이 이 OpenCodex 프로세스와 일치하지 않습니다. 교정이 꺼졌습니다. 연동 설정을 확인한 뒤 관찰을 다시 시작하세요.`,`Die native Codex-Verbindung passt nicht mehr zu diesem OpenCodex-Prozess. Korrektur ist aus; Integration vor einem Neustart prüfen.`,`La connexion native Codex ne correspond plus à ce processus OpenCodex. La correction est désactivée ; vérifiez l’intégration avant de relancer l’observation.`,`原生 Codex 路由与此 OpenCodex 进程不再匹配。修正已关闭;重新观察前请检查集成。`,`原生 Codex 路由與此 OpenCodex 程序不再相符。修正已關閉;重新觀察前請檢查整合。`,`Маршрут Codex больше не соответствует этому процессу OpenCodex. Коррекция выключена; проверьте интеграцию перед перезапуском наблюдения.`,`Codex の接続先がこの OpenCodex プロセスと一致しません。補正はオフです。連携設定を確認してから観察を再開してください。`,`Codex yönlendirmesi artık bu OpenCodex süreciyle eşleşmiyor. Düzeltme kapalı; gözlemi yeniden başlatmadan önce entegrasyonu kontrol edin.`,`Định tuyến Codex không còn khớp tiến trình OpenCodex này. Hiệu chỉnh đã tắt; kiểm tra tích hợp trước khi quan sát lại.`,`O roteamento nativo do Codex não corresponde mais a este processo do OpenCodex. A correção está desativada; revise a integração antes de retomar a observação.`],autoStart:[`Resume observation when OpenCodex starts`,`OpenCodex 시작 시 관찰 자동 재개`,`Beobachtung beim Start von OpenCodex fortsetzen`,`Reprendre l’observation au démarrage d’OpenCodex`,`OpenCodex 启动时恢复观察`,`OpenCodex 啟動時恢復觀察`,`Возобновлять наблюдение при запуске OpenCodex`,`OpenCodex 起動時に観察を再開`,`OpenCodex başladığında gözlemi sürdür`,`Tiếp tục quan sát khi OpenCodex khởi động`,`Retomar a observação quando o OpenCodex iniciar`],autoStartHint:[`Applies at the next proxy start and requires an existing trusted certificate. Does not open Codex, register trust or start a correction trial. Turning this off does not stop a running service.`,`다음 프록시 시작부터 적용되며 이미 신뢰된 인증서가 필요합니다. Codex 실행·신뢰 등록·복구 시험을 자동 수행하지 않습니다. 끄더라도 실행 중인 서비스는 중지하지 않습니다.`,`Gilt ab dem nächsten Proxystart und erfordert ein bereits vertrauenswürdiges Zertifikat. Öffnet Codex nicht, registriert kein Vertrauen und startet keinen Korrekturtest. Ausschalten stoppt keinen laufenden Dienst.`,`S’applique au prochain démarrage du proxy et nécessite un certificat déjà approuvé. N’ouvre pas Codex, n’enregistre pas de confiance et ne lance pas d’essai. La désactivation n’arrête pas un service actif.`,`从下次代理启动起生效,需要已受信任的证书。不会打开 Codex、注册信任或启动修正试验。关闭此选项不会停止正在运行的服务。`,`從下次代理啟動起生效,需要已受信任的憑證。不會開啟 Codex、註冊信任或啟動修正試驗。關閉此選項不會停止執行中的服務。`,`Действует со следующего запуска прокси и требует доверенного сертификата. Не открывает Codex, не добавляет доверие и не запускает тест. Отключение не останавливает работающую службу.`,`次回のプロキシ起動時から適用され、信頼済み証明書が必要です。Codex の起動・信頼登録・補正テストは自動実行しません。オフにしても実行中のサービスは停止しません。`,`Sonraki proxy başlangıcında uygulanır; önceden güvenilen sertifika gerekir. Codex’i açmaz, güven kaydetmez veya deneme başlatmaz. Kapatmak çalışan hizmeti durdurmaz.`,`Áp dụng từ lần khởi động proxy tiếp theo và cần chứng chỉ đã tin cậy. Không mở Codex, đăng ký tin cậy hay chạy thử hiệu chỉnh. Tắt tùy chọn không dừng dịch vụ đang chạy.`,`Aplica-se na próxima inicialização do proxy e requer um certificado já confiável. Não abre o Codex, registra confiança nem inicia um teste de correção. Desativar esta opção não interrompe um serviço em execução.`],connectionUnavailable:[`The saved local connection could not be opened. Its address was not changed automatically.`,`저장된 로컬 연결을 열지 못했습니다. 연결 주소를 자동으로 변경하지 않았습니다.`,`Die gespeicherte lokale Verbindung konnte nicht geöffnet werden. Ihre Adresse wurde nicht automatisch geändert.`,`La connexion locale enregistrée n’a pas pu être ouverte. Son adresse n’a pas été modifiée automatiquement.`,`无法打开保存的本地连接。未自动更改其地址。`,`無法開啟儲存的本機連線。並未自動變更其位址。`,`Не удалось открыть сохранённое локальное соединение. Его адрес автоматически не менялся.`,`保存されたローカル接続を開けませんでした。接続先を自動変更していません。`,`Kaydedilen yerel bağlantı açılamadı. Adresi otomatik değiştirilmedi.`,`Không mở được kết nối cục bộ đã lưu. Địa chỉ không được tự động thay đổi.`,`Não foi possível abrir a conexão local salva. O endereço não foi alterado automaticamente.`],blockedByBuild:[`This Codex build has not been assessed. Compatibility correction is unavailable; refresh alone will not enable it.`,`현재 Codex 빌드는 아직 검증되지 않았습니다. 호환 교정을 사용할 수 없으며, 새로고침만으로 활성화되지는 않습니다.`,`Dieser Codex-Build wurde noch nicht geprüft. Die Kompatibilitätskorrektur ist nicht verfügbar; Aktualisieren allein aktiviert sie nicht.`,`Cette version de Codex n’a pas été évaluée. La correction est indisponible ; une actualisation seule ne l’activera pas.`,`此 Codex 版本尚未评估。兼容修正不可用,刷新不会启用它。`,`此 Codex 版本尚未評估。相容修正無法使用,重新整理不會啟用它。`,`Эта сборка Codex не проверена. Коррекция недоступна; обновление состояния её не включит.`,`この Codex ビルドは未検証です。互換補正は利用できず、状態更新だけでは有効になりません。`,`Bu Codex derlemesi henüz değerlendirilmedi. Uyumluluk düzeltmesi kullanılamaz; yenileme bunu açmaz.`,`Bản Codex này chưa được đánh giá. Chưa thể hiệu chỉnh; làm mới không tự bật tính năng.`,`Esta versão do Codex ainda não foi avaliada. A correção de compatibilidade não está disponível; atualizar o status não a habilitará.`],blockedByProxy:[`The outbound proxy setting is invalid or unsupported. Correct it before starting observation; no direct fallback was used.`,`외부 프록시 설정이 잘못되었거나 지원되지 않습니다. 관찰 시작 전에 설정을 확인하세요. 직접 연결로 우회하지 않았습니다.`,`Die Proxy-Einstellung ist ungültig oder nicht unterstützt. Vor dem Start korrigieren; keine direkte Ersatzverbindung wurde genutzt.`,`Le proxy sortant est invalide ou non pris en charge. Corrigez-le avant l’observation ; aucun repli direct n’a été utilisé.`,`出站代理设置无效或不受支持。观察前请修正;未回退到直接连接。`,`輸出代理設定無效或不受支援。觀察前請修正;並未改用直接連線。`,`Настройка прокси неверна или не поддерживается. Исправьте её до наблюдения; прямое подключение не использовалось.`,`送信プロキシ設定が無効または未対応です。観察開始前に修正してください。直接接続への切り替えは行っていません。`,`Çıkış proxy ayarı geçersiz veya desteklenmiyor. Gözlemden önce düzeltin; doğrudan bağlantıya geçilmedi.`,`Cấu hình proxy đầu ra không hợp lệ hoặc chưa hỗ trợ. Sửa trước khi quan sát; không chuyển sang kết nối trực tiếp.`,`A configuração do proxy de saída é inválida ou não é compatível. Corrija-a antes de iniciar a observação; não foi usado acesso direto como alternativa.`],closeApp:[`Save drafts, close Codex, then refresh status before trying again.`,`초안을 저장하고 Codex를 닫은 뒤 상태를 새로고침하여 재시도하세요.`,`Entwürfe speichern, Codex schließen und vor dem nächsten Versuch den Status aktualisieren.`,`Enregistrez les brouillons, fermez Codex, puis actualisez l’état avant de réessayer.`,`保存草稿并关闭 Codex,然后刷新状态再重试。`,`儲存草稿並關閉 Codex,然後重新整理狀態再重試。`,`Сохраните черновики, закройте Codex и обновите состояние перед повтором.`,`下書きを保存して Codex を閉じ、状態を更新してから再試行してください。`,`Taslakları kaydedip Codex’i kapatın; yeniden denemeden önce durumu yenileyin.`,`Lưu bản nháp, đóng Codex rồi làm mới trạng thái trước khi thử lại.`,`Salve os rascunhos, feche o Codex e atualize o status antes de tentar novamente.`],connectedUnavailable:[`These local controls are unavailable in OpenCodex managed client mode.`,`OpenCodex 관리형 클라이언트 모드에서는 이 로컬 제어를 사용할 수 없습니다.`,`Diese lokalen Steuerelemente sind im verwalteten Clientmodus von OpenCodex nicht verfügbar.`,`Ces commandes locales ne sont pas disponibles en mode client géré OpenCodex.`,`OpenCodex 托管客户端模式不提供这些本地控制。`,`OpenCodex 受管理用戶端模式不提供這些本機控制。`,`Эти локальные действия недоступны в управляемом клиентском режиме OpenCodex.`,`OpenCodex の管理対象クライアントモードでは、このローカル操作を利用できません。`,`Bu yerel denetimler OpenCodex yönetilen istemci modunda kullanılamaz.`,`Các điều khiển cục bộ này không có trong chế độ máy khách được quản lý của OpenCodex.`,`Estes controles locais não estão disponíveis no modo de cliente gerenciado do OpenCodex.`],title:[`Desktop compatibility`,`데스크톱 호환`,`Desktop-Kompatibilität`,`Compatibilité du bureau`,`桌面兼容`,`桌面相容`,`Совместимость приложения`,`デスクトップ互換性`,`Masaüstü uyumluluğu`,`Tương thích ứng dụng`,`Compatibilidade com o desktop`],description:[`Experimental Windows integration. Keeps the Codex login; setup alone does not enable correction.`,`실험적인 Windows 연동입니다. Codex 로그인을 유지하며, 준비만으로 교정이 켜지지 않습니다.`,`Experimentelle Windows-Integration. Die Codex-Anmeldung bleibt erhalten; die Einrichtung aktiviert keine Korrektur.`,`Intégration Windows expérimentale. La connexion Codex est conservée ; la préparation seule n’active pas la correction.`,`实验性 Windows 集成。保留 Codex 登录;仅完成准备不会启用修正。`,`實驗性 Windows 整合。保留 Codex 登入;僅完成準備不會啟用修正。`,`Экспериментальная интеграция Windows. Вход в Codex сохраняется; подготовка не включает коррекцию.`,`実験的な Windows 連携です。Codex のログインを保持し、準備だけでは補正を有効にしません。`,`Deneysel Windows entegrasyonu. Codex oturumu korunur; hazırlık tek başına düzeltmeyi açmaz.`,`Tích hợp Windows thử nghiệm. Giữ đăng nhập Codex; chuẩn bị không tự bật hiệu chỉnh.`,`Integração experimental com Windows. Mantém o login do Codex; apenas preparar não ativa a correção.`],refresh:[`Refresh status`,`상태 새로고침`,`Status aktualisieren`,`Actualiser l’état`,`刷新状态`,`重新整理狀態`,`Обновить состояние`,`状態を更新`,`Durumu yenile`,`Làm mới trạng thái`,`Atualizar status`],prepare:[`Prepare certificate`,`인증서 준비`,`Zertifikat vorbereiten`,`Préparer le certificat`,`准备证书`,`準備憑證`,`Подготовить сертификат`,`証明書を準備`,`Sertifikayı hazırla`,`Chuẩn bị chứng chỉ`,`Preparar certificado`],trust:[`Register trust`,`신뢰 등록`,`Vertrauen registrieren`,`Enregistrer la confiance`,`注册信任`,`註冊信任`,`Добавить доверие`,`信頼を登録`,`Güveni kaydet`,`Đăng ký tin cậy`,`Registrar confiança`],remove:[`Remove trust`,`신뢰 해제`,`Vertrauen entfernen`,`Retirer la confiance`,`移除信任`,`移除信任`,`Удалить доверие`,`信頼を解除`,`Güveni kaldır`,`Gỡ tin cậy`,`Remover confiança`],renew:[`Renew certificate`,`인증서 갱신`,`Zertifikat erneuern`,`Renouveler le certificat`,`更新证书`,`更新憑證`,`Обновить сертификат`,`証明書を更新`,`Sertifikayı yenile`,`Gia hạn chứng chỉ`,`Renovar certificado`],start:[`Start observation`,`관찰 시작`,`Beobachtung starten`,`Démarrer l’observation`,`开始观察`,`開始觀察`,`Начать наблюдение`,`観察を開始`,`Gözlemi başlat`,`Bắt đầu quan sát`,`Iniciar observação`],stop:[`Stop service`,`서비스 중지`,`Dienst stoppen`,`Arrêter le service`,`停止服务`,`停止服務`,`Остановить службу`,`サービスを停止`,`Hizmeti durdur`,`Dừng dịch vụ`,`Parar serviço`],launch:[`Open Codex`,`Codex 열기`,`Codex öffnen`,`Ouvrir Codex`,`打开 Codex`,`開啟 Codex`,`Открыть Codex`,`Codex を開く`,`Codex’i aç`,`Mở Codex`,`Abrir Codex`],observe:[`Return to observation`,`관찰 모드로 복귀`,`Zur Beobachtung zurück`,`Revenir à l’observation`,`返回观察`,`返回觀察`,`Вернуться к наблюдению`,`観察に戻る`,`Gözleme dön`,`Trở lại quan sát`,`Voltar à observação`],apply:[`Run 3-minute trial`,`3분 복구 시험`,`3-Minuten-Test starten`,`Essai de 3 minutes`,`运行 3 分钟试验`,`執行 3 分鐘試驗`,`Запустить тест на 3 минуты`,`3分間のテスト`,`3 dakikalık deneme`,`Thử nghiệm 3 phút`,`Executar teste de 3 minutos`],confirm:[`Confirm action`,`동작 확인`,`Aktion bestätigen`,`Confirmer l’action`,`确认操作`,`確認操作`,`Подтвердить действие`,`操作を確認`,`İşlemi onayla`,`Xác nhận thao tác`,`Confirmar ação`],acknowledge:[`I understand the scope of this action.`,`이 동작의 적용 범위를 이해했습니다.`,`Ich verstehe den Umfang dieser Aktion.`,`Je comprends la portée de cette action.`,`我了解此操作的范围。`,`我了解此操作的範圍。`,`Я понимаю область действия.`,`この操作の範囲を理解しました。`,`Bu işlemin kapsamını anlıyorum.`,`Tôi hiểu phạm vi thao tác này.`,`Entendo o escopo desta ação.`],risk:[`Trust applies to this Windows user and allows the local relay to handle chatgpt.com traffic. Stop the service and close Codex before renewal or removal. Stopping may interrupt active connections.`,`이 Windows 사용자에게 인증서 신뢰가 적용되어 로컬 릴레이가 chatgpt.com 트래픽을 처리합니다. 갱신·해제 전 서비스를 중지하고 Codex를 닫으세요. 중지하면 진행 중인 연결이 끊길 수 있습니다.`,`Das Vertrauen gilt für diesen Windows-Benutzer und erlaubt dem lokalen Relay, chatgpt.com-Verkehr zu verarbeiten. Vor Erneuerung oder Entfernung Dienst stoppen und Codex schließen. Ein Stopp kann aktive Verbindungen unterbrechen.`,`La confiance s’applique à cet utilisateur Windows et autorise le relais local à traiter le trafic chatgpt.com. Arrêtez le service et fermez Codex avant renouvellement ou suppression. L’arrêt peut interrompre les connexions actives.`,`信任适用于此 Windows 用户,允许本地中继处理 chatgpt.com 流量。更新或移除前请停止服务并关闭 Codex。停止可能中断活动连接。`,`信任適用於此 Windows 使用者,允許本機中繼處理 chatgpt.com 流量。更新或移除前請停止服務並關閉 Codex。停止可能中斷使用中的連線。`,`Доверие действует для этого пользователя Windows и позволяет локальному ретранслятору обрабатывать трафик chatgpt.com. Перед обновлением или удалением остановите службу и закройте Codex. Остановка может прервать соединения.`,`信頼はこの Windows ユーザーに適用され、ローカルリレーが chatgpt.com の通信を処理します。更新・解除前にサービスを停止し Codex を閉じてください。停止すると接続が中断される場合があります。`,`Güven bu Windows kullanıcısı için geçerlidir ve yerel aktarıcının chatgpt.com trafiğini işlemesine izin verir. Yenilemeden veya kaldırmadan önce hizmeti durdurup Codex’i kapatın. Durdurma etkin bağlantıları kesebilir.`,`Tin cậy áp dụng cho người dùng Windows này, cho phép bộ chuyển tiếp cục bộ xử lý lưu lượng chatgpt.com. Dừng dịch vụ và đóng Codex trước khi gia hạn hoặc gỡ. Dừng có thể ngắt kết nối đang dùng.`,`A confiança se aplica a este usuário do Windows e permite que o relay local processe o tráfego de chatgpt.com. Pare o serviço e feche o Codex antes de renovar ou remover o certificado. Parar pode interromper conexões ativas.`],trialRisk:[`For up to 3 minutes, two UI flags are adjusted for the whole signed-in account, across models. Usage, credits and server limits remain unchanged. Observed exhaustion is required; a response does not prove the composer recovered.`,`최대 3분 동안 모델 구분 없이 로그인 계정 전체의 UI 표시 두 항목을 교정합니다. 사용량·크레딧·서버 한도는 유지됩니다. 실제 소진 관찰이 필요하며, 응답 생성만으로 입력창 복구가 입증되지는 않습니다.`,`Bis zu 3 Minuten werden zwei UI-Werte für das gesamte angemeldete Konto modellübergreifend angepasst. Nutzung, Guthaben und Serverlimits bleiben unverändert. Eine beobachtete Erschöpfung ist erforderlich; eine Antwort beweist keine Wiederherstellung der Eingabe.`,`Pendant 3 minutes au maximum, deux indicateurs d’interface sont ajustés pour tout le compte connecté, tous modèles confondus. Usage, crédits et limites serveur restent inchangés. Un épuisement observé est requis ; une réponse ne prouve pas le rétablissement de la saisie.`,`最多 3 分钟内,调整整个已登录账户的两个界面标志,影响所有模型。用量、余额和服务器限制不变。需要观察到额度耗尽;收到响应不代表输入框已恢复。`,`最多 3 分鐘內,調整整個已登入帳戶的兩個介面旗標,影響所有模型。用量、點數和伺服器限制不變。必須觀察到額度耗盡;收到回應不代表輸入框已恢復。`,`Не более 3 минут корректируются два флага интерфейса всего аккаунта для всех моделей. Использование, кредиты и лимиты сервера не меняются. Требуется наблюдаемое исчерпание; ответ не доказывает восстановление ввода.`,`最大3分間、ログイン中のアカウント全体でモデルを区別せず2つのUIフラグを補正します。使用量・クレジット・サーバー制限は変更しません。上限到達の観察が必要で、応答だけでは入力欄の復旧を証明できません。`,`En fazla 3 dakika boyunca tüm modellerde oturum açmış hesabın iki arayüz bayrağı düzeltilir. Kullanım, krediler ve sunucu sınırları değişmez. Kotanın tükendiğinin gözlenmesi gerekir; yanıt, giriş alanının düzeldiğini kanıtlamaz.`,`Trong tối đa 3 phút, điều chỉnh hai cờ giao diện của toàn bộ tài khoản đã đăng nhập, cho mọi mô hình. Mức dùng, tín dụng và giới hạn máy chủ không đổi. Cần quan sát thấy hết hạn mức; phản hồi không chứng minh ô nhập đã phục hồi.`,`Por até 3 minutos, dois indicadores da interface são ajustados para toda a conta conectada, em todos os modelos. Uso, créditos e limites do servidor permanecem inalterados. É necessário observar o esgotamento; uma resposta não comprova que o campo de texto foi recuperado.`],error:[`Completion could not be confirmed. Refresh status before retrying.`,`완료 여부를 확인하지 못했습니다. 재시도 전에 상태를 새로고침하세요.`,`Abschluss nicht bestätigt. Vor einem erneuten Versuch Status aktualisieren.`,`Fin non confirmée. Actualisez l’état avant de réessayer.`,`无法确认是否完成。重试前请刷新状态。`,`無法確認是否完成。重試前請重新整理狀態。`,`Завершение не подтверждено. Обновите состояние перед повтором.`,`完了を確認できませんでした。再試行前に状態を更新してください。`,`Tamamlandığı doğrulanamadı. Yeniden denemeden önce durumu yenileyin.`,`Chưa xác nhận hoàn tất. Làm mới trạng thái trước khi thử lại.`,`Não foi possível confirmar a conclusão. Atualize o status antes de tentar novamente.`],done:[`Action confirmed. Status refreshed.`,`동작을 확인하고 상태를 새로고침했습니다.`,`Aktion bestätigt. Status aktualisiert.`,`Action confirmée. État actualisé.`,`操作已确认,状态已刷新。`,`操作已確認,狀態已重新整理。`,`Действие подтверждено. Состояние обновлено.`,`操作を確認し、状態を更新しました。`,`İşlem doğrulandı. Durum yenilendi.`,`Đã xác nhận thao tác và làm mới trạng thái.`,`Ação confirmada. Status atualizado.`],certificate:[`Certificate`,`인증서`,`Zertifikat`,`Certificat`,`证书`,`憑證`,`Сертификат`,`証明書`,`Sertifika`,`Chứng chỉ`,`Certificado`],runtime:[`Service`,`서비스`,`Dienst`,`Service local`,`服务`,`服務`,`Служба`,`サービス`,`Hizmet`,`Dịch vụ`,`Serviço`],expiry:[`Expires`,`만료`,`Ablauf`,`Expiration`,`到期`,`到期`,`Истекает`,`有効期限`,`Bitiş`,`Hết hạn`,`Expira`],renewalDue:[`Certificate renewal is due soon.`,`인증서 갱신 시기가 다가옵니다.`,`Zertifikat bald erneuern.`,`Le certificat doit bientôt être renouvelé.`,`证书即将需要更新。`,`憑證即將需要更新。`,`Скоро потребуется обновить сертификат.`,`証明書の更新時期が近づいています。`,`Sertifika yakında yenilenmeli.`,`Chứng chỉ sắp cần gia hạn.`,`O certificado precisa ser renovado em breve.`],unsupported:[`Available on supported Windows installations only.`,`지원되는 Windows 설치에서만 사용할 수 있습니다.`,`Nur für unterstützte Windows-Installationen.`,`Disponible uniquement sur les installations Windows prises en charge.`,`仅适用于受支持的 Windows 安装。`,`僅適用於受支援的 Windows 安裝。`,`Доступно только для поддерживаемых установок Windows.`,`対応する Windows 環境でのみ利用できます。`,`Yalnızca desteklenen Windows kurulumlarında kullanılabilir.`,`Chỉ dùng được trên bản cài Windows được hỗ trợ.`,`Disponível apenas em instalações Windows compatíveis.`],localOnly:[`Changes require this computer’s local dashboard. Save drafts and close Codex before launching it here.`,`변경은 이 컴퓨터의 로컬 대시보드에서 가능합니다. 여기서 앱을 실행하기 전에 초안을 저장하고 Codex를 닫으세요.`,`Änderungen erfordern das lokale Dashboard dieses Computers. Vor dem Start Entwürfe speichern und Codex schließen.`,`Les modifications nécessitent le tableau de bord local de cet ordinateur. Enregistrez les brouillons et fermez Codex avant de le lancer ici.`,`更改需要此计算机的本地仪表板。在此启动前,请保存草稿并关闭 Codex。`,`變更需要此電腦的本機儀表板。在此啟動前,請儲存草稿並關閉 Codex。`,`Изменения требуют локальной панели этого компьютера. Сохраните черновики и закройте Codex перед запуском здесь.`,`変更にはこのPCのローカルダッシュボードが必要です。ここから起動する前に下書きを保存し Codex を閉じてください。`,`Değişiklikler bu bilgisayarın yerel panosunu gerektirir. Buradan açmadan önce taslakları kaydedip Codex’i kapatın.`,`Thay đổi cần bảng điều khiển cục bộ của máy này. Lưu bản nháp và đóng Codex trước khi mở tại đây.`,`As alterações exigem o painel local deste computador. Salve os rascunhos e feche o Codex antes de abri-lo aqui.`],reconnectHint:[`A running service does not confirm that Codex is connected. After a normal app launch or update, close Codex and use Open Codex here to restore the managed connection. An unreviewed app version cannot run a correction trial.`,`서비스 실행만으로 Codex 연결이 확인되지는 않습니다. 앱을 일반 실행하거나 업데이트한 뒤에는 Codex를 닫고 여기의 Codex 열기로 관리 연결을 복구하세요. 검토되지 않은 앱 버전에서는 교정 시험이 차단됩니다.`,`Ein laufender Dienst bestätigt keine Codex-Verbindung. Nach normalem Start oder Update Codex schließen und hier über Codex öffnen die verwaltete Verbindung wiederherstellen. Eine ungeprüfte App-Version kann keinen Korrekturtest ausführen.`,`Un service actif ne confirme pas la connexion de Codex. Après un lancement normal ou une mise à jour, fermez Codex puis ouvrez-le ici pour rétablir la connexion gérée. Une version non vérifiée ne peut pas lancer d’essai de correction.`,`服务运行不代表 Codex 已连接。正常启动或更新应用后,请关闭 Codex 并使用此处的打开 Codex 恢复受管连接。未经验证的应用版本无法运行修正试验。`,`服務執行不代表 Codex 已連線。一般啟動或更新應用程式後,請關閉 Codex 並使用此處的開啟 Codex 恢復受管理連線。未經驗證的應用程式版本無法執行修正試驗。`,`Работа службы не подтверждает подключение Codex. После обычного запуска или обновления закройте Codex и откройте его здесь для восстановления управляемого подключения. Непроверенная версия не допускается к пробной корректировке.`,`サービスの稼働だけでは Codex の接続を確認できません。通常起動や更新後は Codex を閉じ、ここから開いて管理接続を復元してください。未検証のアプリ版では補正試験を実行できません。`,`Hizmetin çalışması Codex bağlantısını doğrulamaz. Normal açılış veya güncellemeden sonra Codex’i kapatıp yönetilen bağlantıyı geri getirmek için buradan açın. İncelenmemiş uygulama sürümü düzeltme denemesini çalıştıramaz.`,`Dịch vụ chạy không xác nhận Codex đã kết nối. Sau khi mở ứng dụng bình thường hoặc cập nhật, hãy đóng Codex rồi mở từ đây để khôi phục kết nối được quản lý. Phiên bản chưa được kiểm tra không thể chạy thử điều chỉnh.`,`Um serviço em execução não confirma que o Codex está conectado. Após abrir o app normalmente ou atualizá-lo, feche o Codex e use Abrir Codex aqui para restaurar a conexão gerenciada. Uma versão do app ainda não avaliada não pode executar um teste de correção.`],assessedPackage:[`Verified package version`,`검증된 패키지 버전`,`Geprüfte Paketversion`,`Version du paquet vérifiée`,`已验证的包版本`,`已驗證的套件版本`,`Проверенная версия пакета`,`検証済みパッケージバージョン`,`Doğrulanan paket sürümü`,`Phiên bản gói đã xác minh`,`Versão do pacote verificada`],observedPackage:[`Last observed package version`,`마지막으로 관측한 패키지 버전`,`Zuletzt erkannte Paketversion`,`Dernière version du paquet observée`,`上次检测到的包版本`,`上次偵測到的套件版本`,`Последняя обнаруженная версия пакета`,`最後に検出されたパッケージバージョン`,`Son algılanan paket sürümü`,`Phiên bản gói quan sát lần cuối`,`Última versão do pacote observada`],lastObservedAt:[`Observed at`,`관측 시각`,`Erkannt am`,`Observée le`,`检测时间`,`偵測時間`,`Время проверки`,`検出日時`,`Algılanma zamanı`,`Thời điểm quan sát`,`Observada em`],noObservedPackage:[`Not detected`,`감지되지 않음`,`Nicht erkannt`,`Non détectée`,`未检测到`,`未偵測到`,`Не обнаружена`,`未検出`,`Algılanmadı`,`Không phát hiện`,`Não detectada`]};function x(e){let t=y.indexOf(e);return Object.fromEntries(Object.entries(b).map(([e,n])=>[`desktopCompat.${e}`,n[t]]))}var ee={"pws.completion.title":`Model completion test`,"pws.completion.model":`Model to test`,"pws.completion.choose":`Choose a model`,"pws.completion.run":`Test model`,"pws.completion.confirm":`Test {model} on {provider}? This sends a real completion request with an output cap of 32 tokens. It consumes quota and may incur costs.`,"pws.completion.failed":`Model test failed`,"pws.completion.ok":`Model test succeeded`,"pws.completion.notApplicable":`Test not applicable`,"pws.completion.ttft":`Time to first token`,"pws.completion.total":`Total latency`,"pws.completion.reported":`Upstream reported {upstream} for {model}`,"pws.completion.unreported":`Upstream did not report a model for {model}`,"pws.completion.identity":`Model metadata is reported by the upstream provider and does not verify the actual model's identity.`,"pws.completion.match":`Match`,"pws.completion.mismatch":`Mismatch`,"pws.completion.unknown":`Unknown`,"pws.completion.missing_metadata":`The upstream response contains no model metadata.`,"pws.completion.conflicting_metadata":`The upstream response reports conflicting model metadata.`,"pws.completion.disabled":`This provider is disabled.`,"pws.completion.forward_auth":`Forwarded authentication is not supported.`,"pws.completion.oauth_auth":`OAuth authentication is not supported.`,"pws.completion.unsupported_adapter":`This adapter is not supported.`,"pws.completion.unsupported_transport":`This transport configuration is not supported.`,"pws.completion.tls_profile":`A custom TLS profile is configured.`,"pws.completion.upstream_http_version":`An upstream HTTP version is configured.`,"pws.completion.request_pacing":`Request pacing is enabled.`,"pws.completion.custom_executor_egress":`A custom fetch executor with a provider proxy cannot be preserved.`,"reasoningRetention.advanced":`Advanced settings`,"reasoningRetention.title":`Reasoning retention`,"reasoningRetention.enable":`Enable reasoning retention`,"reasoningRetention.description":`Off by default. When enabled for routed v1/v2 compaction with a readable summary, reasoning within the smaller of the context-window percentage and token cap returns as historical context alongside the summary. Above the limit, it is archived locally and replaced by a path note. Defaults when enabled: 20% and 100,000 tokens. Private provider reasoning is not decrypted; opaque compaction output stays unchanged.`,"reasoningRetention.storageHint":`Enabling can preserve plaintext reasoning in local history and archives. Completed archives have no total-size limit or expiry; delete unneeded archives manually.`,"reasoningRetention.percent":`Context window (%)`,"reasoningRetention.tokens":`Token cap`,"reasoningRetention.reset":`Reset and turn off`,"reasoningRetention.invalid":`Enter a percentage greater than 0 and at most 100, and a positive whole token count.`,"reasoningRetention.loadFailed":`Could not load reasoning retention settings.`,"reasoningRetention.saveFailed":`Could not save reasoning retention settings.`,"reasoningRetention.saved":`Reasoning retention settings saved.`,"nativeReasoningRetention.title":`Native OpenAI reasoning retention`,"nativeReasoningRetention.description":`Only for native requests to the official ChatGPT backend, including actual target changes in Combos and account pools. Allows old encrypted reasoning to be replayed; reuse depends on the backend. Both options are off by default.`,"nativeReasoningRetention.modelSwitch":`Keep encrypted reasoning when switching models`,"nativeReasoningRetention.accountSwitch":`Keep encrypted reasoning when switching accounts (experimental)`,"nativeReasoningRetention.accountHint":`Preserving ciphertext does not share stored response IDs or files across accounts. A successful request does not prove reasoning reuse. Native compaction handling is unchanged.`,"nativeReasoningRetention.reset":`Restore defaults`,"nativeReasoningRetention.loadFailed":`Could not load native reasoning settings.`,"nativeReasoningRetention.saveFailed":`Could not save native reasoning settings.`,"nativeReasoningRetention.saved":`Native reasoning settings saved.`,...x(`en`),"claude.tierDefaults.unset":`Unset (keep existing Claude setting)`,"claude.tierDefaults.recovery":`Apply stopped and automatic restore failed. Check the backup below before retrying.`,"claude.tierDefaults.title":`CLI tier defaults`,"claude.tierDefaults.preview":`Preview Claude settings`,"claude.tierDefaults.apply":`Apply to Claude settings`,"claude.tierDefaults.applied":`Claude settings match the saved defaults.`,"claude.tierDefaults.failed":`Could not apply defaults. Preview again and check Claude settings.`,"sidecar.pool":`Pool`,"sidecar.poolCurrent":`Current request's pool`,"sidecar.poolA":`Anthropic`,"sidecar.poolB":`Anthropic · Pool 2`,"sidecar.poolMixed":`This explicit selection may use a different pool from the main request.`,"provider.name.anthropic2":`Anthropic · Pool 2`,"nav.claude":`Claude`,"claude.pageSub":`OpenCodex routing and settings for Claude Code.`,"pws.anthropicAccountThresholdHint":`Overrides the Claude pool default. 0 disables usage-based switching only for this account; pause and rate-limit recovery still apply.`,"kiroLogin.title":`Sign in to Kiro`,"kiroLogin.chooseMethod":`Choose a sign-in method`,"kiroLogin.cli":`Kiro CLI`,"kiroLogin.builderId":`Builder ID`,"kiroLogin.google":`Google`,"kiroLogin.github":`GitHub`,"kiroLogin.addDescription":`Add a Kiro account with a device sign-in, or import a Kiro CLI session.`,"kiroLogin.loginDescription":`Sign in with a device, or import your Kiro CLI session.`,"kiroLogin.starting":`Starting device sign-in…`,"kiroLogin.pending":`Enter this code on the verification page, then wait here.`,"kiroLogin.done":`Kiro account added.`,"kiroLogin.expired":`Device sign-in expired. Try again.`,"kiroLogin.ended":`Login ended. Check the account list.`,"kiroLogin.failed":`Kiro sign-in failed.`,"kiroLogin.startFailed":`Could not start Kiro sign-in. Try again.`,"kiroLogin.tryAgain":`Try again`,"kiroLogin.copyCode":`Copy code`,"kiroLogin.copied":`Code copied`,"kiroLogin.copyUnavailable":`Copy unavailable`,"kiroLogin.openVerification":`Open verification page`,"kiroLogin.unexpectedHost":`Unexpected verification host. Check the address before copying it.`,"kiroLogin.duplicate":`This Kiro profile is already in the account list.`,"kiroLogin.manualReview":`Manual review may be needed for this account.`,"kiroSelection.suspended":`Not auto-selected: suspended`,"kiroSelection.quotaExhausted":`Not auto-selected: quota exhausted`,"kiroSelection.cooldown":`Not auto-selected: cooling down`,"kiroSelection.generic":`Not auto-selected`,"tray.updated":`Updated {time} · every 60s`,"tray.today":`Today`,"tray.input":`Input`,"tray.output":`Output`,"tray.cost":`Cost · est.`,"tray.cached":`{percent} cached`,"usage.incomplete":`Some usage records could not be included. Counts, dates, and rankings reflect readable records only.`,"models.pickerOrder.usageIncomplete":`Cannot save most-used order because usage history is incomplete. Choose another order or repair the history first.`,"api.attribution.noRecordedUse":`No use in readable records`,"audio.dictation":`Dictation`,"audio.liveVoice":`Live Voice`,"audio.configured":`Configured, not verified`,"audio.notConfigured":`Not configured`,"audio.unknown":`Audio metadata unavailable`,"audio.key":`OpenCodex data key`,"audio.file":`Audio file (25 MB max)`,"audio.transcribe":`Transcribe`,"audio.transcribing":`Transcribing...`,"audio.transcript":`Transcript`,"audio.emptyTranscript":`No speech detected`,"audio.examples":`API examples`,"audio.streaming":`Streaming dictation`,"audio.connect":`Check connection`,"audio.disconnect":`Disconnect`,"audio.events":`Session events`,"audio.state.idle":`Not checked`,"audio.state.connecting":`Connecting...`,"audio.state.connected":`Session ready`,"audio.state.disconnected":`Disconnected`,"audio.state.failed":`Connection failed`,"audio.error.auth":`Key rejected. Check your OpenCodex data key.`,"audio.error.unavailable":`Upstream unavailable. Check the provider account.`,"audio.error.rateLimit":`Rate limit reached. Try again later.`,"audio.error.invalid":`Request rejected. Check the file and provider.`,"audio.error.size":`Choose a nonempty audio file up to 25 MB.`,"audio.error.network":`Connection failed. Check the proxy address.`,"audio.error.timeout":`The request timed out. Try again.`,"audio.error.protocol":`Unexpected audio response. Check provider compatibility.`,"models.pickerOrder.label":`Picker order`,"models.pickerOrder.default":`Default`,"models.pickerOrder.alphabetical":`A–Z by model`,"models.pickerOrder.provider":`Group by provider`,"models.pickerOrder.mostUsed":`Most used snapshot`,"models.pickerOrder.custom":`Custom order`,"models.pickerOrder.apply":`Apply order`,"models.pickerOrder.applying":`Applying…`,"models.pickerOrder.saved":`Picker order saved. Reopen clients that still show the old catalog.`,"models.pickerOrder.pending":`Order saved; catalog refresh is pending.`,"models.pickerOrder.usageFailed":`Could not load model usage.`,"models.pickerOrder.loadFailed":`Could not load picker settings.`,"models.pickerOrder.retry":`Retry`,"models.pickerOrder.hint":`Saves routed order for Codex and Claude discovery. Featured/native bands stay in place; Most used is a snapshot. Native advertised choices may change.`,"models.fastRows.title":`Show Fast model rows`,"models.fastRows.desc":`Adds eligible “Model Fast” selectors to external client model pickers. This does not change reasoning-effort options on the base model. Saving refreshes connected integrations when possible; otherwise refresh the integration or client catalog.`,"models.fastRows.refreshHint":`Saved. Catalog refresh is pending.`,"models.fastRows.enabled":`Fast model rows enabled.`,"models.fastRows.disabled":`Fast model rows disabled.`,"models.fastRows.loadFailed":`Could not load Fast rows setting.`,"models.fastRows.updateFailed":`Failed to update Fast rows setting.`,"codexAuth.quotaAutoRefreshAllHint":`Controls the supported 5-hour and weekly windows for all current accounts together. In Pool mode, a small request is sent after each reset and uses quota.`,"codexAuth.quotaAutoRefreshMixed":`Some windows are enabled.`,"codexAuth.quotaAutoRefreshEmpty":`No supported quota windows. Refresh account quotas to check again.`,"codexAuth.quotaAutoRefreshLoadFailed":`Could not load activation settings. Retry to check their state.`,"codexAuth.quotaAutoRefreshPartial":`Some settings could not be saved. Retry to finish the same change.`,"nav.dashboard":`Dashboard`,"uptime.day":`d`,"uptime.hour":`h`,"uptime.minute":`m`,"uptime.second":`s`,"nav.startup":`Startup`,"nav.providers":`Providers`,"nav.models":`Models`,"nav.combos":`Combos`,"nav.subagents":`Subagents`,"nav.advisor":`Advisor`,"advisor.description":`An independent expert model that reviews the worker's task and returns advice. OpenCodex owns the consultation: the worker can call the synthetic advisor tool, and policy preflight additionally attempts one automatic consultation per task without any worker cooperation — firing once the task has produced orientation evidence (an assistant tool call or a tool result after the latest user message). The attempt is deduplicated per task for clients that carry a stable conversation identity; a client without one skips that dedup and may receive the attempt again on every newly eligible request.`,"advisor.enabled":`Advisor enabled`,"advisor.model":`Expert model`,"advisor.modelClear":`Clear model`,"advisor.modelUnavailable":`Current model is not selectable; its saved identifier is preserved.`,"advisor.modelHint":`Choose a model that can return text advice. Catalog identifiers are saved exactly as listed.`,"advisor.modelsLoadFailed":`Could not load models. Your current selection is preserved.`,"advisor.modelsEmpty":`No selectable models. Enable a provider and model, then retry.`,"advisor.effort":`Reasoning`,"advisor.policy":`Policy`,"advisor.policy.manual":`Manual — only when the worker asks`,"advisor.policy.preflight":`Preflight — automatic consultation attempt once orientation evidence exists`,"advisor.policy.adaptive":`Adaptive — orientation and failed-repair consultations`,"advisor.taskLimit":`Consultations per task`,"advisor.adaptiveNote":`Automatic consultations require a stable conversation identity. Initial advice follows orientation evidence (a tool call or result). Failed-repair advice requires a failed validation, a completed file edit, then a new failure of the same command in the same directory; repeated failures alone do not qualify. Manual calls also consume the task budget; reservations expire after 24 hours and survive proxy restarts.`,"advisor.activity.title":`Recent advisor activity`,"advisor.activity.note":`Up to 100 records from this process, retained for 24 hours. No task text or advice is stored. Reasoning shows requested → adapter-mapped effort; unreported does not confirm support. Tokens show reported input / output. Advice adoption and exact cost are not inferred.`,"advisor.activity.empty":`No consultations recorded yet.`,"advisor.activity.failed":`Could not load advisor activity.`,"advisor.activity.started":`Started`,"advisor.activity.trigger":`Reason / status`,"advisor.activity.tokens":`Input / output tokens`,"advisor.activity.duration":`Duration`,"advisor.activity.trigger.manual":`Worker request`,"advisor.activity.trigger.preflight":`Initial consultation`,"advisor.activity.trigger.repair_failure":`Repair failed again`,"advisor.activity.status.running":`Running`,"advisor.activity.status.ok":`Advice returned`,"advisor.activity.status.failed":`Failed`,"advisor.activity.status.cancelled":`Cancelled`,"advisor.activity.status.blocked":`Blocked`,"advisor.timeout":`Timeout (ms)`,"advisor.save":`Save advisor settings`,"advisor.saved":`Advisor settings saved.`,"advisor.loadFailed":`Could not load advisor settings. Is the proxy running?`,"advisor.warning.noModel":`Enabled but no expert model is configured yet — the Advisor cannot run until a model is configured.`,"advisor.notices":`Cost and data-sharing notices`,"advisor.costNote":`Consultations are real extra model calls. Each one appears in usage under the advisor model, not the worker model.`,"advisor.privacyNote":`Cross-provider notice: consultations send the task conversation and tool results to the configured advisor provider, which may differ from the worker's provider. Task content is not secret-redacted — do not enable the advisor on tasks whose content you would not share with that provider. Turning Advisor on does not itself record this consent.`,"advisor.disclosure":`A consultation may send the latest user task, parsed user/assistant/developer text, tool calls and arguments, tool results, the worker tool catalog, worker identity, the configured Advisor model, and an optional focus question. OpenCodex does not insert provider API keys, authorization headers, OAuth tokens, backend secrets, process environment, or hidden chain-of-thought. Task content is not secret-redacted: a pasted key, a secret in a file, or a token printed by a tool can be sent. The Advisor provider may differ from the worker provider.`,"advisor.consent.label":`I understand that Advisor consultations may send this task's conversation, tool calls, and tool results to the configured Advisor provider, which may differ from the worker provider. Task content is not secret-redacted.`,"advisor.consent.required":`Advisor is not runnable until context-sharing consent is recorded. No task content is sent without it.`,"nav.logs":`Logs & Debug`,"nav.usage":`Usage`,"common.github":`GitHub`,"sidebar.star":`Star on GitHub`,"sidebar.starred":`Starred on GitHub`,"sidebar.starUnauthenticated":`Open GitHub to star (gh CLI is not signed in)`,"sidebar.starFailed":`Could not star through gh. Opening GitHub instead.`,"onboarding.star.title":`Enjoying OpenCodex?`,"onboarding.star.body":`OpenCodex is free and open source. A star on GitHub helps other developers find it and keeps the project going.`,"onboarding.star.cta":`Star on GitHub`,"onboarding.star.ghHint":`Stars the repository with your signed-in GitHub CLI (gh). Nothing is starred until you click.`,"onboarding.star.browserHint":`Opens the repository on github.com in your browser.`,"onboarding.star.openPage":`Open the GitHub page instead`,"onboarding.star.later":`Maybe later`,"onboarding.star.failed":`Couldn't star it with the GitHub CLI (gh). You can star it on the GitHub page instead.`,"onboarding.star.starring":`Starring…`,"onboarding.star.thanks":`Thanks for the star!`,"onboarding.star.thanksBody":`It really helps. The GitHub link in the sidebar takes you back to the repository any time.`,"onboarding.star.done":`Done`,"sidebar.updateAvailable":`Update available: {version}`,"sidebar.checkUpdate":`Check for updates`,"sidebar.desktopUpdate":`Open desktop updates`,"sidebar.terminalCommand":`Terminal command`,"common.save":`Save`,"common.saving":`Saving…`,"common.cancel":`Cancel`,"common.discard":`Discard`,"common.delete":`Delete`,"common.close":`Close`,"common.ok":`OK`,"common.remove":`Remove`,"common.loading":`Loading…`,"common.retry":`Retry`,"common.undo":`Undo`,"auth.adminTokenTitle":`OpenCodex admin token (OPENCODEX_ADMIN_AUTH_TOKEN)`,"auth.adminAccountLabel":`Account`,"auth.adminTokenFieldLabel":`Admin token`,"auth.adminTokenRejected":`That admin token was rejected. Check it and try again.`,"auth.adminTokenUnavailable":`The admin token could not be verified. Try again.`,"auth.adminTokenHelp":`This is the OpenCodex management admin token, not a provider API key. The proxy writes it to ~/.opencodex/admin-api-token (or $OPENCODEX_HOME/admin-api-token) on first start, and OPENCODEX_ADMIN_AUTH_TOKEN overrides it.`,"auth.adminTokenDocsLink":`How to find it`,"app.logoAria":`opencodex logo`,"app.claudeOn":`Claude ON`,"app.claudeOff":`Claude OFF`,"theme.label":`Theme`,"theme.light":`Light`,"theme.dark":`Dark`,"theme.system":`System`,"zoom.label":`Zoom`,"zoom.out":`Zoom out`,"zoom.in":`Zoom in`,"zoom.reset":`Reset zoom to 100%`,"lang.label":`Language`,"lang.nativeName":`English`,"provider.name.commandCodeAuth":`Command Code - Auth`,"provider.name.commandCodeApi":`Command Code - API`,"provider.name.orcaRouterApi":`OrcaRouter - API`,"provider.name.orcaRouterAuth":`OrcaRouter - Auth`,"provider.name.volcengine":`Volcengine Ark`,"provider.name.volcengineCodingPlan":`Volcengine Ark Coding Plan`,"provider.name.volcengineAgentPlan":`Volcengine Ark Agent Plan`,"errorBoundary.title":`Page failed to load`,"errorBoundary.message":`This section hit a rendering error. Reload it to try again.`,"errorBoundary.details":`Error`,"errorBoundary.reload":`Reload`,"routing.title":`Routing Intelligence (beta)`,"routing.subtitle":`Policy profiles, dry-run evaluation, and source-backed routing analytics.`,"routing.loadFailed":`Could not load routing data`,"routing.empty":"No routing profiles configured. Add `routingProfiles` to config.json.","routing.revision":`rev`,"routing.detail":`Profile`,"routing.createProfile":`Create profile`,"routing.dryRunError":`Dry-run failed (HTTP {status})`,"routing.removeConfirm":`Remove profile {id}?`,"routing.unknownEvidence.allow":`allow`,"routing.unknownEvidence.penalize":`penalize`,"routing.unknownEvidence.exclude":`exclude`,"routing.removeCandidate":`Remove candidate {provider}/{model}`,"routing.candidates":`Candidates`,"routing.require":`Hard requirements`,"routing.optimize":`Optimization weights`,"routing.limits":`Limits`,"routing.unknownEvidence":`Unknown evidence policy`,"routing.compatibility.title":`Compatibility policy`,"routing.compatibility.enabled":`Require Compatibility Lab evidence`,"routing.compatibility.requiredSuites":`Required suites`,"routing.compatibility.loadingCatalog":`Loading lab catalog…`,"routing.compatibility.catalogUnavailable":`Lab catalog unavailable — enter suite ids manually in config.json.`,"routing.compatibility.layer.protocol_conformance":`Protocol conformance`,"routing.compatibility.layer.live_route_compatibility":`Live route compatibility`,"routing.compatibility.minStatus":`Minimum compatibility status`,"routing.none":`none`,"routing.unavailable":`–`,"routing.dryRun":`Dry-run evaluation`,"routing.dryRunContext":`Request context window (tokens)`,"routing.dryRunTools":`Request requires tools`,"routing.dryRunImage":`Request requires image input`,"routing.dryRunStructured":`Request requires structured output`,"routing.dryRunRun":`Evaluate candidates`,"routing.candidate":`Candidate`,"routing.eligible":`Eligible`,"routing.exclusions":`Exclusions`,"routing.costCap":`Cost cap`,"routing.capOutcome.satisfied":`within limit`,"routing.capOutcome.exceeded":`over limit`,"routing.capOutcome.unknown-allowed":`unknown (allowed)`,"routing.capOutcome.unknown-excluded":`unknown (excluded)`,"routing.exclusion.capability-unsatisfied":`capability not met`,"routing.exclusion.unknown-capability":`unknown capability`,"routing.exclusion.cost-limit":`over cost cap`,"routing.exclusion.cost-limit-unknown":`unknown cost under cap`,"routing.exclusion.cooldown":`cooldown`,"routing.exclusion.unknown-health":`unknown health`,"routing.exclusion.unknown-quota":`unknown quota`,"routing.exclusion.unknown-price":`unknown price`,"routing.exclusion.other":`exclusion: {code}`,"routing.score":`Score`,"routing.selected":`selected`,"routing.yes":`yes`,"routing.no":`no`,"routing.analytics":`Routing analytics`,"routing.analyticsTotal":`Requests`,"routing.analyticsSuccessRate":`Success`,"routing.analyticsFallbackRate":`Fallback`,"routing.analyticsP50":`p50`,"routing.analyticsP95":`p95`,"routing.analyticsP99":`p99`,"routing.analyticsCooldown":`Cooldown failures`,"routing.analyticsConfidence":`Confidence`,"routing.analyticsTruncated":`truncated history`,"routing.analyticsRequests":`Requests`,"routing.analyticsEmpty":`No analytics yet — send some requests first.`,"startup.title":`Startup safety`,"startup.subtitle":`Verify that Codex can reach opencodex after a restart, before local proxy routing becomes a reconnect loop.`,"startup.refresh":`Refresh`,"startup.backToDashboard":`Back to Dashboard`,"startup.loading":`Checking startup protection…`,"startup.error":`Could not read startup protection.`,"startup.staleData":`The latest startup check failed. The values below are stale and must not be treated as proof of protection.`,"startup.status.native":`Native routing`,"startup.status.protected":`Restart protected`,"startup.status.atRisk":`Action required`,"startup.summary.native":`Codex does not depend on the local proxy`,"startup.summary.protected":`opencodex will be available after restart`,"startup.summary.atRisk":`Codex can lose model access after restart`,"startup.riskDetail":`Codex is pinned to the local proxy, but no persistent service or healthy launcher shim will start it again.`,"startup.riskDetailCustomLocal":`Codex points to a custom local gateway. opencodex cannot manage or verify that gateway's restart lifecycle.`,"startup.riskDetailWindowsShim":`The launcher shim protects supported CLI scripts, but Codex Desktop and direct codex.exe launches can bypass it on Windows.`,"startup.safeDetail":`The current routing and startup mechanism are consistent. No manual ocx start should be required after restart.`,"startup.routing":`Codex routing`,"startup.routing.proxy":`Local proxy`,"startup.routing.native":`Native OpenAI`,"startup.routing.customLocal":`Custom local gateway`,"startup.routing.customRemote":`Custom remote gateway`,"startup.routing.unknown":`Unknown or invalid routing`,"startup.restartProtection":`Restart protection`,"startup.preference":`On-demand startup`,"startup.enabled":`Enabled`,"startup.disabled":`Disabled`,"startup.protection.desktop":`Desktop app`,"startup.desktopHint":`Starts at login; the desktop app supervises its bundled proxy. Ownership and live processes are verified.`,"startup.desktopRecovery":`OpenCodex owns this proxy. Reopen the desktop app and check Start at Login. If it is already checked, make sure your system allows OpenCodex to open at login (macOS: System Settings → General → Login Items & Extensions). The background service stays disabled while the desktop app owns it; the launcher shim can still be installed.`,"startup.desktopSupervisedRecovery":`OpenCodex Desktop runs this proxy, but its Start at Login could not be verified. Turn on Start at Login in the OpenCodex menu. If it is already checked, make sure your system allows OpenCodex to open at login (macOS: System Settings → General → Login Items & Extensions). The background service stays disabled here while the app runs the proxy; to use it instead, quit OpenCodex and run the command in a terminal. The launcher shim can still be installed.`,"startup.desktopReopenRecovery":`Reopen OpenCodex and check Start at Login.`,"startup.protection.service":`Background service`,"startup.protection.shim":`Launcher shim`,"startup.protection.none":`Not installed`,"startup.details":`Protection details`,"startup.service":`Background service`,"startup.serviceHint":`Starts at login and restarts the proxy after a crash.`,"startup.installed":`Installed`,"startup.notInstalled":`Not installed`,"startup.unsupported":`Unsupported`,"startup.shim":`Codex launcher shim`,"startup.shimHint":`Runs ocx ensure when a supported Codex script launcher starts.`,"startup.healthy":`Healthy`,"startup.cliOnly":`CLI only`,"startup.stale":`Stale`,"startup.viable":`Ready`,"startup.unhealthy":`Installed but unhealthy`,"startup.desktopLoginUnverified":`Running · Start at Login not verified`,"startup.conflict":`Service conflict`,"startup.installedDisabled":`Installed but disabled`,"startup.shimActivationPending":`Installed · activation not confirmed`,"startup.shimActivationHint":`Add . ~/.opencodex/codex-shell-env.sh after other PATH setup in your shell startup file, then open a new terminal. The dashboard cannot always see your shell's PATH.`,"startup.install":`Install`,"startup.installing":`Installing…`,"startup.repair":`Repair`,"startup.repairing":`Repairing…`,"startup.serviceInstalled":`Background service installed successfully.`,"startup.serviceRepaired":`Background service repaired successfully.`,"startup.shimInstalled":`Codex launcher shim installed successfully.`,"startup.shimRepaired":`Codex launcher shim repaired successfully.`,"startup.installFailed":`Installation failed:`,"startup.tray.title":`Windows system tray`,"startup.tray.hint":`Install a login tray icon for one-click proxy start, stop, restart, dashboard, and status controls.`,"startup.tray.login":`Start tray at Windows login`,"startup.tray.notProtection":`The tray is a controller, not restart protection. A viable background service is still required for unattended proxy recovery.`,"startup.tray.running":`Running`,"startup.tray.stopped":`Installed, hidden`,"startup.tray.stale":`Repair required`,"startup.tray.notInstalled":`Not installed`,"startup.tray.loading":`Checking…`,"startup.tray.unavailable":`Status unavailable`,"startup.tray.install":`Install and show tray`,"startup.tray.start":`Show tray icon`,"startup.tray.stop":`Exit tray icon`,"startup.tray.uninstall":`Remove login tray`,"startup.tray.error":`The Windows tray action failed. Check ocx tray status for details.`,"startup.recovery":`Repair options`,"startup.recoveryHint":`Use the one-click installers above, or copy a command for manual repair. The background service is recommended for Codex Desktop and Windows executables.`,"startup.command.service":`Recommended: persistent background service`,"startup.command.shim":`Alternative: CLI launcher shim`,"startup.command.native":`Fail-safe: restore native Codex routing`,"startup.copy":`Copy`,"startup.copied":`Copied`,"startup.recommended":`Recommended repair: {cmd}`,"startup.navRisk":`Startup protection requires attention`,"startup.codexRuntime.clampHidden":`Some reasoning effort options were hidden because OpenCodex used Codex {version}.`,"startup.codexRuntime.clampHiddenWithEfforts":`Some reasoning effort options were hidden because OpenCodex used Codex {version} (removed: {efforts}).`,"startup.codexRuntime.olderBinary":`OpenCodex is using an older Codex binary ({version}). A newer installation is available.`,"dash.subtitle":`Live status of the local opencodex proxy, its providers, and the models routed into Codex.`,"dash.workspace.overview":`Overview`,"dash.workspace.sections":`Sections`,"dash.status":`Status`,"dash.online":`Online`,"dash.offline":`Offline`,"dash.version":`Version`,"dash.uptime":`Uptime`,"dash.providers":`Providers`,"dash.tokens30d":`Tokens (30d)`,"dash.coverage":`{pct} coverage`,"dash.mem.title":`Memory observability`,"dash.mem.hint":`Read-only runtime diagnostics. Observed memory is max(RSS, external, ArrayBuffers) so Windows working-set trimming does not hide committed retention.`,"dash.mem.rss":`Resident set (RSS)`,"dash.mem.jsHeap":`JS heap in use`,"dash.mem.jsHeapArena":`arena {total}`,"dash.mem.pressure":`Against warn threshold`,"dash.mem.pressureOf":`{pct}% of threshold`,"dash.mem.pressureUnknown":`No threshold reported`,"dash.mem.jscHeap":`JSC heap`,"dash.mem.external":`External`,"dash.mem.arrayBuffers":`ArrayBuffers`,"dash.mem.observed":`Observed`,"dash.mem.runtime":`Runtime counters`,"dash.mem.growth":`Observed drift / hour`,"dash.mem.perHour":`/h`,"dash.mem.store":`Continuation store`,"dash.mem.storeHint":`Proxy previous_response_id cache. Rising total bytes under a rising heap points at conversation retention rather than the runtime allocator.`,"dash.mem.storeEntries":`Entries`,"dash.mem.storeTotal":`Total`,"dash.mem.storeLargest":`Largest`,"dash.mem.storeOldest":`Oldest`,"dash.mem.threshold":`Warn threshold`,"dash.mem.lastWarn":`Last warning`,"dash.mem.never":`Never`,"dash.mem.details":`Details`,"dash.mem.unavailable":`Memory diagnostics unavailable (older proxy).`,"dash.mem.inFlight":`In-flight requests`,"dash.mem.restart":`Drain & restart`,"dash.mem.restartConfirm":`Wait for {count} in-flight request(s), then restart (up to {seconds}s; remaining requests are cut on timeout).`,"dash.mem.draining":`Draining {count} request(s)… restarting when complete`,"dash.mem.reconnecting":`Proxy restarting… waiting to reconnect`,"dash.mem.restartFailed":`Drain & restart failed. Check that the proxy is running.`,"dash.mem.restartNoSupervisor":`No restart protection detected. The proxy may stay down after restart unless you start it again.`,"dash.activeProviders":`Active providers`,"dash.noProviders":`No providers configured. Run {cmd}.`,"dash.col.name":`Name`,"dash.col.adapter":`Adapter`,"dash.col.baseUrl":`Base URL`,"dash.col.model":`Model`,"dash.modelsNoResults":`No models match your search.`,"dash.availableModels":`Available models`,"dash.noModels":`No models found. Check provider API keys.`,"dash.cannotConnect":`Cannot connect to proxy. Is it running?`,"dash.runStart":`Run {cmd} to start the proxy.`,"dash.stop":`Stop Proxy`,"dash.stopConfirm":`Stop the proxy and restore native Codex?`,"dash.stopFailed":`Failed to stop proxy (HTTP {status}).`,"dash.stopStillRunning":`The proxy is still answering, so it did not stop.`,"dash.stopUnknown":`The proxy did not confirm the stop. Check whether it is still running before trying again.`,"dash.maSwitchFailed":`Mode switch failed (HTTP {status}).`,"dash.maNetworkError":`Network error — is the proxy running?`,"dash.stopping":`Stopping…`,"dash.actions":`Proxy`,"dash.codexRestart":`Reload Codex models`,"dash.codexRestarting":`Stopping…`,"dash.codexRestartConfirm":`Stop Codex app-servers so they reload the model list? Any Codex turn in progress is interrupted, and Codex does not relaunch on its own — reopen it afterwards.`,"dash.codexRestartDone":`Stopped {count} Codex app-server(s). Reopen Codex to load the current model list.`,"dash.codexRestartNothing":`No Codex app-server is running. The next launch reads the current model list.`,"dash.codexRestartUnknown":`Could not list processes, so nothing was stopped.`,"dash.codexRestartPartial":`{count} app-server(s) did not exit. Stop them manually if the model list stays stale.`,"dash.codexRestartFailed":`Failed to reload Codex models (HTTP {status}).`,"dash.codexRestartUnreachable":`Could not reach the proxy.`,"dash.codexRestartMalformed":`The proxy returned an unexpected response.`,"dash.codexRestartTimeout":`The proxy did not answer in time. It may still be stopping app-servers.`,"models.staleBanner":`Codex is showing an older model list than this catalog. Restart Codex to reload it.`,"dash.codexAutoStart":`Start opencodex with Codex`,"dash.codexAutoStartHint":`Allows an installed launcher shim to run ocx ensure. This setting does not install restart protection; check Startup safety for the effective state.`,"dash.searchModel":`Search sidecar model`,"dash.searchModelHint":`Model used for web_search on non-OpenAI routed models. Requires ChatGPT login.`,"dash.searchReasoning":`Search reasoning effort`,"dash.visionModel":`Vision sidecar model`,"dash.visionModelHint":`Model used to describe images for text-only routed models. Requires ChatGPT login.`,"dash.webSearchSidecar":`Web search sidecar`,"dash.webSearchSidecarHint":`Choose the backend and model used for web search on routed models.`,"dash.webSearchOff":`Off`,"dash.webSearchCodexSync":`Saved. Codex's config was not rewritten — run Sync models to apply it.`,"dash.webSearchStream":`Stream answers live`,"dash.webSearchStreamHint":`Stream the model’s leading text and reasoning live until it decides on a tool call; the rest of the turn stays buffered for search interception. Text written before a search may partially repeat.`,"dash.visionSidecar":`Vision sidecar`,"dash.visionSidecarHint":`Choose the backend and model used to describe images for text-only routed models.`,"dash.visionOff":`Off`,"dash.visionAdvanced":`Advanced settings`,"dash.visionMaxDescriptions":`Maximum descriptions per turn`,"dash.visionMaxDescriptionsInvalid":`Enter a positive integer.`,"dash.visionTimeout":`Timeout`,"dash.visionTimeoutInvalid":`Enter an integer from {min} to {max} milliseconds.`,"dash.visionAdvancedPopover":`Advanced vision settings`,"compactionRouting.title":`Compaction routing`,"compactionRouting.description":`Choose a model for Codex compaction requests and which triggers it covers. Later messages keep the conversation settings.`,"compactionRouting.model":`Compaction model`,"compactionRouting.effort":`Reasoning effort`,"compactionRouting.triggers":`Applies to`,"compactionRouting.triggersManual":`Manual /compact only`,"compactionRouting.triggersBoth":`Manual and automatic`,"compactionRouting.triggersAuto":`Automatic only`,"compactionRouting.sources":`Sources`,"compactionRouting.sourcesAll":`All conversation models`,"compactionRouting.sourcesSelected":`Selected sources only`,"compactionRouting.sourcesProviders":`Entire providers`,"compactionRouting.sourcesModels":`Individual models`,"compactionRouting.sourcesSaved":`Saved selectors not in the current catalog`,"compactionRouting.sourcesNone":`Select at least one source, or switch back to all conversation models.`,"compactionRouting.sourcesHint":`Apply the override only when a compaction request's source model matches a selected model or provider/*. Other requests keep using their own model.`,"compactionRouting.sourcesGridTitle":`Reroute compaction requests whose source model matches:`,"compactionRouting.currentModel":`Use conversation model`,"compactionRouting.currentEffort":`Keep request effort`,"compactionRouting.effortHint":`Reasoning applies where supported by the compaction endpoint. The model must accept the full conversation.`,"compactionRouting.dataNotice":`A covered compaction request sends the entire conversation to the selected model's provider for summarization, even when the conversation runs on another provider.`,"compactionRouting.autoNotice":`Automatic compaction runs on its own, so a long conversation can be sent to that provider without you asking for it.`,"compactionRouting.providerWarning":`With this setting, every covered compaction request sends the full conversation contents to {provider} for summarization.`,"compactionRouting.comboWarning":`With this setting, every covered compaction request sends the full conversation contents to combo {combo} for summarization. The combo picks one of its targets ({providers}) by its routing strategy, but after a retryable failure it may retry the same full-conversation request on another target, so one or more target providers can receive the conversation.`,"compactionRouting.comboProvidersUnknown":`its configured target providers`,"compactionRouting.providerWarningScoped":`With this setting, only compaction requests whose source model matches {sources} send the full conversation contents to {provider} for summarization; other requests keep using their own model.`,"compactionRouting.comboWarningScoped":`With this setting, only compaction requests whose source model matches {sources} send the full conversation contents to combo {combo} for summarization; other requests keep using their own model. The combo picks one of its targets ({providers}) by its routing strategy, but after a retryable failure it may retry the same full-conversation request on another target, so one or more target providers can receive the conversation.`,"compactionRouting.loadFailed":`Could not load compaction settings.`,"compactionRouting.saved":`Compaction settings saved.`,"compactionRouting.saveFailed":`Could not save. Your changes are still here; try again.`,"memoryModels.title":`Memory routing`,"memoryModels.description":`Codex writes memories after a session ends. Choose a model for either phase, or keep its existing route.`,"memoryModels.infoLabel":`What are Extract and Consolidation?`,"memoryModels.info":`Codex turns finished sessions into memory in two steps. Extract reads one finished session and jots down what happened: one note per session, so it makes many small calls. Consolidation takes those notes and writes them into the memory files Codex reads at the start of your next sessions. It runs rarely, but it edits files. Each step asks for its own model, which is why they are listed separately here.`,"memoryModels.extract":`Extract`,"memoryModels.extractHint":`Summarizes each finished session into a raw memory. Runs once per session.`,"memoryModels.consolidation":`Consolidation`,"memoryModels.consolidationHint":`Merges the raw memories into the memory files Codex reads later. Runs rarely and edits files.`,"memoryModels.model":`Model`,"memoryModels.effort":`Reasoning effort`,"memoryModels.off":`Off`,"memoryModels.defaultEffort":`Codex default`,"memoryModels.dataNotice":`The chosen model receives that phase's input: the finished session for Extract, the raw memories for Consolidation.`,"memoryModels.accountNotice":`Only one phase is routed here; the other keeps its existing route. Shadow Call Intercept can also send that phase's memory calls to its configured model.`,"memoryModels.loadFailed":`Could not load memory settings.`,"memoryModels.saved":`Memory settings saved.`,"memoryModels.saveFailed":`Could not save. Your changes are still here; try again.`,"dash.shadowCallIntercept":`Shadow Call Intercept`,"dash.shadowCallInterceptHint":`Intercepts Codex App's background helper calls ({models}) for title generation and commit messages and redirects them to your chosen model.`,"dash.shadowCallWarning":`⚠ When enabled, ALL requests for {models} will be replaced with the selected model.`,"dash.shadowCallOriginal":`Original`,"dash.shadowCallModel":`Replacement model`,"dash.shadowCallTooltip":`Codex App makes background helper calls for thread title generation, commit message generation, and skill orchestration. The helper model changed across client versions, so opencodex intercepts every model in this set: {models}. Enable this to redirect those calls to your chosen model.`,"models.shadowCallIntercept":`Shadow Call Intercept`,"models.shadowCallInterceptHint":`Intercepts Codex App's background helper calls ({models}) for titles and commit messages and redirects them to your chosen model.`,"models.autoReviewOverride":`Auto-review override`,"models.autoReviewOverrideHint":`Chooses the model Codex uses for auto-review (the approval reviewer). Applied to every catalog row at sync; a provider-scoped autoReviewModel still takes precedence on its own rows.`,"models.autoReviewPending":`Pending`,"dash.sidecarBackend":`Backend`,"dash.sidecarModel":`Model`,"dash.backendAuto":`Auto`,"dash.backendOpenAI":`OpenAI`,"dash.backendAnthropic":`Anthropic`,"dash.sidecarSaved":`Sidecar settings saved. Applied on the next request.`,"dash.sidecarSaveFailed":`Failed to save sidecar settings.`,"dash.injectionLabel":`Sub-agent delegation`,"dash.injectionHint":`Pick the model Codex should hand sub-agent work to. The two switches below decide where that pick is used.`,"dash.injectionManage":`Open settings`,"dash.syncCodexSubagentDefaults":`Also save as a Codex default`,"dash.syncCodexSubagentDefaultsHint":`On, the pick above is written into Codex's own config, so new tasks start with that model too. Off, it is remembered only here. It takes effect on the next sync or restart, and your hand-written [agents] settings are left alone.`,"dash.multiAgentGuidance":`Tell Codex how to split work`,"dash.multiAgentGuidanceHint":`Sends a short note telling Codex how to hand work to sub-agents. On v2 it names the models it may use and which to prefer; on v1 it only applies at max or ultra reasoning effort. Off, no note is added.`,"dash.injectionNone":`None`,"dash.injectionEffortLabel":`Reasoning effort`,"dash.injectionEffortNone":`Model default`,"dash.effortCapLabel":`V2 ultra effort limit`,"dash.subagentEffortCapLabel":`V2 sub-agent effort limit`,"dash.effortCapHelp":`Limits the reasoning effort for V2 ultra-mode turns. When set, incoming max-effort requests (from ultra mode) are capped to the selected level. The sub-agent limit applies only to spawned child agents. Caps only lower effort, never raise it. If a model doesn't support the capped level, it snaps down to the nearest supported level.`,"dash.effortCapNone":`No cap`,"dash.maintenance":`Maintenance`,"dash.maintenanceHint":`Refresh Codex's model catalog or install a newer opencodex release.`,"dash.syncModels":`Sync models`,"dash.syncModelsHint":`Rewrite Codex's model catalog from the providers you have connected.`,"dash.syncRun":`Sync now`,"dash.syncing":`Syncing…`,"dash.syncOk":`Sync complete. {count} model(s) appended.`,"dash.syncStaleHint":`If Codex still shows an older list, restart its long-lived app-server ({cmd}).`,"dash.syncFailed":`Sync failed: {error}`,"dash.projectConfigTitle":`Project Codex config bypasses OpenCodex`,"dash.projectConfigHint":`These repo-local settings override the OpenCodex proxy (e.g. route to OpenCode Go directly). Remove them so ~/.codex/config.toml routing applies in that project.`,"dash.checkUpdate":`Check update`,"dash.updateTitle":`Update opencodex`,"dash.updateDesc":`Check npm for the selected channel, then choose whether to restart the proxy after installation.`,"dash.updateChannel":`Channel`,"dash.updateChecking":`Checking for updates…`,"dash.updateInstalled":`Installed`,"dash.updateLatest":`Latest`,"dash.updateAvailable":`Update available`,"dash.updateCurrent":`Up to date`,"dash.updateCommand":`Command`,"dash.updateSource":`This is a source checkout. Update it from the terminal with the shown command.`,"dash.updateUnavailable":`Could not read the latest version from npm. Try again later.`,"dash.updateRetry":`Retry`,"dash.updateRecheck":`Re-check`,"dash.updateCannotAuto":`One-click update is unavailable ({reason}).`,"dash.updateReason.source_checkout":`source checkout`,"dash.updateReason.latest_unavailable":`npm registry unreachable`,"dash.updateReason.already_latest":`already on latest`,"dash.updateReason.externally_managed":`managed externally by mise; run the shown command`,"dash.updateReason.external_ownership_invalid":`mise ownership metadata is unreadable or inconsistent`,"dash.updateReason.unknown":`update unavailable`,"dash.updateRestart":`Restart after update`,"dash.updateRestartHint":`Recommended. The current GUI keeps running the old code until the proxy restarts.`,"dash.runUpdate":`Update`,"dash.updateReconnecting":`Waiting for the restarted proxy…`,"dash.updateStatus.running":`Updating opencodex.`,"dash.updateStatus.restarting":`Update installed. Restarting proxy.`,"dash.updateStatus.succeeded":`Update finished.`,"dash.updateVersionTransition":`{currentVersion} -> {latestVersion}.`,"dash.updateStatus.failed":`Update failed.`,"prov.subtitle":`Configure the upstream providers opencodex routes into Codex. Log in with an account, add a provider, or edit the raw config.`,"prov.add":`Add Provider`,"prov.editJson":`Edit JSON`,"prov.accountLogin":`Account login`,"prov.noOauth":`No OAuth providers available.`,"prov.loggedIn":`logged in`,"prov.notLoggedIn":`not logged in`,"prov.logout":`Logout`,"prov.login":`Login`,"prov.loginWith":`Login with {provider}`,"prov.waitingBrowser":`Waiting for browser…`,"prov.didntOpen":`Didn't open? Click here`,"prov.copyLink":`Copy link`,"prov.dontOpenBrowser":`Don't open a browser on the proxy machine`,"prov.dontOpenBrowserHint":`Useful for a different browser profile, or when the dashboard is not on the proxy's machine.`,"prov.linkCopied":`Copied`,"prov.linkCopyUnavailable":`Clipboard unavailable`,"prov.deviceCode":`Device code`,"prov.copyCode":`Copy code`,"prov.copyCodeAndOpen":`Copy code & open`,"prov.openSignInPage":`Open sign-in page`,"prov.browserLaunchFailed":`The browser didn't open automatically. Open the sign-in page below or copy the link.`,"prov.codeCopied":`Code copied`,"prov.editAlias":`Edit alias`,"prov.aliasPrompt":`Display name (leave empty to clear)`,"prov.aliasSaved":`Alias saved`,"prov.aliasSaveFailed":`Could not save alias`,"prov.aliasInvalid":`Use at most 80 characters, with no control characters.`,"prov.accountId":`ID`,"prov.pasteRedirect":`Paste redirect URL or code`,"prov.pasteRedirectHint":`If the browser shows a localhost error, copy the full URL from its address bar and paste it here (or paste the authorization code).`,"prov.pasteSubmit":`Submit`,"prov.pasteSubmitting":`Submitting…`,"prov.pasteOk":`Code submitted — finishing login…`,"prov.pasteFail":`Could not submit code: {error}`,"prov.port":`Port`,"prov.default":`Default`,"prov.loadingConfig":`Loading…`,"prov.saved":`Saved! Restart proxy to apply.`,"prov.loadConfigFail":`Failed to load config`,"prov.invalidJson":`Invalid JSON`,"prov.saveFailed":`Save failed`,"prov.loginFailStart":`{provider} login failed to start`,"prov.loginError":`{provider} login error: {error}`,"prov.loginRequestFail":`{provider} login request failed`,"prov.loginCancelled":`{provider} login cancelled`,"prov.loginTimeout":`{provider} login timed out — browser closed or never finished. Try again.`,"prov.loginOk":`Logged in to {provider}. Run {cmd} (or it applies live) to list its models.`,"prov.loginSameAccount":`Still the same {provider} account — switch accounts in the browser, then try Add account again.`,"oauthTos.highTitle":`{provider}: subscription OAuth risk`,"oauthTos.elevatedTitle":`{provider}: unofficial OAuth bridge`,"oauthTos.anthropicBody":`This connects a Claude subscription through OpenCodex's third-party proxy. Anthropic has not endorsed this connection or automated account pooling; access depends on its current terms and enforcement.`,"oauthTos.highBody":`OpenCodex connects {provider} through a third-party OAuth path. Unsupported use may lead to access limits or suspension.`,"oauthTos.elevatedBody":`OpenCodex connects {provider} through an unofficial OAuth path. Use the official client when possible; unusual or automated traffic may be treated as abuse and access may be limited or suspended.`,"oauthTos.saferPath":`Safer option: configure an API key in OpenCodex instead.`,"oauthTos.acknowledge":`I understand the risk and want to continue with OAuth anyway.`,"oauthTos.continue":`Continue with OAuth`,"oauthTos.anthropicTitle":`Claude subscription connection`,"oauthTos.anthropicConditions":`Use an account you own or are authorized to use. Using the genuine Claude Code client with a person supervising the session is different from sending subscription tokens through other clients. OpenCodex also supports those other clients, so this connection does not guarantee that every use is permitted. Supported Agent SDK integrations are separate.`,"oauthTos.anthropicSaferPath":`For other clients or unattended automation, configure an Anthropic API key instead.`,"oauthTos.anthropicAcknowledge":`I understand this is a third-party subscription connection and will check the applicable terms.`,"oauthTos.anthropicContinue":`Continue with Claude subscription`,"subagentSurface.selectionTitle":`Switch the sub-agent surface to {mode}?`,"subagentSurface.selectionBody":`On {mode}, ChatGPT models that use the v2 surface — Sol and Terra on base, every model on v2 — hand their task to a routed model such as Grok or Claude encrypted for the ChatGPT backend, and the routed model cannot read it. That delegation fails with unreadable_encrypted_agent_task until it is fixed upstream. v1 delegates across providers reliably.`,"subagentSurface.advisoryTitle":`v1 is now the default sub-agent surface`,"subagentSurface.advisoryBody":`This install runs {mode}, where a ChatGPT model on the v2 surface hands a routed model an encrypted task it cannot read, so cross-provider delegation fails. We recommend v1 until that is fixed upstream. Your current setting is unchanged until you choose.`,"subagentSurface.continue":`Continue`,"subagentSurface.switchToV1":`Switch to v1`,"subagentSurface.learnMore":`Why this fails`,"prov.logoutOk":`Logged out of {provider}.`,"prov.logoutFail":`Could not log out of {provider}. Your account state is unchanged.`,"prov.removed":`Removed "{name}".`,"prov.removedDefault":`Removed "{name}". Default provider is now "{defaultProvider}".`,"prov.removedShadowTarget":`Removed "{name}". Shadow Call Intercept still targets "{model}", so helper calls will fail until you choose another target.`,"prov.removeFail":`Failed to remove "{name}".`,"prov.removeLastProvider":`You can't remove this provider when no other enabled provider can become the default.`,"prov.removeHasDependentCombos":`Remove or update these dependent combos first: {combos}.`,"prov.setDefault":`Set as default`,"prov.setDefaultSuccess":`"{name}" is now the default provider.`,"prov.setDefaultFail":`Couldn't set "{name}" as the default provider.`,"prov.defaultDisabled":`Enable this provider before making it the default.`,"prov.updateFail":`Couldn't update this provider.`,"prov.networkError":`Network error. Check that the proxy is running and try again.`,"prov.added":`Added "{name}". Live now — run {cmd} (or restart) to list its models in Codex's picker.`,"prov.modelsNoticeTitle":`Choose models`,"prov.modelsNoticeChecking":`Checking the model list. Model switches do not disable the provider.`,"prov.modelsNoticePending":`The initial model list is not confirmed yet. Models stay hidden until discovery finishes.`,"prov.modelsNoticeOff":`All model switches were turned OFF at registration. Enable the models you want on the Models page.`,"prov.modelsNoticeReady":`Choose which models appear on the Models page. Model switches do not disable the provider.`,"prov.modelsNoticeFailed":`The provider was saved, but the model list could not be refreshed. Try again.`,"prov.modelsNoticeCount":`{count} models`,"prov.modelsNoticeOpen":`Open Models`,"models.initialSelectionPending":`Initial discovery pending`,"prov.removeConfirm":`Remove provider "{name}"? Its models disappear from Codex's picker.`,"prov.hasApiKey":`api key configured`,"prov.hasHeaders":`custom headers configured`,"prov.accounts":`Accounts ({n})`,"prov.accountsAria":`Toggle {name} accounts`,"prov.accountActive":`Active`,"prov.accountReauth":`Re-login`,"prov.reauthenticate":`Re-authenticate`,"prov.reauthAccountMissing":`Selected account was not found after login`,"prov.reauthIdentityMismatch":`Signed-in account did not match the selected account`,"prov.accountAdd":`Add account`,"prov.accountNoLabel":`account {id}`,"prov.accountSwitchTitle":`Use this account`,"prov.accountSwitched":`Switched to {email}.`,"prov.accountSwitchFail":`Failed to switch account`,"prov.accountRemoved":`Removed {email}.`,"prov.accountRemoveFail":`Could not remove {email}. The account is unchanged.`,"prov.accountRemoveAria":`Remove {email}`,"prov.accountRemoveConfirm":`Remove account {email}? Its login is deleted from this proxy.`,"prov.keyAdd":`Add API key`,"prov.keyAdded":`Added API key to {name}.`,"prov.keyAddFail":`Failed to add API key`,"prov.keyPlaceholder":`Paste API key`,"prov.keySwitchTitle":`Use this key`,"prov.keySwitched":`Switched to key {key}.`,"prov.keySwitchFail":`Failed to switch key`,"prov.keyRemoved":`Removed key {key}.`,"prov.keyRemoveAria":`Remove key {key}`,"prov.keyRemoveConfirm":`Remove API key {key}? It is deleted from this proxy's config.`,"prov.activeBadge":`Active`,"prov.disabledBadge":`Disabled`,"prov.defaultBadge":`Default`,"prov.enable":`Enable`,"prov.disable":`Disable`,"prov.enabled":`Enabled "{name}". Its models can appear in Codex again.`,"prov.disabled":`Disabled "{name}". Settings are kept, but its models are hidden.`,"prov.disabledShadowTarget":`Disabled "{name}". Shadow Call Intercept still targets "{model}", so helper calls will fail until you choose another target or re-enable "{name}".`,"prov.enableFail":`Failed to enable "{name}".`,"prov.disableFail":`Failed to disable "{name}".`,"prov.enableAria":`Enable provider {name}`,"prov.disableAria":`Disable provider {name}`,"prov.defaultCannotDisable":`Default provider can't be disabled`,"prov.openaiAccountMode":`Codex account mode`,"prov.openaiModePool":`Pool`,"prov.openaiModeDirect":`Direct`,"prov.openaiPoolDesc":`Default. Rotate the main login and added accounts using affinity, quota, cooldown, and failover.`,"prov.openaiDirectDesc":`Use only the current/main Codex login. Stored pool accounts are not read or rotated.`,"prov.openaiModeSaved":`OpenAI account mode changed to {mode}.`,"prov.openaiModeSaveFailed":`Could not change the OpenAI account mode.`,"prov.openaiApiDesc":`Uses an OpenAI API key and never uses Codex account credentials.`,"prov.manageCodexAccounts":`Manage Codex accounts`,"prov.openaiApiMissing":`API key required`,"prov.openaiApiSetup":`Set up API key`,"models.tab.catalog":`Models`,"models.tab.combos":`Combos`,"models.tab.compatibility":`Compatibility`,"models.tab.routing":`Routing (beta)`,"models.tabsLabel":`Model surfaces`,"models.subtitle.combos":`Ordered groups of models that answer as one id. Chain targets with failover or spread the load with a balancing strategy.`,"models.subtitle.compatibility":`Read-only compatibility verdict matrix from lab projection evidence.`,"models.subtitle.routing":`Policy profiles, dry-run evaluation, and source-backed routing analytics.`,"models.subtitle":`Toggle which models Codex sees — native GPT passthrough and routed providers, grouped by provider (click a header to collapse). Hidden models stay off the catalog + model picker but remain directly callable by exact id.`,"models.delivery.title":`How changes reach Codex`,"models.delivery.chip.saved":`Saved here`,"models.delivery.chip.savedHub":`Saved on hub`,"models.delivery.chip.synced":`Synced {time}`,"models.delivery.chip.syncedUnknown":`No sync recorded`,"models.delivery.chip.loaded":`Codex loads it on restart`,"models.delivery.saved.title":`Saved to this proxy`,"models.delivery.saved.body":`Saving on this page rewrites the model catalog this OpenCodex proxy hands to Codex, which is the list the Codex model picker shows. The confirmation after saving means this step is done.`,"models.delivery.savedHub.title":`Saved on the hub`,"models.delivery.savedHub.body":`This machine is connected to a shared OpenCodex hub, so saving here changes the hub's catalog. The confirmation after saving means the hub has it; this machine still has to download it.`,"models.delivery.synced.title":`Synced to this machine`,"models.delivery.synced.bodyAt":`This machine last downloaded the hub catalog on {time} and wrote it where Codex reads it. That time only tells you when the download ran. If you saved on the hub after it, this machine keeps the previous list until the next sync.`,"models.delivery.synced.bodyUnknown":`This machine has no recorded download of the hub catalog yet, so Codex may still be reading an older list. The next sync downloads it.`,"models.delivery.loaded.title":`Loaded by Codex`,"models.delivery.loaded.body":`Codex reads the catalog when it starts, so a Codex window that was already open keeps its old model list. OpenCodex cannot look inside a running Codex to see which list it uses. When it can tell that Codex started before your change, a restart notice appears above the tabs.`,"models.delivery.hint":`If a model you turned on does not show up in Codex, press Reload Codex models at the top right of this page, then reopen Codex.`,"models.nativeGroupLabel":`OpenAI native`,"models.nativeHint":"Passthrough models use the Pool or Direct account option selected on Providers. Toggling one off hides it from the Codex picker (the catalog entry is kept, so re-enabling restores it exactly). Adding a model here registers a routed `openai/<model>` selector, not a new bare passthrough id.","models.active":`{active}/{total} visible`,"models.workspace.providers":`Providers`,"models.workspace.allProviders":`All providers`,"models.workspace.mainAria":`Model details`,"models.allOn":`All on`,"models.allOff":`All off`,"models.presetLabel":`Models`,"models.presetMode_preset":`Preset`,"models.presetMode_all":`All`,"models.presetMode_custom":`Custom`,"models.presetSummary":`{count} of {total} shown — core preset v{version}`,"models.presetUpdateAvailable":`Preset v{version} available`,"models.presetAppliedToast":`{provider}: preset applied — {count} models selected`,"models.presetClearedToast":`{provider}: showing all models`,"models.presetEmpty":`{provider}: preset matched no models — selection unchanged`,"models.presetConfirmReplace":`Replace your selection with the {count}-model preset?`,"models.cap350k":`Cap 350k`,"models.capApplied":`Context cap applied — takes effect on the next Codex turn.`,"models.capSaveFailed":`Failed to save context cap`,"models.contextCapped":`350k cap`,"models.contextCapLabel":`Default window / cap`,"models.v2Label":`Sub-agent`,"models.shadowCallOriginal":`{models} →`,"models.v2DocsLink":`What is v1 / v2?`,"models.v2Mode_v1":`v1`,"models.v2Mode_default":`base`,"models.v2Mode_v2":`v2`,"models.v2ModeDesc_v1":`All models → v1 surface`,"models.v2ModeDesc_default":`Upstream defaults (sol/terra=v2, luna=v1)`,"models.v2ModeDesc_v2":`All models → v2 surface`,"models.keepNativeOnV1":`Keep ChatGPT on v1`,"models.keepNativeOnV1Hint":`ChatGPT encrypts v2 child tasks only when a ChatGPT-native parent stays on v2, so Grok and Claude cannot read them. Turn this on to keep Sol/Terra on v1 and avoid that encryption. Routed parents keep v2.`,"models.v2Help":`Controls the multi-agent surface for all models.
|
|
9
|
+
`+e.stack}}var je=Object.prototype.hasOwnProperty,Me=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,Pe=t.unstable_shouldYield,Fe=t.unstable_requestPaint,Ie=t.unstable_now,Le=t.unstable_getCurrentPriorityLevel,Re=t.unstable_ImmediatePriority,ze=t.unstable_UserBlockingPriority,Be=t.unstable_NormalPriority,Ve=t.unstable_LowPriority,He=t.unstable_IdlePriority,Ue=t.log,We=t.unstable_setDisableYieldValue,Ge=null,Ke=null;function qe(e){if(typeof Ue==`function`&&We(e),Ke&&typeof Ke.setStrictMode==`function`)try{Ke.setStrictMode(Ge,e)}catch{}}var Je=Math.clz32?Math.clz32:Ze,Ye=Math.log,Xe=Math.LN2;function Ze(e){return e>>>=0,e===0?32:31-(Ye(e)/Xe|0)|0}var Qe=256,$e=262144,et=4194304;function tt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function nt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=tt(n))):i=tt(o):i=tt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=tt(n))):i=tt(o)):i=tt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function rt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function it(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function at(){var e=et;return et<<=1,!(et&62914560)&&(et=4194304),e}function ot(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function st(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ct(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-Je(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&<(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function lt(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Je(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function ut(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Je(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function dt(e,t){var n=t&-t;return n=n&42?1:ft(n),(n&(e.suspendedLanes|t))===0?n:0}function ft(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function pt(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function mt(){var e=T.p;return e===0?(e=window.event,e===void 0?32:mp(e.type)):e}function ht(e,t){var n=T.p;try{return T.p=e,t()}finally{T.p=n}}var O=Math.random().toString(36).slice(2),k=`__reactFiber$`+O,gt=`__reactProps$`+O,_t=`__reactContainer$`+O,vt=`__reactEvents$`+O,yt=`__reactListeners$`+O,bt=`__reactHandles$`+O,xt=`__reactResources$`+O,St=`__reactMarker$`+O;function Ct(e){delete e[k],delete e[gt],delete e[vt],delete e[yt],delete e[bt]}function wt(e){var t=e[k];if(t)return t;for(var n=e.parentNode;n;){if(t=n[_t]||n[k]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=df(e);e!==null;){if(n=e[k])return n;e=df(e)}return t}e=n,n=e.parentNode}return null}function Tt(e){if(e=e[k]||e[_t]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Et(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function Dt(e){var t=e[xt];return t||=e[xt]={hoistableStyles:new Map,hoistableScripts:new Map},t}function A(e){e[St]=!0}var Ot=new Set,kt={};function At(e,t){jt(e,t),jt(e+`Capture`,t)}function jt(e,t){for(kt[e]=t,e=0;e<t.length;e++)Ot.add(t[e])}var Mt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),Nt={},Pt={};function Ft(e){return je.call(Pt,e)?!0:je.call(Nt,e)?!1:Mt.test(e)?Pt[e]=!0:(Nt[e]=!0,!1)}function It(e,t,n){if(Ft(t)){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,``+n)}}}function Lt(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,``+n)}}function Rt(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,``+r)}}function j(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function zt(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function Bt(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Vt(e){if(!e._valueTracker){var t=zt(e)?`checked`:`value`;e._valueTracker=Bt(e,t,``+e[t])}}function Ht(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=zt(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}function Ut(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}var Wt=/[\n"\\]/g;function Gt(e){return e.replace(Wt,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function Kt(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+j(t)):e.value!==``+j(t)&&(e.value=``+j(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):Jt(e,o,j(n)):Jt(e,o,j(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+j(s):e.removeAttribute(`name`)}function qt(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){Vt(e);return}n=n==null?``:``+j(n),t=t==null?n:``+j(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),Vt(e)}function Jt(e,t,n){t===`number`&&Ut(e.ownerDocument)===e||e.defaultValue===``+n||(e.defaultValue=``+n)}function Yt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+j(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function Xt(e,t,n){t!=null&&(t=``+j(t),t!==e.value&&(e.value=t),n==null)?e.defaultValue!==t&&(e.defaultValue=t):e.defaultValue=n==null?``:``+j(n)}function Zt(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(de(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=j(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),Vt(e)}function Qt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var $t=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function en(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||$t.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function tn(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&en(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&en(e,o,t[o])}function nn(e){if(e.indexOf(`-`)===-1)return!1;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var rn=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),an=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function on(e){return an.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function sn(){}var cn=null;function ln(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var un=null,dn=null;function fn(e){var t=Tt(e);if(t&&(e=t.stateNode)){var n=e[gt]||null;a:switch(e=t.stateNode,t.type){case`input`:if(Kt(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+Gt(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[gt]||null;if(!a)throw Error(i(90));Kt(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&Ht(r)}break a;case`textarea`:Xt(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&Yt(e,!!n.multiple,t,!1)}}}var pn=!1;function mn(e,t,n){if(pn)return e(t,n);pn=!0;try{return e(t)}finally{if(pn=!1,(un!==null||dn!==null)&&(bu(),un&&(t=un,e=dn,dn=un=null,fn(t),e)))for(t=0;t<e.length;t++)fn(e[t])}}function hn(e,t){var n=e.stateNode;if(n===null)return null;var r=n[gt]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var gn=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,_n=!1;if(gn)try{var vn={};Object.defineProperty(vn,"passive",{get:function(){_n=!0}}),window.addEventListener(`test`,vn,vn),window.removeEventListener(`test`,vn,vn)}catch{_n=!1}var yn=null,bn=null,xn=null;function Sn(){if(xn)return xn;var e,t=bn,n=t.length,r,i=`value`in yn?yn.value:yn.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return xn=i.slice(e,1<r?1-r:void 0)}function Cn(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function wn(){return!0}function Tn(){return!1}function En(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?wn:Tn,this.isPropagationStopped=Tn,this}return h(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=wn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=wn)},persist:function(){},isPersistent:wn}),t}var Dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},On=En(Dn),kn=h({},Dn,{view:0,detail:0}),An=En(kn),jn,Mn,Nn,Pn=h({},kn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Gn,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==Nn&&(Nn&&e.type===`mousemove`?(jn=e.screenX-Nn.screenX,Mn=e.screenY-Nn.screenY):Mn=jn=0,Nn=e),jn)},movementY:function(e){return`movementY`in e?e.movementY:Mn}}),Fn=En(Pn),In=En(h({},Pn,{dataTransfer:0})),Ln=En(h({},kn,{relatedTarget:0})),Rn=En(h({},Dn,{animationName:0,elapsedTime:0,pseudoElement:0})),zn=En(h({},Dn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),Bn=En(h({},Dn,{data:0})),Vn={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},Hn={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},Un={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function Wn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Un[e])?!!t[e]:!1}function Gn(){return Wn}var Kn=En(h({},kn,{key:function(e){if(e.key){var t=Vn[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=Cn(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?Hn[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Gn,charCode:function(e){return e.type===`keypress`?Cn(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?Cn(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),qn=En(h({},Pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Jn=En(h({},kn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Gn})),Yn=En(h({},Dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Xn=En(h({},Pn,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),Zn=En(h({},Dn,{newState:0,oldState:0})),Qn=[9,13,27,32],$n=gn&&`CompositionEvent`in window,er=null;gn&&`documentMode`in document&&(er=document.documentMode);var tr=gn&&`TextEvent`in window&&!er,nr=gn&&(!$n||er&&8<er&&11>=er),rr=` `,ir=!1;function ar(e,t){switch(e){case`keyup`:return Qn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function or(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var sr=!1;function cr(e,t){switch(e){case`compositionend`:return or(t);case`keypress`:return t.which===32?(ir=!0,rr):null;case`textInput`:return e=t.data,e===rr&&ir?null:e;default:return null}}function lr(e,t){if(sr)return e===`compositionend`||!$n&&ar(e,t)?(e=Sn(),xn=bn=yn=null,sr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return nr&&t.locale!==`ko`?null:t.data;default:return null}}var ur={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function dr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!ur[e.type]:t===`textarea`}function fr(e,t,n,r){un?dn?dn.push(r):dn=[r]:un=r,t=Ed(t,`onChange`),0<t.length&&(n=new On(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var pr=null,mr=null;function hr(e){yd(e,0)}function gr(e){if(Ht(Et(e)))return e}function _r(e,t){if(e===`change`)return t}var vr=!1;if(gn){var yr;if(gn){var br=`oninput`in document;if(!br){var xr=document.createElement(`div`);xr.setAttribute(`oninput`,`return;`),br=typeof xr.oninput==`function`}yr=br}else yr=!1;vr=yr&&(!document.documentMode||9<document.documentMode)}function Sr(){pr&&(pr.detachEvent(`onpropertychange`,Cr),mr=pr=null)}function Cr(e){if(e.propertyName===`value`&&gr(mr)){var t=[];fr(t,mr,e,ln(e)),mn(hr,t)}}function wr(e,t,n){e===`focusin`?(Sr(),pr=t,mr=n,pr.attachEvent(`onpropertychange`,Cr)):e===`focusout`&&Sr()}function Tr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return gr(mr)}function Er(e,t){if(e===`click`)return gr(t)}function Dr(e,t){if(e===`input`||e===`change`)return gr(t)}function Or(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var kr=typeof Object.is==`function`?Object.is:Or;function Ar(e,t){if(kr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!je.call(t,i)||!kr(e[i],t[i]))return!1}return!0}function jr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Mr(e,t){var n=jr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=jr(n)}}function Nr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Nr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Pr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ut(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ut(e.document)}return t}function Fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Ir=gn&&`documentMode`in document&&11>=document.documentMode,Lr=null,Rr=null,zr=null,Br=!1;function Vr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Br||Lr==null||Lr!==Ut(r)||(r=Lr,`selectionStart`in r&&Fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),zr&&Ar(zr,r)||(zr=r,r=Ed(Rr,`onSelect`),0<r.length&&(t=new On(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=Lr)))}function Hr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var Ur={animationend:Hr(`Animation`,`AnimationEnd`),animationiteration:Hr(`Animation`,`AnimationIteration`),animationstart:Hr(`Animation`,`AnimationStart`),transitionrun:Hr(`Transition`,`TransitionRun`),transitionstart:Hr(`Transition`,`TransitionStart`),transitioncancel:Hr(`Transition`,`TransitionCancel`),transitionend:Hr(`Transition`,`TransitionEnd`)},Wr={},Gr={};gn&&(Gr=document.createElement(`div`).style,`AnimationEvent`in window||(delete Ur.animationend.animation,delete Ur.animationiteration.animation,delete Ur.animationstart.animation),`TransitionEvent`in window||delete Ur.transitionend.transition);function Kr(e){if(Wr[e])return Wr[e];if(!Ur[e])return e;var t=Ur[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Gr)return Wr[e]=t[n];return e}var qr=Kr(`animationend`),Jr=Kr(`animationiteration`),Yr=Kr(`animationstart`),Xr=Kr(`transitionrun`),Zr=Kr(`transitionstart`),Qr=Kr(`transitioncancel`),$r=Kr(`transitionend`),ei=new Map,ti=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);ti.push(`scrollEnd`);function ni(e,t){ei.set(e,t),At(t,[e])}var ri=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},ii=[],ai=0,oi=0;function si(){for(var e=ai,t=oi=ai=0;t<e;){var n=ii[t];ii[t++]=null;var r=ii[t];ii[t++]=null;var i=ii[t];ii[t++]=null;var a=ii[t];if(ii[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&di(n,i,a)}}function ci(e,t,n,r){ii[ai++]=e,ii[ai++]=t,ii[ai++]=n,ii[ai++]=r,oi|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function li(e,t,n,r){return ci(e,t,n,r),fi(e)}function ui(e,t){return ci(e,null,null,t),fi(e)}function di(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-Je(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function fi(e){if(50<du)throw du=0,fu=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var pi={};function mi(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function hi(e,t,n,r){return new mi(e,t,n,r)}function gi(e){return e=e.prototype,!(!e||!e.isReactComponent)}function _i(e,t){var n=e.alternate;return n===null?(n=hi(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function vi(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function yi(e,t,n,r,a,o){var s=0;if(r=e,typeof e==`function`)gi(e)&&(s=1);else if(typeof e==`string`)s=Uf(e,n,ge.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(e){case ae:return e=hi(31,n,t,a),e.elementType=ae,e.lanes=o,e;case y:return bi(n.children,a,o,t);case b:s=8,a|=24;break;case x:return e=hi(12,n,t,a|2),e.elementType=x,e.lanes=o,e;case te:return e=hi(13,n,t,a),e.elementType=te,e.lanes=o,e;case ne:return e=hi(19,n,t,a),e.elementType=ne,e.lanes=o,e;default:if(typeof e==`object`&&e)switch(e.$$typeof){case S:s=10;break a;case ee:s=9;break a;case C:s=11;break a;case re:s=14;break a;case ie:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=hi(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function bi(e,t,n,r){return e=hi(7,e,r,t),e.lanes=n,e}function xi(e,t,n){return e=hi(6,e,null,t),e.lanes=n,e}function Si(e){var t=hi(18,null,null,0);return t.stateNode=e,t}function Ci(e,t,n){return t=hi(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var wi=new WeakMap;function Ti(e,t){if(typeof e==`object`&&e){var n=wi.get(e);return n===void 0?(t={value:e,source:t,stack:Ae(t)},wi.set(e,t),t):n}return{value:e,source:t,stack:Ae(t)}}var Ei=[],Di=0,Oi=null,ki=0,Ai=[],ji=0,Mi=null,Ni=1,Pi=``;function Fi(e,t){Ei[Di++]=ki,Ei[Di++]=Oi,Oi=e,ki=t}function Ii(e,t,n){Ai[ji++]=Ni,Ai[ji++]=Pi,Ai[ji++]=Mi,Mi=e;var r=Ni;e=Pi;var i=32-Je(r)-1;r&=~(1<<i),n+=1;var a=32-Je(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,Ni=1<<32-Je(t)+i|n<<i|r,Pi=a+e}else Ni=1<<a|n<<i|r,Pi=e}function Li(e){e.return!==null&&(Fi(e,1),Ii(e,1,0))}function Ri(e){for(;e===Oi;)Oi=Ei[--Di],Ei[Di]=null,ki=Ei[--Di],Ei[Di]=null;for(;e===Mi;)Mi=Ai[--ji],Ai[ji]=null,Pi=Ai[--ji],Ai[ji]=null,Ni=Ai[--ji],Ai[ji]=null}function zi(e,t){Ai[ji++]=Ni,Ai[ji++]=Pi,Ai[ji++]=Mi,Ni=t.id,Pi=t.overflow,Mi=e}var Bi=null,M=null,N=!1,Vi=null,Hi=!1,Ui=Error(i(519));function Wi(e){throw Xi(Ti(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),Ui}function Gi(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[k]=e,t[gt]=r,n){case`dialog`:Q(`cancel`,t),Q(`close`,t);break;case`iframe`:case`object`:case`embed`:Q(`load`,t);break;case`video`:case`audio`:for(n=0;n<_d.length;n++)Q(_d[n],t);break;case`source`:Q(`error`,t);break;case`img`:case`image`:case`link`:Q(`error`,t),Q(`load`,t);break;case`details`:Q(`toggle`,t);break;case`input`:Q(`invalid`,t),qt(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:Q(`invalid`,t);break;case`textarea`:Q(`invalid`,t),Zt(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||Md(t.textContent,n)?(r.popover!=null&&(Q(`beforetoggle`,t),Q(`toggle`,t)),r.onScroll!=null&&Q(`scroll`,t),r.onScrollEnd!=null&&Q(`scrollend`,t),r.onClick!=null&&(t.onclick=sn),t=!0):t=!1,t||Wi(e,!0)}function Ki(e){for(Bi=e.return;Bi;)switch(Bi.tag){case 5:case 31:case 13:Hi=!1;return;case 27:case 3:Hi=!0;return;default:Bi=Bi.return}}function qi(e){if(e!==Bi)return!1;if(!N)return Ki(e),N=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=n===`form`||n===`button`||Ud(e.type,e.memoizedProps)),n=!n),n&&M&&Wi(e),Ki(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));M=uf(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));M=uf(e)}else t===27?(t=M,Zd(e.type)?(e=lf,lf=null,M=e):M=t):M=Bi?cf(e.stateNode.nextSibling):null;return!0}function Ji(){M=Bi=null,N=!1}function Yi(){var e=Vi;return e!==null&&(Zl===null?Zl=e:Zl.push.apply(Zl,e),Vi=null),e}function Xi(e){Vi===null?Vi=[e]:Vi.push(e)}var Zi=he(null),Qi=null,$i=null;function ea(e,t,n){D(Zi,t._currentValue),t._currentValue=n}function ta(e){e._currentValue=Zi.current,E(Zi)}function na(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function ra(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),na(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),na(s,n,e),s=null}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function ia(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;kr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===ye.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[Qf]:e.push(Qf))}a=a.return}e!==null&&ra(t,e,n,r),t.flags|=262144}function aa(e){for(e=e.firstContext;e!==null;){if(!kr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function oa(e){Qi=e,$i=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function sa(e){return la(Qi,e)}function ca(e,t){return Qi===null&&oa(e),la(e,t)}function la(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},$i===null){if(e===null)throw Error(i(308));$i=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else $i=$i.next=t;return n}var ua=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},da=t.unstable_scheduleCallback,fa=t.unstable_NormalPriority,P={$$typeof:S,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function pa(){return{controller:new ua,data:new Map,refCount:0}}function ma(e){e.refCount--,e.refCount===0&&da(fa,function(){e.controller.abort()})}var ha=null,ga=0,_a=0,va=null;function ya(e,t){if(ha===null){var n=ha=[];ga=0,_a=dd(),va={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return ga++,t.then(ba,ba),t}function ba(){if(--ga===0&&ha!==null){va!==null&&(va.status=`fulfilled`);var e=ha;ha=null,_a=0,va=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function xa(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var Sa=w.S;w.S=function(e,t){eu=Ie(),typeof t==`object`&&t&&typeof t.then==`function`&&ya(e,t),Sa!==null&&Sa(e,t)};var Ca=he(null);function wa(){var e=Ca.current;return e===null?K.pooledCache:e}function Ta(e,t){t===null?D(Ca,Ca.current):D(Ca,t.pool)}function Ea(){var e=wa();return e===null?null:{parent:P._currentValue,pool:e}}var Da=Error(i(460)),Oa=Error(i(474)),ka=Error(i(542)),Aa={then:function(){}};function ja(e){return e=e.status,e===`fulfilled`||e===`rejected`}function Ma(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(sn,sn),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Ia(e),e;default:if(typeof t.status==`string`)t.then(sn,sn);else{if(e=K,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Ia(e),e}throw Pa=t,Da}}function Na(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(Pa=e,Da):e}}var Pa=null;function Fa(){if(Pa===null)throw Error(i(459));var e=Pa;return Pa=null,e}function Ia(e){if(e===Da||e===ka)throw Error(i(483))}var La=null,Ra=0;function za(e){var t=Ra;return Ra+=1,La===null&&(La=[]),Ma(La,e,t)}function Ba(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function Va(e,t){throw t.$$typeof===g?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function Ha(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=_i(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=67108866,n):(r=r.index,r<n?(t.flags|=67108866,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=67108866),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=xi(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===y?d(e,t,n.props.children,r,n.key):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===ie&&Na(i)===t.type)?(t=a(t,n.props),Ba(t,n),t.return=e,t):(t=yi(n.type,n.key,n.props,null,e.mode,r),Ba(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=Ci(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=bi(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=xi(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case _:return n=yi(t.type,t.key,t.props,null,e.mode,n),Ba(n,t),n.return=e,n;case v:return t=Ci(t,e.mode,n),t.return=e,t;case ie:return t=Na(t),f(e,t,n)}if(de(t)||ce(t))return t=bi(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,za(t),n);if(t.$$typeof===S)return f(e,ca(e,t),n);Va(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case _:return n.key===i?l(e,t,n,r):null;case v:return n.key===i?u(e,t,n,r):null;case ie:return n=Na(n),p(e,t,n,r)}if(de(n)||ce(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,za(n),r);if(n.$$typeof===S)return p(e,t,ca(e,n),r);Va(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case _:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case v:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case ie:return r=Na(r),m(e,t,n,r,i)}if(de(r)||ce(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,za(r),i);if(r.$$typeof===S)return m(e,t,n,ca(t,r),i);Va(t,r)}return null}function h(i,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),N&&Fi(i,h),l;if(d===null){for(;h<s.length;h++)d=f(i,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return N&&Fi(i,h),l}for(d=r(d);h<s.length;h++)g=m(d,i,h,s[h],c),g!==null&&(e&&g.alternate!==null&&d.delete(g.key===null?h:g.key),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(i,e)}),N&&Fi(i,h),l}function g(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),N&&Fi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return N&&Fi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),N&&Fi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ie&&Na(l)===r.type){n(e,r.sibling),c=a(r,o.props),Ba(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===y?(c=bi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=yi(o.type,o.key,o.props,null,e.mode,c),Ba(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Ci(o,e.mode,c),c.return=e,e=c}return s(e);case ie:return o=Na(o),b(e,r,o,c)}if(de(o))return h(e,r,o,c);if(ce(o)){if(l=ce(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,za(o),c);if(o.$$typeof===S)return b(e,r,ca(e,o),c);Va(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=xi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ra=0;var i=b(e,t,n,r);return La=null,i}catch(t){if(t===Da||t===ka)throw t;var a=hi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ua=Ha(!0),Wa=Ha(!1),Ga=!1;function Ka(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function qa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ja(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ya(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,G&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=fi(e),di(e,null,n),t}return ci(e,r,t,n),fi(e)}function Xa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ut(e,n)}}function Za(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n}else e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Qa=!1;function $a(){if(Qa){var e=va;if(e!==null)throw e}}function eo(e,t,n,r){Qa=!1;var i=e.updateQueue;Ga=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(J&f)===f:(r&f)===f){f!==0&&f===_a&&(Qa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ga=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function to(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function no(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)to(n[e],t)}var ro=he(null),io=he(0);function ao(e,t){e=Wl,D(io,e),D(ro,t),Wl=e|t.baseLanes}function oo(){D(io,Wl),D(ro,ro.current)}function so(){Wl=io.current,E(ro),E(io)}var co=he(null),lo=null;function uo(e){var t=e.alternate;D(F,F.current&1),D(co,e),lo===null&&(t===null||ro.current!==null||t.memoizedState!==null)&&(lo=e)}function fo(e){D(F,F.current),D(co,e),lo===null&&(lo=e)}function po(e){e.tag===22?(D(F,F.current),D(co,e),lo===null&&(lo=e)):mo(e)}function mo(){D(F,F.current),D(co,co.current)}function ho(e){E(co),lo===e&&(lo=null),E(F)}var F=he(0);function go(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||af(n)||of(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder===`forwards`||t.memoizedProps.revealOrder===`backwards`||t.memoizedProps.revealOrder===`unstable_legacy-backwards`||t.memoizedProps.revealOrder===`together`)){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var _o=0,I=null,L=null,R=null,vo=!1,yo=!1,bo=!1,xo=0,So=0,Co=null,wo=0;function z(){throw Error(i(321))}function To(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!kr(e[n],t[n]))return!1;return!0}function Eo(e,t,n,r,i,a){return _o=a,I=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,w.H=e===null||e.memoizedState===null?Hs:Us,bo=!1,a=n(r,i),bo=!1,yo&&(a=Oo(t,n,r,i)),Do(e),a}function Do(e){w.H=Vs;var t=L!==null&&L.next!==null;if(_o=0,R=L=I=null,vo=!1,So=0,Co=null,t)throw Error(i(300));e===null||V||(e=e.dependencies,e!==null&&aa(e)&&(V=!0))}function Oo(e,t,n,r){I=e;var a=0;do{if(yo&&(Co=null),So=0,yo=!1,25<=a)throw Error(i(301));if(a+=1,R=L=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}w.H=Ws,o=t(n,r)}while(yo);return o}function ko(){var e=w.H,t=e.useState()[0];return t=typeof t.then==`function`?Fo(t):t,e=e.useState()[0],(L===null?null:L.memoizedState)!==e&&(I.flags|=1024),t}function Ao(){var e=xo!==0;return xo=0,e}function jo(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Mo(e){if(vo){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}vo=!1}_o=0,R=L=I=null,yo=!1,So=xo=0,Co=null}function No(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return R===null?I.memoizedState=R=e:R=R.next=e,R}function B(){if(L===null){var e=I.alternate;e=e===null?null:e.memoizedState}else e=L.next;var t=R===null?I.memoizedState:R.next;if(t!==null)R=t,L=e;else{if(e===null)throw I.alternate===null?Error(i(467)):Error(i(310));L=e,e={memoizedState:L.memoizedState,baseState:L.baseState,baseQueue:L.baseQueue,queue:L.queue,next:null},R===null?I.memoizedState=R=e:R=R.next=e}return R}function Po(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Fo(e){var t=So;return So+=1,Co===null&&(Co=[]),e=Ma(Co,e,t),t=I,(R===null?t.memoizedState:R.next)===null&&(t=t.alternate,w.H=t===null||t.memoizedState===null?Hs:Us),e}function Io(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return Fo(e);if(e.$$typeof===S)return sa(e)}throw Error(i(438,String(e)))}function Lo(e){var t=null,n=I.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=I.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=Po(),I.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=oe;return t.index++,n}function Ro(e,t){return typeof t==`function`?t(e):t}function zo(e){return Bo(B(),L,e)}function Bo(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(_o&f)===f:(J&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===_a&&(d=!0);else if((_o&p)===p){u=u.next,p===_a&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,I.lanes|=p,Gl|=p;f=u.action,bo&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,I.lanes|=f,Gl|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!kr(o,e.memoizedState)&&(V=!0,d&&(n=va,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Vo(e){var t=B(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);kr(o,t.memoizedState)||(V=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Ho(e,t,n){var r=I,a=B(),o=N;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!kr((L||a).memoizedState,n);if(s&&(a.memoizedState=n,V=!0),a=a.queue,ps(Go.bind(null,r,a,e),[e]),a.getSnapshot!==t||s||R!==null&&R.memoizedState.tag&1){if(r.flags|=2048,cs(9,{destroy:void 0},Wo.bind(null,r,a,n,t),null),K===null)throw Error(i(349));o||_o&127||Uo(r,t,n)}return n}function Uo(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=I.updateQueue,t===null?(t=Po(),I.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Wo(e,t,n,r){t.value=n,t.getSnapshot=r,Ko(t)&&qo(e)}function Go(e,t,n){return n(function(){Ko(t)&&qo(e)})}function Ko(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!kr(e,n)}catch{return!0}}function qo(e){var t=ui(e,2);t!==null&&hu(t,e,2)}function Jo(e){var t=No();if(typeof e==`function`){var n=e;if(e=n(),bo){qe(!0);try{n()}finally{qe(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:e},t}function Yo(e,t,n,r){return e.baseState=n,Bo(e,L,typeof r==`function`?r:Ro)}function Xo(e,t,n,r,a){if(Rs(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};w.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,Zo(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Zo(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=w.T,o={};w.T=o;try{var s=n(i,r),c=w.S;c!==null&&c(o,s),Qo(e,t,s)}catch(n){es(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),w.T=a}}else try{a=n(i,r),Qo(e,t,a)}catch(n){es(e,t,n)}}function Qo(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){$o(e,t,n)},function(n){return es(e,t,n)}):$o(e,t,n)}function $o(e,t,n){t.status=`fulfilled`,t.value=n,ts(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Zo(e,n)))}function es(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,ts(t),t=t.next;while(t!==r)}e.action=null}function ts(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function ns(e,t){return t}function rs(e,t){if(N){var n=K.formState;if(n!==null){a:{var r=I;if(N){if(M){b:{for(var i=M,a=Hi;i.nodeType!==8;)if(!a||(i=cf(i.nextSibling),i===null)){i=null;break b}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){M=cf(i.nextSibling),r=i.data===`F!`;break a}}Wi(r)}r=!1}r&&(t=n[0])}}return n=No(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ns,lastRenderedState:t},n.queue=r,n=Fs.bind(null,I,r),r.dispatch=n,r=Jo(!1),a=Ls.bind(null,I,!1,r.queue),r=No(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=Xo.bind(null,I,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function is(e){return as(B(),L,e)}function as(e,t,n){if(t=Bo(e,t,ns)[0],e=zo(Ro)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=Fo(t)}catch(e){throw e===Da?ka:e}else r=t;t=B();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(I.flags|=2048,cs(9,{destroy:void 0},os.bind(null,i,n),null)),[r,a,e]}function os(e,t){e.action=t}function ss(e){var t=B(),n=L;if(n!==null)return as(t,n,e);B(),t=t.memoizedState,n=B();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function cs(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=I.updateQueue,t===null&&(t=Po(),I.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ls(){return B().memoizedState}function us(e,t,n,r){var i=No();I.flags|=e,i.memoizedState=cs(1|t,{destroy:void 0},n,r===void 0?null:r)}function ds(e,t,n,r){var i=B();r=r===void 0?null:r;var a=i.memoizedState.inst;L!==null&&r!==null&&To(r,L.memoizedState.deps)?i.memoizedState=cs(t,a,n,r):(I.flags|=e,i.memoizedState=cs(1|t,a,n,r))}function fs(e,t){us(8390656,8,e,t)}function ps(e,t){ds(2048,8,e,t)}function ms(e){I.flags|=4;var t=I.updateQueue;if(t===null)t=Po(),I.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function hs(e){var t=B().memoizedState;return ms({ref:t,nextImpl:e}),function(){if(G&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function gs(e,t){return ds(4,2,e,t)}function _s(e,t){return ds(4,4,e,t)}function vs(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function ys(e,t,n){n=n==null?null:n.concat([e]),ds(4,4,vs.bind(null,t,e),n)}function bs(){}function xs(e,t){var n=B();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&To(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ss(e,t){var n=B();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&To(t,r[1]))return r[0];if(r=e(),bo){qe(!0);try{e()}finally{qe(!1)}}return n.memoizedState=[r,t],r}function Cs(e,t,n){return n===void 0||_o&1073741824&&!(J&261930)?e.memoizedState=t:(e.memoizedState=n,e=mu(),I.lanes|=e,Gl|=e,n)}function ws(e,t,n,r){return kr(n,t)?n:ro.current===null?!(_o&42)||_o&1073741824&&!(J&261930)?(V=!0,e.memoizedState=n):(e=mu(),I.lanes|=e,Gl|=e,t):(e=Cs(e,n,r),kr(e,t)||(V=!0),e)}function Ts(e,t,n,r,i){var a=T.p;T.p=a!==0&&8>a?a:8;var o=w.T,s={};w.T=s,Ls(e,!1,t,n);try{var c=i(),l=w.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Is(e,t,xa(c,r),pu(e)):Is(e,t,r,pu(e))}catch(n){Is(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{T.p=a,o!==null&&s.types!==null&&(o.types=s.types),w.T=o}}function Es(){}function Ds(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Os(e).queue;Ts(e,a,t,fe,n===null?Es:function(){return ks(e),n(r)})}function Os(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:fe,baseState:fe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:fe},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ks(e){var t=Os(e);t.next===null&&(t=e.alternate.memoizedState),Is(e,t.next.queue,{},pu())}function As(){return sa(Qf)}function js(){return B().memoizedState}function Ms(){return B().memoizedState}function Ns(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Ja(n);var r=Ya(t,e,n);r!==null&&(hu(r,t,n),Xa(r,t,n)),t={cache:pa()},e.payload=t;return}t=t.return}}function Ps(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Rs(e)?zs(t,n):(n=li(e,t,n,r),n!==null&&(hu(n,e,r),Bs(n,t,r)))}function Fs(e,t,n){Is(e,t,n,pu())}function Is(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Rs(e))zs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,kr(s,o))return ci(e,t,i,0),K===null&&si(),!1}catch{}if(n=li(e,t,i,r),n!==null)return hu(n,e,r),Bs(n,t,r),!0}return!1}function Ls(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Rs(e)){if(t)throw Error(i(479))}else t=li(e,n,r,2),t!==null&&hu(t,e,2)}function Rs(e){var t=e.alternate;return e===I||t!==null&&t===I}function zs(e,t){yo=vo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ut(e,n)}}var Vs={readContext:sa,use:Io,useCallback:z,useContext:z,useEffect:z,useImperativeHandle:z,useLayoutEffect:z,useInsertionEffect:z,useMemo:z,useReducer:z,useRef:z,useState:z,useDebugValue:z,useDeferredValue:z,useTransition:z,useSyncExternalStore:z,useId:z,useHostTransitionStatus:z,useFormState:z,useActionState:z,useOptimistic:z,useMemoCache:z,useCacheRefresh:z};Vs.useEffectEvent=z;var Hs={readContext:sa,use:Io,useCallback:function(e,t){return No().memoizedState=[e,t===void 0?null:t],e},useContext:sa,useEffect:fs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),us(4194308,4,vs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return us(4194308,4,e,t)},useInsertionEffect:function(e,t){us(4,2,e,t)},useMemo:function(e,t){var n=No();t=t===void 0?null:t;var r=e();if(bo){qe(!0);try{e()}finally{qe(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=No();if(n!==void 0){var i=n(t);if(bo){qe(!0);try{n(t)}finally{qe(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ps.bind(null,I,e),[r.memoizedState,e]},useRef:function(e){var t=No();return e={current:e},t.memoizedState=e},useState:function(e){e=Jo(e);var t=e.queue,n=Fs.bind(null,I,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:bs,useDeferredValue:function(e,t){return Cs(No(),e,t)},useTransition:function(){var e=Jo(!1);return e=Ts.bind(null,I,e.queue,!0,!1),No().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=I,a=No();if(N){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),K===null)throw Error(i(349));J&127||Uo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,fs(Go.bind(null,r,o,e),[e]),r.flags|=2048,cs(9,{destroy:void 0},Wo.bind(null,r,o,n,t),null),n},useId:function(){var e=No(),t=K.identifierPrefix;if(N){var n=Pi,r=Ni;n=(r&~(1<<32-Je(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=xo++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=wo++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:As,useFormState:rs,useActionState:rs,useOptimistic:function(e){var t=No();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Ls.bind(null,I,!0,n),n.dispatch=t,[e,t]},useMemoCache:Lo,useCacheRefresh:function(){return No().memoizedState=Ns.bind(null,I)},useEffectEvent:function(e){var t=No(),n={impl:e};return t.memoizedState=n,function(){if(G&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},Us={readContext:sa,use:Io,useCallback:xs,useContext:sa,useEffect:ps,useImperativeHandle:ys,useInsertionEffect:gs,useLayoutEffect:_s,useMemo:Ss,useReducer:zo,useRef:ls,useState:function(){return zo(Ro)},useDebugValue:bs,useDeferredValue:function(e,t){return ws(B(),L.memoizedState,e,t)},useTransition:function(){var e=zo(Ro)[0],t=B().memoizedState;return[typeof e==`boolean`?e:Fo(e),t]},useSyncExternalStore:Ho,useId:js,useHostTransitionStatus:As,useFormState:is,useActionState:is,useOptimistic:function(e,t){return Yo(B(),L,e,t)},useMemoCache:Lo,useCacheRefresh:Ms};Us.useEffectEvent=hs;var Ws={readContext:sa,use:Io,useCallback:xs,useContext:sa,useEffect:ps,useImperativeHandle:ys,useInsertionEffect:gs,useLayoutEffect:_s,useMemo:Ss,useReducer:Vo,useRef:ls,useState:function(){return Vo(Ro)},useDebugValue:bs,useDeferredValue:function(e,t){var n=B();return L===null?Cs(n,e,t):ws(n,L.memoizedState,e,t)},useTransition:function(){var e=Vo(Ro)[0],t=B().memoizedState;return[typeof e==`boolean`?e:Fo(e),t]},useSyncExternalStore:Ho,useId:js,useHostTransitionStatus:As,useFormState:ss,useActionState:ss,useOptimistic:function(e,t){var n=B();return L===null?(n.baseState=e,[e,n.queue.dispatch]):Yo(n,L,e,t)},useMemoCache:Lo,useCacheRefresh:Ms};Ws.useEffectEvent=hs;function Gs(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:h({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Ks={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=pu(),i=Ja(r);i.payload=t,n!=null&&(i.callback=n),t=Ya(e,i,r),t!==null&&(hu(t,e,r),Xa(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=pu(),i=Ja(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=Ya(e,i,r),t!==null&&(hu(t,e,r),Xa(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=pu(),r=Ja(n);r.tag=2,t!=null&&(r.callback=t),t=Ya(e,r,n),t!==null&&(hu(t,e,n),Xa(t,e,n))}};function qs(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!Ar(n,r)||!Ar(i,a):!0}function Js(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Ks.enqueueReplaceState(t,t.state,null)}function Ys(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=h({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Xs(e){ri(e)}function Zs(e){console.error(e)}function Qs(e){ri(e)}function $s(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function ec(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function tc(e,t,n){return n=Ja(n),n.tag=3,n.payload={element:null},n.callback=function(){$s(e,t)},n}function nc(e){return e=Ja(e),e.tag=3,e}function rc(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){ec(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){ec(t,n,r),typeof i!=`function`&&(ru===null?ru=new Set([this]):ru.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function ic(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&ia(t,n,a,!0),n=co.current,n!==null){switch(n.tag){case 31:case 13:return lo===null?Du():n.alternate===null&&X===0&&(X=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===Aa?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),Gu(e,r,a)),!1;case 22:return n.flags|=65536,r===Aa?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),Gu(e,r,a)),!1}throw Error(i(435,n.tag))}return Gu(e,r,a),Du(),!1}if(N)return t=co.current,t===null?(r!==Ui&&(t=Error(i(423),{cause:r}),Xi(Ti(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=Ti(r,n),a=tc(e.stateNode,r,a),Za(e,a),X!==4&&(X=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==Ui&&(e=Error(i(422),{cause:r}),Xi(Ti(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=Ti(o,n),Xl===null?Xl=[o]:Xl.push(o),X!==4&&(X=2),t===null)return!0;r=Ti(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=tc(n.stateNode,r,e),Za(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(ru===null||!ru.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=nc(a),rc(a,e,n,r),Za(n,a),!1}n=n.return}while(n!==null);return!1}var ac=Error(i(461)),V=!1;function oc(e,t,n,r){t.child=e===null?Wa(t,null,n,r):Ua(t,e.child,n,r)}function sc(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return oa(t),r=Eo(e,t,n,o,a,i),s=Ao(),e!==null&&!V?(jo(e,t,i),jc(e,t,i)):(N&&s&&Li(t),t.flags|=1,oc(e,t,r,i),t.child)}function cc(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!gi(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,lc(e,t,a,r,i)):(e=yi(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!Mc(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?Ar:n,n(o,r)&&e.ref===t.ref)return jc(e,t,i)}return t.flags|=1,e=_i(a,r),e.ref=t.ref,e.return=t,t.child=e}function lc(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(Ar(a,r)&&e.ref===t.ref){if(V=!1,t.pendingProps=r=a,Mc(e,i))e.flags&131072&&(V=!0);else return t.lanes=e.lanes,jc(e,t,i)}}return _c(e,t,n,r,i)}function uc(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return fc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Ta(t,a===null?null:a.cachePool),a===null?oo():ao(t,a),po(t);else return r=t.lanes=536870912,fc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&Ta(t,null),oo(),mo(t)):(Ta(t,a.cachePool),ao(t,a),mo(t),t.memoizedState=null);return oc(e,t,i,n),t.child}function dc(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function fc(e,t,n,r,i){var a=wa();return a=a===null?null:{parent:P._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&Ta(t,null),oo(),po(t),e!==null&&ia(e,t,r,!0),t.childLanes=i,null}function pc(e,t){return t=Ec({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function mc(e,t,n){return Ua(t,e.child,null,n),e=pc(t,t.pendingProps),e.flags|=2,ho(t),t.memoizedState=null,e}function hc(e,t,n){var r=t.pendingProps,a=!!(t.flags&128);if(t.flags&=-129,e===null){if(N){if(r.mode===`hidden`)return e=pc(t,r),t.lanes=536870912,dc(null,e);if(fo(t),(e=M)?(e=rf(e,Hi),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Mi===null?null:{id:Ni,overflow:Pi},retryLane:536870912,hydrationErrors:null},n=Si(e),n.return=t,t.child=n,Bi=t,M=null)):e=null,e===null)throw Wi(t);return t.lanes=536870912,null}return pc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(fo(t),a){if(t.flags&256)t.flags&=-257,t=mc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558))}else if(V||ia(e,t,n,!1),a=(n&e.childLanes)!==0,V||a){if(r=K,r!==null&&(s=dt(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,ui(e,s),hu(r,e,s),ac;Du(),t=mc(e,t,n)}else e=o.treeContext,M=cf(s.nextSibling),Bi=t,N=!0,Vi=null,Hi=!1,e!==null&&zi(t,e),t=pc(t,r),t.flags|=4096;return t}return e=_i(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function gc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function _c(e,t,n,r,i){return oa(t),n=Eo(e,t,n,r,void 0,i),r=Ao(),e!==null&&!V?(jo(e,t,i),jc(e,t,i)):(N&&r&&Li(t),t.flags|=1,oc(e,t,n,i),t.child)}function vc(e,t,n,r,i,a){return oa(t),t.updateQueue=null,n=Oo(t,r,n,i),Do(e),r=Ao(),e!==null&&!V?(jo(e,t,a),jc(e,t,a)):(N&&r&&Li(t),t.flags|=1,oc(e,t,n,a),t.child)}function yc(e,t,n,r,i){if(oa(t),t.stateNode===null){var a=pi,o=n.contextType;typeof o==`object`&&o&&(a=sa(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=Ks,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},Ka(t),o=n.contextType,a.context=typeof o==`object`&&o?sa(o):pi,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(Gs(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&Ks.enqueueReplaceState(a,a.state,null),eo(t,r,a,i),$a(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=Ys(n,s);a.props=c;var l=a.context,u=n.contextType;o=pi,typeof u==`object`&&u&&(o=sa(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&Js(t,a,r,o),Ga=!1;var f=t.memoizedState;a.state=f,eo(t,r,a,i),$a(),l=t.memoizedState,s||f!==l||Ga?(typeof d==`function`&&(Gs(t,n,d,r),l=t.memoizedState),(c=Ga||qs(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,qa(e,t),o=t.memoizedProps,u=Ys(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=pi,typeof l==`object`&&l&&(c=sa(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&Js(t,a,r,c),Ga=!1,f=t.memoizedState,a.state=f,eo(t,r,a,i),$a();var p=t.memoizedState;o!==d||f!==p||Ga||e!==null&&e.dependencies!==null&&aa(e.dependencies)?(typeof s==`function`&&(Gs(t,n,s,r),p=t.memoizedState),(u=Ga||qs(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&aa(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,gc(e,t),r=!!(t.flags&128),a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=Ua(t,e.child,null,i),t.child=Ua(t,null,n,i)):oc(e,t,n,i),t.memoizedState=a.state,e=t.child):e=jc(e,t,i),e}function bc(e,t,n,r){return Ji(),t.flags|=256,oc(e,t,n,r),t.child}var xc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Sc(e){return{baseLanes:e,cachePool:Ea()}}function Cc(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=Jl),e}function wc(e,t,n){var r=t.pendingProps,a=!1,o=!!(t.flags&128),s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:!!(F.current&2)),s&&(a=!0,t.flags&=-129),s=!!(t.flags&32),t.flags&=-33,e===null){if(N){if(a?uo(t):mo(t),(e=M)?(e=rf(e,Hi),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Mi===null?null:{id:Ni,overflow:Pi},retryLane:536870912,hydrationErrors:null},n=Si(e),n.return=t,t.child=n,Bi=t,M=null)):e=null,e===null)throw Wi(t);return of(e)?t.lanes=32:t.lanes=536870912,null}var c=r.children;return r=r.fallback,a?(mo(t),a=t.mode,c=Ec({mode:`hidden`,children:c},a),r=bi(r,a,n,null),c.return=t,r.return=t,c.sibling=r,t.child=c,r=t.child,r.memoizedState=Sc(n),r.childLanes=Cc(e,s,n),t.memoizedState=xc,dc(null,r)):(uo(t),Tc(t,c))}var l=e.memoizedState;if(l!==null&&(c=l.dehydrated,c!==null)){if(o)t.flags&256?(uo(t),t.flags&=-257,t=Dc(e,t,n)):t.memoizedState===null?(mo(t),c=r.fallback,a=t.mode,r=Ec({mode:`visible`,children:r.children},a),c=bi(c,a,n,null),c.flags|=2,r.return=t,c.return=t,r.sibling=c,t.child=r,Ua(t,e.child,null,n),r=t.child,r.memoizedState=Sc(n),r.childLanes=Cc(e,s,n),t.memoizedState=xc,t=dc(null,r)):(mo(t),t.child=e.child,t.flags|=128,t=null);else if(uo(t),of(c)){if(s=c.nextSibling&&c.nextSibling.dataset,s)var u=s.dgst;s=u,r=Error(i(419)),r.stack=``,r.digest=s,Xi({value:r,source:null,stack:null}),t=Dc(e,t,n)}else if(V||ia(e,t,n,!1),s=(n&e.childLanes)!==0,V||s){if(s=K,s!==null&&(r=dt(s,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,ui(e,r),hu(s,e,r),ac;af(c)||Du(),t=Dc(e,t,n)}else af(c)?(t.flags|=192,t.child=e.child,t=null):(e=l.treeContext,M=cf(c.nextSibling),Bi=t,N=!0,Vi=null,Hi=!1,e!==null&&zi(t,e),t=Tc(t,r.children),t.flags|=4096);return t}return a?(mo(t),c=r.fallback,a=t.mode,l=e.child,u=l.sibling,r=_i(l,{mode:`hidden`,children:r.children}),r.subtreeFlags=l.subtreeFlags&65011712,u===null?(c=bi(c,a,n,null),c.flags|=2):c=_i(u,c),c.return=t,r.return=t,r.sibling=c,t.child=r,dc(null,r),r=t.child,c=e.child.memoizedState,c===null?c=Sc(n):(a=c.cachePool,a===null?a=Ea():(l=P._currentValue,a=a.parent===l?a:{parent:l,pool:l}),c={baseLanes:c.baseLanes|n,cachePool:a}),r.memoizedState=c,r.childLanes=Cc(e,s,n),t.memoizedState=xc,dc(e.child,r)):(uo(t),n=e.child,e=n.sibling,n=_i(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(s=t.deletions,s===null?(t.deletions=[e],t.flags|=16):s.push(e)),t.child=n,t.memoizedState=null,n)}function Tc(e,t){return t=Ec({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function Ec(e,t){return e=hi(22,e,null,t),e.lanes=0,e}function Dc(e,t,n){return Ua(t,e.child,null,n),e=Tc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Oc(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),na(e.return,t,n)}function kc(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function Ac(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=F.current,s=!!(o&2);if(s?(o=o&1|2,t.flags|=128):o&=1,D(F,o),oc(e,t,r,n),r=N?ki:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Oc(e,n,t);else if(e.tag===19)Oc(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`forwards`:for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&go(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),kc(t,!1,i,n,a,r);break;case`backwards`:case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&go(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}kc(t,!0,n,null,a,r);break;case`together`:kc(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function jc(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Gl|=t.lanes,(n&t.childLanes)===0){if(e!==null){if(ia(e,t,n,!1),(n&t.childLanes)===0)return null}else return null}if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=_i(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=_i(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Mc(e,t){return(e.lanes&t)!==0||(e=e.dependencies,!!(e!==null&&aa(e)))}function Nc(e,t,n){switch(t.tag){case 3:be(t,t.stateNode.containerInfo),ea(t,P,e.memoizedState.cache),Ji();break;case 27:case 5:Se(t);break;case 4:be(t,t.stateNode.containerInfo);break;case 10:ea(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,fo(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(uo(t),e=jc(e,t,n),e===null?null:e.sibling):wc(e,t,n):(uo(t),t.flags|=128,null);uo(t);break;case 19:var i=!!(e.flags&128);if(r=(n&t.childLanes)!==0,r||=(ia(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return Ac(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),D(F,F.current),r)break;return null;case 22:return t.lanes=0,uc(e,t,n,t.pendingProps);case 24:ea(t,P,e.memoizedState.cache)}return jc(e,t,n)}function Pc(e,t,n){if(e!==null){if(e.memoizedProps!==t.pendingProps)V=!0;else{if(!Mc(e,n)&&!(t.flags&128))return V=!1,Nc(e,t,n);V=!!(e.flags&131072)}}else V=!1,N&&t.flags&1048576&&Ii(t,ki,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=Na(t.elementType),t.type=e,typeof e==`function`)gi(e)?(r=Ys(e,r),t.tag=1,t=yc(null,t,e,r,n)):(t.tag=0,t=_c(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===C){t.tag=11,t=sc(null,t,e,r,n);break a}if(a===re){t.tag=14,t=cc(null,t,e,r,n);break a}}throw t=ue(e)||e,Error(i(306,t,``))}}return t;case 0:return _c(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=Ys(r,t.pendingProps),yc(e,t,r,a,n);case 3:a:{if(be(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,qa(e,t),eo(t,r,null,n);var s=t.memoizedState;if(r=s.cache,ea(t,P,r),r!==o.cache&&ra(t,[P],n,!0),$a(),r=s.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=bc(e,t,r,n);break a}if(r!==a){a=Ti(Error(i(424)),t),Xi(a),t=bc(e,t,r,n);break a}switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(M=cf(e.firstChild),Bi=t,N=!0,Vi=null,Hi=!0,n=Wa(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Ji(),r===a){t=jc(e,t,n);break a}oc(e,t,r,n)}t=t.child}return t;case 26:return gc(e,t),e===null?(n=kf(t.type,null,t.pendingProps,null))?t.memoizedState=n:N||(n=t.type,e=t.pendingProps,r=Bd(ve.current).createElement(n),r[k]=t,r[gt]=e,Pd(r,n,e),A(r),t.stateNode=r):t.memoizedState=kf(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Se(t),e===null&&N&&(r=t.stateNode=ff(t.type,t.pendingProps,ve.current),Bi=t,Hi=!0,a=M,Zd(t.type)?(lf=a,M=cf(r.firstChild)):M=a),oc(e,t,t.pendingProps.children,n),gc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&N&&((a=r=M)&&(r=tf(r,t.type,t.pendingProps,Hi),r===null?a=!1:(t.stateNode=r,Bi=t,M=cf(r.firstChild),Hi=!1,a=!0)),a||Wi(t)),Se(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,Ud(a,o)?r=null:s!==null&&Ud(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=Eo(e,t,ko,null,null,n),Qf._currentValue=a),gc(e,t),oc(e,t,r,n),t.child;case 6:return e===null&&N&&((e=n=M)&&(n=nf(n,t.pendingProps,Hi),n===null?e=!1:(t.stateNode=n,Bi=t,M=null,e=!0)),e||Wi(t)),null;case 13:return wc(e,t,n);case 4:return be(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Ua(t,null,r,n):oc(e,t,r,n),t.child;case 11:return sc(e,t,t.type,t.pendingProps,n);case 7:return oc(e,t,t.pendingProps,n),t.child;case 8:return oc(e,t,t.pendingProps.children,n),t.child;case 12:return oc(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,ea(t,t.type,r.value),oc(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,oa(t),a=sa(a),r=r(a),t.flags|=1,oc(e,t,r,n),t.child;case 14:return cc(e,t,t.type,t.pendingProps,n);case 15:return lc(e,t,t.type,t.pendingProps,n);case 19:return Ac(e,t,n);case 31:return hc(e,t,n);case 22:return uc(e,t,n,t.pendingProps);case 24:return oa(t),r=sa(P),e===null?(a=wa(),a===null&&(a=K,o=pa(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},Ka(t),ea(t,P,a)):((e.lanes&n)!==0&&(qa(e,t),eo(t,null,null,n),$a()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,ea(t,P,r),r!==a.cache&&ra(t,[P],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),ea(t,P,r))),oc(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function Fc(e){e.flags|=4}function Ic(e,t,n,r,i){if((t=!!(e.mode&32))&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i){if(e.stateNode.complete)e.flags|=8192;else if(wu())e.flags|=8192;else throw Pa=Aa,Oa}}else e.flags&=-16777217}function Lc(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Wf(t)){if(wu())e.flags|=8192;else throw Pa=Aa,Oa}}function Rc(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:at(),e.lanes|=t,Yl|=t)}function zc(e,t){if(!N)switch(e.tailMode){case`hidden`:t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case`collapsed`:n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function H(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&65011712,r|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Bc(e,t,n){var r=t.pendingProps;switch(Ri(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return H(t),null;case 1:return H(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),ta(P),xe(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(qi(t)?Fc(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Yi())),H(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(Fc(t),o===null?(H(t),Ic(t,a,null,r,n)):(H(t),Lc(t,o))):o?o===e.memoizedState?(H(t),t.flags&=-16777217):(Fc(t),H(t),Lc(t,o)):(e=e.memoizedProps,e!==r&&Fc(t),H(t),Ic(t,a,e,r,n)),null;case 27:if(Ce(t),n=ve.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return H(t),null}e=ge.current,qi(t)?Gi(t,e):(e=ff(a,r,n),t.stateNode=e,Fc(t))}return H(t),null;case 5:if(Ce(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return H(t),null}if(o=ge.current,qi(t))Gi(t,o);else{var s=Bd(ve.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[k]=t,o[gt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Fc(t)}}return H(t),Ic(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ve.current,qi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Bi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[k]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Wi(t,!0)}else e=Bd(e).createTextNode(r),e[k]=t,t.stateNode=e}return H(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=qi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[k]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),e=!1}else n=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ho(t),t):(ho(t),null);if(t.flags&128)throw Error(i(558))}return H(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=qi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[k]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),a=!1}else a=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ho(t),t):(ho(t),null)}return ho(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Rc(t,t.updateQueue),H(t),null);case 4:return xe(),e===null&&Sd(t.stateNode.containerInfo),H(t),null;case 10:return ta(t.type),H(t),null;case 19:if(E(F),r=t.memoizedState,r===null)return H(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)zc(r,!1);else{if(X!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=go(e),o!==null){for(t.flags|=128,zc(r,!1),e=o.updateQueue,t.updateQueue=e,Rc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)vi(n,e),n=n.sibling;return D(F,F.current&1|2),N&&Fi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ie()>tu&&(t.flags|=128,a=!0,zc(r,!1),t.lanes=4194304)}}else{if(!a){if(e=go(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Rc(t,e),zc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!N)return H(t),null}else 2*Ie()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,zc(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(H(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ie(),e.sibling=null,n=F.current,D(F,a?n&1|2:n&1),N&&Fi(t,r.treeForkCount),e);case 22:case 23:return ho(t),so(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(H(t),t.subtreeFlags&6&&(t.flags|=8192)):H(t),n=t.updateQueue,n!==null&&Rc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&E(Ca),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ta(P),H(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Vc(e,t){switch(Ri(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ta(P),xe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ce(t),null;case 31:if(t.memoizedState!==null){if(ho(t),t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ho(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return E(F),null;case 4:return xe(),null;case 10:return ta(t.type),null;case 22:case 23:return ho(t),so(),e!==null&&E(Ca),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ta(P),null;case 25:return null;default:return null}}function Hc(e,t){switch(Ri(t),t.tag){case 3:ta(P),xe();break;case 26:case 27:case 5:Ce(t);break;case 4:xe();break;case 31:t.memoizedState!==null&&ho(t);break;case 13:ho(t);break;case 19:E(F);break;case 10:ta(t.type);break;case 22:case 23:ho(t),so(),e!==null&&E(Ca);break;case 24:ta(P)}}function Uc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Wc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Gc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{no(t,n)}catch(t){Z(e,e.return,t)}}}function Kc(e,t,n){n.props=Ys(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function qc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Jc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Yc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Xc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[gt]=t}catch(t){Z(e,e.return,t)}}function Zc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Qc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Zc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function $c(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=sn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for($c(e,t,n),e=e.sibling;e!==null;)$c(e,t,n),e=e.sibling}function el(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(el(e,t,n),e=e.sibling;e!==null;)el(e,t,n),e=e.sibling}function tl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[k]=e,t[gt]=n}catch(t){Z(e,e.return,t)}}var nl=!1,U=!1,rl=!1,il=typeof WeakSet==`function`?WeakSet:Set,al=null;function ol(e,t){if(e=e.containerInfo,Rd=sp,e=Pr(e),Fr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,al=t;al!==null;)if(t=al,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,al=e;else for(;al!==null;){switch(t=al,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n<e.length;n++)a=e[n],a.ref.impl=a.nextImpl;break;case 11:case 15:break;case 1:if(e&1024&&o!==null){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var h=Ys(n.type,a);e=r.getSnapshotBeforeUpdate(h,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(e){Z(n,n.return,e)}}break;case 3:if(e&1024){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)ef(e);else if(n===1)switch(e.nodeName){case`HEAD`:case`HTML`:case`BODY`:ef(e);break;default:e.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(e&1024)throw Error(i(163))}if(e=t.sibling,e!==null){e.return=t.return,al=e;break}al=t.return}}function sl(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:xl(e,n),r&4&&Uc(5,n);break;case 1:if(xl(e,n),r&4){if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Z(n,n.return,e)}else{var i=Ys(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Z(n,n.return,e)}}}r&64&&Gc(n),r&512&&qc(n,n.return);break;case 3:if(xl(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{no(e,t)}catch(e){Z(n,n.return,e)}}break;case 27:t===null&&r&4&&tl(n);case 26:case 5:xl(e,n),t===null&&r&4&&Yc(n),r&512&&qc(n,n.return);break;case 12:xl(e,n);break;case 31:xl(e,n),r&4&&fl(e,n);break;case 13:xl(e,n),r&4&&pl(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=Ju.bind(null,n),sf(e,n))));break;case 22:if(r=n.memoizedState!==null||nl,!r){t=t!==null&&t.memoizedState!==null||U,i=nl;var a=U;nl=r,(U=t)&&!a?Cl(e,n,!!(n.subtreeFlags&8772)):xl(e,n),nl=i,U=a}break;case 30:break;default:xl(e,n)}}function cl(e){var t=e.alternate;t!==null&&(e.alternate=null,cl(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&Ct(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var W=null,ll=!1;function ul(e,t,n){for(n=n.child;n!==null;)dl(e,t,n),n=n.sibling}function dl(e,t,n){if(Ke&&typeof Ke.onCommitFiberUnmount==`function`)try{Ke.onCommitFiberUnmount(Ge,n)}catch{}switch(n.tag){case 26:U||Jc(n,t),ul(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:U||Jc(n,t);var r=W,i=ll;Zd(n.type)&&(W=n.stateNode,ll=!1),ul(e,t,n),pf(n.stateNode),W=r,ll=i;break;case 5:U||Jc(n,t);case 6:if(r=W,i=ll,W=null,ul(e,t,n),W=r,ll=i,W!==null){if(ll)try{(W.nodeType===9?W.body:W.nodeName===`HTML`?W.ownerDocument.body:W).removeChild(n.stateNode)}catch(e){Z(n,t,e)}else try{W.removeChild(n.stateNode)}catch(e){Z(n,t,e)}}break;case 18:W!==null&&(ll?(e=W,Qd(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Np(e)):Qd(W,n.stateNode));break;case 4:r=W,i=ll,W=n.stateNode.containerInfo,ll=!0,ul(e,t,n),W=r,ll=i;break;case 0:case 11:case 14:case 15:Wc(2,n,t),U||Wc(4,n,t),ul(e,t,n);break;case 1:U||(Jc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Kc(n,t,r)),ul(e,t,n);break;case 21:ul(e,t,n);break;case 22:U=(r=U)||n.memoizedState!==null,ul(e,t,n),U=r;break;default:ul(e,t,n)}}function fl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Np(e)}catch(e){Z(t,t.return,e)}}}function pl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Np(e)}catch(e){Z(t,t.return,e)}}function ml(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new il),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new il),t;default:throw Error(i(435,e.tag))}}function hl(e,t){var n=ml(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Yu.bind(null,e,t);t.then(r,r)}})}function gl(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var a=n[r],o=e,s=t,c=s;a:for(;c!==null;){switch(c.tag){case 27:if(Zd(c.type)){W=c.stateNode,ll=!1;break a}break;case 5:W=c.stateNode,ll=!1;break a;case 3:case 4:W=c.stateNode.containerInfo,ll=!0;break a}c=c.return}if(W===null)throw Error(i(160));dl(o,s,a),W=null,ll=!1,o=a.alternate,o!==null&&(o.return=null),a.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)vl(t,e),t=t.sibling}var _l=null;function vl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:gl(t,e),yl(e),r&4&&(Wc(3,e,e.return),Uc(3,e),Wc(5,e,e.return));break;case 1:gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),r&64&&nl&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?r:n.concat(r))));break;case 26:var a=_l;if(gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),r&4){var o=n===null?null:n.memoizedState;if(r=e.memoizedState,n===null){if(r===null){if(e.stateNode===null){a:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;b:switch(r){case`title`:o=a.getElementsByTagName(`title`)[0],(!o||o[St]||o[k]||o.namespaceURI===`http://www.w3.org/2000/svg`||o.hasAttribute(`itemprop`))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector(`head > title`))),Pd(o,r,n),o[k]=e,A(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&o.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&o.getAttribute(`title`)===(n.title==null?null:n.title)&&o.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){s.splice(c,1);break b}}o=a.createElement(r),Pd(o,r,n),a.head.appendChild(o);break;case`meta`:if(s=Vf(`meta`,`content`,a).get(r+(n.content||``))){for(c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`content`)===(n.content==null?null:``+n.content)&&o.getAttribute(`name`)===(n.name==null?null:n.name)&&o.getAttribute(`property`)===(n.property==null?null:n.property)&&o.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&o.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){s.splice(c,1);break b}}o=a.createElement(r),Pd(o,r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[k]=e,A(o),r=o}e.stateNode=r}else Hf(a,e.type,e.stateNode)}else e.stateNode=If(a,r,e.memoizedProps)}else o===r?r===null&&e.stateNode!==null&&Xc(e,e.memoizedProps,n.memoizedProps):(o===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):o.count--,r===null?Hf(a,e.type,e.stateNode):If(a,r,e.memoizedProps))}break;case 27:gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),n!==null&&r&4&&Xc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(gl(t,e),yl(e),r&512&&(U||n===null||Jc(n,n.return)),e.flags&32){a=e.stateNode;try{Qt(a,``)}catch(t){Z(e,e.return,t)}}r&4&&e.stateNode!=null&&(a=e.memoizedProps,Xc(e,a,n===null?a:n.memoizedProps)),r&1024&&(rl=!0);break;case 6:if(gl(t,e),yl(e),r&4){if(e.stateNode===null)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(t){Z(e,e.return,t)}}break;case 3:if(Bf=null,a=_l,_l=gf(t.containerInfo),gl(t,e),_l=a,yl(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Np(t.containerInfo)}catch(t){Z(e,e.return,t)}rl&&(rl=!1,bl(e));break;case 4:r=_l,_l=gf(e.stateNode.containerInfo),gl(t,e),yl(e),_l=r;break;case 12:gl(t,e),yl(e);break;case 31:gl(t,e),yl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 13:gl(t,e),yl(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&($l=Ie()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 22:a=e.memoizedState!==null;var l=n!==null&&n.memoizedState!==null,u=nl,d=U;if(nl=u||a,U=d||l,gl(t,e),U=d,nl=u,yl(e),r&8192)a:for(t=e.stateNode,t._visibility=a?t._visibility&-2:t._visibility|1,a&&(n===null||l||nl||U||Sl(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){l=n=t;try{if(o=l.stateNode,a)s=o.style,typeof s.setProperty==`function`?s.setProperty(`display`,`none`,`important`):s.display=`none`;else{c=l.stateNode;var f=l.memoizedProps.style,p=f!=null&&f.hasOwnProperty(`display`)?f.display:null;c.style.display=p==null||typeof p==`boolean`?``:(``+p).trim()}}catch(e){Z(l,l.return,e)}}}else if(t.tag===6){if(n===null){l=t;try{l.stateNode.nodeValue=a?``:l.memoizedProps}catch(e){Z(l,l.return,e)}}}else if(t.tag===18){if(n===null){l=t;try{var m=l.stateNode;a?$d(m,!0):$d(l.stateNode,!1)}catch(e){Z(l,l.return,e)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break a;for(;t.sibling===null;){if(t.return===null||t.return===e)break a;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}r&4&&(r=e.updateQueue,r!==null&&(n=r.retryQueue,n!==null&&(r.retryQueue=null,hl(e,n))));break;case 19:gl(t,e),yl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 30:break;case 21:break;default:gl(t,e),yl(e)}}function yl(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Zc(r)){n=r;break}r=r.return}if(n==null)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;el(e,Qc(e),a);break;case 5:var o=n.stateNode;n.flags&32&&(Qt(o,``),n.flags&=-33),el(e,Qc(e),o);break;case 3:case 4:var s=n.stateNode.containerInfo;$c(e,Qc(e),s);break;default:throw Error(i(161))}}catch(t){Z(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function bl(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;bl(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function xl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)sl(e,t.alternate,t),t=t.sibling}function Sl(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Wc(4,t,t.return),Sl(t);break;case 1:Jc(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount==`function`&&Kc(t,t.return,n),Sl(t);break;case 27:pf(t.stateNode);case 26:case 5:Jc(t,t.return),Sl(t);break;case 22:t.memoizedState===null&&Sl(t);break;case 30:Sl(t);break;default:Sl(t)}e=e.sibling}}function Cl(e,t,n){for(n&&=!!(t.subtreeFlags&8772),t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags;switch(a.tag){case 0:case 11:case 15:Cl(i,a,n),Uc(4,a);break;case 1:if(Cl(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Z(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var s=r.stateNode;try{var c=i.shared.hiddenCallbacks;if(c!==null)for(i.shared.hiddenCallbacks=null,i=0;i<c.length;i++)to(c[i],s)}catch(e){Z(r,r.return,e)}}n&&o&64&&Gc(a),qc(a,a.return);break;case 27:tl(a);case 26:case 5:Cl(i,a,n),n&&r===null&&o&4&&Yc(a),qc(a,a.return);break;case 12:Cl(i,a,n);break;case 31:Cl(i,a,n),n&&o&4&&fl(i,a);break;case 13:Cl(i,a,n),n&&o&4&&pl(i,a);break;case 22:a.memoizedState===null&&Cl(i,a,n),qc(a,a.return);break;case 30:break;default:Cl(i,a,n)}t=t.sibling}}function wl(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&ma(n))}function Tl(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ma(e))}function El(e,t,n,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Dl(e,t,n,r),t=t.sibling}function Dl(e,t,n,r){var i=t.flags;switch(t.tag){case 0:case 11:case 15:El(e,t,n,r),i&2048&&Uc(9,t);break;case 1:El(e,t,n,r);break;case 3:El(e,t,n,r),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ma(e)));break;case 12:if(i&2048){El(e,t,n,r),e=t.stateNode;try{var a=t.memoizedProps,o=a.id,s=a.onPostCommit;typeof s==`function`&&s(o,t.alternate===null?`mount`:`update`,e.passiveEffectDuration,-0)}catch(e){Z(t,t.return,e)}}else El(e,t,n,r);break;case 31:El(e,t,n,r);break;case 13:El(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,o=t.alternate,t.memoizedState===null?a._visibility&2?El(e,t,n,r):(a._visibility|=2,Ol(e,t,n,r,!!(t.subtreeFlags&10256)||!1)):a._visibility&2?El(e,t,n,r):kl(e,t),i&2048&&wl(o,t);break;case 24:El(e,t,n,r),i&2048&&Tl(t.alternate,t);break;default:El(e,t,n,r)}}function Ol(e,t,n,r,i){for(i&&=!!(t.subtreeFlags&10256)||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:Ol(a,o,s,c,i),Uc(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,Ol(a,o,s,c,i)):u._visibility&2?Ol(a,o,s,c,i):kl(a,o),i&&l&2048&&wl(o.alternate,o);break;case 24:Ol(a,o,s,c,i),i&&l&2048&&Tl(o.alternate,o);break;default:Ol(a,o,s,c,i)}t=t.sibling}}function kl(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:kl(n,r),i&2048&&wl(r.alternate,r);break;case 24:kl(n,r),i&2048&&Tl(r.alternate,r);break;default:kl(n,r)}t=t.sibling}}var Al=8192;function jl(e,t,n){if(e.subtreeFlags&Al)for(e=e.child;e!==null;)Ml(e,t,n),e=e.sibling}function Ml(e,t,n){switch(e.tag){case 26:jl(e,t,n),e.flags&Al&&e.memoizedState!==null&&Gf(n,_l,e.memoizedState,e.memoizedProps);break;case 5:jl(e,t,n);break;case 3:case 4:var r=_l;_l=gf(e.stateNode.containerInfo),jl(e,t,n),_l=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Al,Al=16777216,jl(e,t,n),Al=r):jl(e,t,n));break;default:jl(e,t,n)}}function Nl(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Pl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];al=r,Ll(r,e)}Nl(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Fl(e),e=e.sibling}function Fl(e){switch(e.tag){case 0:case 11:case 15:Pl(e),e.flags&2048&&Wc(9,e,e.return);break;case 3:Pl(e);break;case 12:Pl(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Il(e)):Pl(e);break;default:Pl(e)}}function Il(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];al=r,Ll(r,e)}Nl(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Wc(8,t,t.return),Il(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Il(t));break;default:Il(t)}e=e.sibling}}function Ll(e,t){for(;al!==null;){var n=al;switch(n.tag){case 0:case 11:case 15:Wc(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:ma(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,al=r;else a:for(n=e;al!==null;){r=al;var i=r.sibling,a=r.return;if(cl(r),r===n){al=null;break a}if(i!==null){i.return=a,al=i;break a}al=a}}}var Rl={getCacheForType:function(e){var t=sa(P),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return sa(P).controller.signal}},zl=typeof WeakMap==`function`?WeakMap:Map,G=0,K=null,q=null,J=0,Y=0,Bl=null,Vl=!1,Hl=!1,Ul=!1,Wl=0,X=0,Gl=0,Kl=0,ql=0,Jl=0,Yl=0,Xl=null,Zl=null,Ql=!1,$l=0,eu=0,tu=1/0,nu=null,ru=null,iu=0,au=null,ou=null,su=0,cu=0,lu=null,uu=null,du=0,fu=null;function pu(){return G&2&&J!==0?J&-J:w.T===null?mt():dd()}function mu(){if(Jl===0){if(!(J&536870912)||N){var e=$e;$e<<=1,!($e&3932160)&&($e=262144),Jl=e}else Jl=536870912}return e=co.current,e!==null&&(e.flags|=32),Jl}function hu(e,t,n){(e===K&&(Y===2||Y===9)||e.cancelPendingCommit!==null)&&(Su(e,0),yu(e,J,Jl,!1)),st(e,n),(!(G&2)||e!==K)&&(e===K&&(!(G&2)&&(Kl|=n),X===4&&yu(e,J,Jl,!1)),rd(e))}function gu(e,t,n){if(G&6)throw Error(i(327));var r=!n&&!(t&127)&&(t&e.expiredLanes)===0||rt(e,t),a=r?Au(e,t):Ou(e,t,!0),o=r;do{if(a===0){Hl&&!r&&yu(e,t,0,!1);break}if(n=e.current.alternate,o&&!vu(n))a=Ou(e,t,!1),o=!1;else{if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=Xl;var l=c.current.memoizedState.isDehydrated;if(l&&(Su(c,s).flags|=256),s=Ou(c,s,!1),s!==2){if(Ul&&!l){c.errorRecoveryDisabledLanes|=o,Kl|=o,a=4;break a}o=Zl,Zl=a,o!==null&&(Zl===null?Zl=o:Zl.push.apply(Zl,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){Su(e,0),yu(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t)break;case 6:yu(r,t,Jl,!Vl);break a;case 2:Zl=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=$l+300-Ie(),10<a)){if(yu(r,t,Jl,!Vl),nt(r,0,!0)!==0)break a;su=t,r.timeoutHandle=Kd(_u.bind(null,r,n,Zl,nu,Ql,t,Jl,Kl,Yl,Vl,o,`Throttled`,-0,0),a);break a}_u(r,n,Zl,nu,Ql,t,Jl,Kl,Yl,Vl,o,null,-0,0)}break}}while(1);rd(e)}function _u(e,t,n,r,i,a,o,s,c,l,u,d,f,p){if(e.timeoutHandle=-1,d=t.subtreeFlags,d&8192||(d&16785408)==16785408){d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:sn},Ml(t,a,d);var m=(a&62914560)===a?$l-Ie():(a&4194048)===a?eu-Ie():0;if(m=qf(d,m),m!==null){su=a,e.cancelPendingCommit=m(Lu.bind(null,e,t,a,n,r,i,o,s,c,u,d,null,f,p)),yu(e,a,o,!l);return}}Lu(e,t,a,n,r,i,o,s,c)}function vu(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!kr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function yu(e,t,n,r){t&=~ql,t&=~Kl,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-Je(i),o=1<<a;r[a]=-1,i&=~o}n!==0&<(e,n,t)}function bu(){return G&6?!0:(id(0,!1),!1)}function xu(){if(q!==null){if(Y===0)var e=q.return;else e=q,$i=Qi=null,Mo(e),La=null,Ra=0,e=q;for(;e!==null;)Hc(e.alternate,e),e=e.return;q=null}}function Su(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,qd(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),su=0,xu(),K=e,q=n=_i(e.current,null),J=t,Y=0,Bl=null,Vl=!1,Hl=rt(e,t),Ul=!1,Yl=Jl=ql=Kl=Gl=X=0,Zl=Xl=null,Ql=!1,t&8&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var i=31-Je(r),a=1<<i;t|=e[i],r&=~a}return Wl=t,si(),n}function Cu(e,t){I=null,w.H=Vs,t===Da||t===ka?(t=Fa(),Y=3):t===Oa?(t=Fa(),Y=4):Y=t===ac?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,Bl=t,q===null&&(X=1,$s(e,Ti(t,e.current)))}function wu(){var e=co.current;return e===null?!0:(J&4194048)===J?lo===null:(J&62914560)===J||J&536870912?e===lo:!1}function Tu(){var e=w.H;return w.H=Vs,e===null?Vs:e}function Eu(){var e=w.A;return w.A=Rl,e}function Du(){X=4,Vl||(J&4194048)!==J&&co.current!==null||(Hl=!0),!(Gl&134217727)&&!(Kl&134217727)||K===null||yu(K,J,Jl,!1)}function Ou(e,t,n){var r=G;G|=2;var i=Tu(),a=Eu();(K!==e||J!==t)&&(nu=null,Su(e,t)),t=!1;var o=X;a:do try{if(Y!==0&&q!==null){var s=q,c=Bl;switch(Y){case 8:xu(),o=6;break a;case 3:case 2:case 9:case 6:co.current===null&&(t=!0);var l=Y;if(Y=0,Bl=null,Pu(e,s,c,l),n&&Hl){o=0;break a}break;default:l=Y,Y=0,Bl=null,Pu(e,s,c,l)}}ku(),o=X;break}catch(t){Cu(e,t)}while(1);return t&&e.shellSuspendCounter++,$i=Qi=null,G=r,w.H=i,w.A=a,q===null&&(K=null,J=0,si()),o}function ku(){for(;q!==null;)Mu(q)}function Au(e,t){var n=G;G|=2;var r=Tu(),a=Eu();K!==e||J!==t?(nu=null,tu=Ie()+500,Su(e,t)):Hl=rt(e,t);a:do try{if(Y!==0&&q!==null){t=q;var o=Bl;b:switch(Y){case 1:Y=0,Bl=null,Pu(e,t,o,1);break;case 2:case 9:if(ja(o)){Y=0,Bl=null,Nu(t);break}t=function(){Y!==2&&Y!==9||K!==e||(Y=7),rd(e)},o.then(t,t);break a;case 3:Y=7;break a;case 4:Y=5;break a;case 7:ja(o)?(Y=0,Bl=null,Nu(t)):(Y=0,Bl=null,Pu(e,t,o,7));break;case 5:var s=null;switch(q.tag){case 26:s=q.memoizedState;case 5:case 27:var c=q;if(s?Wf(s):c.stateNode.complete){Y=0,Bl=null;var l=c.sibling;if(l!==null)q=l;else{var u=c.return;u===null?q=null:(q=u,Fu(u))}break b}}Y=0,Bl=null,Pu(e,t,o,5);break;case 6:Y=0,Bl=null,Pu(e,t,o,6);break;case 8:xu(),X=6;break a;default:throw Error(i(462))}}ju();break}catch(t){Cu(e,t)}while(1);return $i=Qi=null,w.H=r,w.A=a,G=n,q===null?(K=null,J=0,si(),X):0}function ju(){for(;q!==null&&!Pe();)Mu(q)}function Mu(e){var t=Pc(e.alternate,e,Wl);e.memoizedProps=e.pendingProps,t===null?Fu(e):q=t}function Nu(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=vc(n,t,t.pendingProps,t.type,void 0,J);break;case 11:t=vc(n,t,t.pendingProps,t.type.render,t.ref,J);break;case 5:Mo(t);default:Hc(n,t),t=q=vi(t,Wl),t=Pc(n,t,Wl)}e.memoizedProps=e.pendingProps,t===null?Fu(e):q=t}function Pu(e,t,n,r){$i=Qi=null,Mo(t),La=null,Ra=0;var i=t.return;try{if(ic(e,i,t,n,J)){X=1,$s(e,Ti(n,e.current)),q=null;return}}catch(t){if(i!==null)throw q=i,t;X=1,$s(e,Ti(n,e.current)),q=null;return}t.flags&32768?(N||r===1?e=!0:Hl||J&536870912?e=!1:(Vl=e=!0,(r===2||r===9||r===3||r===6)&&(r=co.current,r!==null&&r.tag===13&&(r.flags|=16384))),Iu(t,e)):Fu(t)}function Fu(e){var t=e;do{if(t.flags&32768){Iu(t,Vl);return}e=t.return;var n=Bc(t.alternate,t,Wl);if(n!==null){q=n;return}if(t=t.sibling,t!==null){q=t;return}q=t=e}while(t!==null);X===0&&(X=5)}function Iu(e,t){do{var n=Vc(e.alternate,e);if(n!==null){n.flags&=32767,q=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){q=e;return}q=e=n}while(e!==null);X=6,q=null}function Lu(e,t,n,r,a,o,s,c,l){e.cancelPendingCommit=null;do Hu();while(iu!==0);if(G&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,o|=oi,ct(e,n,o,s,c,l),e===K&&(q=K=null,J=0),ou=t,au=e,su=n,cu=o,lu=a,uu=r,t.subtreeFlags&10256||t.flags&10256?(e.callbackNode=null,e.callbackPriority=0,Xu(Be,function(){return Uu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(t.flags&13878),t.subtreeFlags&13878||r){r=w.T,w.T=null,a=T.p,T.p=2,s=G,G|=4;try{ol(e,t,n)}finally{G=s,T.p=a,w.T=r}}iu=1,Ru(),zu(),Bu()}}function Ru(){if(iu===1){iu=0;var e=au,t=ou,n=!!(t.flags&13878);if(t.subtreeFlags&13878||n){n=w.T,w.T=null;var r=T.p;T.p=2;var i=G;G|=4;try{vl(t,e);var a=zd,o=Pr(e.containerInfo),s=a.focusedElem,c=a.selectionRange;if(o!==s&&s&&s.ownerDocument&&Nr(s.ownerDocument.documentElement,s)){if(c!==null&&Fr(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=Mr(s,h),v=Mr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}sp=!!Rd,zd=Rd=null}finally{G=i,T.p=r,w.T=n}}e.current=t,iu=2}}function zu(){if(iu===2){iu=0;var e=au,t=ou,n=!!(t.flags&8772);if(t.subtreeFlags&8772||n){n=w.T,w.T=null;var r=T.p;T.p=2;var i=G;G|=4;try{sl(e,t.alternate,t)}finally{G=i,T.p=r,w.T=n}}iu=3}}function Bu(){if(iu===4||iu===3){iu=0,Fe();var e=au,t=ou,n=su,r=uu;t.subtreeFlags&10256||t.flags&10256?iu=5:(iu=0,ou=au=null,Vu(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(ru=null),pt(n),t=t.stateNode,Ke&&typeof Ke.onCommitFiberRoot==`function`)try{Ke.onCommitFiberRoot(Ge,t,void 0,(t.current.flags&128)==128)}catch{}if(r!==null){t=w.T,i=T.p,T.p=2,w.T=null;try{for(var a=e.onRecoverableError,o=0;o<r.length;o++){var s=r[o];a(s.value,{componentStack:s.stack})}}finally{w.T=t,T.p=i}}su&3&&Hu(),rd(e),i=e.pendingLanes,n&261930&&i&42?e===fu?du++:(du=0,fu=e):du=0,id(0,!1)}}function Vu(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,ma(t)))}function Hu(){return Ru(),zu(),Bu(),Uu()}function Uu(){if(iu!==5)return!1;var e=au,t=cu;cu=0;var n=pt(su),r=w.T,a=T.p;try{T.p=32>n?32:n,w.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,G&6)throw Error(i(331));var c=G;if(G|=4,Fl(o.current),Dl(o,o.current,s,n),G=c,id(0,!1),Ke&&typeof Ke.onPostCommitFiberRoot==`function`)try{Ke.onPostCommitFiberRoot(Ge,o)}catch{}return!0}finally{T.p=a,w.T=r,Vu(e,t)}}function Wu(e,t,n){t=Ti(n,t),t=tc(e.stateNode,t,2),e=Ya(e,t,2),e!==null&&(st(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=Ti(n,e),n=nc(2),r=Ya(t,n,2),r!==null&&(rc(n,r,t,e),st(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new zl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Ul=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,K===e&&(J&n)===n&&(X===4||X===3&&(J&62914560)===J&&300>Ie()-$l?!(G&2)&&Su(e,0):ql|=n,Yl===J&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=at()),e=ui(e,t),e!==null&&(st(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Me(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Je(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=J,a=nt(r,r===K?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||rt(r,a)||(n=!0,ld(r,a))}r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Ie(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-Je(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=it(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=K,n=J,n=nt(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(Y===2||Y===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&Ne(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||rt(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&Ne(r),pt(n)){case 2:case 8:n=ze;break;case 32:n=Be;break;case 268435456:n=He;break;default:n=Be}return r=cd.bind(null,e),n=Me(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&Ne(r),e.callbackPriority=2,e.callbackNode=null,2}function cd(e,t){if(iu!==0&&iu!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Hu()&&e.callbackNode!==n)return null;var r=J;return r=nt(e,e===K?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(gu(e,r,t),sd(e,Ie()),e.callbackNode!=null&&e.callbackNode===n?cd.bind(null,e):null)}function ld(e,t){if(Hu())return null;gu(e,t,!0)}function ud(){Yd(function(){G&6?Me(Re,ad):od()})}function dd(){if(nd===0){var e=_a;e===0&&(e=Qe,Qe<<=1,!(Qe&261888)&&(Qe=256)),nd=e}return nd}function fd(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:on(``+e)}function pd(e,t){var n=t.ownerDocument.createElement(`input`);return n.name=t.name,n.value=t.value,e.id&&n.setAttribute(`form`,e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function md(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=fd((i[gt]||null).action),o=r.submitter;o&&(t=(t=o[gt]||null)?fd(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new On(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(nd!==0){var e=o?pd(i,o):new FormData(i);Ds(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=o?pd(i,o):new FormData(i),Ds(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var hd=0;hd<ti.length;hd++){var gd=ti[hd];ni(gd.toLowerCase(),`on`+(gd[0].toUpperCase()+gd.slice(1)))}ni(qr,`onAnimationEnd`),ni(Jr,`onAnimationIteration`),ni(Yr,`onAnimationStart`),ni(`dblclick`,`onDoubleClick`),ni(`focusin`,`onFocus`),ni(`focusout`,`onBlur`),ni(Xr,`onTransitionRun`),ni(Zr,`onTransitionStart`),ni(Qr,`onTransitionCancel`),ni($r,`onTransitionEnd`),jt(`onMouseEnter`,[`mouseout`,`mouseover`]),jt(`onMouseLeave`,[`mouseout`,`mouseover`]),jt(`onPointerEnter`,[`pointerout`,`pointerover`]),jt(`onPointerLeave`,[`pointerout`,`pointerover`]),At(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),At(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),At(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),At(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),At(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),At(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var _d=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),vd=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(_d));function yd(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){ri(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){ri(e)}i.currentTarget=null,a=c}}}}function Q(e,t){var n=t[vt];n===void 0&&(n=t[vt]=new Set);var r=e+`__bubble`;n.has(r)||(Cd(t,e,2,!1),n.add(r))}function bd(e,t,n){var r=0;t&&(r|=4),Cd(n,e,r,t)}var xd=`_reactListening`+Math.random().toString(36).slice(2);function Sd(e){if(!e[xd]){e[xd]=!0,Ot.forEach(function(t){t!==`selectionchange`&&(vd.has(t)||bd(t,!1,e),bd(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[xd]||(t[xd]=!0,bd(`selectionchange`,!1,t))}}function Cd(e,t,n,r){switch(mp(t)){case 2:var i=cp;break;case 8:i=lp;break;default:i=up}n=i.bind(null,t,n,e),i=void 0,!_n||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function wd(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var s=r.tag;if(s===3||s===4){var c=r.stateNode.containerInfo;if(c===i)break;if(s===4)for(s=r.return;s!==null;){var l=s.tag;if((l===3||l===4)&&s.stateNode.containerInfo===i)return;s=s.return}for(;c!==null;){if(s=wt(c),s===null)return;if(l=s.tag,l===5||l===6||l===26||l===27){r=a=s;continue a}c=c.parentNode}}r=r.return}mn(function(){var r=a,i=ln(n),s=[];a:{var c=ei.get(e);if(c!==void 0){var l=On,u=e;switch(e){case`keypress`:if(Cn(n)===0)break a;case`keydown`:case`keyup`:l=Kn;break;case`focusin`:u=`focus`,l=Ln;break;case`focusout`:u=`blur`,l=Ln;break;case`beforeblur`:case`afterblur`:l=Ln;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=Fn;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=In;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=Jn;break;case qr:case Jr:case Yr:l=Rn;break;case $r:l=Yn;break;case`scroll`:case`scrollend`:l=An;break;case`wheel`:l=Xn;break;case`copy`:case`cut`:case`paste`:l=zn;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=qn;break;case`toggle`:case`beforetoggle`:l=Zn}var d=!!(t&4),f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=hn(m,p),g!=null&&d.push(Td(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),s.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(c=e===`mouseover`||e===`pointerover`,l=e===`mouseout`||e===`pointerout`,c&&n!==cn&&(u=n.relatedTarget||n.fromElement)&&(wt(u)||u[_t]))break a;if((l||c)&&(c=i.window===i?i:(c=i.ownerDocument)?c.defaultView||c.parentWindow:window,l?(u=n.relatedTarget||n.toElement,l=r,u=u?wt(u):null,u!==null&&(f=o(u),d=u.tag,u!==f||d!==5&&d!==27&&d!==6)&&(u=null)):(l=null,u=r),l!==u)){if(d=Fn,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=qn,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=l==null?c:Et(l),h=u==null?c:Et(u),c=new d(g,m+`leave`,l,n,i),c.target=f,c.relatedTarget=h,g=null,wt(i)===r&&(d=new d(p,m+`enter`,u,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,l&&u)b:{for(d=Dd,p=l,m=u,h=0,g=p;g;g=d(g))h++;g=0;for(var _=m;_;_=d(_))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||m!==null&&p===m.alternate){d=p;break b}p=d(p),m=d(m)}d=null}else d=null;l!==null&&Od(s,c,l,d,!1),u!==null&&f!==null&&Od(s,f,u,d,!0)}}a:{if(c=r?Et(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var v=_r;else if(dr(c)){if(vr)v=Dr;else{v=Tr;var y=wr}}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&nn(r.elementType)&&(v=_r):v=Er;if(v&&=v(e,r)){fr(s,v,n,i);break a}y&&y(e,c,r),e===`focusout`&&r&&c.type===`number`&&r.memoizedProps.value!=null&&Jt(c,`number`,c.value)}switch(y=r?Et(r):window,e){case`focusin`:(dr(y)||y.contentEditable===`true`)&&(Lr=y,Rr=r,zr=null);break;case`focusout`:zr=Rr=Lr=null;break;case`mousedown`:Br=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:Br=!1,Vr(s,n,i);break;case`selectionchange`:if(Ir)break;case`keydown`:case`keyup`:Vr(s,n,i)}var b;if($n)b:{switch(e){case`compositionstart`:var x=`onCompositionStart`;break b;case`compositionend`:x=`onCompositionEnd`;break b;case`compositionupdate`:x=`onCompositionUpdate`;break b}x=void 0}else sr?ar(e,n)&&(x=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(x=`onCompositionStart`);x&&(nr&&n.locale!==`ko`&&(sr||x!==`onCompositionStart`?x===`onCompositionEnd`&&sr&&(b=Sn()):(yn=i,bn=`value`in yn?yn.value:yn.textContent,sr=!0)),y=Ed(r,x),0<y.length&&(x=new Bn(x,e,null,n,i),s.push({event:x,listeners:y}),b?x.data=b:(b=or(n),b!==null&&(x.data=b)))),(b=tr?cr(e,n):lr(e,n))&&(x=Ed(r,`onBeforeInput`),0<x.length&&(y=new Bn(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:y,listeners:x}),y.data=b)),md(s,e,r,n,i)}yd(s,t)})}function Td(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Ed(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=hn(e,n),i!=null&&r.unshift(Td(e,i,a)),i=hn(e,t),i!=null&&r.push(Td(e,i,a))),e.tag===3)return r;e=e.return}return[]}function Dd(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Od(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=hn(n,a),l!=null&&o.unshift(Td(n,l,c))):i||(l=hn(n,a),l!=null&&o.push(Td(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var kd=/\r\n?/g,Ad=/\u0000|\uFFFD/g;function jd(e){return(typeof e==`string`?e:``+e).replace(kd,`
|
|
10
|
+
`).replace(Ad,``)}function Md(e,t){return t=jd(t),jd(e)===t}function $(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Qt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Qt(e,``+r);break;case`className`:Lt(e,`class`,r);break;case`tabIndex`:Lt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Lt(e,n,r);break;case`style`:tn(e,r,o);break;case`data`:if(t!==`object`){Lt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)||r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=on(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&$(e,t,`name`,a.name,a,null),$(e,t,`formEncType`,a.formEncType,a,null),$(e,t,`formMethod`,a.formMethod,a,null),$(e,t,`formTarget`,a.formTarget,a,null)):($(e,t,`encType`,a.encType,a,null),$(e,t,`method`,a.method,a,null),$(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=on(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=sn);break;case`onScroll`:r!=null&&Q(`scroll`,e);break;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=on(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Q(`beforetoggle`,e),Q(`toggle`,e),It(e,`popover`,r);break;case`xlinkActuate`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Rt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Rt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Rt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Rt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:It(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=rn.get(n)||n,It(e,n,r))}}function Nd(e,t,n,r,a,o){switch(n){case`style`:tn(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Qt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Qt(e,``+r);break;case`onScroll`:r!=null&&Q(`scroll`,e);break;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=sn);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!kt.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[gt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):It(e,n,r)}}}function Pd(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Q(`error`,e),Q(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,o,s,n,null)}}a&&$(e,t,`srcSet`,n.srcSet,n,null),r&&$(e,t,`src`,n.src,n,null);return;case`input`:Q(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:$(e,t,r,d,n,null)}}qt(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Q(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:$(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&Yt(e,!!r,n,!0):Yt(e,!!r,t,!1);return;case`textarea`:for(s in Q(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:$(e,t,s,c,n,null)}Zt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:$(e,t,l,r,n,null)}return;case`dialog`:Q(`beforetoggle`,e),Q(`toggle`,e),Q(`cancel`,e),Q(`close`,e);break;case`iframe`:case`object`:Q(`load`,e);break;case`video`:case`audio`:for(r=0;r<_d.length;r++)Q(_d[r],e);break;case`image`:Q(`error`,e),Q(`load`,e);break;case`details`:Q(`toggle`,e);break;case`embed`:case`source`:case`link`:Q(`error`,e),Q(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,u,r,n,null)}return;default:if(nn(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Nd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&$(e,t,c,r,n,null))}function Fd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||$(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&$(e,t,p,m,r,f)}}Kt(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||$(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&$(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?Yt(e,!!n,n?[]:``,!1):Yt(e,!!n,t,!0)):Yt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:$(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&$(e,t,s,a,r,o)}Xt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:$(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:$(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&$(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:$(e,t,u,p,r,m)}return;default:if(nn(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Nd(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Nd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&$(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||$(e,t,f,p,r,m)}function Id(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Ld(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&Id(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Rd=null,zd=null;function Bd(e){return e.nodeType===9?e:e.ownerDocument}function Vd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Hd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Ud(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Wd=null;function Gd(){var e=window.event;return e&&e.type===`popstate`?e!==Wd&&(Wd=e,!0):(Wd=null,!1)}var Kd=typeof setTimeout==`function`?setTimeout:void 0,qd=typeof clearTimeout==`function`?clearTimeout:void 0,Jd=typeof Promise==`function`?Promise:void 0,Yd=typeof queueMicrotask==`function`?queueMicrotask:Jd===void 0?Kd:function(e){return Jd.resolve(null).then(e).catch(Xd)};function Xd(e){setTimeout(function(){throw e})}function Zd(e){return e===`head`}function Qd(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Np(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)pf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,pf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[St]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&pf(e.ownerDocument.body)}n=i}while(n);Np(t)}function $d(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8){if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++}n=r}while(n)}function ef(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:ef(n),Ct(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function tf(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r){if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e}else if(!e[St])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=cf(e.nextSibling),e===null)break}return null}function nf(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=cf(e.nextSibling),e===null))return null;return e}function rf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=cf(e.nextSibling),e===null))return null;return e}function af(e){return e.data===`$?`||e.data===`$~`}function of(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function sf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function cf(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var lf=null;function uf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return cf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function df(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function ff(e,t,n){switch(t=Bd(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function pf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Ct(e)}var mf=new Map,hf=new Set;function gf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var _f=T.d;T.d={f:vf,r:yf,D:Sf,C:Cf,L:wf,m:Tf,X:Df,S:Ef,M:Of};function vf(){var e=_f.f(),t=bu();return e||t}function yf(e){var t=Tt(e);t!==null&&t.tag===5&&t.type===`form`?ks(t):_f.r(e)}var bf=typeof document>`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Gt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),A(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Gt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Gt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Gt(n.imageSizes)+`"]`)):i+=`[href="`+Gt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),A(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Gt(r)+`"][href="`+Gt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),A(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Dt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);A(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Dt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),A(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Dt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),A(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ve.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Dt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=Dt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Dt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Gt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),A(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Gt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Gt(n.href)+`"]`);if(r)return t.instance=r,A(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),A(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,A(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),A(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,A(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),A(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Rf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function zf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Bf=null;function Vf(e,t,n){if(Bf===null){var r=new Map,i=Bf=new Map;i.set(n,r)}else i=Bf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[St]||a[k]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Hf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,A(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),A(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Kf===0&&(Kf=62500*Ld());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=Jf.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var Qf={$$typeof:S,Provider:null,Consumer:null,_currentValue:fe,_currentValue2:fe,_threadCount:0};function $f(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=ot(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ot(0),this.hiddenUpdates=ot(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function ep(e,t,n,r,i,a,o,s,c,l,u,d){return e=new $f(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=hi(3,null,null,t),e.current=a,a.stateNode=e,t=pa(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Ka(a),e}function tp(e){return e?(e=pi,e):pi}function np(e,t,n,r,i,a){i=tp(i),r.context===null?r.context=i:r.pendingContext=i,r=Ja(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=Ya(e,r,t),n!==null&&(hu(n,e,t),Xa(n,e,t))}function rp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ip(e,t){rp(e,t),(e=e.alternate)&&rp(e,t)}function ap(e){if(e.tag===13||e.tag===31){var t=ui(e,67108864);t!==null&&hu(t,e,67108864),ip(e,67108864)}}function op(e){if(e.tag===13||e.tag===31){var t=pu();t=ft(t);var n=ui(e,t);n!==null&&hu(n,e,t),ip(e,t)}}var sp=!0;function cp(e,t,n,r){var i=w.T;w.T=null;var a=T.p;try{T.p=2,up(e,t,n,r)}finally{T.p=a,w.T=i}}function lp(e,t,n,r){var i=w.T;w.T=null;var a=T.p;try{T.p=8,up(e,t,n,r)}finally{T.p=a,w.T=i}}function up(e,t,n,r){if(sp){var i=dp(r);if(i===null)wd(e,t,r,fp,n),Cp(e,r);else if(Tp(i,e,t,n,r))r.stopPropagation();else if(Cp(e,r),t&4&&-1<Sp.indexOf(e)){for(;i!==null;){var a=Tt(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=tt(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-Je(o);s.entanglements[1]|=c,o&=~c}rd(a),!(G&6)&&(tu=Ie()+500,id(0,!1))}}break;case 31:case 13:s=ui(a,2),s!==null&&hu(s,a,2),bu(),ip(a,2)}if(a=dp(r),a===null&&wd(e,t,r,fp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else wd(e,t,r,null,n)}}function dp(e){return e=ln(e),pp(e)}var fp=null;function pp(e){if(fp=null,e=wt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return fp=e,null}function mp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(Le()){case Re:return 2;case ze:return 8;case Be:case Ve:return 32;case He:return 268435456;default:return 32}default:return 32}}var hp=!1,gp=null,_p=null,vp=null,yp=new Map,bp=new Map,xp=[],Sp=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Cp(e,t){switch(e){case`focusin`:case`focusout`:gp=null;break;case`dragenter`:case`dragleave`:_p=null;break;case`mouseover`:case`mouseout`:vp=null;break;case`pointerover`:case`pointerout`:yp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:bp.delete(t.pointerId)}}function wp(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=Tt(t),t!==null&&ap(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Tp(e,t,n,r,i){switch(t){case`focusin`:return gp=wp(gp,e,t,n,r,i),!0;case`dragenter`:return _p=wp(_p,e,t,n,r,i),!0;case`mouseover`:return vp=wp(vp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return yp.set(a,wp(yp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,bp.set(a,wp(bp.get(a)||null,e,t,n,r,i)),!0}return!1}function Ep(e){var t=wt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,ht(e.priority,function(){op(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,ht(e.priority,function(){op(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Dp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=dp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);cn=r,n.target.dispatchEvent(r),cn=null}else return t=Tt(n),t!==null&&ap(t),e.blockedOn=n,!1;t.shift()}return!0}function Op(e,t,n){Dp(e)&&n.delete(t)}function kp(){hp=!1,gp!==null&&Dp(gp)&&(gp=null),_p!==null&&Dp(_p)&&(_p=null),vp!==null&&Dp(vp)&&(vp=null),yp.forEach(Op),bp.forEach(Op)}function Ap(e,n){e.blockedOn===n&&(e.blockedOn=null,hp||(hp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,kp)))}var jp=null;function Mp(e){jp!==e&&(jp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){jp===e&&(jp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(pp(r||n)===null)continue;break}var a=Tt(n);a!==null&&(e.splice(t,3),t-=3,Ds(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Np(e){function t(t){return Ap(t,e)}gp!==null&&Ap(gp,e),_p!==null&&Ap(_p,e),vp!==null&&Ap(vp,e),yp.forEach(t),bp.forEach(t);for(var n=0;n<xp.length;n++){var r=xp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<xp.length&&(n=xp[0],n.blockedOn===null);)Ep(n),n.blockedOn===null&&xp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[gt]||null;if(typeof a==`function`)o||Mp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[gt]||null)s=o.formAction;else if(pp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Mp(n)}}}function Pp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Fp(e){this._internalRoot=e}Ip.prototype.render=Fp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;np(n,pu(),e,t,null,null)},Ip.prototype.unmount=Fp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;np(e.current,2,null,e,null,null),bu(),t[_t]=null}};function Ip(e){this._internalRoot=e}Ip.prototype.unstable_scheduleHydration=function(e){if(e){var t=mt();e={blockedOn:null,target:e,priority:t};for(var n=0;n<xp.length&&t!==0&&t<xp[n].priority;n++);xp.splice(n,0,e),n===0&&Ep(e)}};var Lp=n.version;if(Lp!==`19.2.8`)throw Error(i(527,Lp,`19.2.8`));T.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=d(t),e=e===null?null:p(e),e=e===null?null:e.stateNode,e};var Rp={bundleType:0,version:`19.2.8`,rendererPackageName:`react-dom`,currentDispatcherRef:w,reconcilerVersion:`19.2.8`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var zp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!zp.isDisabled&&zp.supportsFiber)try{Ge=zp.inject(Rp),Ke=zp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Xs,s=Zs,c=Qs;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=ep(e,1,!1,null,null,n,r,null,o,s,c,Pp),e[_t]=t.current,Sd(e),new Fp(t)}})),g=o(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=c(g(),1),y=[`en`,`ko`,`de`,`fr`,`zh`,`zh-TW`,`ru`,`ja`,`tr`,`vi`,`pt`],b={observation:[`Identity-checked usage responses: JSON {json}, SSE {sse}; active bound streams: {streams}. Counts do not identify the sending process or prove composer recovery.`,`신원이 확인된 사용량 응답: JSON {json}, SSE {sse}; 연결된 검증 스트림: {streams}. 이 수치로 발신 프로세스나 입력창 복구를 확인할 수는 없습니다.`,`Nutzungsantworten mit geprüfter Identität: JSON {json}, SSE {sse}; aktive zugeordnete Streams: {streams}. Die Zahlen belegen weder den sendenden Prozess noch die Wiederherstellung der Eingabe.`,`Réponses d’usage à identité vérifiée : JSON {json}, SSE {sse} ; flux associés actifs : {streams}. Ces nombres ne prouvent ni le processus émetteur ni le rétablissement de la saisie.`,`身份已验证的用量响应:JSON {json},SSE {sse};活动绑定流:{streams}。这些计数无法证明发送进程或输入框已恢复。`,`身分已驗證的用量回應:JSON {json},SSE {sse};作用中的綁定串流:{streams}。這些計數無法證明傳送程序或輸入框已恢復。`,`Ответы об использовании с проверенной идентичностью: JSON {json}, SSE {sse}; активные связанные потоки: {streams}. Счётчики не подтверждают процесс-отправитель или восстановление ввода.`,`本人確認済みの使用量応答: JSON {json}、SSE {sse}。接続中の確認済みストリーム: {streams}。この数値だけでは送信プロセスや入力欄の復旧を確認できません。`,`Kimliği doğrulanmış kullanım yanıtları: JSON {json}, SSE {sse}; etkin bağlı akışlar: {streams}. Sayılar gönderen süreci veya giriş alanının düzeldiğini kanıtlamaz.`,`Phản hồi mức dùng đã xác minh danh tính: JSON {json}, SSE {sse}; luồng liên kết đang hoạt động: {streams}. Các số này không xác nhận tiến trình gửi hay ô nhập đã phục hồi.`,`Respostas de uso com identidade verificada: JSON {json}, SSE {sse}; fluxos vinculados ativos: {streams}. As contagens não identificam o processo que enviou nem comprovam a recuperação do campo de texto.`],cacheRefreshHint:[`Stopping correction does not immediately reset the Codex display. Codex must receive fresh usage data; this panel cannot confirm that refresh.`,`교정을 중단해도 Codex 화면이 즉시 원복되지는 않습니다. Codex가 새 사용량 데이터를 받아야 하며, 이 패널에서는 해당 갱신을 확인할 수 없습니다.`,`Das Stoppen der Korrektur setzt die Codex-Anzeige nicht sofort zurück. Codex muss neue Nutzungsdaten empfangen; dieses Panel kann die Aktualisierung nicht bestätigen.`,`L’arrêt de la correction ne rétablit pas immédiatement l’affichage de Codex. Codex doit recevoir de nouvelles données d’usage ; ce panneau ne peut pas confirmer cette actualisation.`,`停止修正不会立即恢复 Codex 界面。Codex 必须收到新的用量数据;此面板无法确认是否已刷新。`,`停止修正不會立即還原 Codex 畫面。Codex 必須收到新的用量資料;此面板無法確認是否已更新。`,`Остановка коррекции не восстанавливает отображение Codex мгновенно. Codex должен получить свежие данные об использовании; эта панель не может подтвердить обновление.`,`補正を停止しても Codex の表示はすぐには戻りません。Codex が新しい使用量データを受信する必要があり、このパネルでは更新を確認できません。`,`Düzeltmeyi durdurmak Codex görünümünü hemen eski haline getirmez. Codex yeni kullanım verilerini almalıdır; bu panel yenilemeyi doğrulayamaz.`,`Dừng hiệu chỉnh không khôi phục ngay giao diện Codex. Codex phải nhận dữ liệu sử dụng mới; bảng này không thể xác nhận việc làm mới.`,`Interromper a correção não redefine imediatamente a exibição do Codex. O Codex precisa receber dados de uso atualizados; este painel não consegue confirmar essa atualização.`],routingChanged:[`Native Codex routing no longer matches this OpenCodex process. Correction is off; review the integration before restarting observation.`,`Codex 기본 연결이 이 OpenCodex 프로세스와 일치하지 않습니다. 교정이 꺼졌습니다. 연동 설정을 확인한 뒤 관찰을 다시 시작하세요.`,`Die native Codex-Verbindung passt nicht mehr zu diesem OpenCodex-Prozess. Korrektur ist aus; Integration vor einem Neustart prüfen.`,`La connexion native Codex ne correspond plus à ce processus OpenCodex. La correction est désactivée ; vérifiez l’intégration avant de relancer l’observation.`,`原生 Codex 路由与此 OpenCodex 进程不再匹配。修正已关闭;重新观察前请检查集成。`,`原生 Codex 路由與此 OpenCodex 程序不再相符。修正已關閉;重新觀察前請檢查整合。`,`Маршрут Codex больше не соответствует этому процессу OpenCodex. Коррекция выключена; проверьте интеграцию перед перезапуском наблюдения.`,`Codex の接続先がこの OpenCodex プロセスと一致しません。補正はオフです。連携設定を確認してから観察を再開してください。`,`Codex yönlendirmesi artık bu OpenCodex süreciyle eşleşmiyor. Düzeltme kapalı; gözlemi yeniden başlatmadan önce entegrasyonu kontrol edin.`,`Định tuyến Codex không còn khớp tiến trình OpenCodex này. Hiệu chỉnh đã tắt; kiểm tra tích hợp trước khi quan sát lại.`,`O roteamento nativo do Codex não corresponde mais a este processo do OpenCodex. A correção está desativada; revise a integração antes de retomar a observação.`],autoStart:[`Resume observation when OpenCodex starts`,`OpenCodex 시작 시 관찰 자동 재개`,`Beobachtung beim Start von OpenCodex fortsetzen`,`Reprendre l’observation au démarrage d’OpenCodex`,`OpenCodex 启动时恢复观察`,`OpenCodex 啟動時恢復觀察`,`Возобновлять наблюдение при запуске OpenCodex`,`OpenCodex 起動時に観察を再開`,`OpenCodex başladığında gözlemi sürdür`,`Tiếp tục quan sát khi OpenCodex khởi động`,`Retomar a observação quando o OpenCodex iniciar`],autoStartHint:[`Applies at the next proxy start and requires an existing trusted certificate. Does not open Codex, register trust or start a correction trial. Turning this off does not stop a running service.`,`다음 프록시 시작부터 적용되며 이미 신뢰된 인증서가 필요합니다. Codex 실행·신뢰 등록·복구 시험을 자동 수행하지 않습니다. 끄더라도 실행 중인 서비스는 중지하지 않습니다.`,`Gilt ab dem nächsten Proxystart und erfordert ein bereits vertrauenswürdiges Zertifikat. Öffnet Codex nicht, registriert kein Vertrauen und startet keinen Korrekturtest. Ausschalten stoppt keinen laufenden Dienst.`,`S’applique au prochain démarrage du proxy et nécessite un certificat déjà approuvé. N’ouvre pas Codex, n’enregistre pas de confiance et ne lance pas d’essai. La désactivation n’arrête pas un service actif.`,`从下次代理启动起生效,需要已受信任的证书。不会打开 Codex、注册信任或启动修正试验。关闭此选项不会停止正在运行的服务。`,`從下次代理啟動起生效,需要已受信任的憑證。不會開啟 Codex、註冊信任或啟動修正試驗。關閉此選項不會停止執行中的服務。`,`Действует со следующего запуска прокси и требует доверенного сертификата. Не открывает Codex, не добавляет доверие и не запускает тест. Отключение не останавливает работающую службу.`,`次回のプロキシ起動時から適用され、信頼済み証明書が必要です。Codex の起動・信頼登録・補正テストは自動実行しません。オフにしても実行中のサービスは停止しません。`,`Sonraki proxy başlangıcında uygulanır; önceden güvenilen sertifika gerekir. Codex’i açmaz, güven kaydetmez veya deneme başlatmaz. Kapatmak çalışan hizmeti durdurmaz.`,`Áp dụng từ lần khởi động proxy tiếp theo và cần chứng chỉ đã tin cậy. Không mở Codex, đăng ký tin cậy hay chạy thử hiệu chỉnh. Tắt tùy chọn không dừng dịch vụ đang chạy.`,`Aplica-se na próxima inicialização do proxy e requer um certificado já confiável. Não abre o Codex, registra confiança nem inicia um teste de correção. Desativar esta opção não interrompe um serviço em execução.`],connectionUnavailable:[`The saved local connection could not be opened. Its address was not changed automatically.`,`저장된 로컬 연결을 열지 못했습니다. 연결 주소를 자동으로 변경하지 않았습니다.`,`Die gespeicherte lokale Verbindung konnte nicht geöffnet werden. Ihre Adresse wurde nicht automatisch geändert.`,`La connexion locale enregistrée n’a pas pu être ouverte. Son adresse n’a pas été modifiée automatiquement.`,`无法打开保存的本地连接。未自动更改其地址。`,`無法開啟儲存的本機連線。並未自動變更其位址。`,`Не удалось открыть сохранённое локальное соединение. Его адрес автоматически не менялся.`,`保存されたローカル接続を開けませんでした。接続先を自動変更していません。`,`Kaydedilen yerel bağlantı açılamadı. Adresi otomatik değiştirilmedi.`,`Không mở được kết nối cục bộ đã lưu. Địa chỉ không được tự động thay đổi.`,`Não foi possível abrir a conexão local salva. O endereço não foi alterado automaticamente.`],blockedByBuild:[`This Codex build has not been assessed. Compatibility correction is unavailable; refresh alone will not enable it.`,`현재 Codex 빌드는 아직 검증되지 않았습니다. 호환 교정을 사용할 수 없으며, 새로고침만으로 활성화되지는 않습니다.`,`Dieser Codex-Build wurde noch nicht geprüft. Die Kompatibilitätskorrektur ist nicht verfügbar; Aktualisieren allein aktiviert sie nicht.`,`Cette version de Codex n’a pas été évaluée. La correction est indisponible ; une actualisation seule ne l’activera pas.`,`此 Codex 版本尚未评估。兼容修正不可用,刷新不会启用它。`,`此 Codex 版本尚未評估。相容修正無法使用,重新整理不會啟用它。`,`Эта сборка Codex не проверена. Коррекция недоступна; обновление состояния её не включит.`,`この Codex ビルドは未検証です。互換補正は利用できず、状態更新だけでは有効になりません。`,`Bu Codex derlemesi henüz değerlendirilmedi. Uyumluluk düzeltmesi kullanılamaz; yenileme bunu açmaz.`,`Bản Codex này chưa được đánh giá. Chưa thể hiệu chỉnh; làm mới không tự bật tính năng.`,`Esta versão do Codex ainda não foi avaliada. A correção de compatibilidade não está disponível; atualizar o status não a habilitará.`],blockedByProxy:[`The outbound proxy setting is invalid or unsupported. Correct it before starting observation; no direct fallback was used.`,`외부 프록시 설정이 잘못되었거나 지원되지 않습니다. 관찰 시작 전에 설정을 확인하세요. 직접 연결로 우회하지 않았습니다.`,`Die Proxy-Einstellung ist ungültig oder nicht unterstützt. Vor dem Start korrigieren; keine direkte Ersatzverbindung wurde genutzt.`,`Le proxy sortant est invalide ou non pris en charge. Corrigez-le avant l’observation ; aucun repli direct n’a été utilisé.`,`出站代理设置无效或不受支持。观察前请修正;未回退到直接连接。`,`輸出代理設定無效或不受支援。觀察前請修正;並未改用直接連線。`,`Настройка прокси неверна или не поддерживается. Исправьте её до наблюдения; прямое подключение не использовалось.`,`送信プロキシ設定が無効または未対応です。観察開始前に修正してください。直接接続への切り替えは行っていません。`,`Çıkış proxy ayarı geçersiz veya desteklenmiyor. Gözlemden önce düzeltin; doğrudan bağlantıya geçilmedi.`,`Cấu hình proxy đầu ra không hợp lệ hoặc chưa hỗ trợ. Sửa trước khi quan sát; không chuyển sang kết nối trực tiếp.`,`A configuração do proxy de saída é inválida ou não é compatível. Corrija-a antes de iniciar a observação; não foi usado acesso direto como alternativa.`],closeApp:[`Save drafts, close Codex, then refresh status before trying again.`,`초안을 저장하고 Codex를 닫은 뒤 상태를 새로고침하여 재시도하세요.`,`Entwürfe speichern, Codex schließen und vor dem nächsten Versuch den Status aktualisieren.`,`Enregistrez les brouillons, fermez Codex, puis actualisez l’état avant de réessayer.`,`保存草稿并关闭 Codex,然后刷新状态再重试。`,`儲存草稿並關閉 Codex,然後重新整理狀態再重試。`,`Сохраните черновики, закройте Codex и обновите состояние перед повтором.`,`下書きを保存して Codex を閉じ、状態を更新してから再試行してください。`,`Taslakları kaydedip Codex’i kapatın; yeniden denemeden önce durumu yenileyin.`,`Lưu bản nháp, đóng Codex rồi làm mới trạng thái trước khi thử lại.`,`Salve os rascunhos, feche o Codex e atualize o status antes de tentar novamente.`],connectedUnavailable:[`These local controls are unavailable in OpenCodex managed client mode.`,`OpenCodex 관리형 클라이언트 모드에서는 이 로컬 제어를 사용할 수 없습니다.`,`Diese lokalen Steuerelemente sind im verwalteten Clientmodus von OpenCodex nicht verfügbar.`,`Ces commandes locales ne sont pas disponibles en mode client géré OpenCodex.`,`OpenCodex 托管客户端模式不提供这些本地控制。`,`OpenCodex 受管理用戶端模式不提供這些本機控制。`,`Эти локальные действия недоступны в управляемом клиентском режиме OpenCodex.`,`OpenCodex の管理対象クライアントモードでは、このローカル操作を利用できません。`,`Bu yerel denetimler OpenCodex yönetilen istemci modunda kullanılamaz.`,`Các điều khiển cục bộ này không có trong chế độ máy khách được quản lý của OpenCodex.`,`Estes controles locais não estão disponíveis no modo de cliente gerenciado do OpenCodex.`],title:[`Desktop compatibility`,`데스크톱 호환`,`Desktop-Kompatibilität`,`Compatibilité du bureau`,`桌面兼容`,`桌面相容`,`Совместимость приложения`,`デスクトップ互換性`,`Masaüstü uyumluluğu`,`Tương thích ứng dụng`,`Compatibilidade com o desktop`],description:[`Experimental Windows integration. Keeps the Codex login; setup alone does not enable correction.`,`실험적인 Windows 연동입니다. Codex 로그인을 유지하며, 준비만으로 교정이 켜지지 않습니다.`,`Experimentelle Windows-Integration. Die Codex-Anmeldung bleibt erhalten; die Einrichtung aktiviert keine Korrektur.`,`Intégration Windows expérimentale. La connexion Codex est conservée ; la préparation seule n’active pas la correction.`,`实验性 Windows 集成。保留 Codex 登录;仅完成准备不会启用修正。`,`實驗性 Windows 整合。保留 Codex 登入;僅完成準備不會啟用修正。`,`Экспериментальная интеграция Windows. Вход в Codex сохраняется; подготовка не включает коррекцию.`,`実験的な Windows 連携です。Codex のログインを保持し、準備だけでは補正を有効にしません。`,`Deneysel Windows entegrasyonu. Codex oturumu korunur; hazırlık tek başına düzeltmeyi açmaz.`,`Tích hợp Windows thử nghiệm. Giữ đăng nhập Codex; chuẩn bị không tự bật hiệu chỉnh.`,`Integração experimental com Windows. Mantém o login do Codex; apenas preparar não ativa a correção.`],refresh:[`Refresh status`,`상태 새로고침`,`Status aktualisieren`,`Actualiser l’état`,`刷新状态`,`重新整理狀態`,`Обновить состояние`,`状態を更新`,`Durumu yenile`,`Làm mới trạng thái`,`Atualizar status`],prepare:[`Prepare certificate`,`인증서 준비`,`Zertifikat vorbereiten`,`Préparer le certificat`,`准备证书`,`準備憑證`,`Подготовить сертификат`,`証明書を準備`,`Sertifikayı hazırla`,`Chuẩn bị chứng chỉ`,`Preparar certificado`],trust:[`Register trust`,`신뢰 등록`,`Vertrauen registrieren`,`Enregistrer la confiance`,`注册信任`,`註冊信任`,`Добавить доверие`,`信頼を登録`,`Güveni kaydet`,`Đăng ký tin cậy`,`Registrar confiança`],remove:[`Remove trust`,`신뢰 해제`,`Vertrauen entfernen`,`Retirer la confiance`,`移除信任`,`移除信任`,`Удалить доверие`,`信頼を解除`,`Güveni kaldır`,`Gỡ tin cậy`,`Remover confiança`],renew:[`Renew certificate`,`인증서 갱신`,`Zertifikat erneuern`,`Renouveler le certificat`,`更新证书`,`更新憑證`,`Обновить сертификат`,`証明書を更新`,`Sertifikayı yenile`,`Gia hạn chứng chỉ`,`Renovar certificado`],start:[`Start observation`,`관찰 시작`,`Beobachtung starten`,`Démarrer l’observation`,`开始观察`,`開始觀察`,`Начать наблюдение`,`観察を開始`,`Gözlemi başlat`,`Bắt đầu quan sát`,`Iniciar observação`],stop:[`Stop service`,`서비스 중지`,`Dienst stoppen`,`Arrêter le service`,`停止服务`,`停止服務`,`Остановить службу`,`サービスを停止`,`Hizmeti durdur`,`Dừng dịch vụ`,`Parar serviço`],launch:[`Open Codex`,`Codex 열기`,`Codex öffnen`,`Ouvrir Codex`,`打开 Codex`,`開啟 Codex`,`Открыть Codex`,`Codex を開く`,`Codex’i aç`,`Mở Codex`,`Abrir Codex`],observe:[`Return to observation`,`관찰 모드로 복귀`,`Zur Beobachtung zurück`,`Revenir à l’observation`,`返回观察`,`返回觀察`,`Вернуться к наблюдению`,`観察に戻る`,`Gözleme dön`,`Trở lại quan sát`,`Voltar à observação`],apply:[`Run 3-minute trial`,`3분 복구 시험`,`3-Minuten-Test starten`,`Essai de 3 minutes`,`运行 3 分钟试验`,`執行 3 分鐘試驗`,`Запустить тест на 3 минуты`,`3分間のテスト`,`3 dakikalık deneme`,`Thử nghiệm 3 phút`,`Executar teste de 3 minutos`],confirm:[`Confirm action`,`동작 확인`,`Aktion bestätigen`,`Confirmer l’action`,`确认操作`,`確認操作`,`Подтвердить действие`,`操作を確認`,`İşlemi onayla`,`Xác nhận thao tác`,`Confirmar ação`],acknowledge:[`I understand the scope of this action.`,`이 동작의 적용 범위를 이해했습니다.`,`Ich verstehe den Umfang dieser Aktion.`,`Je comprends la portée de cette action.`,`我了解此操作的范围。`,`我了解此操作的範圍。`,`Я понимаю область действия.`,`この操作の範囲を理解しました。`,`Bu işlemin kapsamını anlıyorum.`,`Tôi hiểu phạm vi thao tác này.`,`Entendo o escopo desta ação.`],risk:[`Trust applies to this Windows user and allows the local relay to handle chatgpt.com traffic. Stop the service and close Codex before renewal or removal. Stopping may interrupt active connections.`,`이 Windows 사용자에게 인증서 신뢰가 적용되어 로컬 릴레이가 chatgpt.com 트래픽을 처리합니다. 갱신·해제 전 서비스를 중지하고 Codex를 닫으세요. 중지하면 진행 중인 연결이 끊길 수 있습니다.`,`Das Vertrauen gilt für diesen Windows-Benutzer und erlaubt dem lokalen Relay, chatgpt.com-Verkehr zu verarbeiten. Vor Erneuerung oder Entfernung Dienst stoppen und Codex schließen. Ein Stopp kann aktive Verbindungen unterbrechen.`,`La confiance s’applique à cet utilisateur Windows et autorise le relais local à traiter le trafic chatgpt.com. Arrêtez le service et fermez Codex avant renouvellement ou suppression. L’arrêt peut interrompre les connexions actives.`,`信任适用于此 Windows 用户,允许本地中继处理 chatgpt.com 流量。更新或移除前请停止服务并关闭 Codex。停止可能中断活动连接。`,`信任適用於此 Windows 使用者,允許本機中繼處理 chatgpt.com 流量。更新或移除前請停止服務並關閉 Codex。停止可能中斷使用中的連線。`,`Доверие действует для этого пользователя Windows и позволяет локальному ретранслятору обрабатывать трафик chatgpt.com. Перед обновлением или удалением остановите службу и закройте Codex. Остановка может прервать соединения.`,`信頼はこの Windows ユーザーに適用され、ローカルリレーが chatgpt.com の通信を処理します。更新・解除前にサービスを停止し Codex を閉じてください。停止すると接続が中断される場合があります。`,`Güven bu Windows kullanıcısı için geçerlidir ve yerel aktarıcının chatgpt.com trafiğini işlemesine izin verir. Yenilemeden veya kaldırmadan önce hizmeti durdurup Codex’i kapatın. Durdurma etkin bağlantıları kesebilir.`,`Tin cậy áp dụng cho người dùng Windows này, cho phép bộ chuyển tiếp cục bộ xử lý lưu lượng chatgpt.com. Dừng dịch vụ và đóng Codex trước khi gia hạn hoặc gỡ. Dừng có thể ngắt kết nối đang dùng.`,`A confiança se aplica a este usuário do Windows e permite que o relay local processe o tráfego de chatgpt.com. Pare o serviço e feche o Codex antes de renovar ou remover o certificado. Parar pode interromper conexões ativas.`],trialRisk:[`For up to 3 minutes, two UI flags are adjusted for the whole signed-in account, across models. Usage, credits and server limits remain unchanged. Observed exhaustion is required; a response does not prove the composer recovered.`,`최대 3분 동안 모델 구분 없이 로그인 계정 전체의 UI 표시 두 항목을 교정합니다. 사용량·크레딧·서버 한도는 유지됩니다. 실제 소진 관찰이 필요하며, 응답 생성만으로 입력창 복구가 입증되지는 않습니다.`,`Bis zu 3 Minuten werden zwei UI-Werte für das gesamte angemeldete Konto modellübergreifend angepasst. Nutzung, Guthaben und Serverlimits bleiben unverändert. Eine beobachtete Erschöpfung ist erforderlich; eine Antwort beweist keine Wiederherstellung der Eingabe.`,`Pendant 3 minutes au maximum, deux indicateurs d’interface sont ajustés pour tout le compte connecté, tous modèles confondus. Usage, crédits et limites serveur restent inchangés. Un épuisement observé est requis ; une réponse ne prouve pas le rétablissement de la saisie.`,`最多 3 分钟内,调整整个已登录账户的两个界面标志,影响所有模型。用量、余额和服务器限制不变。需要观察到额度耗尽;收到响应不代表输入框已恢复。`,`最多 3 分鐘內,調整整個已登入帳戶的兩個介面旗標,影響所有模型。用量、點數和伺服器限制不變。必須觀察到額度耗盡;收到回應不代表輸入框已恢復。`,`Не более 3 минут корректируются два флага интерфейса всего аккаунта для всех моделей. Использование, кредиты и лимиты сервера не меняются. Требуется наблюдаемое исчерпание; ответ не доказывает восстановление ввода.`,`最大3分間、ログイン中のアカウント全体でモデルを区別せず2つのUIフラグを補正します。使用量・クレジット・サーバー制限は変更しません。上限到達の観察が必要で、応答だけでは入力欄の復旧を証明できません。`,`En fazla 3 dakika boyunca tüm modellerde oturum açmış hesabın iki arayüz bayrağı düzeltilir. Kullanım, krediler ve sunucu sınırları değişmez. Kotanın tükendiğinin gözlenmesi gerekir; yanıt, giriş alanının düzeldiğini kanıtlamaz.`,`Trong tối đa 3 phút, điều chỉnh hai cờ giao diện của toàn bộ tài khoản đã đăng nhập, cho mọi mô hình. Mức dùng, tín dụng và giới hạn máy chủ không đổi. Cần quan sát thấy hết hạn mức; phản hồi không chứng minh ô nhập đã phục hồi.`,`Por até 3 minutos, dois indicadores da interface são ajustados para toda a conta conectada, em todos os modelos. Uso, créditos e limites do servidor permanecem inalterados. É necessário observar o esgotamento; uma resposta não comprova que o campo de texto foi recuperado.`],error:[`Completion could not be confirmed. Refresh status before retrying.`,`완료 여부를 확인하지 못했습니다. 재시도 전에 상태를 새로고침하세요.`,`Abschluss nicht bestätigt. Vor einem erneuten Versuch Status aktualisieren.`,`Fin non confirmée. Actualisez l’état avant de réessayer.`,`无法确认是否完成。重试前请刷新状态。`,`無法確認是否完成。重試前請重新整理狀態。`,`Завершение не подтверждено. Обновите состояние перед повтором.`,`完了を確認できませんでした。再試行前に状態を更新してください。`,`Tamamlandığı doğrulanamadı. Yeniden denemeden önce durumu yenileyin.`,`Chưa xác nhận hoàn tất. Làm mới trạng thái trước khi thử lại.`,`Não foi possível confirmar a conclusão. Atualize o status antes de tentar novamente.`],done:[`Action confirmed. Status refreshed.`,`동작을 확인하고 상태를 새로고침했습니다.`,`Aktion bestätigt. Status aktualisiert.`,`Action confirmée. État actualisé.`,`操作已确认,状态已刷新。`,`操作已確認,狀態已重新整理。`,`Действие подтверждено. Состояние обновлено.`,`操作を確認し、状態を更新しました。`,`İşlem doğrulandı. Durum yenilendi.`,`Đã xác nhận thao tác và làm mới trạng thái.`,`Ação confirmada. Status atualizado.`],certificate:[`Certificate`,`인증서`,`Zertifikat`,`Certificat`,`证书`,`憑證`,`Сертификат`,`証明書`,`Sertifika`,`Chứng chỉ`,`Certificado`],runtime:[`Service`,`서비스`,`Dienst`,`Service local`,`服务`,`服務`,`Служба`,`サービス`,`Hizmet`,`Dịch vụ`,`Serviço`],expiry:[`Expires`,`만료`,`Ablauf`,`Expiration`,`到期`,`到期`,`Истекает`,`有効期限`,`Bitiş`,`Hết hạn`,`Expira`],renewalDue:[`Certificate renewal is due soon.`,`인증서 갱신 시기가 다가옵니다.`,`Zertifikat bald erneuern.`,`Le certificat doit bientôt être renouvelé.`,`证书即将需要更新。`,`憑證即將需要更新。`,`Скоро потребуется обновить сертификат.`,`証明書の更新時期が近づいています。`,`Sertifika yakında yenilenmeli.`,`Chứng chỉ sắp cần gia hạn.`,`O certificado precisa ser renovado em breve.`],unsupported:[`Available on supported Windows installations only.`,`지원되는 Windows 설치에서만 사용할 수 있습니다.`,`Nur für unterstützte Windows-Installationen.`,`Disponible uniquement sur les installations Windows prises en charge.`,`仅适用于受支持的 Windows 安装。`,`僅適用於受支援的 Windows 安裝。`,`Доступно только для поддерживаемых установок Windows.`,`対応する Windows 環境でのみ利用できます。`,`Yalnızca desteklenen Windows kurulumlarında kullanılabilir.`,`Chỉ dùng được trên bản cài Windows được hỗ trợ.`,`Disponível apenas em instalações Windows compatíveis.`],localOnly:[`Changes require this computer’s local dashboard. Save drafts and close Codex before launching it here.`,`변경은 이 컴퓨터의 로컬 대시보드에서 가능합니다. 여기서 앱을 실행하기 전에 초안을 저장하고 Codex를 닫으세요.`,`Änderungen erfordern das lokale Dashboard dieses Computers. Vor dem Start Entwürfe speichern und Codex schließen.`,`Les modifications nécessitent le tableau de bord local de cet ordinateur. Enregistrez les brouillons et fermez Codex avant de le lancer ici.`,`更改需要此计算机的本地仪表板。在此启动前,请保存草稿并关闭 Codex。`,`變更需要此電腦的本機儀表板。在此啟動前,請儲存草稿並關閉 Codex。`,`Изменения требуют локальной панели этого компьютера. Сохраните черновики и закройте Codex перед запуском здесь.`,`変更にはこのPCのローカルダッシュボードが必要です。ここから起動する前に下書きを保存し Codex を閉じてください。`,`Değişiklikler bu bilgisayarın yerel panosunu gerektirir. Buradan açmadan önce taslakları kaydedip Codex’i kapatın.`,`Thay đổi cần bảng điều khiển cục bộ của máy này. Lưu bản nháp và đóng Codex trước khi mở tại đây.`,`As alterações exigem o painel local deste computador. Salve os rascunhos e feche o Codex antes de abri-lo aqui.`],reconnectHint:[`A running service does not confirm that Codex is connected. After a normal app launch or update, close Codex and use Open Codex here to restore the managed connection. An unreviewed app version cannot run a correction trial.`,`서비스 실행만으로 Codex 연결이 확인되지는 않습니다. 앱을 일반 실행하거나 업데이트한 뒤에는 Codex를 닫고 여기의 Codex 열기로 관리 연결을 복구하세요. 검토되지 않은 앱 버전에서는 교정 시험이 차단됩니다.`,`Ein laufender Dienst bestätigt keine Codex-Verbindung. Nach normalem Start oder Update Codex schließen und hier über Codex öffnen die verwaltete Verbindung wiederherstellen. Eine ungeprüfte App-Version kann keinen Korrekturtest ausführen.`,`Un service actif ne confirme pas la connexion de Codex. Après un lancement normal ou une mise à jour, fermez Codex puis ouvrez-le ici pour rétablir la connexion gérée. Une version non vérifiée ne peut pas lancer d’essai de correction.`,`服务运行不代表 Codex 已连接。正常启动或更新应用后,请关闭 Codex 并使用此处的打开 Codex 恢复受管连接。未经验证的应用版本无法运行修正试验。`,`服務執行不代表 Codex 已連線。一般啟動或更新應用程式後,請關閉 Codex 並使用此處的開啟 Codex 恢復受管理連線。未經驗證的應用程式版本無法執行修正試驗。`,`Работа службы не подтверждает подключение Codex. После обычного запуска или обновления закройте Codex и откройте его здесь для восстановления управляемого подключения. Непроверенная версия не допускается к пробной корректировке.`,`サービスの稼働だけでは Codex の接続を確認できません。通常起動や更新後は Codex を閉じ、ここから開いて管理接続を復元してください。未検証のアプリ版では補正試験を実行できません。`,`Hizmetin çalışması Codex bağlantısını doğrulamaz. Normal açılış veya güncellemeden sonra Codex’i kapatıp yönetilen bağlantıyı geri getirmek için buradan açın. İncelenmemiş uygulama sürümü düzeltme denemesini çalıştıramaz.`,`Dịch vụ chạy không xác nhận Codex đã kết nối. Sau khi mở ứng dụng bình thường hoặc cập nhật, hãy đóng Codex rồi mở từ đây để khôi phục kết nối được quản lý. Phiên bản chưa được kiểm tra không thể chạy thử điều chỉnh.`,`Um serviço em execução não confirma que o Codex está conectado. Após abrir o app normalmente ou atualizá-lo, feche o Codex e use Abrir Codex aqui para restaurar a conexão gerenciada. Uma versão do app ainda não avaliada não pode executar um teste de correção.`],assessedPackage:[`Verified package version`,`검증된 패키지 버전`,`Geprüfte Paketversion`,`Version du paquet vérifiée`,`已验证的包版本`,`已驗證的套件版本`,`Проверенная версия пакета`,`検証済みパッケージバージョン`,`Doğrulanan paket sürümü`,`Phiên bản gói đã xác minh`,`Versão do pacote verificada`],observedPackage:[`Last observed package version`,`마지막으로 관측한 패키지 버전`,`Zuletzt erkannte Paketversion`,`Dernière version du paquet observée`,`上次检测到的包版本`,`上次偵測到的套件版本`,`Последняя обнаруженная версия пакета`,`最後に検出されたパッケージバージョン`,`Son algılanan paket sürümü`,`Phiên bản gói quan sát lần cuối`,`Última versão do pacote observada`],lastObservedAt:[`Observed at`,`관측 시각`,`Erkannt am`,`Observée le`,`检测时间`,`偵測時間`,`Время проверки`,`検出日時`,`Algılanma zamanı`,`Thời điểm quan sát`,`Observada em`],noObservedPackage:[`Not detected`,`감지되지 않음`,`Nicht erkannt`,`Non détectée`,`未检测到`,`未偵測到`,`Не обнаружена`,`未検出`,`Algılanmadı`,`Không phát hiện`,`Não detectada`]};function x(e){let t=y.indexOf(e);return Object.fromEntries(Object.entries(b).map(([e,n])=>[`desktopCompat.${e}`,n[t]]))}var ee={"pws.completion.title":`Model completion test`,"pws.completion.model":`Model to test`,"pws.completion.choose":`Choose a model`,"pws.completion.run":`Test model`,"pws.completion.confirm":`Test {model} on {provider}? This sends a real completion request with an output cap of 32 tokens. It consumes quota and may incur costs.`,"pws.completion.failed":`Model test failed`,"pws.completion.ok":`Model test succeeded`,"pws.completion.notApplicable":`Test not applicable`,"pws.completion.ttft":`Time to first token`,"pws.completion.total":`Total latency`,"pws.completion.reported":`Upstream reported {upstream} for {model}`,"pws.completion.unreported":`Upstream did not report a model for {model}`,"pws.completion.identity":`Model metadata is reported by the upstream provider and does not verify the actual model's identity.`,"pws.completion.match":`Match`,"pws.completion.mismatch":`Mismatch`,"pws.completion.unknown":`Unknown`,"pws.completion.missing_metadata":`The upstream response contains no model metadata.`,"pws.completion.conflicting_metadata":`The upstream response reports conflicting model metadata.`,"pws.completion.disabled":`This provider is disabled.`,"pws.completion.forward_auth":`Forwarded authentication is not supported.`,"pws.completion.oauth_auth":`OAuth authentication is not supported.`,"pws.completion.unsupported_adapter":`This adapter is not supported.`,"pws.completion.unsupported_transport":`This transport configuration is not supported.`,"pws.completion.tls_profile":`A custom TLS profile is configured.`,"pws.completion.upstream_http_version":`An upstream HTTP version is configured.`,"pws.completion.request_pacing":`Request pacing is enabled.`,"pws.completion.custom_executor_egress":`A custom fetch executor with a provider proxy cannot be preserved.`,"reasoningRetention.advanced":`Advanced settings`,"reasoningRetention.title":`Reasoning retention`,"reasoningRetention.enable":`Enable reasoning retention`,"reasoningRetention.description":`Off by default. When enabled for routed v1/v2 compaction with a readable summary, reasoning within the smaller of the context-window percentage and token cap returns as historical context alongside the summary. Above the limit, it is archived locally and replaced by a path note. Defaults when enabled: 20% and 100,000 tokens. Private provider reasoning is not decrypted; opaque compaction output stays unchanged.`,"reasoningRetention.storageHint":`Enabling can preserve plaintext reasoning in local history and archives. Completed archives have no total-size limit or expiry; delete unneeded archives manually.`,"reasoningRetention.percent":`Context window (%)`,"reasoningRetention.tokens":`Token cap`,"reasoningRetention.reset":`Reset and turn off`,"reasoningRetention.invalid":`Enter a percentage greater than 0 and at most 100, and a positive whole token count.`,"reasoningRetention.loadFailed":`Could not load reasoning retention settings.`,"reasoningRetention.saveFailed":`Could not save reasoning retention settings.`,"reasoningRetention.saved":`Reasoning retention settings saved.`,"nativeReasoningRetention.title":`Native OpenAI reasoning retention`,"nativeReasoningRetention.description":`Only for native requests to the official ChatGPT backend, including actual target changes in Combos and account pools. Allows old encrypted reasoning to be replayed; reuse depends on the backend. Both options are off by default.`,"nativeReasoningRetention.modelSwitch":`Keep encrypted reasoning when switching models`,"nativeReasoningRetention.accountSwitch":`Keep encrypted reasoning when switching accounts (experimental)`,"nativeReasoningRetention.accountHint":`Preserving ciphertext does not share stored response IDs or files across accounts. A successful request does not prove reasoning reuse. Native compaction handling is unchanged.`,"nativeReasoningRetention.reset":`Restore defaults`,"nativeReasoningRetention.loadFailed":`Could not load native reasoning settings.`,"nativeReasoningRetention.saveFailed":`Could not save native reasoning settings.`,"nativeReasoningRetention.saved":`Native reasoning settings saved.`,...x(`en`),"claude.tierDefaults.unset":`Unset (keep existing Claude setting)`,"claude.tierDefaults.recovery":`Apply stopped and automatic restore failed. Check the backup below before retrying.`,"claude.tierDefaults.title":`CLI tier defaults`,"claude.tierDefaults.preview":`Preview Claude settings`,"claude.tierDefaults.apply":`Apply to Claude settings`,"claude.tierDefaults.applied":`Claude settings match the saved defaults.`,"claude.tierDefaults.failed":`Could not apply defaults. Preview again and check Claude settings.`,"sidecar.pool":`Pool`,"sidecar.poolCurrent":`Current request's pool`,"sidecar.poolA":`Anthropic`,"sidecar.poolB":`Anthropic · Pool 2`,"sidecar.poolMixed":`This explicit selection may use a different pool from the main request.`,"provider.name.anthropic2":`Anthropic · Pool 2`,"nav.claude":`Claude`,"claude.pageSub":`OpenCodex routing and settings for Claude Code.`,"pws.anthropicAccountThresholdHint":`Overrides the Claude pool default. 0 disables usage-based switching only for this account; pause and rate-limit recovery still apply.`,"kiroLogin.title":`Sign in to Kiro`,"kiroLogin.chooseMethod":`Choose a sign-in method`,"kiroLogin.cli":`Kiro CLI`,"kiroLogin.builderId":`Builder ID`,"kiroLogin.google":`Google`,"kiroLogin.github":`GitHub`,"kiroLogin.addDescription":`Add a Kiro account with a device sign-in, or import a Kiro CLI session.`,"kiroLogin.loginDescription":`Sign in with a device, or import your Kiro CLI session.`,"kiroLogin.starting":`Starting device sign-in…`,"kiroLogin.pending":`Enter this code on the verification page, then wait here.`,"kiroLogin.done":`Kiro account added.`,"kiroLogin.expired":`Device sign-in expired. Try again.`,"kiroLogin.ended":`Login ended. Check the account list.`,"kiroLogin.failed":`Kiro sign-in failed.`,"kiroLogin.startFailed":`Could not start Kiro sign-in. Try again.`,"kiroLogin.tryAgain":`Try again`,"kiroLogin.copyCode":`Copy code`,"kiroLogin.copied":`Code copied`,"kiroLogin.copyUnavailable":`Copy unavailable`,"kiroLogin.openVerification":`Open verification page`,"kiroLogin.unexpectedHost":`Unexpected verification host. Check the address before copying it.`,"kiroLogin.duplicate":`This Kiro profile is already in the account list.`,"kiroLogin.manualReview":`Manual review may be needed for this account.`,"kiroSelection.suspended":`Not auto-selected: suspended`,"kiroSelection.quotaExhausted":`Not auto-selected: quota exhausted`,"kiroSelection.cooldown":`Not auto-selected: cooling down`,"kiroSelection.generic":`Not auto-selected`,"tray.updated":`Updated {time} · every 60s`,"tray.today":`Today`,"tray.input":`Input`,"tray.output":`Output`,"tray.cost":`Cost · est.`,"tray.cached":`{percent} cached`,"usage.incomplete":`Some usage records could not be included. Counts, dates, and rankings reflect readable records only.`,"models.pickerOrder.usageIncomplete":`Cannot save most-used order because usage history is incomplete. Choose another order or repair the history first.`,"api.attribution.noRecordedUse":`No use in readable records`,"audio.dictation":`Dictation`,"audio.liveVoice":`Live Voice`,"audio.configured":`Configured, not verified`,"audio.notConfigured":`Not configured`,"audio.unknown":`Audio metadata unavailable`,"audio.key":`OpenCodex data key`,"audio.file":`Audio file (25 MB max)`,"audio.transcribe":`Transcribe`,"audio.transcribing":`Transcribing...`,"audio.transcript":`Transcript`,"audio.emptyTranscript":`No speech detected`,"audio.examples":`API examples`,"audio.streaming":`Streaming dictation`,"audio.connect":`Check connection`,"audio.disconnect":`Disconnect`,"audio.events":`Session events`,"audio.state.idle":`Not checked`,"audio.state.connecting":`Connecting...`,"audio.state.connected":`Session ready`,"audio.state.disconnected":`Disconnected`,"audio.state.failed":`Connection failed`,"audio.error.auth":`Key rejected. Check your OpenCodex data key.`,"audio.error.unavailable":`Upstream unavailable. Check the provider account.`,"audio.error.rateLimit":`Rate limit reached. Try again later.`,"audio.error.invalid":`Request rejected. Check the file and provider.`,"audio.error.size":`Choose a nonempty audio file up to 25 MB.`,"audio.error.network":`Connection failed. Check the proxy address.`,"audio.error.timeout":`The request timed out. Try again.`,"audio.error.protocol":`Unexpected audio response. Check provider compatibility.`,"models.pickerOrder.label":`Picker order`,"models.pickerOrder.default":`Default`,"models.pickerOrder.alphabetical":`A–Z by model`,"models.pickerOrder.provider":`Group by provider`,"models.pickerOrder.mostUsed":`Most used snapshot`,"models.pickerOrder.custom":`Custom order`,"models.pickerOrder.apply":`Apply order`,"models.pickerOrder.applying":`Applying…`,"models.pickerOrder.saved":`Picker order saved. Reopen clients that still show the old catalog.`,"models.pickerOrder.pending":`Order saved; catalog refresh is pending.`,"models.pickerOrder.usageFailed":`Could not load model usage.`,"models.pickerOrder.loadFailed":`Could not load picker settings.`,"models.pickerOrder.retry":`Retry`,"models.pickerOrder.hint":`Saves routed order for Codex and Claude discovery. Featured/native bands stay in place; Most used is a snapshot. Native advertised choices may change.`,"models.fastRows.title":`Show Fast model rows`,"models.fastRows.desc":`Adds eligible “Model Fast” selectors to external client model pickers. This does not change reasoning-effort options on the base model. Saving refreshes connected integrations when possible; otherwise refresh the integration or client catalog.`,"models.fastRows.refreshHint":`Saved. Catalog refresh is pending.`,"models.fastRows.enabled":`Fast model rows enabled.`,"models.fastRows.disabled":`Fast model rows disabled.`,"models.fastRows.loadFailed":`Could not load Fast rows setting.`,"models.fastRows.updateFailed":`Failed to update Fast rows setting.`,"codexAuth.quotaAutoRefreshAllHint":`Controls the supported 5-hour and weekly windows for all current accounts together. In Pool mode, a small request is sent after each reset and uses quota.`,"codexAuth.quotaAutoRefreshMixed":`Some windows are enabled.`,"codexAuth.quotaAutoRefreshEmpty":`No supported quota windows. Refresh account quotas to check again.`,"codexAuth.quotaAutoRefreshLoadFailed":`Could not load activation settings. Retry to check their state.`,"codexAuth.quotaAutoRefreshPartial":`Some settings could not be saved. Retry to finish the same change.`,"nav.dashboard":`Dashboard`,"uptime.day":`d`,"uptime.hour":`h`,"uptime.minute":`m`,"uptime.second":`s`,"nav.startup":`Startup`,"nav.providers":`Providers`,"nav.models":`Models`,"nav.combos":`Combos`,"nav.subagents":`Subagents`,"nav.advisor":`Advisor`,"advisor.description":`An independent expert model that reviews the worker's task and returns advice. OpenCodex owns the consultation: the worker can call the synthetic advisor tool, and policy preflight additionally attempts one automatic consultation per task without any worker cooperation — firing once the task has produced orientation evidence (an assistant tool call or a tool result after the latest user message). The attempt is deduplicated per task for clients that carry a stable conversation identity; a client without one skips that dedup and may receive the attempt again on every newly eligible request.`,"advisor.enabled":`Advisor enabled`,"advisor.model":`Expert model`,"advisor.modelClear":`Clear model`,"advisor.modelUnavailable":`Current model is not selectable; its saved identifier is preserved.`,"advisor.modelHint":`Choose a model that can return text advice. Catalog identifiers are saved exactly as listed.`,"advisor.modelsLoadFailed":`Could not load models. Your current selection is preserved.`,"advisor.modelsEmpty":`No selectable models. Enable a provider and model, then retry.`,"advisor.effort":`Reasoning`,"advisor.policy":`Policy`,"advisor.policy.manual":`Manual — only when the worker asks`,"advisor.policy.preflight":`Preflight — automatic consultation attempt once orientation evidence exists`,"advisor.policy.adaptive":`Adaptive — orientation and failed-repair consultations`,"advisor.taskLimit":`Consultations per task`,"advisor.adaptiveNote":`Automatic consultations require a stable conversation identity. Initial advice follows orientation evidence (a tool call or result). Failed-repair advice requires a failed validation, a completed file edit, then a new failure of the same command in the same directory; repeated failures alone do not qualify. Manual calls also consume the task budget; reservations expire after 24 hours and survive proxy restarts.`,"advisor.activity.title":`Recent advisor activity`,"advisor.activity.note":`Up to 100 records from this process, retained for 24 hours. No task text or advice is stored. Reasoning shows requested → adapter-mapped effort; unreported does not confirm support. Tokens show reported input / output. Advice adoption and exact cost are not inferred.`,"advisor.activity.empty":`No consultations recorded yet.`,"advisor.activity.failed":`Could not load advisor activity.`,"advisor.activity.started":`Started`,"advisor.activity.trigger":`Reason / status`,"advisor.activity.tokens":`Input / output tokens`,"advisor.activity.duration":`Duration`,"advisor.activity.trigger.manual":`Worker request`,"advisor.activity.trigger.preflight":`Initial consultation`,"advisor.activity.trigger.repair_failure":`Repair failed again`,"advisor.activity.status.running":`Running`,"advisor.activity.status.ok":`Advice returned`,"advisor.activity.status.failed":`Failed`,"advisor.activity.status.cancelled":`Cancelled`,"advisor.activity.status.blocked":`Blocked`,"advisor.timeout":`Timeout (ms)`,"advisor.save":`Save advisor settings`,"advisor.saved":`Advisor settings saved.`,"advisor.loadFailed":`Could not load advisor settings. Is the proxy running?`,"advisor.warning.noModel":`Enabled but no expert model is configured yet — the Advisor cannot run until a model is configured.`,"advisor.notices":`Cost and data-sharing notices`,"advisor.costNote":`Consultations are real extra model calls. Each one appears in usage under the advisor model, not the worker model.`,"advisor.privacyNote":`Cross-provider notice: consultations send the task conversation and tool results to the configured advisor provider, which may differ from the worker's provider. Task content is not secret-redacted — do not enable the advisor on tasks whose content you would not share with that provider. Turning Advisor on does not itself record this consent.`,"advisor.disclosure":`A consultation may send the latest user task, parsed user/assistant/developer text, tool calls and arguments, tool results, the worker tool catalog, worker identity, the configured Advisor model, and an optional focus question. OpenCodex does not insert provider API keys, authorization headers, OAuth tokens, backend secrets, process environment, or hidden chain-of-thought. Task content is not secret-redacted: a pasted key, a secret in a file, or a token printed by a tool can be sent. The Advisor provider may differ from the worker provider.`,"advisor.consent.label":`I understand that Advisor consultations may send this task's conversation, tool calls, and tool results to the configured Advisor provider, which may differ from the worker provider. Task content is not secret-redacted.`,"advisor.consent.required":`Advisor is not runnable until context-sharing consent is recorded. No task content is sent without it.`,"nav.logs":`Logs & Debug`,"nav.usage":`Usage`,"common.github":`GitHub`,"sidebar.star":`Star on GitHub`,"sidebar.starred":`Starred on GitHub`,"sidebar.starUnauthenticated":`Open GitHub to star (gh CLI is not signed in)`,"sidebar.starFailed":`Could not star through gh. Opening GitHub instead.`,"onboarding.star.title":`Enjoying OpenCodex?`,"onboarding.star.body":`OpenCodex is free and open source. A star on GitHub helps other developers find it and keeps the project going.`,"onboarding.star.cta":`Star on GitHub`,"onboarding.star.ghHint":`Stars the repository with your signed-in GitHub CLI (gh). Nothing is starred until you click.`,"onboarding.star.browserHint":`Opens the repository on github.com in your browser.`,"onboarding.star.openPage":`Open the GitHub page instead`,"onboarding.star.later":`Maybe later`,"onboarding.star.failed":`Couldn't star it with the GitHub CLI (gh). You can star it on the GitHub page instead.`,"onboarding.star.starring":`Starring…`,"onboarding.star.thanks":`Thanks for the star!`,"onboarding.star.thanksBody":`It really helps. The GitHub link in the sidebar takes you back to the repository any time.`,"onboarding.star.done":`Done`,"sidebar.updateAvailable":`Update available: {version}`,"sidebar.checkUpdate":`Check for updates`,"sidebar.desktopUpdate":`Open desktop updates`,"sidebar.terminalCommand":`Terminal command`,"common.save":`Save`,"common.saving":`Saving…`,"common.cancel":`Cancel`,"common.discard":`Discard`,"common.delete":`Delete`,"common.close":`Close`,"common.ok":`OK`,"common.remove":`Remove`,"common.loading":`Loading…`,"common.retry":`Retry`,"common.undo":`Undo`,"auth.adminTokenTitle":`OpenCodex admin token (OPENCODEX_ADMIN_AUTH_TOKEN)`,"auth.adminAccountLabel":`Account`,"auth.adminTokenFieldLabel":`Admin token`,"auth.adminTokenRejected":`That admin token was rejected. Check it and try again.`,"auth.adminTokenUnavailable":`The admin token could not be verified. Try again.`,"auth.adminTokenHelp":`This is the OpenCodex management admin token, not a provider API key. The proxy writes it to ~/.opencodex/admin-api-token (or $OPENCODEX_HOME/admin-api-token) on first start, and OPENCODEX_ADMIN_AUTH_TOKEN overrides it.`,"auth.adminTokenDocsLink":`How to find it`,"app.logoAria":`opencodex logo`,"app.claudeOn":`Claude ON`,"app.claudeOff":`Claude OFF`,"theme.label":`Theme`,"theme.light":`Light`,"theme.dark":`Dark`,"theme.system":`System`,"zoom.label":`Zoom`,"zoom.out":`Zoom out`,"zoom.in":`Zoom in`,"zoom.reset":`Reset zoom to 100%`,"lang.label":`Language`,"lang.nativeName":`English`,"provider.name.commandCodeAuth":`Command Code - Auth`,"provider.name.commandCodeApi":`Command Code - API`,"provider.name.orcaRouterApi":`OrcaRouter - API`,"provider.name.orcaRouterAuth":`OrcaRouter - Auth`,"provider.name.volcengine":`Volcengine Ark`,"provider.name.volcengineCodingPlan":`Volcengine Ark Coding Plan`,"provider.name.volcengineAgentPlan":`Volcengine Ark Agent Plan`,"errorBoundary.title":`Page failed to load`,"errorBoundary.message":`This section hit a rendering error. Reload it to try again.`,"errorBoundary.details":`Error`,"errorBoundary.reload":`Reload`,"routing.title":`Routing Intelligence (beta)`,"routing.subtitle":`Policy profiles, dry-run evaluation, and source-backed routing analytics.`,"routing.loadFailed":`Could not load routing data`,"routing.empty":"No routing profiles configured. Add `routingProfiles` to config.json.","routing.revision":`rev`,"routing.detail":`Profile`,"routing.createProfile":`Create profile`,"routing.dryRunError":`Dry-run failed (HTTP {status})`,"routing.removeConfirm":`Remove profile {id}?`,"routing.unknownEvidence.allow":`allow`,"routing.unknownEvidence.penalize":`penalize`,"routing.unknownEvidence.exclude":`exclude`,"routing.removeCandidate":`Remove candidate {provider}/{model}`,"routing.candidates":`Candidates`,"routing.require":`Hard requirements`,"routing.optimize":`Optimization weights`,"routing.limits":`Limits`,"routing.unknownEvidence":`Unknown evidence policy`,"routing.compatibility.title":`Compatibility policy`,"routing.compatibility.enabled":`Require Compatibility Lab evidence`,"routing.compatibility.requiredSuites":`Required suites`,"routing.compatibility.loadingCatalog":`Loading lab catalog…`,"routing.compatibility.catalogUnavailable":`Lab catalog unavailable — enter suite ids manually in config.json.`,"routing.compatibility.layer.protocol_conformance":`Protocol conformance`,"routing.compatibility.layer.live_route_compatibility":`Live route compatibility`,"routing.compatibility.minStatus":`Minimum compatibility status`,"routing.none":`none`,"routing.unavailable":`–`,"routing.dryRun":`Dry-run evaluation`,"routing.dryRunContext":`Request context window (tokens)`,"routing.dryRunTools":`Request requires tools`,"routing.dryRunImage":`Request requires image input`,"routing.dryRunStructured":`Request requires structured output`,"routing.dryRunRun":`Evaluate candidates`,"routing.candidate":`Candidate`,"routing.eligible":`Eligible`,"routing.exclusions":`Exclusions`,"routing.costCap":`Cost cap`,"routing.capOutcome.satisfied":`within limit`,"routing.capOutcome.exceeded":`over limit`,"routing.capOutcome.unknown-allowed":`unknown (allowed)`,"routing.capOutcome.unknown-excluded":`unknown (excluded)`,"routing.exclusion.capability-unsatisfied":`capability not met`,"routing.exclusion.unknown-capability":`unknown capability`,"routing.exclusion.cost-limit":`over cost cap`,"routing.exclusion.cost-limit-unknown":`unknown cost under cap`,"routing.exclusion.cooldown":`cooldown`,"routing.exclusion.unknown-health":`unknown health`,"routing.exclusion.unknown-quota":`unknown quota`,"routing.exclusion.unknown-price":`unknown price`,"routing.exclusion.other":`exclusion: {code}`,"routing.score":`Score`,"routing.selected":`selected`,"routing.yes":`yes`,"routing.no":`no`,"routing.analytics":`Routing analytics`,"routing.analyticsTotal":`Requests`,"routing.analyticsSuccessRate":`Success`,"routing.analyticsFallbackRate":`Fallback`,"routing.analyticsP50":`p50`,"routing.analyticsP95":`p95`,"routing.analyticsP99":`p99`,"routing.analyticsCooldown":`Cooldown failures`,"routing.analyticsConfidence":`Confidence`,"routing.analyticsTruncated":`truncated history`,"routing.analyticsRequests":`Requests`,"routing.analyticsEmpty":`No analytics yet — send some requests first.`,"startup.title":`Startup safety`,"startup.subtitle":`Verify that Codex can reach opencodex after a restart, before local proxy routing becomes a reconnect loop.`,"startup.refresh":`Refresh`,"startup.backToDashboard":`Back to Dashboard`,"startup.loading":`Checking startup protection…`,"startup.error":`Could not read startup protection.`,"startup.staleData":`The latest startup check failed. The values below are stale and must not be treated as proof of protection.`,"startup.status.native":`Native routing`,"startup.status.protected":`Restart protected`,"startup.status.atRisk":`Action required`,"startup.summary.native":`Codex does not depend on the local proxy`,"startup.summary.protected":`opencodex will be available after restart`,"startup.summary.atRisk":`Codex can lose model access after restart`,"startup.riskDetail":`Codex is pinned to the local proxy, but no persistent service or healthy launcher shim will start it again.`,"startup.riskDetailCustomLocal":`Codex points to a custom local gateway. opencodex cannot manage or verify that gateway's restart lifecycle.`,"startup.riskDetailWindowsShim":`The launcher shim protects supported CLI scripts, but Codex Desktop and direct codex.exe launches can bypass it on Windows.`,"startup.safeDetail":`The current routing and startup mechanism are consistent. No manual ocx start should be required after restart.`,"startup.routing":`Codex routing`,"startup.routing.proxy":`Local proxy`,"startup.routing.native":`Native OpenAI`,"startup.routing.customLocal":`Custom local gateway`,"startup.routing.customRemote":`Custom remote gateway`,"startup.routing.unknown":`Unknown or invalid routing`,"startup.restartProtection":`Restart protection`,"startup.preference":`On-demand startup`,"startup.enabled":`Enabled`,"startup.disabled":`Disabled`,"startup.protection.desktop":`Desktop app`,"startup.desktopHint":`Starts at login; the desktop app supervises its bundled proxy. Ownership and live processes are verified.`,"startup.desktopRecovery":`OpenCodex owns this proxy. Reopen the desktop app and check Start at Login. If it is already checked, make sure your system allows OpenCodex to open at login (macOS: System Settings → General → Login Items & Extensions). The background service stays disabled while the desktop app owns it; the launcher shim can still be installed.`,"startup.desktopSupervisedRecovery":`OpenCodex Desktop runs this proxy, but its Start at Login could not be verified. Turn on Start at Login in the OpenCodex menu. If it is already checked, make sure your system allows OpenCodex to open at login (macOS: System Settings → General → Login Items & Extensions). The background service stays disabled here while the app runs the proxy; to use it instead, quit OpenCodex and run the command in a terminal. The launcher shim can still be installed.`,"startup.desktopReopenRecovery":`Reopen OpenCodex and check Start at Login.`,"startup.protection.service":`Background service`,"startup.protection.shim":`Launcher shim`,"startup.protection.none":`Not installed`,"startup.details":`Protection details`,"startup.service":`Background service`,"startup.serviceHint":`Starts at login and restarts the proxy after a crash.`,"startup.installed":`Installed`,"startup.notInstalled":`Not installed`,"startup.unsupported":`Unsupported`,"startup.shim":`Codex launcher shim`,"startup.shimHint":`Runs ocx ensure when a supported Codex script launcher starts.`,"startup.healthy":`Healthy`,"startup.cliOnly":`CLI only`,"startup.stale":`Stale`,"startup.viable":`Ready`,"startup.unhealthy":`Installed but unhealthy`,"startup.desktopLoginUnverified":`Running · Start at Login not verified`,"startup.conflict":`Service conflict`,"startup.installedDisabled":`Installed but disabled`,"startup.shimActivationPending":`Installed · activation not confirmed`,"startup.shimActivationHint":`Add . ~/.opencodex/codex-shell-env.sh after other PATH setup in your shell startup file, then open a new terminal. The dashboard cannot always see your shell's PATH.`,"startup.install":`Install`,"startup.installing":`Installing…`,"startup.repair":`Repair`,"startup.repairing":`Repairing…`,"startup.serviceInstalled":`Background service installed successfully.`,"startup.serviceRepaired":`Background service repaired successfully.`,"startup.shimInstalled":`Codex launcher shim installed successfully.`,"startup.shimRepaired":`Codex launcher shim repaired successfully.`,"startup.installFailed":`Installation failed:`,"startup.tray.title":`Windows system tray`,"startup.tray.hint":`Install a login tray icon for one-click proxy start, stop, restart, dashboard, and status controls.`,"startup.tray.login":`Start tray at Windows login`,"startup.tray.notProtection":`The tray is a controller, not restart protection. A viable background service is still required for unattended proxy recovery.`,"startup.tray.running":`Running`,"startup.tray.stopped":`Installed, hidden`,"startup.tray.stale":`Repair required`,"startup.tray.notInstalled":`Not installed`,"startup.tray.loading":`Checking…`,"startup.tray.unavailable":`Status unavailable`,"startup.tray.install":`Install and show tray`,"startup.tray.start":`Show tray icon`,"startup.tray.stop":`Exit tray icon`,"startup.tray.uninstall":`Remove login tray`,"startup.tray.error":`The Windows tray action failed. Check ocx tray status for details.`,"startup.recovery":`Repair options`,"startup.recoveryHint":`Use the one-click installers above, or copy a command for manual repair. The background service is recommended for Codex Desktop and Windows executables.`,"startup.command.service":`Recommended: persistent background service`,"startup.command.shim":`Alternative: CLI launcher shim`,"startup.command.native":`Fail-safe: restore native Codex routing`,"startup.copy":`Copy`,"startup.copied":`Copied`,"startup.recommended":`Recommended repair: {cmd}`,"startup.navRisk":`Startup protection requires attention`,"startup.codexRuntime.clampHidden":`Some reasoning effort options were hidden because OpenCodex used Codex {version}.`,"startup.codexRuntime.clampHiddenWithEfforts":`Some reasoning effort options were hidden because OpenCodex used Codex {version} (removed: {efforts}).`,"startup.codexRuntime.olderBinary":`OpenCodex is using an older Codex binary ({version}). A newer installation is available.`,"dash.subtitle":`Live status of the local opencodex proxy, its providers, and the models routed into Codex.`,"dash.workspace.overview":`Overview`,"dash.workspace.sections":`Sections`,"dash.status":`Status`,"dash.online":`Online`,"dash.offline":`Offline`,"dash.version":`Version`,"dash.uptime":`Uptime`,"dash.providers":`Providers`,"dash.tokens30d":`Tokens (30d)`,"dash.coverage":`{pct} coverage`,"dash.mem.title":`Memory observability`,"dash.mem.hint":`Read-only runtime diagnostics. Observed memory is max(RSS, external, ArrayBuffers) so Windows working-set trimming does not hide committed retention.`,"dash.mem.rss":`Resident set (RSS)`,"dash.mem.jsHeap":`JS heap in use`,"dash.mem.jsHeapArena":`arena {total}`,"dash.mem.pressure":`Against warn threshold`,"dash.mem.pressureOf":`{pct}% of threshold`,"dash.mem.pressureUnknown":`No threshold reported`,"dash.mem.jscHeap":`JSC heap`,"dash.mem.external":`External`,"dash.mem.arrayBuffers":`ArrayBuffers`,"dash.mem.observed":`Observed`,"dash.mem.runtime":`Runtime counters`,"dash.mem.growth":`Observed drift / hour`,"dash.mem.perHour":`/h`,"dash.mem.store":`Continuation store`,"dash.mem.storeHint":`Proxy previous_response_id cache. Rising total bytes under a rising heap points at conversation retention rather than the runtime allocator.`,"dash.mem.storeEntries":`Entries`,"dash.mem.storeTotal":`Total`,"dash.mem.storeLargest":`Largest`,"dash.mem.storeOldest":`Oldest`,"dash.mem.threshold":`Warn threshold`,"dash.mem.lastWarn":`Last warning`,"dash.mem.never":`Never`,"dash.mem.details":`Details`,"dash.mem.unavailable":`Memory diagnostics unavailable (older proxy).`,"dash.mem.inFlight":`In-flight requests`,"dash.mem.restart":`Drain & restart`,"dash.mem.restartConfirm":`Wait for {count} in-flight request(s), then restart (up to {seconds}s; remaining requests are cut on timeout).`,"dash.mem.draining":`Draining {count} request(s)… restarting when complete`,"dash.mem.reconnecting":`Proxy restarting… waiting to reconnect`,"dash.mem.restartFailed":`Drain & restart failed. Check that the proxy is running.`,"dash.mem.restartNoSupervisor":`No restart protection detected. The proxy may stay down after restart unless you start it again.`,"dash.activeProviders":`Active providers`,"dash.noProviders":`No providers configured. Run {cmd}.`,"dash.col.name":`Name`,"dash.col.adapter":`Adapter`,"dash.col.baseUrl":`Base URL`,"dash.col.model":`Model`,"dash.modelsNoResults":`No models match your search.`,"dash.availableModels":`Available models`,"dash.noModels":`No models found. Check provider API keys.`,"dash.cannotConnect":`Cannot connect to proxy. Is it running?`,"dash.runStart":`Run {cmd} to start the proxy.`,"dash.stop":`Stop Proxy`,"dash.stopConfirm":`Stop the proxy and restore native Codex?`,"dash.stopFailed":`Failed to stop proxy (HTTP {status}).`,"dash.stopStillRunning":`The proxy is still answering, so it did not stop.`,"dash.stopUnknown":`The proxy did not confirm the stop. Check whether it is still running before trying again.`,"dash.maSwitchFailed":`Mode switch failed (HTTP {status}).`,"dash.maNetworkError":`Network error — is the proxy running?`,"dash.stopping":`Stopping…`,"dash.actions":`Proxy`,"dash.codexRestart":`Reload Codex models`,"dash.codexRestarting":`Stopping…`,"dash.codexRestartConfirm":`Stop Codex app-servers so they reload the model list? Any Codex turn in progress is interrupted, and Codex does not relaunch on its own — reopen it afterwards.`,"dash.codexRestartDone":`Stopped {count} Codex app-server(s). Reopen Codex to load the current model list.`,"dash.codexRestartNothing":`No Codex app-server is running. The next launch reads the current model list.`,"dash.codexRestartUnknown":`Could not list processes, so nothing was stopped.`,"dash.codexRestartPartial":`{count} app-server(s) did not exit. Stop them manually if the model list stays stale.`,"dash.codexRestartFailed":`Failed to reload Codex models (HTTP {status}).`,"dash.codexRestartUnreachable":`Could not reach the proxy.`,"dash.codexRestartMalformed":`The proxy returned an unexpected response.`,"dash.codexRestartTimeout":`The proxy did not answer in time. It may still be stopping app-servers.`,"models.staleBanner":`Codex is showing an older model list than this catalog. Restart Codex to reload it.`,"dash.codexAutoStart":`Start opencodex with Codex`,"dash.codexAutoStartHint":`Allows an installed launcher shim to run ocx ensure. This setting does not install restart protection; check Startup safety for the effective state.`,"dash.searchModel":`Search sidecar model`,"dash.searchModelHint":`Model used for web_search on non-OpenAI routed models. Requires ChatGPT login.`,"dash.searchReasoning":`Search reasoning effort`,"dash.visionModel":`Vision sidecar model`,"dash.visionModelHint":`Model used to describe images for text-only routed models. Requires ChatGPT login.`,"dash.webSearchSidecar":`Web search sidecar`,"dash.webSearchSidecarHint":`Choose the backend and model used for web search on routed models.`,"dash.webSearchOff":`Off`,"dash.webSearchCodexSync":`Saved. Codex's config was not rewritten — run Sync models to apply it.`,"dash.webSearchStream":`Stream answers live`,"dash.webSearchStreamHint":`Stream the model’s leading text and reasoning live until it decides on a tool call; the rest of the turn stays buffered for search interception. Text written before a search may partially repeat.`,"dash.visionSidecar":`Vision sidecar`,"dash.visionSidecarHint":`Choose the backend and model used to describe images for text-only routed models.`,"dash.visionOff":`Off`,"dash.visionAdvanced":`Advanced settings`,"dash.visionMaxDescriptions":`Maximum descriptions per turn`,"dash.visionMaxDescriptionsInvalid":`Enter a positive integer.`,"dash.visionTimeout":`Timeout`,"dash.visionTimeoutInvalid":`Enter an integer from {min} to {max} milliseconds.`,"dash.visionAdvancedPopover":`Advanced vision settings`,"compactionRouting.title":`Compaction routing`,"compactionRouting.description":`Choose a model for Codex compaction requests and which triggers it covers. Later messages keep the conversation settings.`,"compactionRouting.model":`Compaction model`,"compactionRouting.effort":`Reasoning effort`,"compactionRouting.triggers":`Applies to`,"compactionRouting.triggersManual":`Manual /compact only`,"compactionRouting.triggersBoth":`Manual and automatic`,"compactionRouting.triggersAuto":`Automatic only`,"compactionRouting.sources":`Sources`,"compactionRouting.sourcesAll":`All conversation models`,"compactionRouting.sourcesSelected":`Selected sources only`,"compactionRouting.sourcesProviders":`Entire providers`,"compactionRouting.sourcesModels":`Individual models`,"compactionRouting.sourcesSaved":`Saved selectors not in the current catalog`,"compactionRouting.sourcesNone":`Select at least one source, or switch back to all conversation models.`,"compactionRouting.sourcesHint":`Apply the override only when a compaction request's source model matches a selected model or provider/*. Other requests keep using their own model.`,"compactionRouting.sourcesGridTitle":`Reroute compaction requests whose source model matches:`,"compactionRouting.currentModel":`Use conversation model`,"compactionRouting.currentEffort":`Keep request effort`,"compactionRouting.effortHint":`Reasoning applies where supported by the compaction endpoint. The model must accept the full conversation.`,"compactionRouting.dataNotice":`A covered compaction request sends the entire conversation to the selected model's provider for summarization, even when the conversation runs on another provider.`,"compactionRouting.autoNotice":`Automatic compaction runs on its own, so a long conversation can be sent to that provider without you asking for it.`,"compactionRouting.providerWarning":`With this setting, every covered compaction request sends the full conversation contents to {provider} for summarization.`,"compactionRouting.comboWarning":`With this setting, every covered compaction request sends the full conversation contents to combo {combo} for summarization. The combo picks one of its targets ({providers}) by its routing strategy, but after a retryable failure it may retry the same full-conversation request on another target, so one or more target providers can receive the conversation.`,"compactionRouting.comboProvidersUnknown":`its configured target providers`,"compactionRouting.providerWarningScoped":`With this setting, only compaction requests whose source model matches {sources} send the full conversation contents to {provider} for summarization; other requests keep using their own model.`,"compactionRouting.comboWarningScoped":`With this setting, only compaction requests whose source model matches {sources} send the full conversation contents to combo {combo} for summarization; other requests keep using their own model. The combo picks one of its targets ({providers}) by its routing strategy, but after a retryable failure it may retry the same full-conversation request on another target, so one or more target providers can receive the conversation.`,"compactionRouting.loadFailed":`Could not load compaction settings.`,"compactionRouting.saved":`Compaction settings saved.`,"compactionRouting.saveFailed":`Could not save. Your changes are still here; try again.`,"memoryModels.title":`Memory routing`,"memoryModels.description":`Codex writes memories after a session ends. Choose a model for either phase, or keep its existing route.`,"memoryModels.infoLabel":`What are Extract and Consolidation?`,"memoryModels.info":`Codex turns finished sessions into memory in two steps. Extract reads one finished session and jots down what happened: one note per session, so it makes many small calls. Consolidation takes those notes and writes them into the memory files Codex reads at the start of your next sessions. It runs rarely, but it edits files. Each step asks for its own model, which is why they are listed separately here.`,"memoryModels.extract":`Extract`,"memoryModels.extractHint":`Summarizes each finished session into a raw memory. Runs once per session.`,"memoryModels.consolidation":`Consolidation`,"memoryModels.consolidationHint":`Merges the raw memories into the memory files Codex reads later. Runs rarely and edits files.`,"memoryModels.model":`Model`,"memoryModels.effort":`Reasoning effort`,"memoryModels.off":`Off`,"memoryModels.defaultEffort":`Codex default`,"memoryModels.dataNotice":`The chosen model receives that phase's input: the finished session for Extract, the raw memories for Consolidation.`,"memoryModels.accountNotice":`Only one phase is routed here; the other keeps its existing route. Shadow Call Intercept can also send that phase's memory calls to its configured model.`,"memoryModels.loadFailed":`Could not load memory settings.`,"memoryModels.saved":`Memory settings saved.`,"memoryModels.saveFailed":`Could not save. Your changes are still here; try again.`,"dash.shadowCallIntercept":`Shadow Call Intercept`,"dash.shadowCallInterceptHint":`Intercepts Codex App's background helper calls ({models}) for title generation and commit messages and redirects them to your chosen model.`,"dash.shadowCallWarning":`⚠ When enabled, ALL requests for {models} will be replaced with the selected model.`,"dash.shadowCallOriginal":`Original`,"dash.shadowCallModel":`Replacement model`,"dash.shadowCallTooltip":`Codex App makes background helper calls for thread title generation, commit message generation, and skill orchestration. The helper model changed across client versions, so opencodex intercepts every model in this set: {models}. Enable this to redirect those calls to your chosen model.`,"models.shadowCallIntercept":`Shadow Call Intercept`,"models.shadowCallInterceptHint":`Intercepts Codex App's background helper calls ({models}) for titles and commit messages and redirects them to your chosen model.`,"models.autoReviewOverride":`Auto-review override`,"models.autoReviewOverrideHint":`Chooses the model Codex uses for auto-review (the approval reviewer). Applied to every catalog row at sync; a provider-scoped autoReviewModel still takes precedence on its own rows.`,"models.autoReviewPending":`Pending`,"dash.sidecarBackend":`Backend`,"dash.sidecarModel":`Model`,"dash.backendAuto":`Auto`,"dash.backendOpenAI":`OpenAI`,"dash.backendAnthropic":`Anthropic`,"dash.sidecarSaved":`Sidecar settings saved. Applied on the next request.`,"dash.sidecarSaveFailed":`Failed to save sidecar settings.`,"dash.injectionLabel":`Sub-agent delegation`,"dash.injectionHint":`Pick the model Codex should hand sub-agent work to. The two switches below decide where that pick is used.`,"dash.injectionManage":`Open settings`,"dash.syncCodexSubagentDefaults":`Also save as a Codex default`,"dash.syncCodexSubagentDefaultsHint":`On, the pick above is written into Codex's own config, so new tasks start with that model too. Off, it is remembered only here. It takes effect on the next sync or restart, and your hand-written [agents] settings are left alone.`,"dash.multiAgentGuidance":`Tell Codex how to split work`,"dash.multiAgentGuidanceHint":`Sends a short note telling Codex how to hand work to sub-agents. On v2 it names the models it may use and which to prefer; on v1 it only applies at max or ultra reasoning effort. Off, no note is added.`,"dash.injectionNone":`None`,"dash.injectionEffortLabel":`Reasoning effort`,"dash.injectionEffortNone":`Model default`,"dash.effortCapLabel":`V2 ultra effort limit`,"dash.subagentEffortCapLabel":`V2 sub-agent effort limit`,"dash.effortCapHelp":`Limits the reasoning effort for V2 ultra-mode turns. When set, incoming max-effort requests (from ultra mode) are capped to the selected level. The sub-agent limit applies only to spawned child agents. Caps only lower effort, never raise it. If a model doesn't support the capped level, it snaps down to the nearest supported level.`,"dash.effortCapNone":`No cap`,"dash.maintenance":`Maintenance`,"dash.maintenanceHint":`Refresh Codex's model catalog or install a newer opencodex release.`,"dash.syncModels":`Sync models`,"dash.syncModelsHint":`Rewrite Codex's model catalog from the providers you have connected.`,"dash.syncRun":`Sync now`,"dash.syncing":`Syncing…`,"dash.syncOk":`Sync complete. {count} model(s) appended.`,"dash.syncStaleHint":`If Codex still shows an older list, restart its long-lived app-server ({cmd}).`,"dash.syncFailed":`Sync failed: {error}`,"dash.projectConfigTitle":`Project Codex config bypasses OpenCodex`,"dash.projectConfigHint":`These repo-local settings override the OpenCodex proxy (e.g. route to OpenCode Go directly). Remove them so ~/.codex/config.toml routing applies in that project.`,"dash.checkUpdate":`Check update`,"dash.updateTitle":`Update opencodex`,"dash.updateDesc":`Check npm for the selected channel, then choose whether to restart the proxy after installation.`,"dash.updateChannel":`Channel`,"dash.updateChecking":`Checking for updates…`,"dash.updateInstalled":`Installed`,"dash.updateLatest":`Latest`,"dash.updateAvailable":`Update available`,"dash.updateCurrent":`Up to date`,"dash.updateCommand":`Command`,"dash.updateSource":`This is a source checkout. Update it from the terminal with the shown command.`,"dash.updateUnavailable":`Could not read the latest version from npm. Try again later.`,"dash.updateRetry":`Retry`,"dash.updateRecheck":`Re-check`,"dash.updateCannotAuto":`One-click update is unavailable ({reason}).`,"dash.updateReason.source_checkout":`source checkout`,"dash.updateReason.latest_unavailable":`npm registry unreachable`,"dash.updateReason.already_latest":`already on latest`,"dash.updateReason.externally_managed":`managed externally by mise; run the shown command`,"dash.updateReason.external_ownership_invalid":`mise ownership metadata is unreadable or inconsistent`,"dash.updateReason.unknown":`update unavailable`,"dash.updateRestart":`Restart after update`,"dash.updateRestartHint":`Recommended. The current GUI keeps running the old code until the proxy restarts.`,"dash.runUpdate":`Update`,"dash.updateReconnecting":`Waiting for the restarted proxy…`,"dash.updateStatus.running":`Updating opencodex.`,"dash.updateStatus.restarting":`Update installed. Restarting proxy.`,"dash.updateStatus.succeeded":`Update finished.`,"dash.updateVersionTransition":`{currentVersion} -> {latestVersion}.`,"dash.updateStatus.failed":`Update failed.`,"prov.subtitle":`Configure the upstream providers opencodex routes into Codex. Log in with an account, add a provider, or edit the raw config.`,"prov.add":`Add Provider`,"prov.editJson":`Edit JSON`,"prov.accountLogin":`Account login`,"prov.noOauth":`No OAuth providers available.`,"prov.loggedIn":`logged in`,"prov.notLoggedIn":`not logged in`,"prov.logout":`Logout`,"prov.login":`Login`,"prov.loginWith":`Login with {provider}`,"prov.waitingBrowser":`Waiting for browser…`,"prov.didntOpen":`Didn't open? Click here`,"prov.copyLink":`Copy link`,"prov.dontOpenBrowser":`Don't open a browser on the proxy machine`,"prov.dontOpenBrowserHint":`Useful for a different browser profile, or when the dashboard is not on the proxy's machine.`,"prov.linkCopied":`Copied`,"prov.linkCopyUnavailable":`Clipboard unavailable`,"prov.deviceCode":`Device code`,"prov.copyCode":`Copy code`,"prov.copyCodeAndOpen":`Copy code & open`,"prov.openSignInPage":`Open sign-in page`,"prov.browserLaunchFailed":`The browser didn't open automatically. Open the sign-in page below or copy the link.`,"prov.codeCopied":`Code copied`,"prov.editAlias":`Edit alias`,"prov.aliasPrompt":`Display name (leave empty to clear)`,"prov.aliasSaved":`Alias saved`,"prov.aliasSaveFailed":`Could not save alias`,"prov.aliasInvalid":`Use at most 80 characters, with no control characters.`,"prov.accountId":`ID`,"prov.pasteRedirect":`Paste redirect URL or code`,"prov.pasteRedirectHint":`If the browser shows a localhost error, copy the full URL from its address bar and paste it here (or paste the authorization code).`,"prov.pasteSubmit":`Submit`,"prov.pasteSubmitting":`Submitting…`,"prov.pasteOk":`Code submitted — finishing login…`,"prov.pasteFail":`Could not submit code: {error}`,"prov.port":`Port`,"prov.default":`Default`,"prov.loadingConfig":`Loading…`,"prov.saved":`Saved! Restart proxy to apply.`,"prov.loadConfigFail":`Failed to load config`,"prov.invalidJson":`Invalid JSON`,"prov.saveFailed":`Save failed`,"prov.loginFailStart":`{provider} login failed to start`,"prov.loginError":`{provider} login error: {error}`,"prov.loginRequestFail":`{provider} login request failed`,"prov.loginCancelled":`{provider} login cancelled`,"prov.loginTimeout":`{provider} login timed out — browser closed or never finished. Try again.`,"prov.loginOk":`Logged in to {provider}. Run {cmd} (or it applies live) to list its models.`,"prov.loginSameAccount":`Still the same {provider} account — switch accounts in the browser, then try Add account again.`,"oauthTos.highTitle":`{provider}: subscription OAuth risk`,"oauthTos.elevatedTitle":`{provider}: unofficial OAuth bridge`,"oauthTos.anthropicBody":`This connects a Claude subscription through OpenCodex's third-party proxy. Anthropic has not endorsed this connection or automated account pooling; access depends on its current terms and enforcement.`,"oauthTos.highBody":`OpenCodex connects {provider} through a third-party OAuth path. Unsupported use may lead to access limits or suspension.`,"oauthTos.elevatedBody":`OpenCodex connects {provider} through an unofficial OAuth path. Use the official client when possible; unusual or automated traffic may be treated as abuse and access may be limited or suspended.`,"oauthTos.saferPath":`Safer option: configure an API key in OpenCodex instead.`,"oauthTos.acknowledge":`I understand the risk and want to continue with OAuth anyway.`,"oauthTos.continue":`Continue with OAuth`,"oauthTos.anthropicTitle":`Claude subscription connection`,"oauthTos.anthropicConditions":`Use an account you own or are authorized to use. Using the genuine Claude Code client with a person supervising the session is different from sending subscription tokens through other clients. OpenCodex also supports those other clients, so this connection does not guarantee that every use is permitted. Supported Agent SDK integrations are separate.`,"oauthTos.anthropicSaferPath":`For other clients or unattended automation, configure an Anthropic API key instead.`,"oauthTos.anthropicAcknowledge":`I understand this is a third-party subscription connection and will check the applicable terms.`,"oauthTos.anthropicContinue":`Continue with Claude subscription`,"subagentSurface.selectionTitle":`Switch the sub-agent surface to {mode}?`,"subagentSurface.selectionBody":`On {mode}, ChatGPT models that use the v2 surface — Sol and Terra on base, every model on v2 — hand their task to a routed model such as Grok or Claude encrypted for the ChatGPT backend, and the routed model cannot read it. That delegation fails with unreadable_encrypted_agent_task until it is fixed upstream. v1 delegates across providers reliably.`,"subagentSurface.advisoryTitle":`v1 is now the default sub-agent surface`,"subagentSurface.advisoryBody":`This install runs {mode}, where a ChatGPT model on the v2 surface hands a routed model an encrypted task it cannot read, so cross-provider delegation fails. We recommend v1 until that is fixed upstream. Your current setting is unchanged until you choose.`,"subagentSurface.continue":`Continue`,"subagentSurface.switchToV1":`Switch to v1`,"subagentSurface.learnMore":`Why this fails`,"prov.logoutOk":`Logged out of {provider}.`,"prov.logoutFail":`Could not log out of {provider}. Your account state is unchanged.`,"prov.removed":`Removed "{name}".`,"prov.removedDefault":`Removed "{name}". Default provider is now "{defaultProvider}".`,"prov.removedShadowTarget":`Removed "{name}". Shadow Call Intercept still targets "{model}", so helper calls will fail until you choose another target.`,"prov.removeFail":`Failed to remove "{name}".`,"prov.removeLastProvider":`You can't remove this provider when no other enabled provider can become the default.`,"prov.removeHasDependentCombos":`Remove or update these dependent combos first: {combos}.`,"prov.setDefault":`Set as default`,"prov.setDefaultSuccess":`"{name}" is now the default provider.`,"prov.setDefaultFail":`Couldn't set "{name}" as the default provider.`,"prov.defaultDisabled":`Enable this provider before making it the default.`,"prov.updateFail":`Couldn't update this provider.`,"prov.networkError":`Network error. Check that the proxy is running and try again.`,"prov.added":`Added "{name}". Live now — run {cmd} (or restart) to list its models in Codex's picker.`,"prov.modelsNoticeTitle":`Choose models`,"prov.modelsNoticeChecking":`Checking the model list. Model switches do not disable the provider.`,"prov.modelsNoticePending":`The initial model list is not confirmed yet. Models stay hidden until discovery finishes.`,"prov.modelsNoticeOff":`All model switches were turned OFF at registration. Enable the models you want on the Models page.`,"prov.modelsNoticeReady":`Choose which models appear on the Models page. Model switches do not disable the provider.`,"prov.modelsNoticeFailed":`The provider was saved, but the model list could not be refreshed. Try again.`,"prov.modelsNoticeCount":`{count} models`,"prov.modelsNoticeOpen":`Open Models`,"models.initialSelectionPending":`Initial discovery pending`,"prov.removeConfirm":`Remove provider "{name}"? Its models disappear from Codex's picker.`,"prov.hasApiKey":`api key configured`,"prov.hasHeaders":`custom headers configured`,"prov.accounts":`Accounts ({n})`,"prov.accountsAria":`Toggle {name} accounts`,"prov.accountActive":`Active`,"prov.accountReauth":`Re-login`,"prov.reauthenticate":`Re-authenticate`,"prov.reauthAccountMissing":`Selected account was not found after login`,"prov.reauthIdentityMismatch":`Signed-in account did not match the selected account`,"prov.accountAdd":`Add account`,"prov.accountNoLabel":`account {id}`,"prov.accountSwitchTitle":`Use this account`,"prov.accountSwitched":`Switched to {email}.`,"prov.accountSwitchFail":`Failed to switch account`,"prov.accountRemoved":`Removed {email}.`,"prov.accountRemoveFail":`Could not remove {email}. The account is unchanged.`,"prov.accountRemoveAria":`Remove {email}`,"prov.accountRemoveConfirm":`Remove account {email}? Its login is deleted from this proxy.`,"prov.keyAdd":`Add API key`,"prov.keyAdded":`Added API key to {name}.`,"prov.keyAddFail":`Failed to add API key`,"prov.keyPlaceholder":`Paste API key`,"prov.keySwitchTitle":`Use this key`,"prov.keySwitched":`Switched to key {key}.`,"prov.keySwitchFail":`Failed to switch key`,"prov.keyRemoved":`Removed key {key}.`,"prov.keyRemoveAria":`Remove key {key}`,"prov.keyRemoveConfirm":`Remove API key {key}? It is deleted from this proxy's config.`,"prov.activeBadge":`Active`,"prov.disabledBadge":`Disabled`,"prov.defaultBadge":`Default`,"prov.enable":`Enable`,"prov.disable":`Disable`,"prov.enabled":`Enabled "{name}". Its models can appear in Codex again.`,"prov.disabled":`Disabled "{name}". Settings are kept, but its models are hidden.`,"prov.disabledShadowTarget":`Disabled "{name}". Shadow Call Intercept still targets "{model}", so helper calls will fail until you choose another target or re-enable "{name}".`,"prov.enableFail":`Failed to enable "{name}".`,"prov.disableFail":`Failed to disable "{name}".`,"prov.enableAria":`Enable provider {name}`,"prov.disableAria":`Disable provider {name}`,"prov.defaultCannotDisable":`Default provider can't be disabled`,"prov.openaiAccountMode":`Codex account mode`,"prov.openaiModePool":`Pool`,"prov.openaiModeDirect":`Direct`,"prov.openaiPoolDesc":`Default. Rotate the main login and added accounts using affinity, quota, cooldown, and failover.`,"prov.openaiDirectDesc":`Use only the current/main Codex login. Stored pool accounts are not read or rotated.`,"prov.openaiModeSaved":`OpenAI account mode changed to {mode}.`,"prov.openaiModeSaveFailed":`Could not change the OpenAI account mode.`,"prov.openaiApiDesc":`Uses an OpenAI API key and never uses Codex account credentials.`,"prov.manageCodexAccounts":`Manage Codex accounts`,"prov.openaiApiMissing":`API key required`,"prov.openaiApiSetup":`Set up API key`,"models.tab.catalog":`Models`,"models.tab.combos":`Combos`,"models.tab.compatibility":`Compatibility`,"models.tab.routing":`Routing (beta)`,"models.tabsLabel":`Model surfaces`,"models.subtitle.combos":`Ordered groups of models that answer as one id. Chain targets with failover or spread the load with a balancing strategy.`,"models.subtitle.compatibility":`Read-only compatibility verdict matrix from lab projection evidence.`,"models.subtitle.routing":`Policy profiles, dry-run evaluation, and source-backed routing analytics.`,"models.subtitle":`Toggle which models Codex sees — native GPT passthrough and routed providers, grouped by provider (click a header to collapse). Hidden models stay off the catalog + model picker but remain directly callable by exact id.`,"models.delivery.title":`How changes reach Codex`,"models.delivery.chip.saved":`Saved here`,"models.delivery.chip.savedHub":`Saved on hub`,"models.delivery.chip.synced":`Synced {time}`,"models.delivery.chip.syncedUnknown":`No sync recorded`,"models.delivery.chip.loaded":`Codex loads it on restart`,"models.delivery.saved.title":`Saved to this proxy`,"models.delivery.saved.body":`Saving on this page rewrites the model catalog this OpenCodex proxy hands to Codex, which is the list the Codex model picker shows. The confirmation after saving means this step is done.`,"models.delivery.savedHub.title":`Saved on the hub`,"models.delivery.savedHub.body":`This machine is connected to a shared OpenCodex hub, so saving here changes the hub's catalog. The confirmation after saving means the hub has it; this machine still has to download it.`,"models.delivery.synced.title":`Synced to this machine`,"models.delivery.synced.bodyAt":`This machine last downloaded the hub catalog on {time} and wrote it where Codex reads it. That time only tells you when the download ran. If you saved on the hub after it, this machine keeps the previous list until the next sync.`,"models.delivery.synced.bodyUnknown":`This machine has no recorded download of the hub catalog yet, so Codex may still be reading an older list. The next sync downloads it.`,"models.delivery.loaded.title":`Loaded by Codex`,"models.delivery.loaded.body":`Codex reads the catalog when it starts, so a Codex window that was already open keeps its old model list. OpenCodex cannot look inside a running Codex to see which list it uses. When it can tell that Codex started before your change, a restart notice appears above the tabs.`,"models.delivery.hint":`If a model you turned on does not show up in Codex, press Reload Codex models at the top right of this page, then reopen Codex.`,"models.nativeGroupLabel":`OpenAI native`,"models.nativeHint":"Passthrough models use the Pool or Direct account option selected on Providers. Toggling one off hides it from the Codex picker (the catalog entry is kept, so re-enabling restores it exactly). Adding a model here registers a routed `openai/<model>` selector, not a new bare passthrough id.","models.active":`{active}/{total} visible`,"models.workspace.providers":`Providers`,"models.workspace.allProviders":`All providers`,"models.workspace.mainAria":`Model details`,"models.allOn":`All on`,"models.allOff":`All off`,"models.presetLabel":`Models`,"models.presetMode_preset":`Preset`,"models.presetMode_all":`All`,"models.presetMode_custom":`Custom`,"models.presetSummary":`{count} of {total} shown — core preset v{version}`,"models.presetUpdateAvailable":`Preset v{version} available`,"models.presetAppliedToast":`{provider}: preset applied — {count} models selected`,"models.presetClearedToast":`{provider}: showing all models`,"models.presetEmpty":`{provider}: preset matched no models — selection unchanged`,"models.presetConfirmReplace":`Replace your selection with the {count}-model preset?`,"models.cap350k":`Cap 350k`,"models.capApplied":`Context cap applied — takes effect on the next Codex turn.`,"models.capSaveFailed":`Failed to save context cap`,"models.contextCapped":`350k cap`,"models.contextCapLabel":`Default window / cap`,"models.v2Label":`Sub-agent`,"models.shadowCallOriginal":`{models} →`,"models.v2DocsLink":`What is v1 / v2?`,"models.v2Mode_v1":`v1`,"models.v2Mode_default":`base`,"models.v2Mode_v2":`v2`,"models.v2ModeDesc_v1":`All models → v1 surface`,"models.v2ModeDesc_default":`Upstream defaults (sol/terra=v2, luna=v1)`,"models.v2ModeDesc_v2":`All models → v2 surface`,"models.keepNativeOnV1":`Keep ChatGPT on v1`,"models.keepNativeOnV1Hint":`ChatGPT encrypts v2 child tasks only when a ChatGPT-native parent stays on v2, so Grok and Claude cannot read them. Turn this on to keep Sol/Terra on v1 and avoid that encryption. Routed parents keep v2.`,"models.v2Help":`Controls the multi-agent surface for all models.
|
|
11
11
|
|
|
12
12
|
v1: Classic single-thread agent. Every model uses the v1 collab surface.
|
|
13
13
|
base: Upstream defaults — sol/terra use v2, luna uses v1, others follow the codex feature flag.
|
|
@@ -91,4 +91,4 @@ v2: agente multithread com spawn_agent. Todos os modelos usam a superfície coll
|
|
|
91
91
|
|
|
92
92
|
Na v2, Manter o ChatGPT na v1 deixa Sol/Terra na superfície v1 para que ainda possam acionar Grok ou Claude. O ChatGPT criptografa as tarefas filhas da v2; modelos roteados não conseguem lê-las. Pais roteados permanecem na v2.
|
|
93
93
|
|
|
94
|
-
As alterações valem para novas sessões.`,"dash.multiAgent":`Subagente`,"dash.codexDesktopAuthless":`Abrir o Codex sem fazer login`,"dash.codexDesktopAuthlessHint":`Desativado por padrão. Dispensa o login separado do Desktop em conexões locais elegíveis. As credenciais upstream continuam sendo necessárias. Reinicie o Codex após alterar esta configuração. Recursos do Desktop que dependem de conta podem ficar indisponíveis.`,"dash.codexClientCompaction":`Usar compactação no cliente`,"dash.codexClientCompactionHint":`Desativado por padrão; somente loopback autenticado. As próximas compactações armazenam resumos portáveis em texto simples enquanto o roteamento de provedores do OpenCodeX e da V2 permanece ativo; o provedor configurado pode processá-los e consumir cota. O histórico não é alterado, e as threads existentes continuam roteando pelo proxy por meio do override openai_base_url gerenciado pelo OpenCodeX; se você definir essa linha manualmente, ela é mantida, e essas threads seguem o seu destino. O histórico ocx1 existente continua recuperável; recupere uma thread separadamente apenas antes de reproduzi-la no Codex nativo. Reinicie o Codex após alterar esta configuração.`,"dash.codexRemoteHistoryHint":`O roteamento por tabela de provedores pode ocultar threads existentes marcadas como openai em algumas listas remotas do celular. O histórico não é excluído. O cliente remoto precisa listar todos os provedores; esta opção não corrige o filtro desse cliente.`,"models.v2Conflict":`[agents] max_concurrent_threads_per_session / max_threads está definido — o codex se recusará a iniciar; remova-o do config.toml`,"models.v2Applied":`Modo de subagente atualizado — vale para novas sessões (reinicie o app do Codex para atualizar o seletor)`,"models.v2ThreadsLabel":`Limite de subagentes`,"models.v2ThreadsDefault":`padrão`,"models.v2ThreadsApplied":`Limite de subagentes atualizado — vale para novas sessões`,"models.v2ThreadsInvalid":`O limite de subagentes deve ser um inteiro >= 1`,"models.v2ThreadsApply":`Aplicar`,"models.capValue":`Padrão {value}`,"models.contextSettings":`Janelas personalizadas`,"models.contextSettingsTitle":`Janelas personalizadas — {provider}`,"models.contextDefault":`Padrão do provedor`,"models.contextModel":`Modelo`,"models.contextModelOverride":`Substituição do modelo`,"models.contextHint":`Informe aqui a janela real do Codex quando já a conhecer. Isso preenche uma janela upstream ausente e só reduz uma janela maior informada. Deixe em branco para usar a Janela padrão / limite do provedor, ou 128k se esse limite estiver desativado.`,"models.contextAutomatic":`Descoberta automática`,"models.contextSaved":`Janelas de contexto atualizadas — valem a partir do próximo turno do Codex.`,"models.contextUnchanged":`Nenhuma alteração de janela de contexto para salvar.`,"models.contextSaveFailed":`Falha ao salvar as janelas de contexto`,"models.contextInvalid":`As janelas de contexto devem ser números inteiros positivos`,"models.contextCappedValue":`limite de {value}`,"models.setAll":`Definir para todos`,"models.setAllHint":`Ativa a janela padrão de {value} para todos os provedores roteados. Relays que omitem context_window / context_length recebem este valor como a janela real do Codex. Use Janelas personalizadas na linha de um provedor para ajustar um modelo manualmente. Provedores nativos não são afetados.`,"models.collapseAll":`Recolher tudo`,"models.expandAll":`Expandir tudo`,"models.orderHint":`A ordem padrão segue as seleções em destaque e a prioridade do catálogo, com ordenação por provedor/modelo para linhas roteadas empatadas. Uma ordem salva do seletor pode sobrepor a ordem de exibição; as chaves de visibilidade filtram quais linhas aparecem. Um cliente pode manter um catálogo antigo até buscá-lo novamente.`,"models.settingsPanel.title":`Configurações do modelo`,"models.settingsPanel.off":`desativado`,"models.settingsPanel.attention":`Requer atenção`,"models.custom":`Personalizado…`,"models.customApply":`Aplicar`,"models.customPlaceholder":`Tokens (ex.: 420000)`,"models.customAdd":`Adicionar modelo personalizado`,"models.customAddTitle":`Adicionar modelo personalizado — {provider}`,"models.customEditTitle":`Editar modelo personalizado — {provider}`,"models.settingsTitle":`Editar modelo — {model}`,"models.settingsContextInherit":`Sem substituição — atualmente {value}`,"models.settingsContextUnknown":`desconhecido`,"models.settingsReload":`Recarregar`,"models.settingsReloaded":`Lista de modelos recarregada. Reabra {model} para ver os valores armazenados.`,"models.settingsNoChange":`Nenhuma configuração alterada para {model}`,"models.settingsSaved":`Configurações do modelo salvas para {model}`,"models.settingsSaveFailed":`Não foi possível confirmar se as configurações foram salvas. Recarregue a lista de modelos antes de tentar novamente.`,"models.settingsRefreshFailed":`Salvo. A lista de modelos não foi recarregada, então a linha pode mostrar valores antigos. Recarregue para conferir.`,"models.settingsSavedCodexStale":`{model} salvo, mas o catálogo de modelos do Codex não foi atualizado. Clique em Sincronizar agora no Painel para o Codex receber a alteração.`,"models.settingsRejected":`O servidor rejeitou estas configurações, então nada foi salvo. Confira os valores e tente novamente.`,"models.settingsDefaultEffort":`Nível padrão`,"models.settingsModalitiesInherit":`Sem substituição — seguindo atualmente a declaração do upstream: {modalities}`,"models.settingsModalitiesUnknown":`não declarado`,"models.settingsRestore":`Restaurar`,"models.settingsRestoreHint":`Limpa todas as substituições deste modelo e volta aos valores calculados.`,"models.settingsRestoreConfirm":`Restaurar {model} para os valores calculados? Isso limpa as substituições de janela de contexto, modalidade e raciocínio.`,"models.settingsRestored":`{model} restaurado para os valores calculados`,"models.settingsNothingToRestore":`{model} não tem substituições; já está nos valores calculados`,"pws.manageModelVisibility":`Gerenciar visibilidade em Modelos`,"pws.modelOwnershipLoading":`Verificando as definições de modelos…`,"pws.modelOwnershipFailed":`Não foi possível carregar as definições de modelos. Tente novamente antes de fazer alterações.`,"pws.modelSelectionPending":`Conclua a seleção de modelos em Modelos antes de fazer alterações.`,"pws.modelSaved":`Definição de modelo personalizado salva.`,"pws.modelSavedHidden":`Definição salva. Este modelo está oculto; gerencie a visibilidade em Modelos.`,"pws.modelSavedRefreshPending":`Definição salva, mas não foi possível atualizar o catálogo de modelos. Tente a atualização novamente; não o adicione de novo.`,"pws.modelMutationUnconfirmed":`Não foi possível confirmar a alteração. Atualize os modelos antes de tentar novamente.`,"pws.modelRemovedRefreshPending":`A alteração foi salva, mas não foi possível atualizar o catálogo de modelos. Tente a atualização novamente.`,"pws.modelHidden":`Modelo oculto. Restaure a visibilidade em Modelos.`,"pws.modelDefinitionDeleted":`Definição personalizada excluída. Um modelo subjacente ainda pode aparecer.`,"pws.modelKnown":`Este modelo já é conhecido. Gerencie a visibilidade dele em Modelos.`,"models.customAdded":`Modelo personalizado adicionado`,"models.customUpdated":`Modelo personalizado atualizado`,"models.customDeleted":`Modelo personalizado excluído`,"models.customSaveFailed":`Falha ao salvar o modelo personalizado`,"models.customSaving":`Salvando…`,"models.customAddBtn":`Adicionar`,"models.customEditBtn":`Atualizar`,"models.customEdit":`Editar`,"models.customDelete":`Excluir`,"models.customDeleteConfirm":`Excluir a definição personalizada de {name}? Um modelo nativo ou descoberto subjacente pode voltar a aparecer.`,"models.hide":`Ocultar`,"models.hideConfirm":`Ocultar {name} do catálogo de modelos? Isso não remove a definição nem altera a política de roteamento direto.`,"models.customBadge":`Personalizado`,"models.customSummary":`{count} personalizado(s)`,"models.customFieldModelId":`ID do modelo (slug do endpoint)`,"models.customFieldModelIdPlaceholder":`ex.: qwen4-max-preview`,"models.customFieldDisplayName":`Nome de exibição (opcional)`,"models.customFieldDisplayNamePlaceholder":`ex.: Qwen 4 Max Preview`,"models.customFieldContext":`Janela de contexto`,"models.customFieldModalities":`Modalidades de entrada`,"models.customFieldReasoning":`Esforço de raciocínio`,"models.customFieldReasoningOverride":`Substituir o esforço de raciocínio`,"models.reasoningEffort.none":`Nenhum`,"models.reasoningEffort.minimal":`Mínimo`,"models.reasoningEffort.low":`Baixo`,"models.reasoningEffort.medium":`Médio`,"models.reasoningEffort.high":`Alto`,"models.reasoningEffort.xhigh":`Extra alto`,"models.reasoningEffort.max":`Máximo`,"models.reasoningEffort.ultra":`Ultra`,"models.tipProvider":`Provedor`,"models.tipContext":`Contexto`,"models.tipModalities":`Modalidades`,"models.tipStatus":`Status`,"models.tipActive":`Ativo`,"models.tipDisabled":`Desativado`,"models.applied":`Salvo. O Codex mostra a alteração depois de recarregar a lista de modelos.`,"models.integrationRefreshWarning":`Seleção de modelos salva. Alguns catálogos de clientes não puderam ser atualizados. Verifique Integrações antes de iniciar uma nova sessão.`,"models.saveFailed":`Falha ao salvar`,"models.networkError":`Erro de rede — o proxy está em execução?`,"models.loadFail":`Falha ao carregar os modelos — o proxy está em execução?`,"models.noRouted":`Nenhum modelo roteado`,"models.noRoutedHint":`Faça login em um provedor ou adicione um primeiro.`,"models.emptyDiscovery":`Nenhum modelo foi descoberto. Verifique o endpoint do provedor ou adicione um modelo estático/personalizado.`,"models.emptyDiscoveryDisabled":`A descoberta de modelos em tempo real está desativada e nenhum modelo estático está configurado.`,"models.discoveryFailedBadge":`Falha na descoberta`,"models.discoveryFailedHttp":`A descoberta de modelos falhou (HTTP {status}).`,"models.discoveryFailedBlocked":`A descoberta de modelos foi bloqueada pela política do destino.`,"models.discoveryFailedInvalidResponse":`A descoberta de modelos retornou uma resposta inválida.`,"models.discoveryFailedNetwork":`A descoberta de modelos falhou por erro de rede.`,"models.discoveryFailedProvider":`O provedor informou um erro na descoberta de modelos.`,"models.discoveryFailedGeneric":`A descoberta de modelos falhou.`,"models.openProviderSettings":`Abrir configurações do provedor`,"models.inactiveNoCredit":`Sem crédito`,"models.inactiveNoCreditHint":`Todos os provedores por trás desta entrada estão sem crédito no momento, então uma requisição falharia. Ela continua listada e volta a ser utilizável quando o crédito for renovado ou recarregado.`,"models.discoveryFailedDependency":`A descoberta de modelos está ativada para este provedor. Enquanto continuar falhando, desative “{control}” nas configurações do provedor para usar modelos adicionados manualmente ou estáticos.`,"models.loading":`Carregando…`,"models.search":`Buscar modelos…`,"models.showMore":`Mostrar mais {n}`,"models.freeOnly":`Somente gratuitos`,"models.noFreeMatch":`Nenhum modelo gratuito aqui. Desative “Somente gratuitos” para ver os demais.`,"models.allowlistLabel":`Somente selecionados`,"models.allowlistHint":`Somente os modelos marcados vão para o catálogo (vazio = todos). Útil para provedores que expõem milhares de modelos.`,"models.selectedCount":`{n} selecionados`,"sub.forceTitle":`Forçar todos os subagentes a usar o mesmo modelo`,"sub.forceModel":`Modelo dos subagentes do Claude Code`,"sub.forceChoose":`Selecione um modelo exposto`,"sub.forceHelp":`Aplica-se aos agentes de plugins e aos agentes integrados (incluindo Explore/Plan), substituindo os modelos definidos por chamada. Forks e skills com model: inherit mantêm o modelo da conversa principal. O modelo principal e os modelos auxiliares Haiku/small-fast não são afetados.`,"sub.forceScope":`Desativado por padrão. Aplica-se a partir da próxima execução com roteamento via ocx claude, não à execução direta de claude. As variáveis exportadas no shell têm prioridade; env em settings.json pode sobrescrevê-las. O status verifica apenas a CLI e as configurações do usuário no servidor, não as de outro shell nem as do projeto.`,"sub.forceInvalid":`O destino configurado não está disponível. A substituição do modelo na inicialização será ignorada; selecione um modelo exposto ou desative esta opção.`,"sub.forceOld":`A versão do Claude Code é anterior à 2.1.257: FORCE é ignorado; aplica-se apenas o modelo padrão dos subagentes, sem imposição.`,"sub.forceUnknown":`A versão do Claude Code é desconhecida. Forçar um modelo requer a versão 2.1.257 ou posterior.`,"sub.forceOverride":`Sobrescrito por settings.json: seu env contém um modelo de subagente ou uma configuração FORCE. O OpenCodex não modifica esse arquivo.`,"sub.forceSettingsUnknown":`Não foi possível inspecionar settings.json. Não se sabe se suas configurações sobrescrevem esta opção.`,"sub.forceSaved":`Salvo. Entra em vigor na próxima execução com roteamento via ocx claude.`,"sub.subtitle":`O {cmd} do Codex anuncia apenas os 5 primeiros modelos (por prioridade) como substituições. Escolha até 5 aqui — gpt nativo ou roteado — e o opencodex define a prioridade deles no catálogo para que exatamente esses fiquem à frente. Qualquer outro modelo continua acessível pelo nome exato; isto controla apenas o que é exibido.`,"sub.featured":`Em destaque`,"sub.advanced":`Avançado`,"sub.orderHintAria":`Como esta ordem é usada`,"sub.orderHint":`A ordem exibida aqui define as posições 1 a 5 no topo do seletor de modelos do Codex e os modelos padrão candidatos para {cmd}.`,"sub.noneSelected":`Nenhum selecionado — escolha na lista abaixo.`,"sub.models":`Modelos`,"sub.search":`Buscar modelos (gpt nativo + roteados)…`,"sub.settings":`Configurações`,"sub.sections":`Seções de subagentes`,"sub.delegation.model":`Modelo a chamar primeiro`,"sub.delegation.modelHint":`O modelo que o Codex aciona primeiro ao delegar trabalho. “Em destaque” acima é a lista que ele pode chamar; este é o que ele chama primeiro.`,"sub.suggest.button":`Sugerir`,"sub.suggest.label":`Trabalho delegado`,"sub.suggest.placeholder":`O que o Codex costuma delegar? Ex.: buscas somente leitura em todo o repositório ou refatorações em vários módulos`,"sub.suggest.submit":`Dimensionar`,"sub.suggest.running":`Dimensionando…`,"sub.suggest.failed":`Não foi possível dimensionar o trabalho delegado.`,"sub.suggest.title":`Modelo sugerido`,"sub.suggest.accept":`Usar este`,"sub.noModels":`Nenhum modelo — faça login em um provedor ou adicione um primeiro.`,"sub.saved":`{n} modelos salvos. Inicie uma nova sessão do Codex (ou execute {cmd}) para vê-los como substituições de spawn_agent.`,"sub.saveFailed":`Falha ao salvar`,"sub.networkError":`Erro de rede — o proxy está em execução?`,"sub.loadFail":`Falha ao carregar os modelos — o proxy está em execução?`,"sub.loading":`Carregando…`,"sub.moveUp":`Mover {m} para cima`,"sub.moveDown":`Mover {m} para baixo`,"sub.removeAria":`Remover {m}`,"sub.workspace.addToFeatured":`Adicionar {m} aos destaques`,"sub.workspace.allModels":`Todos os modelos`,"sub.workspace.featuredFull":`A lista de destaques está cheia (máx. 5)`,"sub.workspace.mainAria":`Detalhes do modelo de subagente`,"sub.workspace.notFeatured":`Fora dos destaques`,"sub.workspace.priority":`Prioridade`,"sub.ultraMode":`Delegação sempre proativa`,"sub.ultraModeHint":`Ativa a política de delegação multiagente proativa para todos os modelos e esforços de raciocínio (não altera o esforço de raciocínio em si). Grava features.multi_agent_v2.multi_agent_mode_hint_text no config.toml.`,"sub.ultraModeV2Required":`Requer a superfície multiagente v2 — ative multi_agent_v2 e selecione v2 no controle de modo de subagente primeiro.`,"sub.ultraModeText":`Texto da delegação proativa`,"sub.ultraModePreset":`Restaurar predefinição`,"sub.ultraModeLoadFail":`Falha ao carregar as configurações de delegação proativa — o proxy está em execução?`,"sub.ultraModeSaveFail":`Falha ao salvar as configurações de delegação proativa`,"sub.ultraModeSaved":`Delegação proativa salva. Vale para novas sessões do Codex.`,"sub.workspace.removeFromFeatured":`Remover {m} dos destaques`,"sub.workspace.selectModel":`Selecione um modelo`,"sub.workspace.selectModelDesc":`Escolha um modelo na lista para ver os detalhes e colocá-lo em destaque para o spawn_agent.`,"sub.workspace.selector":`Seletor público`,"sub.fallbackLabel":`Cadeia de fallback de subagente`,"sub.fallbackHint":`Modelos tentados, em ordem, quando o modelo do subagente estiver indisponível ou falhar.`,"sub.fallbackAdd":`Adicionar modelo de fallback…`,"sub.fallbackPoll":`Intervalo de verificação de disponibilidade`,"sub.fallbackSaved":`Configurações de fallback de subagente salvas.`,"sub.fallbackSaveFailed":`Falha ao salvar as configurações de fallback`,"sub.fallbackUnavailable":`Não anunciado no momento; mantido na cadeia.`,"sub.fallbackPollInvalid":`Informe um número inteiro de 5000 a 600000 ms.`,"sub.v2Compatibility.title":`Compatibilidade V2 com pai nativo`,"sub.v2Compatibility.risk":`Se um pai nativo do ChatGPT delegar a este modelo roteado usando V2, a tarefa pode ser criptografada e falhar antes da execução. Tarefas legíveis vindas de pais roteados não são afetadas.`,"sub.v2Compatibility.recoveryUnknown":`O estado de recuperação ativada/elegibilidade não é exposto por este servidor. Use delegação V1/compatível com texto simples, ou ative a recuperação V2 experimental somente se elegível. A recuperação adiciona consumo de cota, latência, dependência do backend e possível perda de fidelidade; ela não corrige o protocolo upstream.`,"sub.v2Compatibility.details":`Detalhes de compatibilidade`,"logs.title":`Logs de requisições`,"logs.tabLogs":`Logs`,"logs.tabDebug":`Debug`,"logs.subtitle":`Requisições recentes roteadas pelo proxy local do opencodex, das mais novas para as mais antigas.`,"logs.autoRefresh":`Atualização automática`,"logs.noRequests":`Nenhuma requisição ainda.`,"logs.loadError":`Não foi possível carregar os logs de requisições.`,"logs.filter.surface.label":`Superfície`,"logs.filter.model.all":`Todos os modelos`,"logs.filter.provider.label":`Provedor`,"logs.filter.provider.all":`Todos os provedores`,"logs.filter.status.label":`Status`,"logs.filter.status.all":`Todos os status`,"logs.filter.status.success":`Sucesso (2xx)`,"logs.filter.status.errors":`Erros (4xx/5xx)`,"logs.filter.time.label":`Período`,"logs.filter.time.all":`Todo o período`,"logs.filter.time.15m":`Últimos 15 min`,"logs.filter.time.1h":`Última 1 h`,"logs.filter.time.24h":`Último 1 dia`,"logs.filter.speed.label":`Velocidade`,"logs.filter.speed.all":`Todas as velocidades`,"logs.filter.speed.slow":`< 15 tok/s`,"logs.filter.speed.medium":`15–< 50 tok/s`,"logs.filter.speed.fast":`≥ 50 tok/s`,"logs.filter.reset":`Limpar filtros`,"logs.filter.showingCount":`Exibindo {count} de {total}`,"logs.noMatchingRequests":`Nenhuma requisição correspondente.`,"logs.filter.surface.all":`Todas`,"logs.filter.surface.claude":`Claude`,"logs.filter.surface.codex":`Codex`,"logs.filter.surface.grok":`Grok`,"logs.filter.interceptedHelpersOnly":`Somente auxiliares interceptados`,"logs.badge.interceptedHelper":`I · {model}`,"logs.badge.interceptedHelperTitle":`Requisição de auxiliar interceptada`,"logs.filter.conversation.label":`Conversa`,"logs.filter.conversation.placeholder":`Cole o ID da conversa`,"logs.filter.conversation.clear":`Limpar`,"logs.filter.model.label":`Modelo`,"logs.filter.model.placeholder":`Filtrar por modelo ou provedor`,"logs.filter.conversation.apply":`Filtrar logs`,"logs.conversation.totals":`{requests} requisições · {tokens} tokens · {cost}`,"logs.conversation.scope":`Os totais cobrem apenas o buffer de logs atualmente carregado.`,"logs.conversation.excluded":`({unpriced} sem preço, {unmetered} sem medição excluídas do ~$)`,"logs.cost.approximate":`{amount}`,"logs.cost.lowerBound":`≥{amount}`,"logs.cost.unavailable":`—`,"logs.detail.conversation":`Conversa`,"logs.badge.claude":`Claude`,"logs.badge.grok":`Grok`,"logs.col.time":`Hora`,"logs.col.request":`Requisição`,"logs.col.model":`Modelo`,"logs.col.effort":`Esforço`,"logs.col.provider":`Provedor`,"logs.col.status":`Status`,"logs.col.tokens":`Tokens`,"logs.col.tokPerSec":`tok/s`,"logs.col.estimatedCost":`~$`,"logs.metric.tokPerSecTitle":`Tokens de saída por segundo durante toda a duração da requisição`,"logs.metric.estimatedCostTitle":`Equivalente ao preço de tabela da API, não uma cobrança real; preços sem correspondência ficam indisponíveis`,"usage.cost.total":`Equivalente ao preço de tabela da API (este período)`,"usage.cost.disclaimer":`Não é um comprovante de cobrança. Pode valer o uso da assinatura ou créditos do provedor.`,"usage.cost.unpricedNote":`{count} requisições excluídas (sem preço ou uso)`,"usage.cost.excluded":`({count} requisições excluídas)`,"usage.cost.excludedOne":`({count} requisição excluída)`,"logs.detail.section.basic":`Informações básicas`,"logs.detail.route.section":`Decisão de rota`,"logs.detail.route.kind":`Tipo de rota`,"logs.detail.route.profile":`Perfil`,"logs.detail.route.selected":`Selecionado`,"logs.detail.route.candidates":`Candidatos`,"logs.detail.route.unknown":`Nenhum rastreio de rota registrado para esta requisição (linha anterior ao rastreio).`,"logs.filter.protocol.label":`Caminho do protocolo`,"logs.filter.protocol.all":`Todos os caminhos`,"logs.filter.protocol.none":`Sem dados de caminho`,"logs.protocol.mode.native":`Nativo`,"logs.protocol.mode.translated":`Traduzido`,"logs.protocol.mode.legacyBridge":`Ponte legada`,"logs.protocol.mode.blocked":`Bloqueado`,"logs.protocol.disposition.passthrough":`Repassado`,"logs.protocol.disposition.translated":`Traduzido`,"logs.protocol.disposition.degraded":`Degradado`,"logs.protocol.disposition.unsupported":`Descartado`,"logs.protocol.wire.responses":`Responses`,"logs.protocol.wire.chat":`Chat`,"logs.protocol.wire.messages":`Messages`,"logs.protocol.wire.other":`Outro adaptador`,"logs.protocol.hop.ir":`IR`,"logs.protocol.hop.internal":`Responses (interno)`,"logs.protocol.badgeTitle":`Caminho do protocolo: {path} ({mode})`,"logs.detail.protocol.section":`Caminho do protocolo`,"logs.detail.protocol.inbound":`API do cliente`,"logs.detail.protocol.mode":`Modo de entrega`,"logs.detail.protocol.upstream":`Wire upstream`,"logs.detail.protocol.requestPath":`Caminho da requisição`,"logs.detail.protocol.responsePath":`Caminho da resposta`,"logs.detail.protocol.reasons":`Motivos`,"logs.detail.protocol.features":`Efeitos nos recursos`,"logs.detail.protocol.attempts":`Caminhos das tentativas`,"logs.detail.protocol.attempt":`Tentativa {ordinal}`,"logs.detail.protocol.none":`Nenhum dado de caminho registrado para esta requisição.`,"logs.detail.section.performance":`Desempenho`,"logs.detail.section.cost":`Equivalente ao preço de tabela da API`,"logs.detail.section.attempts":`Tentativas do combo`,"logs.detail.section.usage":`Uso bruto`,"logs.detail.ttft":`TTFT`,"logs.detail.decodeTokPerSec":`Taxa de decodificação (est.)`,"logs.decodeBasis.generation":`Janela de geração`,"logs.decodeBasis.legacy":`Após a saída visível`,"logs.decodeBasis.unknown":`Medição de tempo desconhecida`,"logs.detail.decodeGeneration":`Taxa de saída durante a geração (est.)`,"logs.detail.decodeLegacy":`Taxa de saída após a primeira saída visível (est.)`,"logs.detail.decodeUnknown":`Taxa de saída (est.; método de medição de tempo desconhecido)`,"logs.detail.decodeBasisHint.generation":`Estimada usando o tempo entre a primeira saída observada pelo proxy, incluindo raciocínio, e o último delta de saída.`,"logs.detail.decodeBasisHint.legacy":`Estimada usando o tempo entre a primeira saída visível e o fim da requisição, contando todos os tokens de saída informados, incluindo raciocínio.`,"logs.detail.decodeBasisHint.unknown":`O servidor não informou qual método de medição de tempo foi usado nesta estimativa.`,"logs.detail.endToEndTokPerSec":`Saída de ponta a ponta (tok/s)`,"logs.detail.reason.ttft_missing":`Nenhum tempo até o primeiro token foi registrado para esta requisição, portanto não há janela de decodificação para medir.`,"logs.detail.reason.decode_window_too_short":`A janela de saída medida foi inferior a um segundo, curta demais para estimar a taxa de decodificação.`,"logs.detail.costTotal":`Equivalente ao preço de tabela`,"logs.detail.totalTokens":`Total de tokens`,"logs.detail.matchedKey":`Chave de preço correspondente`,"logs.detail.priceSource":`Fonte do preço`,"logs.detail.unavailableReason":`Motivo da indisponibilidade`,"logs.detail.copyRequestId":`Copiar ID da requisição`,"logs.detail.copied":`Copiado`,"logs.detail.source.jawcode":`catálogo jawcode`,"logs.detail.source.expected":`Sobreposição de preço esperado`,"logs.detail.source.user":`Sobreposição de preço configurada no provedor`,"logs.detail.verification.verified":`Verificado`,"logs.detail.verification.derived":`Derivado do modelo base`,"logs.detail.attempt.target":`Provedor / modelo`,"logs.detail.attempt.reason":`Resultado / motivo`,"logs.detail.attempt.completed":`Concluída`,"logs.detail.attempt.e2eNote":`O tok/s de nível superior é ponta a ponta; cada tentativa usa sua própria duração.`,"logs.detail.attempt.recovery.transient5xx":`5xx transitório`,"logs.detail.attempt.recovery.connectionReset":`Conexão reiniciada`,"logs.detail.attempt.recovery.oauth401":`Reautenticação OAuth`,"logs.detail.attempt.recovery.key429":`Chave com limite de taxa (429)`,"logs.detail.attempt.recovery.rateLimit429":`Limite de taxa (429)`,"logs.detail.attempt.recovery.anthropicOauth429":`OAuth da Anthropic com limite de taxa (429)`,"logs.detail.attempt.recovery.image413":`Payload de imagem grande demais (413)`,"logs.detail.attempt.recovery.emptyCompletion":`Nova tentativa por conclusão vazia`,"logs.detail.attempt.recovery.consoleGoUpload":`Nova tentativa de upload no console`,"logs.detail.attempt.recovery.key401":`Reautenticação da chave de API`,"logs.detail.attempt.recovery.oauthAccount403":`Validação da conta necessária (403)`,"logs.detail.attempt.recovery.oauthAccount429":`Conta com limite de taxa (429)`,"logs.detail.attempt.recovery.oauthAccount402":`Cota da conta esgotada (402)`,"logs.detail.attempt.recovery.opaqueBlobRejection":`Estado criptografado obsoleto descartado`,"logs.detail.attempt.recovery.reasoningEffortDowngrade":`Esforço de raciocínio reduzido`,"logs.detail.attempt.recovery.anthropicFastDowngrade":`Modo rápido recusado, repetido em velocidade padrão`,"logs.detail.outcome.label":`Resultado`,"logs.detail.outcome.completed":`Concluída`,"logs.detail.outcome.failed":`Falhou`,"logs.detail.outcome.incomplete":`Incompleta`,"logs.detail.outcome.aborted":`Abortada`,"logs.detail.sends.label":`Envios upstream`,"logs.detail.sends.unresolved":`não resolvido`,"logs.detail.attempt.recovery.unknown":`Motivo de recuperação desconhecido`,"logs.detail.cause.label":`Causa da falha`,"logs.detail.stage.label":`chegou a`,"logs.detail.resend.label":`Reenvio`,"logs.detail.cause.transportUnsent":`Nunca enviada ao upstream`,"logs.detail.cause.transportAmbiguous":`Conexão perdida, estado do upstream desconhecido`,"logs.detail.cause.upstreamDeclined":`O upstream recusou iniciar`,"logs.detail.cause.rateLimit":`Limite de taxa atingido`,"logs.detail.cause.quotaExhausted":`Cota esgotada`,"logs.detail.cause.credentialRejected":`Credenciais rejeitadas`,"logs.detail.cause.policyRefusal":`Recusada pela política de conteúdo`,"logs.detail.cause.parameterRejected":`Parâmetro da requisição rejeitado`,"logs.detail.cause.ciphertextRefusal":`Estado criptografado rejeitado`,"logs.detail.cause.payloadTooLarge":`Payload grande demais`,"logs.detail.cause.payloadRejected":`Payload rejeitado`,"logs.detail.cause.upstreamFault":`Falha do upstream`,"logs.detail.cause.emptyOutput":`Nenhuma saída utilizável`,"logs.detail.cause.clientCancelled":`Cancelada pelo cliente`,"logs.detail.cause.localRefusal":`Recusada por este proxy`,"logs.detail.stage.preHeader":`sem cabeçalho de resposta`,"logs.detail.stage.headersOnly":`somente cabeçalhos`,"logs.detail.stage.protocolPrelude":`preâmbulo do protocolo`,"logs.detail.stage.semanticOutput":`saída entregue`,"logs.detail.stage.sideEffect":`efeito colateral emitido`,"logs.detail.stage.terminal":`resposta entregue`,"logs.detail.resend.permitted":`Poderia ser reenviada`,"logs.detail.resend.permittedAfterRepair":`Poderia ser reenviada após reparo`,"logs.detail.resend.refusedAmbiguous":`Não reenviada: estado do upstream desconhecido`,"logs.detail.resend.refusedCommitted":`Não reenviada: o chamador já viu a saída`,"logs.detail.resend.refusedFutile":`Não reenviada: a mesma requisição falharia de novo`,"logs.detail.reason.usage_missing":`O uso não foi informado.`,"logs.detail.reason.usage_unsupported":`Este provedor não informa o uso.`,"logs.detail.reason.output_missing":`Nenhuma contagem positiva de tokens de saída foi informada.`,"logs.detail.reason.invalid_duration":`A duração da requisição não é válida.`,"logs.detail.reason.price_unmatched":`Nenhum preço correspondente foi encontrado.`,"logs.detail.reason.invalid_cache_breakdown":`Os detalhes de tokens de cache conflitam com o total de tokens de entrada.`,"logs.detail.reason.invalid_usage":`O uso contém um valor de token inválido.`,"logs.detail.reason.combo_attempt_unavailable":`Pelo menos uma tentativa do combo não pôde ser precificada.`,"logs.detail.estimate.usage_estimated":`O uso do provedor é estimado.`,"logs.detail.estimate.cache_detail_missing":`Os detalhes de cache estavam indisponíveis; a entrada é uma estimativa de limite superior.`,"logs.detail.estimate.expected_price_overlay":`Foi usado um preço de tabela esperado verificado.`,"logs.detail.estimate.provider_cost_overlay":`Foi usada uma sobreposição de preço configurada no provedor.`,"logs.detail.estimate.priority_lower_bound":`O preço Priority confirmado está indisponível; a estimativa exibida é um limite inferior conhecido.`,"logs.col.error":`Erro`,"logs.col.upstreamReason":`Motivo do upstream`,"logs.col.duration":`Duração`,"logs.modelTooltip.model":`modelo`,"logs.modelTooltip.resolvedModel":`modelo resolvido`,"logs.modelTooltip.servedModel":`modelo atendido`,"logs.modelTooltip.wireModel":`modelo no wire`,"logs.modelRerouteTitle":`O upstream atendeu um modelo diferente do enviado`,"logs.modelTooltip.requestedTier":`nível solicitado`,"logs.modelTooltip.configuredTier":`nível configurado`,"logs.modelTooltip.responseTier":`nível da resposta`,"logs.modelTooltip.supportsTier":`suporte a nível`,"logs.modelTooltip.tierOutcome.confirmed":`confirmado`,"logs.modelTooltip.tierOutcome.assumed":`presumido`,"logs.modelTooltip.tierOutcome.downgraded":`rebaixado`,"logs.modelTooltip.tierOutcome.unknown":`desconhecido`,"logs.tokens.reported":`informado`,"logs.tokens.unreported":`não informado`,"logs.tokens.unsupported":`não suportado`,"logs.tokens.estimated":`estimado`,"logs.tokens.input":`entrada`,"logs.tokens.output":`saída`,"logs.tokens.cacheRead":`leitura de cache (c)`,"logs.tokens.cacheWrite":`gravação de cache (w)`,"logs.tokens.reasoning":`raciocínio`,"logs.tokens.noCache":`sem dados de cache`,"logs.tokens.contextTotal":`contexto ativo`,"logs.tokens.noCacheNote":`este provedor não informa tokens de cache`,"logs.tokens.noCacheCursor":`Detalhe de cache do Cursor não informado`,"logs.tokens.noCacheCursorNote":`O Cursor não expõe as contagens de tokens de leitura/gravação de cache; isso é desconhecido, não um cache miss confirmado`,"logs.tokens.estimatedNote":`estimado (o provedor não informa o uso exato)`,"logs.details":`Detalhes`,"logs.detailTitle":`Detalhes da requisição`,"logs.detailRaw":`Entrada de log bruta`,"debug.title":`Debug`,"debug.subtitle":`Diagnósticos opcionais de transporte do provedor e de extração de uso. Erros de requisição e 502 permanecem na aba Logs.`,"debug.debug":`Debug do provedor`,"debug.usage":`Extração de uso`,"debug.injection":`Log de injeção`,"debug.claude":`Entrada do Claude`,"debug.claudeInbound.title":`Requisições de entrada do Claude`,"debug.claudeInbound.sub":`O que o Claude Code/Desktop realmente envia (thinking, esforço, metadados) — nenhum texto de prompt é armazenado.`,"debug.claudeInbound.empty":`Nenhuma requisição capturada ainda. Envie uma mensagem pelo Claude enquanto isto estiver ativado.`,"debug.claudeInbound.time":`Hora`,"debug.claudeInbound.endpoint":`Endpoint`,"debug.claudeInbound.model":`Modelo`,"debug.claudeInbound.none":`nenhum`,"debug.reset":`Limpar substituições em tempo de execução`,"debug.refresh":`Atualizar`,"debug.follow":`Acompanhar`,"debug.streamProvider":`Provedor`,"debug.streamUsage":`Uso`,"debug.streamInjection":`Injeção`,"debug.loading":`Carregando configurações de debug…`,"debug.loadFailed":`Não foi possível carregar as configurações de debug.`,"debug.emptyTitle":`O log de debug está desativado`,"debug.empty":`Ative Debug do provedor ou Extração de uso no cartão acima. As linhas aparecem aqui depois que você enviar uma requisição pelo proxy.`,"debug.noLinesTitle":`Aguardando linhas`,"debug.noLines.provider":`O debug do provedor está ativado, mas registra apenas anomalias de transporte (frames descartados ou malformados e eventos de conexão/nova tentativa do Cursor). Uma requisição normal por um provedor como a Anthropic pode não gerar nenhuma linha.`,"debug.noLines.usage":`A extração de uso está ativada, mas nada foi capturado ainda. Envie um chat/requisição pelo Codex e ele aparecerá aqui.`,"debug.noLines.injection":`O log de injeção está ativado, mas nada foi capturado ainda. Ele registra a injeção de orientação multiagente e as decisões de limite de esforço em turnos de colaboração e de subagentes.`,"usage.title":`Uso`,"usage.subtitle":`Contabilização local de tokens do seu proxy. O uso ausente nunca é exibido como zero.`,"usage.loading":`Carregando dados de uso…`,"usage.empty":`Nenhum uso registrado ainda. Envie uma requisição pelo proxy para ver a atividade aqui.`,"usage.loadError":`Não foi possível carregar os dados de uso.`,"usage.range.all":`Tudo`,"usage.range.available":`Histórico disponível`,"usage.historyTruncated":`Os totais cobrem apenas o histórico disponível porque o uso mais antigo não foi carregado.`,"usage.historyTruncatedWindow":`As linhas carregadas têm horários de início de requisição entre {start} e {end}. Entradas anteriores do arquivo foram omitidas pelo limite de leitura, então qualquer período selecionado pode estar incompleto.`,"usage.range.30d":`30d`,"usage.range.7d":`7d`,"usage.card.requests":`Requisições`,"usage.card.measured":`Medidas`,"usage.card.reported":`Informadas`,"usage.card.totalTokens":`Total de tokens`,"usage.card.cachedTokens":`Leituras de cache`,"usage.card.cachedTokensHint":`Tokens do prompt atendidos pelo cache do provedor (leituras). As gravações de cache aparecem abaixo quando houver.`,"usage.card.cacheWriteTokens":`gravações de cache`,"usage.card.coverage":`Cobertura`,"usage.card.activeDays":`Dias ativos`,"usage.section.heatmap":`Atividade diária`,"usage.section.overview":`Visão geral`,"usage.section.models":`Modelos`,"usage.section.providers":`Provedores`,"usage.section.coverage":`Detalhamento da cobertura`,"usage.section.companion":`Barra de menus e widget`,"usage.companion.title":`Barra de menus e widget`,"usage.companion.description":`As configurações aqui controlam o app desktop/de barra de menus do OpenCodex e seu widget.`,"usage.companion.installGuide":`Guia de instalação`,"usage.companion.loading":`Carregando linha do tempo…`,"usage.companion.timelineUnavailable":`Linha do tempo indisponível`,"usage.companion.empty":`Nenhum uso nas últimas {hours} h`,"usage.companion.chartLabel":`Linha do tempo de uso`,"usage.companion.olderRecordsSkipped":`Registros mais antigos foram ignorados`,"usage.companion.settingsUnavailable":`Configurações do companion indisponíveis`,"usage.companion.corrupt":`O arquivo de configurações do companion está corrompido. Os controles mostram os padrões; o salvamento fica pausado até você substituir o arquivo.`,"usage.companion.corruptReset":`Substituir pelos padrões`,"usage.companion.connected":`App da barra de menus conectado · {age}`,"usage.companion.connectedDesktop":`App desktop conectado · {age}`,"usage.companion.installTitle":`Instalar o app desktop`,"usage.companion.installOs":`Sistema operacional`,"usage.companion.osMac":`macOS`,"usage.companion.osWindows":`Windows`,"usage.companion.osLinux":`Linux`,"usage.companion.runningInDesktop":`Você está no app desktop do OpenCodex {version}`,"usage.companion.openInBrowser":`Abrir no navegador`,"usage.companion.installMacStep1":`Baixe OpenCodex-<version>-macos.dmg da versão mais recente e arraste OpenCodex.app para Aplicativos.`,"usage.companion.installMacStep2":`Primeira execução: clique com o botão direito em OpenCodex.app → Abrir (o Gatekeeper pergunta uma vez até o app ser notarizado).`,"usage.companion.installMacStep3":`O app encontra este proxy sozinho; o widget aparece na galeria de widgets depois que o app for executado.`,"usage.companion.installWinStep1":`Baixe OpenCodex-<version>-windows-x64.msi da versão mais recente e execute-o.`,"usage.companion.installWinStep2":`Se o SmartScreen avisar, escolha Mais informações → Executar assim mesmo (o instalador ainda não tem assinatura de código).`,"usage.companion.installWinStep3":`O OpenCodex aparece na bandeja do sistema e se conecta a este proxy, ou inicia o proxy embutido.`,"usage.companion.installLinuxStep1":`Baixe OpenCodex-<version>-linux-x86_64.AppImage (ou o .deb) da versão mais recente.`,"usage.companion.installLinuxStep2":`Use chmod +x no AppImage e execute-o; o ícone na bandeja exige um desktop compatível com AppIndicator.`,"usage.companion.installLinuxStep3":`O app se conecta a este proxy ou inicia o proxy embutido.`,"usage.companion.notConnected":`Nenhum app da barra de menus se conectou a este proxy ainda.`,"usage.companion.lastSeen":`Visto pela última vez {age}`,"usage.companion.installAnother":`Instalar em outro dispositivo`,"usage.companion.saved":`Salvo · {time}`,"usage.companion.saveFailed":`Não foi possível salvar: {error}`,"usage.companion.reset":`Restaurar padrões`,"usage.companion.footer":`O widget mostra as requisições, os tokens e o custo de hoje, além do gráfico configurado aqui, e é atualizado quando o app consulta o proxy.`,"usage.companion.menuBarShows":`A barra de menus mostra`,"usage.companion.menuRequests":`Requisições`,"usage.companion.menuTokens":`Tokens`,"usage.companion.menuCost":`Custo`,"usage.companion.menuQuota":`Cota`,"usage.companion.menuNone":`Somente ícone`,"usage.companion.window":`Janela`,"usage.companion.window6":`6h`,"usage.companion.window24":`24h`,"usage.companion.window72":`3d`,"usage.companion.window168":`7d`,"usage.companion.style":`Estilo`,"usage.companion.styleLine":`Linha`,"usage.companion.styleStacked":`Empilhado`,"usage.companion.metric":`Métrica`,"usage.companion.metricTotal":`Total`,"usage.companion.metricInput":`Entrada`,"usage.companion.metricOutput":`Saída`,"usage.companion.metricCached":`Em cache`,"usage.companion.groupBy":`Agrupar por`,"usage.companion.groupModel":`Modelo`,"usage.companion.groupAccount":`Modelo + conta`,"usage.companion.popoverSections":`Seções do popover`,"usage.companion.sectionToday":`Hoje`,"usage.companion.sectionChart":`Gráfico`,"usage.companion.sectionModels":`Modelos`,"usage.companion.sectionCost":`Custo`,"usage.companion.sectionAccounts":`Contas`,"usage.companion.advanced":`Avançado`,"usage.companion.aggregation":`Agregação`,"usage.companion.aggregationSum":`Soma`,"usage.companion.aggregationAverage":`Média`,"usage.companion.aggregationMax":`Máx.`,"usage.companion.menuText":`Texto da barra de menus`,"usage.companion.placeholders":`Marcadores:`,"usage.companion.modelsOnChart":`Modelos no gráfico`,"usage.companion.modelsCount":`{selected} de {total} no gráfico`,"usage.companion.modelsShowAll":`Mostrar todos`,"usage.companion.hideProviders":`Ocultar provedores`,"usage.workspace.report":`Relatório de uso`,"usage.workspace.sections":`Seções de uso`,"usage.coverage.measured":`Medido`,"usage.coverage.reported":`Informado pelo provedor`,"usage.coverage.estimated":`Estimado`,"usage.coverage.note":`As entradas medidas incluem contagens de tokens informadas pelo provedor e estimadas. Requisições sem informação ou sem suporte são registradas, mas nunca contabilizadas como zero token.`,"usage.search.models":`Buscar modelos…`,"usage.col.requests":`Requisições`,"usage.col.measured":`Medido`,"usage.col.reported":`Informado`,"usage.col.inputTokens":`Tokens de entrada`,"usage.col.outputTokens":`Tokens de saída`,"usage.col.cacheHits":`Acertos de cache`,"usage.col.cacheWrites":`Gravações em cache`,"usage.col.cacheHitRate":`Taxa de acerto`,"usage.cacheHitRate.partial":`Média sobre {measured} de {total} tokens de entrada; as demais requisições não informaram detalhes de cache.`,"usage.cacheHitRate.unmeasured":`Nenhuma requisição desta linha informou detalhes de cache, então não há taxa de acerto para calcular a média.`,"usage.unavailable":`—`,"usage.col.tokens":`Tokens`,"usage.col.apiListPrice":`Preço de tabela da API`,"usage.col.share":`Participação`,"usage.heatmap.less":`Menos`,"usage.heatmap.more":`Mais`,"usage.dayMon":`Seg`,"usage.dayWed":`Qua`,"usage.dayFri":`Sex`,"usage.heatmap.tooltipTokens":`{tokens} tokens`,"usage.chart.dayDetail":`{date}: {requests} requisições, {tokens} tokens`,"usage.heatmap.keyboardLabel":`Use Cima e Baixo para mover por dia; Esquerda e Direita para mover por semana.`,"usage.heatmap.tooltipRequests":`{requests} requisições`,"nav.storage":`Armazenamento`,"storage.title":`Armazenamento`,"storage.subtitle":`Veja o que está ocupando o CODEX_HOME. A limpeza nunca afeta sessões ativas.`,"storage.loading":`Analisando o armazenamento…`,"storage.empty":`CODEX_HOME está vazio ou ausente — nada a relatar.`,"storage.error":`Falha na análise do armazenamento. Verifique se CODEX_HOME aponta para um diretório válido.`,"storage.refresh":`Reanalisar`,"storage.rescanned":`Análise concluída.`,"storage.card.total":`Tamanho total`,"storage.card.files":`Arquivos`,"storage.card.home":`CODEX_HOME`,"storage.snapshot.lastScan":`Última análise`,"storage.snapshot.scanning":`Analisando…`,"storage.snapshot.unavailable":`Nenhuma análise ainda.`,"storage.cleanupCard.title":`Liberar espaço`,"storage.cleanupCard.tabs":`Opções de limpeza`,"storage.cleanupCard.tab.policy":`Política`,"storage.cleanupCard.tab.quarantine":`Quarentena`,"storage.cleanup.noArchives":`Nenhuma sessão arquivada para limpar.`,"storage.section.buckets":`Categorias`,"storage.section.largest":`Maiores arquivos`,"storage.workspace.overview":`Visão geral`,"storage.workspace.selectBucket":`Selecione uma categoria na lista para ver o detalhamento.`,"storage.col.bucket":`Categoria`,"storage.col.size":`Tamanho`,"storage.col.files":`Arquivos`,"storage.col.oldest":`Mais antigo`,"storage.col.newest":`Mais recente`,"storage.col.rows":`Linhas do BD`,"storage.rows.unknown":`desconhecido (bloqueado)`,"storage.bucket.sessions":`Sessões ativas`,"storage.bucket.archived_sessions":`Sessões arquivadas`,"storage.bucket.logs_db":`Banco de logs`,"storage.bucket.state_db":`Banco de estado`,"storage.bucket.attachments":`Anexos`,"storage.bucket.deletion_manifests":`Manifestos de exclusão`,"storage.bucket.other":`Outros`,"storage.cleanup.title":`Limpeza de arquivados`,"storage.cleanup.help":`Remove as sessões arquivadas mais antigas por porcentagem. Sessões ativas nunca são afetadas. A quarentena é o padrão — os arquivos são movidos para CODEX_HOME/.trash.`,"storage.cleanup.slider":`Porcentagem dos arquivados mais antigos`,"storage.cleanup.percent":`{percent}%`,"storage.cleanup.preset":`{percent}`,"storage.cleanup.preview":`Pré-visualizar`,"storage.cleanup.confirmTitle":`Confirmar limpeza de arquivados`,"storage.cleanup.confirmBody":`Isto processará {count} arquivo(s) arquivado(s) (~{size}), os {percent}% mais antigos.`,"storage.cleanup.moreFiles":`…e mais {n}`,"storage.cleanup.permanent":`Excluir permanentemente (ignorar quarentena)`,"storage.cleanup.permanentWarn":`A exclusão permanente não pode ser desfeita.`,"storage.cleanup.quarantineNote":`Os arquivos são movidos para .trash em CODEX_HOME. Você pode restaurá-los na aba Quarentena.`,"storage.cleanup.cancel":`Cancelar`,"storage.cleanup.confirmQuarantine":`Colocar em quarentena`,"storage.cleanup.confirmPermanent":`Excluir permanentemente`,"storage.cleanup.doneQuarantine":`{count} arquivo(s) em quarentena ({size}).`,"storage.cleanup.donePermanent":`{count} arquivo(s) excluído(s) permanentemente ({size}).`,"storage.cleanup.skippedReferenced":`{count} arquivo(s) referenciado(s) ignorado(s).`,"storage.cleanup.previewFailed":`Falha na pré-visualização.`,"storage.cleanup.cleanupFailed":`Falha na limpeza.`,"storage.cleanup.err.codex_busy":`O Codex está usando o state.sqlite — tente novamente após encerrar o Codex.`,"storage.cleanup.err.stale_preview":`Os arquivos arquivados mudaram desde a pré-visualização — execute a pré-visualização novamente.`,"storage.cleanup.err.restore_pending_overlap":`Os arquivos selecionados se sobrepõem a uma restauração incompleta da lixeira — conclua ou tente novamente a restauração primeiro.`,"storage.cleanup.err.referenced_history":`Os arquivos selecionados ainda são referenciados por históricos bifurcados ou paginados.`,"storage.cleanup.err.invalid_digest":`O digest da pré-visualização está ausente ou é inválido.`,"storage.cleanup.err.invalid_mode":`O modo de limpeza deve ser quarentena ou permanente.`,"storage.cleanup.err.fs_failed":`Falha na limpeza do sistema de arquivos. Algumas alterações podem já ter sido aplicadas — verifique CODEX_HOME/.trash e qualquer caminho de recuperação exibido.`,"storage.cleanup.err.fs_failed_trash":`Falha na limpeza do sistema de arquivos. Algumas alterações podem já ter sido aplicadas — verifique {trashDir} e manifest.json para arquivos recuperáveis.`,"storage.cleanup.err.db_reconcile_failed":`Não foi possível atualizar o banco de estado do Codex.`,"storage.cleanup.err.cleanup_failed":`Falha na limpeza.`,"storage.trash.title":`Quarentena`,"storage.trash.help":`Sessões arquivadas movidas para CODEX_HOME/.trash. A restauração devolve os arquivos JSONL e as linhas de thread.`,"storage.trash.empty":`Nenhuma entrada em quarentena.`,"storage.trash.loading":`Carregando quarentena…`,"storage.trash.col.when":`Em quarentena desde`,"storage.trash.col.files":`Arquivos`,"storage.trash.col.size":`Tamanho`,"storage.trash.col.mode":`Modo`,"storage.trash.col.id":`Entrada`,"storage.trash.restore":`Restaurar`,"storage.trash.confirmTitle":`Restaurar entrada da quarentena?`,"storage.trash.confirmBody":`Restaurar {count} arquivo(s) (~{size}) de {id} para as sessões arquivadas.`,"storage.trash.cancel":`Cancelar`,"storage.trash.confirmRestore":`Restaurar`,"storage.trash.done":`{count} arquivo(s) restaurado(s) ({size}).`,"storage.trash.restoreFailed":`Falha na restauração.`,"storage.trash.listFailed":`Não foi possível listar as entradas da quarentena.`,"storage.trash.mode.quarantine":`quarentena`,"storage.trash.mode.permanent":`permanente (incompleto)`,"storage.trash.err.codex_busy":`O Codex está usando o state.sqlite — tente novamente após encerrar o Codex.`,"storage.trash.err.invalid_trash":`O ID da entrada da lixeira está ausente ou é inválido.`,"storage.trash.err.missing_trash":`A entrada da lixeira não foi encontrada.`,"storage.trash.err.dest_exists":`O destino da restauração já existe — remova ou renomeie o arquivo arquivado e tente novamente.`,"storage.trash.err.fs_failed":`Falha na restauração do sistema de arquivos. Alguns arquivos podem já ter sido restaurados — verifique archived_sessions e .trash.`,"storage.trash.err.db_reconcile_failed":`Não foi possível restaurar as linhas do banco de estado do Codex.`,"storage.trash.err.storage_mutation_busy":`Outra limpeza ou restauração de armazenamento está em andamento — tente novamente em instantes.`,"storage.trash.err.restore_failed":`Falha na restauração.`,"storage.trash.err.restore_worker_timeout":`A restauração demorou demais (mais de 10 minutos) e foi interrompida.`,"storage.trash.err.restore_worker_aborted":`A restauração foi cancelada durante o encerramento.`,"storage.trash.err.restore_worker_failed":`O worker de restauração travou ou falhou inesperadamente.`,"storage.policy.title":`Política de limpeza automática`,"storage.policy.help":`Limpeza em lote opcional quando as sessões arquivadas excedem um limite. Desativada por padrão — nunca é ativada automaticamente.`,"storage.policy.loading":`Carregando política…`,"storage.policy.loadFailed":`Não foi possível carregar a política de limpeza.`,"storage.policy.saveFailed":`Não foi possível salvar a política de limpeza.`,"storage.policy.runFailed":`Falha na execução da política.`,"storage.policy.alreadyRunning":`Já há uma execução da política de limpeza em andamento.`,"storage.policy.invalid":`Valores de política inválidos.`,"storage.policy.enabled":`Ativar limpeza automática`,"storage.policy.enabledHint":`O padrão é desativada. Quando ativada, executa apenas no agendamento escolhido (ou em Executar agora).`,"storage.policy.threshold":`Quando o tamanho dos arquivados exceder (GiB)`,"storage.policy.trigger":`Gatilho`,"storage.policy.target":`Alvo da limpeza`,"storage.policy.targetPercent":`Remover os arquivados mais antigos (%)`,"storage.policy.targetReduce":`Reduzir o tamanho dos arquivados para (GiB)`,"storage.policy.thresholdInc":`Aumentar limite`,"storage.policy.thresholdDec":`Diminuir limite`,"storage.policy.percentInc":`Aumentar porcentagem`,"storage.policy.percentDec":`Diminuir porcentagem`,"storage.policy.reduceInc":`Aumentar tamanho alvo`,"storage.policy.reduceDec":`Diminuir tamanho alvo`,"storage.policy.schedule":`Agendamento`,"storage.policy.schedule.manual":`Somente manual`,"storage.policy.schedule.startup":`Ao iniciar o proxy`,"storage.policy.schedule.daily":`Diário`,"storage.policy.schedule.weekly":`Semanal`,"storage.policy.mode":`Modo de exclusão`,"storage.policy.mode.quarantine":`Quarentena (padrão)`,"storage.policy.mode.permanent":`Exclusão permanente`,"storage.policy.permanentWarn":`O modo permanente não pode ser desfeito. Prefira a quarentena, a menos que tenha certeza.`,"storage.policy.lastRun":`Última execução`,"storage.policy.lastRunDetail":`Removidos {count} · liberados {size}`,"storage.policy.nextRun":`Próxima execução`,"storage.policy.never":`Nunca`,"storage.policy.save":`Salvar`,"storage.policy.runNow":`Executar agora`,"storage.policy.running":`Executando…`,"storage.policy.saved":`Política salva.`,"storage.policy.skippedDisabled":`A política está desativada — ative-a primeiro.`,"storage.policy.skippedUnder":`O tamanho dos arquivados está abaixo do limite — nada a fazer.`,"storage.policy.skippedEmpty":`Nenhum candidato arquivado correspondeu ao alvo.`,"storage.policy.doneQuarantine":`A política colocou {count} arquivo(s) em quarentena ({size}).`,"storage.policy.donePermanent":`A política excluiu permanentemente {count} arquivo(s) ({size}).`,"storage.policy.metadataSaveWarning":`A execução da política terminou, mas seus metadados de agendamento não puderam ser salvos.`,"modal.addNamed":`Adicionar: {label}`,"modal.add":`Adicionar provedor`,"modal.search":`Buscar provedores…`,"modal.logInWith":`Entrar com {label}`,"modal.waitingBrowser":`Aguardando o navegador…`,"modal.providerName":`Nome do provedor`,"modal.adapter":`Adaptador`,"modal.baseUrl":`URL base`,"modal.endpoint":`Endpoint`,"modal.endpoint.tokenPlan":`Plano de tokens`,"modal.endpoint.payAsYouGo":`Pague conforme o uso`,"modal.endpoint.custom":`Personalizado`,"modal.defaultModel":`Modelo padrão (opcional)`,"modal.allowPrivateNetwork":`Permitir rede local/privada`,"modal.allowPrivateNetworkHint":`Ative apenas para provedores hospedados por você de propósito. Os endpoints de metadados continuam bloqueados.`,"modal.nameRequired":`O nome do provedor é obrigatório`,"modal.baseUrlRequired":`A URL base é obrigatória`,"modal.networkError":`Erro de rede — o proxy está em execução?`,"modal.loginFailStart":`Falha ao iniciar o login`,"modal.waitingLogin":`Aguardando login no navegador…`,"modal.loggingIn":`Entrando…`,"modal.loginTimeout":`Tempo de login esgotado — tente novamente.`,"modal.back":`Voltar`,"modal.badge.oauth":`OAuth`,"modal.customProvider":`Provedor personalizado`,"modal.failedStatus":`Falhou ({status})`,"modal.loginError":`Erro de login: {error}`,"modal.badge.codexLogin":`Login do Codex`,"modal.badge.local":`Local`,"modal.badge.apiKey":`Chave de API`,"modal.badge.direct":`Direto`,"modal.badge.pool":`Pool`,"modal.badge.free":`Grátis`,"modal.badge.sponsor":`Patrocinador`,"modal.badge.subscriptionCli":`CLI por assinatura`,"pws.sponsor.orcaTitle":`Um modelo para cada prompt`,"pws.sponsor.orcaDescription":`Um gateway compatível com OpenAI com roteamento adaptativo e failover automático.`,"pws.sponsor.tokenlabTitle":`Uma chave de API para os principais modelos`,"pws.sponsor.tokenlabDescription":`Responses, Chat Completions, streaming e chamada de ferramentas para agentes de programação, com modo de entrega à sua escolha e cobrança conforme o uso.`,"pws.sponsor.visit":`Conhecer {provider}`,"pws.sponsor.console":`Abrir console`,"modal.invalidPreset":`Este preset de provedor integrado está incompleto. Reinicie o proxy e tente novamente.`,"modal.freeTierTitle":`Plano gratuito`,"modal.subscriptionCliTitle":`CLI por assinatura, não chave de API`,"modal.subscriptionCliWarning":`Este provedor não usa chave de API. Ele aciona a CLI oficial do Claude Code autenticada nesta máquina ({cmd}) e cobra da conta de assinatura do Claude. O OpenCodex não armazena nenhuma chave para ele, e uma chave informada aqui nunca é usada. Para cobrança por chave de API, adicione {apiProvider}.`,"modal.freeTierDefault":`Não requer chave de API. Funciona de imediato.`,"modal.tab.accounts":`Contas`,"modal.tab.free":`Grátis`,"modal.tab.local":`Local`,"modal.tab.paid":`Pago`,"modal.noteMore":`Mostrar descrição completa`,"modal.searchResults":`{count} resultados em {tiers}`,"modal.accountsHint":`Entre aqui no ChatGPT/Codex, em provedores OAuth e em contas com chave de API. A OpenAI já está integrada — faça login em vez de adicioná-la novamente.`,"modal.accountsCodexAuthLink":`Autenticação do Codex`,"modal.notListed":`Provedor não listado? Adicione um personalizado`,"modal.catalogLoading":`Carregando catálogo…`,"modal.accountLogin":`Entrar`,"modal.accountLogout":`Sair`,"modal.accountAdd":`Adicionar conta`,"modal.accountManage":`Gerenciar`,"modal.accountCodexPool":`Pool de contas do ChatGPT`,"modal.accountLoggedIn":`Conectado`,"modal.accountLoggedOut":`Não conectado`,"quota.fiveHourLimit":`Limite de 5 horas`,"quota.ageMinutes":`{n}min`,"quota.ageHours":`{n}h`,"quota.ageDays":`{n}d`,"quota.observedAgo":`Observado há {age}`,"quota.observedHint":`A Meta informa o uso apenas durante uma resposta em streaming, então este é o último valor visto, não uma leitura em tempo real.`,"quota.weeklyLimit":`Limite semanal`,"quota.monthlyLimit":`Limite de 30 dias`,"quota.cursorFirstParty":`Modelos próprios`,"quota.cursorApiUsage":`Uso da API`,"quota.totalSubscriptionCredits":`Total de créditos da assinatura`,"quota.creditsBalance":`Saldo de créditos`,"quota.creditsPeriodEnds":`O período de cobrança termina em {date}`,"quota.usedPercent":`{pct}% usado`,"quota.limitReached":`Limite atingido`,"quota.resetsToday":`Redefine hoje às {time}`,"quota.resetsTomorrow":`Redefine amanhã às {time}`,"quota.resetsAt":`Redefine {when}`,"quota.resetsRelativeMinutes":`Redefine em {n} min`,"quota.resetsRelativeHours":`Redefine em {n} h`,"pws.status.ready":`Pronto`,"pws.status.needsSetup":`Requer configuração`,"pws.status.needsAttention":`Requer atenção`,"pws.auth.chatgptPassthrough":`Passthrough do ChatGPT`,"pws.auth.noKey":`Sem chave necessária`,"pws.freeTitle":`Preço gratuito (uma chave ainda pode ser necessária)`,"pws.localTitle":`Runtime local`,"pws.modelCountOne":`1 modelo`,"pws.modelCount":`{count} modelos`,"pws.rail.suffixDefault":` · padrão`,"pws.rail.suffixLocal":` · local`,"pws.rail.suffixFree":` · grátis`,"pws.rail.selectAria":`Selecionar {name} — {status}{suffix}`,"pws.searchPlaceholder":`Buscar provedores…`,"pws.filterAria":`Filtrar provedores`,"pws.providerFiltersAria":`Filtros de provedores`,"pws.filters":`Filtros`,"pws.filterStatus":`Status`,"pws.pricing":`Preço`,"pws.paid":`Pago`,"pws.filterType":`Tipo`,"pws.type.cloud":`Nuvem`,"pws.type.local":`Local`,"pws.type.selfHosted":`Autohospedado`,"pws.type.login":`Login`,"pws.sort":`Ordenar`,"pws.sortProvidersAria":`Ordenar provedores`,"pws.sort.az":`A–Z`,"pws.sort.za":`Z–A`,"pws.sort.freePaid":`Grátis primeiro`,"pws.sort.paidFree":`Pagos primeiro`,"pws.sort.accountsFirst":`Contas primeiro`,"pws.resetAll":`Limpar tudo`,"pws.providerList":`Lista de provedores`,"pws.providersAria":`Provedores`,"pws.groupReady":`Prontos ({count})`,"pws.groupNeedsSetup":`Requerem configuração ({count})`,"pws.groupDisabled":`Desativados ({count})`,"pws.noSearchResults":`Nenhum provedor corresponde à busca.`,"pws.noMatchFilters":`Nenhum provedor corresponde aos filtros.`,"pws.noProvidersConfigured":`Nenhum provedor configurado.`,"pws.workspaceMainAria":`Detalhes do provedor`,"pws.detailComingSoon":`Visão detalhada em breve — use a visão clássica para gerenciar este provedor.`,"pws.selectPrompt":`Selecione um provedor na lista.`,"pws.connectFirst":`Conecte seu primeiro provedor`,"pws.empty.browseFree":`Explorar provedores gratuitos`,"pws.empty.browseFreeDesc":`Comece sem assinatura`,"pws.empty.connectAccount":`Conectar uma conta`,"pws.empty.connectAccountDesc":`Use seu login do ChatGPT ou do provedor`,"pws.empty.addEndpoint":`Adicionar um endpoint`,"pws.empty.addEndpointDesc":`URL base e chave de API personalizadas`,"pws.tab.overview":`Visão geral`,"pws.tab.models":`Modelos`,"pws.tab.usage":`Uso`,"pws.tab.accounts":`Contas`,"pws.tab.settings":`Configurações`,"pws.connection":`Conexão`,"pws.status.connected":`Conectado`,"pws.attentionTitle":`Requer atenção`,"pws.attention.reauth":`A conta ativa precisa ser autenticada novamente`,"pws.attention.reauthForward":`A conta ativa do Codex precisa ser autenticada novamente — abra Contas para corrigir`,"pws.attention.missingCredentials":`Credenciais ausentes`,"pws.cell.auth":`Autenticação`,"pws.cell.note":`Observação`,"pws.cell.defaultModel":`Modelo padrão`,"pws.statsAria":`Estatísticas do provedor`,"pws.statsTitle":`Estatísticas`,"pws.stats.totalRequests":`Requisições (30d)`,"pws.stats.totalTokens":`Tokens (30d)`,"pws.stats.quotaUpdated":`Cota atualizada`,"pws.stats.quotaTracked":`Limites de taxa acompanhados na aba Uso.`,"pws.stats.source":`Fonte`,"pws.usageLast30d":`Uso (últimos 30 dias)`,"pws.estimatedCost":`Custo estimado`,"pws.costDisclaimer":`Estimativa pelo preço de tabela da API, não uma cobrança real.`,"pws.unresolvedRequestedModel":`Inclui uso de modelo solicitado não resolvido`,"pws.currentAccountUsage":`Uso da conta atual`,"pws.quotaUnsupported":`A consulta de cota não é compatível com esta conta.`,"pws.quotaUnobserved":`Nenhuma observação de uso ainda.`,"pws.quotaCheckCompleted":`Verificação de cota concluída`,"pws.modelBreakdown":`Detalhamento por modelo`,"pws.col.model":`Modelo`,"pws.col.cost":`Custo est.`,"pws.col.tokens":`Tokens`,"pws.col.requests":`Req.`,"pws.col.share":`Part.`,"pws.tokenInput":`Entrada`,"pws.tokenOutput":`Saída`,"pws.metricRequests":`requisições`,"pws.metricTokens":`tokens`,"pws.usageUnavailable":`Nenhum uso registrado ainda.`,"pws.rateLimits":`Limites de taxa`,"pws.quotaUnavailable":`Sem dados de cota para este provedor.`,"pws.accountQuotaUnavailable":`Dados de limite de taxa temporariamente indisponíveis; exibindo os últimos valores conhecidos, quando houver.`,"pws.quotaFailure.account_unavailable":`Os detalhes da conta estão indisponíveis para esta verificação de cota.`,"pws.quotaFailure.access_denied":`O provedor negou acesso aos dados de cota.`,"pws.quotaFailure.rate_limited":`O provedor limitou a taxa da verificação de cota.`,"pws.quotaFailure.upstream_error":`O provedor não conseguiu concluir a verificação de cota.`,"pws.quotaFailure.redirect_blocked":`O endpoint de cota retornou um redirecionamento bloqueado.`,"pws.quotaFailure.destination_blocked":`O destino da cota foi bloqueado pela política de rede.`,"pws.quotaFailure.dns_failed":`Não foi possível resolver o hostname da cota.`,"pws.quotaFailure.timeout":`A requisição de cota expirou.`,"pws.quotaFailure.transport_error":`A conexão de cota falhou.`,"pws.quotaFailure.response_unusable":`O provedor retornou dados de cota inutilizáveis.`,"pws.selected":`Selecionado`,"pws.copyModelId":`Copiar ID`,"pws.modelCopied":`Copiado!`,"pws.modelsAvailable":`{count} disponíveis`,"pws.modelSearchPlaceholder":`Filtrar modelos…`,"pws.modelsLoading":`Carregando modelos…`,"pws.modelsLoadFailed":`Não foi possível carregar os modelos.`,"pws.modelsNeedsReauth":`A conta precisa fazer login novamente para a descoberta de modelos ao vivo funcionar. Exibindo os modelos configurados por enquanto.`,"pws.modelsConfiguredFallback":`Exibindo os modelos configurados (descoberta ao vivo indisponível).`,"pws.modelsTruncated":`Exibindo os primeiros {shown} de {total} modelos. Use o filtro para refinar a lista.`,"pws.retry":`Tentar novamente`,"pws.noModels":`Nenhum modelo descoberto para este provedor.`,"pws.noModelMatch":`Nenhum modelo corresponde ao filtro.`,"pws.adapterBaseRequired":`Adaptador e URL base são obrigatórios.`,"pws.addAccount":`Adicionar conta`,"pws.addKey":`Adicionar chave de API`,"pws.apiKeys":`Chaves de API`,"pws.authMode":`Modo de autenticação`,"pws.availableAccounts":`Contas disponíveis`,"pws.accountOrdinal":`Conta {count}`,"pws.accountsLoading":`Carregando contas…`,"pws.accountsLoadFailed":`Não foi possível carregar as contas.`,"pws.retryAccounts":`Tentar novamente`,"pws.noAccounts":`Nenhuma conta conectada ainda.`,"pws.cockpitImportDescription":`Importe uma exportação JSON do Antigravity do Cockpit Tools a partir deste dispositivo. O conteúdo do arquivo não é exibido.`,"pws.cockpitImportFileLabel":`Exportação JSON do Antigravity do Cockpit Tools`,"pws.cockpitImportChooseFile":`Escolher arquivo JSON`,"pws.cockpitImporting":`Importando…`,"pws.cockpitImportInvalid":`O arquivo selecionado não é uma exportação JSON válida ou é grande demais.`,"pws.cockpitImportFailed":`Não foi possível concluir a importação das contas.`,"pws.cockpitImportComplete":`Importação concluída: {imported} importadas, {updated} atualizadas, {failed} com falha, {unsupported} sem suporte.`,"pws.accountSwitching":`Alternando…`,"pws.accountCurrent":`Conta atual`,"pws.accountPausedHint":`Excluída da seleção automática, das novas tentativas, da recuperação de cooldown, da seleção manual e da renovação proativa de token até ser retomada.`,"pws.defaultModelNone":`Nenhum (usar o padrão do provedor)`,"pws.discardSettings":`Descartar`,"pws.jsonEditorDesc":`Edite a configuração JSON bruta do provedor. As alterações são salvas imediatamente.`,"pws.jsonEditorTitle":`Editor JSON — {name}`,"pws.jsonRestore":`Restaurar`,"pws.jsonSave":`Salvar`,"pws.loggedInTitle":`Conectado`,"pws.notLoggedInTitle":`Não conectado`,"pws.note":`Observação`,"pws.responsesReasoningReplay":`Reenviar raciocínio em texto simples`,"pws.responsesReasoningReplayHint":`Desativado por padrão. Envia o raciocínio anterior em texto simples a este endpoint e pode aumentar o uso de tokens. Ative apenas se o endpoint aceitar esse reenvio.`,"pws.allowPrivateNetwork":`Permitir rede local/privada`,"pws.liveModels":`Descobrir modelos a partir do provedor`,"pws.liveModelsDesc":`Busca o catálogo de modelos ao vivo do provedor. Desative para usar apenas os modelos configurados/estáticos.`,"pws.xaiChatOptIn":`Usar Chat Completions para Grok 4.5 e 4.6`,"pws.xaiChatOptInDesc":`Desativado seleciona Responses. Requisições OAuth Responses o usam por padrão. Os demais modelos Grok e o comportamento por plano permanecem inalterados.`,"pws.xaiChatOptInMixed":`Apenas um modelo usa Chat.`,"pws.cursorTransport":`Transporte do Cursor`,"pws.cursorTransportHttp2":`HTTP/2 (padrão)`,"pws.cursorTransportHttp1":`HTTP/1.1 (compatibilidade com proxy)`,"pws.cursorTransportDesc":`Use HTTP/1.1 quando seu proxy não conseguir transportar de forma confiável o stream HTTP/2 do Cursor.`,"pws.optionalPlaceholder":`Opcional`,"pws.providerId":`ID do provedor`,"pws.reauth":`Requer nova autenticação`,"pws.reauthenticate":`Autenticar novamente`,"pws.copyDoctor":`Copiar ocx doctor`,"pws.doctorCopied":`Copiado`,"pws.doctorCopyUnavailable":`Área de transferência indisponível`,"pws.healthCooldownHint":`Aguarde o fim do cooldown. Não teste esta conta ainda.`,"pws.healthLabel.rateLimited":`Limite de requisições atingido`,"pws.healthLabel.quotaLimited":`Cota esgotada`,"pws.healthLabel.reauthRequired":`Reautenticação necessária`,"pws.healthLabel.refreshFailed":`Falha na renovação`,"pws.healthLabel.metadataMismatch":`Metadados divergentes`,"pws.healthLabel.validationPending":`Validação pendente`,"pws.healthSummary.validationPending":`{provider} {account}: registrada com a cota esgotada. Após a cota se recuperar, atualize as cotas para executar uma pequena requisição de validação. O roteamento permanece desativado até que ela tenha êxito.`,"pws.healthLabel.credentialConflict":`Conflito de credenciais`,"pws.healthSummary.rateLimited":`{provider} {account}: limite de requisições atingido até {until}. O roteamento desta conta fica pausado até lá.`,"pws.healthSummary.quotaLimited":`{provider} {account}: cota esgotada até {until}. O roteamento desta conta fica pausado até lá.`,"pws.healthSummary.reauthRequired":`{provider} {account}: reautenticação necessária.`,"pws.healthSummary.credentialConflict":`{provider} {account}: conflito de credenciais.`,"pws.healthSummary.metadataMismatch":`{provider} {account}: metadados divergentes.`,"pws.healthSummary.staleCredentials":`{provider} {account}: credenciais incompletas.`,"pws.removeConfirm":`Remover`,"pws.removeConfirmBody":`Remover o provedor "{name}"? Esta ação não pode ser desfeita.`,"pws.removeDefaultConfirmBody":`Remover o provedor padrão "{name}"? "{defaultProvider}" passará a ser o provedor padrão. Esta ação não pode ser desfeita.`,"pws.removeConfirmTitle":`Remover provedor`,"pws.saveSettings":`Salvar`,"pws.keySelection":`Seleção de chave API`,"pws.keyActive":`Priorizar a chave ativa (comportamento atual)`,"pws.keyLimitInvalid":`Os limites por chave devem ser positivos e estar no intervalo permitido; intervalo e simultaneidade devem ser números inteiros.`,"pws.keyRoundRobin":`Round-robin`,"pws.keyLimits":`Limites por chave`,"pws.keySharedQuota":`Os limites do provedor continuam valendo para todas as chaves. Chaves do mesmo projeto podem compartilhar cotas; RPM não limita tokens nem o orçamento diário.`,"pws.keyHandle":`ID da chave`,"pws.keyStarts":`Iniciadas`,"pws.keyInFlight":`Em andamento`,"pws.keyWait":`Espera`,"pws.keyCooldown":`Intervalo de recuperação`,"pws.pacingTitle":`Ritmo de requisições`,"pws.pacingDesc":`Distribui uniformemente o início das requisições de saída deste provedor. Respostas em streaming podem se sobrepor.`,"pws.pacingEnabled":`Ativado`,"pws.pacingRpm":`Requisições por minuto`,"pws.pacingConcurrency":`Máximo de requisições simultâneas`,"pws.pacingRpmUnit":`RPM`,"pws.pacingCapUnit":`×`,"pws.pacingDelay":`Intervalo mínimo (ms)`,"pws.pacingSlowerWins":`Prevalece o limite mais lento do provedor. As substituições por modelo só podem acrescentar mais atraso ou reduzir o limite de simultaneidade.`,"pws.pacingQueued":`na fila`,"pws.pacingNextSlot":`até o próximo slot`,"pws.pacingLastModel":`último modelo`,"pws.pacingNone":`Nenhum`,"pws.pacingModelOverrides":`Substituições por modelo`,"pws.pacingModel":`Modelo`,"pws.pacingAdd":`Adicionar substituição`,"pws.pacingRemove":`Remover`,"pws.pacingRemoveModel":`Remover a substituição de ritmo de requisições de {model}`,"pws.pacingRuleRequired":`Ative o ritmo de requisições somente após definir um limite do provedor ou uma substituição por modelo.`,"pws.pacingCapInvalid":`O máximo de requisições simultâneas deve ser um número inteiro igual ou maior que 1.`,"pws.saving":`Salvando…`,"pws.settingsSaved":`Configurações salvas.`,"pws.accountModeSaved":`Modo de conta salvo.`,"pws.accountModeFailed":`Não foi possível alternar o modo de conta.`,"pws.accountModeConfirm":`Alternar o modo de conta da OpenAI? As conversas em andamento serão reatribuídas ao conjunto de contas do outro modo, e o uso de cota passará a ser contabilizado no novo modo.`,"pws.settingsUnsavedBar":`Você tem alterações não salvas.`,"pws.unsavedLeaveBody":`Você tem alterações não salvas. Salvar antes de sair?`,"pws.unsavedLeaveTitle":`Alterações não salvas`,"pws.attentionRequired":`Requer atenção`,"pws.attentionAria":`{name}: {reason}`,"pws.missingCredentials":`Credenciais ausentes`,"pws.editJsonDesc":`Edite a configuração bruta do proxy em JSON`,"pws.updatesUnavailable":`As atualizações de provedores não estão disponíveis.`,"pws.dashboard.title":`Visão geral dos provedores`,"pws.dashboard.subtitle":`Gerencie todos os seus provedores de modelos em um só lugar.`,"pws.dashboard.rateLimits":`LIMITES DE REQUISIÇÕES`,"pws.capacity.estimate":`Estimativa do pool por pesos configurados`,"pws.capacity.currentAccount":`Conta efetiva atual`,"pws.capacity.nextRecovery":`Próxima recuperação de capacidade`,"pws.capacity.recoveryShare":`+{percent}% de capacidade do pool`,"pws.capacity.incomplete":`Cobertura incompleta: {excluded} conta(s) excluída(s)`,"pws.capacity.uncalibratedPlan":`{count} conta(s) em um plano não calibrado são contadas com o peso de assento de referência, portanto esta estimativa pode ser conservadora`,"pws.capacity.partial":`Cobertura parcial de janelas: {count} conta(s) não informam todas as janelas de limite exibidas`,"pws.capacity.windowPartial":`Parcial`,"pws.capacity.windowPartialA11y":`{window}: cobertura de contas incompleta`,"pws.dashboard.recentlyUsed":`USADOS RECENTEMENTE`,"pws.dashboard.requests":`{count} requisições`,"pws.dashboard.checkedAgo":`Verificado {time}`,"pws.dashboard.noQuota":`Sem dados de cota`,"pws.dashboard.noUsage":`Ainda sem dados de uso`,"pws.dashboard.noRateLimits":`Ainda sem dados de limites de requisições`,"pws.allProviders":`Visão geral dos provedores`,"pws.enabledLabel":`Ativado`,"pws.testConnection":`Testar conexão`,"pws.testing":`Testando…`,"pws.connectionOk":`Conexão OK`,"pws.connectionFailed":`Falha na conexão`,"pws.connectionNotApplicable":`Não se aplica — este provedor usa um catálogo de modelos estático.`,"pws.editSettings":`Editar configurações`,"pws.viewUsage":`Ver uso detalhado`,"pws.allSystemsOk":`Tudo funcionando normalmente`,"pws.apiKeyConfigured":`Chave de API configurada`,"pws.addApiKey":`Adicionar chave de API`,"pws.loggedInAs":`Conectado como {email}`,"pws.notLoggedIn":`Não conectado`,"pws.passthrough":`Passthrough do Codex`,"pws.notes":`OBSERVAÇÕES`,"pws.notePlaceholder":`Adicione uma observação sobre este provedor...`,"pws.noteSaved":`Observação salva`,"pws.authSummary":`AUTENTICAÇÃO`,"time.justNow":`Agora mesmo`,"time.notChecked":`Não verificado`,"time.minutesAgo":`há {n} min`,"time.hoursAgo":`há {n} h`,"time.daysAgo":`há {n} d`,"modal.noMatch":`Nenhuma correspondência.`,"modal.oauthDefaultNote":`Entre com sua conta — sem necessidade de chave de API.`,"modal.oauthComingSoon":`O login OAuth para {label} chega na próxima atualização. Por enquanto, use uma chave de API.`,"modal.oauthComingSoonShort":`O login OAuth para este provedor chega na próxima atualização — por enquanto, use uma chave de API.`,"modal.useApiKeyInstead":`Usar uma chave de API`,"modal.setupGuide":`Guia de configuração`,"modal.setupStep1Prefix":`Acesse o`,"modal.setupDashboardLink":`painel de {label}`,"modal.setupStep1Suffix":`e copie sua chave de API`,"modal.setupStep2":`Cole-a no campo de chave de API abaixo`,"modal.setupStep3":`Clique em Adicionar provedor — os modelos são descobertos automaticamente`,"modal.namePlaceholder":`ex.: openrouter`,"modal.duplicateWarn":`O provedor "{name}" já existe e será sobrescrito.`,"modal.forwardHintPrefix":`Não é necessária chave — o proxy encaminha suas credenciais de`,"modal.forwardCredentials":`codex login`,"modal.forwardHintSuffix":`para este provedor.`,"modal.localHint":`Nenhuma chave de API é armazenada. Isto adiciona o catálogo estático público de modelos do Cursor para o Codex, mas o transporte ao vivo do Cursor e a execução nativa de arquivos/shell permanecem desativados até serem auditados.`,"modal.getApiKey":`Obtenha sua chave de API de {label}`,"modal.apiKey":`Chave de API`,"modal.apiKeyTransport":`Cabeçalho da chave de API`,"modal.apiKeyTransportNative":`x-api-key (nativo da Anthropic)`,"modal.apiKeyTransportBearer":`Authorization: Bearer`,"modal.apiKeyPlaceholder":`sk-… (ou $ENV_VAR)`,"modal.defaultModelPlaceholder":`ex.: gpt-5.5`,"modal.baseUrlPlaceholder":`https://...`,"modal.baseUrlPlaceholderError":`A URL base contém um {placeholder} não resolvido. Substitua-o pelo valor real.`,"modal.baseUrlPlaceholderHint":`Substitua o {placeholder} na URL base pelo ID real da sua conta antes de adicionar.`,"modal.adding":`Adicionando…`,"modal.useOauthLogin":`← Usar login OAuth`,"nav.codexAuth":`Autenticação do Codex`,"nav.codexSet":`Codex`,"nav.connect":`Conexão`,"nav.usageLogs":`Uso e logs`,"nav.sectionNavigation":`Páginas da seção`,"codexSet.tab.multiauth":`Multiautenticação`,"codexSet.tab.prompt":`Prompt`,"codexSet.prompt.title":`Camadas de prompt`,"codexSet.prompt.timing":`Aplica-se a sessões recém-iniciadas. As sessões em andamento mantêm suas configurações de prompt atuais.`,"codexSet.prompt.staleRevision":`A configuração foi alterada em outro lugar. A lista foi recarregada.`,"codexSet.prompt.writeFailed":`Não foi possível salvar a alteração.`,"codexSet.prompt.loadFailed":`Não foi possível carregar as camadas de prompt.`,"codexSet.prompt.repair":`Reparar`,"codexSet.prompt.repairFailed":`Não foi possível concluir o reparo.`,"codexSet.prompt.remeasure":`Medir novamente`,"codexSet.drift.journalPresent":`Uma gravação anterior não foi concluída. A recuperação é executada automaticamente na próxima gravação.`,"codexSet.drift.projectionStale":`As camadas salvas e o valor em config.toml divergem. O reparo reescreve o valor a partir das suas camadas.`,"codexSet.drift.storeMissing":`O arquivo de camadas sumiu, mas as instruções permanecem em config.toml. O reparo mantém o texto como uma única camada e grava um backup antes.`,"codexSet.drift.ownedMalformed":`A linha gerada em config.toml foi remodelada manualmente e, por isso, não é mais seguro reescrevê-la.`,"codexSet.custom.adoptUnsupported":`O valor em {path}, linha {line}, não é uma string de linha única e não pode ser importado. Mova-o manualmente para gerenciá-lo aqui.`,"codexSet.prompt.unreadable":`O arquivo de configuração do Codex existe, mas não pôde ser lido; por isso as alterações são recusadas.`,"codexSet.layer.permissions":`Permissões`,"codexSet.layer.collaboration":`Modo de colaboração`,"codexSet.layer.environment":`Contexto do ambiente`,"codexSet.layer.apps":`Apps`,"codexSet.layer.skills":`Skills`,"codexSet.prompt.extensionsUnknown":`As extensões podem adicionar suas próprias camadas. O Codex não as expõe, portanto não é possível listá-las aqui.`,"codexSet.group.transition":`Avisos de transição`,"codexSet.group.transitionDesc":`Estes anunciam uma mudança em vez de descrever um estado, por isso aparecem apenas quando a sessão entra em tempo real ou troca de modelo. Os números seguem a ordem de montagem, por isso a lista acima salta.`,"codexSet.custom.slotNote":`As camadas personalizadas são unidas em uma única seção, nesta ordem.`,"codexSet.row.alwaysOn":`Sempre ativa`,"codexSet.row.onChange":`Disparada em mudanças`,"codexSet.row.featureGated":`Configurada em [features]`,"codexSet.row.openFeatures":`Abrir configurações`,"codexSet.row.resetDefault":`Redefinir para {value}`,"codexSet.dialog.setValue":`{value} (padrão {fallback})`,"codexSet.dialog.copyKey":`Copiar chave`,"codexSet.dialog.unknownLayer":`Esta versão não tem descrição para esta camada. Ela vem de um runtime do Codex mais recente que o dashboard.`,"codexSet.custom.heading":`Camadas personalizadas`,"codexSet.custom.add":`+ Adicionar camada`,"codexSet.custom.newTitle":`Nova camada`,"codexSet.custom.editTitle":`Editar camada`,"codexSet.custom.titleLabel":`Título`,"codexSet.custom.bodyLabel":`Instruções`,"codexSet.custom.bodySize":`{bytes} de {max} bytes`,"codexSet.custom.normalized":`Tabulações viraram quatro espaços e as quebras de linha viraram LF.`,"codexSet.custom.titleRequired":`Informe um título.`,"codexSet.custom.titleTooLong":`O título tem {count} caracteres; o limite é {max}.`,"codexSet.custom.titleMultiline":`O título deve ter uma única linha.`,"codexSet.custom.bodyTooLarge":`Esta camada tem {bytes} bytes; o limite é {max}.`,"codexSet.custom.composedTooLarge":`Somadas, as camadas ativadas teriam {bytes} bytes, acima do limite.`,"codexSet.custom.invalidCharacter":`Um caractere de controle na posição {position} não pode ser salvo.`,"codexSet.custom.discardPrompt":`Descartar suas alterações?`,"codexSet.custom.discardOthersAndSave":`Descartar as edições não salvas das outras camadas e salvar esta camada?`,"codexSet.custom.keepEditing":`Continuar editando`,"codexSet.custom.delete":`Excluir {title}`,"codexSet.custom.deleteConfirm":`Excluir esta camada? Você pode desfazer por alguns segundos.`,"codexSet.custom.layerGone":`Essa camada foi removida em outro lugar, então o editor foi fechado.`,"codexSet.custom.deleteConfirmNamed":`Excluir “{title}”? Você pode desfazer por alguns segundos.`,"codexSet.custom.deletedNamed":`“{title}” excluída.`,"codexSet.custom.moveUp":`Mover {title} para cima`,"codexSet.custom.prevLayer":`Camada anterior`,"codexSet.custom.nextLayer":`Próxima camada`,"codexSet.custom.navPosition":`{position} / {total}`,"codexSet.custom.moveDown":`Mover {title} para baixo`,"codexSet.custom.limitReached":`Você pode manter até {max} camadas personalizadas.`,"codexSet.custom.composedSize":`Combinado: {bytes} de {max} bytes`,"codexSet.custom.composedPreview":`Mostrar developer_instructions combinadas`,"codexSet.custom.notOwned":`developer_instructions foi gravado fora do opencodex e, por isso, não é editado aqui. Importe-o para gerenciá-lo como uma camada.`,"codexSet.custom.adopt":`Importar instruções existentes`,"codexSet.custom.adoptConfirm":`Importar como camada`,"codexSet.custom.adoptRefused":`Não foi possível importar o valor existente.`,"codexSet.custom.baseReplaced":`model_instructions_file está definido como {path}, ou seja, algo fora do opencodex substituiu o prompt base.`,"codexSet.custom.baseReplacedOpen":`Gerenciar`,"codexSet.lint.identity":`Isto declara uma identidade diferente da que o Codex estabelece.`,"codexSet.lint.foreignTool":`As ferramentas vêm do registro; nomeá-las aqui não as cria.`,"codexSet.lint.placeholder":`Nenhum mecanismo de template é executado sobre as instruções, então isto é enviado literalmente.`,"codexSet.lint.applyPatch":`apply_patch é definido pelo registro de ferramentas, não pelas instruções.`,"codexSet.lint.approvalVocab":`O Codex injeta seu próprio vocabulário de aprovação; isto pode contradizê-lo.`,"codexSet.lint.environment":`Os fatos do ambiente são gerados depois e podem contradizer isto.`,"codexSet.lint.size":`Esta camada tem mais de 8 KB. Ela ainda é salva, mas consome tokens a cada requisição.`,"codexSet.lint.secret":`Parece uma credencial ou chave de API - seria salva em texto claro no config.toml.`,"codexSet.lint.ignoreInstructions":`Mandar o Codex ignorar as próprias instruções pode anular as diretrizes internas.`,"codexSet.preset.blank":`Camada em branco`,"codexSet.preset.concise.name":`Saída concisa`,"codexSet.preset.concise.description":`Respostas curtas, sem preâmbulo, com formatação mínima.`,"codexSet.preset.concise.provenance":`Adaptado das diretrizes de concisão do Claude Code. Redação nossa, não uma cópia.`,"codexSet.preset.planFirst.name":`Planejar antes de editar`,"codexSet.preset.planFirst.description":`Apresente o plano e depois faça a alteração.`,"codexSet.preset.planFirst.provenance":`Adaptado da postura de planejamento do Claude Code. Redação nossa, não uma cópia.`,"codexSet.preset.explainWhy.name":`Explicar o raciocínio`,"codexSet.preset.explainWhy.description":`Diga o porquê, não apenas o quê.`,"codexSet.preset.explainWhy.provenance":`Adaptado do estilo de confirmação do Grok Build. Redação nossa, não uma cópia.`,"codexSet.preset.testFirst.name":`Testar primeiro`,"codexSet.preset.testFirst.description":`Escreva o teste que falha antes da correção.`,"codexSet.preset.testFirst.provenance":`Adaptado de práticas comuns de agentes. Redação nossa, não uma cópia.`,"codexSet.preset.korean.name":`Respostas em coreano`,"codexSet.preset.korean.description":`Responda em coreano, qualquer que seja o idioma da requisição.`,"codexSet.preset.korean.provenance":`Escrito para o opencodex a partir de um pedido recorrente de usuários. Redação nossa, não uma cópia.`,"codexSet.dialog.class":`Tipo`,"codexSet.dialog.key":`Chave de configuração`,"codexSet.dialog.fileValue":`Valor neste arquivo`,"codexSet.dialog.absentDefault":`não definido (padrão {value})`,"codexSet.dialog.noRenderedText":`O Codex não expõe o texto montado de uma camada nativa; por isso este diálogo descreve a camada e indica sua chave, em vez de mostrar seu conteúdo.`,"codexSet.dialog.probeNotFound":`Não foi possível medir: o executável codex não foi encontrado.`,"codexSet.dialog.probeUnsupported":`Não foi possível medir: esta versão do Codex não suporta o comando de medição.`,"codexSet.dialog.probeInvalid":`Não foi possível medir: a saída do Codex não pôde ser analisada.`,"codexSet.dialog.probeFailed":`Não foi possível medir: a sonda do Codex não terminou.`,"codexSet.dialog.probeBusy":`Outra medição ainda está em andamento. Tente de novo em instantes.`,"codexSet.dialog.sourceText":`Texto enviado ao modelo`,"codexSet.dialog.sourceBytes":`{bytes} bytes`,"codexSet.dialog.notRendered":`Esta camada não enviou nada no turno que lemos. As seções só são reenviadas quando mudam, então uma camada inalterada fica ausente de uma única amostra.`,"codexSet.dialog.emptySource":`O arquivo em {path} existe, mas está vazio, então esta camada não envia nada.`,"codexSet.dialog.notExposed":`O prompt base trafega fora da lista de mensagens que o Codex consegue imprimir, então não pode ser exibido aqui. É possível substituí-lo por meio de model_instructions_file.`,"codexSet.dialog.unmapped":`Esta camada não tem mapeamento confirmado na saída do prompt, então seu texto ainda não pode ser exibido aqui.`,"codexSet.dialog.textUnavailable":`Não foi possível ler o prompt do Codex nesta máquina, então o texto está indisponível.`,"codexSet.class.base":`Instruções base`,"codexSet.class.config-toggle":`Alternável aqui`,"codexSet.class.feature-gated":`Controlada por recurso`,"codexSet.class.runtime-conditional":`Condicional ao runtime`,"codexSet.class.extension-unknown":`Camada de extensão`,"codexSet.layer.base-instructions":`Instruções base`,"codexSet.layer.model-switch":`Aviso de troca de modelo`,"codexSet.layer.personality":`Personalidade`,"codexSet.layer.context-window-guidance":`Orientação sobre a janela de contexto`,"codexSet.layer.realtime":`Tempo real`,"codexSet.layer.agents-md":`AGENTS.md`,"codexSet.layer.environments-instructions":`Ambientes`,"codexSet.layer.plugins":`Plugins`,"codexSet.layer.tools":`Ferramentas`,"codexSet.layer.multi-agent-mode":`Modo multiagente`,"codexSet.layer.git-attribution":`Atribuição de commits`,"codexSet.about.base-instructions":`As instruções do próprio Codex. Elas viajam com a própria requisição e não podem ser desativadas.`,"codexSet.about.model-switch":`Adicionada quando a sessão troca de modelo no meio da conversa.`,"codexSet.about.personality":`Orientação de tom e voz, controlada por uma feature flag.`,"codexSet.about.context-window-guidance":`Orientação sobre o orçamento de contexto restante, controlada por uma feature flag.`,"codexSet.about.realtime":`Adicionada em sessões em tempo real.`,"codexSet.about.agents-md":`Os arquivos AGENTS.md do seu projeto. Esta página apenas informa a camada; nunca edita a documentação do seu projeto.`,"codexSet.about.permissions":`Explica as configurações de sandbox e de aprovação em vigor.`,"codexSet.about.collaboration":`Explica o modo de colaboração ativo.`,"codexSet.about.environment":`Diretório de trabalho, plataforma e outros fatos do ambiente.`,"codexSet.about.environments-instructions":`Orientação para ambientes de execução adiada, controlada por uma feature flag.`,"codexSet.about.apps":`Como usar os apps conectados.`,"codexSet.about.plugins":`Adicionada quando um plugin é selecionado ou quando qualquer plugin anuncia uma capacidade.`,"codexSet.about.tools":`Descrições de ferramentas adiadas, controladas por uma feature flag.`,"codexSet.about.skills":`A lista de skills disponíveis.`,"codexSet.about.multi-agent-mode":`Instruções de subagentes, controladas por uma feature flag.`,"codexSet.about.git-attribution":`Instrui o modelo a adicionar um trailer Co-authored-by: Codex aos commits que ele escreve e uma linha Generated with Codex. aos pull requests que ele abre. O Codex resolve isso a partir da sua conta, portanto não há configuração para isso aqui nem em [features]. Quando sua conta o desativa, o Codex envia a instrução oposta em vez de não enviar nada.`,"codexSet.condition.model-switch":`Emitida apenas após uma troca de modelo no meio da sessão.`,"codexSet.condition.realtime":`Emitida apenas em uma sessão em tempo real.`,"codexSet.condition.agents-md":`Emitida quando um documento de projeto é encontrado para o diretório de trabalho.`,"codexSet.condition.plugins":`Emitida quando um plugin é selecionado ou quando qualquer plugin anuncia uma capacidade.`,"codexSet.condition.git-attribution":`Definida pela política de atribuição da sua conta.`,"codexSet.base.title":`Prompt base`,"codexSet.base.prev":`Opção anterior`,"codexSet.base.next":`Próxima opção`,"codexSet.base.position":`{position} / {total}`,"codexSet.base.swipeHint":`Deslize para o lado, use as teclas de seta ou pressione as setas para alternar entre as opções. Aplica-se a sessões recém-iniciadas.`,"codexSet.base.defaultTitle":`Prompt base do próprio Codex`,"codexSet.base.defaultBody":`O padrão não é armazenado aqui, então não há nada para editar ou excluir: escolhê-lo simplesmente remove model_instructions_file da sua configuração, e o Codex usa o prompt que já acompanha o produto.`,"codexSet.base.variantTitle":`Nome`,"codexSet.base.variantBody":`Prompt`,"codexSet.base.replacesWarning":`Isto SUBSTITUI o prompt base do Codex em vez de acrescentar a ele. Um prompt curto aqui significa um modelo com instruções curtas.`,"codexSet.base.use":`Usar este`,"codexSet.base.inUse":`Em uso`,"codexSet.base.externalBlocked":`model_instructions_file já aponta para {path}, que não foi gravado pelo opencodex. Limpe-o você mesmo antes de escolher uma opção aqui — ou importe-o como uma variante.`,"codexSet.base.import":`Importar como variante`,"codexSet.base.importPreview":"O arquivo em {path} é convertido em uma variante gerenciada e instalado exatamente como mostrado abaixo — o título vira uma linha de título `#` e o corpo é normalizado (CRLF → LF, tabulações → 4 espaços).","codexSet.base.importFormat":`Armazenado literalmente: {serializedBytes} bytes no total (corpo {bodyBytes} bytes). O Codex lê o arquivo inteiro, incluindo o título.`,"codexSet.base.importTitle":`Título da variante`,"codexSet.base.importTitlePending":`Atualizando a pré-visualização para este título…`,"codexSet.base.importConfirm":`Importar e gerenciar`,"codexSet.base.importFailed":`Não foi possível importar o arquivo.`,"codexSet.base.importChanged":`O arquivo ou o título mudou desde a pré-visualização. Visualize novamente.`,"nav.api":`API`,"nav.openMenu":`Abrir menu`,"nav.closeMenu":`Fechar menu`,"nav.goHome":`Ir para o painel`,"nav.collapseSidebar":`Recolher barra lateral`,"nav.expandSidebar":`Expandir barra lateral`,"pws.refreshAllQuotas":`Atualizar todas as cotas`,"pws.quotaRefreshDone":`Verificação de cotas concluída`,"integrations.subtitle":`Conecte clientes ao opencodex, gerencie credenciais e restaure a configuração dos clientes.`,"integrations.tabsLabel":`Superfícies de integração`,"integrations.tab.overview":`Visão geral`,"integrations.tab.keys":`Chaves de API`,"integrations.tab.codex":`Codex`,"integrations.tab.claude":`Claude`,"integrations.tab.grok":`Grok Build`,"integrations.tab.cursor":`Cursor`,"integrations.tab.opencode":`OpenCode`,"integrations.tab.pi":`Pi`,"integrations.tab.gentleShell":`Gentle Shell`,"integrations.semantics.gentleShell":`Reinicie o Gentle Shell para carregar o catálogo no diretório salvo. Para diretórios vinculados ou compartilhados, use a integração Pi.`,"integrations.tab.omp":`OMP`,"integrations.tab.hermes":`Hermes`,"integrations.tab.openclaw":`OpenClaw`,"integrations.tab.kimi":`Kimi Code`,"integrations.tab.gajae":`gjc`,"integrations.tab.dsh":`DSH`,"integrations.tab.mcode":`MiniMax Code`,"integrations.tab.zcode":`ZCode`,"integrations.tab.prime":`Prime Agent`,"integrations.tab.aside":`Aside`,"integrations.tab.raycast":`Raycast`,"integrations.tab.omo":`omo`,"integrations.tab.cline":`Cline CLI`,"integrations.tab.commandcode":`Command Code`,"integrations.tab.kilo":`Kilo`,"integrations.tab.qoder":`Qoder`,"integrations.tab.droid":`Factory Droid`,"integrations.aside.profilesTitle":`Perfis do Aside`,"integrations.aside.profilesHint":`Escolha quais perfis recebem os modelos selecionados. O perfil ativo do Aside permanece inalterado.`,"integrations.aside.all":`Sincronizar todos os perfis`,"integrations.aside.syncNow":`Sincronizar agora`,"integrations.aside.applied":`{count} de {total} perfis aplicados`,"integrations.aside.current":`Perfil atual`,"integrations.aside.profile":`Perfil {id}`,"integrations.aside.toggle":`Sincronizar {name}`,"integrations.aside.details":`Gerenciar {name}`,"integrations.aside.back":`Todos os perfis do Aside`,"integrations.aside.empty":`Abra o Aside e crie um perfil para conectá-lo.`,"integrations.aside.partial":`Alguns perfis requerem atenção. Suas escolhas de sincronização foram salvas; verifique o estado de cada perfil.`,"integrations.aside.pending":`Escolha de sincronização salva; atualização do arquivo pendente.`,"integrations.aside.retry":`Tentar {name} novamente`,"integrations.aside.loadError":`Não foi possível carregar os perfis do Aside. Tente novamente para verificar o estado deles.`,"integrations.codex.title":`Codex CLI`,"integrations.codex.body":`A integração do Codex pertence ao serviço do proxy. Iniciar o opencodex a aplica; parar o serviço restaura o roteamento nativo.`,"integrations.codex.openService":`Abrir controles do serviço`,"integrations.state.notInstalled":`Não instalado`,"integrations.state.unknown":`Verificando…`,"integrations.detail.codexRouted":`As requisições do Codex passam por este proxy`,"integrations.detail.codexAbsent":`O Codex ainda não é roteado por este proxy`,"integrations.detail.keyCount":`{count} chave(s) emitida(s)`,"integrations.detail.keyNone":`Nenhuma chave emitida`,"integrations.detail.keyChecking":`Verificando…`,"integrations.detail.keyUnavailable":`Status da chave indisponível`,"integrations.detail.claudeOff":`A conexão está desativada`,"integrations.detail.desktopCurrent":`O Desktop está executando este perfil`,"integrations.detail.desktopStale":`O arquivo de perfil foi alterado após ser aplicado`,"integrations.detail.desktopNotServed":`O perfil existe, mas o Desktop serve outro`,"integrations.detail.desktopAbsent":`Nenhum perfil aplicado`,"integrations.detail.desktopDesiredOff":`A integração com o Claude Desktop está desativada`,"integrations.detail.desktopDesiredOffCleanupPending":`O Claude Desktop ainda está usando o gateway; limpeza pendente`,"integrations.detail.desktopDesiredOnNotApplied":`A integração está ativada, mas o Desktop não está usando o perfil do gateway`,"integrations.detail.desktopSelectedElsewhere":`O Desktop está usando outro perfil`,"integrations.detail.desktopProfileDrift":`O perfil selecionado do Desktop foi alterado`,"integrations.detail.desktopObservedUnsafe":`O perfil selecionado do Desktop não pode ser alterado com segurança`,"integrations.detail.desktopNotInstalled":`A biblioteca de configuração do Claude Desktop não está instalada`,"integrations.detail.grokModels":`{count} modelo(s) conectado(s)`,"integrations.detail.grokAbsent":`Nenhum bloco do opencodex na configuração`,"integrations.detail.cursorSeen":`O Cursor chamou este proxy recentemente`,"integrations.detail.cursorNeverSeen":`Private Inference instalado; nenhuma requisição vista ainda`,"integrations.detail.cursorAbsent":`Cursor Private Inference não encontrado`,"integrations.cursor.title":`Cursor`,"integrations.cursor.intro":`O Cursor Private Inference executa seu agente localmente e se comunica com o opencodex em loopback. O Cursor comum não consegue: o backend dele chama o endpoint personalizado e exige uma URL HTTPS pública. Esta página nunca grava no Cursor; cole os valores abaixo no Cursor você mesmo.`,"integrations.cursor.loading":`Lendo o status do Cursor…`,"integrations.cursor.unavailable":`Não foi possível ler o status do Cursor a partir do proxy.`,"integrations.cursor.detection":`Versões instaladas`,"integrations.cursor.privateInference":`Cursor Private Inference`,"integrations.cursor.regular":`Cursor (padrão)`,"integrations.cursor.detected":`Detectado`,"integrations.cursor.notFound":`Não encontrado`,"integrations.cursor.regularOnly":`Apenas o Cursor regular foi encontrado. Ele roteia endpoints personalizados pelos servidores do Cursor, então um proxy em loopback fica inacessível sem um túnel público. Consulte o guia da versão Private Inference.`,"integrations.cursor.installerIntro":`O Cursor Private Inference é uma versão separada em modo local. O canal de atualização do Cursor anuncia o instalador, versão {version}; instale-o e cole a Base URL e a chave de API abaixo em Settings > Models > Gateway.`,"integrations.cursor.installerOpen":`Baixar o instalador`,"integrations.cursor.installerUnavailable":`Não foi possível resolver o instalador do Private Inference a partir do canal de atualização do Cursor para este computador. Os valores do gateway abaixo valem depois que ele for instalado.`,"integrations.cursor.installerCheck":`Procurar o instalador do Private Inference`,"integrations.cursor.installerChecking":`Consultando o canal de atualização do Cursor…`,"integrations.cursor.nothingFound":`Nenhuma instalação do Cursor foi encontrada nos locais habituais. Se estiver instalado em outro lugar, os valores abaixo continuam valendo.`,"integrations.cursor.gateway":`Valores do gateway`,"integrations.cursor.gatewayHint":`No Cursor Private Inference, abra Settings > Models > Gateway, cole estes dois valores e clique em Refresh model list.`,"integrations.cursor.baseUrl":`Base URL`,"integrations.cursor.apiKey":`Chave de API`,"integrations.cursor.apiKeyCredential":`Uma das suas chaves de API do opencodex (este bind exige uma credencial)`,"integrations.cursor.copy":`Copiar`,"integrations.cursor.copied":`Copiado`,"integrations.cursor.connection":`Conexão`,"integrations.cursor.seen":`Última requisição do Cursor: {time} ({ua})`,"integrations.cursor.neverSeen":`Nenhuma requisição do Cursor desde que o proxy iniciou. Depois de salvar o gateway, clique em Refresh model list no Cursor.`,"integrations.cursor.models":`O que o Cursor vai mostrar`,"integrations.cursor.modelsHint":`O Cursor escolhe a escala de Reasoning a partir da própria tabela de modelos, então o opencodex só consegue prevê-la. Context lista a janela padrão e a opcional (Max Mode do Cursor).`,"integrations.cursor.ladderFromBundle":`Escalas de Reasoning lidas do bundle instalado do Cursor Private Inference {version}. Quem decide é o Cursor; o opencodex apenas informa a tabela dele.`,"integrations.cursor.ladderFromStatic":`As escalas de Reasoning são um espelho estático do Cursor 3.18.25 (nenhum bundle legível do Private Inference foi encontrado). Context lista a janela padrão e a opcional.`,"integrations.cursor.unknownVersion":`versão desconhecida`,"integrations.cursor.noControl":`—`,"integrations.cursor.singleWindow":`janela única`,"integrations.cursor.noControlTitle":`Este id não está na tabela de esforço embutida do Cursor, então o Cursor não mostra controle de Reasoning.`,"integrations.cursor.effortRowsOne":`1 linha de esforço publicada`,"integrations.cursor.effortRowsMany":`{n} linhas de esforço publicadas`,"integrations.cursor.effortRowsOff":`sem linhas de esforço`,"integrations.cursor.tableLessHint":`Linhas marcadas com — ficam sem controle de Reasoning no Cursor. Ative cursorEffortRows para publicar uma entrada no seletor por esforço (id--effort) ou defina modelDefaultReasoningEfforts no provedor para um padrão fixo.`,"integrations.cursor.colModel":`Modelo`,"integrations.cursor.colReasoning":`Raciocínio`,"integrations.cursor.colContext":`Contexto`,"integrations.cursor.guide":`Abrir o guia do Cursor Private Inference`,"integrations.dialog.codex.title":`Desativar a integração com o Codex?`,"integrations.dialog.codex.changes":`O opencodex vai remover seu roteamento de {path}, remover o perfil gerado, restaurar o catálogo de modelos nativo e reetiquetar as threads retomáveis para o Codex nativo.`,"integrations.dialog.codex.breakage":`O codex puro vai se conectar direto à OpenAI, e os modelos roteados de outros provedores vão desaparecer do Codex. O proxy e o /v1/responses continuam rodando para outros clientes.`,"integrations.dialog.codex.undo":`Ativar de novo reconstrói o catálogo roteado com os modelos disponíveis na hora e injeta o Codex novamente. O histórico de retomada é adaptado à direção correspondente, mas seus arquivos não são restaurados byte a byte.`,"integrations.dialog.codex.sideEffect":`Se você selecionou um modelo raiz roteado depois que o opencodex injetou a configuração, desativar remove essa seleção e reativar a integração não consegue reconstruí-la; selecione o modelo de novo. Se um model_provider externo controla o Codex, o opencodex remove apenas seu journal obsoleto e deixa a configuração, o catálogo e o histórico inalterados.`,"integrations.dialog.codex.confirm":`Desativar`,"integrations.dialog.grok.title":`Desativar a integração com o Grok Build?`,"integrations.dialog.grok.changes":`Apenas o bloco marcado pelo opencodex será removido de {path}. O conteúdo escrito fora do bloco permanece inalterado.`,"integrations.dialog.grok.breakage":`Desativar remove os aliases de modelo do opencodex no Grok Build. Os modelos usados com sua conta xAI continuam disponíveis.`,"integrations.dialog.grok.undo":`Se o opencodex estiver rodando em um endereço loopback, reativar grava um novo bloco com os modelos disponíveis no momento.`,"integrations.dialog.grok.confirm":`Desativar`,"integrations.dialog.desktop.title":`Desativar a integração com o Claude Desktop?`,"integrations.dialog.desktop.changes":`Se {path} contiver um perfil de gateway gerenciado pelo opencodex, o Desktop primeiro selecionará um novo perfil padrão sem credenciais e depois removerá o perfil antigo e o backup.`,"integrations.dialog.desktop.breakage":`O Claude Desktop voltará ao Claude padrão, em vez dos modelos roteados pelo opencodex.`,"integrations.dialog.desktop.undo":`Reativar regenera o perfil do opencodex a partir das suas atribuições de modelo salvas.`,"integrations.dialog.desktop.restart":`O Claude Desktop lê esta configuração apenas na inicialização. Feche-o completamente e reabra para que a mudança tenha efeito.`,"integrations.dialog.desktop.confirm":`Desativar`,"integrations.native.msg.nonLoopbackRemoved":`O Grok Build só pode ser registrado automaticamente enquanto o opencodex roda em um endereço loopback. O bloco anterior que apontava para loopback foi removido.`,"integrations.native.msg.nonLoopbackRemovedNoop":`O Grok Build só pode ser registrado automaticamente enquanto o opencodex roda em um endereço loopback. Não havia bloco anterior para remover.`,"integrations.native.msg.nonLoopbackSuperseded":`O Grok Build só pode ser registrado automaticamente enquanto o opencodex roda em um endereço loopback. Outro processo gravou um novo bloco nesse meio-tempo, então o bloco atual no arquivo não foi criado por esta requisição.`,"integrations.native.error.orphanedMarker":`{path} tem um marcador de início do opencodex, mas nenhum marcador de fim. O arquivo foi mantido inalterado porque o opencodex não consegue determinar onde seu bloco termina.`,"integrations.native.error.homeMismatch":`O home do serviço instalado não corresponde ao home atual, então o arquivo foi mantido inalterado.`,"integrations.native.error.notInstalled":`O Grok Build não está instalado, então não há nada a alterar.`,"integrations.native.error.configBusy":`A configuração está sendo salva em outro lugar e não pôde ser alterada. Tente novamente em instantes.`,"integrations.native.error.desktopUnsafeMetadata":`Os metadados do Claude Desktop em {path} não puderam ser lidos com segurança, então sua biblioteca não foi alterada.`,"integrations.native.error.desktopCleanupIncomplete":`O Claude Desktop está apontado para o modo padrão, mas ainda restam arquivos de credencial antigos do opencodex em: {paths}.`,"integrations.native.msg.desktopDisabled":`Integração com o Claude Desktop desativada.`,"integrations.native.msg.desktopEnabled":`Integração com o Claude Desktop ativada.`,"integrations.state.absent":`Não aplicado`,"integrations.state.current":`Aplicado`,"integrations.state.stale":`Atualização necessária`,"integrations.state.conflict":`Conflito`,"integrations.state.unsafe":`Não foi possível verificar`,"integrations.summary.detected":`Clientes detectados`,"integrations.summary.applied":`Clientes configurados`,"integrations.summary.stale":`Atualização necessária`,"integrations.summary.lastChange":`Última alteração`,"integrations.summary.disableAll":`Desativar todos…`,"integrations.onboarding":`Aplicar grava um bloco de provedor do opencodex depois de salvar um backup. Desativar remove apenas esse bloco, e um snapshot retido pode ser restaurado.`,"integrations.empty.title":`Nenhum cliente instalado foi detectado`,"integrations.empty.body":`Instale um cliente compatível e volte aqui para aplicar o opencodex.`,"integrations.action.apply":`Aplicar`,"integrations.action.disable":`Desativar`,"integrations.action.refresh":`Atualizar`,"integrations.action.settings":`Configurações`,"integrations.action.manageKeys":`Gerenciar chaves`,"integrations.action.restore":`Restaurar…`,"integrations.action.undo":`Desfazer`,"integrations.action.restorePoint":`Restaurar este ponto…`,"integrations.action.snapshotExpired":`Backup expirado`,"integrations.rollback.title":`Central de rollback`,"integrations.rollback.empty":`Ainda não há histórico de aplicações`,"integrations.rollback.emptyBody":`Toda gravação bem-sucedida mantém antes um snapshot do estado anterior.`,"integrations.catalog.title":`Clientes`,"integrations.rollback.older":`Operações anteriores`,"integrations.rollback.showMore":`Mostrar mais {n}`,"integrations.rollback.failed":`Não foi possível carregar o histórico de rollback.`,"integrations.rollback.delete":`Excluir`,"integrations.rollback.deleteAria":`Excluir a entrada de rollback de {at}`,"integrations.rollback.deleteNewest":`A entrada mais recente deste cliente é mantida para que você ainda possa desfazer.`,"integrations.rollback.deleteGone":`Esta entrada já foi excluída. A lista será atualizada.`,"integrations.dialog.deleteEntry.title":`Excluir esta entrada de rollback?`,"integrations.dialog.deleteEntry.changes":`Esta entrada some da lista de rollback, e qualquer backup que ela ainda guarde de {path} é apagado do disco.`,"integrations.dialog.deleteEntry.breakage":`Você não poderá mais restaurar o arquivo para este ponto. As entradas mais novas e o próprio arquivo não são afetados.`,"integrations.dialog.deleteEntry.undo":`Isso não pode ser desfeito. A entrada mais recente de cada cliente é mantida e não pode ser excluída.`,"integrations.dialog.deleteEntry.confirm":`Excluir entrada`,"integrations.restore.title":`Restaurar este snapshot?`,"integrations.restore.body":`O arquivo atual recebe um backup primeiro, e então o snapshot selecionado o substitui.`,"integrations.restore.driftTitle":`Foram detectadas edições mais novas`,"integrations.restore.driftBody":`As alterações feitas depois deste snapshot receberão backup, e então o arquivo será substituído.`,"integrations.restore.confirm":`Restaurar`,"integrations.restore.confirmDrift":`Fazer backup das edições novas e restaurar`,"integrations.restore.pending":`Restaurando…`,"integrations.restore.manual":`A restauração automática falhou: {reason}. Restaure manualmente a partir de {path}.`,"integrations.error.load":`Não foi possível carregar o estado das integrações.`,"integrations.error.stale":`A última atualização falhou. Os valores abaixo podem estar desatualizados.`,"integrations.error.busy":`Outra alteração para este cliente ainda está em andamento. Tente novamente em instantes.`,"integrations.error.conflict":`A configuração mudou depois que o opencodex a gravou. Nada foi removido.`,"integrations.error.unsafe":`A configuração não pode ser alterada com segurança.`,"integrations.error.generic":`A alteração da integração falhou. Seu estado anterior foi mantido.`,"integrations.error.nonLoopback":`{client} só consegue alcançar um proxy em localhost: a configuração dele não tem onde colocar o cabeçalho de admissão que um bind remoto exige, então gravá-lo manualmente também não ajudaria. Dê a ele acesso loopback, por meio de um túnel ou de um encaminhador local.`,"integrations.status.installed":`Instalado`,"integrations.status.notInstalled":`Não instalado`,"integrations.status.appliedAt":`Aplicado`,"integrations.status.supersededStore":`Este cliente agora lê seus provedores de {path}, que o opencodex não grava, então ativá-lo aqui não mudaria nada do que ele carrega.`,"integrations.status.missingStore":`Este cliente guarda seus provedores em {path}, e esse arquivo não existe. O opencodex não grava no antigo arquivo de configurações do cliente no lugar dele, porque o cliente move esse arquivo e o importa na próxima inicialização. Crie {path} com o conteúdo {document} e clique em "Aplicar" de novo.`,"integrations.status.candidateConflict":`Outro arquivo de configuração do Kilo, {path}, também define provider.opencodex. Remova provider.opencodex desse arquivo antes de aplicar.`,"integrations.status.backup":`Backup`,"integrations.status.lastRestore":`Última restauração`,"integrations.status.unknown":`Desconhecido`,"integrations.bulk.title":`Desativar as integrações de clientes aplicadas?`,"integrations.bulk.body":`Apenas o bloco pertencente ao opencodex é removido. Um snapshot anterior à gravação é mantido para cada cliente.`,"integrations.bulk.partial":`Alguns clientes não puderam ser desativados: {clients}`,"integrations.bulk.success":`As integrações de clientes aplicadas foram desativadas.`,"integrations.retention.degraded":`A limpeza de backups está atrasada; backups mais antigos ainda podem estar no disco.`,"integrations.error.residual":`O arquivo pode estar em um estado intermediário: {message} Restaure-o a partir de {path}.`,"integrations.error.residualNoSnapshot":`{message} A recuperação automática não foi concluída. Verifique a configuração do cliente antes de tentar de novo.`,"integrations.error.recover":`{message} Há um backup em {path}.`,"integrations.kind.apply":`Aplicado`,"integrations.kind.disable":`Desativado`,"integrations.kind.refresh":`Atualizado`,"integrations.kind.restore":`Restaurado`,"integrations.kind.overwrite":`Sobrescrito`,"integrations.dialog.overwrite.title":`Substituir o bloco nesta configuração?`,"integrations.dialog.overwrite.changesUnowned":`Um bloco que não foi escrito por nós ocupa as configurações de que o opencodex precisa em {path}. Aplicar o substitui pelo bloco que o opencodex gravaria.`,"integrations.dialog.overwrite.changesForeign":`Sua edição dentro do bloco do opencodex em {path} será descartada e substituída pelo bloco que o opencodex gravaria.`,"integrations.dialog.overwrite.breakage":`Tudo o que o outro bloco configurava deixa de valer. O restante do arquivo não é tocado.`,"integrations.dialog.overwrite.undo":`Um snapshot é salvo antes, então isto aparece na lista de rollback abaixo e pode ser desfeito.`,"integrations.dialog.overwrite.confirm":`Substituir`,"integrations.action.overwrite":`Substituir`,"integrations.preview.loading":`Carregando o plano exato de alterações…`,"integrations.preview.failed":`Não foi possível carregar o plano de alterações. Nada foi alterado.`,"integrations.preview.stale":`A integração mudou enquanto você confirmava. Revise o plano atualizado e confirme novamente.`,"integrations.dialog.apply.title":`Aplicar esta integração?`,"integrations.dialog.apply.changes":`O opencodex vai adicionar suas configurações de provedor gerenciadas à configuração do cliente.`,"integrations.dialog.apply.breakage":`O cliente passará a usar os modelos expostos atualmente por esta instância do opencodex.`,"integrations.dialog.apply.undo":`Um backup é salvo antes, e a alteração pode ser desfeita pela central de rollback.`,"integrations.dialog.apply.confirm":`Aplicar`,"integrations.dialog.disable.title":`Desativar esta integração?`,"integrations.dialog.disable.changes":`Apenas as configurações pertencentes ao opencodex serão removidas.`,"integrations.dialog.disable.breakage":`O cliente deixará de usar os modelos roteados por esta instância do opencodex.`,"integrations.dialog.disable.undo":`Um backup é salvo antes, e a alteração pode ser desfeita pela central de rollback.`,"integrations.dialog.disable.confirm":`Desativar`,"integrations.plan.heading":`Plano de alterações do servidor`,"integrations.plan.operation":`Operação: {operation}`,"integrations.plan.operation.apply":`Aplicar`,"integrations.plan.operation.overwrite":`Substituir`,"integrations.plan.operation.disable":`Desativar`,"integrations.plan.operation.restore":`Restaurar`,"integrations.plan.change.add":`Adicionar`,"integrations.plan.change.replace":`Substituir`,"integrations.plan.change.remove":`Remover`,"integrations.plan.change.snapshot":`Salvar backup`,"integrations.plan.change.ownership":`Atualizar o registro de propriedade`,"integrations.plan.change.journal":`Registrar entrada de rollback`,"integrations.plan.foreign.none":`Nenhuma edição externa foi detectada.`,"integrations.plan.foreign.unowned":`Um bloco de configurações que não pertence ao opencodex será substituído.`,"integrations.plan.foreign.foreignEdit":`As edições dentro do bloco gerenciado pelo opencodex serão substituídas.`,"integrations.plan.foreign.drift":`O arquivo mudou desde este ponto de rollback.`,"integrations.plan.noop.applied":`Nenhuma alteração é necessária no documento do cliente gerenciado; as configurações da integração já estão presentes.`,"integrations.plan.noop.disabled":`Nenhuma alteração é necessária no documento do cliente gerenciado; as configurações da integração já estão ausentes.`,"integrations.plan.noop.profilePreference":`A preferência de sincronização do perfil ainda será salva quando você confirmar.`,"integrations.plan.refused":`O servidor não consegue aplicar este plano com segurança.`,"integrations.plan.refusal.notInstalled":`O cliente não está instalado. Instale-o, atualize esta página e visualize a alteração novamente.`,"integrations.plan.refusal.conflict":`As configurações gerenciadas entram em conflito com o arquivo atual. Revise o arquivo ou use Substituir quando essa ação estiver disponível.`,"integrations.plan.refusal.unsafe":`A configuração do cliente não pode ser alterada com segurança. Repare ou substitua o arquivo antes de tentar de novo.`,"integrations.plan.refusal.nonLoopback":`Este cliente exige um endereço de proxy loopback. Use acesso por localhost, um túnel ou um encaminhador local antes de tentar de novo.`,"integrations.plan.refusal.supersededStore":`Este cliente agora lê seus provedores de um arquivo que o opencodex não grava, então esta operação não mudaria nada do que ele carrega.`,"integrations.plan.refusal.missingStore":`O arquivo em que este cliente guarda seus provedores não existe, e o opencodex não grava no antigo arquivo de configurações do cliente no lugar dele, porque o cliente move esse arquivo na próxima inicialização. Crie o arquivo com o conteúdo {document} e clique em "Aplicar" de novo.`,"integrations.plan.refusal.driftRequiresConfirm":`O arquivo mudou depois deste ponto de rollback. Revise o plano com as diferenças antes de restaurar.`,"integrations.plan.refusal.snapshotExpired":`O backup deste ponto de rollback expirou, então ele não pode mais ser restaurado.`,"integrations.plan.refusal.writeFailed":`O servidor não conseguiu preparar uma gravação segura. Atualize o estado da integração antes de tentar de novo.`,"integrations.mutation.pending":`Aplicando a alteração confirmada…`,"integrations.bulk.breakage":`Cada cliente deixará de usar os modelos roteados por esta instância do opencodex.`,"integrations.bulk.undo":`Cada cliente mantém seu próprio backup e sua entrada de rollback.`,"integrations.bulk.confirm":`Desativar todos`,"integrations.semantics.opencode":`Apenas inicializações diretas do disco; a injeção de ambiente do ocx opencode tem precedência.`,"integrations.semantics.pi":`Vale para novas sessões.`,"integrations.semantics.omp":`Reinicie o OMP para carregar o catálogo.`,"integrations.semantics.hermes":`Vale para novas sessões.`,"integrations.semantics.openclaw":`Vale imediatamente para um gateway em execução.`,"integrations.semantics.kimi":`Reinicie ou execute /reload para aplicar (a v2 observa o arquivo).`,"integrations.semantics.gajae":`Vale para uma nova sessão ou ao abrir /model.`,"integrations.semantics.dsh":`O OpenCodex gerencia apenas o provedor opencodex da linha llm-pi-ai em $DSH_HOME/profiles/desktop/cordis.patch.yml, o perfil Desktop que o DSH 0.1.7+ lê ($DSH_HOME/settings.yaml enquanto esse perfil não existir). O DSH recarrega esse provedor a quente; seu modelo padrão e o deepseek-official permanecem inalterados. Atualmente somente loopback; nenhuma credencial real é gravada.`,"integrations.semantics.mcode":`Gerencia apenas custom_provider.opencodex. Seu modelo padrão e o login do MiniMax permanecem inalterados.`,"integrations.semantics.zcode":`Gerencia apenas provider.opencodex em ~/.zcode/v2/config.json. Seu login do Z.ai e os outros provedores permanecem inalterados. Reinicie o ZCode após as alterações.`,"integrations.semantics.prime":`Gerencia apenas providers.opencodex no models.json do Prime Agent — ~/.prime/agent, a menos que PRIME_AGENT_CODING_AGENT_DIR o redirecione. Seus outros provedores e substituições de modelo permanecem inalterados. Vale para novas sessões.`,"integrations.semantics.aside":`Gerencia apenas providers.opencodex no ~/.aside/u/<id>/models.json deste perfil. Seus outros provedores permanecem inalterados. Feche completamente e reabra o Aside após aplicar.`,"integrations.semantics.raycast":`Adiciona uma entrada de provedor OpenCodex ao providers.yaml do Raycast, para que todos os modelos roteados apareçam no seletor de modelos do Raycast AI. Requer Raycast Pro.`,"integrations.semantics.omo":`Gerencia apenas providers.opencodex no models.json do omo — ~/.omo/agent, a menos que OMO_CODING_AGENT_DIR, SENPI_CODING_AGENT_DIR ou PI_CODING_AGENT_DIR o redirecione. Seus outros provedores permanecem inalterados. Vale para novas sessões.`,"integrations.lazycodexRoles.title":`omo (Codex / LazyCodex): modelos por papel`,"integrations.lazycodexRoles.hint":`Escolha o modelo e o esforço de raciocínio de cada papel. Salvar atualiza o arquivo dele em $CODEX_HOME/agents e, quando puder ser reescrito com segurança, o omo.jsonc do LazyCodex; "Herdar esforço" deixa o esforço para o Codex.`,"integrations.lazycodexRoles.role":`Função`,"integrations.lazycodexRoles.current":`Atual`,"integrations.lazycodexRoles.model":`Novo modelo`,"integrations.lazycodexRoles.modelFor":`Modelo para {role}`,"integrations.lazycodexRoles.effort":`Esforço de raciocínio`,"integrations.lazycodexRoles.effortFor":`Esforço de raciocínio ({role})`,"integrations.lazycodexRoles.effortDefault":`Herdar esforço`,"integrations.lazycodexRoles.none":`Nenhum modelo fixado`,"integrations.lazycodexRoles.choose":`Escolha um modelo`,"integrations.lazycodexRoles.empty":`Nenhuma função de agente do Codex foi encontrada.`,"integrations.lazycodexRoles.loadFailed":`Não foi possível carregar as funções de agente do Codex.`,"integrations.lazycodexRoles.saveFailed":`Não foi possível salvar o modelo de {role}.`,"integrations.lazycodexRoles.saved":`{role} agora usa {model}.`,"integrations.lazycodexRoles.omoAbsent":`{role} agora usa {model}. O omo.jsonc não foi encontrado, então só o arquivo da função foi alterado.`,"integrations.lazycodexRoles.omoComments":`{role} agora usa {model}. O omo.jsonc tem comentários que salvar removeria, então ficou como estava; defina [codex].agents.{role} nele você mesmo.`,"integrations.lazycodexRoles.omoInvalid":`{role} agora usa {model}. O omo.jsonc ficou como estava porque não é um JSON válido no formato que o LazyCodex lê.`,"integrations.lazycodexRoles.omoFailed":`{role} agora usa {model}, mas não foi possível gravar o omo.jsonc.`,"integrations.lazycodexRoles.retryMirror":`Tentar omo.jsonc novamente`,"integrations.lazycodexRoles.omoCommentsState":`O omo.jsonc tem comentários, então salvar aqui atualiza só os arquivos de papel. Defina [codex].agents no omo.jsonc você mesmo.`,"integrations.lazycodexRoles.auto.button":`Atribuir automaticamente`,"integrations.lazycodexRoles.auto.running":`Dimensionando funções…`,"integrations.lazycodexRoles.auto.hint":`Sugere para cada papel o modelo suficiente mais barato e o esforço adequado. Nada muda até você aplicar.`,"integrations.lazycodexRoles.auto.failed":`Não foi possível dimensionar as funções de agente do Codex.`,"integrations.lazycodexRoles.auto.title":`Modelos propostos`,"integrations.lazycodexRoles.auto.sizedWith":`Dimensionado com {model}`,"integrations.lazycodexRoles.auto.applyAll":`Aplicar todos`,"integrations.lazycodexRoles.auto.discard":`Descartar`,"integrations.lazycodexRoles.auto.sizingFailed":`A chamada de dimensionamento falhou: {error}`,"integrations.lazycodexRoles.auto.appliedCount":`{count} de {total} propostas aplicadas.`,"integrations.lazycodexRoles.auto.proposalFor":`Proposta para {role}`,"integrations.lazycodexRoles.auto.tierEffort":`Nível {tier}, esforço {effort}`,"integrations.lazycodexRoles.auto.tierFast":`Rápido`,"integrations.lazycodexRoles.auto.tierStandard":`Padrão`,"integrations.lazycodexRoles.auto.tierFrontier":`Frontier`,"integrations.lazycodexRoles.auto.effortGlance":`olhada rápida`,"integrations.lazycodexRoles.auto.effortMeasured":`moderado`,"integrations.lazycodexRoles.auto.effortThorough":`minucioso`,"integrations.lazycodexRoles.auto.effortExhaustive":`exaustivo`,"integrations.lazycodexRoles.auto.unsized":`Não dimensionado: {reason}`,"integrations.lazycodexRoles.auto.unassigned":`Sem modelo: {reason}`,"integrations.lazycodexRoles.auto.applied":`Aplicado`,"integrations.lazycodexRoles.auto.alreadySet":`Já definido`,"integrations.lazycodexRoles.auto.apply":`Aplicar`,"integrations.lazycodexRoles.auto.moveUp":`Suba de nível se: {text}`,"integrations.lazycodexRoles.auto.moveDown":`Desça de nível se: {text}`,"integrations.semantics.cline":`Gerencia o OpenCodex no providers.json e no models.json do Cline CLI. Pare o Cline antes de alterar ou sincronizar esses arquivos e reinicie depois. Desfazer restaura os dois originais. Seu provedor padrão permanece inalterado; selecione o OpenCodex no Cline.`,"integrations.semantics.qoder":`Gerencia os provedores e modelos personalizados do OpenCodex em ~/.qoder/settings.json. Requer acesso por loopback. As demais configurações são preservadas; Desfazer restaura o snapshot.`,"integrations.semantics.commandcode":`Gerencia apenas a entrada do provedor OpenCodex em ~/.commandcode/providers.json. Seus outros provedores e configurações permanecem inalterados.`,"integrations.semantics.kilo":`Gerencia apenas provider.opencodex na configuração global do Kilo — o primeiro arquivo existente entre kilo.jsonc, kilo.json, opencode.jsonc, opencode.json ou config.json em ~/.config/kilo (XDG_CONFIG_HOME realoca esse diretório; kilo.jsonc é criado quando nenhum existe). As demais chaves permanecem inalteradas. Aplicar reescreve o arquivo inteiro, então comentários e vírgulas finais não são preservados. Selecione opencodex/<model> no Kilo.`,"integrations.semantics.droid":`Adiciona modelos personalizados do OpenCodex ao settings.json do Factory Droid. Desativar remove apenas as linhas gerenciadas; desfazer restaura o arquivo salvo.`,"integrations.raycast.proRequired":`Custom Providers é um recurso do Raycast Pro. O arquivo será gravado, mas o Raycast o ignora até que uma assinatura Pro esteja ativa.`,"integrations.raycast.planUnknown":`Não foi possível determinar se o Raycast Pro está ativo; Custom Providers requer o Raycast Pro.`,"integrations.raycast.revealConfig":`Abra Raycast → Settings → AI e clique uma vez em Reveal Providers Config para que a pasta de provedores exista.`,"codexAuth.mainAccount":`Conta principal`,"codexAuth.logLabel":`Rótulo no log`,"codexAuth.codexApp":`App Codex`,"codexAuth.moreActions":`Mostrar mais ações`,"codexAuth.copyId":`Copiar ID da conta`,"codexAuth.appLogin":`Login do app`,"codexAuth.accountPool":`Pool de contas`,"codexAuth.accountModeTitle":`Modo de conta OpenAI`,"codexAuth.accountModePool":`Modo Pool`,"codexAuth.accountModePoolDesc":`O login principal e as contas adicionadas elegíveis se alternam aqui.`,"codexAuth.accountModeDirect":`Modo direto`,"codexAuth.accountModeDirectDesc":`As requisições usam apenas o login principal; as contas adicionadas continuam armazenadas para o modo Pool.`,"codexAuth.openaiMissing":`O provedor OpenAI integrado não está configurado.`,"codexAuth.openaiDisabled":`O provedor OpenAI integrado está desativado.`,"codexAuth.openaiUnavailableDesc":`Suas contas OpenAI continuam disponíveis. Ative o provedor para rotear as requisições do Codex.`,"codexAuth.enableOpenai":`Ativar OpenAI`,"codexAuth.enablingOpenai":`Ativando...`,"codexAuth.enableOpenaiFailed":`Falha ao ativar o provedor OpenAI.`,"codexAuth.openaiPresetLoadFailed":`Falha ao carregar o preset do provedor OpenAI.`,"codexAuth.openaiPresetUnavailable":`O preset do provedor OpenAI não está disponível.`,"codexAuth.openProviders":`Abrir Provedores`,"codexAuth.add":`Adicionar`,"codexAuth.credits":`Créditos`,"codexAuth.creditsRemaining":`restantes`,"codexAuth.creditsUnlimited":`Ilimitado`,"codexAuth.creditsOverage":`Limite de excedente atingido`,"codexAuth.creditsApprox":`Mensagens aprox.: local {local} · nuvem {cloud}`,"codexAuth.creditsToggle":`Créditos do Codex`,"codexAuth.creditsToggleHint":`Mostra os créditos restantes do Codex nos cartões das contas. Oculto por padrão.`,"codexAuth.creditsShown":`Créditos do Codex visíveis`,"codexAuth.creditsHidden":`Créditos do Codex ocultos`,"codexAuth.creditsToggleFailed":`Não foi possível alterar a configuração de créditos do Codex`,"codexAuth.refreshQuota":`Atualizar cotas`,"codexAuth.ultraFastTitle":`Nível de serviço Ultra Fast`,"codexAuth.mainHardLockTitle":`Bloquear conta principal (5h {short}%, longa {long}%)`,"codexAuth.mainHardLockDesc":`Bloqueia em {short}% na janela de 5h ou em {long}% na janela semanal (mensal, para contas apenas mensais). Desbloqueia quando todas as janelas bloqueantes ficam abaixo do limite; a proteção continua ativa. Ativada por padrão.`,"codexAuth.mainHardLockConfirmTitle":`Ativar a proteção da conta principal (5h {short}%, longa {long}%)?`,"codexAuth.mainHardLockConfirmBody":`Enquanto estiver bloqueada, a conta principal não pode usar a Luna Reserve. Manter o uso normal abaixo do esgotamento pode impedir a ativação da Reserve. As contas adicionadas e os outros provedores continuam disponíveis. Requisições em andamento, credenciais de keyring sem correspondência e tráfego fora deste proxy não são protegidos.`,"codexAuth.mainHardLockConfirm":`Ativar proteção`,"codexAuth.mainHardLockEnabled":`A proteção está ativada (5h {short}%, longa {long}%).`,"codexAuth.mainHardLockDisabled":`A proteção da conta principal está desativada. Os limites das outras contas continuam valendo.`,"codexAuth.mainHardLockLoadFailed":`Não foi possível carregar esta configuração. Tente de novo para verificar o estado atual.`,"codexAuth.mainHardLockSaveFailed":`Não foi possível confirmar o salvamento. Recarregue a configuração antes de tentar de novo.`,"codexAuth.mainHardLockRefreshFailed":`Configuração salva, mas não foi possível atualizar o status das contas. Tente novamente.`,"codexAuth.mainHardLockBlocked":`Bloqueada pela proteção da conta principal (5h {short}%, longa {long}%)`,"codexAuth.mainHardLockUnknown":`Proteção ativa · uso desconhecido`,"codexAuth.mainHardLockMonitoring":`Proteção ativa · monitorando`,"codexAuth.mainExternalUsageWarning":`Possível uso fora do opencodex. O bloqueio pode não impedir o esgotamento.`,"codexAuth.mainHardLockManage":`Ver configuração de proteção`,"codexAuth.mainHardLockFallbackTitle":`Fallback durante o bloqueio`,"codexAuth.mainHardLockFallbackDesc":`Durante o bloqueio, quando nenhuma conta Codex pode atender a uma solicitação, as solicitações a modelos Codex nativos são roteadas para este modelo em vez de falhar. Deixe vazio para recusar como de costume; o bloqueio termina sozinho.`,"codexAuth.mainHardLockFallbackModel":`Modelo de fallback`,"codexAuth.mainHardLockFallbackEffort":`Esforço de raciocínio`,"codexAuth.mainHardLockFallbackDefaultEffort":`Manter esforço da solicitação`,"codexAuth.mainHardLockFallbackActive":`Bloqueando agora — solicitações Codex nativas são roteadas para {model}.`,"codexAuth.mainHardLockFallbackSaveFailed":`Não foi possível confirmar o salvamento do fallback. Recarregue a configuração antes de tentar de novo.`,"codexAuth.ultraFastDesc":`Adiciona a opção de velocidade Ultrafast ao GPT-6 Astra e ao GPT-6.1 Sol no seletor de modelos do Codex e impede que um nível de serviço ultrafast configurado por você em modelos roteados seja removido quando o catálogo é regenerado. O Ultrafast exige um plano do ChatGPT elegível; ative apenas se o seu plano o incluir.`,"codexAuth.ultraFastLoadFailed":`Não foi possível ler a configuração do Ultra Fast.`,"codexAuth.ultraFastEnabled":`Nível Ultra Fast ativado`,"codexAuth.ultraFastDisabled":`Nível Ultra Fast desativado`,"codexAuth.ultraFastFailed":`Não foi possível alterar a configuração do Ultra Fast`,"codexAuth.refreshingQuota":`Atualizando...`,"codexAuth.quotaRefreshed":`Cotas atualizadas`,"codexAuth.quotaRefreshFailed":`Falha ao atualizar as cotas`,"codexAuth.pauseExhausted":`Pausar esgotadas`,"codexAuth.pausingExhausted":`Verificando cotas...`,"codexAuth.pauseExhaustedSucceeded":`Contas no limite pausadas: {count}`,"codexAuth.pauseExhaustedNone":`Nenhuma conta tem 100% de uso confirmado.`,"codexAuth.pauseExhaustedFailed":`Falha ao verificar e pausar as contas esgotadas.`,"codexAuth.noPool":`Nenhuma conta do pool foi adicionada ainda.`,"codexAuth.pause":`Pausar`,"codexAuth.resume":`Retomar`,"codexAuth.paused":`PAUSADA`,"codexAuth.planExcluded":`Não selecionada automaticamente`,"codexAuth.planExcludedHint":`O plano {plan} está excluído da seleção automática. As rotas explícitas por conta continuam disponíveis.`,"codexAuth.pauseSucceeded":`{email} está pausada`,"codexAuth.resumeSucceeded":`{email} voltou a ficar disponível para o pool`,"codexAuth.pauseFailed":`Não foi possível pausar {email}. Nada foi alterado.`,"codexAuth.resumeFailed":`Não foi possível retomar {email}. Nada foi alterado.`,"accountPause.tooltip":`{reason} · {date}`,"accountPause.reason.organizationDisabled":`Organização desativada`,"accountPause.reason.permissionDenied":`Permissão da conta negada`,"accountPause.reason.subscriptionInactive":`Assinatura inativa`,"accountPause.reason.subscriptionExpired":`Assinatura expirada`,"accountPause.reason.planDowngraded":`Plano rebaixado`,"prov.keyResumedSwitchFailed":`A chave foi retomada, mas a ativação falhou. A chave está disponível para seleção automática. Tente selecioná-la novamente.`,"codexAuth.pausedHint":`Excluída da troca automática, das novas tentativas, da recuperação de cooldown e da seleção manual até ser retomada.`,"codexAuth.creditsAfterLimit":`Usar créditos após o limite`,"codexAuth.creditsAfterLimitHint":`Desativado por padrão: uma conta cuja janela de uso chega a 100% é retirada de uso até a janela reiniciar, para que seus créditos do ChatGPT não sejam gastos. Ative em uma conta para que ela continue trabalhando com seus créditos. Contas novas começam desativadas.`,"codexAuth.creditsAfterLimitAria":`Usar créditos após o limite de uso para {email}`,"codexAuth.creditsAfterLimitMainHint":`O bloqueio rígido da conta principal (ativado por padrão) ainda a interrompe primeiro. Desative o bloqueio para que a conta principal gaste créditos.`,"codexAuth.creditSpend":`Usar créditos`,"codexAuth.creditSpendAria":`Usar créditos do ChatGPT após o limite de uso`,"codexAuth.creditsOn":`Usa créditos`,"codexAuth.creditsOnSucceeded":`{email} pode usar créditos após o limite de uso.`,"codexAuth.creditsOffSucceeded":`{email} será retirada de uso ao atingir o limite, e seus créditos serão preservados.`,"codexAuth.creditsUpdateFailed":`Não foi possível atualizar a configuração de créditos de {email}. Nada foi alterado.`,"codexAuth.creditsAllOnSucceeded":`Agora todas as contas podem usar créditos após o limite de uso.`,"codexAuth.creditsAllOffSucceeded":`Nenhuma conta gastará créditos. As contas são retiradas de uso ao chegar a 100%.`,"codexAuth.creditsAllUpdateFailed":`Não foi possível atualizar a configuração de créditos. Nada foi alterado.`,"codexAuth.pinned":`FIXADA`,"codexAuth.pinnedHint":`Você selecionou esta conta manualmente, então uma ordem de seleção mais alta não passará por cima dela. A fixação dura até esta conta ser esgotada, você selecionar outra ou alterar qualquer ordem de seleção.`,"codexAuth.unpinHint":`Selecione-a novamente para remover a fixação e voltar à seleção automática.`,"codexAuth.unpinTitle":`Remover a fixação?`,"codexAuth.unpinDesc":`Vale imediatamente. As threads com afinidade de conta e as requisições em andamento mantêm a conta capturada; as requisições novas ou sem vínculo escolhem automaticamente uma conta pela ordem de seleção e pelos limites.`,"codexAuth.unpinAction":`Remover fixação`,"codexAuth.unpinned":`Fixação removida — a seleção automática voltou`,"codexAuth.unpinFailed":`Não foi possível confirmar a liberação da fixação. Atualize as contas e verifique a seleção atual antes de tentar novamente.`,"codexAuth.unpinChanged":`A conta fixada mudou enquanto esta confirmação estava aberta. Atualize as contas e confira a seleção atual antes de liberar uma fixação.`,"codexAuth.fiveHour":`5h`,"codexAuth.weekly":`Semana`,"codexAuth.quotaAutoRefresh":`Ativação automática da janela`,"codexAuth.quotaAutoRefreshHint":`Envia uma requisição mínima de aquecimento do Codex, sem armazenamento, quando esta janela de cota é reiniciada.`,"codexAuth.quotaAutoRefreshUpdated":`Ativação automática da janela atualizada.`,"codexAuth.quotaAutoRefreshFailed":`Não foi possível atualizar a ativação automática da janela.`,"codexAuth.monthly":`30d`,"codexAuth.resets":`reinicia`,"codexAuth.today":`Hoje`,"codexAuth.current":`ATUAL`,"codexAuth.nextSession":`SELECIONADA`,"codexAuth.poolPrepared":`PREPARADA PARA O POOL`,"codexAuth.preparePoolTitle":`Preparar esta conta para o modo Pool?`,"codexAuth.preparePoolDesc":`As requisições diretas continuam usando o login principal. Esta conta passa a ser a seleção preparada do Pool quando o modo Pool for ativado.`,"codexAuth.prepareForPool":`Preparar para o Pool`,"codexAuth.poolPreparedToast":`{email} está preparada para o modo Pool`,"codexAuth.switchTitle":`Trocar a conta ativa?`,"codexAuth.switchDesc":`Vale imediatamente. As threads com afinidade de conta e as requisições já em andamento mantêm a conta capturada; as requisições novas ou sem vínculo usam a faixa de ordem da conta selecionada, e as contas com a mesma ordem de seleção continuam se revezando.`,"codexAuth.cacheWarning":`O cache de prompt é reiniciado ao trocar de conta. A nova sessão começa com o cache vazio.`,"codexAuth.switchExceedsThresholdWarning":`O uso desta conta atinge ou excede o limite de troca ({threshold}%). A seleção fixada será liberada se não houver folga de cota.`,"codexAuth.setAsNext":`Usar esta conta em seguida`,"codexAuth.cancel":`Cancelar`,"codexAuth.switchBack":`Voltar para a conta principal?`,"codexAuth.switchBackDesc":`Vale imediatamente. As threads com afinidade de conta e as requisições já em andamento mantêm a conta capturada; as requisições novas ou sem vínculo usam a faixa de ordem da conta do login do app, e as contas com a mesma ordem de seleção continuam se revezando.`,"codexAuth.autoSwitch":`Troca proativa por uso`,"codexAuth.autoSwitchQuotaDesc":`Cota: com {threshold}% de uso ou mais, a próxima requisição sem vínculo pode ir para uma conta elegível de menor uso. As tarefas vinculadas mantêm a afinidade por padrão e só mudam quando a conta não consegue atender, e apenas para uma conta com folga real de cota; Go/Free usam somente 30d.`,"codexAuth.autoSwitchQuotaOffDesc":`A troca proativa por uso está desativada. A atribuição de tarefas novas/sem vínculo e a recuperação de falhas continuam valendo.`,"codexAuth.autoSwitchRoundRobinDesc":`A atribuição round-robin não usa este limite; continua alternando as tarefas novas/sem vínculo.`,"codexAuth.autoSwitchFillFirstDesc":`Fill-first: {threshold}% é o ponto de esgotamento para tarefas novas/sem vínculo; as tarefas vinculadas saudáveis mantêm a conta.`,"codexAuth.autoSwitchFillFirstOffDesc":`O fill-first não tem ponto de esgotamento por uso para tarefas novas/sem vínculo; cooldown, reautenticação e recuperação de falhas ainda podem mudar o roteamento.`,"codexAuth.failureRecoveryNote":`A recuperação de falhas é separada: uma requisição rejeitada antes de qualquer saída com 429/402, cooldown, reautenticação, exclusão ou failover transitório configurado pode selecionar outra conta elegível.`,"codexAuth.autoSwitchThreshold":`Limite de uso`,"codexAuth.autoSwitchThresholdAria":`Limite de uso, em porcentagem`,"codexAuth.autoSwitchThresholdInc":`Aumentar o limite de uso`,"codexAuth.autoSwitchThresholdDec":`Diminuir o limite de uso`,"codexAuth.autoSwitchLoadFailed":`Não foi possível carregar a configuração de troca por uso.`,"codexAuth.autoSwitchThresholdInvalid":`Digite um número inteiro de 1 a 100`,"codexAuth.autoSwitchUpdated":`Troca proativa por uso atualizada`,"codexAuth.autoSwitchUpdateFailed":`Não foi possível confirmar a atualização da troca por uso. O último valor confirmado é exibido.`,"codexAuth.requestUserInput":`Pedir entrada no modo Default`,"codexAuth.requestUserInputDesc":`Permite que o Codex pause uma sessão no modo Default e faça perguntas a você com a ferramenta request_user_input.`,"codexAuth.requestUserInputUpdated":`Feature flag atualizada - vale para novas sessões.`,"codexAuth.requestUserInputUpdatedRestart":`Feature flag atualizada - vale para novas sessões. Reinicie o app Codex para aplicá-la.`,"codexAuth.requestUserInputUpdateFailed":`Não foi possível atualizar a feature flag. Nada foi alterado.`,"codexAuth.requestUserInputLoadFailed":`Não foi possível ler a feature flag do config.toml.`,"codexAuth.accountPickerTitle":`Direcionar uma conta específica do Codex pelo seletor de modelos`,"codexAuth.accountPickerOffDesc":`Quando ativado, as linhas comuns de GPT no seletor são substituídas por uma entrada por seletor de conta, para que você escolha a conta exata de uma conversa sem precisar sair da sessão. Desativar não remove nenhuma conta.`,"codexAuth.accountPickerOnDesc":`Cada seletor é um rótulo público de uma conta armazenada. Escolhê-lo trava a conversa na conta mapeada: ela nunca alterna nem recorre a outra, e não muda a conta ativa do Pool.`,"codexAuth.accountPickerCompatibility":`O login integrado do app Codex tem seu próprio seletor; os mapas gerados normalmente o chamam de main e usam um sufixo à prova de colisão, como main-2, quando necessário. As contas adicionadas recebem rótulos estáveis que preservam a privacidade, enquanto os rótulos personalizados de seletor permanecem inalterados. As conversas existentes e as seleções de modelo salvas continuam roteando. Desativar oculta as entradas geradas, mas preserva os seletores e as rotas exatas. Os IDs simples de modelos GPT mantêm o comportamento de Pool ou Direct.`,"codexAuth.accountPickerUpdated":`Direcionamento de conta atualizado.`,"codexAuth.accountPickerUpdateFailed":`Não foi possível atualizar o direcionamento de conta. A última configuração confirmada é exibida.`,"codexAuth.accountPickerLoadFailed":`Não foi possível carregar a configuração de direcionamento de conta.`,"codexAuth.accountPickerRefreshFailed":`Não foi possível atualizar esta configuração. O último valor confirmado continua sendo exibido.`,"codexAuth.advancedSettings":`Configurações avançadas`,"codexAuth.advancedSettingsAria":`Mostrar ou ocultar as configurações avançadas do Codex Auth`,"codexAuth.catalogRefreshPending":`A alteração foi salva, mas a atualização do catálogo de modelos do Codex está pendente. Execute ocx sync para tentar de novo.`,"anthropicPool.title":`Pool de contas Claude (experimental)`,"anthropicPool.enabledDesc":`Sessões fixas, e as novas sessões preferem contas com uso abaixo de {threshold}% ({window}).`,"anthropicPool.enabledNoProactiveDesc":`Os limites de uso não movem uma sessão saudável existente nem uma conta ativa saudável. Quando a conta ativa fica indisponível, e durante a recuperação de recusa, é escolhida a conta com menor uso ({window}).`,"anthropicPool.enabledFillFirstDesc":`Sessões fixas. As novas sessões permanecem na conta ativa até ela atingir {threshold}% ({window}), entrar em cooldown ou precisar de novo login; depois passam para a próxima conta, em ordem. A recuperação de recusa também usa a próxima conta, em ordem.`,"anthropicPool.enabledFillFirstNoThresholdDesc":`Sessões fixas. As novas sessões permanecem na conta ativa até ela entrar em cooldown ou precisar de novo login; depois passam para a próxima conta, em ordem. A recuperação de recusa também usa a próxima conta, em ordem.`,"anthropicPool.enabledRoundRobinDesc":`Sessões fixas. As novas sessões e a recuperação de recusa se revezam entre as contas elegíveis; uso, limite e janela de cota não são considerados.`,"anthropicPool.disabledDesc":`A seleção proativa de contas está desativada. O OpenCodex usa a conta selecionada e ainda pode trocar após uma resposta de limite de taxa (429) ou uma recusa de conta classificada, quando houver outra conta elegível conectada.`,"anthropicPool.experimentalWarning":`Use apenas assinaturas que você possua ou esteja autorizado a usar. O pooling automatizado de contas não é endossado pela Anthropic e continua experimental. Use o cliente Claude Code genuíno com uma pessoa supervisionando a sessão e verifique os termos vigentes da Anthropic. As contas podem compartilhar a cota de uma organização, então adicionar uma conta pode não aumentar a capacidade.`,"anthropicPool.detailsSummary":`Como funciona a seleção de contas`,"anthropicPool.detailsEnabling":`Ativar o pool mantém cada sessão em sua conta enquanto ela estiver saudável e permite que a estratégia selecionada escolha as contas das novas sessões e após uma recusa.`,"anthropicPool.detailsFailover":`Desativá-lo não desativa o failover: após um 429 ou uma recusa de conta classificada, uma requisição ainda pode passar para outra conta conectada. Pause uma conta para mantê-la fora do failover.`,"anthropicPool.detailsActivity":`O OpenCodex não envia requisições keep-warm. Por padrão, não renova tokens do Claude nem consulta o uso em segundo plano; o uso só é lido quando o painel, o app da barra de menus ou um comando ocx o solicita.`,"anthropicPool.nativeMessagesLabel":`Preservar solicitações nativas do Claude`,"anthropicPool.nativeMessagesHelp":`Com o pool ativado, mantém o histórico do Claude Code e os marcadores de cache no caminho nativo de Messages quando a rota selecionada oferece suporte. Outras rotas ainda podem traduzir solicitações. A troca de conta pode iniciar um cache frio; acertos de cache não são garantidos e as contas não compartilham cache. As desativações explícitas de rollout continuam valendo.`,"anthropicPool.saveWarning":`As configurações foram salvas, mas o processamento posterior da configuração falhou. Recarregue as configurações para confirmar o estado atual.`,"anthropicPool.saveStateUnknown":`Não foi possível confirmar as configurações salvas. Recarregue-as antes de fazer outra alteração.`,"anthropicPool.reloadSettings":`Recarregar configurações`,"anthropicPool.detailsGuide":`Guia do pool de contas`,"anthropicPool.needTwoAccounts":`Adicione pelo menos duas contas Claude OAuth antes de ativar o pool.`,"anthropicPool.threshold":`Limite de uso para novas sessões`,"anthropicPool.thresholdAria":`Limite de uso para novas sessões, em porcentagem`,"anthropicPool.thresholdHelp":`É uma preferência para a seleção de contas, não um limite rígido de uso ou de cobrança. 0 desativa a troca proativa por este limite. Padrão: 80%.`,"anthropicPool.thresholdInvalid":`Digite um número inteiro de 0 a 100`,"anthropicPool.loadFailed":`Não foi possível carregar as configurações do pool Claude.`,"anthropicPool.saveFailed":`Não foi possível salvar as configurações do pool Claude.`,"anthropicPool.on":`Ligado`,"anthropicPool.off":`Desligado`,"accountPool.strategy":`Estratégia de rotação`,"accountPool.strategyDesc":`Como o OpenCodex atribui uma conta a uma tarefa nova/sem vínculo.`,"accountPool.strategyResetFirst":`Reinício mais próximo primeiro`,"accountPool.strategyHintResetFirst":`Prefere o reinício de 5 horas ou semanal futuro mais próximo entre as contas abaixo do limite de uso. As tarefas vinculadas seguem a política de afinidade configurada. Cotas independentes por modelo usam a ordenação por cota.`,"accountPool.strategyQuota":`Cota`,"accountPool.strategyRoundRobin":`Round-robin`,"accountPool.strategyFillFirst":`Fill-first`,"accountPool.strategyHintQuota":"A cota revincula uma tarefa existente no limite de uso apenas quando `pool.cacheAffinity` está desativado (por padrão, ele vem ativado). Caso contrário, as tarefas vinculadas permanecem até a conta não conseguir atender, e então só vão para uma conta com folga real de cota.","accountPool.strategyHintRoundRobin":`O round-robin alterna apenas as tarefas sem vínculo ativo; o limite de uso não altera a rotação normal.`,"accountPool.strategyHintFillFirst":`O fill-first usa o limite como ponto de esgotamento para tarefas sem vínculo; as tarefas vinculadas saudáveis mantêm a afinidade.`,"accountPool.unboundDefinition":`Tarefa nova/sem vínculo é uma requisição sem vínculo atual com uma conta; uma tarefa visível existente pode ficar sem vínculo após um reset do proxy ou da afinidade.`,"accountPool.stickyLimit":`Atribuições novas/sem vínculo antes de alternar`,"accountPool.stickyLimitAria":`Atribuições novas/sem vínculo antes de alternar`,"accountPool.stickyLimitInc":`Aumentar o limite de fixação`,"accountPool.stickyLimitDec":`Diminuir o limite de fixação`,"accountPool.stickyLimitHelp":`Mantém a conta selecionada por esta quantidade de atribuições de tarefas novas/sem vínculo antes de avançar; o contador aumenta quando a tarefa é vinculada, não após o sucesso no upstream.`,"accountPool.stickyLimitInvalid":`Digite um número inteiro de 1 a 100`,"accountPool.strategyLoadFailed":`Não foi possível carregar a estratégia de rotação.`,"accountPool.strategyUpdateFailed":`Não foi possível salvar a estratégia de rotação.`,"accountPool.switchAtThreshold":`trocar em {threshold}%`,"accountPool.drainAtThreshold":`esgotar em {threshold}%`,"accountPool.resetBelowThreshold":`reinício mais próximo abaixo de {threshold}%`,"accountPool.thresholdNotUsed":`limite não utilizado`,"accountPool.proactiveSwitchingOff":`troca proativa desativada`,"accountPool.quotaWindow":`Janela de cota`,"accountPool.quotaWindowDesc":`Qual barra de uso em cache controla a seleção de novas sessões baseada em cota, as verificações de limite do fill-first e as substituições elegíveis por 429.`,"accountPool.quotaWindowFiveHour":`Barra de 5 horas`,"accountPool.quotaWindowWeekly":`Barra semanal`,"accountPool.quotaWindowMaxUtilization":`Barra mais alta`,"accountPool.quotaWindowHint":`A semanal ignora as contas cuja barra de 5 horas está esgotada enquanto houver outra conta elegível, mas recorre a elas quando não houver. Empates na semanal preferem o menor uso de 5 horas; as barras semanais por conta só são conhecidas depois que a página Provedores as consultar.`,"accountPool.quotaWindowInert":`Só a cota — ou o fill-first com limite acima de 0 — pontua uma barra de uso, então esta configuração não muda nada na estratégia de rotação atual.`,"accountPool.priority":`Ordem de seleção`,"accountPool.priorityAria":`Ordem de seleção desta conta`,"accountPool.priorityHint":`Números maiores são usados primeiro. O pool passa para um número menor apenas quando todas as contas acima dele estiverem esgotadas ou indisponíveis.`,"accountPool.priorityFirst":`Primeira`,"accountPool.priorityEarlier":`Antes`,"accountPool.priorityNormal":`Normal`,"accountPool.priorityLater":`Depois`,"accountPool.priorityLast":`Última`,"accountPool.priorityOption":`{name} ({value})`,"accountPool.priorityCustom":`Personalizada`,"accountPool.priorityUpdated":`Ordem de seleção atualizada para {email}`,"accountPool.priorityUpdateFailed":`Não foi possível salvar a ordem de seleção de {email}. O último valor confirmado é exibido.`,"accountPool.autoSwitchThreshold":`Limite personalizado da conta`,"accountPool.autoSwitchThresholdAria":`Limite de uso de {email}`,"accountPool.autoSwitchOverrideAria":`Substituir o limite de uso global de {email}`,"accountPool.autoSwitchHint":`Substitui o limite global desta conta. 0 desativa a troca proativa por uso a partir desta conta.`,"accountPool.autoSwitchUpdated":`Limite de uso atualizado para {email}`,"accountPool.autoSwitchUpdateFailed":`Não foi possível salvar o limite de uso de {email}. O último valor confirmado é exibido.`,"codexAuth.switched":`{email} está selecionada para a próxima requisição`,"codexAuth.loadFailed":`Não foi possível carregar as configurações da conta Codex.`,"codexAuth.accountsRefreshFailed":`A última atualização das contas falhou. As contas abaixo são as últimas confirmadas.`,"codexAuth.switchFailed":`Não foi possível trocar de conta. Sua seleção anterior foi mantida.`,"codexAuth.removeConfirm":`Remover {id}?`,"codexAuth.removeFailed":`Não foi possível remover a conta. Nada foi alterado.`,"codexAuth.addTitle":`Adicionar conta Codex`,"codexAuth.addIdLabel":`ID da conta (slug)`,"codexAuth.addIdPlaceholder":`codex-work, codex-alt, team...`,"codexAuth.resetCreditsAria":`{count} crédito(s) de reset`,"codexAuth.addJsonLabel":`Conteúdo do auth.json`,"codexAuth.addHelp":`Copie do ~/.codex/auth.json de outra máquina ou use codex-auth export.`,"codexAuth.importBtn":`Importar`,"codexAuth.importInvalidJson":`JSON inválido`,"codexAuth.importMissingTokens":`access_token ou refresh_token ausente no JSON`,"codexAuth.importMissingId":`O ID da conta é obrigatório`,"codexAuth.accountAdded":`Conta adicionada ao pool`,"codexAuth.addPickDesc":`Faça login com outra conta do ChatGPT para adicioná-la ao pool.`,"codexAuth.oauthLogin":`Login OAuth`,"codexAuth.oauthDesc":`Abre o login do ChatGPT no navegador`,"codexAuth.deviceLogin":`Login por código de dispositivo`,"codexAuth.deviceDesc":`Para proxy headless ou remoto: digite um código curto em outro dispositivo`,"codexAuth.importAuthJson":`Importar auth.json`,"codexAuth.importAuthJsonDesc":`De outra instalação do Codex ou de um codex-auth export`,"codexAuth.back":`Voltar`,"codexAuth.oauthAlreadyInProgress":`Já há um login em andamento. Conclua-o no navegador.`,"codexAuth.oauthWaiting":`Aguardando a conclusão do login do ChatGPT no navegador...`,"codexAuth.oauthSubmittingCode":`Enviando código…`,"codexAuth.oauthCodeSubmitted":`Código enviado — aguardando a conclusão do login…`,"codexAuth.oauthStatusRetrying":`Erro de rede ou de proxy ao verificar o status do login — tentando novamente…`,"codexAuth.oauthCancelled":`O login foi cancelado.`,"codexAuth.loginFailed":`Falha no login`,"codexAuth.needsReauth":`Refazer login`,"codexAuth.reauthenticate":`Reautenticar`,"codexAuth.tokenExpired":`Token expirado — reautentique esta conta`,"codexAuth.mainTokenExpired":`Token expirado — refaça o login com um código de dispositivo abaixo ou pelo login do Codex App`,"codexAuth.mainReauthSucceeded":`Login realizado`,"codexAuth.mainReauthFailed":`Falha ao refazer o login`,"codexAuth.mainReauthCancel":`Cancelar`,"codexAuth.mainReauthCode":`Código`,"codexAuth.mainReauthOpen":`Abrir`,"codexAuth.mainReauthPending":`Aguardando o login…`,"codexAuth.mainReauthDevice":`Refazer login com código de dispositivo`,"codexAuth.emailCollision":`Esta conta corresponde ao seu login principal do Codex. Use outra conta.`,"codexAuth.resetCreditsTitle":`Créditos de reset`,"codexAuth.resetCreditsAvailable":`Você tem {count} crédito(s) de reset disponível(is).`,"codexAuth.resetCreditsDesc":`Cada crédito zera imediatamente seus limites de uso por hora e por semana.`,"codexAuth.noResetCredits":`Você não tem créditos de reset.`,"codexAuth.earnCreditsHint":`Os créditos são ganhos mensalmente e pelo programa de indicação.`,"codexAuth.creditsExpireNote":`Os créditos expiram 30 dias após serem ganhos.`,"codexAuth.useOneCredit":`Usar 1 crédito`,"codexAuth.confirmResetTitle":`Usar crédito de reset?`,"codexAuth.confirmResetDesc":`Isso zerará imediatamente seus limites de taxa atuais. Restam {count} crédito(s).`,"codexAuth.irreversible":`Esta ação não pode ser desfeita.`,"codexAuth.useCredit":`Usar crédito`,"codexAuth.redeeming":`Zerando...`,"codexAuth.resetSuccess":`Limites de taxa zerados! Restam {remaining} crédito(s).`,"codexAuth.resetSuccessGeneric":`Limites de taxa zerados!`,"codexAuth.resetAlreadyRedeemed":`Este crédito já foi resgatado. Créditos inalterados.`,"codexAuth.resetNothingToReset":`Nenhuma janela de limite de taxa precisa ser zerada no momento.`,"codexAuth.resetNoCredit":`Nenhum crédito de reset disponível.`,"codexAuth.resetError":`Falha ao resgatar o crédito de reset. Tente novamente.`,"codexAuth.fifoNote":`O crédito mais antigo é usado primeiro.`,"codexAuth.confirmWhichCredit":`O crédito de {date} será usado.`,"codexAuth.creditNext":`Próximo a usar`,"codexAuth.creditLabel":`Crédito nº {n}`,"codexAuth.creditNextBadge":`PRÓXIMO`,"codexAuth.creditGranted":`Concedido em {date}`,"codexAuth.creditExpires":`Expira em {date} ({days}d restantes)`,"grokCoupon.badgeAria":`{count} cupom(ns) de reset do Grok`,"grokCoupon.badgeErrorAria":`Não foi possível ler os cupons de reset do Grok`,"grokCoupon.title":`Cupons de reset do Grok`,"grokCoupon.available":`Esta conta tem {count} cupom(ns) de reset.`,"grokCoupon.desc":`Um cupom zera imediatamente a janela de uso do Grok desta conta.`,"grokCoupon.none":`Esta conta não tem cupons de reset.`,"grokCoupon.loadFailed":`Não foi possível ler os cupons de reset desta conta.`,"grokCoupon.loadFailedAuth":`Faça login novamente nesta conta xAI para ler os cupons.`,"grokCoupon.retry":`Tentar novamente`,"grokCoupon.couponLabel":`Cupom nº {n}`,"grokCoupon.couponNext":`Próximo a usar`,"grokCoupon.couponNextBadge":`PRÓXIMO`,"grokCoupon.validFrom":`Válido a partir de {date}`,"grokCoupon.expires":`Expira em {date} ({days}d restantes)`,"grokCoupon.useOne":`Usar 1 cupom`,"grokCoupon.fifoNote":`O cupom mais próximo do vencimento é usado primeiro.`,"grokCoupon.confirmTitle":`Usar cupom de reset?`,"grokCoupon.confirmDesc":`Isso zera agora a janela de uso do Grok desta conta. Você tem {count} cupom(ns).`,"grokCoupon.confirmWhich":`O cupom que expira em {date} será usado.`,"grokCoupon.irreversible":`Esta ação não pode ser desfeita.`,"grokCoupon.redeem":`Usar cupom`,"grokCoupon.redeeming":`Resgatando…`,"grokCoupon.redeemSuccess":`Cupom resgatado. Restam {count} cupom(ns).`,"grokCoupon.redeemReplayed":`Este resgate já foi concluído antes. Nada foi consumido novamente.`,"grokCoupon.redeemFailed":`Falha no resgate. Confira a lista de cupons antes de tentar novamente.`,"grokCoupon.authFailed":`Faça login novamente nesta conta xAI para usar os cupons.`,"grokCoupon.noAccount":`Nenhuma conta xAI está disponível para este resgate.`,"grokCoupon.noneAvailable":`Não há cupons de reset disponíveis para resgatar.`,"grokCoupon.identityMismatch":`Esse resgate pertence a outra conta. Feche este diálogo e comece de novo.`,"grokCoupon.networkError":`Não foi possível alcançar o proxy.`,"grokCoupon.capacity":`O registro de resgates está cheio no momento. Tente novamente em instantes.`,"grokCoupon.noOperationId":`Este navegador não consegue gerar um ID de resgate, então o resgate está desativado aqui.`,"grokCoupon.unknownOutcome":`O resultado do resgate é desconhecido. Releia a conta para consultar os cupons disponíveis; isso não confirma a tentativa original.`,"grokCoupon.checkResult":`Reler conta`,"grokCoupon.checking":`Relendo…`,"grokCoupon.consumedElsewhere":`O cupom não está mais na lista. O resgate original continua sem confirmação; nenhum novo resgate será enviado.`,"grokCoupon.unresolved":`O cupom ainda está na lista. O resgate original ainda pode ser concluído; nenhum novo resgate será enviado.`,"anthropicGrant.badgeAria":`{count} reset(s) de uso do Claude`,"anthropicGrant.badgeErrorAria":`Não foi possível ler os resets de uso do Claude`,"anthropicGrant.title":`Resets de uso do Claude`,"anthropicGrant.available":`Esta conta tem {count} reset(s) de uso.`,"anthropicGrant.desc":`Um reset recompõe imediatamente os limites de 5 horas e semanais do Claude desta conta. O dia do reset semanal permanece o mesmo.`,"anthropicGrant.none":`Esta conta não tem resets de uso.`,"anthropicGrant.ineligible":`Esta conta não é elegível para resets de uso no momento.`,"anthropicGrant.loadFailed":`Não foi possível ler os resets de uso desta conta.`,"anthropicGrant.loadFailedAuth":`Faça login novamente nesta conta Anthropic para ler os resets.`,"anthropicGrant.retry":`Tentar novamente`,"anthropicGrant.resetsLeft":`{left} de {total} restante(s)`,"anthropicGrant.validFrom":`Válido a partir de {date}`,"anthropicGrant.expires":`Expira em {date} ({days}d restantes)`,"anthropicGrant.windowFiveHour":`5 horas {percent}%`,"anthropicGrant.windowWeekly":`Semanal {percent}%`,"anthropicGrant.windowOverage":`Extra {percent}%`,"anthropicGrant.paused":`Pausado`,"anthropicGrant.notUsable":`Ainda não utilizável`,"anthropicGrant.requiresLimit":`Utilizável quando esta conta atingir um limite`,"anthropicGrant.useOne":`Usar 1 reset`,"anthropicGrant.confirmTitle":`Zerar os limites de uso agora?`,"anthropicGrant.confirmDesc":`Isso recompõe agora os limites de uso do Claude desta conta e consome um reset.`,"anthropicGrant.confirmWhich":`Usa: {label}`,"anthropicGrant.irreversible":`Esta ação não pode ser desfeita.`,"anthropicGrant.redeem":`Zerar limites`,"anthropicGrant.redeeming":`Zerando…`,"anthropicGrant.resultReset":`Limites zerados. Restam {count} reset(s).`,"anthropicGrant.resultAlreadyUsed":`Este reset já foi usado.`,"anthropicGrant.resultNotLimited":`Esta conta não está em um limite, então nada foi usado.`,"anthropicGrant.resultCooldown":`Os resets estão em período de espera para esta conta. Nada foi usado.`,"anthropicGrant.resultIneligible":`Esta conta não é mais elegível. Nada foi usado.`,"anthropicGrant.resultUnavailable":`Os resets estão indisponíveis no momento. Nada foi usado.`,"anthropicGrant.resultRateLimited":`Requisições demais. Nada foi usado; tente novamente em um minuto.`,"anthropicGrant.resultAuthError":`Faça login novamente nesta conta Anthropic. Nada foi usado.`,"anthropicGrant.replayed":`Este reset já foi concluído antes. Nada foi usado novamente.`,"anthropicGrant.notUsableNow":`Este reset não pode ser usado no momento. Releia a conta.`,"anthropicGrant.inFlight":`Este reset ainda está sendo processado. Aguarde um instante e releia a conta.`,"anthropicGrant.unresolvedPrior":`Uma tentativa anterior deste reset ainda não foi confirmada. Repita essa tentativa em vez de iniciar uma nova.`,"anthropicGrant.expired":`A tentativa anterior não pôde ser confirmada a tempo. Releia a conta antes de usar um reset.`,"anthropicGrant.identityMismatch":`Esse reset pertence a outra conta. Feche este diálogo e comece de novo.`,"anthropicGrant.sessionRequired":`Abra o painel pelo login próprio dele para usar os resets.`,"anthropicGrant.journalBusy":`O registro de resets está ocupado ou indisponível. Nada foi usado; tente novamente em instantes.`,"anthropicGrant.failed":`A requisição de reset falhou. Verifique a conta antes de tentar novamente.`,"anthropicGrant.noOperationId":`Este navegador não consegue gerar um ID de requisição, então os resets estão desativados aqui.`,"anthropicGrant.unknownOutcome":`O reset não respondeu a tempo, então seu resultado é desconhecido. Tentar de novo envia o mesmo ID de requisição, portanto não pode iniciar um segundo reset.`,"anthropicGrant.retrySame":`Repetir a mesma requisição`,"anthropicGrant.checkResult":`Reler conta`,"anthropicGrant.checking":`Relendo…`,"api.title":`Acesso à API`,"api.subtitle":`Use chaves de API geradas para acessar o proxy opencodex a partir de apps externos. As chaves se autenticam pelo cabeçalho {authHeader}; veja na tabela abaixo o que cada endpoint aceita.`,"api.baseUrl":`URL base`,"api.responsesEndpoint":`API Responses`,"api.chatCompletionsEndpoint":`API Chat Completions`,"api.messagesEndpoint":`API Messages`,"api.modelsEndpoint":`API Models`,"api.surface.on":`Ativado`,"api.surface.off":`Desativado`,"api.surface.source.fixed":`Sempre disponível`,"api.surface.source.explicit":`Configuração explícita`,"api.surface.source.inherited":`Herdado das configurações do Claude`,"api.surface.source.invalid":`Valor inválido — fechado`,"api.surface.messagesToggle":`Disponibilizar a API Messages`,"api.surface.messagesCloseNote":`Desativar o Messages também desativa a integração com o Claude, para que uma versão mais antiga do opencodex mantenha o endpoint fechado também.`,"api.surface.openClaude":`Configurações do Claude`,"api.surface.toggleFailed":`Não foi possível salvar a configuração do Messages.`,"api.surface.toggleUnavailable":`Esta versão do proxy não permite alterar a API Messages aqui. Use a página do Claude.`,"api.surface.closedNote":`As requisições a este endpoint são recusadas com 403.`,"api.endpointNote":`Use a URL base com clientes compatíveis com OpenAI. Responses e Chat Completions são expostos em /v1.`,"api.endpointsTitle":`Endpoints`,"api.authTitle":`Autenticação`,"api.authLoopback":`O acesso por loopback depende da rota; clientes de áudio independentes exigem uma chave de dados do OpenCodex. Binds remotos exigem uma chave de dados ou OPENCODEX_API_AUTH_TOKEN.`,"api.authBaseUrlNote":`Configure os clientes com a URL base e depois escolha o endpoint específico do protocolo abaixo.`,"api.newKeyTitle":`Nova chave criada`,"api.newKeyNote":`Copie esta chave agora. Depois, você pode exibi-la novamente clicando nela na lista de chaves.`,"api.copy":`Copiar`,"api.copied":`Copiado`,"api.dismiss":`Dispensar`,"api.generateTitle":`Gerar chave`,"api.keyNamePlaceholder":`Nome da chave (opcional)`,"api.generate":`Gerar`,"api.generating":`Criando…`,"api.activeKeys":`Chaves ativas ({count})`,"api.activeKeysLoading":`Chaves ativas`,"api.noKeys":`Nenhuma chave de API ainda. Gere uma acima.`,"api.workspace.sections":`Seções da API`,"api.section.keys":`Chaves`,"api.section.connect":`Conectar`,"api.section.endpoints":`Endpoints`,"api.section.models":`Modelos`,"api.section.examples":`Exemplos`,"api.section.plan":`Prévia do caminho`,"api.plan.title":`Prévia do caminho da requisição`,"api.plan.description":`Mostra o caminho que uma requisição para este modelo percorreria pelo proxy. A prévia não envia nada ao upstream e não tem custo.`,"api.plan.modeNote":`Nativo descreve como a requisição é entregue. Não é um resultado de verificação.`,"api.plan.unavailable":`Esta versão do proxy não oferece prévias de caminho.`,"api.plan.noModels":`Ainda não há modelos para pré-visualizar.`,"api.plan.model":`Modelo`,"api.plan.inbound":`API do cliente`,"api.plan.features":`Recursos da requisição`,"api.plan.preview":`Pré-visualizar`,"api.plan.previewing":`Pré-visualizando…`,"api.plan.failed":`Não foi possível calcular a prévia.`,"api.plan.overallMode":`Entrega`,"api.plan.routeKind":`Rota`,"api.plan.reasons":`Motivos`,"api.plan.guaranteed":`Garantido por todos os candidatos`,"api.plan.partial":`Apenas alguns candidatos`,"api.plan.policyRevision":`Revisão da política`,"api.plan.noCandidates":`Nenhuma rota corresponde a este modelo.`,"api.plan.ineligible":`Recusado pela política atual`,"api.plan.requestPath":`Caminho da requisição`,"api.plan.responsePath":`Caminho da resposta`,"api.plan.fidelity":`Fidelidade`,"api.plan.none":`Nenhum`,"api.plan.noPath":`Sem caminho`,"api.plan.noFeatures":`Nenhum recurso de requisição selecionado.`,"api.plan.mode.native":`Nativo`,"api.plan.mode.translated":`Traduzido`,"api.plan.mode.legacyBridge":`Ponte legada`,"api.plan.mode.blocked":`Bloqueado`,"api.plan.fidelity.preserved":`Preservada`,"api.plan.fidelity.degraded":`Degradada`,"api.plan.fidelity.unknown":`Desconhecida`,"api.plan.routeKind.direct":`Direta`,"api.plan.routeKind.combo":`Combo`,"api.plan.routeKind.policy":`Política de roteamento`,"api.plan.routeKind.unknown":`Modelo desconhecido`,"api.plan.disposition.passthrough":`Repassado`,"api.plan.disposition.translated":`Traduzido`,"api.plan.disposition.degraded":`Degradado`,"api.plan.disposition.unsupported":`Descartado`,"api.plan.disposition.unknown":`Desconhecido`,"api.workspace.details":`Detalhes da chave de API`,"api.workspace.keyDetails":`Detalhes da chave`,"api.workspace.keyPrefix":`Prefixo da chave`,"api.workspace.deleteKey":`Excluir chave`,"api.workspace.deleteConfirm":`Tem certeza de que deseja excluir esta chave? Isso não pode ser desfeito.`,"api.workspace.usageExamples":`Exemplos de uso`,"api.copyUrlHint":`Clique para copiar a URL`,"api.urlCopied":`URL copiada`,"api.copyExampleHint":`Clique para copiar o exemplo`,"api.exampleCopied":`Exemplo copiado`,"api.colName":`Nome`,"api.colKey":`Chave`,"api.colActions":`Ações`,"api.key.revealAria":`Mostrar a chave completa de {name}`,"api.key.hideAria":`Ocultar a chave completa de {name}`,"api.key.revealHint":`Clique para mostrar a chave completa`,"api.key.hideHint":`Clique para ocultar a chave completa`,"api.key.revealFailed":`Não foi possível carregar a chave completa.`,"api.key.revealDenied":`Mostrar uma chave armazenada exige uma sessão autorizada pelo operador. Emparelhe este navegador para continuar ou entre com uma identidade Tailscale confiável.`,"api.key.mutationHidden":`A chave foi criada ou sua rotação foi iniciada, mas o valor de exibição única foi ocultado porque a sessão ou a tela mudou.`,"api.key.copyFailedShort":`Não foi possível copiar. Selecione a chave e copie-a manualmente.`,"api.key.deleteRowAria":`Excluir {name}`,"api.key.deleteShort":`Excluir`,"api.colCreated":`Criada em`,"api.confirm":`Confirmar`,"api.deleteAria":`Excluir chave de API`,"api.modelsTitle":`Catálogo de modelos externos`,"api.modelsCount":`{count} chamável(is)`,"api.modelsLoading":`Carregando modelos…`,"api.modelsSearch":`Buscar modelos`,"api.modelsSubtitle":`Use exatamente estes IDs de modelo com /v1/models e o protocolo de entrada escolhido.`,"api.modelsEmpty":`Ainda não há modelos chamáveis externamente.`,"api.modelsNoMatch":`Nenhum modelo corresponde a “{query}”.`,"api.modelsLoadFailed":`Não foi possível carregar o catálogo de modelos externos.`,"api.colModel":`Modelo`,"api.colSource":`Origem`,"api.colProtocols":`Protocolos`,"api.sourceNative":`Pool do ChatGPT`,"api.sourceCombo":`Rota combo`,"api.sourceCustom":`Personalizado`,"api.protocolResponses":`Responses`,"api.protocolChatCompletions":`Chat Completions`,"api.protocolMessages":`Messages`,"api.copyModelId":`Copiar ID`,"api.modelCopied":`Copiado`,"api.testModel":`Testar`,"api.testingModel":`Testando…`,"api.testSucceeded":`OK`,"api.testFailed":`Falhou`,"api.usageChatTitle":`Exemplo de Chat Completions`,"api.usageResponsesTitle":`Exemplo de Responses`,"api.usageMessagesTitle":`Exemplo de Messages`,"api.usageSampleInput":`Olá, mundo!`,"api.clientConfig.title":`Configuração do cliente`,"api.clientConfig.rowsLabel":`Conectar um cliente`,"api.clientConfig.details":`Detalhes`,"api.clientConfig.detailsAria":`Detalhes da configuração de {client}`,"api.clientConfig.copyAria":`Copiar a configuração de {client}`,"api.clientConfig.downloadAria":`Baixar a configuração de {client}`,"api.clientConfig.rowMeta":`{destination} · {count} modelo(s)`,"api.clientConfig.rowError":`Não foi possível gerar a configuração de {client}.`,"api.clientConfig.copiedAnnounceClient":`Configuração de {client} copiada para a área de transferência.`,"api.clientConfig.clientOpencode":`OpenCode`,"api.clientConfig.clientPi":`Pi`,"api.clientConfig.clientOmp":`OMP`,"api.clientConfig.clientHermes":`Hermes`,"api.clientConfig.clientOpenclaw":`OpenClaw`,"api.clientConfig.clientKimi":`Kimi Code`,"api.clientConfig.clientGajae":`gjc`,"api.clientConfig.clientDsh":`DeepSeek Harness (DSH)`,"api.clientConfig.clientMcode":`MiniMax Code`,"api.clientConfig.clientZcode":`ZCode`,"api.clientConfig.clientPrime":`Prime Agent`,"api.clientConfig.clientAside":`Aside`,"api.clientConfig.clientRaycast":`Raycast`,"api.clientConfig.clientOmo":`omo`,"api.clientConfig.clientCline":`Cline CLI`,"api.clientConfig.clientCommandCode":`Command Code`,"api.clientConfig.clientKilo":`Kilo`,"api.clientConfig.clientQoder":`Qoder`,"api.clientConfig.clientDroid":`Factory Droid`,"api.clientConfig.clineBundle":`Este é um pacote de dois arquivos, não um arquivo de configurações do Cline. Mescle settings em providers.json e catalog no models.json vizinho. Use o interruptor de integração para uma gravação com backup.`,"api.clientConfig.clineDownloaded":`{filename} baixado. Nada foi alterado ainda; settings e catalog pertencem a dois arquivos separados do Cline.`,"api.clientConfig.copy":`Copiar configuração`,"api.clientConfig.download":`Baixar`,"api.clientConfig.loading":`Gerando configuração do cliente…`,"api.clientConfig.jsonLabel":`Configuração de {client}`,"api.clientConfig.destination":`Arquivo de destino`,"api.clientConfig.envHint":`Defina a chave antes de iniciar`,"api.clientConfig.mergeWarning":`Mescle isto no arquivo de destino. Substituí-lo apagaria seus outros provedores e configurações de MCP.`,"api.clientConfig.modelCount":`{count} modelo(s) exportado(s)`,"api.clientConfig.missingLimits":`{count} de {total} modelo(s) saem sem limite de contexto; o cliente aplica seus próprios padrões.`,"api.clientConfig.noKeyYet":`{env} ainda não tem nenhuma chave por trás. Gere uma chave acima antes de usar esta configuração fora do loopback.`,"api.clientConfig.loadFailed":`Não foi possível ler a lista de modelos, então nenhuma configuração de cliente foi gerada.`,"api.clientConfig.copiedAnnounce":`Configuração do cliente copiada para a área de transferência.`,"api.clientConfig.copyFailed":`Não foi possível copiar a configuração do cliente.`,"api.clientConfig.downloadedAnnounce":`{filename} baixado. Nada foi alterado ainda — mescle-o você mesmo em {destination}.`,"api.clientConfig.whereDisclosure":`Onde este arquivo vai`,"api.clientConfig.whereBody":`O destino acima é o caminho global. Um arquivo de configuração local do projeto, no diretório de trabalho, tem precedência sobre ele, e o cliente lê a chave da variável de ambiente indicada na configuração — nunca deste arquivo.`,"api.keysLoadFailed":`Não foi possível carregar as chaves de API.`,"api.createFailed":`Não foi possível criar a chave de API.`,"api.deleteFailed":`Não foi possível excluir a chave de API.`,"api.auth.endpoint":`Endpoint`,"api.auth.required":`Obrigatória`,"api.auth.accepted":`Aceita`,"api.auth.rejected":`Não aceita`,"api.auth.testProtocol":`Testar {protocol}`,"api.auth.testNeedsFreshKey":`Gere uma chave e mantenha seu valor único na tela para executar um teste autenticado.`,"api.key.name":`Nome da chave`,"api.key.rename":`Renomear`,"api.key.saveName":`Salvar nome`,"api.key.renaming":`Salvando…`,"api.key.renameFailed":`Não foi possível renomear a chave. Seu rascunho foi mantido.`,"api.key.deleting":`Excluindo…`,"api.rotation.title":`Rotação de chave`,"api.rotation.description":`Emita uma chave substituta enquanto a chave atual continua válida por um curto período de sobreposição.`,"api.rotation.start":`Iniciar rotação`,"api.rotation.starting":`Iniciando…`,"api.rotation.pending":`A rotação está pendente. Atualize e verifique o cliente antes de confirmar.`,"api.rotation.expires":`A sobreposição expira em:`,"api.rotation.secretOnce":`Chave substituta — exibida uma única vez. Copie-a antes de fechar este aviso.`,"api.rotation.commit":`Confirmar rotação`,"api.rotation.abort":`Cancelar rotação`,"api.rotation.failed":`A ação de rotação não foi concluída. Atualize a página antes de tentar novamente.`,"api.rotation.startFailed":`Não foi possível iniciar a rotação da chave.`,"api.key.copyFailed":`Não foi possível copiar a chave. Selecione-a e copie manualmente antes de fechar este painel.`,"api.attribution.title":`Uso atribuído`,"api.attribution.requests7d":`Requisições, últimos 7 dias`,"api.attribution.totalRequests":`Total de requisições atribuídas`,"api.attribution.totalRequestsAvailable":`Requisições no histórico disponível`,"api.attribution.sinceAvailable":`Atribuição disponível desde`,"api.attribution.lastUsed":`Último uso`,"api.attribution.since":`Atribuição disponível desde`,"api.attribution.neverUsed":`Não usada desde o início da atribuição`,"api.attribution.unavailable":`Uso indisponível`,"api.attribution.unavailableDetail":`Nenhum uso foi atribuído ainda. As requisições registradas antes do início da atribuição não podem ser atribuídas retroativamente.`,"api.attribution.ambiguous":`Duas chaves compartilham este ID, então o uso não pode ser atribuído a nenhuma delas. Dê a cada chave um ID exclusivo no arquivo de configuração.`,"api.attribution.railAmbiguous":`ID duplicado`,"claude.subtitle":`Encaminha ocx claude pelo OpenCodex para que o Claude Code possa usar GPT, Gemini e outros modelos. Ao desativar, a interceptação (incluindo o modo first-party) e a lista de modelos do Claude Desktop também são desativadas. É a mesma configuração do interruptor Claude na visão geral de Conexão.`,"claude.pageTitle":`Claude Code`,"claude.workspace.settings":`Geral`,"claude.enabledLabel":`Conexão com o Claude`,"claude.saveBar.label":`Salvar configurações do Claude Code`,"claude.saveBar.dirty":`Alterações não salvas`,"claude.saveBar.clean":`Nenhuma alteração`,"claude.saveBar.revert":`Reverter`,"claude.enabledHint":`Quando desativada, o Claude Code não consegue usar este proxy.`,"claude.authMode":`Modo de autenticação`,"claude.authModeHint":`Assinatura exige conta Claude; Proxy funciona sem conta Anthropic`,"claude.authModeSubscription":`Assinatura (conta Claude)`,"claude.authModeProxy":`Proxy (sem necessidade de conta)`,"claude.authModeAuto":`Automático (detectar autenticação do Claude)`,"claude.effectiveMode.label":`Vale a partir da próxima inicialização`,"claude.effectiveMode.manual":`Manual: {mode}`,"claude.effectiveMode.autoPresent":`Automático: assinatura — autenticação do Claude encontrada via {source}`,"claude.effectiveMode.autoAbsent":`Automático: modo proxy — nenhuma autenticação do Claude encontrada`,"claude.effectiveMode.autoUnknown":`Automático: assinatura — não foi possível verificar a autenticação`,"claude.effectiveMode.admissionKey":`A chave de API deste proxy continua sendo enviada.`,"claude.authSource.claude-json-oauth":`conta Claude`,"claude.authSource.claude-credentials-file":`arquivo de credenciais`,"claude.authSource.macos-keychain":`Keychain do macOS`,"claude.authSource.exported-env":`variável de ambiente`,"claude.authSource.unknown":`uma credencial detectada`,"claude.systemEnv":`Conexão automática`,"claude.systemEnvDesc":`Quando ativada, executar claude em qualquer terminal passa automaticamente pelo proxy.`,"claude.systemEnvUnsupported":`A conexão automática está disponível apenas no macOS. Neste sistema, inicie o Claude com {cmd}.`,"claude.systemEnvWarn":`⚠ É preciso fechar totalmente e reabrir o aplicativo de terminal para que isto tenha efeito. Não recomendado.`,"claude.fastMode":`Modo rápido (OpenAI)`,"claude.fastModeDesc":`Controla o service_tier dos modelos OpenAI. ON = priority (mais rápido). OFF = default. Auto = repasse (o cliente decide).`,"claude.fastAuto":`Auto`,"claude.fastOn":`ON`,"claude.fastOff":`OFF`,"claude.autoContext":`Usar contexto grande automaticamente`,"claude.autoContextDesc":`Controla até onde vai a marcação de 1M. ON: qualquer modelo cuja janela comporte o limite de compactação ganha uma linha de contexto grande. OFF: só os modelos de 1M de verdade ganham uma.`,"claude.autoContextInert":`Inativo porque existe um valor legado de tamanho de contexto (maxContextTokens) no arquivo de configuração. Remova-o de lá para reativar.`,"claude.contextAccounting":`Contagem de contexto`,"claude.contextAccountingDesc":`1M: modelos de janela longa ficam com 1M por padrão onde o opencodex escolhe o padrão. 200k: o opencodex deixa de marcar modelos como 1M automaticamente; uma linha 1M escolhida por você e uma substituição de contexto definida por você continuam valendo.`,"claude.contextAccounting1m":`1M (padrão)`,"claude.contextAccounting200k":`200k`,"claude.autoCompactWindow":`Ponto de resumo automático`,"claude.autoCompactDefault":`{value} (padrão)`,"claude.autoCompactWindowDesc":`As mensagens mais antigas são resumidas quando a conversa chega a este ponto. Ele nunca excede o limite de cada modelo, então modelos de 200k não são afetados.`,"claude.autoCompactWindowWarn":`Alterar isto pode quebrar modelos GPT — se for definido acima do limite real do modelo, as conversas darão erro antes de o resumo entrar em ação.`,"claude.injectAgents":`Registrar subagentes automaticamente`,"claude.injectAgentsDesc":`Registra os modelos escolhidos na aba Subagentes (mais o modelo padrão atual) como agentes despacháveis do Claude Code (ocx-*). Vale a partir da próxima sessão.`,"claude.webSearchSidecar":`Substituição do sidecar de busca na web`,"claude.webSearchSidecarHint":`Substitui o sidecar principal de busca na web nas requisições do Claude Code.`,"claude.visionSidecar":`Substituição do sidecar de visão`,"claude.visionSidecarHint":`Substitui o sidecar principal de visão nas requisições do Claude Code.`,"claude.useMainSetting":`Usar configuração principal`,"claude.sidecarModelPlaceholder":`Modelo da configuração principal`,"claude.quickstart":`Primeiros passos`,"claude.quickstartHint":`{cmd} abre o Claude Code por meio do proxy. Seu login no claude.ai continua ativo.`,"claude.manualEnv":`Configuração manual (avançado)`,"claude.smallFastModel":`Modelo auxiliar em segundo plano`,"claude.smallFastModelHint":`O modelo que o Claude Code usa em tarefas de segundo plano, como resumos de conversa e detecção de tópico. O alias de subagente haiku também o utiliza. Vazio = padrão do Claude (Haiku).`,"claude.smallFastModelAccurateHint":`O modelo que o Claude Code usa em tarefas de segundo plano, como resumos de conversa e detecção de tópico. O alias de subagente haiku também o utiliza.`,"claude.smallFastModelUnsetOption":`Deixar o Claude Code escolher (modelo nativo)`,"claude.smallFastModelNativeWarning":`Quando não definido, o OpenCodex deixa sem definir as substituições do modelo auxiliar. O Claude Code pode usar seu modelo Sonnet nativo, o que pode gerar cobranças do seu provedor nativo.`,"claude.slotUnset":`Usar padrão do Claude`,"claude.modelMap":`Interceptação de modelo`,"claude.modelMapHint":`Intercepta requisições de um modelo específico e as redireciona para o modelo que você escolher. Vazio por padrão: nada acontece até você adicionar uma regra.`,"claude.mapFrom":`Modelo original (ex.: claude-sonnet-4-5)`,"claude.mapTo":`Trocar por (ex.: gemini/gemini-3-pro)`,"claude.addMapping":`Adicionar regra`,"claude.removeMapping":`Remover regra`,"claude.aliases":`Modelos disponíveis`,"claude.aliasesHint":`Modelos que aparecem no menu /model do Claude Code.`,"claude.aliasProviderOther":`Outros`,"claude.loading":`Carregando…`,"claude.loadFail":`Falha ao carregar as configurações do Claude`,"claude.saved":`Salvo.`,"claude.saveFailed":`Falha ao salvar`,"claude.networkError":`Erro de rede — o proxy está em execução?`,"claude.toggleAria":`Alternar conexão com o Claude`,"claude.none":`Nenhum`,"cws.loading":`Carregando combos…`,"cws.loadFailed":`Não foi possível carregar os combos.`,"cws.saveFailed":`Não foi possível salvar o combo.`,"cws.removeFailed":`Não foi possível remover o combo.`,"cws.saved":`Combo salvo.`,"cws.created":`{model} criado.`,"cws.removed":`combo/{id} removido.`,"cws.renamed":`{from} renomeado para {to}.`,"cws.add":`Adicionar combo`,"cws.addTitle":`Adicionar combo`,"cws.addSubtitle":`Crie um modelo virtual entre provedores e escolha o nome exato do modelo que os clientes vão solicitar.`,"cws.create":`Criar combo`,"cws.jev.create":`Criar JEV Auto`,"cws.jev.exists":`O JEV Auto já existe.`,"cws.jev.setupHint":`Crie um Combo opcional e totalmente editável. O JEV escolhe um destino permitido e um esforço de raciocínio para cada requisição.`,"cws.jev.decisionService":`Serviço de decisão`,"cws.jev.decisionServiceDefault":`TypeSafe JEV (padrão)`,"cws.err.invalidDecisionProvider":`O serviço de decisão {name} não pode ser usado ({reason}). Escolha outro serviço ou o TypeSafe JEV.`,"cws.jev.decisionIssue.missing":`não configurado`,"cws.jev.decisionIssue.notDecision":`não é um serviço de decisão`,"cws.jev.decisionIssue.disabled":`desativado`,"cws.jev.decisionIssue.endpoint":`a URL base deve terminar em /systemone`,"cws.jev.decisionIssue.model":`sem modelo padrão`,"cws.jev.decisionServiceDefaultHint":`O serviço de decisão TypeSafe hospedado, autenticado com a chave do provedor jev.`,"cws.jev.decisionServiceHint":`Serviço de decisão auto-hospedado. Apenas a chave de API do próprio provedor é enviada ao seu endpoint:`,"cws.jev.decisionServicesTitle":`Serviços de decisão do JEV`,"cws.jev.decisionTimeout":`Timeout da decisão (ms)`,"cws.jev.decisionTimeoutHint":`Deixe vazio para o padrão ({default} ms); permitido de {min} a {max} ms. Quando expira, o JEV recorre ao primeiro destino elegível. Aumente para modelos auto-hospedados lentos ou frios.`,"cws.jev.decisionTimeoutShort":`Timeout de {ms} ms`,"cws.jev.decisionTimeoutDefaultShort":`Timeout padrão`,"cws.jev.decisionMethod":`Método de decisão`,"cws.jev.method.typesafe":`TypeSafe JEV (padrão)`,"cws.jev.method.systemone":`Servidor compatível com System One`,"cws.jev.method.model":`modelo do opencodex`,"cws.jev.method.systemoneEmpty":`Nenhum servidor System One está configurado. Adicione um provedor com o adaptador jev-decision cuja URL base termine em /systemone, por exemplo um servidor Ollama executando o tev1.`,"cws.jev.decisionModel":`Modelo de decisão`,"cws.jev.decisionModelHint":`Qualquer modelo que o opencodex roteie. Ele recebe o estado de decisão limitado e as opções permitidas e deve responder com uma chave de opção em JSON. Usa as credenciais armazenadas em seu próprio provedor, nunca as do chamador, e não pode ser este combo nem outro combo JEV.`,"cws.err.invalidDecisionModel":`Escolha um modelo de decisão que o opencodex consiga rotear. Ele não pode ser este combo nem outro combo JEV.`,"cws.jev.test":`Testar`,"cws.jev.testing":`Testando…`,"cws.jev.testHint":`Envia uma tarefa sintética com opções de exemplo ao método selecionado. Nada é salvo.`,"cws.jev.testOk":`Respondeu em {ms} ms via {backend}.`,"cws.jev.testFailOpen":`Falhou em modo aberto ({gate}) após {ms} ms. As requisições usariam o primeiro destino elegível.`,"cws.jev.testError":`Não foi possível executar o teste: {error}`,"cws.jev.backend.typesafe":`TypeSafe`,"cws.jev.backend.systemone":`Servidor System One`,"cws.jev.backend.model":`modelo do opencodex`,"cws.jev.backend.unknown":`Desconhecido (registros antigos)`,"cws.jev.stats.backends":`Decisões por método`,"cws.jev.stats.backend":`Método`,"cws.jev.stats.applied":`Aplicadas`,"cws.jev.stats.latency":`Latência média`,"cws.err.invalidDecisionTimeout":`O timeout da decisão deve ser um inteiro de {min} a {max} ms, ou vazio para o padrão.`,"cws.jev.failOpen":`Destino de fail-open`,"cws.jev.modelProfile":`Notas adicionais de modelo para o JEV`,"cws.jev.modelProfilePlaceholder":`Opcional: deixe em branco para nenhuma nota adicional.`,"cws.jev.modelProfileHint":`Notas opcionais que complementam (nunca substituem) o perfil padrão integrado: capacidade, contexto e custo relativo da assinatura. Enviadas ao serviço de decisão selecionado a cada decisão do JEV.`,"cws.err.invalidModelProfile":`As notas de modelo devem ter no máximo 512 caracteres; quebras de linha e tabulações são os únicos caracteres de controle permitidos.`,"cws.jev.allowedEfforts":`O JEV pode selecionar`,"cws.jev.efforts":`Esforços de raciocínio: {efforts}`,"cws.jev.effortsUnknown":`Esforços de raciocínio não informados`,"cws.jev.effortsNone":`Sem esforço de raciocínio explícito`,"cws.jev.stats.tab":`Estatísticas`,"cws.jev.stats.range":`Período das estatísticas do JEV`,"cws.jev.stats.refresh":`Atualizar`,"cws.jev.stats.loading":`Carregando estatísticas do JEV`,"cws.jev.stats.loadFailed":`Não foi possível carregar as estatísticas do JEV.`,"cws.jev.stats.historyIncomplete":`Alguns registros antigos do JEV foram omitidos, então estes totais podem estar incompletos.`,"cws.jev.stats.emptyTitle":`Ainda não há decisões do JEV`,"cws.jev.stats.emptyBody":`Execute este combo para registrar as escolhas e o uso de tokens dos modelos. Decisões tomadas antes da instalação do suporte a estatísticas não estão disponíveis.`,"cws.jev.stats.decisions":`Decisões`,"cws.jev.stats.appliedAndFailOpen":`{applied} aplicadas · {failOpen} em fail-open`,"cws.jev.stats.modelTokens":`Tokens do modelo`,"cws.jev.stats.decisionTokens":`Tokens de decisão do JEV`,"cws.jev.stats.measuredAttempts":`{measured}/{total} tentativas medidas`,"cws.jev.stats.measuredDecisions":`{measured}/{total} decisões informaram uso`,"cws.jev.stats.successful":`{count} requisições bem-sucedidas`,"cws.jev.stats.fallbackOne":`{count} fallback de modelo`,"cws.jev.stats.fallbackMany":`{count} fallbacks de modelo`,"cws.jev.stats.averageLatency":`Latência média do JEV: {value}`,"cws.jev.stats.averageConfidence":`Confiança média: {value}`,"cws.jev.stats.gates":`Portões de decisão do JEV`,"cws.jev.stats.model":`Modelo`,"cws.jev.stats.otherModels":`Outros modelos`,"cws.jev.stats.picks":`Escolhas`,"cws.jev.stats.efforts":`Esforços`,"cws.jev.stats.attempts":`Tentativas`,"cws.jev.stats.input":`Entrada`,"cws.jev.stats.output":`Saída`,"cws.jev.stats.reasoning":`Raciocínio`,"cws.jev.stats.cacheReadWrite":`Cache L/E`,"cws.jev.stats.total":`Total`,"cws.jev.stats.noEffort":`nenhum`,"cws.jev.stats.measuredShort":`medido`,"cws.jev.stats.tokenFootnote":`Os tokens do modelo vêm das tentativas físicas nos destinos, incluindo novas tentativas e fallbacks. Os tokens de decisão do JEV são informados separadamente pelo serviço de decisão.`,"cws.railAria":`Lista de combos`,"cws.searchPlaceholder":`Buscar combos ou destinos…`,"cws.noSearchResults":`Nenhum combo corresponde à busca.`,"cws.group.failover":`Failover`,"cws.group.roundRobin":`Round-robin`,"cws.group.other":`Outras estratégias`,"cws.targetCount":`{count} destinos`,"cws.targetCountOne":`1 destino`,"cws.overviewTitle":`Combos`,"cws.overviewBlurb":`Modelos virtuais que roteiam entre destinos provedor/modelo com failover, round-robin, sorteio ponderado, menos usado ou reinício de cota mais próximo.`,"cws.count.total":`Total`,"cws.count.failover":`Failover`,"cws.count.roundRobin":`Round-robin`,"cws.count.other":`Outros`,"cws.howTitle":`Como funciona`,"cws.howBody":`Peça ao Codex o nome público do modelo do combo. Se não houver um, o padrão é combo/<id>. O OpenCodex seleciona um destino e só passa ao próximo em falhas recuperáveis do upstream. Se nenhum destino estiver disponível, a requisição falha em modo fechado em vez de usar o provedor padrão global.`,"cws.attentionTitle":`Requer atenção`,"cws.attention.empty":`Nenhum destino configurado`,"cws.attention.few":`Apenas um destino — o failover não tem para onde ir`,"cws.attention.catalogOmitted":`Ausente do catálogo de modelos — as capacidades dos membros estão incompletas ou incompatíveis (janela de contexto/metadados ausentes, ou interseção de modalidades vazia). O roteamento por alias continua funcionando`,"cws.attention.allTargetsExhausted":`Todos os destinos habilitados estão sem cota`,"cws.emptyTitle":`Crie seu primeiro combo`,"cws.empty.createDesc":`Dê nome a um modelo virtual e encadeie dois ou mais backends.`,"cws.backToAll":`Voltar para todos os combos`,"cws.allCombos":`Todos os combos`,"cws.copyModel":`Copiar id`,"cws.copied":`Copiado`,"cws.tabsLabel":`Seções de detalhe do combo`,"cws.tab.config":`Configuração`,"cws.tab.about":`Sobre`,"cws.strategy":`Estratégia`,"cws.strategy.failover":`Failover`,"cws.strategy.roundRobin":`Round-robin`,"cws.strategy.random":`Aleatória`,"cws.strategy.leastUsed":`Menos usado`,"cws.strategy.resetWindow":`Janela de reinício`,"cws.strategy.jev":`JEV`,"cws.strategy.failoverHint":`Tenta os destinos em ordem. Se o primeiro falhar com um erro recuperável (limite de taxa, indisponibilidade, bloqueio de assinatura), passa ao próximo.`,"cws.strategy.roundRobinHint":`Distribui o tráfego de forma determinística por peso. Mantém cada destino selecionado por um lote de requisições bem-sucedidas e depois avança.`,"cws.strategy.randomHint":`Sorteia um destino elegível por requisição, com probabilidade proporcional ao peso. Sem afinidade entre requisições.`,"cws.strategy.leastUsedHint":`Encaminha cada requisição ao destino elegível com menos sucessos registrados. As contagens reiniciam com o proxy.`,"cws.strategy.resetWindowHint":`Prefere o destino elegível cuja janela de cota reinicia primeiro. Recorre à ordem da configuração quando faltam dados de cota.`,"cws.strategy.jevHint":`Pede ao serviço de decisão JEV selecionado que escolha um destino elegível e um esforço compatível. Se a decisão estiver indisponível, usa o primeiro destino elegível.`,"cws.field.id":`Id do combo`,"cws.field.idHint":`Os clientes solicitarão {model}`,"cws.field.idInternalHint":`Id interno do combo. Você pode alterá-lo após a criação.`,"cws.field.idHintEdit":`Renomear move o combo para um novo id. Os clientes solicitam {model}.`,"cws.field.alias":`Nome público do modelo`,"cws.field.aliasPlaceholder":`deepseek-v4-flash ou fornecedor/modelo`,"cws.field.aliasHint":`Opcional. Use um nome simples sem prefixo, um prefixo personalizado como fornecedor/modelo, ou deixe em branco para usar combo/<id>.`,"cws.field.nativeAlias":`Alias nativo da OpenAI`,"cws.field.nativeAliasHint":`Permite que este combo assuma um id de modelo nativo da OpenAI sem qualificador e compatível. As rotas da OpenAI qualificadas por conta e por provedor permanecem separadas.`,"cws.field.displayName":`Nome de exibição`,"cws.field.displayNameHint":`Rótulo deste combo no seletor. Obrigatório quando o alias nativo da OpenAI está habilitado.`,"cws.field.stickyLimit":`Sucessos fixos antes de alternar`,"cws.field.stickyLimitHint":`Mantém o destino selecionado por este número de requisições bem-sucedidas antes de o seletor ponderado avançar.`,"cws.field.defaultEffort":`Raciocínio padrão`,"cws.field.defaultEffortNone":`Nenhum (padrão do destino)`,"cws.field.defaultEffortHint":`Usado somente quando o cliente omite o esforço de raciocínio. As opções são a interseção dos esforços informados pelos destinos selecionados; destinos sem metadados de esforço no catálogo não oferecem nenhuma.`,"cws.capability.imageInputUnavailable":`Escolha primeiro todos os destinos no catálogo — modelos desconhecidos não podem ser cobertos pelo Vision Sidecar.`,"cws.capability.imageInputHint":`Ativado por padrão quando todos os destinos aceitam imagens. Desative para aceitar somente texto.`,"cws.capability.imageInputSidecarHint":`Ativado por padrão. Ao salvar, {models} serão declarados como somente texto e usarão o Vision Sidecar para imagens.`,"cws.capability.imageInputSidecarDisabled":`O Vision Sidecar está desativado — as imagens enviadas a {models} são substituídas por uma nota de omissão e a requisição continua sem elas. Ative-o nas configurações do painel para restaurar as descrições.`,"cws.capability.imageInputBlockedHint":`{models} não pode ser coberto pelo Vision Sidecar: suas modalidades de entrada são desconhecidas ou não têm texto.`,"cws.capability.imageInput":`Imagem / multimodal`,"cws.capability.adaptiveEffort":`Escala de raciocínio adaptativa`,"cws.capability.adaptiveEffortHint":`Desativado: um destino sem controle de raciocínio oculta o seletor de esforço para o combo inteiro. Ativado: esses destinos continuam utilizáveis e o seletor mantém os níveis compartilhados pelos demais destinos.`,"cws.capabilities":`Capacidades`,"cws.field.defaultEffortUnsupported":`Este esforço não está na escala comum dos destinos — será ignorado ou ajustado no momento da requisição.`,"cws.field.defaultEffortUnsupportedOption":`fora da interseção`,"cws.targets":`Destinos`,"cws.targets.failoverHint":`A ordem importa — o primeiro é o principal.`,"cws.targets.roundRobinHint":`Os pesos controlam a seleção relativa determinística; a ordem desempata no anel de rotação.`,"cws.targets.randomHint":`Os pesos controlam a probabilidade de cada sorteio; a ordem não importa.`,"cws.targets.leastUsedHint":`A ordem só desempata entre destinos igualmente usados.`,"cws.targets.resetWindowHint":`A ordem vale quando faltam dados de cota ou há empate.`,"cws.targets.jevHint":`Somente estes destinos podem ser selecionados. A ordem define o destino de fail-open e o fallback posterior do Combo.`,"cws.target.provider":`Provedor`,"cws.target.model":`Modelo`,"cws.target.weight":`Peso`,"cws.target.pickProvider":`Selecione o provedor…`,"cws.target.pickProviderFirst":`Selecione um provedor primeiro…`,"cws.target.pickModel":`Selecione o modelo…`,"cws.target.noModels":`Nenhum modelo para este provedor`,"cws.target.modelPlaceholder":`id do modelo`,"cws.target.add":`Adicionar destino`,"cws.target.drag":`Arraste para reordenar`,"cws.target.moveUp":`Mover para cima`,"cws.target.moveDown":`Mover para baixo`,"cws.quota.available":`Disponível`,"cws.quota.exhausted":`Sem cota`,"cws.quota.unknown":`Cota desconhecida`,"cws.quota.allExhausted":`Todos os destinos habilitados estão sem cota. Escolha outro destino ou aguarde a recuperação da cota.`,"cws.aboutTitle":`Execução`,"cws.aboutBody":`Destinos que falham entram em pausa breve, respeitando o Retry-After. Erros de requisição inválida ou de contexto não passam ao próximo destino. Cada destino adapta o esforço às próprias capacidades; combos esgotados falham em modo fechado. Logs e Uso mantêm as tentativas físicas em ordem e o uso por tentativa.`,"cws.removeConfirmTitle":`Remover {model}?`,"cws.removeConfirmDesc":`Isso remove o modelo virtual da configuração e do catálogo do Codex. Nenhum provedor é excluído.`,"cws.unsavedTitle":`Alterações não salvas`,"cws.unsavedDesc":`Descartar as edições deste combo e continuar?`,"cws.keepEditing":`Continuar editando`,"cws.err.missingId":`O id do combo é obrigatório.`,"cws.err.invalidId":`O id deve começar com letra ou número e usar apenas letras, números, pontos, sublinhados ou hifens (máx. 64).`,"cws.err.duplicateId":`Já existe um combo com este id.`,"cws.err.invalidAlias":`O alias deve usar letras, números, pontos, sublinhados ou hifens, com no máximo um segmento "/".`,"cws.err.aliasReservedNamespace":`O alias não pode usar o namespace reservado "combo/".`,"cws.err.aliasNativeFamily":`Aliases simples da família nativa da OpenAI (gpt-*, o1-*, o3-*, o4-*, codex-*) não são permitidos.`,"cws.err.unsupportedNativeAlias":`O alias nativo deve ser um id de modelo simples da OpenAI atualmente compatível.`,"cws.err.missingNativeAliasDisplayName":`É necessário um nome de exibição para aliases nativos.`,"cws.err.invalidDisplayName":`O nome de exibição deve ter no máximo 128 caracteres e não conter caracteres de controle.`,"cws.err.duplicateAlias":`Outro combo já usa este alias.`,"cws.err.noTargets":`Adicione pelo menos um destino.`,"cws.err.incompleteTarget":`Cada destino precisa de um provedor e um modelo.`,"cws.target.disabled":`{name} (desabilitado)`,"cws.err.reservedNamespace":`Um provedor físico chamado combo precisa ser renomeado antes de criar combos.`,"cws.err.providerCollision":`O id do combo conflita com o nome de um provedor configurado.`,"cws.err.unknownProvider":`Cada destino deve usar um provedor configurado.`,"cws.err.duplicateTarget":`O mesmo destino provedor/modelo só pode aparecer uma vez.`,"cws.err.invalidStickyLimit":`Os sucessos fixos devem ser um número inteiro de 1 a 100.`,"cws.err.invalidWeight":`Cada peso de round-robin deve ser um número inteiro de 1 a 10000.`,"cws.err.invalidReasoningEfforts":`Cada destino do JEV deve permitir pelo menos um esforço de raciocínio único e compatível.`,"cws.err.noEnabledTarget":`Pelo menos um destino deve usar um provedor habilitado.`,"claude.tabsLabel":`Cliente Claude`,"claudeDesktop.title":`Claude Desktop`,"claudeDesktop.subtitle":`Roteia cada família de modelos do Claude por um modelo disponível na porta {port} do proxy.`,"claudeDesktop.importJson":`Importar JSON`,"claudeDesktop.exportJson":`Exportar JSON`,"claudeDesktop.loading":`Carregando perfil do Claude Desktop…`,"claudeDesktop.loadFail":`Falha ao carregar o perfil do Claude Desktop.`,"claudeDesktop.retry":`Tentar novamente`,"claudeDesktop.saveFailed":`Falha ao salvar o perfil do Claude Desktop.`,"claudeDesktop.applyFailed":`O perfil foi salvo, mas não pôde ser aplicado.`,"claudeDesktop.updateFailed":`Falha na atualização do Claude Desktop.`,"claudeDesktop.savedApplied":`Perfil salvo e aplicado ao Claude Desktop.`,"claudeDesktop.appliedMarkerUnsaved":`Aplicado ao Claude Desktop, mas o marcador de aplicação não foi salvo — o estado salvo versus aplicado abaixo pode aparecer desatualizado até você aplicar novamente.`,"claudeDesktop.savedAppliedAnnounce":`Perfil do Claude Desktop salvo e aplicado.`,"claudeDesktop.saved":`Perfil salvo.`,"claudeDesktop.savedAnnounce":`Perfil do Claude Desktop salvo.`,"claudeDesktop.exported":`Perfil exportado como JSON.`,"claudeDesktop.importExpected":`Era esperado um perfil do Claude Desktop versão 1.`,"claudeDesktop.importReady":`JSON importado. Revise o rascunho e depois salve e aplique.`,"claudeDesktop.importedAnnounce":`JSON do perfil importado. As alterações não salvas estão prontas para revisão.`,"claudeDesktop.importInvalid":`O arquivo selecionado não é um perfil válido.`,"claudeDesktop.importFailed":`Falha na importação. {error}`,"claudeDesktop.moved":`{route} movido para {family}.`,"claudeDesktop.unsaved":`Alterações não salvas`,"claudeDesktop.upToDate":`O perfil está atualizado`,"claudeDesktop.saving":`Salvando…`,"claudeDesktop.applying":`Aplicando…`,"claudeDesktop.saveApply":`Salvar e aplicar`,"claudeDesktop.emptyTitle":`Nenhum modelo disponível`,"claudeDesktop.emptyHint":`Adicione ou habilite um provedor e volte para atribuir rotas ao Claude Desktop.`,"claudeDesktop.assignmentsLabel":`Atribuições das famílias de modelos do Claude`,"claudeDesktop.family.opus":`Opus`,"claudeDesktop.family.fable":`Fable`,"claudeDesktop.family.sonnet":`Sonnet`,"claudeDesktop.family.haiku":`Haiku`,"claudeDesktop.modelCountOne":`{count} modelo`,"claudeDesktop.modelCountMany":`{count} modelos`,"claudeDesktop.chooseDefault":`Escolha um padrão`,"claudeDesktop.temporaryDefault":`Padrão temporário`,"claudeDesktop.laneEmpty":`Solte um modelo aqui ou use o controle Mover.`,"claudeDesktop.laneNoMatch":`Nenhum modelo desta família corresponde à sua busca.`,"nav.grok":`Grok`,"grok.title":`Grok Build`,"grok.subtitle":`Modelos que o opencodex registrou na sua configuração do Grok.`,"grok.loading":`Carregando status do Grok…`,"grok.loadFail":`Não foi possível ler a configuração do Grok.`,"grok.notConfiguredTitle":`O Grok Build não está configurado`,"grok.notConfiguredHint":`Inicie ou reinicie o proxy com o Grok instalado e o opencodex grava um bloco gerenciado em:`,"grok.endpoint":`Endpoint`,"grok.colModel":`Modelo`,"grok.colAlias":`Alias do Grok`,"grok.colContext":`Contexto`,"grok.groupNative":`Modelos nativos`,"grok.groupRouted":`Modelos roteados`,"grok.enabledCount":`{on} de {total} registrados`,"grok.saved":`Seleção salva.`,"grok.savedApplied":`Seleção salva e gravada na sua configuração do Grok.`,"grok.saveFailed":`Não foi possível salvar a seleção do Grok.`,"grok.applyFailed":`Seleção salva, mas a configuração do Grok não pôde ser atualizada.`,"grok.applySkipped":`Seleção salva. A configuração do Grok não foi alterada.`,"grok.saveApply":`Salvar e aplicar`,"grok.saving":`Salvando…`,"grok.applying":`Aplicando…`,"grok.unsaved":`Alterações não salvas`,"grok.upToDate":`A seleção está atualizada`,"grok.toggleModel":`Registrar {id} no Grok`,"claudeDesktop.available":`Disponível`,"claudeDesktop.defaultBadge":`Padrão`,"claudeDesktop.roles.title":`Modelos`,"claudeDesktop.roles.default":`Modelo padrão`,"claudeDesktop.roles.defaultDesc":`Aparece primeiro no Claude Desktop e é enviado como modelo do nível Opus.`,"claudeDesktop.roles.quick":`Modelo para tarefas rápidas`,"claudeDesktop.roles.quickDesc":`Responde às solicitações do nível Haiku do Claude Desktop.`,"claudeDesktop.roles.unset":`Não definido`,"claudeDesktop.roles.pick":`Escolha um modelo`,"claudeDesktop.roles.unavailableOption":`{route} (indisponível)`,"claudeDesktop.roles.gatewayScope":`Essas escolhas se aplicam ao modo gateway, que grava a lista de modelos do Claude Desktop.`,"claudeDesktop.roles.listTitle":`Lista de modelos Desktop`,"claudeDesktop.roles.listHint":`Preenchida automaticamente a partir dos seus provedores conectados.`,"claudeDesktop.roles.quickBadge":`Tarefas rápidas`,"claudeDesktop.advanced.title":`Avançado: atribuição de níveis Claude`,"claudeDesktop.advanced.desc":`Escolha em qual nível Claude (Opus, Fable, Sonnet, Haiku) o Claude Desktop classifica cada modelo.`,"claudeDesktop.advanced.empty":`vazio`,"claudeDesktop.supports1m":`1M`,"claudeDesktop.unavailable":`Indisponível`,"claudeDesktop.contextM":`contexto de {n}M`,"claudeDesktop.contextK":`contexto de {n}k`,"claudeDesktop.contextUnknown":`contexto desconhecido`,"claudeDesktop.alias":`Alias`,"claudeDesktop.useAsDefault":`Usar como padrão de {family}`,"claudeDesktop.moveTo":`Mover para`,"claudeDesktop.move":`Mover`,"claudeDesktop.status.applied":`Aplicado ao Desktop`,"claudeDesktop.status.stale":`Configuração desatualizada — aplique novamente`,"claudeDesktop.status.notApplied":`Não aplicado`,"claudeDesktop.status.notActiveProfile":`O Desktop está usando outro perfil — aplique novamente`,"claudeDesktop.status.disabled":`A integração com o Claude Desktop está desativada. Feche completamente e reabra o Desktop após ativá-la.`,"claudeDesktop.enableApply":`Ativar e aplicar`,"claudeDesktop.switchModeApply":`Trocar de modo e aplicar`,"claudeDesktop.status.appliedFirstParty":`Primeira parte: a aba Code do Desktop roteada pelo proxy local`,"claudeDesktop.mode.legend":`Modo de conexão`,"claudeDesktop.mode.firstParty":`Primeira parte`,"claudeDesktop.mode.gateway":`Gateway (terceiros)`,"claudeDesktop.mode.defaultBadge":`padrão`,"claudeDesktop.mode.current":`atual`,"claudeDesktop.mode.firstPartyHint":`O Desktop continua conectado ao claude.ai. A aba Code usa o OpenCodex quando a primeira parte do Desktop está ativada; a CLI independente tem seu próprio interruptor. Ambos leem o mesmo env das configurações.`,"claude.intercept.start":`Iniciar interceptação`,"claude.intercept.starting":`Iniciando interceptação…`,"claude.intercept.reason.disabled":`Ative primeiro o roteamento e a interceptação do Claude.`,"claude.intercept.reason.client_role":`Este processo é um cliente do hub. Ative a interceptação em um servidor local.`,"claude.intercept.reason.ephemeral_port":`Defina claudeCode.intercept.port quando a porta pública for efêmera.`,"claude.intercept.reason.port_in_use":`A porta {port} está em uso. Libere-a ou altere claudeCode.intercept.port.`,"claude.intercept.reason.port_mismatch":`Esta execução usa a porta {bound}; a porta configurada {configured} é diferente. Use a porta vinculada ou restaure o valor configurado.`,"claude.intercept.reason.failed":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local.`,"claude.intercept.reason.stopped":`O ciclo de vida da interceptação foi encerrado. Inicie um serviço OpenCodex em execução.`,"claude.firstParty.label":`Primeira parte da CLI do Claude Code`,"claude.firstParty.desc":`Permite que a CLI claude independente mantenha o login do Claude enquanto seu tráfego passa pelo proxy de interceptação local.`,"claude.firstParty.aria":`Alternar primeira parte da CLI do Claude Code`,"claude.firstParty.risk":`Risco para a conta: a primeira parte encaminha o tráfego da assinatura do Claude por um proxy local de interceptação. A Anthropic pode tratar isso como violação dos termos e suspender a conta.`,"claude.firstParty.shared":`Quando o env compartilhado do proxy é aplicado, o outro cliente do Claude também passa pelo proxy local como um relay inalterado; o TLS é encerrado localmente. Defina NO_PROXY='*' no shell para uso totalmente nativo no terminal.`,"claude.firstParty.deadProxy":`O env das configurações do Claude aponta para um proxy que não está em execução. Inicie o opencodex ou desative a primeira parte do Desktop/CLI para remover as configurações antes de usar o claude puro.`,"claude.firstParty.notApplied":`A primeira parte da CLI está ativada, mas suas configurações de proxy não foram aplicadas. Verifique o env das configurações do Claude antes de usar o claude puro.`,"claude.firstParty.brokenProxy":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local.`,"claude.firstParty.residual":"As configurações do Claude ainda apontam para um proxy do OpenCodex, embora nem a primeira parte do Desktop nem a da CLI esteja ativada. Remova a configuração de proxy restante ou execute `ocx ensure`.","claude.firstParty.routingOff":`O opencodex não está atendendo à interceptação do Claude na configuração atual (o roteamento do Claude ou a interceptação está desativado, ou esta máquina é cliente de outro hub opencodex), então estas configurações apontam para um proxy que não vai atendê-las. Reative-o nesta máquina ou desative a primeira parte para remover as configurações.`,"claude.firstParty.disabled":`Ative primeiro o roteamento e a interceptação do Claude.`,"claude.firstParty.foreign":`O ~/.claude/settings.json aponta para o proxy do opencodex, mas confia em um certificado que o opencodex não gerencia, então as requisições falham. Corrija HTTPS_PROXY / NODE_EXTRA_CA_CERTS manualmente ali.`,"claude.firstParty.local":`O ~/.claude/settings.json envia o Claude Code por um proxy local em 127.0.0.1 que o opencodex não consegue confirmar como seu. Se você não o usa mais, remova HTTPS_PROXY dali.`,"claude.firstParty.unknown":`O opencodex não conseguiu determinar se o ~/.claude/settings.json ainda aponta para o seu proxy.`,"claude.firstParty.refusal.interceptDisabled":`O proxy de interceptação está desativado.`,"claude.firstParty.refusal.interceptUnavailable":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local.`,"claude.firstParty.refusal.foreignEnv":`Outro programa é dono das configurações de proxy do Claude.`,"claude.firstParty.refusal.caUnavailable":`A autoridade certificadora local está indisponível.`,"claude.firstParty.refusal.unreadable":`Não foi possível ler as configurações do Claude.`,"claude.firstParty.refusal.writeFailed":`Não foi possível gravar as configurações do Claude.`,"claudeDesktop.mode.firstPartyRisk":`Risco para a conta: a primeira parte envia o tráfego da sua assinatura do Claude por um proxy local de interceptação. A Anthropic pode tratar isso como violação dos termos e suspender a conta. O Gateway é o padrão.`,"claudeDesktop.mode.gatewayHint":`O aplicativo inteiro passa a usar o OpenCodex como gateway. O chat roda localmente; os recursos do claude.ai ficam indisponíveis.`,"claudeDesktop.mode.switchNote":`A troca substitui a configuração do outro modo. Depois, feche completamente e reabra o Desktop.`,"claudeDesktop.firstParty.proxyRunning":`Proxy local em 127.0.0.1:{port}`,"claudeDesktop.firstParty.proxyStopped":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local. ({port})`,"claudeDesktop.firstParty.interceptDisabled":`O proxy de interceptação está desativado na configuração (claudeCode.intercept.enabled)`,"claudeDesktop.picker.title":`Seletor do Claude Desktop`,"claudeDesktop.picker.hint":`Mostra os modelos do OpenCodex no seletor da aba Code do Desktop por meio do proxy local dedicado.`,"claudeDesktop.picker.toggle":`Ativar o seletor do Claude Desktop`,"claudeDesktop.picker.state.active":`O seletor está ativo`,"claudeDesktop.picker.state.restart":`Feche completamente e reabra o Claude Desktop para concluir a aplicação do perfil do seletor.`,"claudeDesktop.picker.state.trustPending":`Aguardando a etapa de confiança do certificado`,"claudeDesktop.picker.state.trustDeclined":`A confiança no certificado foi recusada`,"claudeDesktop.picker.state.proxyUnavailable":`O proxy do seletor não está em execução`,"claudeDesktop.picker.state.unsupported":`O modo seletor não é compatível com este sistema operacional`,"claudeDesktop.picker.state.notFirstParty":`O seletor só está disponível no modo de primeira parte`,"claudeDesktop.picker.state.profileFailed":`Não foi possível aplicar o perfil do seletor`,"claudeDesktop.picker.models":`{count} modelos disponíveis no seletor`,"claudeDesktop.picker.offlineNote":`Com o modo seletor ativado, o Claude Desktop acessa a rede por meio do OpenCodex. Se o OpenCodex parar, o Desktop fica offline até ele reiniciar ou o modo seletor ser desativado.`,"claudeDesktop.firstParty.bindings.title":`Vínculos de modelo da aba Code`,"claudeDesktop.firstParty.bindings.hint":`O Claude Desktop mantém os nomes da Anthropic no seletor da aba Code. Vincule um modelo do seletor a um modelo do OpenCodex e as requisições dessa entrada do seletor serão atendidas pelo modelo vinculado. Somente o tráfego do Claude Code pelo proxy local (a aba Code do Desktop e a CLI claude) usa estes vínculos; o ocx claude não é afetado. Os vínculos valem a partir da próxima requisição — não é preciso fechar e reabrir completamente.`,"claudeDesktop.firstParty.bindings.empty":`Ainda não há vínculos — os modelos do seletor seguem a rota padrão.`,"claudeDesktop.firstParty.bindings.pickerLabel":`Id do modelo no seletor`,"claudeDesktop.firstParty.bindings.pickerPlaceholder":`claude-sonnet-4-6`,"claudeDesktop.firstParty.bindings.routeLabel":`Modelo do OpenCodex`,"claudeDesktop.firstParty.bindings.routePlaceholder":`Escolha um modelo`,"claudeDesktop.firstParty.bindings.add":`Adicionar vínculo`,"claudeDesktop.firstParty.bindings.remove":`Remover vínculo {id}`,"claudeDesktop.firstParty.bindings.saveFailed":`Não foi possível salvar os vínculos de modelo`,"claudeDesktop.health.lastRequest":`Última requisição`,"claudeDesktop.health.stats":`{count} req / {errors} err`,"claudeDesktop.effort.supported":`esforço`,"claudeDesktop.effort.displayOnly":`esforço (apenas exibição)`,"lab.title":`Laboratório de Compatibilidade`,"lab.subtitle":`Matriz de veredictos de compatibilidade somente leitura, a partir de evidências da projeção do laboratório.`,"lab.loadFailed":`Não foi possível carregar os dados do laboratório de compatibilidade`,"lab.projectionUnavailable":`A projeção do laboratório não está disponível. Execute primeiro a conformidade ou as sondagens ao vivo.`,"lab.projectionIncompatible":`O esquema da projeção do laboratório é incompatível. Reconstrua a projeção.`,"lab.statusTitle":`Status da projeção`,"lab.matrixTitle":`Matriz de compatibilidade`,"lab.verdictsTitle":`Registros de veredicto`,"lab.filter.layer":`Camada de evidência`,"lab.filter.verdict":`Veredicto`,"lab.filter.subject":`ID do assunto`,"lab.filter.all":`Todos`,"lab.col.subject":`Assunto`,"lab.col.layer":`Camada`,"lab.col.suite":`Suíte`,"lab.col.verdict":`Veredicto`,"lab.col.asOf":`Data de referência`,"lab.col.protocol":`Conformidade de protocolo`,"lab.col.live":`Compatibilidade de rota ao vivo`,"lab.col.task":`Eficácia na tarefa`,"lab.empty":`Ainda não há veredictos de compatibilidade na projeção.`,"lab.subjectKind":`Tipo`,"lab.observationCount":`Observações`,"lab.eventCount":`Eventos`,"lab.verdictCount":`Veredictos`,"lab.subjectCount":`Assuntos`,"lab.builtAt":`Gerado em`,"lab.loading":`Carregando evidências de compatibilidade…`,"lab.loadMore":`Carregar mais`,"lab.detailTitle":`Detalhe do veredicto`,"lab.detailClose":`Fechar`,"lab.detailSubject":`Assunto`,"lab.detailObservations":`Observações`,"lab.detailEvents":`Eventos contribuintes`,"lab.detailArtifacts":`Metadados dos artefatos`,"lab.production.title":`Tráfego de produção observado`,"lab.production.notVerification":`Não é verificação do Laboratório`,"lab.production.attempts":`Tentativas`,"lab.production.successes":`Sucessos`,"lab.production.routeErrors":`Erros de rota`,"lab.production.lastObserved":`Última observação`,"lab.detailLoadFailed":`Não foi possível carregar o detalhe do veredicto`,"lab.refresh":`Atualizar`,"lab.verdict.UNKNOWN":`Desconhecido`,"lab.verdict.CLAIMED":`Declarado`,"lab.verdict.PROBED":`Sondado`,"lab.verdict.VERIFIED":`Verificado`,"lab.verdict.DEGRADED":`Degradado`,"lab.verdict.BLOCKED":`Bloqueado`,"lab.verdict.UNSUPPORTED":`Sem suporte`,"lab.layer.protocol_conformance":`Conformidade de protocolo`,"lab.layer.live_route_compatibility":`Compatibilidade de rota ao vivo`,"lab.layer.task_effectiveness":`Eficácia na tarefa`,"models.newPolicyGlobal":`Novos modelos começam desativados`,"models.newPolicyProvider":`Política de novos modelos`,"models.fastProvider":`Modo rápido`,"models.fastProviderHint":`Consome créditos de uso a 2x o preço`,"models.fastEnabled":`Modo rápido ativado`,"models.fastDisabled":`Modo rápido desativado`,"models.fastSaveFailed":`Não foi possível salvar o modo Fast`,"models.newPolicy_inherit":`Herdar`,"models.newPolicy_off":`Desativado`,"models.newPolicy_on":`Ativado`,"models.newBadge":`NOVO`,"models.newCount":`{count} novos, desativados`,"models.aliases":`Aliases`,"models.aliasesTable":`Tabela de aliases`,"models.aliasPrompt":`Alias do provedor (deixe vazio para limpar)`,"models.modelAliasPrompt":`Alias do modelo (deixe vazio para limpar)`,"models.aliasSaved":`Alias salvo`,"models.aliasConflict":`Esse alias conflita com um nome existente`,"models.editProviderAlias":`Editar alias do provedor`,"models.editModelAlias":`Editar alias do modelo`,"models.useDefaultAliases":`Usar aliases padrão`,"models.useDefaultAliasesGlobal":`Usar aliases padrão globalmente`,"models.aliasAuto":`auto`,"models.aliasUser":`usuário`,"models.aliasStale":`obsoleto`,"connection.discovering":`Descobrindo destinos locais e compartilhados…`,"connection.machineUnavailable":`O plano da máquina local está indisponível. As requisições compartilhadas não foram redirecionadas para o local.`,"connection.linkManaged":`Gerenciado pelo Home {home} via Remote Link ({linkId}). Este painel mostra as configurações e a cota do Home somente para leitura; faça as alterações no Home.`,"connection.linkManagedUnnamed":`Gerenciado pelo seu Home via Remote Link ({linkId}). Este painel mostra as configurações e a cota do Home somente para leitura; faça as alterações no Home.`,"connection.disconnect":`Desconectar do hub`,"connection.disconnectConfirm":`Desconectar esta máquina do hub e reiniciá-la no modo standalone?`,"connection.pairing.hub":`Hub`,"connection.pairing.getCode":`Execute este comando no hub para este navegador:`,"connection.pairing.askOperator":`Se outra pessoa opera o hub, envie a ela este comando e peça um código de pareamento de uso único.`,"connection.pairing.notApiKey":`Cole aqui um código de pareamento de uso único. Chaves de API de dados e tokens de administrador não devem ser colocados neste campo.`,"connection.pairing.networkError":`Não foi possível alcançar o hub. Verifique a conexão e tente novamente; seu código continua aqui.`,"connection.pairing.requestError":`O hub não conseguiu concluir a solicitação de pareamento. Verifique o status dele e tente novamente.`,"connection.pairing.responseError":`O hub não retornou uma resposta de pareamento válida. Tente novamente ou entre em contato com o operador.`,"dash.authRequired":`É necessária autenticação do navegador para ver este dashboard.`,"dash.permissionDenied":`Este navegador não tem permissão para ler o dashboard. Verifique as configurações de acesso com o operador do servidor.`,"dash.dataUnavailable":`Não foi possível carregar os dados do dashboard. Verifique a conexão e tente novamente.`,"dash.staleData":`Exibindo os últimos dados recebidos; podem estar desatualizados.`,"connection.pairing.title":`Conectar este dashboard ao hub`,"connection.pairing.body":`Cole o código de pareamento de uso único criado no hub.`,"connection.pairing.relayWarning":`Este código é trocado por meio do relay fixo do hub. O relay não pode ser redirecionado para outro host.`,"connection.pairing.code":`Código de pareamento de uso único`,"connection.pairing.retryValidation":`Tentar validar novamente`,"connection.pairing.validationPending":`O código foi trocado, mas a validação da sessão não pôde ser concluída. Mantenha esta página aberta e escolha Tentar validar novamente; não é necessário um novo código.`,"connection.pairing.submit":`Conectar`,"connection.pairing.submitting":`Conectando…`,"connection.pairing.error":`O hub rejeitou o código. Ele pode ter expirado, já ter sido usado ou ter sido criado para outra origem de navegador. Peça ao operador um novo código para este endereço HTTPS exato.`,"connection.pairing.originDenied":`O hub recusou esta solicitação de pareamento (HTTP 403). Peça ao operador para permitir esta origem de navegador e emitir um código para este endereço HTTPS exato.`,"connection.pairing.cloudflareChallenge":`O Cloudflare interceptou a solicitação de pareamento com uma verificação do navegador. Abra o painel no navegador, conclua a verificação do Cloudflare e tente novamente.`,"connection.pairing.sessionNotAuthorized":`O código foi trocado, mas esta sessão ainda não pode gerenciar o Remote Link. Mantenha a página aberta e peça ao operador do hub um código de pareamento para esta origem de navegador exata.`,"connection.machine.title":`Esta máquina`,"connection.machine.shimHealthy":`O shim do Codex está saudável.`,"connection.machine.shimNeedsAttention":`O shim do Codex precisa de atenção.`,"connection.machine.repairShim":`Reparar shim`,"connection.machine.removeShim":`Remover shim`,"connection.clients.title":`Clientes conectados`,"connection.clients.none":`Nenhum status de cliente disponível`,"connection.clients.sync":`Sincronizar agora`,"connection.clients.syncing":`Sincronizando…`,"connection.sessionLogout":`Encerrar sessão remota`,"connection.sessionLoggingOut":`Encerrando sessão remota…`,"connection.sessionLogoutFailed":`Não foi possível encerrar a sessão remota. A sessão atual foi mantida.`,"usage.source.connected":`Fonte: uso do hub`,"usage.source.local":`Fonte: usage.jsonl local`,"usage.scope.label":`Escopo de uso`,"usage.scope.machine":`Esta máquina`,"usage.scope.hub":`Todo o hub`,"usage.hubOffline":`O uso do hub está indisponível. O uso local não foi usado como substituto.`,"models.displayNameSavedRefreshFailed":`A alteração foi salva, mas não foi possível atualizar a lista de modelos. Tente novamente para atualizá-la.`,"models.displayNameOutcomeUnknown":`A requisição não foi concluída. A alteração pode ter sido salva. Tente novamente para verificar o nome atual antes de fazer outra alteração.`,"models.displayNameCurrentUnavailable":`Nome atual indisponível até a atualização`,"models.displayNameReloaded":`Lista de modelos atualizada`,"models.displayNameAction":`Nome`,"models.displayNameActionLabel":`Editar nome amigável de {model}`,"models.displayNameTitle":`Nome amigável`,"models.displayNameModelId":`ID do modelo`,"models.displayNameCurrent":`Nome atual`,"models.displayNameSourceOperator":`Seu nome`,"models.displayNameSourceProvider":`Nome do provedor`,"models.displayNameSourceFallback":`Fallback para o ID do modelo`,"models.displayNameField":`Nome amigável`,"models.displayNamePlaceholder":`ex.: Grok 4.6`,"models.displayNameHelp":`Altera apenas a apresentação. O roteamento continua {model}.`,"models.displayNameReset":`Redefinir nome`,"models.displayNameSaved":`Nome de exibição salvo`,"models.displayNameResetDone":`Nome de exibição redefinido`,"models.displayNameSaveFailed":`Falha ao salvar o nome de exibição`,"models.displayNameRequired":`Informe um nome amigável ou use Redefinir nome.`,"models.displayNameTooLong":`O nome amigável deve ter no máximo 128 caracteres.`,"models.displayNameNoSlash":`O nome amigável não pode conter /.`,"models.displayNameNoControl":`O nome amigável não pode conter caracteres de controle.`,"pricing.override.action":`Preço`,"pricing.override.actionLabel":`Editar preço de {model}`,"pricing.override.badge":`Preço manual`,"pricing.override.title":`Preço do modelo`,"pricing.override.modelId":`ID do modelo`,"pricing.override.promptTitle":`Preço de prompts longos`,"pricing.override.promptHelp":`Os tokens de entrada e de leitura e gravação do cache determinam a faixa; a requisição inteira é cobrada pelas taxas dessa faixa. Tokens de saída nunca contam. As taxas são de velocidade padrão.`,"pricing.override.help":`USD por 1M de tokens. Informe as taxas de entrada e saída; taxas de cache em branco usam 0. Taxas iguais a 0 são permitidas.`,"pricing.override.input":`Entrada`,"pricing.override.output":`Saída`,"pricing.override.cacheRead":`Leitura de cache`,"pricing.override.cacheWrite":`Escrita de cache`,"pricing.override.modeAutomatic":`Automático`,"pricing.override.modeFlat":`Preço fixo`,"pricing.override.modeCustom":`Limite personalizado`,"pricing.override.modeAutomaticHelp":`Usa as regras do catálogo por tamanho do prompt com os preços básicos acima. Os ajustes Fast e Priority continuam valendo.`,"pricing.override.modeFlatHelp":`Usa os preços básicos acima para qualquer tamanho de prompt, substituindo as regras do catálogo. Os ajustes Fast e Priority continuam valendo.`,"pricing.override.threshold":`Limite do prompt (tokens)`,"pricing.override.bandTitle":`Taxas da faixa de prompts longos`,"pricing.override.bandHelp":`Estas são taxas de velocidade padrão. As regras Fast e Priority do catálogo continuam valendo. Os custos são estimativas.`,"pricing.override.comparison":`Comparação do limite`,"pricing.override.comparisonGt":`Maior que (>)`,"pricing.override.comparisonGte":`Maior ou igual a (≥)`,"pricing.override.modeCustomHelp":`Insira quatro preços absolutos por 1 milhão de tokens. O tamanho do prompt inclui a entrada em cache e exclui a saída. Esses preços substituem a regra do catálogo por tamanho de prompt para toda a solicitação. Os ajustes Fast e Priority continuam valendo. Os custos são estimativas.`,"pricing.override.customInvalid":`Insira um limite positivo de tokens que seja um inteiro seguro e quatro preços finitos de 0 a 1.000.000. Os preços podem ser 0.`,"pricing.override.loading":`Carregando preço salvo…`,"pricing.override.loadFailed":`Não foi possível carregar o preço salvo. Recarregue para tentar de novo.`,"pricing.override.outcomeUnknown":`A requisição não terminou de forma confiável. O preço pode ter mudado. Recarregue o preço salvo antes de editar novamente.`,"pricing.override.recoveryFailed":`Não foi possível recuperar o preço salvo. A edição continua bloqueada; recarregue para tentar de novo.`,"pricing.override.recovered":`Último preço salvo carregado. A requisição anterior ou outro cliente ainda pode alterá-lo.`,"pricing.override.refreshFailed":`O preço foi salvo, mas não foi possível atualizar a lista de modelos. Tente atualizar a lista novamente.`,"pricing.override.invalid":`Informe as taxas de entrada e saída. Cada taxa deve ser um número finito de 0 a 1.000.000.`,"pricing.override.reset":`Voltar ao automático`,"pricing.override.save":`Salvar`,"pricing.override.saving":`Salvando…`,"pricing.override.reload":`Recarregar preço`,"pricing.override.refresh":`Atualizar lista`,"pricing.override.cancel":`Cancelar`,"pricing.override.close":`Fechar`,"usage.range.custom":`Intervalo de datas personalizado`,"usage.range.start":`Início (hora local)`,"usage.range.end":`Fim (hora local)`,"usage.range.apply":`Aplicar`,"usage.range.clear":`Limpar`,"usage.range.help":`Hora local. Inclui o minuto final inteiro.`,"usage.range.required":`Informe a data e hora de início e de fim.`,"usage.range.invalid":`Informe datas e horas locais válidas, a partir de 01/01/1970 UTC.`,"usage.range.reversed":`O fim deve ser igual ou posterior ao início.`,"usage.range.applied":`Intervalo selecionado: {start} – {end} (ambos inclusivos).`,"models.pickerOrder.editorHint":`Reordene os modelos roteados e salve seu rascunho. As linhas em destaque são fixas; modelos nativos não são exibidos.`,"models.pickerOrder.nativeLocked":`Esta ordem salva inclui modelos nativos. Aplique um preset roteado ou Padrão antes de editar o Personalizado.`,"models.pickerOrder.unknownChosen":`As escolhas em destaque são desconhecidas. Recarregue antes de editar.`,"models.pickerOrder.changed":`As configurações do seletor mudaram. Seu rascunho foi mantido; recarregue para descartá-lo e usar as configurações atuais.`,"models.pickerOrder.savedReload":`Ordem salva. Recarregue as configurações atuais antes de editar novamente.`,"models.pickerOrder.requestFailed":`A requisição falhou. Seu rascunho foi mantido; tente novamente ou recarregue.`,"models.pickerOrder.empty":`Nenhum modelo roteado disponível.`,"models.pickerOrder.dragModel":`Arrastar {model}`,"models.pickerOrder.featured":`Em destaque`,"models.pickerOrder.upModel":`Mover {model} para cima`,"models.pickerOrder.downModel":`Mover {model} para baixo`,"models.pickerOrder.position":`{model}: posição {position} de {total}`,"models.pickerOrder.saveDraft":`Salvar rascunho`,"models.pickerOrder.reloadDraft":`Recarregar e descartar rascunho`,"models.pickerOrder.catalogRequired":`As identidades dos modelos estão ausentes ou ambíguas. Recarregue a página Modelos para atualizar o catálogo antes de editar o Personalizado.`,"nav.remote":`Remote Link`,"nav.remoteWorkspace":`Workspace remoto`,"link.title":`Remote Link`,"link.subtitle":`Conecte outro computador com OpenCodex por SSH.`,"link.switch":`Vinculação remota`,"link.switchOffHint":`Ative a vinculação para escolher a função deste computador.`,"link.role.title":`Escolha a função deste computador`,"link.role.hint":`O Home compartilha os provedores deste computador com computadores Child. O Child conecta este computador a um Home quando ele roda no modo standalone.`,"link.role.home":`Home`,"link.role.homeHint":`Gerencie computadores Child a partir deste dashboard.`,"link.role.child":`Child`,"link.role.childHint":`Use a configuração do OpenCodex de outro computador.`,"link.continue":`Continuar`,"link.sessionRequired":`Entre na sessão local do dashboard para gerenciar vínculos.`,"link.workspaceUnavailable":`O Remote Workspace não está disponível nesta instalação.`,"link.loading":`Carregando…`,"link.loadFailed":`Não foi possível carregar o status do Remote Link.`,"link.refresh":`Atualizar`,"link.children":`Computadores Child`,"link.addChild":`Adicionar Child`,"link.sheetTitle":`Adicionar um computador Child`,"link.candidates":`Hosts SSH`,"link.setup.relationship":`O Child usará os provedores OpenCodex deste Home por SSH.`,"link.setup.requirements":`Requer SSH por chave do Home ao Child, OpenCodex 2.66.0+ no Child e macOS ou Linux em ambos os computadores.`,"link.setup.emptyHome":`Os aliases vêm de ~/.ssh/config deste Home. Adicione uma entrada Host e busque novamente, ou informe um alias existente abaixo.`,"link.setup.emptyLocal":`Os aliases vêm de ~/.ssh/config deste computador. Adicione uma entrada Host e busque novamente, ou informe um alias existente abaixo.`,"link.setup.guide":`Guia de configuração do Remote Link`,"link.discoveryFailed":`Não foi possível carregar os hosts SSH`,"link.rescan":`Buscar hosts novamente`,"link.aliasRequired":`Selecione ou informe um alias para habilitar Testar conexão.`,"link.probeHelp":`Confira o motivo acima. Para problemas de acesso SSH, execute isto no terminal deste computador, substituindo <alias> pelo alias SSH, e tente novamente.`,"link.noCandidates":`Nenhum host SSH candidato foi encontrado.`,"link.alias":`Alias do host SSH`,"link.aliasPlaceholder":`Informe um alias da sua configuração SSH`,"link.probe":`Testar conexão`,"link.probing":`Testando conexão…`,"link.hostFingerprint":`Impressão digital da chave do host`,"link.confirmFingerprint":`Reconheço esta chave do host`,"link.confirming":`Confirmando…`,"link.confirm":`Confirmar host`,"link.ocxVersion":`Versão do OpenCodex {version}`,"link.apply":`Conectar Child`,"link.applying":`Conectando…`,"link.retry":`Tentar novamente`,"link.disconnect":`Desconectar`,"link.disconnectConfirm":`Desconectar {alias}? A chave de vínculo dele será revogada.`,"link.close":`Fechar`,"link.cancel":`Cancelar`,"remoteLink.childDisabled":`Vínculos Child só podem ser iniciados a partir de um runtime standalone.`,"remoteLink.findHome.title":`Encontrar Home`,"remoteLink.findHome.body":`Escolha o computador Home ao qual conectar este Child.`,"remoteLink.findHome.action":`Encontrar Home`,"remoteLink.findHome.connect":`Conectar como Child`,"remoteLink.findHome.notice":`Conectar reinicia o OpenCodex neste computador. Os turnos do Codex em andamento terminam primeiro, e novas requisições podem falhar por até um minuto. Depois disso, o Codex mantém o mesmo endereço local, e o Home o atende com os próprios provedores e contas.`,"remoteLink.findHome.empty":`Ainda não conectado a um Home.`,"remoteLink.joining":`Entrando no Home…`,"remoteLink.restart.title":`Este computador será reiniciado para se conectar como Child.`,"remoteLink.restart.body":`Os turnos do Codex em execução terminam primeiro; depois o OpenCodex é reiniciado como Child. Esta página recarrega sozinha quando o Child estiver pronto.`,"remoteLink.restart.waiting":`Aguardando este computador se reconectar como Child…`,"remoteLink.restart.slow":`A reinicialização está demorando mais que o normal. Esta página continua verificando e recarrega sozinha assim que o Child responder. Se o OpenCodex parou, inicie-o novamente.`,"remoteLink.error.standalone_required":`Vínculos Child só podem ser iniciados a partir de um runtime standalone.`,"remoteLink.error.join_tunnel_failed":`Não foi possível iniciar o túnel para o Home. Verifique o acesso SSH e tente novamente.`,"remoteLink.error.admission_failed":`O Home não aceitou o novo vínculo. Verifique se ele está em execução e tente novamente.`,"remoteLink.error.join_issue_failed":`O Home não conseguiu emitir um vínculo. Verifique se o OpenCodex está em execução no Home e tente novamente.`,"remoteLink.error.join_in_progress":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.join_port_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.join_port_mismatch":`O OpenCodex não está rodando na porta configurada, por isso não pode reiniciar como Child. Reinicie o OpenCodex na porta configurada e tente novamente.`,"remoteLink.joinDenied.pairing_required":`Emparelhe este computador primeiro para conectá-lo como Child. Abra o painel deste computador pelo endereço de loopback e insira um código de emparelhamento de uso único criado pelo operador.`,"remoteLink.joinDenied.unavailable":`Não é possível conectar como Child nesta sessão do painel. Atualize o status e verifique as configurações de emparelhamento e de runtime deste computador.`,"remoteLink.error.join_rollback_failed":`A entrada falhou e o vínculo no Home não pôde ser removido. Tente a limpeza novamente ou execute ocx link revoke no Home.`,"remoteLink.error.join_restart_failed":`O vínculo está pronto. Reinicie o OpenCodex neste computador para concluir a conexão como Child.`,"remoteLink.error.join_connect_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"link.noChildren":`Nenhum computador Child conectado.`,"remoteLink.status.connecting":`Conectando`,"remoteLink.status.connected":`Conectado`,"remoteLink.status.reconnecting":`Reconectando`,"remoteLink.status.failed":`A conexão precisa de atenção`,"remoteLink.status.idle":`Ocioso`,"remoteLink.role.standalone":`Independente`,"remoteLink.role.home":`Home`,"remoteLink.role.child":`Child`,"remoteLink.direction.hub":`Iniciado pelo hub`,"remoteLink.direction.client":`Iniciado pelo cliente`,"remoteLink.error.admission_timeout":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.compensation_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.fingerprint_failed":`Não foi possível ler a chave do host SSH. Teste a conexão novamente.`,"remoteLink.error.forbidden":`Esta sessão do dashboard não pode gerenciar vínculos remotos. Abra o dashboard neste computador (instalação standalone) ou use uma sessão de Hub pareada.`,"remoteLink.error.host_confirmation_expired":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.host_fingerprint_mismatch":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.host_not_confirmed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.invalid_alias":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.invalid_body":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.invalid_link_id":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.key_issue_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.key_revoke_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_apply_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_exists":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_not_found":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_remove_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_unavailable":`O Remote Link não está disponível neste runtime. Reinicie o OpenCodex e tente novamente.`,"remoteLink.error.listener_unavailable":`O listener do Remote Link não pôde ser iniciado neste computador. Verifique se há conflito de porta e tente novamente.`,"remoteLink.error.probe_failed":`Não foi possível conectar ao host SSH. Verifique se ele aceita sua chave SSH e se o auxiliar de ProxyCommand está instalado.`,"remoteLink.error.remote_connect_failed":`O computador remoto não conseguiu se conectar a este Home. Verifique o serviço OpenCodex dele e tente novamente.`,"remoteLink.error.remote_disconnect_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.remote_ocx_missing":`O ocx não foi encontrado no computador remoto. Instale o OpenCodex lá ou garanta que o ocx esteja no PATH das sessões SSH não interativas.`,"remoteLink.error.remote_ocx_outdated":`O OpenCodex no computador remoto é antigo demais para o Remote Link. Execute ocx update lá (2.66.0 ou posterior) e tente novamente.`,"remoteLink.error.remote_ocx_unrecognized":`O computador remoto não informou uma versão do OpenCodex. O Remote Link exige o OpenCodex 2.66.0 ou posterior no macOS ou Linux.`,"remoteLink.error.remote_port_failed":`O computador remoto não conseguiu informar a porta de vínculo. Verifique se o OpenCodex 2.66.0 ou posterior está em execução lá e tente novamente.`,"remoteLink.error.tailscale_session_refused":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.version_probe_failed":`Não foi possível executar o ocx no computador remoto por SSH. Verifique o acesso SSH e tente novamente.`,"remoteLink.error.generic":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.reason.auth":`Falha na autenticação.`,"remoteLink.reason.hostkey":`Não foi possível verificar a chave do host.`,"remoteLink.reason.forward":`Falha no encaminhamento de porta.`,"remoteLink.reason.timeout":`A conexão expirou.`,"remoteLink.reason.bind":`Não foi possível associar a porta local.`,"remoteLink.reason.persist":`Não foi possível salvar o estado do vínculo.`,"remoteLink.reason.compensation_failed":`A limpeza após a vinculação falhou.`,"remoteLink.reason.staleTunnel":`Um túnel obsoleto ainda pode estar mantendo a porta.`,"remoteLink.reason.generic":`Motivo:`,"remoteLink.workspaceMoved.title":`O Remote Workspace agora tem página própria`,"remoteLink.workspaceMoved.body":`Use a página separada do Remote Workspace.`,"remoteLink.workspaceMoved.open":`Abrir Remote Workspace`,"remoteLink.forceRemove.title":`Esta máquina não conseguiu alcançar {alias}`,"remoteLink.forceRemove.body":`Remover o vínculo somente nesta máquina? Depois, execute {cmd} você mesmo em {alias}.`,"remoteLink.forceRemove.confirm":`Remover somente aqui`,"remote.title":`Workspace remoto`,"remote.subtitle":`Execute Codex, Claude Code ou Pi a partir deste Hub enquanto arquivos, comandos, testes e builds permanecem no computador selecionado.`,"remote.loading":`Carregando Remote Workspace…`,"remote.loadFailed":`Não foi possível carregar o Remote Workspace.`,"remote.hubRequired":`Use o modo Hub e inicie o Hub com OCX_REMOTE_WORKSPACE_ENABLED=1 para ativar o Remote Workspace.`,"remote.refresh":`Atualizar`,"remote.addComputer":`Adicionar um computador`,"remote.addComputerHint":`Aprove uma ou mais pastas localmente e mantenha o executor exclusivo do OCX conectado a este Hub.`,"remote.createPairing":`Criar código de pareamento`,"remote.pairingCode":`Código de pareamento de uso único`,"remote.pairingExpires":`Expira às {time}`,"remote.pairingCommand":`Execute no computador que você está adicionando`,"remote.pairingCommandPosix":`Terminal Linux / macOS`,"remote.pairingCommandWindows":`Windows PowerShell`,"remote.copyCommand":`Copiar comando`,"remote.copied":`Copiado`,"remote.devices":`Computadores`,"remote.noDevices":`Nenhum computador pareado ainda.`,"remote.online":`Online`,"remote.offline":`Offline`,"remote.revoke":`Revogar computador`,"remote.revokeConfirm":`Revogar {name}? As sessões ativas neste computador serão interrompidas.`,"remote.newSession":`Nova sessão remota`,"remote.device":`Computador`,"remote.folder":`Pasta do workspace`,"remote.runtime":`Agente de código`,"remote.access":`Acesso ao workspace`,"remote.access.readOnly":`Somente leitura`,"remote.access.workspace":`Editar arquivos e executar comandos`,"remote.access.workspaceFilesOnly":`Somente editar arquivos`,"remote.unavailable":`Indisponível`,"remote.capability.full":`Arquivos + comandos em sandbox`,"remote.capability.files":`Somente ferramentas de arquivo`,"remote.runsOnHub":`O modelo e o login permanecem neste Hub`,"remote.runsReadOnly":`Os arquivos só podem ser lidos neste computador`,"remote.runsFilesCommands":`Arquivos, builds e comandos são executados aqui`,"remote.runsFilesOnly":`As ferramentas de arquivo rodam aqui; sandbox de comandos indisponível`,"remote.execUnavailable":`Este computador pode editar arquivos, mas builds e comandos de terminal estão desativados porque não há um sandbox de SO compatível.`,"remote.notResumable":`Esta sessão parou antes de o agente de código criar um histórico durável. Inicie uma nova sessão remota.`,"remote.startSession":`Iniciar sessão remota`,"remote.sessionStarted":`A sessão remota está pronta.`,"remote.split.hint":`Arraste uma sessão para a borda de um painel para dividir a visualização.`,"remote.split.right":`Dividir à direita`,"remote.split.down":`Dividir abaixo`,"remote.split.close":`Fechar painel`,"remote.split.resize":`Redimensionar painéis`,"remote.split.limit":`Até quatro sessões podem ser exibidas ao mesmo tempo.`,"remote.split.left":`Dividir à esquerda`,"remote.split.up":`Dividir acima`,"remote.split.open":`Abrir sessão`,"remote.split.title":`Visualização dividida`,"remote.sessions":`Sessões`,"remote.noSessions":`Escolha um computador online, uma pasta e um agente de código para começar.`,"remote.events":`Atividade da sessão remota`,"remote.noEvents":`Nenhuma atividade ainda.`,"remote.prompt":`Mensagem`,"remote.promptPlaceholder":`Peça ao agente do Hub para trabalhar dentro da pasta remota selecionada…`,"remote.send":`Enviar`,"remote.stop":`Parar sessão`,"remote.requestFailed":`A requisição do Remote Workspace falhou.`,"remote.submissionUnknown":`O status do envio é desconhecido. Verifique a sessão antes de enviar novamente.`,"remote.status.starting":`Iniciando`,"remote.status.ready":`Pronto`,"remote.status.running":`Em execução`,"remote.status.waiting":`Executor offline`,"remote.status.failed":`Falhou`,"remote.status.stopped":`Parado`,"remote.event.status":`Status`,"remote.event.tool":`Ferramenta remota`,"remote.event.error":`Erro`,"quotaSummary.aria":`Resumo de cota dos provedores`,"quotaSummary.updated":`Atualizado {time}`,"quotaSummary.dataAt":`Dados de {time}`,"quotaSummary.observedAt":`Observado em {time}`,"quotaSummary.warn":`70%+ usado`,"quotaSummary.critical":`90%+ usado`,"quotaSummary.credits":`Créditos`,"quotaSummary.refreshFailed":`A última atualização falhou; exibindo a leitura anterior`,"quotaSummary.scrollPrev":`Rolar provedores para a esquerda`,"quotaSummary.scrollNext":`Rolar provedores para a direita`,"quotaSummary.openAccounts":`Abrir gerenciamento de contas`,"pws.protocol.title":`Wire upstream`,"pws.protocol.note":`O formato de API que o opencodex usa para falar com este provedor. Ele não ativa nem desativa nenhuma API de cliente; a página de API controla isso.`,"pws.protocol.adapterLabel":`Wire upstream que este provedor recebe`,"pws.protocol.source":`Definido por`,"pws.protocol.source.hardPin":`Fixado pelo opencodex para este modelo`,"pws.protocol.source.operator":`Sua configuração`,"pws.protocol.source.registry":`Catálogo de provedores`,"pws.protocol.source.providerDefault":`Padrão do provedor`,"pws.protocol.pending":`Depois de salvar, este provedor receberá {adapter}.`,"pws.protocol.overrides":`Modelos em outro wire`,"pws.protocol.noOverrides":`Todos os modelos usam o wire do provedor.`,"pws.protocol.overridesTruncated":`Exibindo os primeiros {count} modelos.`,"pws.protocol.col.model":`Modelo`,"pws.protocol.col.wire":`Wire`,"pws.protocol.col.source":`Definido por`,"pws.protocol.loadFailed":`Não foi possível carregar o wire upstream.`,"compatProtocol.filter.inbound":`API do cliente`,"compatProtocol.filter.upstream":`Wire upstream`,"compatProtocol.anyProtocol":`qualquer`,"compatProtocol.pair":`{inbound} → {upstream}`,"compatProtocol.loading":`Lendo o par de protocolos de cada subject…`,"compatProtocol.unverified":`Ainda não há evidência do Lab para {pair}. O par não foi verificado, não que tenha falhado.`,"compatProtocol.unresolved":`Não foi possível ler o par de protocolos de {count} subjects; eles ficam fora deste filtro.`,"compatProtocol.axisNote":`Estes são apenas veredictos do Lab. A forma como uma requisição é entregue (nativa ou traduzida) é mostrada na prévia do caminho da requisição, na página de API.`,"protocolLinks.labEvidence":`Evidência do Lab para este par`,"protocolLinks.providerSettings":`Configurações do provedor`,"cws.plan.title":`Caminhos candidatos`,"cws.plan.description":`Pergunta ao proxy como cada destino carregaria uma requisição com todos os recursos que a API do cliente consegue expressar, e quais recursos todos os destinos preservam. Nada é enviado ao upstream.`,"cws.plan.run":`Mostrar caminhos candidatos`,"cws.plan.savedOnly":`Mostra o combo salvo. Salve suas alterações para visualizá-las.`},le={en:{"lab.title":`Compatibility Lab`,"lab.subtitle":`Read-only compatibility verdict matrix from lab projection evidence.`,"lab.loadFailed":`Could not load compatibility lab data`,"lab.projectionUnavailable":`Lab projection is not available. Run conformance or live probes first.`,"lab.projectionIncompatible":`Lab projection schema is incompatible. Rebuild the projection.`,"lab.statusTitle":`Projection status`,"lab.matrixTitle":`Compatibility matrix`,"lab.verdictsTitle":`Verdict records`,"lab.filter.layer":`Evidence layer`,"lab.filter.verdict":`Verdict`,"lab.filter.subject":`Subject ID`,"lab.filter.all":`All`,"lab.col.subject":`Subject`,"lab.col.layer":`Layer`,"lab.col.suite":`Suite`,"lab.col.verdict":`Verdict`,"lab.col.asOf":`As of`,"lab.col.protocol":`Protocol conformance`,"lab.col.live":`Live route compatibility`,"lab.col.task":`Task effectiveness`,"lab.empty":`No compatibility verdicts in the projection yet.`,"lab.subjectKind":`Kind`,"lab.observationCount":`Observations`,"lab.eventCount":`Events`,"lab.verdictCount":`Verdicts`,"lab.subjectCount":`Subjects`,"lab.builtAt":`Built`,"lab.loading":`Loading compatibility evidence…`,"lab.loadMore":`Load more`,"lab.detailTitle":`Verdict detail`,"lab.detailClose":`Close`,"lab.detailSubject":`Subject`,"lab.detailObservations":`Observations`,"lab.detailEvents":`Evidence events`,"lab.detailArtifacts":`Artifact metadata`,"lab.detailLoadFailed":`Could not load verdict detail`,"lab.refresh":`Refresh`,"lab.verdict.UNKNOWN":`Unknown`,"lab.verdict.CLAIMED":`Claimed`,"lab.verdict.PROBED":`Probed`,"lab.verdict.VERIFIED":`Verified`,"lab.verdict.DEGRADED":`Degraded`,"lab.verdict.BLOCKED":`Blocked`,"lab.verdict.UNSUPPORTED":`Unsupported`,"lab.layer.protocol_conformance":`Protocol conformance`,"lab.layer.live_route_compatibility":`Live route compatibility`,"lab.layer.task_effectiveness":`Task effectiveness`},de:{"lab.title":`Kompatibilitäts-Labor`,"lab.subtitle":`Schreibgeschützte Kompatibilitätsmatrix aus den Evidenzen der Lab-Projektion.`,"lab.loadFailed":`Kompatibilitätsdaten konnten nicht geladen werden`,"lab.projectionUnavailable":`Die Lab-Projektion ist nicht verfügbar. Führe zuerst Konformitäts- oder Live-Probes aus.`,"lab.projectionIncompatible":`Das Schema der Lab-Projektion ist inkompatibel. Baue die Projektion neu auf.`,"lab.statusTitle":`Projektionsstatus`,"lab.matrixTitle":`Kompatibilitätsmatrix`,"lab.verdictsTitle":`Urteilsdatensätze`,"lab.filter.layer":`Evidenzschicht`,"lab.filter.verdict":`Urteil`,"lab.filter.subject":`Subjekt-ID`,"lab.filter.all":`Alle`,"lab.col.subject":`Subjekt`,"lab.col.layer":`Schicht`,"lab.col.suite":`Suite`,"lab.col.verdict":`Urteil`,"lab.col.asOf":`Stand`,"lab.col.protocol":`Protokollkonformität`,"lab.col.live":`Live-Route-Kompatibilität`,"lab.col.task":`Aufgabenwirksamkeit`,"lab.empty":`In der Projektion gibt es noch keine Kompatibilitätsurteile.`,"lab.subjectKind":`Art`,"lab.observationCount":`Beobachtungen`,"lab.eventCount":`Ereignisse`,"lab.verdictCount":`Urteile`,"lab.subjectCount":`Subjekte`,"lab.builtAt":`Erstellt`,"lab.loading":`Kompatibilitätsevidenz wird geladen…`,"lab.loadMore":`Mehr laden`,"lab.detailTitle":`Urteilsdetails`,"lab.detailClose":`Schließen`,"lab.detailSubject":`Subjekt`,"lab.detailObservations":`Beobachtungen`,"lab.detailEvents":`Evidenzereignisse`,"lab.detailArtifacts":`Artefakt-Metadaten`,"lab.detailLoadFailed":`Urteilsdetails konnten nicht geladen werden`,"lab.refresh":`Aktualisieren`,"lab.verdict.UNKNOWN":`Unbekannt`,"lab.verdict.CLAIMED":`Behauptet`,"lab.verdict.PROBED":`Geprüft`,"lab.verdict.VERIFIED":`Verifiziert`,"lab.verdict.DEGRADED":`Eingeschränkt`,"lab.verdict.BLOCKED":`Blockiert`,"lab.verdict.UNSUPPORTED":`Nicht unterstützt`,"lab.layer.protocol_conformance":`Protokollkonformität`,"lab.layer.live_route_compatibility":`Live-Route-Kompatibilität`,"lab.layer.task_effectiveness":`Aufgabenwirksamkeit`},fr:{"lab.title":`Laboratoire de compatibilité`,"lab.subtitle":`Matrice en lecture seule des verdicts de compatibilité fondée sur les preuves de la projection du laboratoire.`,"lab.loadFailed":`Impossible de charger les données du laboratoire de compatibilité`,"lab.projectionUnavailable":`La projection du laboratoire n’est pas disponible. Exécutez d’abord les sondes de conformité ou en conditions réelles.`,"lab.projectionIncompatible":`Le schéma de la projection du laboratoire est incompatible. Reconstruisez la projection.`,"lab.statusTitle":`État de la projection`,"lab.matrixTitle":`Matrice de compatibilité`,"lab.verdictsTitle":`Enregistrements des verdicts`,"lab.filter.layer":`Couche de preuves`,"lab.filter.verdict":`Verdict`,"lab.filter.subject":`ID du sujet`,"lab.filter.all":`Tous`,"lab.col.subject":`Sujet`,"lab.col.layer":`Couche`,"lab.col.suite":`Suite`,"lab.col.verdict":`Verdict`,"lab.col.asOf":`Établi le`,"lab.col.protocol":`Conformité au protocole`,"lab.col.live":`Compatibilité du routage en conditions réelles`,"lab.col.task":`Efficacité des tâches`,"lab.empty":`La projection ne contient encore aucun verdict de compatibilité.`,"lab.subjectKind":`Type`,"lab.observationCount":`Observations`,"lab.eventCount":`Événements`,"lab.verdictCount":`Verdicts`,"lab.subjectCount":`Sujets`,"lab.builtAt":`Générée le`,"lab.loading":`Chargement des preuves de compatibilité…`,"lab.loadMore":`Charger plus`,"lab.detailTitle":`Détails du verdict`,"lab.detailClose":`Fermer`,"lab.detailSubject":`Sujet`,"lab.detailObservations":`Observations`,"lab.detailEvents":`Événements probants`,"lab.detailArtifacts":`Métadonnées des artefacts`,"lab.detailLoadFailed":`Impossible de charger les détails du verdict`,"lab.refresh":`Actualiser`,"lab.verdict.UNKNOWN":`Inconnu`,"lab.verdict.CLAIMED":`Déclaré`,"lab.verdict.PROBED":`Sondé`,"lab.verdict.VERIFIED":`Vérifié`,"lab.verdict.DEGRADED":`Dégradé`,"lab.verdict.BLOCKED":`Bloqué`,"lab.verdict.UNSUPPORTED":`Non pris en charge`,"lab.layer.protocol_conformance":`Conformité au protocole`,"lab.layer.live_route_compatibility":`Compatibilité du routage en conditions réelles`,"lab.layer.task_effectiveness":`Efficacité des tâches`},ko:{"lab.title":`호환성 랩`,"lab.subtitle":`랩 프로젝션 증거를 기반으로 한 읽기 전용 호환성 판정 매트릭스입니다.`,"lab.loadFailed":`호환성 랩 데이터를 불러오지 못했습니다`,"lab.projectionUnavailable":`랩 프로젝션을 사용할 수 없습니다. 먼저 적합성 또는 라이브 프로브를 실행하세요.`,"lab.projectionIncompatible":`랩 프로젝션 스키마가 호환되지 않습니다. 프로젝션을 다시 빌드하세요.`,"lab.statusTitle":`프로젝션 상태`,"lab.matrixTitle":`호환성 매트릭스`,"lab.verdictsTitle":`판정 레코드`,"lab.filter.layer":`증거 레이어`,"lab.filter.verdict":`판정`,"lab.filter.subject":`대상 ID`,"lab.filter.all":`전체`,"lab.col.subject":`대상`,"lab.col.layer":`레이어`,"lab.col.suite":`스위트`,"lab.col.verdict":`판정`,"lab.col.asOf":`기준 시각`,"lab.col.protocol":`프로토콜 적합성`,"lab.col.live":`라이브 경로 호환성`,"lab.col.task":`작업 효과성`,"lab.empty":`프로젝션에 아직 호환성 판정이 없습니다.`,"lab.subjectKind":`종류`,"lab.observationCount":`관측`,"lab.eventCount":`이벤트`,"lab.verdictCount":`판정`,"lab.subjectCount":`대상`,"lab.builtAt":`빌드 시각`,"lab.loading":`호환성 증거를 불러오는 중…`,"lab.loadMore":`더 불러오기`,"lab.detailTitle":`판정 상세`,"lab.detailClose":`닫기`,"lab.detailSubject":`대상`,"lab.detailObservations":`관측`,"lab.detailEvents":`증거 이벤트`,"lab.detailArtifacts":`아티팩트 메타데이터`,"lab.detailLoadFailed":`판정 상세를 불러오지 못했습니다`,"lab.refresh":`새로고침`,"lab.verdict.UNKNOWN":`알 수 없음`,"lab.verdict.CLAIMED":`주장됨`,"lab.verdict.PROBED":`프로브됨`,"lab.verdict.VERIFIED":`검증됨`,"lab.verdict.DEGRADED":`저하됨`,"lab.verdict.BLOCKED":`차단됨`,"lab.verdict.UNSUPPORTED":`지원되지 않음`,"lab.layer.protocol_conformance":`프로토콜 적합성`,"lab.layer.live_route_compatibility":`라이브 경로 호환성`,"lab.layer.task_effectiveness":`작업 효과성`},zh:{"lab.title":`兼容性实验室`,"lab.subtitle":`基于实验室投影证据的只读兼容性判定矩阵。`,"lab.loadFailed":`无法加载兼容性实验室数据`,"lab.projectionUnavailable":`实验室投影不可用。请先运行一致性探测或实时探测。`,"lab.projectionIncompatible":`实验室投影架构不兼容。请重新构建投影。`,"lab.statusTitle":`投影状态`,"lab.matrixTitle":`兼容性矩阵`,"lab.verdictsTitle":`判定记录`,"lab.filter.layer":`证据层`,"lab.filter.verdict":`判定`,"lab.filter.subject":`主体 ID`,"lab.filter.all":`全部`,"lab.col.subject":`主体`,"lab.col.layer":`层`,"lab.col.suite":`测试套件`,"lab.col.verdict":`判定`,"lab.col.asOf":`截至`,"lab.col.protocol":`协议一致性`,"lab.col.live":`实时路由兼容性`,"lab.col.task":`任务有效性`,"lab.empty":`投影中还没有兼容性判定。`,"lab.subjectKind":`类型`,"lab.observationCount":`观测`,"lab.eventCount":`事件`,"lab.verdictCount":`判定`,"lab.subjectCount":`主体`,"lab.builtAt":`构建时间`,"lab.loading":`正在加载兼容性证据…`,"lab.loadMore":`加载更多`,"lab.detailTitle":`判定详情`,"lab.detailClose":`关闭`,"lab.detailSubject":`主体`,"lab.detailObservations":`观测`,"lab.detailEvents":`证据事件`,"lab.detailArtifacts":`制品元数据`,"lab.detailLoadFailed":`无法加载判定详情`,"lab.refresh":`刷新`,"lab.verdict.UNKNOWN":`未知`,"lab.verdict.CLAIMED":`已声明`,"lab.verdict.PROBED":`已探测`,"lab.verdict.VERIFIED":`已验证`,"lab.verdict.DEGRADED":`降级`,"lab.verdict.BLOCKED":`已阻止`,"lab.verdict.UNSUPPORTED":`不支持`,"lab.layer.protocol_conformance":`协议一致性`,"lab.layer.live_route_compatibility":`实时路由兼容性`,"lab.layer.task_effectiveness":`任务有效性`},"zh-TW":{"lab.title":`相容性實驗室`,"lab.subtitle":`基於實驗室投影證據的唯讀相容性判定矩陣。`,"lab.loadFailed":`無法載入相容性實驗室資料`,"lab.projectionUnavailable":`實驗室投影不可用。請先執行一致性探測或即時探測。`,"lab.projectionIncompatible":`實驗室投影架構不相容。請重新建置投影。`,"lab.statusTitle":`投影狀態`,"lab.matrixTitle":`相容性矩陣`,"lab.verdictsTitle":`判定記錄`,"lab.filter.layer":`證據層`,"lab.filter.verdict":`判定`,"lab.filter.subject":`主體 ID`,"lab.filter.all":`全部`,"lab.col.subject":`主體`,"lab.col.layer":`層`,"lab.col.suite":`測試套件`,"lab.col.verdict":`判定`,"lab.col.asOf":`截至`,"lab.col.protocol":`協定一致性`,"lab.col.live":`即時路由相容性`,"lab.col.task":`任務有效性`,"lab.empty":`投影中還沒有相容性判定。`,"lab.subjectKind":`類型`,"lab.observationCount":`觀測`,"lab.eventCount":`事件`,"lab.verdictCount":`判定`,"lab.subjectCount":`主體`,"lab.builtAt":`建置時間`,"lab.loading":`正在載入相容性證據…`,"lab.loadMore":`載入更多`,"lab.detailTitle":`判定詳情`,"lab.detailClose":`關閉`,"lab.detailSubject":`主體`,"lab.detailObservations":`觀測`,"lab.detailEvents":`證據事件`,"lab.detailArtifacts":`產物中繼資料`,"lab.detailLoadFailed":`無法載入判定詳情`,"lab.refresh":`重新整理`,"lab.verdict.UNKNOWN":`未知`,"lab.verdict.CLAIMED":`已聲明`,"lab.verdict.PROBED":`已探測`,"lab.verdict.VERIFIED":`已驗證`,"lab.verdict.DEGRADED":`降級`,"lab.verdict.BLOCKED":`已封鎖`,"lab.verdict.UNSUPPORTED":`不支援`,"lab.layer.protocol_conformance":`協定一致性`,"lab.layer.live_route_compatibility":`即時路由相容性`,"lab.layer.task_effectiveness":`任務有效性`},ru:{"lab.title":`Лаборатория совместимости`,"lab.subtitle":`Матрица вердиктов совместимости только для чтения на основе данных проекции лаборатории.`,"lab.loadFailed":`Не удалось загрузить данные лаборатории совместимости`,"lab.projectionUnavailable":`Проекция лаборатории недоступна. Сначала выполните проверки соответствия или live-проверки.`,"lab.projectionIncompatible":`Схема проекции лаборатории несовместима. Перестройте проекцию.`,"lab.statusTitle":`Состояние проекции`,"lab.matrixTitle":`Матрица совместимости`,"lab.verdictsTitle":`Записи вердиктов`,"lab.filter.layer":`Слой доказательств`,"lab.filter.verdict":`Вердикт`,"lab.filter.subject":`ID субъекта`,"lab.filter.all":`Все`,"lab.col.subject":`Субъект`,"lab.col.layer":`Слой`,"lab.col.suite":`Набор`,"lab.col.verdict":`Вердикт`,"lab.col.asOf":`По состоянию на`,"lab.col.protocol":`Соответствие протоколу`,"lab.col.live":`Совместимость live-маршрута`,"lab.col.task":`Эффективность задач`,"lab.empty":`В проекции пока нет вердиктов совместимости.`,"lab.subjectKind":`Тип`,"lab.observationCount":`Наблюдения`,"lab.eventCount":`События`,"lab.verdictCount":`Вердикты`,"lab.subjectCount":`Субъекты`,"lab.builtAt":`Собрано`,"lab.loading":`Загрузка доказательств совместимости…`,"lab.loadMore":`Загрузить ещё`,"lab.detailTitle":`Детали вердикта`,"lab.detailClose":`Закрыть`,"lab.detailSubject":`Субъект`,"lab.detailObservations":`Наблюдения`,"lab.detailEvents":`События доказательств`,"lab.detailArtifacts":`Метаданные артефактов`,"lab.detailLoadFailed":`Не удалось загрузить детали вердикта`,"lab.refresh":`Обновить`,"lab.verdict.UNKNOWN":`Неизвестно`,"lab.verdict.CLAIMED":`Заявлено`,"lab.verdict.PROBED":`Проверено пробой`,"lab.verdict.VERIFIED":`Подтверждено`,"lab.verdict.DEGRADED":`Ограничено`,"lab.verdict.BLOCKED":`Заблокировано`,"lab.verdict.UNSUPPORTED":`Не поддерживается`,"lab.layer.protocol_conformance":`Соответствие протоколу`,"lab.layer.live_route_compatibility":`Совместимость live-маршрута`,"lab.layer.task_effectiveness":`Эффективность задач`},ja:{"lab.title":`互換性ラボ`,"lab.subtitle":`ラボ投影の証拠に基づく読み取り専用の互換性判定マトリクスです。`,"lab.loadFailed":`互換性ラボのデータを読み込めませんでした`,"lab.projectionUnavailable":`ラボ投影を利用できません。先に適合性プローブまたはライブプローブを実行してください。`,"lab.projectionIncompatible":`ラボ投影のスキーマに互換性がありません。投影を再構築してください。`,"lab.statusTitle":`投影ステータス`,"lab.matrixTitle":`互換性マトリクス`,"lab.verdictsTitle":`判定レコード`,"lab.filter.layer":`証拠レイヤー`,"lab.filter.verdict":`判定`,"lab.filter.subject":`サブジェクト ID`,"lab.filter.all":`すべて`,"lab.col.subject":`サブジェクト`,"lab.col.layer":`レイヤー`,"lab.col.suite":`スイート`,"lab.col.verdict":`判定`,"lab.col.asOf":`時点`,"lab.col.protocol":`プロトコル適合性`,"lab.col.live":`ライブ経路互換性`,"lab.col.task":`タスク有効性`,"lab.empty":`投影にはまだ互換性判定がありません。`,"lab.subjectKind":`種類`,"lab.observationCount":`観測`,"lab.eventCount":`イベント`,"lab.verdictCount":`判定`,"lab.subjectCount":`サブジェクト`,"lab.builtAt":`構築日時`,"lab.loading":`互換性の証拠を読み込み中…`,"lab.loadMore":`さらに読み込む`,"lab.detailTitle":`判定の詳細`,"lab.detailClose":`閉じる`,"lab.detailSubject":`サブジェクト`,"lab.detailObservations":`観測`,"lab.detailEvents":`証拠イベント`,"lab.detailArtifacts":`アーティファクトのメタデータ`,"lab.detailLoadFailed":`判定の詳細を読み込めませんでした`,"lab.refresh":`更新`,"lab.verdict.UNKNOWN":`不明`,"lab.verdict.CLAIMED":`申告済み`,"lab.verdict.PROBED":`プローブ済み`,"lab.verdict.VERIFIED":`検証済み`,"lab.verdict.DEGRADED":`低下`,"lab.verdict.BLOCKED":`ブロック`,"lab.verdict.UNSUPPORTED":`未対応`,"lab.layer.protocol_conformance":`プロトコル適合性`,"lab.layer.live_route_compatibility":`ライブ経路互換性`,"lab.layer.task_effectiveness":`タスク有効性`},tr:{"lab.title":`Uyumluluk Laboratuvarı`,"lab.subtitle":`Laboratuvar projeksiyonu kanıtlarından oluşturulan salt okunur uyumluluk karar matrisi.`,"lab.loadFailed":`Uyumluluk laboratuvarı verileri yüklenemedi`,"lab.projectionUnavailable":`Laboratuvar projeksiyonu kullanılamıyor. Önce uygunluk veya canlı probları çalıştırın.`,"lab.projectionIncompatible":`Laboratuvar projeksiyonu şeması uyumsuz. Projeksiyonu yeniden oluşturun.`,"lab.statusTitle":`Projeksiyon durumu`,"lab.matrixTitle":`Uyumluluk matrisi`,"lab.verdictsTitle":`Karar kayıtları`,"lab.filter.layer":`Kanıt katmanı`,"lab.filter.verdict":`Karar`,"lab.filter.subject":`Özne kimliği`,"lab.filter.all":`Tümü`,"lab.col.subject":`Özne`,"lab.col.layer":`Katman`,"lab.col.suite":`Paket`,"lab.col.verdict":`Karar`,"lab.col.asOf":`Tarih`,"lab.col.protocol":`Protokol uygunluğu`,"lab.col.live":`Canlı rota uyumluluğu`,"lab.col.task":`Görev etkinliği`,"lab.empty":`Projeksiyonda henüz uyumluluk kararı yok.`,"lab.subjectKind":`Tür`,"lab.observationCount":`Gözlemler`,"lab.eventCount":`Olaylar`,"lab.verdictCount":`Kararlar`,"lab.subjectCount":`Özneler`,"lab.builtAt":`Oluşturulma`,"lab.loading":`Uyumluluk kanıtları yükleniyor…`,"lab.loadMore":`Daha fazla yükle`,"lab.detailTitle":`Karar ayrıntısı`,"lab.detailClose":`Kapat`,"lab.detailSubject":`Özne`,"lab.detailObservations":`Gözlemler`,"lab.detailEvents":`Kanıt olayları`,"lab.detailArtifacts":`Artefakt meta verileri`,"lab.detailLoadFailed":`Karar ayrıntısı yüklenemedi`,"lab.refresh":`Yenile`,"lab.verdict.UNKNOWN":`Bilinmiyor`,"lab.verdict.CLAIMED":`İddia edildi`,"lab.verdict.PROBED":`Problandı`,"lab.verdict.VERIFIED":`Doğrulandı`,"lab.verdict.DEGRADED":`Kısıtlı`,"lab.verdict.BLOCKED":`Engellendi`,"lab.verdict.UNSUPPORTED":`Desteklenmiyor`,"lab.layer.protocol_conformance":`Protokol uygunluğu`,"lab.layer.live_route_compatibility":`Canlı rota uyumluluğu`,"lab.layer.task_effectiveness":`Görev etkinliği`},vi:{"lab.title":`Phòng thí nghiệm tương thích`,"lab.subtitle":`Ma trận kết quả tương thích chỉ đọc từ bằng chứng phép chiếu của phòng thí nghiệm.`,"lab.loadFailed":`Không thể tải dữ liệu phòng thí nghiệm tương thích`,"lab.projectionUnavailable":`Phép chiếu của phòng thí nghiệm không khả dụng. Hãy chạy kiểm tra tuân thủ hoặc đầu dò trực tiếp trước.`,"lab.projectionIncompatible":`Lược đồ phép chiếu của phòng thí nghiệm không tương thích. Hãy xây dựng lại phép chiếu.`,"lab.statusTitle":`Trạng thái phép chiếu`,"lab.matrixTitle":`Ma trận tương thích`,"lab.verdictsTitle":`Bản ghi kết quả`,"lab.filter.layer":`Lớp bằng chứng`,"lab.filter.verdict":`Kết quả`,"lab.filter.subject":`ID Chủ đề`,"lab.filter.all":`Tất cả`,"lab.col.subject":`Chủ đề`,"lab.col.layer":`Lớp`,"lab.col.suite":`Bộ kiểm thử`,"lab.col.verdict":`Kết quả`,"lab.col.asOf":`Tính đến`,"lab.col.protocol":`Tuân thủ giao thức`,"lab.col.live":`Tương thích tuyến trực tiếp`,"lab.col.task":`Hiệu quả tác vụ`,"lab.empty":`Chưa có kết quả tương thích nào trong phép chiếu.`,"lab.subjectKind":`Loại`,"lab.observationCount":`Số quan sát`,"lab.eventCount":`Số sự kiện`,"lab.verdictCount":`Số kết quả`,"lab.subjectCount":`Số đối tượng`,"lab.builtAt":`Thời điểm xây dựng`,"lab.loading":`Đang tải bằng chứng tương thích…`,"lab.loadMore":`Tải thêm`,"lab.detailTitle":`Chi tiết kết quả`,"lab.detailClose":`Đóng`,"lab.detailSubject":`Chủ đề`,"lab.detailObservations":`Các quan sát`,"lab.detailEvents":`Sự kiện bằng chứng`,"lab.detailArtifacts":`Metadata của artifact`,"lab.detailLoadFailed":`Không thể tải chi tiết kết quả`,"lab.refresh":`Làm mới`,"lab.verdict.UNKNOWN":`Không xác định`,"lab.verdict.CLAIMED":`Đã khai báo`,"lab.verdict.PROBED":`Đã thăm dò`,"lab.verdict.VERIFIED":`Đã xác minh`,"lab.verdict.DEGRADED":`Suy giảm`,"lab.verdict.BLOCKED":`Bị chặn`,"lab.verdict.UNSUPPORTED":`Không được hỗ trợ`,"lab.layer.protocol_conformance":`Tuân thủ giao thức`,"lab.layer.live_route_compatibility":`Tương thích tuyến trực tiếp`,"lab.layer.task_effectiveness":`Hiệu quả tác vụ`},pt:{"lab.title":`Laboratório de Compatibilidade`,"lab.subtitle":`Matriz de vereditos de compatibilidade somente leitura, gerada a partir das evidências da projeção do laboratório.`,"lab.loadFailed":`Não foi possível carregar os dados do laboratório de compatibilidade`,"lab.projectionUnavailable":`A projeção do laboratório não está disponível. Execute primeiro os testes de conformidade ou as sondagens ao vivo.`,"lab.projectionIncompatible":`O esquema da projeção do laboratório é incompatível. Reconstrua a projeção.`,"lab.statusTitle":`Status da projeção`,"lab.matrixTitle":`Matriz de compatibilidade`,"lab.verdictsTitle":`Registros de veredito`,"lab.filter.layer":`Camada de evidência`,"lab.filter.verdict":`Veredito`,"lab.filter.subject":`ID do sujeito`,"lab.filter.all":`Todos`,"lab.col.subject":`Sujeito`,"lab.col.layer":`Camada`,"lab.col.suite":`Suíte`,"lab.col.verdict":`Veredito`,"lab.col.asOf":`Data de referência`,"lab.col.protocol":`Conformidade de protocolo`,"lab.col.live":`Compatibilidade da rota ao vivo`,"lab.col.task":`Eficácia nas tarefas`,"lab.empty":`Ainda não há vereditos de compatibilidade na projeção.`,"lab.subjectKind":`Tipo`,"lab.observationCount":`Observações`,"lab.eventCount":`Eventos`,"lab.verdictCount":`Vereditos`,"lab.subjectCount":`Sujeitos`,"lab.builtAt":`Gerada em`,"lab.loading":`Carregando evidências de compatibilidade…`,"lab.loadMore":`Carregar mais`,"lab.detailTitle":`Detalhes do veredito`,"lab.detailClose":`Fechar`,"lab.detailSubject":`Sujeito`,"lab.detailObservations":`Observações`,"lab.detailEvents":`Eventos de evidência`,"lab.detailArtifacts":`Metadados dos artefatos`,"lab.detailLoadFailed":`Não foi possível carregar os detalhes do veredito`,"lab.refresh":`Atualizar`,"lab.verdict.UNKNOWN":`Desconhecido`,"lab.verdict.CLAIMED":`Declarado`,"lab.verdict.PROBED":`Sondado`,"lab.verdict.VERIFIED":`Verificado`,"lab.verdict.DEGRADED":`Degradado`,"lab.verdict.BLOCKED":`Bloqueado`,"lab.verdict.UNSUPPORTED":`Não suportado`,"lab.layer.protocol_conformance":`Conformidade de protocolo`,"lab.layer.live_route_compatibility":`Compatibilidade da rota ao vivo`,"lab.layer.task_effectiveness":`Eficácia nas tarefas`}},ue={en:{subjectKindUnknown:`Unknown`,"artifact.present":`Present`,"artifact.corrupt":`Corrupt`,"artifact.purged_unavailable":`Purged / unavailable`,selectVerdict:`View verdict for {subject}`,"community.title":`Community evidence`,"community.notLocalVerdict":`Untrusted read-only context. Not included in this local verdict.`,"community.bundles":`Bundles`,"community.activeRecords":`Active records`,"community.revokedRecords":`Revoked records`},de:{subjectKindUnknown:`Unbekannt`,"artifact.present":`Vorhanden`,"artifact.corrupt":`Beschädigt`,"artifact.purged_unavailable":`Gelöscht / nicht verfügbar`,selectVerdict:`Urteil für {subject} anzeigen`,"community.title":`Community-Evidenz`,"community.notLocalVerdict":`Nicht vertrauenswürdiger Nur-Lese-Kontext. Nicht Teil dieses lokalen Urteils.`,"community.bundles":`Pakete`,"community.activeRecords":`Aktive Einträge`,"community.revokedRecords":`Widerrufene Einträge`},fr:{subjectKindUnknown:`Inconnu`,"artifact.present":`Présent`,"artifact.corrupt":`Corrompu`,"artifact.purged_unavailable":`Purgé / indisponible`,selectVerdict:`Afficher le verdict pour {subject}`,"community.title":`Données de la communauté`,"community.notLocalVerdict":`Contexte non fiable en lecture seule. Non inclus dans ce verdict local.`,"community.bundles":`Lots`,"community.activeRecords":`Enregistrements actifs`,"community.revokedRecords":`Enregistrements révoqués`},ko:{subjectKindUnknown:`알 수 없음`,"artifact.present":`있음`,"artifact.corrupt":`손상됨`,"artifact.purged_unavailable":`삭제됨 / 사용할 수 없음`,selectVerdict:`{subject}의 판정 보기`,"community.title":`커뮤니티 증거`,"community.notLocalVerdict":`신뢰되지 않는 읽기 전용 컨텍스트입니다. 이 로컬 판정에는 포함되지 않습니다.`,"community.bundles":`번들`,"community.activeRecords":`활성 레코드`,"community.revokedRecords":`폐기된 레코드`},zh:{subjectKindUnknown:`未知`,"artifact.present":`存在`,"artifact.corrupt":`已损坏`,"artifact.purged_unavailable":`已清除 / 不可用`,selectVerdict:`查看 {subject} 的判定`,"community.title":`社区证据`,"community.notLocalVerdict":`不受信任的只读上下文。不计入此本地判定。`,"community.bundles":`证据包`,"community.activeRecords":`有效记录`,"community.revokedRecords":`已撤销记录`},"zh-TW":{subjectKindUnknown:`未知`,"artifact.present":`存在`,"artifact.corrupt":`已損壞`,"artifact.purged_unavailable":`已清除 / 不可用`,selectVerdict:`查看 {subject} 的判定`,"community.title":`社群證據`,"community.notLocalVerdict":`不受信任的唯讀脈絡。不計入此本地判定。`,"community.bundles":`證據包`,"community.activeRecords":`有效記錄`,"community.revokedRecords":`已撤銷記錄`},ru:{subjectKindUnknown:`Неизвестно`,"artifact.present":`Доступен`,"artifact.corrupt":`Повреждён`,"artifact.purged_unavailable":`Удалён / недоступен`,selectVerdict:`Открыть вердикт для {subject}`,"community.title":`Данные сообщества`,"community.notLocalVerdict":`Недоверенный контекст только для чтения. Не входит в этот локальный вердикт.`,"community.bundles":`Пакеты`,"community.activeRecords":`Активные записи`,"community.revokedRecords":`Отозванные записи`},ja:{subjectKindUnknown:`不明`,"artifact.present":`存在`,"artifact.corrupt":`破損`,"artifact.purged_unavailable":`削除済み / 利用不可`,selectVerdict:`{subject} の判定を表示`,"community.title":`コミュニティ証拠`,"community.notLocalVerdict":`信頼されていない読み取り専用コンテキストです。このローカル判定には含まれません。`,"community.bundles":`バンドル`,"community.activeRecords":`有効なレコード`,"community.revokedRecords":`取り消されたレコード`},tr:{subjectKindUnknown:`Bilinmiyor`,"artifact.present":`Mevcut`,"artifact.corrupt":`Bozuk`,"artifact.purged_unavailable":`Temizlenmiş / kullanılamıyor`,selectVerdict:`{subject} için kararı görüntüle`,"community.title":`Topluluk kanıtı`,"community.notLocalVerdict":`Güvenilmeyen salt okunur bağlam. Bu yerel karara dahil değildir.`,"community.bundles":`Paketler`,"community.activeRecords":`Etkin kayıtlar`,"community.revokedRecords":`Geri çekilen kayıtlar`},vi:{subjectKindUnknown:`Không xác định`,"artifact.present":`Có sẵn`,"artifact.corrupt":`Hỏng`,"artifact.purged_unavailable":`Đã xóa / không khả dụng`,selectVerdict:`Xem kết quả cho {subject}`,"community.title":`Bằng chứng cộng đồng`,"community.notLocalVerdict":`Ngữ cảnh chỉ đọc không đáng tin cậy. Không được đưa vào kết quả cục bộ này.`,"community.bundles":`Gói bằng chứng`,"community.activeRecords":`Bản ghi đang hoạt động`,"community.revokedRecords":`Bản ghi đã thu hồi`},pt:{subjectKindUnknown:`Desconhecido`,"artifact.present":`Presente`,"artifact.corrupt":`Corrompido`,"artifact.purged_unavailable":`Removido / indisponível`,selectVerdict:`Ver veredito de {subject}`,"community.title":`Evidências da comunidade`,"community.notLocalVerdict":`Contexto somente leitura não confiável. Não incluído neste veredito local.`,"community.bundles":`Pacotes`,"community.activeRecords":`Registros ativos`,"community.revokedRecords":`Registros revogados`}};function de(e,t,n){let r=ue[e][t];if(n)for(let[e,t]of Object.entries(n))r=r.split(`{${e}}`).join(String(t));return r}function w(e,t){return{...t,...le[e]}}var T={en:w(`en`,ee),de:w(`de`,S),fr:w(`fr`,C),ko:w(`ko`,te),zh:w(`zh`,ne),"zh-TW":w(`zh-TW`,re),ru:w(`ru`,ie),ja:w(`ja`,ae),tr:w(`tr`,oe),vi:w(`vi`,se),pt:w(`pt`,ce)};function fe(e){return T[e][`lang.nativeName`]}function pe(e,t){return T[e][t]}var me=[{code:`en`,htmlLang:`en`},{code:`de`,htmlLang:`de`},{code:`fr`,htmlLang:`fr`},{code:`ko`,htmlLang:`ko`},{code:`zh`,htmlLang:`zh-CN`},{code:`zh-TW`,htmlLang:`zh-TW`},{code:`ru`,htmlLang:`ru`},{code:`ja`,htmlLang:`ja`},{code:`tr`,htmlLang:`tr`},{code:`vi`,htmlLang:`vi`},{code:`pt`,htmlLang:`pt-BR`}],he=`ocx-lang`,E=null;function D(){try{let e=localStorage.getItem(he);if(e===`en`||e===`de`||e===`fr`||e===`ko`||e===`zh`||e===`zh-TW`||e===`ru`||e===`ja`||e===`tr`||e===`vi`||e===`pt`)return e}catch{}let e=typeof navigator<`u`&&navigator?.language?navigator.language.toLowerCase():`en`;return e.startsWith(`de`)?`de`:e.startsWith(`fr`)?`fr`:e.startsWith(`ko`)?`ko`:e.startsWith(`zh`)?e.includes(`tw`)||e.includes(`hk`)||e.includes(`mo`)||e.includes(`hant`)?`zh-TW`:`zh`:e.startsWith(`ru`)?`ru`:e.startsWith(`ja`)?`ja`:e.startsWith(`tr`)?`tr`:e.startsWith(`vi`)?`vi`:e.startsWith(`pt`)?`pt`:`en`}function ge(){return E??D()}function _e(e){E=e}var ve=(0,_.createContext)(null);function ye(e,t){if(!t)return e;let n=e;for(let e of Object.keys(t))n=n.split(`{${e}}`).join(String(t[e]));return n}function be(){let e=(0,_.useContext)(ve);if(!e)throw Error(`useI18n must be used within LanguageProvider`);return e}function xe(){return be().t}var Se=`opencodex-admin-token-dialog`,Ce=`OpenCodex`,we=`https://opencodex.me/guides/web-dashboard/#finding-the-admin-token`;function Te(e,t=ge()){let n=T[t],r=n[`auth.adminTokenTitle`];return new Promise(t=>{let i=document.activeElement instanceof HTMLElement?document.activeElement:null,a=!1,o=document.createElement(`dialog`);o.id=Se,o.className=`modal-overlay`,o.setAttribute(`aria-labelledby`,`${Se}-title`);let s=document.createElement(`form`);s.className=`modal-card`,s.method=`post`,s.action=window.location.href,s.autocomplete=`on`;let c=document.createElement(`div`);c.className=`modal-head`;let l=document.createElement(`h3`);l.id=`${Se}-title`,l.textContent=r,c.append(l);let u=document.createElement(`div`),d=document.createElement(`label`);d.className=`field-label`,d.htmlFor=`${Se}-username`,d.textContent=n[`auth.adminAccountLabel`];let f=document.createElement(`input`);f.id=d.htmlFor,f.className=`input`,f.type=`text`,f.name=`username`,f.autocomplete=`username`,f.value=Ce,f.readOnly=!0,u.append(d,f);let p=document.createElement(`div`);p.style.marginTop=`var(--space-4)`;let m=document.createElement(`label`);m.className=`field-label`,m.htmlFor=`${Se}-password`,m.textContent=n[`auth.adminTokenFieldLabel`];let h=document.createElement(`input`);h.id=m.htmlFor,h.className=`input`,h.type=`password`,h.name=`password`,h.autocomplete=`current-password`,h.required=!0,h.spellcheck=!1,h.autocapitalize=`none`,p.append(m,h);let g=document.createElement(`p`);g.className=`hint`,g.style.marginTop=`var(--space-2)`,g.textContent=n[`auth.adminTokenHelp`];let _=document.createElement(`a`);_.className=`text-control`,_.href=we,_.target=`_blank`,_.rel=`noreferrer`,_.style.color=`var(--accent)`,_.textContent=n[`auth.adminTokenDocsLink`],g.append(` `,_),p.append(g);let v=document.createElement(`div`);v.className=`notice notice-err`,v.setAttribute(`role`,`alert`),v.hidden=!0;let y=document.createElement(`div`);y.className=`modal-actions`;let b=document.createElement(`button`);b.type=`button`,b.className=`btn btn-ghost`,b.textContent=n[`common.cancel`];let x=document.createElement(`button`);x.type=`submit`,x.className=`btn btn-primary`,x.textContent=n[`common.ok`],y.append(b,x),s.append(c,u,p,v,y),o.append(s);let ee=e=>{v.textContent=e??``,v.hidden=e===null},S=e=>{a||(a=!0,o.open&&o.close(),o.remove(),i?.focus(),t(e))};s.addEventListener(`submit`,t=>{t.preventDefault();let r=h.value.trim();if(!r){h.value=``,h.reportValidity();return}h.disabled=!0,x.disabled=!0,ee(null),e(r).then(e=>{if(!a){if(e===`accepted`){S(r);return}h.value=``,h.disabled=!1,x.disabled=!1,ee(e===`rejected`?n[`auth.adminTokenRejected`]:n[`auth.adminTokenUnavailable`]),h.focus()}}).catch(()=>{a||(h.value=``,h.disabled=!1,x.disabled=!1,ee(n[`auth.adminTokenUnavailable`]),h.focus())})}),b.addEventListener(`click`,()=>S(null)),o.addEventListener(`cancel`,e=>{e.preventDefault(),S(null)}),document.body.append(o),typeof o.showModal==`function`?o.showModal():o.setAttribute(`open`,``),queueMicrotask(()=>h.focus())})}function Ee(e){let t=new AbortController;if(typeof AbortSignal<`u`&&typeof AbortSignal.any==`function`&&typeof AbortSignal.timeout==`function`)return{controller:t,signal:AbortSignal.any([t.signal,AbortSignal.timeout(e)]),clear:()=>void 0};let n=setTimeout(()=>t.abort(),e);return{controller:t,signal:t.signal,clear:()=>clearTimeout(n)}}async function De(e,t,n){t?.throwIfAborted();let r=Ee(e),i=()=>r.controller.abort(t?.reason);t?.addEventListener(`abort`,i,{once:!0});let a,o=new Promise((e,t)=>{a=()=>t(r.signal.reason??new DOMException(`Aborted`,`AbortError`)),r.signal.addEventListener(`abort`,a,{once:!0})});try{let e=(async()=>(r.signal.throwIfAborted(),n(r.signal)))(),t=await Promise.race([e,o]);return r.signal.throwIfAborted(),t}finally{r.clear(),t?.removeEventListener(`abort`,i),r.signal.removeEventListener(`abort`,a)}}function Oe(){if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="opencodex-runtime-role"]`)?.getAttribute(`content`)?.trim();return e===`standalone`||e===`hub`||e===`client`?e:null}function ke(){return Oe()===`standalone`}function Ae(){return Oe()===`client`}function je(){if(typeof document<`u`){let e=document.querySelector(`meta[name="opencodex-management-auth-required"]`)?.getAttribute(`content`)?.trim();if(e===`1`)return!0;if(e===`0`)return!1}return Oe()===`hub`}function Me(e){return e.replace(/\/+$/,``)}function Ne(e){return new URL(e||`/`,window.location.href)}function Pe(e){try{let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`||t.username||t.password||t.pathname!==`/`||t.search||t.hash?null:t.origin}catch{return null}}function Fe(e,t,n,r){let i=Me(t);return{id:e,baseUrl:i,serverOrigin:n,bootstrapPath:`${i}/opencodex-session`,transport:r}}function Ie(e){let t=Ne(e),n=Me(e);return{connected:!1,machine:Fe(`machine`,n,t.origin,`same-origin`),shared:Fe(`shared`,n,t.origin,`same-origin`)}}function Le(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return t.mode===`client`&&t.connected===!0&&t.protocolVersion===1&&(t.managementTransport===`direct`||t.managementTransport===`relay`)&&typeof t.machineBase==`string`&&typeof t.sharedBase==`string`&&typeof t.sharedServerOrigin==`string`&&typeof t.apiKeyId==`string`&&t.apiKeyId.trim().length>0&&typeof t.connectedAt==`string`&&(t.catalogSyncedAt===void 0||typeof t.catalogSyncedAt==`string`)}function Re(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e;if(typeof t.linkId!=`string`||!/^lnk_[0-9a-f]{16}$/.test(t.linkId))return;let n=typeof t.home==`string`&&t.home.trim()&&t.home.length<=255?t.home.trim():null;return{linkId:t.linkId,home:n}}function ze(e,t){if(!Le(t))throw TypeError(`machine status response is invalid`);let n=Ie(e),r=Pe(t.machineBase),i=Pe(t.sharedServerOrigin);if(!r||r!==n.machine.serverOrigin||!i)throw TypeError(`machine status target origins are invalid`);let a;try{a=new URL(t.sharedBase)}catch{throw TypeError(`machine status shared target is invalid`)}if(a.username||a.password||a.search||a.hash)throw TypeError(`machine status shared target is invalid`);if(t.managementTransport===`direct`){if(a.origin!==i||a.pathname!==`/`)throw TypeError(`machine status direct target is inconsistent`)}else if(a.origin!==r||a.pathname!==`/api/machine/hub-relay`)throw TypeError(`machine status relay target is inconsistent`);let o=Fe(`machine`,Me(e),r,`same-origin`),s=t.managementTransport===`relay`?Fe(`shared`,`${Me(e)}/api/machine/hub-relay`,i,`relay`):Fe(`shared`,i,i,`direct`),c=Re(t.link);return{connected:!0,machine:o,shared:s,apiKeyId:t.apiKeyId,catalogSyncedAt:t.catalogSyncedAt,...c?{link:c}:{}}}function Be(e,t){return t[e].baseUrl}async function Ve(e,t){let n=Ie(e);if(Oe()!==`client`)return n;let r;try{r=await fetch(`${n.machine.baseUrl}/api/machine/status`,{signal:t,cache:`no-store`})}catch(e){throw Error(`local machine plane unavailable`,{cause:e})}if(r.status===404)return n;if(!r.ok)throw Error(`local machine plane refused discovery (${r.status})`);let i=await r.json().catch(()=>null);if(!Le(i))throw Error(`local machine plane returned invalid status`);return ze(e,i)}var He=`opencodex:session-unavailable`,Ue=`opencodex:session-changed`,We=`opencodex-api-token`,Ge=`/api/combos`,Ke=1e4,qe=15e3,Je=`X-OpenCodex-Machine-Session`,Ye=`X-OpenCodex-Machine-GUI-Origin`,Xe=`X-OpenCodex-Machine-CSRF-Token`,Ze=!1,Qe=null,$e=null,et=Te,tt=Ke,nt=qe,rt=new Map,it=new WeakMap;function at(e,t){if(typeof window>`u`)return;let n=window.CustomEvent??(typeof CustomEvent==`function`?CustomEvent:null);if(n)try{window.dispatchEvent(new n(t,{detail:{plane:e}}))}catch{}}function ot(e){e.generation={},e.resolutionInFlight=null}function st(e){return{state:e,generation:e.generation,token:e.session.token}}function ct(e,t){return rt.get(e)===t.state&&t.state.generation===t.generation}function lt(e){return e.active&&!e.state.logoutBarrier&&ct(e.plane,e)}function ut(e,t,n){if(n&&!lt(n))return;let r=e.session.token!==t.token;ot(e),e.session=t,n&&(n.generation=e.generation),r&&at(e.target.id,Ue)}function dt(){return{token:null,csrfToken:null,browserOrigin:null,serverOrigin:null}}function ft(e,t,n){let r=dt(),i=n??it.get(e.session);i&&it.set(r,i),ut(e,r,t)}function pt(){return $e||ht(Ie(``)),$e}function mt(e,t){return e.baseUrl===t.baseUrl&&e.serverOrigin===t.serverOrigin&&e.transport===t.transport}function ht(e){$e=e;for(let t of[`machine`,`shared`]){let n=rt.get(t);n&&!mt(n.target,e[t])&&ut(n,dt()),n&&mt(n.target,e[t])?(n.target.bootstrapPath!==e[t].bootstrapPath&&(ot(n),n.logoutBarrier=null,it.delete(n.session)),n.target=e[t]):rt.set(t,{target:e[t],session:dt(),generation:{},logoutBarrier:null,resolutionInFlight:null,promptCancelled:!1})}}function O(e){return pt(),rt.get(e)}function k(e,t){let n=O(e);!n.logoutBarrier&&t!==null&&n.session.token===t&&ft(n)}function gt(e,t,n,r,i,a,o){if(a&&!lt(a))return!1;let s=O(e);if(!t?.startsWith(`ocx_session_`)||!n||r!==window.location.origin||i!==s.target.serverOrigin)return ft(s,a,o),!1;let c={token:t,csrfToken:n,browserOrigin:r,serverOrigin:i};return o&&it.set(c,o),a||(s.logoutBarrier=null),ut(s,c,a),a&&!lt(a)?!1:(s.promptCancelled=!1,!0)}function _t(e){return!!O(e).session.token?.startsWith(`ocx_session_`)}async function vt(e){let t=O(e),n=t.logoutBarrier??{pending:0,completed:!1};if(t.logoutBarrier=n,ot(t),it.delete(t.session),!t.session.token?.startsWith(`ocx_session_`))return n.completed=!0,!1;n.pending++;let r=Ee(Ke);try{return(await wt(e,`${t.target.baseUrl}/api/session/logout`,{method:`POST`,signal:r.signal})).ok?(n.completed=!0,rt.get(e)===t&&t.logoutBarrier===n&&(ut(t,dt()),t.promptCancelled=!1),!0):!1}catch{return!1}finally{r.clear(),n.pending--,!n.pending&&!n.completed&&t.logoutBarrier===n&&(t.logoutBarrier=null)}}function yt(e){let t=document.querySelector(`meta[name="${e}"]`),n=t?.content.trim()||null;return t?.remove(),n}function bt(){let e={token:yt(`opencodex-session-token`),csrf:yt(`opencodex-session-csrf`),browser:yt(`opencodex-session-origin`),server:yt(`opencodex-session-server-origin`)};for(let t of[`machine`,`shared`])O(t).target.serverOrigin===e.server&>(t,e.token,e.csrf,e.browser,e.server)}function xt(e,t){for(let n of e.match(/<meta\b[^>]*>/gi)??[])if(n.match(/\bname=["']([^"']+)["']/i)?.[1]===t)return n.match(/\bcontent=["']([^"']*)["']/i)?.[1]?.trim()||null;return null}function St(e,t,n,r){return gt(e,xt(t,`opencodex-session-token`),xt(t,`opencodex-session-csrf`),xt(t,`opencodex-session-origin`),xt(t,`opencodex-session-server-origin`),n,r)}function Ct(e){let t=O(e),n=st(t),r=t.session,i={},a=()=>{let t=O(e);it.get(t.session)===i&&(it.delete(t.session),ot(t)),r=null};return{install(a){return!r||!ct(e,n)?!1:St(e,a,void 0,i)&&rt.get(e)===t&&it.get(t.session)===i},commit:a,rollback(){let n=O(e);r&&mt(n.target,t.target)&&it.get(n.session)===i&&ut(n,r),a()}}}function wt(e,t,n){let[r,i]=At(e,t,n);return(Qe??window.fetch.bind(window))(r,i)}function Tt(){try{sessionStorage.removeItem(We)}catch{}}function Et(e){return new URL(e.baseUrl||`/`,window.location.href)}function Dt(e,t){let n=Et(e);if(t.origin!==n.origin)return!1;let r=n.pathname.replace(/\/$/,``);return r===``||t.pathname===r||t.pathname.startsWith(`${r}/`)}function A(e,t){if(!Dt(e,t))return null;let n=Et(e).pathname.replace(/\/$/,``);return t.pathname.slice(n.length)||`/`}function Ot(e){let t;try{t=new URL(e instanceof Request?e.url:String(e),window.location.href)}catch{return null}let n=pt();return t.href===new URL(n.shared.bootstrapPath,window.location.href).href?{plane:`shared`,bootstrap:!0}:n.shared.transport===`relay`&&Dt(n.shared,t)?{plane:`shared`,bootstrap:!1}:A(n.machine,t)?.startsWith(`/api/machine/`)?{plane:`machine`,bootstrap:!1}:A(n.shared,t)?.startsWith(`/api/`)?{plane:`shared`,bootstrap:!1}:t.href===new URL(n.machine.bootstrapPath,window.location.href).href?{plane:`machine`,bootstrap:!0}:null}function kt(e,t,n,r){let i=O(e),a=new Headers(n?.headers??(t instanceof Request?t.headers:void 0)),o=r===void 0?i.session.token:r,s=(n?.method??(t instanceof Request?t.method:`GET`)).toUpperCase();if(o&&a.set(`X-OpenCodex-API-Key`,o),o?.startsWith(`ocx_session_`)&&i.session.browserOrigin&&i.session.csrfToken&&(a.set(`X-OpenCodex-GUI-Origin`,i.session.browserOrigin),s!==`GET`&&s!==`HEAD`&&a.set(`X-OpenCodex-CSRF-Token`,i.session.csrfToken)),e===`shared`&&i.target.transport===`relay`){let e=O(`machine`).session;e.token&&a.set(Je,e.token),e.browserOrigin&&a.set(Ye,e.browserOrigin),s!==`GET`&&s!==`HEAD`&&e.csrfToken&&a.set(Xe,e.csrfToken)}return a}function At(e,t,n,r){let i=kt(e,t,n,r);return t instanceof Request?[new Request(t,{headers:i}),n?{...n,headers:i}:void 0]:[t,{...n,headers:i}]}async function jt(e,t,n=tt){if(!Qe||!lt(e))return{kind:`failed`};let{plane:r,state:i}=e,a=Qe;try{return await De(n,t,async t=>{let[n,o]=At(r,i.target.bootstrapPath,{cache:`no-store`,signal:t},null),s=await a(n,o);if(t.aborted||!lt(e))return{kind:`failed`};if(!s.ok)return s.status>=400&&s.status<500?{kind:`unavailable`}:{kind:`failed`};let c=await s.text();return t.aborted||!lt(e)?{kind:`failed`}:St(r,c,e)?{kind:`minted`,token:i.session.token}:{kind:`unavailable`}})}catch{return{kind:`failed`}}}async function Mt(e,t){let n=O(e),r={plane:e,state:n,generation:n.generation,active:!0};try{return(await jt(r,t,5e3)).kind===`minted`}finally{r.active=!1}}async function Nt(e,t){if(!Qe)return`unavailable`;try{let[n,r]=At(e,`${O(e).target.baseUrl}${Ge}`,{cache:`no-store`},t),i=await Qe(n,r);return i.status===401?`rejected`:i.ok?`accepted`:`unavailable`}catch{return`unavailable`}}async function Pt(e,t,n){let r=O(e);if(n?.aborted||r.logoutBarrier)return null;if(r.promptCancelled)return st(r);if(!r.resolutionInFlight){let n={plane:e,state:r,generation:r.generation,active:!0},i=(async()=>{let i=r.session.token;if(i&&i!==t)return st(r);let a,o=await Promise.race([jt(n),new Promise(e=>{a=setTimeout(()=>{n.active=!1,e({kind:`failed`})},nt)})]).finally(()=>clearTimeout(a));if(!ct(e,n))return null;if(o.kind===`failed`)return st(r);if(!lt(n))return null;if(o.kind===`minted`)return st(r);if(!je())return r.promptCancelled=!0,st(r);let s=await et(async t=>{if(!lt(n))return`unavailable`;let r=await Nt(e,t);return lt(n)?r:`unavailable`});return lt(n)?s?(ut(r,{token:s,csrfToken:null,browserOrigin:null,serverOrigin:r.target.serverOrigin},n),lt(n)?st(r):null):(r.promptCancelled=!0,st(r)):null})().finally(()=>{n.active=!1,r.resolutionInFlight===i&&(r.resolutionInFlight=null)});r.resolutionInFlight=i}if(!n)return r.resolutionInFlight;let i,a=new Promise(e=>{i=()=>e(null),n.addEventListener(`abort`,i,{once:!0})});return Promise.race([r.resolutionInFlight,a]).finally(()=>{i&&n.removeEventListener(`abort`,i)})}function Ft(){if(Ze)return;Ze=!0,Tt(),pt(),bt();let e=window.fetch.bind(window);Qe=e,window.fetch=async(t,n)=>{let r=Ot(t);if(!r)return e(t,n);let i=O(r.plane),a=i.generation,o=i.session.token,s=(n?.method??(t instanceof Request?t.method:`GET`)).toUpperCase(),c=r.bootstrap&&s===`POST`,[l,u]=At(r.plane,t,n,c?null:void 0),d=await e(l,u);if(r.bootstrap||d.status!==401||rt.get(r.plane)!==i||i.logoutBarrier)return d;let f=i.session.token;if(f&&(f!==o||i.generation!==a)){let a=st(i),[o,s]=At(r.plane,t,n),c=await e(o,s);if(!ct(r.plane,a)||c.status!==401)return c;k(r.plane,f)}else{if(i.generation!==a&&!i.resolutionInFlight)return d;k(r.plane,o)}let p=n?.signal??(t instanceof Request?t.signal:void 0),m=await Pt(r.plane,o,p??void 0);if(!m||!ct(r.plane,m)||p?.aborted)return d;if(!m.token)return!p?.aborted&&!_t(r.plane)&&at(r.plane,He),d;let[h,g]=At(r.plane,t,n,m.token),_=await e(h,g);return _.status===401&&ct(r.plane,m)&&(k(r.plane,m.token),!p?.aborted&&!_t(r.plane)&&at(r.plane,He)),_}}function It(e,t){let n=new URL(e);return![`http:`,`https:`].includes(n.protocol)||n.pathname!==`/v1/audio/transcriptions`||n.username||n.password||n.search||n.hash||t.method!==`POST`?Promise.reject(Error(`Invalid audio upload destination`)):(Qe??fetch)(n.href,{...t,credentials:`omit`,redirect:`error`})}var Lt=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Rt=o(((e,t)=>{t.exports=Lt()})),j=Rt();function zt({children:e}){let[t,n]=(0,_.useState)(()=>{let e=D();return _e(e),e}),r=(0,_.useCallback)(e=>{_e(e),n(e)},[]);(0,_.useEffect)(()=>{let e=me.find(e=>e.code===t)??me[0];document.documentElement.lang=e.htmlLang;try{localStorage.setItem(`ocx-lang`,t)}catch{}},[t]);let i=(0,_.useCallback)((e,n)=>ye(T[t][e]??ee[e]??e,n),[t]),a=(0,_.useMemo)(()=>({locale:t,setLocale:r,t:i}),[t,i]);return(0,j.jsx)(ve.Provider,{value:a,children:e})}function Bt({k:e,cmd:t,vars:n}){let{t:r}=be(),[i,a=``]=r(e,n).split(`{cmd}`);return(0,j.jsxs)(j.Fragment,{children:[i,(0,j.jsx)(`code`,{className:`chip`,children:t}),a]})}var Vt=`modulepreload`,Ht=function(e){return`/`+e},Ut={},Wt=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=Ht(t,n),t=s(t),t in Ut)return;Ut[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Vt,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Gt=window.location.hash.split(`?`)[0]===`#/tray`,Kt=(0,_.lazy)(()=>Wt(Gt?()=>import(`./Tray-7z1COnmz.js`):()=>import(`./App-BnRSujOq.js`),__vite__mapDeps([0,1,2])));Gt&&Ft(),v.createRoot(document.getElementById(`root`)).render((0,j.jsx)(_.StrictMode,{children:(0,j.jsx)(zt,{children:(0,j.jsx)(_.Suspense,{fallback:null,children:(0,j.jsx)(Kt,{})})})}));export{u as A,be as C,fe as D,pe as E,de as O,ge as S,T,Oe as _,Ct as a,De as b,wt as c,Ft as d,vt as f,ke as g,Ae as h,He as i,c as j,m as k,It as l,Ve as m,Rt as n,Mt as o,Be as p,Ue as r,ht as s,Bt as t,_t as u,Ie as v,xe as w,me as x,Ee as y};
|
|
94
|
+
As alterações valem para novas sessões.`,"dash.multiAgent":`Subagente`,"dash.codexDesktopAuthless":`Abrir o Codex sem fazer login`,"dash.codexDesktopAuthlessHint":`Desativado por padrão. Dispensa o login separado do Desktop em conexões locais elegíveis. As credenciais upstream continuam sendo necessárias. Reinicie o Codex após alterar esta configuração. Recursos do Desktop que dependem de conta podem ficar indisponíveis.`,"dash.codexClientCompaction":`Usar compactação no cliente`,"dash.codexClientCompactionHint":`Desativado por padrão; somente loopback autenticado. As próximas compactações armazenam resumos portáveis em texto simples enquanto o roteamento de provedores do OpenCodeX e da V2 permanece ativo; o provedor configurado pode processá-los e consumir cota. O histórico não é alterado, e as threads existentes continuam roteando pelo proxy por meio do override openai_base_url gerenciado pelo OpenCodeX; se você definir essa linha manualmente, ela é mantida, e essas threads seguem o seu destino. O histórico ocx1 existente continua recuperável; recupere uma thread separadamente apenas antes de reproduzi-la no Codex nativo. Reinicie o Codex após alterar esta configuração.`,"dash.codexRemoteHistoryHint":`O roteamento por tabela de provedores pode ocultar threads existentes marcadas como openai em algumas listas remotas do celular. O histórico não é excluído. O cliente remoto precisa listar todos os provedores; esta opção não corrige o filtro desse cliente.`,"models.v2Conflict":`[agents] max_concurrent_threads_per_session / max_threads está definido — o codex se recusará a iniciar; remova-o do config.toml`,"models.v2Applied":`Modo de subagente atualizado — vale para novas sessões (reinicie o app do Codex para atualizar o seletor)`,"models.v2ThreadsLabel":`Limite de subagentes`,"models.v2ThreadsDefault":`padrão`,"models.v2ThreadsApplied":`Limite de subagentes atualizado — vale para novas sessões`,"models.v2ThreadsInvalid":`O limite de subagentes deve ser um inteiro >= 1`,"models.v2ThreadsApply":`Aplicar`,"models.capValue":`Padrão {value}`,"models.contextSettings":`Janelas personalizadas`,"models.contextSettingsTitle":`Janelas personalizadas — {provider}`,"models.contextDefault":`Padrão do provedor`,"models.contextModel":`Modelo`,"models.contextModelOverride":`Substituição do modelo`,"models.contextHint":`Informe aqui a janela real do Codex quando já a conhecer. Isso preenche uma janela upstream ausente e só reduz uma janela maior informada. Deixe em branco para usar a Janela padrão / limite do provedor, ou 128k se esse limite estiver desativado.`,"models.contextAutomatic":`Descoberta automática`,"models.contextSaved":`Janelas de contexto atualizadas — valem a partir do próximo turno do Codex.`,"models.contextUnchanged":`Nenhuma alteração de janela de contexto para salvar.`,"models.contextSaveFailed":`Falha ao salvar as janelas de contexto`,"models.contextInvalid":`As janelas de contexto devem ser números inteiros positivos`,"models.contextCappedValue":`limite de {value}`,"models.setAll":`Definir para todos`,"models.setAllHint":`Ativa a janela padrão de {value} para todos os provedores roteados. Relays que omitem context_window / context_length recebem este valor como a janela real do Codex. Use Janelas personalizadas na linha de um provedor para ajustar um modelo manualmente. Provedores nativos não são afetados.`,"models.collapseAll":`Recolher tudo`,"models.expandAll":`Expandir tudo`,"models.orderHint":`A ordem padrão segue as seleções em destaque e a prioridade do catálogo, com ordenação por provedor/modelo para linhas roteadas empatadas. Uma ordem salva do seletor pode sobrepor a ordem de exibição; as chaves de visibilidade filtram quais linhas aparecem. Um cliente pode manter um catálogo antigo até buscá-lo novamente.`,"models.settingsPanel.title":`Configurações do modelo`,"models.settingsPanel.off":`desativado`,"models.settingsPanel.attention":`Requer atenção`,"models.custom":`Personalizado…`,"models.customApply":`Aplicar`,"models.customPlaceholder":`Tokens (ex.: 420000)`,"models.customAdd":`Adicionar modelo personalizado`,"models.customAddTitle":`Adicionar modelo personalizado — {provider}`,"models.customEditTitle":`Editar modelo personalizado — {provider}`,"models.settingsTitle":`Editar modelo — {model}`,"models.settingsContextInherit":`Sem substituição — atualmente {value}`,"models.settingsContextUnknown":`desconhecido`,"models.settingsReload":`Recarregar`,"models.settingsReloaded":`Lista de modelos recarregada. Reabra {model} para ver os valores armazenados.`,"models.settingsNoChange":`Nenhuma configuração alterada para {model}`,"models.settingsSaved":`Configurações do modelo salvas para {model}`,"models.settingsSaveFailed":`Não foi possível confirmar se as configurações foram salvas. Recarregue a lista de modelos antes de tentar novamente.`,"models.settingsRefreshFailed":`Salvo. A lista de modelos não foi recarregada, então a linha pode mostrar valores antigos. Recarregue para conferir.`,"models.settingsSavedCodexStale":`{model} salvo, mas o catálogo de modelos do Codex não foi atualizado. Clique em Sincronizar agora no Painel para o Codex receber a alteração.`,"models.settingsRejected":`O servidor rejeitou estas configurações, então nada foi salvo. Confira os valores e tente novamente.`,"models.settingsDefaultEffort":`Nível padrão`,"models.settingsModalitiesInherit":`Sem substituição — seguindo atualmente a declaração do upstream: {modalities}`,"models.settingsModalitiesUnknown":`não declarado`,"models.settingsRestore":`Restaurar`,"models.settingsRestoreHint":`Limpa todas as substituições deste modelo e volta aos valores calculados.`,"models.settingsRestoreConfirm":`Restaurar {model} para os valores calculados? Isso limpa as substituições de janela de contexto, modalidade e raciocínio.`,"models.settingsRestored":`{model} restaurado para os valores calculados`,"models.settingsNothingToRestore":`{model} não tem substituições; já está nos valores calculados`,"pws.manageModelVisibility":`Gerenciar visibilidade em Modelos`,"pws.modelOwnershipLoading":`Verificando as definições de modelos…`,"pws.modelOwnershipFailed":`Não foi possível carregar as definições de modelos. Tente novamente antes de fazer alterações.`,"pws.modelSelectionPending":`Conclua a seleção de modelos em Modelos antes de fazer alterações.`,"pws.modelSaved":`Definição de modelo personalizado salva.`,"pws.modelSavedHidden":`Definição salva. Este modelo está oculto; gerencie a visibilidade em Modelos.`,"pws.modelSavedRefreshPending":`Definição salva, mas não foi possível atualizar o catálogo de modelos. Tente a atualização novamente; não o adicione de novo.`,"pws.modelMutationUnconfirmed":`Não foi possível confirmar a alteração. Atualize os modelos antes de tentar novamente.`,"pws.modelRemovedRefreshPending":`A alteração foi salva, mas não foi possível atualizar o catálogo de modelos. Tente a atualização novamente.`,"pws.modelHidden":`Modelo oculto. Restaure a visibilidade em Modelos.`,"pws.modelDefinitionDeleted":`Definição personalizada excluída. Um modelo subjacente ainda pode aparecer.`,"pws.modelKnown":`Este modelo já é conhecido. Gerencie a visibilidade dele em Modelos.`,"models.customAdded":`Modelo personalizado adicionado`,"models.customUpdated":`Modelo personalizado atualizado`,"models.customDeleted":`Modelo personalizado excluído`,"models.customSaveFailed":`Falha ao salvar o modelo personalizado`,"models.customSaving":`Salvando…`,"models.customAddBtn":`Adicionar`,"models.customEditBtn":`Atualizar`,"models.customEdit":`Editar`,"models.customDelete":`Excluir`,"models.customDeleteConfirm":`Excluir a definição personalizada de {name}? Um modelo nativo ou descoberto subjacente pode voltar a aparecer.`,"models.hide":`Ocultar`,"models.hideConfirm":`Ocultar {name} do catálogo de modelos? Isso não remove a definição nem altera a política de roteamento direto.`,"models.customBadge":`Personalizado`,"models.customSummary":`{count} personalizado(s)`,"models.customFieldModelId":`ID do modelo (slug do endpoint)`,"models.customFieldModelIdPlaceholder":`ex.: qwen4-max-preview`,"models.customFieldDisplayName":`Nome de exibição (opcional)`,"models.customFieldDisplayNamePlaceholder":`ex.: Qwen 4 Max Preview`,"models.customFieldContext":`Janela de contexto`,"models.customFieldModalities":`Modalidades de entrada`,"models.customFieldReasoning":`Esforço de raciocínio`,"models.customFieldReasoningOverride":`Substituir o esforço de raciocínio`,"models.reasoningEffort.none":`Nenhum`,"models.reasoningEffort.minimal":`Mínimo`,"models.reasoningEffort.low":`Baixo`,"models.reasoningEffort.medium":`Médio`,"models.reasoningEffort.high":`Alto`,"models.reasoningEffort.xhigh":`Extra alto`,"models.reasoningEffort.max":`Máximo`,"models.reasoningEffort.ultra":`Ultra`,"models.tipProvider":`Provedor`,"models.tipContext":`Contexto`,"models.tipModalities":`Modalidades`,"models.tipStatus":`Status`,"models.tipActive":`Ativo`,"models.tipDisabled":`Desativado`,"models.applied":`Salvo. O Codex mostra a alteração depois de recarregar a lista de modelos.`,"models.integrationRefreshWarning":`Seleção de modelos salva. Alguns catálogos de clientes não puderam ser atualizados. Verifique Integrações antes de iniciar uma nova sessão.`,"models.saveFailed":`Falha ao salvar`,"models.networkError":`Erro de rede — o proxy está em execução?`,"models.loadFail":`Falha ao carregar os modelos — o proxy está em execução?`,"models.noRouted":`Nenhum modelo roteado`,"models.noRoutedHint":`Faça login em um provedor ou adicione um primeiro.`,"models.emptyDiscovery":`Nenhum modelo foi descoberto. Verifique o endpoint do provedor ou adicione um modelo estático/personalizado.`,"models.emptyDiscoveryDisabled":`A descoberta de modelos em tempo real está desativada e nenhum modelo estático está configurado.`,"models.discoveryFailedBadge":`Falha na descoberta`,"models.discoveryFailedHttp":`A descoberta de modelos falhou (HTTP {status}).`,"models.discoveryFailedBlocked":`A descoberta de modelos foi bloqueada pela política do destino.`,"models.discoveryFailedInvalidResponse":`A descoberta de modelos retornou uma resposta inválida.`,"models.discoveryFailedNetwork":`A descoberta de modelos falhou por erro de rede.`,"models.discoveryFailedProvider":`O provedor informou um erro na descoberta de modelos.`,"models.discoveryFailedGeneric":`A descoberta de modelos falhou.`,"models.openProviderSettings":`Abrir configurações do provedor`,"models.inactiveNoCredit":`Sem crédito`,"models.inactiveNoCreditHint":`Todos os provedores por trás desta entrada estão sem crédito no momento, então uma requisição falharia. Ela continua listada e volta a ser utilizável quando o crédito for renovado ou recarregado.`,"models.discoveryFailedDependency":`A descoberta de modelos está ativada para este provedor. Enquanto continuar falhando, desative “{control}” nas configurações do provedor para usar modelos adicionados manualmente ou estáticos.`,"models.loading":`Carregando…`,"models.search":`Buscar modelos…`,"models.showMore":`Mostrar mais {n}`,"models.freeOnly":`Somente gratuitos`,"models.noFreeMatch":`Nenhum modelo gratuito aqui. Desative “Somente gratuitos” para ver os demais.`,"models.allowlistLabel":`Somente selecionados`,"models.allowlistHint":`Somente os modelos marcados vão para o catálogo (vazio = todos). Útil para provedores que expõem milhares de modelos.`,"models.selectedCount":`{n} selecionados`,"sub.forceTitle":`Forçar todos os subagentes a usar o mesmo modelo`,"sub.forceModel":`Modelo dos subagentes do Claude Code`,"sub.forceChoose":`Selecione um modelo exposto`,"sub.forceHelp":`Aplica-se aos agentes de plugins e aos agentes integrados (incluindo Explore/Plan), substituindo os modelos definidos por chamada. Forks e skills com model: inherit mantêm o modelo da conversa principal. O modelo principal e os modelos auxiliares Haiku/small-fast não são afetados.`,"sub.forceScope":`Desativado por padrão. Aplica-se a partir da próxima execução com roteamento via ocx claude, não à execução direta de claude. As variáveis exportadas no shell têm prioridade; env em settings.json pode sobrescrevê-las. O status verifica apenas a CLI e as configurações do usuário no servidor, não as de outro shell nem as do projeto.`,"sub.forceInvalid":`O destino configurado não está disponível. A substituição do modelo na inicialização será ignorada; selecione um modelo exposto ou desative esta opção.`,"sub.forceOld":`A versão do Claude Code é anterior à 2.1.257: FORCE é ignorado; aplica-se apenas o modelo padrão dos subagentes, sem imposição.`,"sub.forceUnknown":`A versão do Claude Code é desconhecida. Forçar um modelo requer a versão 2.1.257 ou posterior.`,"sub.forceOverride":`Sobrescrito por settings.json: seu env contém um modelo de subagente ou uma configuração FORCE. O OpenCodex não modifica esse arquivo.`,"sub.forceSettingsUnknown":`Não foi possível inspecionar settings.json. Não se sabe se suas configurações sobrescrevem esta opção.`,"sub.forceSaved":`Salvo. Entra em vigor na próxima execução com roteamento via ocx claude.`,"sub.subtitle":`O {cmd} do Codex anuncia apenas os 5 primeiros modelos (por prioridade) como substituições. Escolha até 5 aqui — gpt nativo ou roteado — e o opencodex define a prioridade deles no catálogo para que exatamente esses fiquem à frente. Qualquer outro modelo continua acessível pelo nome exato; isto controla apenas o que é exibido.`,"sub.featured":`Em destaque`,"sub.advanced":`Avançado`,"sub.orderHintAria":`Como esta ordem é usada`,"sub.orderHint":`A ordem exibida aqui define as posições 1 a 5 no topo do seletor de modelos do Codex e os modelos padrão candidatos para {cmd}.`,"sub.noneSelected":`Nenhum selecionado — escolha na lista abaixo.`,"sub.models":`Modelos`,"sub.search":`Buscar modelos (gpt nativo + roteados)…`,"sub.settings":`Configurações`,"sub.sections":`Seções de subagentes`,"sub.delegation.model":`Modelo a chamar primeiro`,"sub.delegation.modelHint":`O modelo que o Codex aciona primeiro ao delegar trabalho. “Em destaque” acima é a lista que ele pode chamar; este é o que ele chama primeiro.`,"sub.suggest.button":`Sugerir`,"sub.suggest.label":`Trabalho delegado`,"sub.suggest.placeholder":`O que o Codex costuma delegar? Ex.: buscas somente leitura em todo o repositório ou refatorações em vários módulos`,"sub.suggest.submit":`Dimensionar`,"sub.suggest.running":`Dimensionando…`,"sub.suggest.failed":`Não foi possível dimensionar o trabalho delegado.`,"sub.suggest.title":`Modelo sugerido`,"sub.suggest.accept":`Usar este`,"sub.noModels":`Nenhum modelo — faça login em um provedor ou adicione um primeiro.`,"sub.saved":`{n} modelos salvos. Inicie uma nova sessão do Codex (ou execute {cmd}) para vê-los como substituições de spawn_agent.`,"sub.saveFailed":`Falha ao salvar`,"sub.networkError":`Erro de rede — o proxy está em execução?`,"sub.loadFail":`Falha ao carregar os modelos — o proxy está em execução?`,"sub.loading":`Carregando…`,"sub.moveUp":`Mover {m} para cima`,"sub.moveDown":`Mover {m} para baixo`,"sub.removeAria":`Remover {m}`,"sub.workspace.addToFeatured":`Adicionar {m} aos destaques`,"sub.workspace.allModels":`Todos os modelos`,"sub.workspace.featuredFull":`A lista de destaques está cheia (máx. 5)`,"sub.workspace.mainAria":`Detalhes do modelo de subagente`,"sub.workspace.notFeatured":`Fora dos destaques`,"sub.workspace.priority":`Prioridade`,"sub.ultraMode":`Delegação sempre proativa`,"sub.ultraModeHint":`Ativa a política de delegação multiagente proativa para todos os modelos e esforços de raciocínio (não altera o esforço de raciocínio em si). Grava features.multi_agent_v2.multi_agent_mode_hint_text no config.toml.`,"sub.ultraModeV2Required":`Requer a superfície multiagente v2 — ative multi_agent_v2 e selecione v2 no controle de modo de subagente primeiro.`,"sub.ultraModeText":`Texto da delegação proativa`,"sub.ultraModePreset":`Restaurar predefinição`,"sub.ultraModeLoadFail":`Falha ao carregar as configurações de delegação proativa — o proxy está em execução?`,"sub.ultraModeSaveFail":`Falha ao salvar as configurações de delegação proativa`,"sub.ultraModeSaved":`Delegação proativa salva. Vale para novas sessões do Codex.`,"sub.workspace.removeFromFeatured":`Remover {m} dos destaques`,"sub.workspace.selectModel":`Selecione um modelo`,"sub.workspace.selectModelDesc":`Escolha um modelo na lista para ver os detalhes e colocá-lo em destaque para o spawn_agent.`,"sub.workspace.selector":`Seletor público`,"sub.fallbackLabel":`Cadeia de fallback de subagente`,"sub.fallbackHint":`Modelos tentados, em ordem, quando o modelo do subagente estiver indisponível ou falhar.`,"sub.fallbackAdd":`Adicionar modelo de fallback…`,"sub.fallbackPoll":`Intervalo de verificação de disponibilidade`,"sub.fallbackSaved":`Configurações de fallback de subagente salvas.`,"sub.fallbackSaveFailed":`Falha ao salvar as configurações de fallback`,"sub.fallbackUnavailable":`Não anunciado no momento; mantido na cadeia.`,"sub.fallbackPollInvalid":`Informe um número inteiro de 5000 a 600000 ms.`,"sub.v2Compatibility.title":`Compatibilidade V2 com pai nativo`,"sub.v2Compatibility.risk":`Se um pai nativo do ChatGPT delegar a este modelo roteado usando V2, a tarefa pode ser criptografada e falhar antes da execução. Tarefas legíveis vindas de pais roteados não são afetadas.`,"sub.v2Compatibility.recoveryUnknown":`O estado de recuperação ativada/elegibilidade não é exposto por este servidor. Use delegação V1/compatível com texto simples, ou ative a recuperação V2 experimental somente se elegível. A recuperação adiciona consumo de cota, latência, dependência do backend e possível perda de fidelidade; ela não corrige o protocolo upstream.`,"sub.v2Compatibility.details":`Detalhes de compatibilidade`,"logs.title":`Logs de requisições`,"logs.tabLogs":`Logs`,"logs.tabDebug":`Debug`,"logs.subtitle":`Requisições recentes roteadas pelo proxy local do opencodex, das mais novas para as mais antigas.`,"logs.autoRefresh":`Atualização automática`,"logs.noRequests":`Nenhuma requisição ainda.`,"logs.loadError":`Não foi possível carregar os logs de requisições.`,"logs.filter.surface.label":`Superfície`,"logs.filter.model.all":`Todos os modelos`,"logs.filter.provider.label":`Provedor`,"logs.filter.provider.all":`Todos os provedores`,"logs.filter.status.label":`Status`,"logs.filter.status.all":`Todos os status`,"logs.filter.status.success":`Sucesso (2xx)`,"logs.filter.status.errors":`Erros (4xx/5xx)`,"logs.filter.time.label":`Período`,"logs.filter.time.all":`Todo o período`,"logs.filter.time.15m":`Últimos 15 min`,"logs.filter.time.1h":`Última 1 h`,"logs.filter.time.24h":`Último 1 dia`,"logs.filter.speed.label":`Velocidade`,"logs.filter.speed.all":`Todas as velocidades`,"logs.filter.speed.slow":`< 15 tok/s`,"logs.filter.speed.medium":`15–< 50 tok/s`,"logs.filter.speed.fast":`≥ 50 tok/s`,"logs.filter.reset":`Limpar filtros`,"logs.filter.showingCount":`Exibindo {count} de {total}`,"logs.noMatchingRequests":`Nenhuma requisição correspondente.`,"logs.filter.surface.all":`Todas`,"logs.filter.surface.claude":`Claude`,"logs.filter.surface.codex":`Codex`,"logs.filter.surface.grok":`Grok`,"logs.filter.interceptedHelpersOnly":`Somente auxiliares interceptados`,"logs.badge.interceptedHelper":`I · {model}`,"logs.badge.interceptedHelperTitle":`Requisição de auxiliar interceptada`,"logs.filter.conversation.label":`Conversa`,"logs.filter.conversation.placeholder":`Cole o ID da conversa`,"logs.filter.conversation.clear":`Limpar`,"logs.filter.model.label":`Modelo`,"logs.filter.model.placeholder":`Filtrar por modelo ou provedor`,"logs.filter.conversation.apply":`Filtrar logs`,"logs.conversation.totals":`{requests} requisições · {tokens} tokens · {cost}`,"logs.conversation.scope":`Os totais cobrem apenas o buffer de logs atualmente carregado.`,"logs.conversation.excluded":`({unpriced} sem preço, {unmetered} sem medição excluídas do ~$)`,"logs.cost.approximate":`{amount}`,"logs.cost.lowerBound":`≥{amount}`,"logs.cost.unavailable":`—`,"logs.detail.conversation":`Conversa`,"logs.badge.claude":`Claude`,"logs.badge.grok":`Grok`,"logs.col.time":`Hora`,"logs.col.request":`Requisição`,"logs.col.model":`Modelo`,"logs.col.effort":`Esforço`,"logs.col.provider":`Provedor`,"logs.col.status":`Status`,"logs.col.tokens":`Tokens`,"logs.col.tokPerSec":`tok/s`,"logs.col.estimatedCost":`~$`,"logs.metric.tokPerSecTitle":`Tokens de saída por segundo durante toda a duração da requisição`,"logs.metric.estimatedCostTitle":`Equivalente ao preço de tabela da API, não uma cobrança real; preços sem correspondência ficam indisponíveis`,"usage.cost.total":`Equivalente ao preço de tabela da API (este período)`,"usage.cost.disclaimer":`Não é um comprovante de cobrança. Pode valer o uso da assinatura ou créditos do provedor.`,"usage.cost.unpricedNote":`{count} requisições excluídas (sem preço ou uso)`,"usage.cost.excluded":`({count} requisições excluídas)`,"usage.cost.excludedOne":`({count} requisição excluída)`,"logs.detail.section.basic":`Informações básicas`,"logs.detail.route.section":`Decisão de rota`,"logs.detail.route.kind":`Tipo de rota`,"logs.detail.route.profile":`Perfil`,"logs.detail.route.selected":`Selecionado`,"logs.detail.route.candidates":`Candidatos`,"logs.detail.route.unknown":`Nenhum rastreio de rota registrado para esta requisição (linha anterior ao rastreio).`,"logs.filter.protocol.label":`Caminho do protocolo`,"logs.filter.protocol.all":`Todos os caminhos`,"logs.filter.protocol.none":`Sem dados de caminho`,"logs.protocol.mode.native":`Nativo`,"logs.protocol.mode.translated":`Traduzido`,"logs.protocol.mode.legacyBridge":`Ponte legada`,"logs.protocol.mode.blocked":`Bloqueado`,"logs.protocol.disposition.passthrough":`Repassado`,"logs.protocol.disposition.translated":`Traduzido`,"logs.protocol.disposition.degraded":`Degradado`,"logs.protocol.disposition.unsupported":`Descartado`,"logs.protocol.wire.responses":`Responses`,"logs.protocol.wire.chat":`Chat`,"logs.protocol.wire.messages":`Messages`,"logs.protocol.wire.other":`Outro adaptador`,"logs.protocol.hop.ir":`IR`,"logs.protocol.hop.internal":`Responses (interno)`,"logs.protocol.badgeTitle":`Caminho do protocolo: {path} ({mode})`,"logs.detail.protocol.section":`Caminho do protocolo`,"logs.detail.protocol.inbound":`API do cliente`,"logs.detail.protocol.mode":`Modo de entrega`,"logs.detail.protocol.upstream":`Wire upstream`,"logs.detail.protocol.requestPath":`Caminho da requisição`,"logs.detail.protocol.responsePath":`Caminho da resposta`,"logs.detail.protocol.reasons":`Motivos`,"logs.detail.protocol.features":`Efeitos nos recursos`,"logs.detail.protocol.attempts":`Caminhos das tentativas`,"logs.detail.protocol.attempt":`Tentativa {ordinal}`,"logs.detail.protocol.none":`Nenhum dado de caminho registrado para esta requisição.`,"logs.detail.section.performance":`Desempenho`,"logs.detail.section.cost":`Equivalente ao preço de tabela da API`,"logs.detail.section.attempts":`Tentativas do combo`,"logs.detail.section.usage":`Uso bruto`,"logs.detail.ttft":`TTFT`,"logs.detail.decodeTokPerSec":`Taxa de decodificação (est.)`,"logs.decodeBasis.generation":`Janela de geração`,"logs.decodeBasis.legacy":`Após a saída visível`,"logs.decodeBasis.unknown":`Medição de tempo desconhecida`,"logs.detail.decodeGeneration":`Taxa de saída durante a geração (est.)`,"logs.detail.decodeLegacy":`Taxa de saída após a primeira saída visível (est.)`,"logs.detail.decodeUnknown":`Taxa de saída (est.; método de medição de tempo desconhecido)`,"logs.detail.decodeBasisHint.generation":`Estimada usando o tempo entre a primeira saída observada pelo proxy, incluindo raciocínio, e o último delta de saída.`,"logs.detail.decodeBasisHint.legacy":`Estimada usando o tempo entre a primeira saída visível e o fim da requisição, contando todos os tokens de saída informados, incluindo raciocínio.`,"logs.detail.decodeBasisHint.unknown":`O servidor não informou qual método de medição de tempo foi usado nesta estimativa.`,"logs.detail.endToEndTokPerSec":`Saída de ponta a ponta (tok/s)`,"logs.detail.reason.ttft_missing":`Nenhum tempo até o primeiro token foi registrado para esta requisição, portanto não há janela de decodificação para medir.`,"logs.detail.reason.decode_window_too_short":`A janela de saída medida foi inferior a um segundo, curta demais para estimar a taxa de decodificação.`,"logs.detail.costTotal":`Equivalente ao preço de tabela`,"logs.detail.totalTokens":`Total de tokens`,"logs.detail.matchedKey":`Chave de preço correspondente`,"logs.detail.priceSource":`Fonte do preço`,"logs.detail.unavailableReason":`Motivo da indisponibilidade`,"logs.detail.copyRequestId":`Copiar ID da requisição`,"logs.detail.copied":`Copiado`,"logs.detail.source.jawcode":`catálogo jawcode`,"logs.detail.source.expected":`Sobreposição de preço esperado`,"logs.detail.source.user":`Sobreposição de preço configurada no provedor`,"logs.detail.verification.verified":`Verificado`,"logs.detail.verification.derived":`Derivado do modelo base`,"logs.detail.attempt.target":`Provedor / modelo`,"logs.detail.attempt.reason":`Resultado / motivo`,"logs.detail.attempt.completed":`Concluída`,"logs.detail.attempt.e2eNote":`O tok/s de nível superior é ponta a ponta; cada tentativa usa sua própria duração.`,"logs.detail.attempt.recovery.transient5xx":`5xx transitório`,"logs.detail.attempt.recovery.connectionReset":`Conexão reiniciada`,"logs.detail.attempt.recovery.oauth401":`Reautenticação OAuth`,"logs.detail.attempt.recovery.key429":`Chave com limite de taxa (429)`,"logs.detail.attempt.recovery.rateLimit429":`Limite de taxa (429)`,"logs.detail.attempt.recovery.anthropicOauth429":`OAuth da Anthropic com limite de taxa (429)`,"logs.detail.attempt.recovery.image413":`Payload de imagem grande demais (413)`,"logs.detail.attempt.recovery.emptyCompletion":`Nova tentativa por conclusão vazia`,"logs.detail.attempt.recovery.consoleGoUpload":`Nova tentativa de upload no console`,"logs.detail.attempt.recovery.key401":`Reautenticação da chave de API`,"logs.detail.attempt.recovery.oauthAccount403":`Validação da conta necessária (403)`,"logs.detail.attempt.recovery.oauthAccount429":`Conta com limite de taxa (429)`,"logs.detail.attempt.recovery.oauthAccount402":`Cota da conta esgotada (402)`,"logs.detail.attempt.recovery.opaqueBlobRejection":`Estado criptografado obsoleto descartado`,"logs.detail.attempt.recovery.reasoningEffortDowngrade":`Esforço de raciocínio reduzido`,"logs.detail.attempt.recovery.anthropicFastDowngrade":`Modo rápido recusado, repetido em velocidade padrão`,"logs.detail.outcome.label":`Resultado`,"logs.detail.outcome.completed":`Concluída`,"logs.detail.outcome.failed":`Falhou`,"logs.detail.outcome.incomplete":`Incompleta`,"logs.detail.outcome.aborted":`Abortada`,"logs.detail.sends.label":`Envios upstream`,"logs.detail.sends.unresolved":`não resolvido`,"logs.detail.attempt.recovery.unknown":`Motivo de recuperação desconhecido`,"logs.detail.cause.label":`Causa da falha`,"logs.detail.stage.label":`chegou a`,"logs.detail.resend.label":`Reenvio`,"logs.detail.cause.transportUnsent":`Nunca enviada ao upstream`,"logs.detail.cause.transportAmbiguous":`Conexão perdida, estado do upstream desconhecido`,"logs.detail.cause.upstreamDeclined":`O upstream recusou iniciar`,"logs.detail.cause.rateLimit":`Limite de taxa atingido`,"logs.detail.cause.quotaExhausted":`Cota esgotada`,"logs.detail.cause.credentialRejected":`Credenciais rejeitadas`,"logs.detail.cause.policyRefusal":`Recusada pela política de conteúdo`,"logs.detail.cause.parameterRejected":`Parâmetro da requisição rejeitado`,"logs.detail.cause.ciphertextRefusal":`Estado criptografado rejeitado`,"logs.detail.cause.payloadTooLarge":`Payload grande demais`,"logs.detail.cause.payloadRejected":`Payload rejeitado`,"logs.detail.cause.upstreamFault":`Falha do upstream`,"logs.detail.cause.emptyOutput":`Nenhuma saída utilizável`,"logs.detail.cause.clientCancelled":`Cancelada pelo cliente`,"logs.detail.cause.localRefusal":`Recusada por este proxy`,"logs.detail.stage.preHeader":`sem cabeçalho de resposta`,"logs.detail.stage.headersOnly":`somente cabeçalhos`,"logs.detail.stage.protocolPrelude":`preâmbulo do protocolo`,"logs.detail.stage.semanticOutput":`saída entregue`,"logs.detail.stage.sideEffect":`efeito colateral emitido`,"logs.detail.stage.terminal":`resposta entregue`,"logs.detail.resend.permitted":`Poderia ser reenviada`,"logs.detail.resend.permittedAfterRepair":`Poderia ser reenviada após reparo`,"logs.detail.resend.refusedAmbiguous":`Não reenviada: estado do upstream desconhecido`,"logs.detail.resend.refusedCommitted":`Não reenviada: o chamador já viu a saída`,"logs.detail.resend.refusedFutile":`Não reenviada: a mesma requisição falharia de novo`,"logs.detail.reason.usage_missing":`O uso não foi informado.`,"logs.detail.reason.usage_unsupported":`Este provedor não informa o uso.`,"logs.detail.reason.output_missing":`Nenhuma contagem positiva de tokens de saída foi informada.`,"logs.detail.reason.invalid_duration":`A duração da requisição não é válida.`,"logs.detail.reason.price_unmatched":`Nenhum preço correspondente foi encontrado.`,"logs.detail.reason.invalid_cache_breakdown":`Os detalhes de tokens de cache conflitam com o total de tokens de entrada.`,"logs.detail.reason.invalid_usage":`O uso contém um valor de token inválido.`,"logs.detail.reason.combo_attempt_unavailable":`Pelo menos uma tentativa do combo não pôde ser precificada.`,"logs.detail.estimate.usage_estimated":`O uso do provedor é estimado.`,"logs.detail.estimate.cache_detail_missing":`Os detalhes de cache estavam indisponíveis; a entrada é uma estimativa de limite superior.`,"logs.detail.estimate.expected_price_overlay":`Foi usado um preço de tabela esperado verificado.`,"logs.detail.estimate.provider_cost_overlay":`Foi usada uma sobreposição de preço configurada no provedor.`,"logs.detail.estimate.priority_lower_bound":`O preço Priority confirmado está indisponível; a estimativa exibida é um limite inferior conhecido.`,"logs.col.error":`Erro`,"logs.col.upstreamReason":`Motivo do upstream`,"logs.col.duration":`Duração`,"logs.modelTooltip.model":`modelo`,"logs.modelTooltip.resolvedModel":`modelo resolvido`,"logs.modelTooltip.servedModel":`modelo atendido`,"logs.modelTooltip.wireModel":`modelo no wire`,"logs.modelRerouteTitle":`O upstream atendeu um modelo diferente do enviado`,"logs.modelTooltip.requestedTier":`nível solicitado`,"logs.modelTooltip.configuredTier":`nível configurado`,"logs.modelTooltip.responseTier":`nível da resposta`,"logs.modelTooltip.supportsTier":`suporte a nível`,"logs.modelTooltip.tierOutcome.confirmed":`confirmado`,"logs.modelTooltip.tierOutcome.assumed":`presumido`,"logs.modelTooltip.tierOutcome.downgraded":`rebaixado`,"logs.modelTooltip.tierOutcome.unknown":`desconhecido`,"logs.tokens.reported":`informado`,"logs.tokens.unreported":`não informado`,"logs.tokens.unsupported":`não suportado`,"logs.tokens.estimated":`estimado`,"logs.tokens.input":`entrada`,"logs.tokens.output":`saída`,"logs.tokens.cacheRead":`leitura de cache (c)`,"logs.tokens.cacheWrite":`gravação de cache (w)`,"logs.tokens.reasoning":`raciocínio`,"logs.tokens.noCache":`sem dados de cache`,"logs.tokens.contextTotal":`contexto ativo`,"logs.tokens.noCacheNote":`este provedor não informa tokens de cache`,"logs.tokens.noCacheCursor":`Detalhe de cache do Cursor não informado`,"logs.tokens.noCacheCursorNote":`O Cursor não expõe as contagens de tokens de leitura/gravação de cache; isso é desconhecido, não um cache miss confirmado`,"logs.tokens.estimatedNote":`estimado (o provedor não informa o uso exato)`,"logs.details":`Detalhes`,"logs.detailTitle":`Detalhes da requisição`,"logs.detailRaw":`Entrada de log bruta`,"debug.title":`Debug`,"debug.subtitle":`Diagnósticos opcionais de transporte do provedor e de extração de uso. Erros de requisição e 502 permanecem na aba Logs.`,"debug.debug":`Debug do provedor`,"debug.usage":`Extração de uso`,"debug.injection":`Log de injeção`,"debug.claude":`Entrada do Claude`,"debug.claudeInbound.title":`Requisições de entrada do Claude`,"debug.claudeInbound.sub":`O que o Claude Code/Desktop realmente envia (thinking, esforço, metadados) — nenhum texto de prompt é armazenado.`,"debug.claudeInbound.empty":`Nenhuma requisição capturada ainda. Envie uma mensagem pelo Claude enquanto isto estiver ativado.`,"debug.claudeInbound.time":`Hora`,"debug.claudeInbound.endpoint":`Endpoint`,"debug.claudeInbound.model":`Modelo`,"debug.claudeInbound.none":`nenhum`,"debug.reset":`Limpar substituições em tempo de execução`,"debug.refresh":`Atualizar`,"debug.follow":`Acompanhar`,"debug.streamProvider":`Provedor`,"debug.streamUsage":`Uso`,"debug.streamInjection":`Injeção`,"debug.loading":`Carregando configurações de debug…`,"debug.loadFailed":`Não foi possível carregar as configurações de debug.`,"debug.emptyTitle":`O log de debug está desativado`,"debug.empty":`Ative Debug do provedor ou Extração de uso no cartão acima. As linhas aparecem aqui depois que você enviar uma requisição pelo proxy.`,"debug.noLinesTitle":`Aguardando linhas`,"debug.noLines.provider":`O debug do provedor está ativado, mas registra apenas anomalias de transporte (frames descartados ou malformados e eventos de conexão/nova tentativa do Cursor). Uma requisição normal por um provedor como a Anthropic pode não gerar nenhuma linha.`,"debug.noLines.usage":`A extração de uso está ativada, mas nada foi capturado ainda. Envie um chat/requisição pelo Codex e ele aparecerá aqui.`,"debug.noLines.injection":`O log de injeção está ativado, mas nada foi capturado ainda. Ele registra a injeção de orientação multiagente e as decisões de limite de esforço em turnos de colaboração e de subagentes.`,"usage.title":`Uso`,"usage.subtitle":`Contabilização local de tokens do seu proxy. O uso ausente nunca é exibido como zero.`,"usage.loading":`Carregando dados de uso…`,"usage.empty":`Nenhum uso registrado ainda. Envie uma requisição pelo proxy para ver a atividade aqui.`,"usage.loadError":`Não foi possível carregar os dados de uso.`,"usage.range.all":`Tudo`,"usage.range.available":`Histórico disponível`,"usage.historyTruncated":`Os totais cobrem apenas o histórico disponível porque o uso mais antigo não foi carregado.`,"usage.historyTruncatedWindow":`As linhas carregadas têm horários de início de requisição entre {start} e {end}. Entradas anteriores do arquivo foram omitidas pelo limite de leitura, então qualquer período selecionado pode estar incompleto.`,"usage.range.30d":`30d`,"usage.range.7d":`7d`,"usage.card.requests":`Requisições`,"usage.card.measured":`Medidas`,"usage.card.reported":`Informadas`,"usage.card.totalTokens":`Total de tokens`,"usage.card.cachedTokens":`Leituras de cache`,"usage.card.cachedTokensHint":`Tokens do prompt atendidos pelo cache do provedor (leituras). As gravações de cache aparecem abaixo quando houver.`,"usage.card.cacheWriteTokens":`gravações de cache`,"usage.card.coverage":`Cobertura`,"usage.card.activeDays":`Dias ativos`,"usage.section.heatmap":`Atividade diária`,"usage.section.overview":`Visão geral`,"usage.section.models":`Modelos`,"usage.section.providers":`Provedores`,"usage.section.coverage":`Detalhamento da cobertura`,"usage.section.companion":`Barra de menus e widget`,"usage.companion.title":`Barra de menus e widget`,"usage.companion.description":`As configurações aqui controlam o app desktop/de barra de menus do OpenCodex e seu widget.`,"usage.companion.installGuide":`Guia de instalação`,"usage.companion.loading":`Carregando linha do tempo…`,"usage.companion.timelineUnavailable":`Linha do tempo indisponível`,"usage.companion.empty":`Nenhum uso nas últimas {hours} h`,"usage.companion.chartLabel":`Linha do tempo de uso`,"usage.companion.olderRecordsSkipped":`Registros mais antigos foram ignorados`,"usage.companion.settingsUnavailable":`Configurações do companion indisponíveis`,"usage.companion.corrupt":`O arquivo de configurações do companion está corrompido. Os controles mostram os padrões; o salvamento fica pausado até você substituir o arquivo.`,"usage.companion.corruptReset":`Substituir pelos padrões`,"usage.companion.connected":`App da barra de menus conectado · {age}`,"usage.companion.connectedDesktop":`App desktop conectado · {age}`,"usage.companion.installTitle":`Instalar o app desktop`,"usage.companion.installOs":`Sistema operacional`,"usage.companion.osMac":`macOS`,"usage.companion.osWindows":`Windows`,"usage.companion.osLinux":`Linux`,"usage.companion.runningInDesktop":`Você está no app desktop do OpenCodex {version}`,"usage.companion.openInBrowser":`Abrir no navegador`,"usage.companion.installMacStep1":`Baixe OpenCodex-<version>-macos.dmg da versão mais recente e arraste OpenCodex.app para Aplicativos.`,"usage.companion.installMacStep2":`Primeira execução: clique com o botão direito em OpenCodex.app → Abrir (o Gatekeeper pergunta uma vez até o app ser notarizado).`,"usage.companion.installMacStep3":`O app encontra este proxy sozinho; o widget aparece na galeria de widgets depois que o app for executado.`,"usage.companion.installWinStep1":`Baixe OpenCodex-<version>-windows-x64.msi da versão mais recente e execute-o.`,"usage.companion.installWinStep2":`Se o SmartScreen avisar, escolha Mais informações → Executar assim mesmo (o instalador ainda não tem assinatura de código).`,"usage.companion.installWinStep3":`O OpenCodex aparece na bandeja do sistema e se conecta a este proxy, ou inicia o proxy embutido.`,"usage.companion.installLinuxStep1":`Baixe OpenCodex-<version>-linux-x86_64.AppImage (ou o .deb) da versão mais recente.`,"usage.companion.installLinuxStep2":`Use chmod +x no AppImage e execute-o; o ícone na bandeja exige um desktop compatível com AppIndicator.`,"usage.companion.installLinuxStep3":`O app se conecta a este proxy ou inicia o proxy embutido.`,"usage.companion.notConnected":`Nenhum app da barra de menus se conectou a este proxy ainda.`,"usage.companion.lastSeen":`Visto pela última vez {age}`,"usage.companion.installAnother":`Instalar em outro dispositivo`,"usage.companion.saved":`Salvo · {time}`,"usage.companion.saveFailed":`Não foi possível salvar: {error}`,"usage.companion.reset":`Restaurar padrões`,"usage.companion.footer":`O widget mostra as requisições, os tokens e o custo de hoje, além do gráfico configurado aqui, e é atualizado quando o app consulta o proxy.`,"usage.companion.menuBarShows":`A barra de menus mostra`,"usage.companion.menuRequests":`Requisições`,"usage.companion.menuTokens":`Tokens`,"usage.companion.menuCost":`Custo`,"usage.companion.menuQuota":`Cota`,"usage.companion.menuNone":`Somente ícone`,"usage.companion.window":`Janela`,"usage.companion.window6":`6h`,"usage.companion.window24":`24h`,"usage.companion.window72":`3d`,"usage.companion.window168":`7d`,"usage.companion.style":`Estilo`,"usage.companion.styleLine":`Linha`,"usage.companion.styleStacked":`Empilhado`,"usage.companion.metric":`Métrica`,"usage.companion.metricTotal":`Total`,"usage.companion.metricInput":`Entrada`,"usage.companion.metricOutput":`Saída`,"usage.companion.metricCached":`Em cache`,"usage.companion.groupBy":`Agrupar por`,"usage.companion.groupModel":`Modelo`,"usage.companion.groupAccount":`Modelo + conta`,"usage.companion.popoverSections":`Seções do popover`,"usage.companion.sectionToday":`Hoje`,"usage.companion.sectionChart":`Gráfico`,"usage.companion.sectionModels":`Modelos`,"usage.companion.sectionCost":`Custo`,"usage.companion.sectionAccounts":`Contas`,"usage.companion.advanced":`Avançado`,"usage.companion.aggregation":`Agregação`,"usage.companion.aggregationSum":`Soma`,"usage.companion.aggregationAverage":`Média`,"usage.companion.aggregationMax":`Máx.`,"usage.companion.menuText":`Texto da barra de menus`,"usage.companion.placeholders":`Marcadores:`,"usage.companion.modelsOnChart":`Modelos no gráfico`,"usage.companion.modelsCount":`{selected} de {total} no gráfico`,"usage.companion.modelsShowAll":`Mostrar todos`,"usage.companion.hideProviders":`Ocultar provedores`,"usage.workspace.report":`Relatório de uso`,"usage.workspace.sections":`Seções de uso`,"usage.coverage.measured":`Medido`,"usage.coverage.reported":`Informado pelo provedor`,"usage.coverage.estimated":`Estimado`,"usage.coverage.note":`As entradas medidas incluem contagens de tokens informadas pelo provedor e estimadas. Requisições sem informação ou sem suporte são registradas, mas nunca contabilizadas como zero token.`,"usage.search.models":`Buscar modelos…`,"usage.col.requests":`Requisições`,"usage.col.measured":`Medido`,"usage.col.reported":`Informado`,"usage.col.inputTokens":`Tokens de entrada`,"usage.col.outputTokens":`Tokens de saída`,"usage.col.cacheHits":`Acertos de cache`,"usage.col.cacheWrites":`Gravações em cache`,"usage.col.cacheHitRate":`Taxa de acerto`,"usage.cacheHitRate.partial":`Média sobre {measured} de {total} tokens de entrada; as demais requisições não informaram detalhes de cache.`,"usage.cacheHitRate.unmeasured":`Nenhuma requisição desta linha informou detalhes de cache, então não há taxa de acerto para calcular a média.`,"usage.unavailable":`—`,"usage.col.tokens":`Tokens`,"usage.col.apiListPrice":`Preço de tabela da API`,"usage.col.share":`Participação`,"usage.heatmap.less":`Menos`,"usage.heatmap.more":`Mais`,"usage.dayMon":`Seg`,"usage.dayWed":`Qua`,"usage.dayFri":`Sex`,"usage.heatmap.tooltipTokens":`{tokens} tokens`,"usage.chart.dayDetail":`{date}: {requests} requisições, {tokens} tokens`,"usage.heatmap.keyboardLabel":`Use Cima e Baixo para mover por dia; Esquerda e Direita para mover por semana.`,"usage.heatmap.tooltipRequests":`{requests} requisições`,"nav.storage":`Armazenamento`,"storage.title":`Armazenamento`,"storage.subtitle":`Veja o que está ocupando o CODEX_HOME. A limpeza nunca afeta sessões ativas.`,"storage.loading":`Analisando o armazenamento…`,"storage.empty":`CODEX_HOME está vazio ou ausente — nada a relatar.`,"storage.error":`Falha na análise do armazenamento. Verifique se CODEX_HOME aponta para um diretório válido.`,"storage.refresh":`Reanalisar`,"storage.rescanned":`Análise concluída.`,"storage.card.total":`Tamanho total`,"storage.card.files":`Arquivos`,"storage.card.home":`CODEX_HOME`,"storage.snapshot.lastScan":`Última análise`,"storage.snapshot.scanning":`Analisando…`,"storage.snapshot.unavailable":`Nenhuma análise ainda.`,"storage.cleanupCard.title":`Liberar espaço`,"storage.cleanupCard.tabs":`Opções de limpeza`,"storage.cleanupCard.tab.policy":`Política`,"storage.cleanupCard.tab.quarantine":`Quarentena`,"storage.cleanup.noArchives":`Nenhuma sessão arquivada para limpar.`,"storage.section.buckets":`Categorias`,"storage.section.largest":`Maiores arquivos`,"storage.workspace.overview":`Visão geral`,"storage.workspace.selectBucket":`Selecione uma categoria na lista para ver o detalhamento.`,"storage.col.bucket":`Categoria`,"storage.col.size":`Tamanho`,"storage.col.files":`Arquivos`,"storage.col.oldest":`Mais antigo`,"storage.col.newest":`Mais recente`,"storage.col.rows":`Linhas do BD`,"storage.rows.unknown":`desconhecido (bloqueado)`,"storage.bucket.sessions":`Sessões ativas`,"storage.bucket.archived_sessions":`Sessões arquivadas`,"storage.bucket.logs_db":`Banco de logs`,"storage.bucket.state_db":`Banco de estado`,"storage.bucket.attachments":`Anexos`,"storage.bucket.deletion_manifests":`Manifestos de exclusão`,"storage.bucket.other":`Outros`,"storage.cleanup.title":`Limpeza de arquivados`,"storage.cleanup.help":`Remove as sessões arquivadas mais antigas por porcentagem. Sessões ativas nunca são afetadas. A quarentena é o padrão — os arquivos são movidos para CODEX_HOME/.trash.`,"storage.cleanup.slider":`Porcentagem dos arquivados mais antigos`,"storage.cleanup.percent":`{percent}%`,"storage.cleanup.preset":`{percent}`,"storage.cleanup.preview":`Pré-visualizar`,"storage.cleanup.confirmTitle":`Confirmar limpeza de arquivados`,"storage.cleanup.confirmBody":`Isto processará {count} arquivo(s) arquivado(s) (~{size}), os {percent}% mais antigos.`,"storage.cleanup.moreFiles":`…e mais {n}`,"storage.cleanup.permanent":`Excluir permanentemente (ignorar quarentena)`,"storage.cleanup.permanentWarn":`A exclusão permanente não pode ser desfeita.`,"storage.cleanup.quarantineNote":`Os arquivos são movidos para .trash em CODEX_HOME. Você pode restaurá-los na aba Quarentena.`,"storage.cleanup.cancel":`Cancelar`,"storage.cleanup.confirmQuarantine":`Colocar em quarentena`,"storage.cleanup.confirmPermanent":`Excluir permanentemente`,"storage.cleanup.doneQuarantine":`{count} arquivo(s) em quarentena ({size}).`,"storage.cleanup.donePermanent":`{count} arquivo(s) excluído(s) permanentemente ({size}).`,"storage.cleanup.skippedReferenced":`{count} arquivo(s) referenciado(s) ignorado(s).`,"storage.cleanup.previewFailed":`Falha na pré-visualização.`,"storage.cleanup.cleanupFailed":`Falha na limpeza.`,"storage.cleanup.err.codex_busy":`O Codex está usando o state.sqlite — tente novamente após encerrar o Codex.`,"storage.cleanup.err.stale_preview":`Os arquivos arquivados mudaram desde a pré-visualização — execute a pré-visualização novamente.`,"storage.cleanup.err.restore_pending_overlap":`Os arquivos selecionados se sobrepõem a uma restauração incompleta da lixeira — conclua ou tente novamente a restauração primeiro.`,"storage.cleanup.err.referenced_history":`Os arquivos selecionados ainda são referenciados por históricos bifurcados ou paginados.`,"storage.cleanup.err.invalid_digest":`O digest da pré-visualização está ausente ou é inválido.`,"storage.cleanup.err.invalid_mode":`O modo de limpeza deve ser quarentena ou permanente.`,"storage.cleanup.err.fs_failed":`Falha na limpeza do sistema de arquivos. Algumas alterações podem já ter sido aplicadas — verifique CODEX_HOME/.trash e qualquer caminho de recuperação exibido.`,"storage.cleanup.err.fs_failed_trash":`Falha na limpeza do sistema de arquivos. Algumas alterações podem já ter sido aplicadas — verifique {trashDir} e manifest.json para arquivos recuperáveis.`,"storage.cleanup.err.db_reconcile_failed":`Não foi possível atualizar o banco de estado do Codex.`,"storage.cleanup.err.cleanup_failed":`Falha na limpeza.`,"storage.trash.title":`Quarentena`,"storage.trash.help":`Sessões arquivadas movidas para CODEX_HOME/.trash. A restauração devolve os arquivos JSONL e as linhas de thread.`,"storage.trash.empty":`Nenhuma entrada em quarentena.`,"storage.trash.loading":`Carregando quarentena…`,"storage.trash.col.when":`Em quarentena desde`,"storage.trash.col.files":`Arquivos`,"storage.trash.col.size":`Tamanho`,"storage.trash.col.mode":`Modo`,"storage.trash.col.id":`Entrada`,"storage.trash.restore":`Restaurar`,"storage.trash.confirmTitle":`Restaurar entrada da quarentena?`,"storage.trash.confirmBody":`Restaurar {count} arquivo(s) (~{size}) de {id} para as sessões arquivadas.`,"storage.trash.cancel":`Cancelar`,"storage.trash.confirmRestore":`Restaurar`,"storage.trash.done":`{count} arquivo(s) restaurado(s) ({size}).`,"storage.trash.restoreFailed":`Falha na restauração.`,"storage.trash.listFailed":`Não foi possível listar as entradas da quarentena.`,"storage.trash.mode.quarantine":`quarentena`,"storage.trash.mode.permanent":`permanente (incompleto)`,"storage.trash.err.codex_busy":`O Codex está usando o state.sqlite — tente novamente após encerrar o Codex.`,"storage.trash.err.invalid_trash":`O ID da entrada da lixeira está ausente ou é inválido.`,"storage.trash.err.missing_trash":`A entrada da lixeira não foi encontrada.`,"storage.trash.err.dest_exists":`O destino da restauração já existe — remova ou renomeie o arquivo arquivado e tente novamente.`,"storage.trash.err.fs_failed":`Falha na restauração do sistema de arquivos. Alguns arquivos podem já ter sido restaurados — verifique archived_sessions e .trash.`,"storage.trash.err.db_reconcile_failed":`Não foi possível restaurar as linhas do banco de estado do Codex.`,"storage.trash.err.storage_mutation_busy":`Outra limpeza ou restauração de armazenamento está em andamento — tente novamente em instantes.`,"storage.trash.err.restore_failed":`Falha na restauração.`,"storage.trash.err.restore_worker_timeout":`A restauração demorou demais (mais de 10 minutos) e foi interrompida.`,"storage.trash.err.restore_worker_aborted":`A restauração foi cancelada durante o encerramento.`,"storage.trash.err.restore_worker_failed":`O worker de restauração travou ou falhou inesperadamente.`,"storage.policy.title":`Política de limpeza automática`,"storage.policy.help":`Limpeza em lote opcional quando as sessões arquivadas excedem um limite. Desativada por padrão — nunca é ativada automaticamente.`,"storage.policy.loading":`Carregando política…`,"storage.policy.loadFailed":`Não foi possível carregar a política de limpeza.`,"storage.policy.saveFailed":`Não foi possível salvar a política de limpeza.`,"storage.policy.runFailed":`Falha na execução da política.`,"storage.policy.alreadyRunning":`Já há uma execução da política de limpeza em andamento.`,"storage.policy.invalid":`Valores de política inválidos.`,"storage.policy.enabled":`Ativar limpeza automática`,"storage.policy.enabledHint":`O padrão é desativada. Quando ativada, executa apenas no agendamento escolhido (ou em Executar agora).`,"storage.policy.threshold":`Quando o tamanho dos arquivados exceder (GiB)`,"storage.policy.trigger":`Gatilho`,"storage.policy.target":`Alvo da limpeza`,"storage.policy.targetPercent":`Remover os arquivados mais antigos (%)`,"storage.policy.targetReduce":`Reduzir o tamanho dos arquivados para (GiB)`,"storage.policy.thresholdInc":`Aumentar limite`,"storage.policy.thresholdDec":`Diminuir limite`,"storage.policy.percentInc":`Aumentar porcentagem`,"storage.policy.percentDec":`Diminuir porcentagem`,"storage.policy.reduceInc":`Aumentar tamanho alvo`,"storage.policy.reduceDec":`Diminuir tamanho alvo`,"storage.policy.schedule":`Agendamento`,"storage.policy.schedule.manual":`Somente manual`,"storage.policy.schedule.startup":`Ao iniciar o proxy`,"storage.policy.schedule.daily":`Diário`,"storage.policy.schedule.weekly":`Semanal`,"storage.policy.mode":`Modo de exclusão`,"storage.policy.mode.quarantine":`Quarentena (padrão)`,"storage.policy.mode.permanent":`Exclusão permanente`,"storage.policy.permanentWarn":`O modo permanente não pode ser desfeito. Prefira a quarentena, a menos que tenha certeza.`,"storage.policy.lastRun":`Última execução`,"storage.policy.lastRunDetail":`Removidos {count} · liberados {size}`,"storage.policy.nextRun":`Próxima execução`,"storage.policy.never":`Nunca`,"storage.policy.save":`Salvar`,"storage.policy.runNow":`Executar agora`,"storage.policy.running":`Executando…`,"storage.policy.saved":`Política salva.`,"storage.policy.skippedDisabled":`A política está desativada — ative-a primeiro.`,"storage.policy.skippedUnder":`O tamanho dos arquivados está abaixo do limite — nada a fazer.`,"storage.policy.skippedEmpty":`Nenhum candidato arquivado correspondeu ao alvo.`,"storage.policy.doneQuarantine":`A política colocou {count} arquivo(s) em quarentena ({size}).`,"storage.policy.donePermanent":`A política excluiu permanentemente {count} arquivo(s) ({size}).`,"storage.policy.metadataSaveWarning":`A execução da política terminou, mas seus metadados de agendamento não puderam ser salvos.`,"modal.addNamed":`Adicionar: {label}`,"modal.add":`Adicionar provedor`,"modal.search":`Buscar provedores…`,"modal.logInWith":`Entrar com {label}`,"modal.waitingBrowser":`Aguardando o navegador…`,"modal.providerName":`Nome do provedor`,"modal.adapter":`Adaptador`,"modal.baseUrl":`URL base`,"modal.endpoint":`Endpoint`,"modal.endpoint.tokenPlan":`Plano de tokens`,"modal.endpoint.payAsYouGo":`Pague conforme o uso`,"modal.endpoint.custom":`Personalizado`,"modal.defaultModel":`Modelo padrão (opcional)`,"modal.allowPrivateNetwork":`Permitir rede local/privada`,"modal.allowPrivateNetworkHint":`Ative apenas para provedores hospedados por você de propósito. Os endpoints de metadados continuam bloqueados.`,"modal.nameRequired":`O nome do provedor é obrigatório`,"modal.baseUrlRequired":`A URL base é obrigatória`,"modal.networkError":`Erro de rede — o proxy está em execução?`,"modal.loginFailStart":`Falha ao iniciar o login`,"modal.waitingLogin":`Aguardando login no navegador…`,"modal.loggingIn":`Entrando…`,"modal.loginTimeout":`Tempo de login esgotado — tente novamente.`,"modal.back":`Voltar`,"modal.badge.oauth":`OAuth`,"modal.customProvider":`Provedor personalizado`,"modal.failedStatus":`Falhou ({status})`,"modal.loginError":`Erro de login: {error}`,"modal.badge.codexLogin":`Login do Codex`,"modal.badge.local":`Local`,"modal.badge.apiKey":`Chave de API`,"modal.badge.direct":`Direto`,"modal.badge.pool":`Pool`,"modal.badge.free":`Grátis`,"modal.badge.sponsor":`Patrocinador`,"modal.badge.subscriptionCli":`CLI por assinatura`,"pws.sponsor.orcaTitle":`Um modelo para cada prompt`,"pws.sponsor.orcaDescription":`Um gateway compatível com OpenAI com roteamento adaptativo e failover automático.`,"pws.sponsor.tokenlabTitle":`Uma chave de API para os principais modelos`,"pws.sponsor.tokenlabDescription":`Responses, Chat Completions, streaming e chamada de ferramentas para agentes de programação, com modo de entrega à sua escolha e cobrança conforme o uso.`,"pws.sponsor.visit":`Conhecer {provider}`,"pws.sponsor.console":`Abrir console`,"modal.invalidPreset":`Este preset de provedor integrado está incompleto. Reinicie o proxy e tente novamente.`,"modal.freeTierTitle":`Plano gratuito`,"modal.subscriptionCliTitle":`CLI por assinatura, não chave de API`,"modal.subscriptionCliWarning":`Este provedor não usa chave de API. Ele aciona a CLI oficial do Claude Code autenticada nesta máquina ({cmd}) e cobra da conta de assinatura do Claude. O OpenCodex não armazena nenhuma chave para ele, e uma chave informada aqui nunca é usada. Para cobrança por chave de API, adicione {apiProvider}.`,"modal.freeTierDefault":`Não requer chave de API. Funciona de imediato.`,"modal.tab.accounts":`Contas`,"modal.tab.free":`Grátis`,"modal.tab.local":`Local`,"modal.tab.paid":`Pago`,"modal.noteMore":`Mostrar descrição completa`,"modal.searchResults":`{count} resultados em {tiers}`,"modal.accountsHint":`Entre aqui no ChatGPT/Codex, em provedores OAuth e em contas com chave de API. A OpenAI já está integrada — faça login em vez de adicioná-la novamente.`,"modal.accountsCodexAuthLink":`Autenticação do Codex`,"modal.notListed":`Provedor não listado? Adicione um personalizado`,"modal.catalogLoading":`Carregando catálogo…`,"modal.accountLogin":`Entrar`,"modal.accountLogout":`Sair`,"modal.accountAdd":`Adicionar conta`,"modal.accountManage":`Gerenciar`,"modal.accountCodexPool":`Pool de contas do ChatGPT`,"modal.accountLoggedIn":`Conectado`,"modal.accountLoggedOut":`Não conectado`,"quota.fiveHourLimit":`Limite de 5 horas`,"quota.ageMinutes":`{n}min`,"quota.ageHours":`{n}h`,"quota.ageDays":`{n}d`,"quota.observedAgo":`Observado há {age}`,"quota.observedHint":`A Meta informa o uso apenas durante uma resposta em streaming, então este é o último valor visto, não uma leitura em tempo real.`,"quota.weeklyLimit":`Limite semanal`,"quota.monthlyLimit":`Limite de 30 dias`,"quota.cursorFirstParty":`Modelos próprios`,"quota.cursorApiUsage":`Uso da API`,"quota.totalSubscriptionCredits":`Total de créditos da assinatura`,"quota.creditsBalance":`Saldo de créditos`,"quota.creditsPeriodEnds":`O período de cobrança termina em {date}`,"quota.usedPercent":`{pct}% usado`,"quota.limitReached":`Limite atingido`,"quota.resetsToday":`Redefine hoje às {time}`,"quota.resetsTomorrow":`Redefine amanhã às {time}`,"quota.resetsAt":`Redefine {when}`,"quota.resetsRelativeMinutes":`Redefine em {n} min`,"quota.resetsRelativeHours":`Redefine em {n} h`,"pws.status.ready":`Pronto`,"pws.status.needsSetup":`Requer configuração`,"pws.status.needsAttention":`Requer atenção`,"pws.auth.chatgptPassthrough":`Passthrough do ChatGPT`,"pws.auth.noKey":`Sem chave necessária`,"pws.freeTitle":`Preço gratuito (uma chave ainda pode ser necessária)`,"pws.localTitle":`Runtime local`,"pws.modelCountOne":`1 modelo`,"pws.modelCount":`{count} modelos`,"pws.rail.suffixDefault":` · padrão`,"pws.rail.suffixLocal":` · local`,"pws.rail.suffixFree":` · grátis`,"pws.rail.selectAria":`Selecionar {name} — {status}{suffix}`,"pws.searchPlaceholder":`Buscar provedores…`,"pws.filterAria":`Filtrar provedores`,"pws.providerFiltersAria":`Filtros de provedores`,"pws.filters":`Filtros`,"pws.filterStatus":`Status`,"pws.pricing":`Preço`,"pws.paid":`Pago`,"pws.filterType":`Tipo`,"pws.type.cloud":`Nuvem`,"pws.type.local":`Local`,"pws.type.selfHosted":`Autohospedado`,"pws.type.login":`Login`,"pws.sort":`Ordenar`,"pws.sortProvidersAria":`Ordenar provedores`,"pws.sort.az":`A–Z`,"pws.sort.za":`Z–A`,"pws.sort.freePaid":`Grátis primeiro`,"pws.sort.paidFree":`Pagos primeiro`,"pws.sort.accountsFirst":`Contas primeiro`,"pws.resetAll":`Limpar tudo`,"pws.providerList":`Lista de provedores`,"pws.providersAria":`Provedores`,"pws.groupReady":`Prontos ({count})`,"pws.groupNeedsSetup":`Requerem configuração ({count})`,"pws.groupDisabled":`Desativados ({count})`,"pws.noSearchResults":`Nenhum provedor corresponde à busca.`,"pws.noMatchFilters":`Nenhum provedor corresponde aos filtros.`,"pws.noProvidersConfigured":`Nenhum provedor configurado.`,"pws.workspaceMainAria":`Detalhes do provedor`,"pws.detailComingSoon":`Visão detalhada em breve — use a visão clássica para gerenciar este provedor.`,"pws.selectPrompt":`Selecione um provedor na lista.`,"pws.connectFirst":`Conecte seu primeiro provedor`,"pws.empty.browseFree":`Explorar provedores gratuitos`,"pws.empty.browseFreeDesc":`Comece sem assinatura`,"pws.empty.connectAccount":`Conectar uma conta`,"pws.empty.connectAccountDesc":`Use seu login do ChatGPT ou do provedor`,"pws.empty.addEndpoint":`Adicionar um endpoint`,"pws.empty.addEndpointDesc":`URL base e chave de API personalizadas`,"pws.tab.overview":`Visão geral`,"pws.tab.models":`Modelos`,"pws.tab.usage":`Uso`,"pws.tab.accounts":`Contas`,"pws.tab.settings":`Configurações`,"pws.connection":`Conexão`,"pws.status.connected":`Conectado`,"pws.attentionTitle":`Requer atenção`,"pws.attention.reauth":`A conta ativa precisa ser autenticada novamente`,"pws.attention.reauthForward":`A conta ativa do Codex precisa ser autenticada novamente — abra Contas para corrigir`,"pws.attention.missingCredentials":`Credenciais ausentes`,"pws.cell.auth":`Autenticação`,"pws.cell.note":`Observação`,"pws.cell.defaultModel":`Modelo padrão`,"pws.statsAria":`Estatísticas do provedor`,"pws.statsTitle":`Estatísticas`,"pws.stats.totalRequests":`Requisições (30d)`,"pws.stats.totalTokens":`Tokens (30d)`,"pws.stats.quotaUpdated":`Cota atualizada`,"pws.stats.quotaTracked":`Limites de taxa acompanhados na aba Uso.`,"pws.stats.source":`Fonte`,"pws.usageLast30d":`Uso (últimos 30 dias)`,"pws.estimatedCost":`Custo estimado`,"pws.costDisclaimer":`Estimativa pelo preço de tabela da API, não uma cobrança real.`,"pws.unresolvedRequestedModel":`Inclui uso de modelo solicitado não resolvido`,"pws.currentAccountUsage":`Uso da conta atual`,"pws.quotaUnsupported":`A consulta de cota não é compatível com esta conta.`,"pws.quotaUnobserved":`Nenhuma observação de uso ainda.`,"pws.quotaCheckCompleted":`Verificação de cota concluída`,"pws.modelBreakdown":`Detalhamento por modelo`,"pws.col.model":`Modelo`,"pws.col.cost":`Custo est.`,"pws.col.tokens":`Tokens`,"pws.col.requests":`Req.`,"pws.col.share":`Part.`,"pws.tokenInput":`Entrada`,"pws.tokenOutput":`Saída`,"pws.metricRequests":`requisições`,"pws.metricTokens":`tokens`,"pws.usageUnavailable":`Nenhum uso registrado ainda.`,"pws.rateLimits":`Limites de taxa`,"pws.quotaUnavailable":`Sem dados de cota para este provedor.`,"pws.accountQuotaUnavailable":`Dados de limite de taxa temporariamente indisponíveis; exibindo os últimos valores conhecidos, quando houver.`,"pws.quotaFailure.account_unavailable":`Os detalhes da conta estão indisponíveis para esta verificação de cota.`,"pws.quotaFailure.access_denied":`O provedor negou acesso aos dados de cota.`,"pws.quotaFailure.rate_limited":`O provedor limitou a taxa da verificação de cota.`,"pws.quotaFailure.upstream_error":`O provedor não conseguiu concluir a verificação de cota.`,"pws.quotaFailure.redirect_blocked":`O endpoint de cota retornou um redirecionamento bloqueado.`,"pws.quotaFailure.destination_blocked":`O destino da cota foi bloqueado pela política de rede.`,"pws.quotaFailure.dns_failed":`Não foi possível resolver o hostname da cota.`,"pws.quotaFailure.timeout":`A requisição de cota expirou.`,"pws.quotaFailure.transport_error":`A conexão de cota falhou.`,"pws.quotaFailure.response_unusable":`O provedor retornou dados de cota inutilizáveis.`,"pws.selected":`Selecionado`,"pws.copyModelId":`Copiar ID`,"pws.modelCopied":`Copiado!`,"pws.modelsAvailable":`{count} disponíveis`,"pws.modelSearchPlaceholder":`Filtrar modelos…`,"pws.modelsLoading":`Carregando modelos…`,"pws.modelsLoadFailed":`Não foi possível carregar os modelos.`,"pws.modelsNeedsReauth":`A conta precisa fazer login novamente para a descoberta de modelos ao vivo funcionar. Exibindo os modelos configurados por enquanto.`,"pws.modelsConfiguredFallback":`Exibindo os modelos configurados (descoberta ao vivo indisponível).`,"pws.modelsTruncated":`Exibindo os primeiros {shown} de {total} modelos. Use o filtro para refinar a lista.`,"pws.retry":`Tentar novamente`,"pws.noModels":`Nenhum modelo descoberto para este provedor.`,"pws.noModelMatch":`Nenhum modelo corresponde ao filtro.`,"pws.adapterBaseRequired":`Adaptador e URL base são obrigatórios.`,"pws.addAccount":`Adicionar conta`,"pws.addKey":`Adicionar chave de API`,"pws.apiKeys":`Chaves de API`,"pws.authMode":`Modo de autenticação`,"pws.availableAccounts":`Contas disponíveis`,"pws.accountOrdinal":`Conta {count}`,"pws.accountsLoading":`Carregando contas…`,"pws.accountsLoadFailed":`Não foi possível carregar as contas.`,"pws.retryAccounts":`Tentar novamente`,"pws.noAccounts":`Nenhuma conta conectada ainda.`,"pws.cockpitImportDescription":`Importe uma exportação JSON do Antigravity do Cockpit Tools a partir deste dispositivo. O conteúdo do arquivo não é exibido.`,"pws.cockpitImportFileLabel":`Exportação JSON do Antigravity do Cockpit Tools`,"pws.cockpitImportChooseFile":`Escolher arquivo JSON`,"pws.cockpitImporting":`Importando…`,"pws.cockpitImportInvalid":`O arquivo selecionado não é uma exportação JSON válida ou é grande demais.`,"pws.cockpitImportFailed":`Não foi possível concluir a importação das contas.`,"pws.cockpitImportComplete":`Importação concluída: {imported} importadas, {updated} atualizadas, {failed} com falha, {unsupported} sem suporte.`,"pws.accountSwitching":`Alternando…`,"pws.accountCurrent":`Conta atual`,"pws.accountPausedHint":`Excluída da seleção automática, das novas tentativas, da recuperação de cooldown, da seleção manual e da renovação proativa de token até ser retomada.`,"pws.defaultModelNone":`Nenhum (usar o padrão do provedor)`,"pws.discardSettings":`Descartar`,"pws.jsonEditorDesc":`Edite a configuração JSON bruta do provedor. As alterações são salvas imediatamente.`,"pws.jsonEditorTitle":`Editor JSON — {name}`,"pws.jsonRestore":`Restaurar`,"pws.jsonSave":`Salvar`,"pws.loggedInTitle":`Conectado`,"pws.notLoggedInTitle":`Não conectado`,"pws.note":`Observação`,"pws.responsesReasoningReplay":`Reenviar raciocínio em texto simples`,"pws.responsesReasoningReplayHint":`Desativado por padrão. Envia o raciocínio anterior em texto simples a este endpoint e pode aumentar o uso de tokens. Ative apenas se o endpoint aceitar esse reenvio.`,"pws.allowPrivateNetwork":`Permitir rede local/privada`,"pws.liveModels":`Descobrir modelos a partir do provedor`,"pws.liveModelsDesc":`Busca o catálogo de modelos ao vivo do provedor. Desative para usar apenas os modelos configurados/estáticos.`,"pws.xaiChatOptIn":`Usar Chat Completions para Grok 4.5 e 4.6`,"pws.xaiChatOptInDesc":`Desativado seleciona Responses. Requisições OAuth Responses o usam por padrão. Os demais modelos Grok e o comportamento por plano permanecem inalterados.`,"pws.xaiChatOptInMixed":`Apenas um modelo usa Chat.`,"pws.cursorTransport":`Transporte do Cursor`,"pws.cursorTransportHttp2":`HTTP/2 (padrão)`,"pws.cursorTransportHttp1":`HTTP/1.1 (compatibilidade com proxy)`,"pws.cursorTransportDesc":`Use HTTP/1.1 quando seu proxy não conseguir transportar de forma confiável o stream HTTP/2 do Cursor.`,"pws.optionalPlaceholder":`Opcional`,"pws.providerId":`ID do provedor`,"pws.reauth":`Requer nova autenticação`,"pws.reauthenticate":`Autenticar novamente`,"pws.copyDoctor":`Copiar ocx doctor`,"pws.doctorCopied":`Copiado`,"pws.doctorCopyUnavailable":`Área de transferência indisponível`,"pws.healthCooldownHint":`Aguarde o fim do cooldown. Não teste esta conta ainda.`,"pws.healthLabel.rateLimited":`Limite de requisições atingido`,"pws.healthLabel.quotaLimited":`Cota esgotada`,"pws.healthLabel.reauthRequired":`Reautenticação necessária`,"pws.healthLabel.refreshFailed":`Falha na renovação`,"pws.healthLabel.metadataMismatch":`Metadados divergentes`,"pws.healthLabel.validationPending":`Validação pendente`,"pws.healthSummary.validationPending":`{provider} {account}: registrada com a cota esgotada. Após a cota se recuperar, atualize as cotas para executar uma pequena requisição de validação. O roteamento permanece desativado até que ela tenha êxito.`,"pws.healthLabel.credentialConflict":`Conflito de credenciais`,"pws.healthSummary.rateLimited":`{provider} {account}: limite de requisições atingido até {until}. O roteamento desta conta fica pausado até lá.`,"pws.healthSummary.quotaLimited":`{provider} {account}: cota esgotada até {until}. O roteamento desta conta fica pausado até lá.`,"pws.healthSummary.reauthRequired":`{provider} {account}: reautenticação necessária.`,"pws.healthSummary.credentialConflict":`{provider} {account}: conflito de credenciais.`,"pws.healthSummary.metadataMismatch":`{provider} {account}: metadados divergentes.`,"pws.healthSummary.staleCredentials":`{provider} {account}: credenciais incompletas.`,"pws.removeConfirm":`Remover`,"pws.removeConfirmBody":`Remover o provedor "{name}"? Esta ação não pode ser desfeita.`,"pws.removeDefaultConfirmBody":`Remover o provedor padrão "{name}"? "{defaultProvider}" passará a ser o provedor padrão. Esta ação não pode ser desfeita.`,"pws.removeConfirmTitle":`Remover provedor`,"pws.saveSettings":`Salvar`,"pws.keySelection":`Seleção de chave API`,"pws.keyActive":`Priorizar a chave ativa (comportamento atual)`,"pws.keyLimitInvalid":`Os limites por chave devem ser positivos e estar no intervalo permitido; intervalo e simultaneidade devem ser números inteiros.`,"pws.keyRoundRobin":`Round-robin`,"pws.keyLimits":`Limites por chave`,"pws.keySharedQuota":`Os limites do provedor continuam valendo para todas as chaves. Chaves do mesmo projeto podem compartilhar cotas; RPM não limita tokens nem o orçamento diário.`,"pws.keyHandle":`ID da chave`,"pws.keyStarts":`Iniciadas`,"pws.keyInFlight":`Em andamento`,"pws.keyWait":`Espera`,"pws.keyCooldown":`Intervalo de recuperação`,"pws.pacingTitle":`Ritmo de requisições`,"pws.pacingDesc":`Distribui uniformemente o início das requisições de saída deste provedor. Respostas em streaming podem se sobrepor.`,"pws.pacingEnabled":`Ativado`,"pws.pacingRpm":`Requisições por minuto`,"pws.pacingConcurrency":`Máximo de requisições simultâneas`,"pws.pacingRpmUnit":`RPM`,"pws.pacingCapUnit":`×`,"pws.pacingDelay":`Intervalo mínimo (ms)`,"pws.pacingSlowerWins":`Prevalece o limite mais lento do provedor. As substituições por modelo só podem acrescentar mais atraso ou reduzir o limite de simultaneidade.`,"pws.pacingQueued":`na fila`,"pws.pacingNextSlot":`até o próximo slot`,"pws.pacingLastModel":`último modelo`,"pws.pacingNone":`Nenhum`,"pws.pacingModelOverrides":`Substituições por modelo`,"pws.pacingModel":`Modelo`,"pws.pacingAdd":`Adicionar substituição`,"pws.pacingRemove":`Remover`,"pws.pacingRemoveModel":`Remover a substituição de ritmo de requisições de {model}`,"pws.pacingRuleRequired":`Ative o ritmo de requisições somente após definir um limite do provedor ou uma substituição por modelo.`,"pws.pacingCapInvalid":`O máximo de requisições simultâneas deve ser um número inteiro igual ou maior que 1.`,"pws.saving":`Salvando…`,"pws.settingsSaved":`Configurações salvas.`,"pws.accountModeSaved":`Modo de conta salvo.`,"pws.accountModeFailed":`Não foi possível alternar o modo de conta.`,"pws.accountModeConfirm":`Alternar o modo de conta da OpenAI? As conversas em andamento serão reatribuídas ao conjunto de contas do outro modo, e o uso de cota passará a ser contabilizado no novo modo.`,"pws.settingsUnsavedBar":`Você tem alterações não salvas.`,"pws.unsavedLeaveBody":`Você tem alterações não salvas. Salvar antes de sair?`,"pws.unsavedLeaveTitle":`Alterações não salvas`,"pws.attentionRequired":`Requer atenção`,"pws.attentionAria":`{name}: {reason}`,"pws.missingCredentials":`Credenciais ausentes`,"pws.editJsonDesc":`Edite a configuração bruta do proxy em JSON`,"pws.updatesUnavailable":`As atualizações de provedores não estão disponíveis.`,"pws.dashboard.title":`Visão geral dos provedores`,"pws.dashboard.subtitle":`Gerencie todos os seus provedores de modelos em um só lugar.`,"pws.dashboard.rateLimits":`LIMITES DE REQUISIÇÕES`,"pws.capacity.estimate":`Estimativa do pool por pesos configurados`,"pws.capacity.currentAccount":`Conta efetiva atual`,"pws.capacity.nextRecovery":`Próxima recuperação de capacidade`,"pws.capacity.recoveryShare":`+{percent}% de capacidade do pool`,"pws.capacity.incomplete":`Cobertura incompleta: {excluded} conta(s) excluída(s)`,"pws.capacity.uncalibratedPlan":`{count} conta(s) em um plano não calibrado são contadas com o peso de assento de referência, portanto esta estimativa pode ser conservadora`,"pws.capacity.partial":`Cobertura parcial de janelas: {count} conta(s) não informam todas as janelas de limite exibidas`,"pws.capacity.windowPartial":`Parcial`,"pws.capacity.windowPartialA11y":`{window}: cobertura de contas incompleta`,"pws.dashboard.recentlyUsed":`USADOS RECENTEMENTE`,"pws.dashboard.requests":`{count} requisições`,"pws.dashboard.checkedAgo":`Verificado {time}`,"pws.dashboard.noQuota":`Sem dados de cota`,"pws.dashboard.noUsage":`Ainda sem dados de uso`,"pws.dashboard.noRateLimits":`Ainda sem dados de limites de requisições`,"pws.allProviders":`Visão geral dos provedores`,"pws.enabledLabel":`Ativado`,"pws.testConnection":`Testar conexão`,"pws.testing":`Testando…`,"pws.connectionOk":`Conexão OK`,"pws.connectionFailed":`Falha na conexão`,"pws.connectionNotApplicable":`Não se aplica — este provedor usa um catálogo de modelos estático.`,"pws.editSettings":`Editar configurações`,"pws.viewUsage":`Ver uso detalhado`,"pws.allSystemsOk":`Tudo funcionando normalmente`,"pws.apiKeyConfigured":`Chave de API configurada`,"pws.addApiKey":`Adicionar chave de API`,"pws.loggedInAs":`Conectado como {email}`,"pws.notLoggedIn":`Não conectado`,"pws.passthrough":`Passthrough do Codex`,"pws.notes":`OBSERVAÇÕES`,"pws.notePlaceholder":`Adicione uma observação sobre este provedor...`,"pws.noteSaved":`Observação salva`,"pws.authSummary":`AUTENTICAÇÃO`,"time.justNow":`Agora mesmo`,"time.notChecked":`Não verificado`,"time.minutesAgo":`há {n} min`,"time.hoursAgo":`há {n} h`,"time.daysAgo":`há {n} d`,"modal.noMatch":`Nenhuma correspondência.`,"modal.oauthDefaultNote":`Entre com sua conta — sem necessidade de chave de API.`,"modal.oauthComingSoon":`O login OAuth para {label} chega na próxima atualização. Por enquanto, use uma chave de API.`,"modal.oauthComingSoonShort":`O login OAuth para este provedor chega na próxima atualização — por enquanto, use uma chave de API.`,"modal.useApiKeyInstead":`Usar uma chave de API`,"modal.setupGuide":`Guia de configuração`,"modal.setupStep1Prefix":`Acesse o`,"modal.setupDashboardLink":`painel de {label}`,"modal.setupStep1Suffix":`e copie sua chave de API`,"modal.setupStep2":`Cole-a no campo de chave de API abaixo`,"modal.setupStep3":`Clique em Adicionar provedor — os modelos são descobertos automaticamente`,"modal.namePlaceholder":`ex.: openrouter`,"modal.duplicateWarn":`O provedor "{name}" já existe e será sobrescrito.`,"modal.forwardHintPrefix":`Não é necessária chave — o proxy encaminha suas credenciais de`,"modal.forwardCredentials":`codex login`,"modal.forwardHintSuffix":`para este provedor.`,"modal.localHint":`Nenhuma chave de API é armazenada. Isto adiciona o catálogo estático público de modelos do Cursor para o Codex, mas o transporte ao vivo do Cursor e a execução nativa de arquivos/shell permanecem desativados até serem auditados.`,"modal.getApiKey":`Obtenha sua chave de API de {label}`,"modal.apiKey":`Chave de API`,"modal.apiKeyTransport":`Cabeçalho da chave de API`,"modal.apiKeyTransportNative":`x-api-key (nativo da Anthropic)`,"modal.apiKeyTransportBearer":`Authorization: Bearer`,"modal.apiKeyPlaceholder":`sk-… (ou $ENV_VAR)`,"modal.defaultModelPlaceholder":`ex.: gpt-5.5`,"modal.baseUrlPlaceholder":`https://...`,"modal.baseUrlPlaceholderError":`A URL base contém um {placeholder} não resolvido. Substitua-o pelo valor real.`,"modal.baseUrlPlaceholderHint":`Substitua o {placeholder} na URL base pelo ID real da sua conta antes de adicionar.`,"modal.adding":`Adicionando…`,"modal.useOauthLogin":`← Usar login OAuth`,"nav.codexAuth":`Autenticação do Codex`,"nav.codexSet":`Codex`,"nav.connect":`Conexão`,"nav.usageLogs":`Uso e logs`,"nav.sectionNavigation":`Páginas da seção`,"codexSet.tab.multiauth":`Multiautenticação`,"codexSet.tab.prompt":`Prompt`,"codexSet.prompt.title":`Camadas de prompt`,"codexSet.prompt.timing":`Aplica-se a sessões recém-iniciadas. As sessões em andamento mantêm suas configurações de prompt atuais.`,"codexSet.prompt.staleRevision":`A configuração foi alterada em outro lugar. A lista foi recarregada.`,"codexSet.prompt.writeFailed":`Não foi possível salvar a alteração.`,"codexSet.prompt.loadFailed":`Não foi possível carregar as camadas de prompt.`,"codexSet.prompt.repair":`Reparar`,"codexSet.prompt.repairFailed":`Não foi possível concluir o reparo.`,"codexSet.prompt.remeasure":`Medir novamente`,"codexSet.drift.journalPresent":`Uma gravação anterior não foi concluída. A recuperação é executada automaticamente na próxima gravação.`,"codexSet.drift.projectionStale":`As camadas salvas e o valor em config.toml divergem. O reparo reescreve o valor a partir das suas camadas.`,"codexSet.drift.storeMissing":`O arquivo de camadas sumiu, mas as instruções permanecem em config.toml. O reparo mantém o texto como uma única camada e grava um backup antes.`,"codexSet.drift.ownedMalformed":`A linha gerada em config.toml foi remodelada manualmente e, por isso, não é mais seguro reescrevê-la.`,"codexSet.custom.adoptUnsupported":`O valor em {path}, linha {line}, não é uma string de linha única e não pode ser importado. Mova-o manualmente para gerenciá-lo aqui.`,"codexSet.prompt.unreadable":`O arquivo de configuração do Codex existe, mas não pôde ser lido; por isso as alterações são recusadas.`,"codexSet.layer.permissions":`Permissões`,"codexSet.layer.collaboration":`Modo de colaboração`,"codexSet.layer.environment":`Contexto do ambiente`,"codexSet.layer.apps":`Apps`,"codexSet.layer.skills":`Skills`,"codexSet.prompt.extensionsUnknown":`As extensões podem adicionar suas próprias camadas. O Codex não as expõe, portanto não é possível listá-las aqui.`,"codexSet.group.transition":`Avisos de transição`,"codexSet.group.transitionDesc":`Estes anunciam uma mudança em vez de descrever um estado, por isso aparecem apenas quando a sessão entra em tempo real ou troca de modelo. Os números seguem a ordem de montagem, por isso a lista acima salta.`,"codexSet.custom.slotNote":`As camadas personalizadas são unidas em uma única seção, nesta ordem.`,"codexSet.row.alwaysOn":`Sempre ativa`,"codexSet.row.onChange":`Disparada em mudanças`,"codexSet.row.featureGated":`Configurada em [features]`,"codexSet.row.openFeatures":`Abrir configurações`,"codexSet.row.resetDefault":`Redefinir para {value}`,"codexSet.dialog.setValue":`{value} (padrão {fallback})`,"codexSet.dialog.copyKey":`Copiar chave`,"codexSet.dialog.unknownLayer":`Esta versão não tem descrição para esta camada. Ela vem de um runtime do Codex mais recente que o dashboard.`,"codexSet.custom.heading":`Camadas personalizadas`,"codexSet.custom.add":`+ Adicionar camada`,"codexSet.custom.newTitle":`Nova camada`,"codexSet.custom.editTitle":`Editar camada`,"codexSet.custom.titleLabel":`Título`,"codexSet.custom.bodyLabel":`Instruções`,"codexSet.custom.bodySize":`{bytes} de {max} bytes`,"codexSet.custom.normalized":`Tabulações viraram quatro espaços e as quebras de linha viraram LF.`,"codexSet.custom.titleRequired":`Informe um título.`,"codexSet.custom.titleTooLong":`O título tem {count} caracteres; o limite é {max}.`,"codexSet.custom.titleMultiline":`O título deve ter uma única linha.`,"codexSet.custom.bodyTooLarge":`Esta camada tem {bytes} bytes; o limite é {max}.`,"codexSet.custom.composedTooLarge":`Somadas, as camadas ativadas teriam {bytes} bytes, acima do limite.`,"codexSet.custom.invalidCharacter":`Um caractere de controle na posição {position} não pode ser salvo.`,"codexSet.custom.discardPrompt":`Descartar suas alterações?`,"codexSet.custom.discardOthersAndSave":`Descartar as edições não salvas das outras camadas e salvar esta camada?`,"codexSet.custom.keepEditing":`Continuar editando`,"codexSet.custom.delete":`Excluir {title}`,"codexSet.custom.deleteConfirm":`Excluir esta camada? Você pode desfazer por alguns segundos.`,"codexSet.custom.layerGone":`Essa camada foi removida em outro lugar, então o editor foi fechado.`,"codexSet.custom.deleteConfirmNamed":`Excluir “{title}”? Você pode desfazer por alguns segundos.`,"codexSet.custom.deletedNamed":`“{title}” excluída.`,"codexSet.custom.moveUp":`Mover {title} para cima`,"codexSet.custom.prevLayer":`Camada anterior`,"codexSet.custom.nextLayer":`Próxima camada`,"codexSet.custom.navPosition":`{position} / {total}`,"codexSet.custom.moveDown":`Mover {title} para baixo`,"codexSet.custom.limitReached":`Você pode manter até {max} camadas personalizadas.`,"codexSet.custom.composedSize":`Combinado: {bytes} de {max} bytes`,"codexSet.custom.composedPreview":`Mostrar developer_instructions combinadas`,"codexSet.custom.notOwned":`developer_instructions foi gravado fora do opencodex e, por isso, não é editado aqui. Importe-o para gerenciá-lo como uma camada.`,"codexSet.custom.adopt":`Importar instruções existentes`,"codexSet.custom.adoptConfirm":`Importar como camada`,"codexSet.custom.adoptRefused":`Não foi possível importar o valor existente.`,"codexSet.custom.baseReplaced":`model_instructions_file está definido como {path}, ou seja, algo fora do opencodex substituiu o prompt base.`,"codexSet.custom.baseReplacedOpen":`Gerenciar`,"codexSet.lint.identity":`Isto declara uma identidade diferente da que o Codex estabelece.`,"codexSet.lint.foreignTool":`As ferramentas vêm do registro; nomeá-las aqui não as cria.`,"codexSet.lint.placeholder":`Nenhum mecanismo de template é executado sobre as instruções, então isto é enviado literalmente.`,"codexSet.lint.applyPatch":`apply_patch é definido pelo registro de ferramentas, não pelas instruções.`,"codexSet.lint.approvalVocab":`O Codex injeta seu próprio vocabulário de aprovação; isto pode contradizê-lo.`,"codexSet.lint.environment":`Os fatos do ambiente são gerados depois e podem contradizer isto.`,"codexSet.lint.size":`Esta camada tem mais de 8 KB. Ela ainda é salva, mas consome tokens a cada requisição.`,"codexSet.lint.secret":`Parece uma credencial ou chave de API - seria salva em texto claro no config.toml.`,"codexSet.lint.ignoreInstructions":`Mandar o Codex ignorar as próprias instruções pode anular as diretrizes internas.`,"codexSet.preset.blank":`Camada em branco`,"codexSet.preset.concise.name":`Saída concisa`,"codexSet.preset.concise.description":`Respostas curtas, sem preâmbulo, com formatação mínima.`,"codexSet.preset.concise.provenance":`Adaptado das diretrizes de concisão do Claude Code. Redação nossa, não uma cópia.`,"codexSet.preset.planFirst.name":`Planejar antes de editar`,"codexSet.preset.planFirst.description":`Apresente o plano e depois faça a alteração.`,"codexSet.preset.planFirst.provenance":`Adaptado da postura de planejamento do Claude Code. Redação nossa, não uma cópia.`,"codexSet.preset.explainWhy.name":`Explicar o raciocínio`,"codexSet.preset.explainWhy.description":`Diga o porquê, não apenas o quê.`,"codexSet.preset.explainWhy.provenance":`Adaptado do estilo de confirmação do Grok Build. Redação nossa, não uma cópia.`,"codexSet.preset.testFirst.name":`Testar primeiro`,"codexSet.preset.testFirst.description":`Escreva o teste que falha antes da correção.`,"codexSet.preset.testFirst.provenance":`Adaptado de práticas comuns de agentes. Redação nossa, não uma cópia.`,"codexSet.preset.korean.name":`Respostas em coreano`,"codexSet.preset.korean.description":`Responda em coreano, qualquer que seja o idioma da requisição.`,"codexSet.preset.korean.provenance":`Escrito para o opencodex a partir de um pedido recorrente de usuários. Redação nossa, não uma cópia.`,"codexSet.dialog.class":`Tipo`,"codexSet.dialog.key":`Chave de configuração`,"codexSet.dialog.fileValue":`Valor neste arquivo`,"codexSet.dialog.absentDefault":`não definido (padrão {value})`,"codexSet.dialog.noRenderedText":`O Codex não expõe o texto montado de uma camada nativa; por isso este diálogo descreve a camada e indica sua chave, em vez de mostrar seu conteúdo.`,"codexSet.dialog.probeNotFound":`Não foi possível medir: o executável codex não foi encontrado.`,"codexSet.dialog.probeUnsupported":`Não foi possível medir: esta versão do Codex não suporta o comando de medição.`,"codexSet.dialog.probeInvalid":`Não foi possível medir: a saída do Codex não pôde ser analisada.`,"codexSet.dialog.probeFailed":`Não foi possível medir: a sonda do Codex não terminou.`,"codexSet.dialog.probeBusy":`Outra medição ainda está em andamento. Tente de novo em instantes.`,"codexSet.dialog.sourceText":`Texto enviado ao modelo`,"codexSet.dialog.sourceBytes":`{bytes} bytes`,"codexSet.dialog.notRendered":`Esta camada não enviou nada no turno que lemos. As seções só são reenviadas quando mudam, então uma camada inalterada fica ausente de uma única amostra.`,"codexSet.dialog.emptySource":`O arquivo em {path} existe, mas está vazio, então esta camada não envia nada.`,"codexSet.dialog.notExposed":`O prompt base trafega fora da lista de mensagens que o Codex consegue imprimir, então não pode ser exibido aqui. É possível substituí-lo por meio de model_instructions_file.`,"codexSet.dialog.unmapped":`Esta camada não tem mapeamento confirmado na saída do prompt, então seu texto ainda não pode ser exibido aqui.`,"codexSet.dialog.textUnavailable":`Não foi possível ler o prompt do Codex nesta máquina, então o texto está indisponível.`,"codexSet.class.base":`Instruções base`,"codexSet.class.config-toggle":`Alternável aqui`,"codexSet.class.feature-gated":`Controlada por recurso`,"codexSet.class.runtime-conditional":`Condicional ao runtime`,"codexSet.class.extension-unknown":`Camada de extensão`,"codexSet.layer.base-instructions":`Instruções base`,"codexSet.layer.model-switch":`Aviso de troca de modelo`,"codexSet.layer.personality":`Personalidade`,"codexSet.layer.context-window-guidance":`Orientação sobre a janela de contexto`,"codexSet.layer.realtime":`Tempo real`,"codexSet.layer.agents-md":`AGENTS.md`,"codexSet.layer.environments-instructions":`Ambientes`,"codexSet.layer.plugins":`Plugins`,"codexSet.layer.tools":`Ferramentas`,"codexSet.layer.multi-agent-mode":`Modo multiagente`,"codexSet.layer.git-attribution":`Atribuição de commits`,"codexSet.about.base-instructions":`As instruções do próprio Codex. Elas viajam com a própria requisição e não podem ser desativadas.`,"codexSet.about.model-switch":`Adicionada quando a sessão troca de modelo no meio da conversa.`,"codexSet.about.personality":`Orientação de tom e voz, controlada por uma feature flag.`,"codexSet.about.context-window-guidance":`Orientação sobre o orçamento de contexto restante, controlada por uma feature flag.`,"codexSet.about.realtime":`Adicionada em sessões em tempo real.`,"codexSet.about.agents-md":`Os arquivos AGENTS.md do seu projeto. Esta página apenas informa a camada; nunca edita a documentação do seu projeto.`,"codexSet.about.permissions":`Explica as configurações de sandbox e de aprovação em vigor.`,"codexSet.about.collaboration":`Explica o modo de colaboração ativo.`,"codexSet.about.environment":`Diretório de trabalho, plataforma e outros fatos do ambiente.`,"codexSet.about.environments-instructions":`Orientação para ambientes de execução adiada, controlada por uma feature flag.`,"codexSet.about.apps":`Como usar os apps conectados.`,"codexSet.about.plugins":`Adicionada quando um plugin é selecionado ou quando qualquer plugin anuncia uma capacidade.`,"codexSet.about.tools":`Descrições de ferramentas adiadas, controladas por uma feature flag.`,"codexSet.about.skills":`A lista de skills disponíveis.`,"codexSet.about.multi-agent-mode":`Instruções de subagentes, controladas por uma feature flag.`,"codexSet.about.git-attribution":`Instrui o modelo a adicionar um trailer Co-authored-by: Codex aos commits que ele escreve e uma linha Generated with Codex. aos pull requests que ele abre. O Codex resolve isso a partir da sua conta, portanto não há configuração para isso aqui nem em [features]. Quando sua conta o desativa, o Codex envia a instrução oposta em vez de não enviar nada.`,"codexSet.condition.model-switch":`Emitida apenas após uma troca de modelo no meio da sessão.`,"codexSet.condition.realtime":`Emitida apenas em uma sessão em tempo real.`,"codexSet.condition.agents-md":`Emitida quando um documento de projeto é encontrado para o diretório de trabalho.`,"codexSet.condition.plugins":`Emitida quando um plugin é selecionado ou quando qualquer plugin anuncia uma capacidade.`,"codexSet.condition.git-attribution":`Definida pela política de atribuição da sua conta.`,"codexSet.base.title":`Prompt base`,"codexSet.base.prev":`Opção anterior`,"codexSet.base.next":`Próxima opção`,"codexSet.base.position":`{position} / {total}`,"codexSet.base.swipeHint":`Deslize para o lado, use as teclas de seta ou pressione as setas para alternar entre as opções. Aplica-se a sessões recém-iniciadas.`,"codexSet.base.defaultTitle":`Prompt base do próprio Codex`,"codexSet.base.defaultBody":`O padrão não é armazenado aqui, então não há nada para editar ou excluir: escolhê-lo simplesmente remove model_instructions_file da sua configuração, e o Codex usa o prompt que já acompanha o produto.`,"codexSet.base.variantTitle":`Nome`,"codexSet.base.variantBody":`Prompt`,"codexSet.base.replacesWarning":`Isto SUBSTITUI o prompt base do Codex em vez de acrescentar a ele. Um prompt curto aqui significa um modelo com instruções curtas.`,"codexSet.base.use":`Usar este`,"codexSet.base.inUse":`Em uso`,"codexSet.base.externalBlocked":`model_instructions_file já aponta para {path}, que não foi gravado pelo opencodex. Limpe-o você mesmo antes de escolher uma opção aqui — ou importe-o como uma variante.`,"codexSet.base.import":`Importar como variante`,"codexSet.base.importPreview":"O arquivo em {path} é convertido em uma variante gerenciada e instalado exatamente como mostrado abaixo — o título vira uma linha de título `#` e o corpo é normalizado (CRLF → LF, tabulações → 4 espaços).","codexSet.base.importFormat":`Armazenado literalmente: {serializedBytes} bytes no total (corpo {bodyBytes} bytes). O Codex lê o arquivo inteiro, incluindo o título.`,"codexSet.base.importTitle":`Título da variante`,"codexSet.base.importTitlePending":`Atualizando a pré-visualização para este título…`,"codexSet.base.importConfirm":`Importar e gerenciar`,"codexSet.base.importFailed":`Não foi possível importar o arquivo.`,"codexSet.base.importChanged":`O arquivo ou o título mudou desde a pré-visualização. Visualize novamente.`,"nav.api":`API`,"nav.openMenu":`Abrir menu`,"nav.closeMenu":`Fechar menu`,"nav.goHome":`Ir para o painel`,"nav.collapseSidebar":`Recolher barra lateral`,"nav.expandSidebar":`Expandir barra lateral`,"pws.refreshAllQuotas":`Atualizar todas as cotas`,"pws.quotaRefreshDone":`Verificação de cotas concluída`,"integrations.subtitle":`Conecte clientes ao opencodex, gerencie credenciais e restaure a configuração dos clientes.`,"integrations.tabsLabel":`Superfícies de integração`,"integrations.tab.overview":`Visão geral`,"integrations.tab.keys":`Chaves de API`,"integrations.tab.codex":`Codex`,"integrations.tab.claude":`Claude`,"integrations.tab.grok":`Grok Build`,"integrations.tab.cursor":`Cursor`,"integrations.tab.opencode":`OpenCode`,"integrations.tab.pi":`Pi`,"integrations.tab.gentleShell":`Gentle Shell`,"integrations.semantics.gentleShell":`Reinicie o Gentle Shell para carregar o catálogo no diretório salvo. Para diretórios vinculados ou compartilhados, use a integração Pi.`,"integrations.tab.omp":`OMP`,"integrations.tab.hermes":`Hermes`,"integrations.tab.openclaw":`OpenClaw`,"integrations.tab.kimi":`Kimi Code`,"integrations.tab.gajae":`gjc`,"integrations.tab.dsh":`DSH`,"integrations.tab.mcode":`MiniMax Code`,"integrations.tab.zcode":`ZCode`,"integrations.tab.prime":`Prime Agent`,"integrations.tab.aside":`Aside`,"integrations.tab.raycast":`Raycast`,"integrations.tab.omo":`omo`,"integrations.tab.cline":`Cline CLI`,"integrations.tab.commandcode":`Command Code`,"integrations.tab.kilo":`Kilo`,"integrations.tab.qoder":`Qoder`,"integrations.tab.droid":`Factory Droid`,"integrations.aside.profilesTitle":`Perfis do Aside`,"integrations.aside.profilesHint":`Escolha quais perfis recebem os modelos selecionados. O perfil ativo do Aside permanece inalterado.`,"integrations.aside.all":`Sincronizar todos os perfis`,"integrations.aside.syncNow":`Sincronizar agora`,"integrations.aside.applied":`{count} de {total} perfis aplicados`,"integrations.aside.current":`Perfil atual`,"integrations.aside.profile":`Perfil {id}`,"integrations.aside.toggle":`Sincronizar {name}`,"integrations.aside.details":`Gerenciar {name}`,"integrations.aside.back":`Todos os perfis do Aside`,"integrations.aside.empty":`Abra o Aside e crie um perfil para conectá-lo.`,"integrations.aside.partial":`Alguns perfis requerem atenção. Suas escolhas de sincronização foram salvas; verifique o estado de cada perfil.`,"integrations.aside.pending":`Escolha de sincronização salva; atualização do arquivo pendente.`,"integrations.aside.retry":`Tentar {name} novamente`,"integrations.aside.loadError":`Não foi possível carregar os perfis do Aside. Tente novamente para verificar o estado deles.`,"integrations.codex.title":`Codex CLI`,"integrations.codex.body":`A integração do Codex pertence ao serviço do proxy. Iniciar o opencodex a aplica; parar o serviço restaura o roteamento nativo.`,"integrations.codex.openService":`Abrir controles do serviço`,"integrations.state.notInstalled":`Não instalado`,"integrations.state.unknown":`Verificando…`,"integrations.detail.codexRouted":`As requisições do Codex passam por este proxy`,"integrations.detail.codexAbsent":`O Codex ainda não é roteado por este proxy`,"integrations.detail.keyCount":`{count} chave(s) emitida(s)`,"integrations.detail.keyNone":`Nenhuma chave emitida`,"integrations.detail.keyChecking":`Verificando…`,"integrations.detail.keyUnavailable":`Status da chave indisponível`,"integrations.detail.claudeOff":`A conexão está desativada`,"integrations.detail.desktopCurrent":`O Desktop está executando este perfil`,"integrations.detail.desktopStale":`O arquivo de perfil foi alterado após ser aplicado`,"integrations.detail.desktopNotServed":`O perfil existe, mas o Desktop serve outro`,"integrations.detail.desktopAbsent":`Nenhum perfil aplicado`,"integrations.detail.desktopDesiredOff":`A integração com o Claude Desktop está desativada`,"integrations.detail.desktopDesiredOffCleanupPending":`O Claude Desktop ainda está usando o gateway; limpeza pendente`,"integrations.detail.desktopDesiredOnNotApplied":`A integração está ativada, mas o Desktop não está usando o perfil do gateway`,"integrations.detail.desktopSelectedElsewhere":`O Desktop está usando outro perfil`,"integrations.detail.desktopProfileDrift":`O perfil selecionado do Desktop foi alterado`,"integrations.detail.desktopObservedUnsafe":`O perfil selecionado do Desktop não pode ser alterado com segurança`,"integrations.detail.desktopNotInstalled":`A biblioteca de configuração do Claude Desktop não está instalada`,"integrations.detail.grokModels":`{count} modelo(s) conectado(s)`,"integrations.detail.grokAbsent":`Nenhum bloco do opencodex na configuração`,"integrations.detail.cursorSeen":`O Cursor chamou este proxy recentemente`,"integrations.detail.cursorNeverSeen":`Private Inference instalado; nenhuma requisição vista ainda`,"integrations.detail.cursorAbsent":`Cursor Private Inference não encontrado`,"integrations.cursor.title":`Cursor`,"integrations.cursor.intro":`O Cursor Private Inference executa seu agente localmente e se comunica com o opencodex em loopback. O Cursor comum não consegue: o backend dele chama o endpoint personalizado e exige uma URL HTTPS pública. Esta página nunca grava no Cursor; cole os valores abaixo no Cursor você mesmo.`,"integrations.cursor.loading":`Lendo o status do Cursor…`,"integrations.cursor.unavailable":`Não foi possível ler o status do Cursor a partir do proxy.`,"integrations.cursor.detection":`Versões instaladas`,"integrations.cursor.privateInference":`Cursor Private Inference`,"integrations.cursor.regular":`Cursor (padrão)`,"integrations.cursor.detected":`Detectado`,"integrations.cursor.notFound":`Não encontrado`,"integrations.cursor.regularOnly":`Apenas o Cursor regular foi encontrado. Ele roteia endpoints personalizados pelos servidores do Cursor, então um proxy em loopback fica inacessível sem um túnel público. Consulte o guia da versão Private Inference.`,"integrations.cursor.installerIntro":`O Cursor Private Inference é uma versão separada em modo local. O canal de atualização do Cursor anuncia o instalador, versão {version}; instale-o e cole a Base URL e a chave de API abaixo em Settings > Models > Gateway.`,"integrations.cursor.installerOpen":`Baixar o instalador`,"integrations.cursor.installerUnavailable":`Não foi possível resolver o instalador do Private Inference a partir do canal de atualização do Cursor para este computador. Os valores do gateway abaixo valem depois que ele for instalado.`,"integrations.cursor.installerCheck":`Procurar o instalador do Private Inference`,"integrations.cursor.installerChecking":`Consultando o canal de atualização do Cursor…`,"integrations.cursor.nothingFound":`Nenhuma instalação do Cursor foi encontrada nos locais habituais. Se estiver instalado em outro lugar, os valores abaixo continuam valendo.`,"integrations.cursor.gateway":`Valores do gateway`,"integrations.cursor.gatewayHint":`No Cursor Private Inference, abra Settings > Models > Gateway, cole estes dois valores e clique em Refresh model list.`,"integrations.cursor.baseUrl":`Base URL`,"integrations.cursor.apiKey":`Chave de API`,"integrations.cursor.apiKeyCredential":`Uma das suas chaves de API do opencodex (este bind exige uma credencial)`,"integrations.cursor.copy":`Copiar`,"integrations.cursor.copied":`Copiado`,"integrations.cursor.connection":`Conexão`,"integrations.cursor.seen":`Última requisição do Cursor: {time} ({ua})`,"integrations.cursor.neverSeen":`Nenhuma requisição do Cursor desde que o proxy iniciou. Depois de salvar o gateway, clique em Refresh model list no Cursor.`,"integrations.cursor.models":`O que o Cursor vai mostrar`,"integrations.cursor.modelsHint":`O Cursor escolhe a escala de Reasoning a partir da própria tabela de modelos, então o opencodex só consegue prevê-la. Context lista a janela padrão e a opcional (Max Mode do Cursor).`,"integrations.cursor.ladderFromBundle":`Escalas de Reasoning lidas do bundle instalado do Cursor Private Inference {version}. Quem decide é o Cursor; o opencodex apenas informa a tabela dele.`,"integrations.cursor.ladderFromStatic":`As escalas de Reasoning são um espelho estático do Cursor 3.18.25 (nenhum bundle legível do Private Inference foi encontrado). Context lista a janela padrão e a opcional.`,"integrations.cursor.unknownVersion":`versão desconhecida`,"integrations.cursor.noControl":`—`,"integrations.cursor.singleWindow":`janela única`,"integrations.cursor.noControlTitle":`Este id não está na tabela de esforço embutida do Cursor, então o Cursor não mostra controle de Reasoning.`,"integrations.cursor.effortRowsOne":`1 linha de esforço publicada`,"integrations.cursor.effortRowsMany":`{n} linhas de esforço publicadas`,"integrations.cursor.effortRowsOff":`sem linhas de esforço`,"integrations.cursor.tableLessHint":`Linhas marcadas com — ficam sem controle de Reasoning no Cursor. Ative cursorEffortRows para publicar uma entrada no seletor por esforço (id--effort) ou defina modelDefaultReasoningEfforts no provedor para um padrão fixo.`,"integrations.cursor.colModel":`Modelo`,"integrations.cursor.colReasoning":`Raciocínio`,"integrations.cursor.colContext":`Contexto`,"integrations.cursor.guide":`Abrir o guia do Cursor Private Inference`,"integrations.dialog.codex.title":`Desativar a integração com o Codex?`,"integrations.dialog.codex.changes":`O opencodex vai remover seu roteamento de {path}, remover o perfil gerado, restaurar o catálogo de modelos nativo e reetiquetar as threads retomáveis para o Codex nativo.`,"integrations.dialog.codex.breakage":`O codex puro vai se conectar direto à OpenAI, e os modelos roteados de outros provedores vão desaparecer do Codex. O proxy e o /v1/responses continuam rodando para outros clientes.`,"integrations.dialog.codex.undo":`Ativar de novo reconstrói o catálogo roteado com os modelos disponíveis na hora e injeta o Codex novamente. O histórico de retomada é adaptado à direção correspondente, mas seus arquivos não são restaurados byte a byte.`,"integrations.dialog.codex.sideEffect":`Se você selecionou um modelo raiz roteado depois que o opencodex injetou a configuração, desativar remove essa seleção e reativar a integração não consegue reconstruí-la; selecione o modelo de novo. Se um model_provider externo controla o Codex, o opencodex remove apenas seu journal obsoleto e deixa a configuração, o catálogo e o histórico inalterados.`,"integrations.dialog.codex.confirm":`Desativar`,"integrations.dialog.grok.title":`Desativar a integração com o Grok Build?`,"integrations.dialog.grok.changes":`Apenas o bloco marcado pelo opencodex será removido de {path}. O conteúdo escrito fora do bloco permanece inalterado.`,"integrations.dialog.grok.breakage":`Desativar remove os aliases de modelo do opencodex no Grok Build. Os modelos usados com sua conta xAI continuam disponíveis.`,"integrations.dialog.grok.undo":`Se o opencodex estiver rodando em um endereço loopback, reativar grava um novo bloco com os modelos disponíveis no momento.`,"integrations.dialog.grok.confirm":`Desativar`,"integrations.dialog.desktop.title":`Desativar a integração com o Claude Desktop?`,"integrations.dialog.desktop.changes":`Se {path} contiver um perfil de gateway gerenciado pelo opencodex, o Desktop primeiro selecionará um novo perfil padrão sem credenciais e depois removerá o perfil antigo e o backup.`,"integrations.dialog.desktop.breakage":`O Claude Desktop voltará ao Claude padrão, em vez dos modelos roteados pelo opencodex.`,"integrations.dialog.desktop.undo":`Reativar regenera o perfil do opencodex a partir das suas atribuições de modelo salvas.`,"integrations.dialog.desktop.restart":`O Claude Desktop lê esta configuração apenas na inicialização. Feche-o completamente e reabra para que a mudança tenha efeito.`,"integrations.dialog.desktop.confirm":`Desativar`,"integrations.native.msg.nonLoopbackRemoved":`O Grok Build só pode ser registrado automaticamente enquanto o opencodex roda em um endereço loopback. O bloco anterior que apontava para loopback foi removido.`,"integrations.native.msg.nonLoopbackRemovedNoop":`O Grok Build só pode ser registrado automaticamente enquanto o opencodex roda em um endereço loopback. Não havia bloco anterior para remover.`,"integrations.native.msg.nonLoopbackSuperseded":`O Grok Build só pode ser registrado automaticamente enquanto o opencodex roda em um endereço loopback. Outro processo gravou um novo bloco nesse meio-tempo, então o bloco atual no arquivo não foi criado por esta requisição.`,"integrations.native.error.orphanedMarker":`{path} tem um marcador de início do opencodex, mas nenhum marcador de fim. O arquivo foi mantido inalterado porque o opencodex não consegue determinar onde seu bloco termina.`,"integrations.native.error.homeMismatch":`O home do serviço instalado não corresponde ao home atual, então o arquivo foi mantido inalterado.`,"integrations.native.error.notInstalled":`O Grok Build não está instalado, então não há nada a alterar.`,"integrations.native.error.configBusy":`A configuração está sendo salva em outro lugar e não pôde ser alterada. Tente novamente em instantes.`,"integrations.native.error.desktopUnsafeMetadata":`Os metadados do Claude Desktop em {path} não puderam ser lidos com segurança, então sua biblioteca não foi alterada.`,"integrations.native.error.desktopCleanupIncomplete":`O Claude Desktop está apontado para o modo padrão, mas ainda restam arquivos de credencial antigos do opencodex em: {paths}.`,"integrations.native.msg.desktopDisabled":`Integração com o Claude Desktop desativada.`,"integrations.native.msg.desktopEnabled":`Integração com o Claude Desktop ativada.`,"integrations.state.absent":`Não aplicado`,"integrations.state.current":`Aplicado`,"integrations.state.stale":`Atualização necessária`,"integrations.state.conflict":`Conflito`,"integrations.state.unsafe":`Não foi possível verificar`,"integrations.summary.detected":`Clientes detectados`,"integrations.summary.applied":`Clientes configurados`,"integrations.summary.stale":`Atualização necessária`,"integrations.summary.lastChange":`Última alteração`,"integrations.summary.disableAll":`Desativar todos…`,"integrations.onboarding":`Aplicar grava um bloco de provedor do opencodex depois de salvar um backup. Desativar remove apenas esse bloco, e um snapshot retido pode ser restaurado.`,"integrations.empty.title":`Nenhum cliente instalado foi detectado`,"integrations.empty.body":`Instale um cliente compatível e volte aqui para aplicar o opencodex.`,"integrations.action.apply":`Aplicar`,"integrations.action.disable":`Desativar`,"integrations.action.refresh":`Atualizar`,"integrations.action.settings":`Configurações`,"integrations.action.manageKeys":`Gerenciar chaves`,"integrations.action.restore":`Restaurar…`,"integrations.action.undo":`Desfazer`,"integrations.action.restorePoint":`Restaurar este ponto…`,"integrations.action.snapshotExpired":`Backup expirado`,"integrations.rollback.title":`Central de rollback`,"integrations.rollback.empty":`Ainda não há histórico de aplicações`,"integrations.rollback.emptyBody":`Toda gravação bem-sucedida mantém antes um snapshot do estado anterior.`,"integrations.catalog.title":`Clientes`,"integrations.rollback.older":`Operações anteriores`,"integrations.rollback.showMore":`Mostrar mais {n}`,"integrations.rollback.failed":`Não foi possível carregar o histórico de rollback.`,"integrations.rollback.delete":`Excluir`,"integrations.rollback.deleteAria":`Excluir a entrada de rollback de {at}`,"integrations.rollback.deleteNewest":`A entrada mais recente deste cliente é mantida para que você ainda possa desfazer.`,"integrations.rollback.deleteGone":`Esta entrada já foi excluída. A lista será atualizada.`,"integrations.dialog.deleteEntry.title":`Excluir esta entrada de rollback?`,"integrations.dialog.deleteEntry.changes":`Esta entrada some da lista de rollback, e qualquer backup que ela ainda guarde de {path} é apagado do disco.`,"integrations.dialog.deleteEntry.breakage":`Você não poderá mais restaurar o arquivo para este ponto. As entradas mais novas e o próprio arquivo não são afetados.`,"integrations.dialog.deleteEntry.undo":`Isso não pode ser desfeito. A entrada mais recente de cada cliente é mantida e não pode ser excluída.`,"integrations.dialog.deleteEntry.confirm":`Excluir entrada`,"integrations.restore.title":`Restaurar este snapshot?`,"integrations.restore.body":`O arquivo atual recebe um backup primeiro, e então o snapshot selecionado o substitui.`,"integrations.restore.driftTitle":`Foram detectadas edições mais novas`,"integrations.restore.driftBody":`As alterações feitas depois deste snapshot receberão backup, e então o arquivo será substituído.`,"integrations.restore.confirm":`Restaurar`,"integrations.restore.confirmDrift":`Fazer backup das edições novas e restaurar`,"integrations.restore.pending":`Restaurando…`,"integrations.restore.manual":`A restauração automática falhou: {reason}. Restaure manualmente a partir de {path}.`,"integrations.error.load":`Não foi possível carregar o estado das integrações.`,"integrations.error.stale":`A última atualização falhou. Os valores abaixo podem estar desatualizados.`,"integrations.error.busy":`Outra alteração para este cliente ainda está em andamento. Tente novamente em instantes.`,"integrations.error.conflict":`A configuração mudou depois que o opencodex a gravou. Nada foi removido.`,"integrations.error.unsafe":`A configuração não pode ser alterada com segurança.`,"integrations.error.generic":`A alteração da integração falhou. Seu estado anterior foi mantido.`,"integrations.error.nonLoopback":`{client} só consegue alcançar um proxy em localhost: a configuração dele não tem onde colocar o cabeçalho de admissão que um bind remoto exige, então gravá-lo manualmente também não ajudaria. Dê a ele acesso loopback, por meio de um túnel ou de um encaminhador local.`,"integrations.status.installed":`Instalado`,"integrations.status.notInstalled":`Não instalado`,"integrations.status.appliedAt":`Aplicado`,"integrations.status.supersededStore":`Este cliente agora lê seus provedores de {path}, que o opencodex não grava, então ativá-lo aqui não mudaria nada do que ele carrega.`,"integrations.status.missingStore":`Este cliente guarda seus provedores em {path}, e esse arquivo não existe. O opencodex não grava no antigo arquivo de configurações do cliente no lugar dele, porque o cliente move esse arquivo e o importa na próxima inicialização. Crie {path} com o conteúdo {document} e clique em "Aplicar" de novo.`,"integrations.status.candidateConflict":`Outro arquivo de configuração do Kilo, {path}, também define provider.opencodex. Remova provider.opencodex desse arquivo antes de aplicar.`,"integrations.status.backup":`Backup`,"integrations.status.lastRestore":`Última restauração`,"integrations.status.unknown":`Desconhecido`,"integrations.bulk.title":`Desativar as integrações de clientes aplicadas?`,"integrations.bulk.body":`Apenas o bloco pertencente ao opencodex é removido. Um snapshot anterior à gravação é mantido para cada cliente.`,"integrations.bulk.partial":`Alguns clientes não puderam ser desativados: {clients}`,"integrations.bulk.success":`As integrações de clientes aplicadas foram desativadas.`,"integrations.retention.degraded":`A limpeza de backups está atrasada; backups mais antigos ainda podem estar no disco.`,"integrations.error.residual":`O arquivo pode estar em um estado intermediário: {message} Restaure-o a partir de {path}.`,"integrations.error.residualNoSnapshot":`{message} A recuperação automática não foi concluída. Verifique a configuração do cliente antes de tentar de novo.`,"integrations.error.recover":`{message} Há um backup em {path}.`,"integrations.kind.apply":`Aplicado`,"integrations.kind.disable":`Desativado`,"integrations.kind.refresh":`Atualizado`,"integrations.kind.restore":`Restaurado`,"integrations.kind.overwrite":`Sobrescrito`,"integrations.dialog.overwrite.title":`Substituir o bloco nesta configuração?`,"integrations.dialog.overwrite.changesUnowned":`Um bloco que não foi escrito por nós ocupa as configurações de que o opencodex precisa em {path}. Aplicar o substitui pelo bloco que o opencodex gravaria.`,"integrations.dialog.overwrite.changesForeign":`Sua edição dentro do bloco do opencodex em {path} será descartada e substituída pelo bloco que o opencodex gravaria.`,"integrations.dialog.overwrite.breakage":`Tudo o que o outro bloco configurava deixa de valer. O restante do arquivo não é tocado.`,"integrations.dialog.overwrite.undo":`Um snapshot é salvo antes, então isto aparece na lista de rollback abaixo e pode ser desfeito.`,"integrations.dialog.overwrite.confirm":`Substituir`,"integrations.action.overwrite":`Substituir`,"integrations.preview.loading":`Carregando o plano exato de alterações…`,"integrations.preview.failed":`Não foi possível carregar o plano de alterações. Nada foi alterado.`,"integrations.preview.stale":`A integração mudou enquanto você confirmava. Revise o plano atualizado e confirme novamente.`,"integrations.dialog.apply.title":`Aplicar esta integração?`,"integrations.dialog.apply.changes":`O opencodex vai adicionar suas configurações de provedor gerenciadas à configuração do cliente.`,"integrations.dialog.apply.breakage":`O cliente passará a usar os modelos expostos atualmente por esta instância do opencodex.`,"integrations.dialog.apply.undo":`Um backup é salvo antes, e a alteração pode ser desfeita pela central de rollback.`,"integrations.dialog.apply.confirm":`Aplicar`,"integrations.dialog.disable.title":`Desativar esta integração?`,"integrations.dialog.disable.changes":`Apenas as configurações pertencentes ao opencodex serão removidas.`,"integrations.dialog.disable.breakage":`O cliente deixará de usar os modelos roteados por esta instância do opencodex.`,"integrations.dialog.disable.undo":`Um backup é salvo antes, e a alteração pode ser desfeita pela central de rollback.`,"integrations.dialog.disable.confirm":`Desativar`,"integrations.plan.heading":`Plano de alterações do servidor`,"integrations.plan.operation":`Operação: {operation}`,"integrations.plan.operation.apply":`Aplicar`,"integrations.plan.operation.overwrite":`Substituir`,"integrations.plan.operation.disable":`Desativar`,"integrations.plan.operation.restore":`Restaurar`,"integrations.plan.change.add":`Adicionar`,"integrations.plan.change.replace":`Substituir`,"integrations.plan.change.remove":`Remover`,"integrations.plan.change.snapshot":`Salvar backup`,"integrations.plan.change.ownership":`Atualizar o registro de propriedade`,"integrations.plan.change.journal":`Registrar entrada de rollback`,"integrations.plan.foreign.none":`Nenhuma edição externa foi detectada.`,"integrations.plan.foreign.unowned":`Um bloco de configurações que não pertence ao opencodex será substituído.`,"integrations.plan.foreign.foreignEdit":`As edições dentro do bloco gerenciado pelo opencodex serão substituídas.`,"integrations.plan.foreign.drift":`O arquivo mudou desde este ponto de rollback.`,"integrations.plan.noop.applied":`Nenhuma alteração é necessária no documento do cliente gerenciado; as configurações da integração já estão presentes.`,"integrations.plan.noop.disabled":`Nenhuma alteração é necessária no documento do cliente gerenciado; as configurações da integração já estão ausentes.`,"integrations.plan.noop.profilePreference":`A preferência de sincronização do perfil ainda será salva quando você confirmar.`,"integrations.plan.refused":`O servidor não consegue aplicar este plano com segurança.`,"integrations.plan.refusal.notInstalled":`O cliente não está instalado. Instale-o, atualize esta página e visualize a alteração novamente.`,"integrations.plan.refusal.conflict":`As configurações gerenciadas entram em conflito com o arquivo atual. Revise o arquivo ou use Substituir quando essa ação estiver disponível.`,"integrations.plan.refusal.unsafe":`A configuração do cliente não pode ser alterada com segurança. Repare ou substitua o arquivo antes de tentar de novo.`,"integrations.plan.refusal.nonLoopback":`Este cliente exige um endereço de proxy loopback. Use acesso por localhost, um túnel ou um encaminhador local antes de tentar de novo.`,"integrations.plan.refusal.supersededStore":`Este cliente agora lê seus provedores de um arquivo que o opencodex não grava, então esta operação não mudaria nada do que ele carrega.`,"integrations.plan.refusal.missingStore":`O arquivo em que este cliente guarda seus provedores não existe, e o opencodex não grava no antigo arquivo de configurações do cliente no lugar dele, porque o cliente move esse arquivo na próxima inicialização. Crie o arquivo com o conteúdo {document} e clique em "Aplicar" de novo.`,"integrations.plan.refusal.driftRequiresConfirm":`O arquivo mudou depois deste ponto de rollback. Revise o plano com as diferenças antes de restaurar.`,"integrations.plan.refusal.snapshotExpired":`O backup deste ponto de rollback expirou, então ele não pode mais ser restaurado.`,"integrations.plan.refusal.writeFailed":`O servidor não conseguiu preparar uma gravação segura. Atualize o estado da integração antes de tentar de novo.`,"integrations.mutation.pending":`Aplicando a alteração confirmada…`,"integrations.bulk.breakage":`Cada cliente deixará de usar os modelos roteados por esta instância do opencodex.`,"integrations.bulk.undo":`Cada cliente mantém seu próprio backup e sua entrada de rollback.`,"integrations.bulk.confirm":`Desativar todos`,"integrations.semantics.opencode":`Apenas inicializações diretas do disco; a injeção de ambiente do ocx opencode tem precedência.`,"integrations.semantics.pi":`Vale para novas sessões.`,"integrations.semantics.omp":`Reinicie o OMP para carregar o catálogo.`,"integrations.semantics.hermes":`Vale para novas sessões.`,"integrations.semantics.openclaw":`Vale imediatamente para um gateway em execução.`,"integrations.semantics.kimi":`Reinicie ou execute /reload para aplicar (a v2 observa o arquivo).`,"integrations.semantics.gajae":`Vale para uma nova sessão ou ao abrir /model.`,"integrations.semantics.dsh":`O OpenCodex gerencia apenas o provedor opencodex da linha llm-pi-ai em $DSH_HOME/profiles/desktop/cordis.patch.yml, o perfil Desktop que o DSH 0.1.7+ lê ($DSH_HOME/settings.yaml enquanto esse perfil não existir). O DSH recarrega esse provedor a quente; seu modelo padrão e o deepseek-official permanecem inalterados. Atualmente somente loopback; nenhuma credencial real é gravada.`,"integrations.semantics.mcode":`Gerencia apenas custom_provider.opencodex. Seu modelo padrão e o login do MiniMax permanecem inalterados.`,"integrations.semantics.zcode":`Gerencia apenas provider.opencodex em ~/.zcode/v2/config.json. Seu login do Z.ai e os outros provedores permanecem inalterados. Reinicie o ZCode após as alterações.`,"integrations.semantics.prime":`Gerencia apenas providers.opencodex no models.json do Prime Agent — ~/.prime/agent, a menos que PRIME_AGENT_CODING_AGENT_DIR o redirecione. Seus outros provedores e substituições de modelo permanecem inalterados. Vale para novas sessões.`,"integrations.semantics.aside":`Gerencia apenas providers.opencodex no ~/.aside/u/<id>/models.json deste perfil. Seus outros provedores permanecem inalterados. Feche completamente e reabra o Aside após aplicar.`,"integrations.semantics.raycast":`Adiciona uma entrada de provedor OpenCodex ao providers.yaml do Raycast, para que todos os modelos roteados apareçam no seletor de modelos do Raycast AI. Requer Raycast Pro.`,"integrations.semantics.omo":`Gerencia apenas providers.opencodex no models.json do omo — ~/.omo/agent, a menos que OMO_CODING_AGENT_DIR, SENPI_CODING_AGENT_DIR ou PI_CODING_AGENT_DIR o redirecione. Seus outros provedores permanecem inalterados. Vale para novas sessões.`,"integrations.lazycodexRoles.title":`omo (Codex / LazyCodex): modelos por papel`,"integrations.lazycodexRoles.hint":`Escolha o modelo e o esforço de raciocínio de cada papel. Salvar atualiza o arquivo dele em $CODEX_HOME/agents e, quando puder ser reescrito com segurança, o omo.jsonc do LazyCodex; "Herdar esforço" deixa o esforço para o Codex.`,"integrations.lazycodexRoles.role":`Função`,"integrations.lazycodexRoles.current":`Atual`,"integrations.lazycodexRoles.model":`Novo modelo`,"integrations.lazycodexRoles.modelFor":`Modelo para {role}`,"integrations.lazycodexRoles.effort":`Esforço de raciocínio`,"integrations.lazycodexRoles.effortFor":`Esforço de raciocínio ({role})`,"integrations.lazycodexRoles.effortDefault":`Herdar esforço`,"integrations.lazycodexRoles.none":`Nenhum modelo fixado`,"integrations.lazycodexRoles.choose":`Escolha um modelo`,"integrations.lazycodexRoles.empty":`Nenhuma função de agente do Codex foi encontrada.`,"integrations.lazycodexRoles.loadFailed":`Não foi possível carregar as funções de agente do Codex.`,"integrations.lazycodexRoles.saveFailed":`Não foi possível salvar o modelo de {role}.`,"integrations.lazycodexRoles.saved":`{role} agora usa {model}.`,"integrations.lazycodexRoles.omoAbsent":`{role} agora usa {model}. O omo.jsonc não foi encontrado, então só o arquivo da função foi alterado.`,"integrations.lazycodexRoles.omoComments":`{role} agora usa {model}. O omo.jsonc tem comentários que salvar removeria, então ficou como estava; defina [codex].agents.{role} nele você mesmo.`,"integrations.lazycodexRoles.omoInvalid":`{role} agora usa {model}. O omo.jsonc ficou como estava porque não é um JSON válido no formato que o LazyCodex lê.`,"integrations.lazycodexRoles.omoFailed":`{role} agora usa {model}, mas não foi possível gravar o omo.jsonc.`,"integrations.lazycodexRoles.retryMirror":`Tentar omo.jsonc novamente`,"integrations.lazycodexRoles.omoCommentsState":`O omo.jsonc tem comentários, então salvar aqui atualiza só os arquivos de papel. Defina [codex].agents no omo.jsonc você mesmo.`,"integrations.lazycodexRoles.auto.button":`Atribuir automaticamente`,"integrations.lazycodexRoles.auto.running":`Dimensionando funções…`,"integrations.lazycodexRoles.auto.hint":`Sugere para cada papel o modelo suficiente mais barato e o esforço adequado. Nada muda até você aplicar.`,"integrations.lazycodexRoles.auto.failed":`Não foi possível dimensionar as funções de agente do Codex.`,"integrations.lazycodexRoles.auto.title":`Modelos propostos`,"integrations.lazycodexRoles.auto.sizedWith":`Dimensionado com {model}`,"integrations.lazycodexRoles.auto.applyAll":`Aplicar todos`,"integrations.lazycodexRoles.auto.discard":`Descartar`,"integrations.lazycodexRoles.auto.sizingFailed":`A chamada de dimensionamento falhou: {error}`,"integrations.lazycodexRoles.auto.appliedCount":`{count} de {total} propostas aplicadas.`,"integrations.lazycodexRoles.auto.proposalFor":`Proposta para {role}`,"integrations.lazycodexRoles.auto.tierEffort":`Nível {tier}, esforço {effort}`,"integrations.lazycodexRoles.auto.tierFast":`Rápido`,"integrations.lazycodexRoles.auto.tierStandard":`Padrão`,"integrations.lazycodexRoles.auto.tierFrontier":`Frontier`,"integrations.lazycodexRoles.auto.effortGlance":`olhada rápida`,"integrations.lazycodexRoles.auto.effortMeasured":`moderado`,"integrations.lazycodexRoles.auto.effortThorough":`minucioso`,"integrations.lazycodexRoles.auto.effortExhaustive":`exaustivo`,"integrations.lazycodexRoles.auto.unsized":`Não dimensionado: {reason}`,"integrations.lazycodexRoles.auto.unassigned":`Sem modelo: {reason}`,"integrations.lazycodexRoles.auto.applied":`Aplicado`,"integrations.lazycodexRoles.auto.alreadySet":`Já definido`,"integrations.lazycodexRoles.auto.apply":`Aplicar`,"integrations.lazycodexRoles.auto.moveUp":`Suba de nível se: {text}`,"integrations.lazycodexRoles.auto.moveDown":`Desça de nível se: {text}`,"integrations.semantics.cline":`Gerencia o OpenCodex no providers.json e no models.json do Cline CLI. Pare o Cline antes de alterar ou sincronizar esses arquivos e reinicie depois. Desfazer restaura os dois originais. Seu provedor padrão permanece inalterado; selecione o OpenCodex no Cline.`,"integrations.semantics.qoder":`Gerencia os provedores e modelos personalizados do OpenCodex em ~/.qoder/settings.json. Requer acesso por loopback. As demais configurações são preservadas; Desfazer restaura o snapshot.`,"integrations.semantics.commandcode":`Gerencia apenas a entrada do provedor OpenCodex em ~/.commandcode/providers.json. Seus outros provedores e configurações permanecem inalterados.`,"integrations.semantics.kilo":`Gerencia apenas provider.opencodex na configuração global do Kilo — o primeiro arquivo existente entre kilo.jsonc, kilo.json, opencode.jsonc, opencode.json ou config.json em ~/.config/kilo (XDG_CONFIG_HOME realoca esse diretório; kilo.jsonc é criado quando nenhum existe). As demais chaves permanecem inalteradas. Aplicar reescreve o arquivo inteiro, então comentários e vírgulas finais não são preservados. Selecione opencodex/<model> no Kilo.`,"integrations.semantics.droid":`Adiciona modelos personalizados do OpenCodex ao settings.json do Factory Droid. Desativar remove apenas as linhas gerenciadas; desfazer restaura o arquivo salvo.`,"integrations.raycast.proRequired":`Custom Providers é um recurso do Raycast Pro. O arquivo será gravado, mas o Raycast o ignora até que uma assinatura Pro esteja ativa.`,"integrations.raycast.planUnknown":`Não foi possível determinar se o Raycast Pro está ativo; Custom Providers requer o Raycast Pro.`,"integrations.raycast.revealConfig":`Abra Raycast → Settings → AI e clique uma vez em Reveal Providers Config para que a pasta de provedores exista.`,"codexAuth.mainAccount":`Conta principal`,"codexAuth.logLabel":`Rótulo no log`,"codexAuth.codexApp":`App Codex`,"codexAuth.moreActions":`Mostrar mais ações`,"codexAuth.copyId":`Copiar ID da conta`,"codexAuth.appLogin":`Login do app`,"codexAuth.accountPool":`Pool de contas`,"codexAuth.accountModeTitle":`Modo de conta OpenAI`,"codexAuth.accountModePool":`Modo Pool`,"codexAuth.accountModePoolDesc":`O login principal e as contas adicionadas elegíveis se alternam aqui.`,"codexAuth.accountModeDirect":`Modo direto`,"codexAuth.accountModeDirectDesc":`As requisições usam apenas o login principal; as contas adicionadas continuam armazenadas para o modo Pool.`,"codexAuth.openaiMissing":`O provedor OpenAI integrado não está configurado.`,"codexAuth.openaiDisabled":`O provedor OpenAI integrado está desativado.`,"codexAuth.openaiUnavailableDesc":`Suas contas OpenAI continuam disponíveis. Ative o provedor para rotear as requisições do Codex.`,"codexAuth.enableOpenai":`Ativar OpenAI`,"codexAuth.enablingOpenai":`Ativando...`,"codexAuth.enableOpenaiFailed":`Falha ao ativar o provedor OpenAI.`,"codexAuth.openaiPresetLoadFailed":`Falha ao carregar o preset do provedor OpenAI.`,"codexAuth.openaiPresetUnavailable":`O preset do provedor OpenAI não está disponível.`,"codexAuth.openProviders":`Abrir Provedores`,"codexAuth.add":`Adicionar`,"codexAuth.credits":`Créditos`,"codexAuth.creditsRemaining":`restantes`,"codexAuth.creditsUnlimited":`Ilimitado`,"codexAuth.creditsOverage":`Limite de excedente atingido`,"codexAuth.creditsApprox":`Mensagens aprox.: local {local} · nuvem {cloud}`,"codexAuth.creditsToggle":`Créditos do Codex`,"codexAuth.creditsToggleHint":`Mostra os créditos restantes do Codex nos cartões das contas. Oculto por padrão.`,"codexAuth.creditsShown":`Créditos do Codex visíveis`,"codexAuth.creditsHidden":`Créditos do Codex ocultos`,"codexAuth.creditsToggleFailed":`Não foi possível alterar a configuração de créditos do Codex`,"codexAuth.refreshQuota":`Atualizar cotas`,"codexAuth.ultraFastTitle":`Nível de serviço Ultra Fast`,"codexAuth.mainHardLockTitle":`Bloquear conta principal (5h {short}%, longa {long}%)`,"codexAuth.mainHardLockDesc":`Bloqueia em {short}% na janela de 5h ou em {long}% na janela semanal (mensal, para contas apenas mensais). Desbloqueia quando todas as janelas bloqueantes ficam abaixo do limite; a proteção continua ativa. Ativada por padrão.`,"codexAuth.mainHardLockConfirmTitle":`Ativar a proteção da conta principal (5h {short}%, longa {long}%)?`,"codexAuth.mainHardLockConfirmBody":`Enquanto estiver bloqueada, a conta principal não pode usar a Luna Reserve. Manter o uso normal abaixo do esgotamento pode impedir a ativação da Reserve. As contas adicionadas e os outros provedores continuam disponíveis. Requisições em andamento, credenciais de keyring sem correspondência e tráfego fora deste proxy não são protegidos.`,"codexAuth.mainHardLockConfirm":`Ativar proteção`,"codexAuth.mainHardLockEnabled":`A proteção está ativada (5h {short}%, longa {long}%).`,"codexAuth.mainHardLockDisabled":`A proteção da conta principal está desativada. Os limites das outras contas continuam valendo.`,"codexAuth.mainHardLockLoadFailed":`Não foi possível carregar esta configuração. Tente de novo para verificar o estado atual.`,"codexAuth.mainHardLockSaveFailed":`Não foi possível confirmar o salvamento. Recarregue a configuração antes de tentar de novo.`,"codexAuth.mainHardLockRefreshFailed":`Configuração salva, mas não foi possível atualizar o status das contas. Tente novamente.`,"codexAuth.mainHardLockBlocked":`Bloqueada pela proteção da conta principal (5h {short}%, longa {long}%)`,"codexAuth.mainHardLockUnknown":`Proteção ativa · uso desconhecido`,"codexAuth.mainHardLockMonitoring":`Proteção ativa · monitorando`,"codexAuth.mainExternalUsageWarning":`Possível uso fora do opencodex. O bloqueio pode não impedir o esgotamento.`,"codexAuth.mainHardLockManage":`Ver configuração de proteção`,"codexAuth.mainHardLockFallbackTitle":`Fallback durante o bloqueio`,"codexAuth.mainHardLockFallbackDesc":`Durante o bloqueio, quando nenhuma conta Codex pode atender a uma solicitação, as solicitações a modelos Codex nativos são roteadas para este modelo em vez de falhar. Deixe vazio para recusar como de costume; o bloqueio termina sozinho.`,"codexAuth.mainHardLockFallbackModel":`Modelo de fallback`,"codexAuth.mainHardLockFallbackEffort":`Esforço de raciocínio`,"codexAuth.mainHardLockFallbackDefaultEffort":`Manter esforço da solicitação`,"codexAuth.mainHardLockFallbackActive":`Bloqueando agora — solicitações Codex nativas são roteadas para {model}.`,"codexAuth.mainHardLockFallbackSaveFailed":`Não foi possível confirmar o salvamento do fallback. Recarregue a configuração antes de tentar de novo.`,"codexAuth.ultraFastDesc":`Adiciona a opção de velocidade Ultrafast ao GPT-6 Astra e ao GPT-6.1 Sol no seletor de modelos do Codex e impede que um nível de serviço ultrafast configurado por você em modelos roteados seja removido quando o catálogo é regenerado. O Ultrafast exige um plano do ChatGPT elegível; ative apenas se o seu plano o incluir.`,"codexAuth.ultraFastLoadFailed":`Não foi possível ler a configuração do Ultra Fast.`,"codexAuth.ultraFastEnabled":`Nível Ultra Fast ativado`,"codexAuth.ultraFastDisabled":`Nível Ultra Fast desativado`,"codexAuth.ultraFastFailed":`Não foi possível alterar a configuração do Ultra Fast`,"codexAuth.refreshingQuota":`Atualizando...`,"codexAuth.quotaRefreshed":`Cotas atualizadas`,"codexAuth.quotaRefreshFailed":`Falha ao atualizar as cotas`,"codexAuth.pauseExhausted":`Pausar esgotadas`,"codexAuth.pausingExhausted":`Verificando cotas...`,"codexAuth.pauseExhaustedSucceeded":`Contas no limite pausadas: {count}`,"codexAuth.pauseExhaustedNone":`Nenhuma conta tem 100% de uso confirmado.`,"codexAuth.pauseExhaustedFailed":`Falha ao verificar e pausar as contas esgotadas.`,"codexAuth.noPool":`Nenhuma conta do pool foi adicionada ainda.`,"codexAuth.pause":`Pausar`,"codexAuth.resume":`Retomar`,"codexAuth.paused":`PAUSADA`,"codexAuth.planExcluded":`Não selecionada automaticamente`,"codexAuth.planExcludedHint":`O plano {plan} está excluído da seleção automática. As rotas explícitas por conta continuam disponíveis.`,"codexAuth.pauseSucceeded":`{email} está pausada`,"codexAuth.resumeSucceeded":`{email} voltou a ficar disponível para o pool`,"codexAuth.pauseFailed":`Não foi possível pausar {email}. Nada foi alterado.`,"codexAuth.resumeFailed":`Não foi possível retomar {email}. Nada foi alterado.`,"accountPause.tooltip":`{reason} · {date}`,"accountPause.reason.organizationDisabled":`Organização desativada`,"accountPause.reason.permissionDenied":`Permissão da conta negada`,"accountPause.reason.subscriptionInactive":`Assinatura inativa`,"accountPause.reason.subscriptionExpired":`Assinatura expirada`,"accountPause.reason.planDowngraded":`Plano rebaixado`,"prov.keyResumedSwitchFailed":`A chave foi retomada, mas a ativação falhou. A chave está disponível para seleção automática. Tente selecioná-la novamente.`,"codexAuth.pausedHint":`Excluída da troca automática, das novas tentativas, da recuperação de cooldown e da seleção manual até ser retomada.`,"codexAuth.creditsAfterLimit":`Usar créditos após o limite`,"codexAuth.creditsAfterLimitHint":`Desativado por padrão: uma conta cuja janela de uso chega a 100% é retirada de uso até a janela reiniciar, para que seus créditos do ChatGPT não sejam gastos. Ative em uma conta para que ela continue trabalhando com seus créditos. Contas novas começam desativadas.`,"codexAuth.creditsAfterLimitAria":`Usar créditos após o limite de uso para {email}`,"codexAuth.creditsAfterLimitMainHint":`O bloqueio rígido da conta principal (ativado por padrão) ainda a interrompe primeiro. Desative o bloqueio para que a conta principal gaste créditos.`,"codexAuth.creditSpend":`Usar créditos`,"codexAuth.creditSpendAria":`Usar créditos do ChatGPT após o limite de uso`,"codexAuth.creditsOn":`Usa créditos`,"codexAuth.creditsOnSucceeded":`{email} pode usar créditos após o limite de uso.`,"codexAuth.creditsOffSucceeded":`{email} será retirada de uso ao atingir o limite, e seus créditos serão preservados.`,"codexAuth.creditsUpdateFailed":`Não foi possível atualizar a configuração de créditos de {email}. Nada foi alterado.`,"codexAuth.creditsAllOnSucceeded":`Agora todas as contas podem usar créditos após o limite de uso.`,"codexAuth.creditsAllOffSucceeded":`Nenhuma conta gastará créditos. As contas são retiradas de uso ao chegar a 100%.`,"codexAuth.creditsAllUpdateFailed":`Não foi possível atualizar a configuração de créditos. Nada foi alterado.`,"codexAuth.pinned":`FIXADA`,"codexAuth.pinnedHint":`Você selecionou esta conta manualmente, então uma ordem de seleção mais alta não passará por cima dela. A fixação dura até esta conta ser esgotada, você selecionar outra ou alterar qualquer ordem de seleção.`,"codexAuth.unpinHint":`Selecione-a novamente para remover a fixação e voltar à seleção automática.`,"codexAuth.unpinTitle":`Remover a fixação?`,"codexAuth.unpinDesc":`Vale imediatamente. As threads com afinidade de conta e as requisições em andamento mantêm a conta capturada; as requisições novas ou sem vínculo escolhem automaticamente uma conta pela ordem de seleção e pelos limites.`,"codexAuth.unpinAction":`Remover fixação`,"codexAuth.unpinned":`Fixação removida — a seleção automática voltou`,"codexAuth.unpinFailed":`Não foi possível confirmar a liberação da fixação. Atualize as contas e verifique a seleção atual antes de tentar novamente.`,"codexAuth.unpinChanged":`A conta fixada mudou enquanto esta confirmação estava aberta. Atualize as contas e confira a seleção atual antes de liberar uma fixação.`,"codexAuth.fiveHour":`5h`,"codexAuth.weekly":`Semana`,"codexAuth.quotaAutoRefresh":`Ativação automática da janela`,"codexAuth.quotaAutoRefreshHint":`Envia uma requisição mínima de aquecimento do Codex, sem armazenamento, quando esta janela de cota é reiniciada.`,"codexAuth.quotaAutoRefreshUpdated":`Ativação automática da janela atualizada.`,"codexAuth.quotaAutoRefreshFailed":`Não foi possível atualizar a ativação automática da janela.`,"codexAuth.monthly":`30d`,"codexAuth.resets":`reinicia`,"codexAuth.today":`Hoje`,"codexAuth.current":`ATUAL`,"codexAuth.nextSession":`SELECIONADA`,"codexAuth.poolPrepared":`PREPARADA PARA O POOL`,"codexAuth.preparePoolTitle":`Preparar esta conta para o modo Pool?`,"codexAuth.preparePoolDesc":`As requisições diretas continuam usando o login principal. Esta conta passa a ser a seleção preparada do Pool quando o modo Pool for ativado.`,"codexAuth.prepareForPool":`Preparar para o Pool`,"codexAuth.poolPreparedToast":`{email} está preparada para o modo Pool`,"codexAuth.switchTitle":`Trocar a conta ativa?`,"codexAuth.switchDesc":`Vale imediatamente. As threads com afinidade de conta e as requisições já em andamento mantêm a conta capturada; as requisições novas ou sem vínculo usam a faixa de ordem da conta selecionada, e as contas com a mesma ordem de seleção continuam se revezando.`,"codexAuth.cacheWarning":`O cache de prompt é reiniciado ao trocar de conta. A nova sessão começa com o cache vazio.`,"codexAuth.switchExceedsThresholdWarning":`O uso desta conta atinge ou excede o limite de troca ({threshold}%). A seleção fixada será liberada se não houver folga de cota.`,"codexAuth.setAsNext":`Usar esta conta em seguida`,"codexAuth.cancel":`Cancelar`,"codexAuth.switchBack":`Voltar para a conta principal?`,"codexAuth.switchBackDesc":`Vale imediatamente. As threads com afinidade de conta e as requisições já em andamento mantêm a conta capturada; as requisições novas ou sem vínculo usam a faixa de ordem da conta do login do app, e as contas com a mesma ordem de seleção continuam se revezando.`,"codexAuth.autoSwitch":`Troca proativa por uso`,"codexAuth.autoSwitchQuotaDesc":`Cota: com {threshold}% de uso ou mais, a próxima requisição sem vínculo pode ir para uma conta elegível de menor uso. As tarefas vinculadas mantêm a afinidade por padrão e só mudam quando a conta não consegue atender, e apenas para uma conta com folga real de cota; Go/Free usam somente 30d.`,"codexAuth.autoSwitchQuotaOffDesc":`A troca proativa por uso está desativada. A atribuição de tarefas novas/sem vínculo e a recuperação de falhas continuam valendo.`,"codexAuth.autoSwitchRoundRobinDesc":`A atribuição round-robin não usa este limite; continua alternando as tarefas novas/sem vínculo.`,"codexAuth.autoSwitchFillFirstDesc":`Fill-first: {threshold}% é o ponto de esgotamento para tarefas novas/sem vínculo; as tarefas vinculadas saudáveis mantêm a conta.`,"codexAuth.autoSwitchFillFirstOffDesc":`O fill-first não tem ponto de esgotamento por uso para tarefas novas/sem vínculo; cooldown, reautenticação e recuperação de falhas ainda podem mudar o roteamento.`,"codexAuth.failureRecoveryNote":`A recuperação de falhas é separada: uma requisição rejeitada antes de qualquer saída com 429/402, cooldown, reautenticação, exclusão ou failover transitório configurado pode selecionar outra conta elegível.`,"codexAuth.autoSwitchThreshold":`Limite de uso`,"codexAuth.autoSwitchThresholdAria":`Limite de uso, em porcentagem`,"codexAuth.autoSwitchThresholdInc":`Aumentar o limite de uso`,"codexAuth.autoSwitchThresholdDec":`Diminuir o limite de uso`,"codexAuth.autoSwitchLoadFailed":`Não foi possível carregar a configuração de troca por uso.`,"codexAuth.autoSwitchThresholdInvalid":`Digite um número inteiro de 1 a 100`,"codexAuth.autoSwitchUpdated":`Troca proativa por uso atualizada`,"codexAuth.autoSwitchUpdateFailed":`Não foi possível confirmar a atualização da troca por uso. O último valor confirmado é exibido.`,"codexAuth.requestUserInput":`Pedir entrada no modo Default`,"codexAuth.requestUserInputDesc":`Permite que o Codex pause uma sessão no modo Default e faça perguntas a você com a ferramenta request_user_input.`,"codexAuth.requestUserInputUpdated":`Feature flag atualizada - vale para novas sessões.`,"codexAuth.requestUserInputUpdatedRestart":`Feature flag atualizada - vale para novas sessões. Reinicie o app Codex para aplicá-la.`,"codexAuth.requestUserInputUpdateFailed":`Não foi possível atualizar a feature flag. Nada foi alterado.`,"codexAuth.requestUserInputLoadFailed":`Não foi possível ler a feature flag do config.toml.`,"codexAuth.accountPickerTitle":`Direcionar uma conta específica do Codex pelo seletor de modelos`,"codexAuth.accountPickerOffDesc":`Quando ativado, as linhas comuns de GPT no seletor são substituídas por uma entrada por seletor de conta, para que você escolha a conta exata de uma conversa sem precisar sair da sessão. Desativar não remove nenhuma conta.`,"codexAuth.accountPickerOnDesc":`Cada seletor é um rótulo público de uma conta armazenada. Escolhê-lo trava a conversa na conta mapeada: ela nunca alterna nem recorre a outra, e não muda a conta ativa do Pool.`,"codexAuth.accountPickerCompatibility":`O login integrado do app Codex tem seu próprio seletor; os mapas gerados normalmente o chamam de main e usam um sufixo à prova de colisão, como main-2, quando necessário. As contas adicionadas recebem rótulos estáveis que preservam a privacidade, enquanto os rótulos personalizados de seletor permanecem inalterados. As conversas existentes e as seleções de modelo salvas continuam roteando. Desativar oculta as entradas geradas, mas preserva os seletores e as rotas exatas. Os IDs simples de modelos GPT mantêm o comportamento de Pool ou Direct.`,"codexAuth.accountPickerUpdated":`Direcionamento de conta atualizado.`,"codexAuth.accountPickerUpdateFailed":`Não foi possível atualizar o direcionamento de conta. A última configuração confirmada é exibida.`,"codexAuth.accountPickerLoadFailed":`Não foi possível carregar a configuração de direcionamento de conta.`,"codexAuth.accountPickerRefreshFailed":`Não foi possível atualizar esta configuração. O último valor confirmado continua sendo exibido.`,"codexAuth.advancedSettings":`Configurações avançadas`,"codexAuth.advancedSettingsAria":`Mostrar ou ocultar as configurações avançadas do Codex Auth`,"codexAuth.catalogRefreshPending":`A alteração foi salva, mas a atualização do catálogo de modelos do Codex está pendente. Execute ocx sync para tentar de novo.`,"anthropicPool.title":`Pool de contas Claude (experimental)`,"anthropicPool.enabledDesc":`Sessões fixas, e as novas sessões preferem contas com uso abaixo de {threshold}% ({window}).`,"anthropicPool.enabledNoProactiveDesc":`Os limites de uso não movem uma sessão saudável existente nem uma conta ativa saudável. Quando a conta ativa fica indisponível, e durante a recuperação de recusa, é escolhida a conta com menor uso ({window}).`,"anthropicPool.enabledFillFirstDesc":`Sessões fixas. As novas sessões permanecem na conta ativa até ela atingir {threshold}% ({window}), entrar em cooldown ou precisar de novo login; depois passam para a próxima conta, em ordem. A recuperação de recusa também usa a próxima conta, em ordem.`,"anthropicPool.enabledFillFirstNoThresholdDesc":`Sessões fixas. As novas sessões permanecem na conta ativa até ela entrar em cooldown ou precisar de novo login; depois passam para a próxima conta, em ordem. A recuperação de recusa também usa a próxima conta, em ordem.`,"anthropicPool.enabledRoundRobinDesc":`Sessões fixas. As novas sessões e a recuperação de recusa se revezam entre as contas elegíveis; uso, limite e janela de cota não são considerados.`,"anthropicPool.disabledDesc":`A seleção proativa de contas está desativada. O OpenCodex usa a conta selecionada e ainda pode trocar após uma resposta de limite de taxa (429) ou uma recusa de conta classificada, quando houver outra conta elegível conectada.`,"anthropicPool.experimentalWarning":`Use apenas assinaturas que você possua ou esteja autorizado a usar. O pooling automatizado de contas não é endossado pela Anthropic e continua experimental. Use o cliente Claude Code genuíno com uma pessoa supervisionando a sessão e verifique os termos vigentes da Anthropic. As contas podem compartilhar a cota de uma organização, então adicionar uma conta pode não aumentar a capacidade.`,"anthropicPool.detailsSummary":`Como funciona a seleção de contas`,"anthropicPool.detailsEnabling":`Ativar o pool mantém cada sessão em sua conta enquanto ela estiver saudável e permite que a estratégia selecionada escolha as contas das novas sessões e após uma recusa.`,"anthropicPool.detailsFailover":`Desativá-lo não desativa o failover: após um 429 ou uma recusa de conta classificada, uma requisição ainda pode passar para outra conta conectada. Pause uma conta para mantê-la fora do failover.`,"anthropicPool.detailsActivity":`O OpenCodex não envia requisições keep-warm. Por padrão, não renova tokens do Claude nem consulta o uso em segundo plano; o uso só é lido quando o painel, o app da barra de menus ou um comando ocx o solicita.`,"anthropicPool.nativeMessagesLabel":`Preservar solicitações nativas do Claude`,"anthropicPool.nativeMessagesHelp":`Com o pool ativado, mantém o histórico do Claude Code e os marcadores de cache no caminho nativo de Messages quando a rota selecionada oferece suporte. Outras rotas ainda podem traduzir solicitações. A troca de conta pode iniciar um cache frio; acertos de cache não são garantidos e as contas não compartilham cache. As desativações explícitas de rollout continuam valendo.`,"anthropicPool.saveWarning":`As configurações foram salvas, mas o processamento posterior da configuração falhou. Recarregue as configurações para confirmar o estado atual.`,"anthropicPool.saveStateUnknown":`Não foi possível confirmar as configurações salvas. Recarregue-as antes de fazer outra alteração.`,"anthropicPool.reloadSettings":`Recarregar configurações`,"anthropicPool.detailsGuide":`Guia do pool de contas`,"anthropicPool.needTwoAccounts":`Adicione pelo menos duas contas Claude OAuth antes de ativar o pool.`,"anthropicPool.threshold":`Limite de uso para novas sessões`,"anthropicPool.thresholdAria":`Limite de uso para novas sessões, em porcentagem`,"anthropicPool.thresholdHelp":`É uma preferência para a seleção de contas, não um limite rígido de uso ou de cobrança. 0 desativa a troca proativa por este limite. Padrão: 80%.`,"anthropicPool.thresholdInvalid":`Digite um número inteiro de 0 a 100`,"anthropicPool.loadFailed":`Não foi possível carregar as configurações do pool Claude.`,"anthropicPool.saveFailed":`Não foi possível salvar as configurações do pool Claude.`,"anthropicPool.on":`Ligado`,"anthropicPool.off":`Desligado`,"accountPool.strategy":`Estratégia de rotação`,"accountPool.strategyDesc":`Como o OpenCodex atribui uma conta a uma tarefa nova/sem vínculo.`,"accountPool.strategyResetFirst":`Reinício mais próximo primeiro`,"accountPool.strategyHintResetFirst":`Prefere o reinício de 5 horas ou semanal futuro mais próximo entre as contas abaixo do limite de uso. As tarefas vinculadas seguem a política de afinidade configurada. Cotas independentes por modelo usam a ordenação por cota.`,"accountPool.strategyQuota":`Cota`,"accountPool.strategyRoundRobin":`Round-robin`,"accountPool.strategyFillFirst":`Fill-first`,"accountPool.strategyHintQuota":"A cota revincula uma tarefa existente no limite de uso apenas quando `pool.cacheAffinity` está desativado (por padrão, ele vem ativado). Caso contrário, as tarefas vinculadas permanecem até a conta não conseguir atender, e então só vão para uma conta com folga real de cota.","accountPool.strategyHintRoundRobin":`O round-robin alterna apenas as tarefas sem vínculo ativo; o limite de uso não altera a rotação normal.`,"accountPool.strategyHintFillFirst":`O fill-first usa o limite como ponto de esgotamento para tarefas sem vínculo; as tarefas vinculadas saudáveis mantêm a afinidade.`,"accountPool.unboundDefinition":`Tarefa nova/sem vínculo é uma requisição sem vínculo atual com uma conta; uma tarefa visível existente pode ficar sem vínculo após um reset do proxy ou da afinidade.`,"accountPool.stickyLimit":`Atribuições novas/sem vínculo antes de alternar`,"accountPool.stickyLimitAria":`Atribuições novas/sem vínculo antes de alternar`,"accountPool.stickyLimitInc":`Aumentar o limite de fixação`,"accountPool.stickyLimitDec":`Diminuir o limite de fixação`,"accountPool.stickyLimitHelp":`Mantém a conta selecionada por esta quantidade de atribuições de tarefas novas/sem vínculo antes de avançar; o contador aumenta quando a tarefa é vinculada, não após o sucesso no upstream.`,"accountPool.stickyLimitInvalid":`Digite um número inteiro de 1 a 100`,"accountPool.strategyLoadFailed":`Não foi possível carregar a estratégia de rotação.`,"accountPool.strategyUpdateFailed":`Não foi possível salvar a estratégia de rotação.`,"accountPool.switchAtThreshold":`trocar em {threshold}%`,"accountPool.drainAtThreshold":`esgotar em {threshold}%`,"accountPool.resetBelowThreshold":`reinício mais próximo abaixo de {threshold}%`,"accountPool.thresholdNotUsed":`limite não utilizado`,"accountPool.proactiveSwitchingOff":`troca proativa desativada`,"accountPool.quotaWindow":`Janela de cota`,"accountPool.quotaWindowDesc":`Qual barra de uso em cache controla a seleção de novas sessões baseada em cota, as verificações de limite do fill-first e as substituições elegíveis por 429.`,"accountPool.quotaWindowFiveHour":`Barra de 5 horas`,"accountPool.quotaWindowWeekly":`Barra semanal`,"accountPool.quotaWindowMaxUtilization":`Barra mais alta`,"accountPool.quotaWindowHint":`A semanal ignora as contas cuja barra de 5 horas está esgotada enquanto houver outra conta elegível, mas recorre a elas quando não houver. Empates na semanal preferem o menor uso de 5 horas; as barras semanais por conta só são conhecidas depois que a página Provedores as consultar.`,"accountPool.quotaWindowInert":`Só a cota — ou o fill-first com limite acima de 0 — pontua uma barra de uso, então esta configuração não muda nada na estratégia de rotação atual.`,"accountPool.priority":`Ordem de seleção`,"accountPool.priorityAria":`Ordem de seleção desta conta`,"accountPool.priorityHint":`Números maiores são usados primeiro. O pool passa para um número menor apenas quando todas as contas acima dele estiverem esgotadas ou indisponíveis.`,"accountPool.priorityFirst":`Primeira`,"accountPool.priorityEarlier":`Antes`,"accountPool.priorityNormal":`Normal`,"accountPool.priorityLater":`Depois`,"accountPool.priorityLast":`Última`,"accountPool.priorityOption":`{name} ({value})`,"accountPool.priorityCustom":`Personalizada`,"accountPool.priorityUpdated":`Ordem de seleção atualizada para {email}`,"accountPool.priorityUpdateFailed":`Não foi possível salvar a ordem de seleção de {email}. O último valor confirmado é exibido.`,"accountPool.autoSwitchThreshold":`Limite personalizado da conta`,"accountPool.autoSwitchThresholdAria":`Limite de uso de {email}`,"accountPool.autoSwitchOverrideAria":`Substituir o limite de uso global de {email}`,"accountPool.autoSwitchHint":`Substitui o limite global desta conta. 0 desativa a troca proativa por uso a partir desta conta.`,"accountPool.autoSwitchUpdated":`Limite de uso atualizado para {email}`,"accountPool.autoSwitchUpdateFailed":`Não foi possível salvar o limite de uso de {email}. O último valor confirmado é exibido.`,"codexAuth.switched":`{email} está selecionada para a próxima requisição`,"codexAuth.loadFailed":`Não foi possível carregar as configurações da conta Codex.`,"codexAuth.accountsRefreshFailed":`A última atualização das contas falhou. As contas abaixo são as últimas confirmadas.`,"codexAuth.switchFailed":`Não foi possível trocar de conta. Sua seleção anterior foi mantida.`,"codexAuth.removeConfirm":`Remover {id}?`,"codexAuth.removeFailed":`Não foi possível remover a conta. Nada foi alterado.`,"codexAuth.addTitle":`Adicionar conta Codex`,"codexAuth.addIdLabel":`ID da conta (slug)`,"codexAuth.addIdPlaceholder":`codex-work, codex-alt, team...`,"codexAuth.resetCreditsAria":`{count} crédito(s) de reset`,"codexAuth.addJsonLabel":`Conteúdo do auth.json`,"codexAuth.addHelp":`Copie do ~/.codex/auth.json de outra máquina ou use codex-auth export.`,"codexAuth.importBtn":`Importar`,"codexAuth.importInvalidJson":`JSON inválido`,"codexAuth.importMissingTokens":`access_token ou refresh_token ausente no JSON`,"codexAuth.importMissingId":`O ID da conta é obrigatório`,"codexAuth.accountAdded":`Conta adicionada ao pool`,"codexAuth.addPickDesc":`Faça login com outra conta do ChatGPT para adicioná-la ao pool.`,"codexAuth.oauthLogin":`Login OAuth`,"codexAuth.oauthDesc":`Abre o login do ChatGPT no navegador`,"codexAuth.deviceLogin":`Login por código de dispositivo`,"codexAuth.deviceDesc":`Para proxy headless ou remoto: digite um código curto em outro dispositivo`,"codexAuth.importAuthJson":`Importar auth.json`,"codexAuth.importAuthJsonDesc":`De outra instalação do Codex ou de um codex-auth export`,"codexAuth.back":`Voltar`,"codexAuth.oauthAlreadyInProgress":`Já há um login em andamento. Conclua-o no navegador.`,"codexAuth.oauthWaiting":`Aguardando a conclusão do login do ChatGPT no navegador...`,"codexAuth.oauthSubmittingCode":`Enviando código…`,"codexAuth.oauthCodeSubmitted":`Código enviado — aguardando a conclusão do login…`,"codexAuth.oauthStatusRetrying":`Erro de rede ou de proxy ao verificar o status do login — tentando novamente…`,"codexAuth.oauthCancelled":`O login foi cancelado.`,"codexAuth.loginFailed":`Falha no login`,"codexAuth.needsReauth":`Refazer login`,"codexAuth.reauthenticate":`Reautenticar`,"codexAuth.tokenExpired":`Token expirado — reautentique esta conta`,"codexAuth.mainTokenExpired":`Token expirado — refaça o login com um código de dispositivo abaixo ou pelo login do Codex App`,"codexAuth.mainReauthSucceeded":`Login realizado`,"codexAuth.mainReauthFailed":`Falha ao refazer o login`,"codexAuth.mainReauthCancel":`Cancelar`,"codexAuth.mainReauthCode":`Código`,"codexAuth.mainReauthOpen":`Abrir`,"codexAuth.mainReauthPending":`Aguardando o login…`,"codexAuth.mainReauthDevice":`Refazer login com código de dispositivo`,"codexAuth.emailCollision":`Esta conta corresponde ao seu login principal do Codex. Use outra conta.`,"codexAuth.resetCreditsTitle":`Créditos de reset`,"codexAuth.resetCreditsAvailable":`Você tem {count} crédito(s) de reset disponível(is).`,"codexAuth.resetCreditsDesc":`Cada crédito zera imediatamente seus limites de uso por hora e por semana.`,"codexAuth.noResetCredits":`Você não tem créditos de reset.`,"codexAuth.earnCreditsHint":`Os créditos são ganhos mensalmente e pelo programa de indicação.`,"codexAuth.creditsExpireNote":`Os créditos expiram 30 dias após serem ganhos.`,"codexAuth.useOneCredit":`Usar 1 crédito`,"codexAuth.confirmResetTitle":`Usar crédito de reset?`,"codexAuth.confirmResetDesc":`Isso zerará imediatamente seus limites de taxa atuais. Restam {count} crédito(s).`,"codexAuth.irreversible":`Esta ação não pode ser desfeita.`,"codexAuth.useCredit":`Usar crédito`,"codexAuth.redeeming":`Zerando...`,"codexAuth.resetSuccess":`Limites de taxa zerados! Restam {remaining} crédito(s).`,"codexAuth.resetSuccessGeneric":`Limites de taxa zerados!`,"codexAuth.resetAlreadyRedeemed":`Este crédito já foi resgatado. Créditos inalterados.`,"codexAuth.resetNothingToReset":`Nenhuma janela de limite de taxa precisa ser zerada no momento.`,"codexAuth.resetNoCredit":`Nenhum crédito de reset disponível.`,"codexAuth.resetError":`Falha ao resgatar o crédito de reset. Tente novamente.`,"codexAuth.fifoNote":`O crédito mais antigo é usado primeiro.`,"codexAuth.confirmWhichCredit":`O crédito de {date} será usado.`,"codexAuth.creditNext":`Próximo a usar`,"codexAuth.creditLabel":`Crédito nº {n}`,"codexAuth.creditNextBadge":`PRÓXIMO`,"codexAuth.creditGranted":`Concedido em {date}`,"codexAuth.creditExpires":`Expira em {date} ({days}d restantes)`,"grokCoupon.badgeAria":`{count} cupom(ns) de reset do Grok`,"grokCoupon.badgeErrorAria":`Não foi possível ler os cupons de reset do Grok`,"grokCoupon.title":`Cupons de reset do Grok`,"grokCoupon.available":`Esta conta tem {count} cupom(ns) de reset.`,"grokCoupon.desc":`Um cupom zera imediatamente a janela de uso do Grok desta conta.`,"grokCoupon.none":`Esta conta não tem cupons de reset.`,"grokCoupon.loadFailed":`Não foi possível ler os cupons de reset desta conta.`,"grokCoupon.loadFailedAuth":`Faça login novamente nesta conta xAI para ler os cupons.`,"grokCoupon.retry":`Tentar novamente`,"grokCoupon.couponLabel":`Cupom nº {n}`,"grokCoupon.couponNext":`Próximo a usar`,"grokCoupon.couponNextBadge":`PRÓXIMO`,"grokCoupon.validFrom":`Válido a partir de {date}`,"grokCoupon.expires":`Expira em {date} ({days}d restantes)`,"grokCoupon.useOne":`Usar 1 cupom`,"grokCoupon.fifoNote":`O cupom mais próximo do vencimento é usado primeiro.`,"grokCoupon.confirmTitle":`Usar cupom de reset?`,"grokCoupon.confirmDesc":`Isso zera agora a janela de uso do Grok desta conta. Você tem {count} cupom(ns).`,"grokCoupon.confirmWhich":`O cupom que expira em {date} será usado.`,"grokCoupon.irreversible":`Esta ação não pode ser desfeita.`,"grokCoupon.redeem":`Usar cupom`,"grokCoupon.redeeming":`Resgatando…`,"grokCoupon.redeemSuccess":`Cupom resgatado. Restam {count} cupom(ns).`,"grokCoupon.redeemReplayed":`Este resgate já foi concluído antes. Nada foi consumido novamente.`,"grokCoupon.redeemFailed":`Falha no resgate. Confira a lista de cupons antes de tentar novamente.`,"grokCoupon.authFailed":`Faça login novamente nesta conta xAI para usar os cupons.`,"grokCoupon.noAccount":`Nenhuma conta xAI está disponível para este resgate.`,"grokCoupon.noneAvailable":`Não há cupons de reset disponíveis para resgatar.`,"grokCoupon.identityMismatch":`Esse resgate pertence a outra conta. Feche este diálogo e comece de novo.`,"grokCoupon.networkError":`Não foi possível alcançar o proxy.`,"grokCoupon.capacity":`O registro de resgates está cheio no momento. Tente novamente em instantes.`,"grokCoupon.noOperationId":`Este navegador não consegue gerar um ID de resgate, então o resgate está desativado aqui.`,"grokCoupon.unknownOutcome":`O resultado do resgate é desconhecido. Releia a conta para consultar os cupons disponíveis; isso não confirma a tentativa original.`,"grokCoupon.checkResult":`Reler conta`,"grokCoupon.checking":`Relendo…`,"grokCoupon.consumedElsewhere":`O cupom não está mais na lista. O resgate original continua sem confirmação; nenhum novo resgate será enviado.`,"grokCoupon.unresolved":`O cupom ainda está na lista. O resgate original ainda pode ser concluído; nenhum novo resgate será enviado.`,"anthropicGrant.badgeAria":`{count} reset(s) de uso do Claude`,"anthropicGrant.badgeErrorAria":`Não foi possível ler os resets de uso do Claude`,"anthropicGrant.title":`Resets de uso do Claude`,"anthropicGrant.available":`Esta conta tem {count} reset(s) de uso.`,"anthropicGrant.desc":`Um reset recompõe imediatamente os limites de 5 horas e semanais do Claude desta conta. O dia do reset semanal permanece o mesmo.`,"anthropicGrant.none":`Esta conta não tem resets de uso.`,"anthropicGrant.ineligible":`Esta conta não é elegível para resets de uso no momento.`,"anthropicGrant.loadFailed":`Não foi possível ler os resets de uso desta conta.`,"anthropicGrant.loadFailedAuth":`Faça login novamente nesta conta Anthropic para ler os resets.`,"anthropicGrant.retry":`Tentar novamente`,"anthropicGrant.resetsLeft":`{left} de {total} restante(s)`,"anthropicGrant.validFrom":`Válido a partir de {date}`,"anthropicGrant.expires":`Expira em {date} ({days}d restantes)`,"anthropicGrant.windowFiveHour":`5 horas {percent}%`,"anthropicGrant.windowWeekly":`Semanal {percent}%`,"anthropicGrant.windowOverage":`Extra {percent}%`,"anthropicGrant.paused":`Pausado`,"anthropicGrant.notUsable":`Ainda não utilizável`,"anthropicGrant.requiresLimit":`Utilizável quando esta conta atingir um limite`,"anthropicGrant.useOne":`Usar 1 reset`,"anthropicGrant.confirmTitle":`Zerar os limites de uso agora?`,"anthropicGrant.confirmDesc":`Isso recompõe agora os limites de uso do Claude desta conta e consome um reset.`,"anthropicGrant.confirmWhich":`Usa: {label}`,"anthropicGrant.irreversible":`Esta ação não pode ser desfeita.`,"anthropicGrant.redeem":`Zerar limites`,"anthropicGrant.redeeming":`Zerando…`,"anthropicGrant.resultReset":`Limites zerados. Restam {count} reset(s).`,"anthropicGrant.resultAlreadyUsed":`Este reset já foi usado.`,"anthropicGrant.resultNotLimited":`Esta conta não está em um limite, então nada foi usado.`,"anthropicGrant.resultCooldown":`Os resets estão em período de espera para esta conta. Nada foi usado.`,"anthropicGrant.resultIneligible":`Esta conta não é mais elegível. Nada foi usado.`,"anthropicGrant.resultUnavailable":`Os resets estão indisponíveis no momento. Nada foi usado.`,"anthropicGrant.resultRateLimited":`Requisições demais. Nada foi usado; tente novamente em um minuto.`,"anthropicGrant.resultAuthError":`Faça login novamente nesta conta Anthropic. Nada foi usado.`,"anthropicGrant.replayed":`Este reset já foi concluído antes. Nada foi usado novamente.`,"anthropicGrant.notUsableNow":`Este reset não pode ser usado no momento. Releia a conta.`,"anthropicGrant.inFlight":`Este reset ainda está sendo processado. Aguarde um instante e releia a conta.`,"anthropicGrant.unresolvedPrior":`Uma tentativa anterior deste reset ainda não foi confirmada. Repita essa tentativa em vez de iniciar uma nova.`,"anthropicGrant.expired":`A tentativa anterior não pôde ser confirmada a tempo. Releia a conta antes de usar um reset.`,"anthropicGrant.identityMismatch":`Esse reset pertence a outra conta. Feche este diálogo e comece de novo.`,"anthropicGrant.sessionRequired":`Abra o painel pelo login próprio dele para usar os resets.`,"anthropicGrant.journalBusy":`O registro de resets está ocupado ou indisponível. Nada foi usado; tente novamente em instantes.`,"anthropicGrant.failed":`A requisição de reset falhou. Verifique a conta antes de tentar novamente.`,"anthropicGrant.noOperationId":`Este navegador não consegue gerar um ID de requisição, então os resets estão desativados aqui.`,"anthropicGrant.unknownOutcome":`O reset não respondeu a tempo, então seu resultado é desconhecido. Tentar de novo envia o mesmo ID de requisição, portanto não pode iniciar um segundo reset.`,"anthropicGrant.retrySame":`Repetir a mesma requisição`,"anthropicGrant.checkResult":`Reler conta`,"anthropicGrant.checking":`Relendo…`,"api.title":`Acesso à API`,"api.subtitle":`Use chaves de API geradas para acessar o proxy opencodex a partir de apps externos. As chaves se autenticam pelo cabeçalho {authHeader}; veja na tabela abaixo o que cada endpoint aceita.`,"api.baseUrl":`URL base`,"api.responsesEndpoint":`API Responses`,"api.chatCompletionsEndpoint":`API Chat Completions`,"api.messagesEndpoint":`API Messages`,"api.modelsEndpoint":`API Models`,"api.surface.on":`Ativado`,"api.surface.off":`Desativado`,"api.surface.source.fixed":`Sempre disponível`,"api.surface.source.explicit":`Configuração explícita`,"api.surface.source.inherited":`Herdado das configurações do Claude`,"api.surface.source.invalid":`Valor inválido — fechado`,"api.surface.messagesToggle":`Disponibilizar a API Messages`,"api.surface.messagesCloseNote":`Desativar o Messages também desativa a integração com o Claude, para que uma versão mais antiga do opencodex mantenha o endpoint fechado também.`,"api.surface.openClaude":`Configurações do Claude`,"api.surface.toggleFailed":`Não foi possível salvar a configuração do Messages.`,"api.surface.toggleUnavailable":`Esta versão do proxy não permite alterar a API Messages aqui. Use a página do Claude.`,"api.surface.closedNote":`As requisições a este endpoint são recusadas com 403.`,"api.endpointNote":`Use a URL base com clientes compatíveis com OpenAI. Responses e Chat Completions são expostos em /v1.`,"api.endpointsTitle":`Endpoints`,"api.authTitle":`Autenticação`,"api.authLoopback":`O acesso por loopback depende da rota; clientes de áudio independentes exigem uma chave de dados do OpenCodex. Binds remotos exigem uma chave de dados ou OPENCODEX_API_AUTH_TOKEN.`,"api.authBaseUrlNote":`Configure os clientes com a URL base e depois escolha o endpoint específico do protocolo abaixo.`,"api.newKeyTitle":`Nova chave criada`,"api.newKeyNote":`Copie esta chave agora. Depois, você pode exibi-la novamente clicando nela na lista de chaves.`,"api.copy":`Copiar`,"api.copied":`Copiado`,"api.dismiss":`Dispensar`,"api.generateTitle":`Gerar chave`,"api.keyNamePlaceholder":`Nome da chave (opcional)`,"api.generate":`Gerar`,"api.generating":`Criando…`,"api.activeKeys":`Chaves ativas ({count})`,"api.activeKeysLoading":`Chaves ativas`,"api.noKeys":`Nenhuma chave de API ainda. Gere uma acima.`,"api.workspace.sections":`Seções da API`,"api.section.keys":`Chaves`,"api.section.connect":`Conectar`,"api.section.endpoints":`Endpoints`,"api.section.models":`Modelos`,"api.section.examples":`Exemplos`,"api.section.plan":`Prévia do caminho`,"api.plan.title":`Prévia do caminho da requisição`,"api.plan.description":`Mostra o caminho que uma requisição para este modelo percorreria pelo proxy. A prévia não envia nada ao upstream e não tem custo.`,"api.plan.modeNote":`Nativo descreve como a requisição é entregue. Não é um resultado de verificação.`,"api.plan.unavailable":`Esta versão do proxy não oferece prévias de caminho.`,"api.plan.noModels":`Ainda não há modelos para pré-visualizar.`,"api.plan.model":`Modelo`,"api.plan.inbound":`API do cliente`,"api.plan.features":`Recursos da requisição`,"api.plan.preview":`Pré-visualizar`,"api.plan.previewing":`Pré-visualizando…`,"api.plan.failed":`Não foi possível calcular a prévia.`,"api.plan.overallMode":`Entrega`,"api.plan.routeKind":`Rota`,"api.plan.reasons":`Motivos`,"api.plan.guaranteed":`Garantido por todos os candidatos`,"api.plan.partial":`Apenas alguns candidatos`,"api.plan.policyRevision":`Revisão da política`,"api.plan.noCandidates":`Nenhuma rota corresponde a este modelo.`,"api.plan.ineligible":`Recusado pela política atual`,"api.plan.requestPath":`Caminho da requisição`,"api.plan.responsePath":`Caminho da resposta`,"api.plan.fidelity":`Fidelidade`,"api.plan.none":`Nenhum`,"api.plan.noPath":`Sem caminho`,"api.plan.noFeatures":`Nenhum recurso de requisição selecionado.`,"api.plan.mode.native":`Nativo`,"api.plan.mode.translated":`Traduzido`,"api.plan.mode.legacyBridge":`Ponte legada`,"api.plan.mode.blocked":`Bloqueado`,"api.plan.fidelity.preserved":`Preservada`,"api.plan.fidelity.degraded":`Degradada`,"api.plan.fidelity.unknown":`Desconhecida`,"api.plan.routeKind.direct":`Direta`,"api.plan.routeKind.combo":`Combo`,"api.plan.routeKind.policy":`Política de roteamento`,"api.plan.routeKind.unknown":`Modelo desconhecido`,"api.plan.disposition.passthrough":`Repassado`,"api.plan.disposition.translated":`Traduzido`,"api.plan.disposition.degraded":`Degradado`,"api.plan.disposition.unsupported":`Descartado`,"api.plan.disposition.unknown":`Desconhecido`,"api.workspace.details":`Detalhes da chave de API`,"api.workspace.keyDetails":`Detalhes da chave`,"api.workspace.keyPrefix":`Prefixo da chave`,"api.workspace.deleteKey":`Excluir chave`,"api.workspace.deleteConfirm":`Tem certeza de que deseja excluir esta chave? Isso não pode ser desfeito.`,"api.workspace.usageExamples":`Exemplos de uso`,"api.copyUrlHint":`Clique para copiar a URL`,"api.urlCopied":`URL copiada`,"api.copyExampleHint":`Clique para copiar o exemplo`,"api.exampleCopied":`Exemplo copiado`,"api.colName":`Nome`,"api.colKey":`Chave`,"api.colActions":`Ações`,"api.key.revealAria":`Mostrar a chave completa de {name}`,"api.key.hideAria":`Ocultar a chave completa de {name}`,"api.key.revealHint":`Clique para mostrar a chave completa`,"api.key.hideHint":`Clique para ocultar a chave completa`,"api.key.revealFailed":`Não foi possível carregar a chave completa.`,"api.key.revealDenied":`Mostrar uma chave armazenada exige uma sessão autorizada pelo operador. Emparelhe este navegador para continuar ou entre com uma identidade Tailscale confiável.`,"api.key.mutationHidden":`A chave foi criada ou sua rotação foi iniciada, mas o valor de exibição única foi ocultado porque a sessão ou a tela mudou.`,"api.key.copyFailedShort":`Não foi possível copiar. Selecione a chave e copie-a manualmente.`,"api.key.deleteRowAria":`Excluir {name}`,"api.key.deleteShort":`Excluir`,"api.colCreated":`Criada em`,"api.confirm":`Confirmar`,"api.deleteAria":`Excluir chave de API`,"api.modelsTitle":`Catálogo de modelos externos`,"api.modelsCount":`{count} chamável(is)`,"api.modelsLoading":`Carregando modelos…`,"api.modelsSearch":`Buscar modelos`,"api.modelsSubtitle":`Use exatamente estes IDs de modelo com /v1/models e o protocolo de entrada escolhido.`,"api.modelsEmpty":`Ainda não há modelos chamáveis externamente.`,"api.modelsNoMatch":`Nenhum modelo corresponde a “{query}”.`,"api.modelsLoadFailed":`Não foi possível carregar o catálogo de modelos externos.`,"api.colModel":`Modelo`,"api.colSource":`Origem`,"api.colProtocols":`Protocolos`,"api.sourceNative":`Pool do ChatGPT`,"api.sourceCombo":`Rota combo`,"api.sourceCustom":`Personalizado`,"api.protocolResponses":`Responses`,"api.protocolChatCompletions":`Chat Completions`,"api.protocolMessages":`Messages`,"api.copyModelId":`Copiar ID`,"api.modelCopied":`Copiado`,"api.testModel":`Testar`,"api.testingModel":`Testando…`,"api.testSucceeded":`OK`,"api.testFailed":`Falhou`,"api.usageChatTitle":`Exemplo de Chat Completions`,"api.usageResponsesTitle":`Exemplo de Responses`,"api.usageMessagesTitle":`Exemplo de Messages`,"api.usageSampleInput":`Olá, mundo!`,"api.clientConfig.title":`Configuração do cliente`,"api.clientConfig.rowsLabel":`Conectar um cliente`,"api.clientConfig.details":`Detalhes`,"api.clientConfig.detailsAria":`Detalhes da configuração de {client}`,"api.clientConfig.copyAria":`Copiar a configuração de {client}`,"api.clientConfig.downloadAria":`Baixar a configuração de {client}`,"api.clientConfig.rowMeta":`{destination} · {count} modelo(s)`,"api.clientConfig.rowError":`Não foi possível gerar a configuração de {client}.`,"api.clientConfig.copiedAnnounceClient":`Configuração de {client} copiada para a área de transferência.`,"api.clientConfig.clientOpencode":`OpenCode`,"api.clientConfig.clientPi":`Pi`,"api.clientConfig.clientOmp":`OMP`,"api.clientConfig.clientHermes":`Hermes`,"api.clientConfig.clientOpenclaw":`OpenClaw`,"api.clientConfig.clientKimi":`Kimi Code`,"api.clientConfig.clientGajae":`gjc`,"api.clientConfig.clientDsh":`DeepSeek Harness (DSH)`,"api.clientConfig.clientMcode":`MiniMax Code`,"api.clientConfig.clientZcode":`ZCode`,"api.clientConfig.clientPrime":`Prime Agent`,"api.clientConfig.clientAside":`Aside`,"api.clientConfig.clientRaycast":`Raycast`,"api.clientConfig.clientOmo":`omo`,"api.clientConfig.clientCline":`Cline CLI`,"api.clientConfig.clientCommandCode":`Command Code`,"api.clientConfig.clientKilo":`Kilo`,"api.clientConfig.clientQoder":`Qoder`,"api.clientConfig.clientDroid":`Factory Droid`,"api.clientConfig.clineBundle":`Este é um pacote de dois arquivos, não um arquivo de configurações do Cline. Mescle settings em providers.json e catalog no models.json vizinho. Use o interruptor de integração para uma gravação com backup.`,"api.clientConfig.clineDownloaded":`{filename} baixado. Nada foi alterado ainda; settings e catalog pertencem a dois arquivos separados do Cline.`,"api.clientConfig.copy":`Copiar configuração`,"api.clientConfig.download":`Baixar`,"api.clientConfig.loading":`Gerando configuração do cliente…`,"api.clientConfig.jsonLabel":`Configuração de {client}`,"api.clientConfig.destination":`Arquivo de destino`,"api.clientConfig.envHint":`Defina a chave antes de iniciar`,"api.clientConfig.mergeWarning":`Mescle isto no arquivo de destino. Substituí-lo apagaria seus outros provedores e configurações de MCP.`,"api.clientConfig.modelCount":`{count} modelo(s) exportado(s)`,"api.clientConfig.missingLimits":`{count} de {total} modelo(s) saem sem limite de contexto; o cliente aplica seus próprios padrões.`,"api.clientConfig.noKeyYet":`{env} ainda não tem nenhuma chave por trás. Gere uma chave acima antes de usar esta configuração fora do loopback.`,"api.clientConfig.loadFailed":`Não foi possível ler a lista de modelos, então nenhuma configuração de cliente foi gerada.`,"api.clientConfig.copiedAnnounce":`Configuração do cliente copiada para a área de transferência.`,"api.clientConfig.copyFailed":`Não foi possível copiar a configuração do cliente.`,"api.clientConfig.downloadedAnnounce":`{filename} baixado. Nada foi alterado ainda — mescle-o você mesmo em {destination}.`,"api.clientConfig.whereDisclosure":`Onde este arquivo vai`,"api.clientConfig.whereBody":`O destino acima é o caminho global. Um arquivo de configuração local do projeto, no diretório de trabalho, tem precedência sobre ele, e o cliente lê a chave da variável de ambiente indicada na configuração — nunca deste arquivo.`,"api.keysLoadFailed":`Não foi possível carregar as chaves de API.`,"api.createFailed":`Não foi possível criar a chave de API.`,"api.deleteFailed":`Não foi possível excluir a chave de API.`,"api.auth.endpoint":`Endpoint`,"api.auth.required":`Obrigatória`,"api.auth.accepted":`Aceita`,"api.auth.rejected":`Não aceita`,"api.auth.testProtocol":`Testar {protocol}`,"api.auth.testNeedsFreshKey":`Gere uma chave e mantenha seu valor único na tela para executar um teste autenticado.`,"api.key.name":`Nome da chave`,"api.key.rename":`Renomear`,"api.key.saveName":`Salvar nome`,"api.key.renaming":`Salvando…`,"api.key.renameFailed":`Não foi possível renomear a chave. Seu rascunho foi mantido.`,"api.key.deleting":`Excluindo…`,"api.rotation.title":`Rotação de chave`,"api.rotation.description":`Emita uma chave substituta enquanto a chave atual continua válida por um curto período de sobreposição.`,"api.rotation.start":`Iniciar rotação`,"api.rotation.starting":`Iniciando…`,"api.rotation.pending":`A rotação está pendente. Atualize e verifique o cliente antes de confirmar.`,"api.rotation.expires":`A sobreposição expira em:`,"api.rotation.secretOnce":`Chave substituta — exibida uma única vez. Copie-a antes de fechar este aviso.`,"api.rotation.commit":`Confirmar rotação`,"api.rotation.abort":`Cancelar rotação`,"api.rotation.failed":`A ação de rotação não foi concluída. Atualize a página antes de tentar novamente.`,"api.rotation.startFailed":`Não foi possível iniciar a rotação da chave.`,"api.key.copyFailed":`Não foi possível copiar a chave. Selecione-a e copie manualmente antes de fechar este painel.`,"api.attribution.title":`Uso atribuído`,"api.attribution.requests7d":`Requisições, últimos 7 dias`,"api.attribution.totalRequests":`Total de requisições atribuídas`,"api.attribution.totalRequestsAvailable":`Requisições no histórico disponível`,"api.attribution.sinceAvailable":`Atribuição disponível desde`,"api.attribution.lastUsed":`Último uso`,"api.attribution.since":`Atribuição disponível desde`,"api.attribution.neverUsed":`Não usada desde o início da atribuição`,"api.attribution.unavailable":`Uso indisponível`,"api.attribution.unavailableDetail":`Nenhum uso foi atribuído ainda. As requisições registradas antes do início da atribuição não podem ser atribuídas retroativamente.`,"api.attribution.ambiguous":`Duas chaves compartilham este ID, então o uso não pode ser atribuído a nenhuma delas. Dê a cada chave um ID exclusivo no arquivo de configuração.`,"api.attribution.railAmbiguous":`ID duplicado`,"claude.subtitle":`Encaminha ocx claude pelo OpenCodex para que o Claude Code possa usar GPT, Gemini e outros modelos. Ao desativar, a interceptação (incluindo o modo first-party) e a lista de modelos do Claude Desktop também são desativadas. É a mesma configuração do interruptor Claude na visão geral de Conexão.`,"claude.pageTitle":`Claude Code`,"claude.workspace.settings":`Geral`,"claude.enabledLabel":`Conexão com o Claude`,"claude.saveBar.label":`Salvar configurações do Claude Code`,"claude.saveBar.dirty":`Alterações não salvas`,"claude.saveBar.clean":`Nenhuma alteração`,"claude.saveBar.revert":`Reverter`,"claude.enabledHint":`Quando desativada, o Claude Code não consegue usar este proxy.`,"claude.authMode":`Modo de autenticação`,"claude.authModeHint":`Assinatura exige conta Claude; Proxy funciona sem conta Anthropic`,"claude.authModeSubscription":`Assinatura (conta Claude)`,"claude.authModeProxy":`Proxy (sem necessidade de conta)`,"claude.authModeAuto":`Automático (detectar autenticação do Claude)`,"claude.effectiveMode.label":`Vale a partir da próxima inicialização`,"claude.effectiveMode.manual":`Manual: {mode}`,"claude.effectiveMode.autoPresent":`Automático: assinatura — autenticação do Claude encontrada via {source}`,"claude.effectiveMode.autoAbsent":`Automático: modo proxy — nenhuma autenticação do Claude encontrada`,"claude.effectiveMode.autoUnknown":`Automático: assinatura — não foi possível verificar a autenticação`,"claude.effectiveMode.admissionKey":`A chave de API deste proxy continua sendo enviada.`,"claude.authSource.claude-json-oauth":`conta Claude`,"claude.authSource.claude-credentials-file":`arquivo de credenciais`,"claude.authSource.macos-keychain":`Keychain do macOS`,"claude.authSource.exported-env":`variável de ambiente`,"claude.authSource.unknown":`uma credencial detectada`,"claude.systemEnv":`Conexão automática`,"claude.systemEnvDesc":`Quando ativada, executar claude em qualquer terminal passa automaticamente pelo proxy.`,"claude.systemEnvUnsupported":`A conexão automática está disponível apenas no macOS. Neste sistema, inicie o Claude com {cmd}.`,"claude.systemEnvWarn":`⚠ É preciso fechar totalmente e reabrir o aplicativo de terminal para que isto tenha efeito. Não recomendado.`,"claude.fastMode":`Modo rápido (OpenAI)`,"claude.fastModeDesc":`Controla o service_tier dos modelos OpenAI. ON = priority (mais rápido). OFF = default. Auto = repasse (o cliente decide).`,"claude.fastAuto":`Auto`,"claude.fastOn":`ON`,"claude.fastOff":`OFF`,"claude.autoContext":`Usar contexto grande automaticamente`,"claude.autoContextDesc":`Controla até onde vai a marcação de 1M. ON: qualquer modelo cuja janela comporte o limite de compactação ganha uma linha de contexto grande. OFF: só os modelos de 1M de verdade ganham uma.`,"claude.autoContextInert":`Inativo porque existe um valor legado de tamanho de contexto (maxContextTokens) no arquivo de configuração. Remova-o de lá para reativar.`,"claude.contextAccounting":`Contagem de contexto`,"claude.contextAccountingDesc":`1M: modelos de janela longa ficam com 1M por padrão onde o opencodex escolhe o padrão. 200k: o opencodex deixa de marcar modelos como 1M automaticamente; uma linha 1M escolhida por você e uma substituição de contexto definida por você continuam valendo.`,"claude.contextAccounting1m":`1M (padrão)`,"claude.contextAccounting200k":`200k`,"claude.autoCompactWindow":`Ponto de resumo automático`,"claude.autoCompactDefault":`{value} (padrão)`,"claude.autoCompactWindowDesc":`As mensagens mais antigas são resumidas quando a conversa chega a este ponto. Ele nunca excede o limite de cada modelo, então modelos de 200k não são afetados.`,"claude.autoCompactWindowWarn":`Alterar isto pode quebrar modelos GPT — se for definido acima do limite real do modelo, as conversas darão erro antes de o resumo entrar em ação.`,"claude.injectAgents":`Registrar subagentes automaticamente`,"claude.injectAgentsDesc":`Registra os modelos escolhidos na aba Subagentes (mais o modelo padrão atual) como agentes despacháveis do Claude Code (ocx-*). Vale a partir da próxima sessão.`,"claude.webSearchSidecar":`Substituição do sidecar de busca na web`,"claude.webSearchSidecarHint":`Substitui o sidecar principal de busca na web nas requisições do Claude Code.`,"claude.visionSidecar":`Substituição do sidecar de visão`,"claude.visionSidecarHint":`Substitui o sidecar principal de visão nas requisições do Claude Code.`,"claude.useMainSetting":`Usar configuração principal`,"claude.sidecarModelPlaceholder":`Modelo da configuração principal`,"claude.quickstart":`Primeiros passos`,"claude.quickstartHint":`{cmd} abre o Claude Code por meio do proxy. Seu login no claude.ai continua ativo.`,"claude.manualEnv":`Configuração manual (avançado)`,"claude.smallFastModel":`Modelo auxiliar em segundo plano`,"claude.smallFastModelHint":`O modelo que o Claude Code usa em tarefas de segundo plano, como resumos de conversa e detecção de tópico. O alias de subagente haiku também o utiliza. Vazio = padrão do Claude (Haiku).`,"claude.smallFastModelAccurateHint":`O modelo que o Claude Code usa em tarefas de segundo plano, como resumos de conversa e detecção de tópico. O alias de subagente haiku também o utiliza.`,"claude.smallFastModelUnsetOption":`Deixar o Claude Code escolher (modelo nativo)`,"claude.smallFastModelNativeWarning":`Quando não definido, o OpenCodex deixa sem definir as substituições do modelo auxiliar. O Claude Code pode usar seu modelo Sonnet nativo, o que pode gerar cobranças do seu provedor nativo.`,"claude.slotUnset":`Usar padrão do Claude`,"claude.modelMap":`Interceptação de modelo`,"claude.modelMapHint":`Intercepta requisições de um modelo específico e as redireciona para o modelo que você escolher. Vazio por padrão: nada acontece até você adicionar uma regra.`,"claude.mapFrom":`Modelo original (ex.: claude-sonnet-4-5)`,"claude.mapTo":`Trocar por (ex.: gemini/gemini-3-pro)`,"claude.addMapping":`Adicionar regra`,"claude.removeMapping":`Remover regra`,"claude.aliases":`Modelos disponíveis`,"claude.aliasesHint":`Modelos que aparecem no menu /model do Claude Code.`,"claude.aliasProviderOther":`Outros`,"claude.loading":`Carregando…`,"claude.loadFail":`Falha ao carregar as configurações do Claude`,"claude.saved":`Salvo.`,"claude.saveFailed":`Falha ao salvar`,"claude.networkError":`Erro de rede — o proxy está em execução?`,"claude.toggleAria":`Alternar conexão com o Claude`,"claude.none":`Nenhum`,"cws.loading":`Carregando combos…`,"cws.loadFailed":`Não foi possível carregar os combos.`,"cws.saveFailed":`Não foi possível salvar o combo.`,"cws.removeFailed":`Não foi possível remover o combo.`,"cws.saved":`Combo salvo.`,"cws.created":`{model} criado.`,"cws.removed":`combo/{id} removido.`,"cws.renamed":`{from} renomeado para {to}.`,"cws.add":`Adicionar combo`,"cws.addTitle":`Adicionar combo`,"cws.addSubtitle":`Crie um modelo virtual entre provedores e escolha o nome exato do modelo que os clientes vão solicitar.`,"cws.create":`Criar combo`,"cws.jev.create":`Criar JEV Auto`,"cws.jev.exists":`O JEV Auto já existe.`,"cws.jev.setupHint":`Crie um Combo opcional e totalmente editável. O JEV escolhe um destino permitido e um esforço de raciocínio para cada requisição.`,"cws.jev.decisionService":`Serviço de decisão`,"cws.jev.decisionServiceDefault":`TypeSafe JEV (padrão)`,"cws.err.invalidDecisionProvider":`O serviço de decisão {name} não pode ser usado ({reason}). Escolha outro serviço ou o TypeSafe JEV.`,"cws.jev.decisionIssue.missing":`não configurado`,"cws.jev.decisionIssue.notDecision":`não é um serviço de decisão`,"cws.jev.decisionIssue.disabled":`desativado`,"cws.jev.decisionIssue.endpoint":`a URL base deve terminar em /systemone`,"cws.jev.decisionIssue.model":`sem modelo padrão`,"cws.jev.decisionServiceDefaultHint":`O serviço de decisão TypeSafe hospedado, autenticado com a chave do provedor jev.`,"cws.jev.decisionServiceHint":`Serviço de decisão auto-hospedado. Apenas a chave de API do próprio provedor é enviada ao seu endpoint:`,"cws.jev.decisionServicesTitle":`Serviços de decisão do JEV`,"cws.jev.decisionTimeout":`Timeout da decisão (ms)`,"cws.jev.decisionTimeoutHint":`Deixe vazio para o padrão ({default} ms); permitido de {min} a {max} ms. Quando expira, o JEV recorre ao primeiro destino elegível. Aumente para modelos auto-hospedados lentos ou frios.`,"cws.jev.decisionTimeoutShort":`Timeout de {ms} ms`,"cws.jev.decisionTimeoutDefaultShort":`Timeout padrão`,"cws.jev.decisionMethod":`Método de decisão`,"cws.jev.method.typesafe":`TypeSafe JEV (padrão)`,"cws.jev.method.systemone":`Servidor compatível com System One`,"cws.jev.method.model":`modelo do opencodex`,"cws.jev.method.systemoneEmpty":`Nenhum servidor System One está configurado. Adicione um provedor com o adaptador jev-decision cuja URL base termine em /systemone, por exemplo um servidor Ollama executando o tev1.`,"cws.jev.decisionModel":`Modelo de decisão`,"cws.jev.decisionModelHint":`Qualquer modelo que o opencodex roteie. Ele recebe o estado de decisão limitado e as opções permitidas e deve responder com uma chave de opção em JSON. Usa as credenciais armazenadas em seu próprio provedor, nunca as do chamador, e não pode ser este combo nem outro combo JEV.`,"cws.err.invalidDecisionModel":`Escolha um modelo de decisão que o opencodex consiga rotear. Ele não pode ser este combo nem outro combo JEV.`,"cws.jev.test":`Testar`,"cws.jev.testing":`Testando…`,"cws.jev.testHint":`Envia uma tarefa sintética com opções de exemplo ao método selecionado. Nada é salvo.`,"cws.jev.testOk":`Respondeu em {ms} ms via {backend}.`,"cws.jev.testFailOpen":`Falhou em modo aberto ({gate}) após {ms} ms. As requisições usariam o primeiro destino elegível.`,"cws.jev.testError":`Não foi possível executar o teste: {error}`,"cws.jev.backend.typesafe":`TypeSafe`,"cws.jev.backend.systemone":`Servidor System One`,"cws.jev.backend.model":`modelo do opencodex`,"cws.jev.backend.unknown":`Desconhecido (registros antigos)`,"cws.jev.stats.backends":`Decisões por método`,"cws.jev.stats.backend":`Método`,"cws.jev.stats.applied":`Aplicadas`,"cws.jev.stats.latency":`Latência média`,"cws.err.invalidDecisionTimeout":`O timeout da decisão deve ser um inteiro de {min} a {max} ms, ou vazio para o padrão.`,"cws.jev.failOpen":`Destino de fail-open`,"cws.jev.modelProfile":`Notas adicionais de modelo para o JEV`,"cws.jev.modelProfilePlaceholder":`Opcional: deixe em branco para nenhuma nota adicional.`,"cws.jev.modelProfileHint":`Notas opcionais que complementam (nunca substituem) o perfil padrão integrado: capacidade, contexto e custo relativo da assinatura. Enviadas ao serviço de decisão selecionado a cada decisão do JEV.`,"cws.err.invalidModelProfile":`As notas de modelo devem ter no máximo 512 caracteres; quebras de linha e tabulações são os únicos caracteres de controle permitidos.`,"cws.jev.allowedEfforts":`O JEV pode selecionar`,"cws.jev.efforts":`Esforços de raciocínio: {efforts}`,"cws.jev.effortsUnknown":`Esforços de raciocínio não informados`,"cws.jev.effortsNone":`Sem esforço de raciocínio explícito`,"cws.jev.stats.tab":`Estatísticas`,"cws.jev.stats.range":`Período das estatísticas do JEV`,"cws.jev.stats.refresh":`Atualizar`,"cws.jev.stats.loading":`Carregando estatísticas do JEV`,"cws.jev.stats.loadFailed":`Não foi possível carregar as estatísticas do JEV.`,"cws.jev.stats.historyIncomplete":`Alguns registros antigos do JEV foram omitidos, então estes totais podem estar incompletos.`,"cws.jev.stats.emptyTitle":`Ainda não há decisões do JEV`,"cws.jev.stats.emptyBody":`Execute este combo para registrar as escolhas e o uso de tokens dos modelos. Decisões tomadas antes da instalação do suporte a estatísticas não estão disponíveis.`,"cws.jev.stats.decisions":`Decisões`,"cws.jev.stats.appliedAndFailOpen":`{applied} aplicadas · {failOpen} em fail-open`,"cws.jev.stats.modelTokens":`Tokens do modelo`,"cws.jev.stats.decisionTokens":`Tokens de decisão do JEV`,"cws.jev.stats.measuredAttempts":`{measured}/{total} tentativas medidas`,"cws.jev.stats.measuredDecisions":`{measured}/{total} decisões informaram uso`,"cws.jev.stats.successful":`{count} requisições bem-sucedidas`,"cws.jev.stats.fallbackOne":`{count} fallback de modelo`,"cws.jev.stats.fallbackMany":`{count} fallbacks de modelo`,"cws.jev.stats.averageLatency":`Latência média do JEV: {value}`,"cws.jev.stats.averageConfidence":`Confiança média: {value}`,"cws.jev.stats.gates":`Portões de decisão do JEV`,"cws.jev.stats.model":`Modelo`,"cws.jev.stats.otherModels":`Outros modelos`,"cws.jev.stats.picks":`Escolhas`,"cws.jev.stats.efforts":`Esforços`,"cws.jev.stats.attempts":`Tentativas`,"cws.jev.stats.input":`Entrada`,"cws.jev.stats.output":`Saída`,"cws.jev.stats.reasoning":`Raciocínio`,"cws.jev.stats.cacheReadWrite":`Cache L/E`,"cws.jev.stats.total":`Total`,"cws.jev.stats.noEffort":`nenhum`,"cws.jev.stats.measuredShort":`medido`,"cws.jev.stats.tokenFootnote":`Os tokens do modelo vêm das tentativas físicas nos destinos, incluindo novas tentativas e fallbacks. Os tokens de decisão do JEV são informados separadamente pelo serviço de decisão.`,"cws.railAria":`Lista de combos`,"cws.searchPlaceholder":`Buscar combos ou destinos…`,"cws.noSearchResults":`Nenhum combo corresponde à busca.`,"cws.group.failover":`Failover`,"cws.group.roundRobin":`Round-robin`,"cws.group.other":`Outras estratégias`,"cws.targetCount":`{count} destinos`,"cws.targetCountOne":`1 destino`,"cws.overviewTitle":`Combos`,"cws.overviewBlurb":`Modelos virtuais que roteiam entre destinos provedor/modelo com failover, round-robin, sorteio ponderado, menos usado ou reinício de cota mais próximo.`,"cws.count.total":`Total`,"cws.count.failover":`Failover`,"cws.count.roundRobin":`Round-robin`,"cws.count.other":`Outros`,"cws.howTitle":`Como funciona`,"cws.howBody":`Peça ao Codex o nome público do modelo do combo. Se não houver um, o padrão é combo/<id>. O OpenCodex seleciona um destino e só passa ao próximo em falhas recuperáveis do upstream. Se nenhum destino estiver disponível, a requisição falha em modo fechado em vez de usar o provedor padrão global.`,"cws.attentionTitle":`Requer atenção`,"cws.attention.empty":`Nenhum destino configurado`,"cws.attention.few":`Apenas um destino — o failover não tem para onde ir`,"cws.attention.catalogOmitted":`Ausente do catálogo de modelos — as capacidades dos membros estão incompletas ou incompatíveis (janela de contexto/metadados ausentes, ou interseção de modalidades vazia). O roteamento por alias continua funcionando`,"cws.attention.allTargetsExhausted":`Todos os destinos habilitados estão sem cota`,"cws.emptyTitle":`Crie seu primeiro combo`,"cws.empty.createDesc":`Dê nome a um modelo virtual e encadeie dois ou mais backends.`,"cws.backToAll":`Voltar para todos os combos`,"cws.allCombos":`Todos os combos`,"cws.copyModel":`Copiar id`,"cws.copied":`Copiado`,"cws.tabsLabel":`Seções de detalhe do combo`,"cws.tab.config":`Configuração`,"cws.tab.about":`Sobre`,"cws.strategy":`Estratégia`,"cws.strategy.failover":`Failover`,"cws.strategy.roundRobin":`Round-robin`,"cws.strategy.random":`Aleatória`,"cws.strategy.leastUsed":`Menos usado`,"cws.strategy.resetWindow":`Janela de reinício`,"cws.strategy.jev":`JEV`,"cws.strategy.failoverHint":`Tenta os destinos em ordem. Se o primeiro falhar com um erro recuperável (limite de taxa, indisponibilidade, bloqueio de assinatura), passa ao próximo.`,"cws.strategy.roundRobinHint":`Distribui o tráfego de forma determinística por peso. Mantém cada destino selecionado por um lote de requisições bem-sucedidas e depois avança.`,"cws.strategy.randomHint":`Sorteia um destino elegível por requisição, com probabilidade proporcional ao peso. Sem afinidade entre requisições.`,"cws.strategy.leastUsedHint":`Encaminha cada requisição ao destino elegível com menos sucessos registrados. As contagens reiniciam com o proxy.`,"cws.strategy.resetWindowHint":`Prefere o destino elegível cuja janela de cota reinicia primeiro. Recorre à ordem da configuração quando faltam dados de cota.`,"cws.strategy.jevHint":`Pede ao serviço de decisão JEV selecionado que escolha um destino elegível e um esforço compatível. Se a decisão estiver indisponível, usa o primeiro destino elegível.`,"cws.field.id":`Id do combo`,"cws.field.idHint":`Os clientes solicitarão {model}`,"cws.field.idInternalHint":`Id interno do combo. Você pode alterá-lo após a criação.`,"cws.field.idHintEdit":`Renomear move o combo para um novo id. Os clientes solicitam {model}.`,"cws.field.alias":`Nome público do modelo`,"cws.field.aliasPlaceholder":`deepseek-v4-flash ou fornecedor/modelo`,"cws.field.aliasHint":`Opcional. Use um nome simples sem prefixo, um prefixo personalizado como fornecedor/modelo, ou deixe em branco para usar combo/<id>.`,"cws.field.nativeAlias":`Alias nativo da OpenAI`,"cws.field.nativeAliasHint":`Permite que este combo assuma um id de modelo nativo da OpenAI sem qualificador e compatível. As rotas da OpenAI qualificadas por conta e por provedor permanecem separadas.`,"cws.field.displayName":`Nome de exibição`,"cws.field.displayNameHint":`Rótulo deste combo no seletor. Obrigatório quando o alias nativo da OpenAI está habilitado.`,"cws.field.stickyLimit":`Sucessos fixos antes de alternar`,"cws.field.stickyLimitHint":`Mantém o destino selecionado por este número de requisições bem-sucedidas antes de o seletor ponderado avançar.`,"cws.field.defaultEffort":`Raciocínio padrão`,"cws.field.defaultEffortNone":`Nenhum (padrão do destino)`,"cws.field.defaultEffortHint":`Usado somente quando o cliente omite o esforço de raciocínio. As opções são a interseção dos esforços informados pelos destinos selecionados; destinos sem metadados de esforço no catálogo não oferecem nenhuma.`,"cws.capability.imageInputUnavailable":`Escolha primeiro todos os destinos no catálogo — modelos desconhecidos não podem ser cobertos pelo Vision Sidecar.`,"cws.capability.imageInputHint":`Ativado por padrão quando todos os destinos aceitam imagens. Desative para aceitar somente texto.`,"cws.capability.imageInputSidecarHint":`Ativado por padrão. Ao salvar, {models} serão declarados como somente texto e usarão o Vision Sidecar para imagens.`,"cws.capability.imageInputSidecarDisabled":`O Vision Sidecar está desativado — as imagens enviadas a {models} são substituídas por uma nota de omissão e a requisição continua sem elas. Ative-o nas configurações do painel para restaurar as descrições.`,"cws.capability.imageInputBlockedHint":`{models} não pode ser coberto pelo Vision Sidecar: suas modalidades de entrada são desconhecidas ou não têm texto.`,"cws.capability.imageInput":`Imagem / multimodal`,"cws.capability.adaptiveEffort":`Escala de raciocínio adaptativa`,"cws.capability.adaptiveEffortHint":`Desativado: um destino sem controle de raciocínio oculta o seletor de esforço para o combo inteiro. Ativado: esses destinos continuam utilizáveis e o seletor mantém os níveis compartilhados pelos demais destinos.`,"cws.capabilities":`Capacidades`,"cws.field.defaultEffortUnsupported":`Este esforço não está na escala comum dos destinos — será ignorado ou ajustado no momento da requisição.`,"cws.field.defaultEffortUnsupportedOption":`fora da interseção`,"cws.targets":`Destinos`,"cws.targets.failoverHint":`A ordem importa — o primeiro é o principal.`,"cws.targets.roundRobinHint":`Os pesos controlam a seleção relativa determinística; a ordem desempata no anel de rotação.`,"cws.targets.randomHint":`Os pesos controlam a probabilidade de cada sorteio; a ordem não importa.`,"cws.targets.leastUsedHint":`A ordem só desempata entre destinos igualmente usados.`,"cws.targets.resetWindowHint":`A ordem vale quando faltam dados de cota ou há empate.`,"cws.targets.jevHint":`Somente estes destinos podem ser selecionados. A ordem define o destino de fail-open e o fallback posterior do Combo.`,"cws.target.provider":`Provedor`,"cws.target.model":`Modelo`,"cws.target.weight":`Peso`,"cws.target.pickProvider":`Selecione o provedor…`,"cws.target.pickProviderFirst":`Selecione um provedor primeiro…`,"cws.target.pickModel":`Selecione o modelo…`,"cws.target.noModels":`Nenhum modelo para este provedor`,"cws.target.modelPlaceholder":`id do modelo`,"cws.target.add":`Adicionar destino`,"cws.target.drag":`Arraste para reordenar`,"cws.target.moveUp":`Mover para cima`,"cws.target.moveDown":`Mover para baixo`,"cws.quota.available":`Disponível`,"cws.quota.exhausted":`Sem cota`,"cws.quota.unknown":`Cota desconhecida`,"cws.quota.allExhausted":`Todos os destinos habilitados estão sem cota. Escolha outro destino ou aguarde a recuperação da cota.`,"cws.aboutTitle":`Execução`,"cws.aboutBody":`Destinos que falham entram em pausa breve, respeitando o Retry-After. Erros de requisição inválida ou de contexto não passam ao próximo destino. Cada destino adapta o esforço às próprias capacidades; combos esgotados falham em modo fechado. Logs e Uso mantêm as tentativas físicas em ordem e o uso por tentativa.`,"cws.removeConfirmTitle":`Remover {model}?`,"cws.removeConfirmDesc":`Isso remove o modelo virtual da configuração e do catálogo do Codex. Nenhum provedor é excluído.`,"cws.unsavedTitle":`Alterações não salvas`,"cws.unsavedDesc":`Descartar as edições deste combo e continuar?`,"cws.keepEditing":`Continuar editando`,"cws.err.missingId":`O id do combo é obrigatório.`,"cws.err.invalidId":`O id deve começar com letra ou número e usar apenas letras, números, pontos, sublinhados ou hifens (máx. 64).`,"cws.err.duplicateId":`Já existe um combo com este id.`,"cws.err.invalidAlias":`O alias deve usar letras, números, pontos, sublinhados ou hifens, com no máximo um segmento "/".`,"cws.err.aliasReservedNamespace":`O alias não pode usar o namespace reservado "combo/".`,"cws.err.aliasNativeFamily":`Aliases simples da família nativa da OpenAI (gpt-*, o1-*, o3-*, o4-*, codex-*) não são permitidos.`,"cws.err.unsupportedNativeAlias":`O alias nativo deve ser um id de modelo simples da OpenAI atualmente compatível.`,"cws.err.missingNativeAliasDisplayName":`É necessário um nome de exibição para aliases nativos.`,"cws.err.invalidDisplayName":`O nome de exibição deve ter no máximo 128 caracteres e não conter caracteres de controle.`,"cws.err.duplicateAlias":`Outro combo já usa este alias.`,"cws.err.noTargets":`Adicione pelo menos um destino.`,"cws.err.incompleteTarget":`Cada destino precisa de um provedor e um modelo.`,"cws.target.disabled":`{name} (desabilitado)`,"cws.err.reservedNamespace":`Um provedor físico chamado combo precisa ser renomeado antes de criar combos.`,"cws.err.providerCollision":`O id do combo conflita com o nome de um provedor configurado.`,"cws.err.unknownProvider":`Cada destino deve usar um provedor configurado.`,"cws.err.duplicateTarget":`O mesmo destino provedor/modelo só pode aparecer uma vez.`,"cws.err.invalidStickyLimit":`Os sucessos fixos devem ser um número inteiro de 1 a 100.`,"cws.err.invalidWeight":`Cada peso de round-robin deve ser um número inteiro de 1 a 10000.`,"cws.err.invalidReasoningEfforts":`Cada destino do JEV deve permitir pelo menos um esforço de raciocínio único e compatível.`,"cws.err.noEnabledTarget":`Pelo menos um destino deve usar um provedor habilitado.`,"claude.tabsLabel":`Cliente Claude`,"claudeDesktop.title":`Claude Desktop`,"claudeDesktop.subtitle":`Roteia cada família de modelos do Claude por um modelo disponível na porta {port} do proxy.`,"claudeDesktop.importJson":`Importar JSON`,"claudeDesktop.exportJson":`Exportar JSON`,"claudeDesktop.loading":`Carregando perfil do Claude Desktop…`,"claudeDesktop.loadFail":`Falha ao carregar o perfil do Claude Desktop.`,"claudeDesktop.retry":`Tentar novamente`,"claudeDesktop.saveFailed":`Falha ao salvar o perfil do Claude Desktop.`,"claudeDesktop.applyFailed":`O perfil foi salvo, mas não pôde ser aplicado.`,"claudeDesktop.updateFailed":`Falha na atualização do Claude Desktop.`,"claudeDesktop.savedApplied":`Perfil salvo e aplicado ao Claude Desktop.`,"claudeDesktop.appliedMarkerUnsaved":`Aplicado ao Claude Desktop, mas o marcador de aplicação não foi salvo — o estado salvo versus aplicado abaixo pode aparecer desatualizado até você aplicar novamente.`,"claudeDesktop.savedAppliedAnnounce":`Perfil do Claude Desktop salvo e aplicado.`,"claudeDesktop.saved":`Perfil salvo.`,"claudeDesktop.savedAnnounce":`Perfil do Claude Desktop salvo.`,"claudeDesktop.exported":`Perfil exportado como JSON.`,"claudeDesktop.importExpected":`Era esperado um perfil do Claude Desktop versão 1.`,"claudeDesktop.importReady":`JSON importado. Revise o rascunho e depois salve e aplique.`,"claudeDesktop.importedAnnounce":`JSON do perfil importado. As alterações não salvas estão prontas para revisão.`,"claudeDesktop.importInvalid":`O arquivo selecionado não é um perfil válido.`,"claudeDesktop.importFailed":`Falha na importação. {error}`,"claudeDesktop.moved":`{route} movido para {family}.`,"claudeDesktop.unsaved":`Alterações não salvas`,"claudeDesktop.upToDate":`O perfil está atualizado`,"claudeDesktop.saving":`Salvando…`,"claudeDesktop.applying":`Aplicando…`,"claudeDesktop.saveApply":`Salvar e aplicar`,"claudeDesktop.emptyTitle":`Nenhum modelo disponível`,"claudeDesktop.emptyHint":`Adicione ou habilite um provedor e volte para atribuir rotas ao Claude Desktop.`,"claudeDesktop.assignmentsLabel":`Atribuições das famílias de modelos do Claude`,"claudeDesktop.family.opus":`Opus`,"claudeDesktop.family.fable":`Fable`,"claudeDesktop.family.sonnet":`Sonnet`,"claudeDesktop.family.haiku":`Haiku`,"claudeDesktop.modelCountOne":`{count} modelo`,"claudeDesktop.modelCountMany":`{count} modelos`,"claudeDesktop.chooseDefault":`Escolha um padrão`,"claudeDesktop.temporaryDefault":`Padrão temporário`,"claudeDesktop.laneEmpty":`Solte um modelo aqui ou use o controle Mover.`,"claudeDesktop.laneNoMatch":`Nenhum modelo desta família corresponde à sua busca.`,"nav.grok":`Grok`,"grok.title":`Grok Build`,"grok.subtitle":`Modelos que o opencodex registrou na sua configuração do Grok.`,"grok.loading":`Carregando status do Grok…`,"grok.loadFail":`Não foi possível ler a configuração do Grok.`,"grok.notConfiguredTitle":`O Grok Build não está configurado`,"grok.notConfiguredHint":`Inicie ou reinicie o proxy com o Grok instalado e o opencodex grava um bloco gerenciado em:`,"grok.endpoint":`Endpoint`,"grok.colModel":`Modelo`,"grok.colAlias":`Alias do Grok`,"grok.colContext":`Contexto`,"grok.groupNative":`Modelos nativos`,"grok.groupRouted":`Modelos roteados`,"grok.enabledCount":`{on} de {total} registrados`,"grok.saved":`Seleção salva.`,"grok.savedApplied":`Seleção salva e gravada na sua configuração do Grok.`,"grok.saveFailed":`Não foi possível salvar a seleção do Grok.`,"grok.applyFailed":`Seleção salva, mas a configuração do Grok não pôde ser atualizada.`,"grok.applySkipped":`Seleção salva. A configuração do Grok não foi alterada.`,"grok.saveApply":`Salvar e aplicar`,"grok.saving":`Salvando…`,"grok.applying":`Aplicando…`,"grok.unsaved":`Alterações não salvas`,"grok.upToDate":`A seleção está atualizada`,"grok.toggleModel":`Registrar {id} no Grok`,"claudeDesktop.available":`Disponível`,"claudeDesktop.defaultBadge":`Padrão`,"claudeDesktop.roles.title":`Modelos`,"claudeDesktop.roles.default":`Modelo padrão`,"claudeDesktop.roles.defaultDesc":`Aparece primeiro no Claude Desktop e é enviado como modelo do nível Opus.`,"claudeDesktop.roles.quick":`Modelo para tarefas rápidas`,"claudeDesktop.roles.quickDesc":`Responde às solicitações do nível Haiku do Claude Desktop.`,"claudeDesktop.roles.unset":`Não definido`,"claudeDesktop.roles.pick":`Escolha um modelo`,"claudeDesktop.roles.unavailableOption":`{route} (indisponível)`,"claudeDesktop.roles.gatewayScope":`Essas escolhas se aplicam ao modo gateway, que grava a lista de modelos do Claude Desktop.`,"claudeDesktop.roles.listTitle":`Lista de modelos Desktop`,"claudeDesktop.roles.listHint":`Preenchida automaticamente a partir dos seus provedores conectados.`,"claudeDesktop.roles.quickBadge":`Tarefas rápidas`,"claudeDesktop.advanced.title":`Avançado: atribuição de níveis Claude`,"claudeDesktop.advanced.desc":`Escolha em qual nível Claude (Opus, Fable, Sonnet, Haiku) o Claude Desktop classifica cada modelo.`,"claudeDesktop.advanced.empty":`vazio`,"claudeDesktop.supports1m":`1M`,"claudeDesktop.unavailable":`Indisponível`,"claudeDesktop.contextM":`contexto de {n}M`,"claudeDesktop.contextK":`contexto de {n}k`,"claudeDesktop.contextUnknown":`contexto desconhecido`,"claudeDesktop.alias":`Alias`,"claudeDesktop.useAsDefault":`Usar como padrão de {family}`,"claudeDesktop.moveTo":`Mover para`,"claudeDesktop.move":`Mover`,"claudeDesktop.status.applied":`Aplicado ao Desktop`,"claudeDesktop.status.stale":`Configuração desatualizada — aplique novamente`,"claudeDesktop.status.notApplied":`Não aplicado`,"claudeDesktop.status.notActiveProfile":`O Desktop está usando outro perfil — aplique novamente`,"claudeDesktop.status.disabled":`A integração com o Claude Desktop está desativada. Feche completamente e reabra o Desktop após ativá-la.`,"claudeDesktop.enableApply":`Ativar e aplicar`,"claudeDesktop.switchModeApply":`Trocar de modo e aplicar`,"claudeDesktop.status.appliedFirstParty":`Primeira parte: a aba Code do Desktop roteada pelo proxy local`,"claudeDesktop.mode.legend":`Modo de conexão`,"claudeDesktop.mode.firstParty":`Primeira parte`,"claudeDesktop.mode.gateway":`Gateway (terceiros)`,"claudeDesktop.mode.defaultBadge":`padrão`,"claudeDesktop.mode.current":`atual`,"claudeDesktop.mode.firstPartyHint":`O Desktop continua conectado ao claude.ai. A aba Code usa o OpenCodex quando a primeira parte do Desktop está ativada; a CLI independente tem seu próprio interruptor. Ambos leem o mesmo env das configurações.`,"claude.intercept.start":`Iniciar interceptação`,"claude.intercept.starting":`Iniciando interceptação…`,"claude.intercept.reason.disabled":`Ative primeiro o roteamento e a interceptação do Claude.`,"claude.intercept.reason.client_role":`Este processo é um cliente do hub. Ative a interceptação em um servidor local.`,"claude.intercept.reason.ephemeral_port":`Defina claudeCode.intercept.port quando a porta pública for efêmera.`,"claude.intercept.reason.port_in_use":`A porta {port} está em uso. Libere-a ou altere claudeCode.intercept.port.`,"claude.intercept.reason.port_mismatch":`Esta execução usa a porta {bound}; a porta configurada {configured} é diferente. Use a porta vinculada ou restaure o valor configurado.`,"claude.intercept.reason.failed":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local.`,"claude.intercept.reason.stopped":`O ciclo de vida da interceptação foi encerrado. Inicie um serviço OpenCodex em execução.`,"claude.firstParty.label":`Primeira parte da CLI do Claude Code`,"claude.firstParty.desc":`Permite que a CLI claude independente mantenha o login do Claude enquanto seu tráfego passa pelo proxy de interceptação local.`,"claude.firstParty.aria":`Alternar primeira parte da CLI do Claude Code`,"claude.firstParty.risk":`Risco para a conta: a primeira parte encaminha o tráfego da assinatura do Claude por um proxy local de interceptação. A Anthropic pode tratar isso como violação dos termos e suspender a conta.`,"claude.firstParty.shared":`Quando o env compartilhado do proxy é aplicado, o outro cliente do Claude também passa pelo proxy local como um relay inalterado; o TLS é encerrado localmente. Defina NO_PROXY='*' no shell para uso totalmente nativo no terminal.`,"claude.firstParty.deadProxy":`O env das configurações do Claude aponta para um proxy que não está em execução. Inicie o opencodex ou desative a primeira parte do Desktop/CLI para remover as configurações antes de usar o claude puro.`,"claude.firstParty.notApplied":`A primeira parte da CLI está ativada, mas suas configurações de proxy não foram aplicadas. Verifique o env das configurações do Claude antes de usar o claude puro.`,"claude.firstParty.brokenProxy":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local.`,"claude.firstParty.residual":"As configurações do Claude ainda apontam para um proxy do OpenCodex, embora nem a primeira parte do Desktop nem a da CLI esteja ativada. Remova a configuração de proxy restante ou execute `ocx ensure`.","claude.firstParty.routingOff":`O opencodex não está atendendo à interceptação do Claude na configuração atual (o roteamento do Claude ou a interceptação está desativado, ou esta máquina é cliente de outro hub opencodex), então estas configurações apontam para um proxy que não vai atendê-las. Reative-o nesta máquina ou desative a primeira parte para remover as configurações.`,"claude.firstParty.disabled":`Ative primeiro o roteamento e a interceptação do Claude.`,"claude.firstParty.foreign":`O ~/.claude/settings.json aponta para o proxy do opencodex, mas confia em um certificado que o opencodex não gerencia, então as requisições falham. Corrija HTTPS_PROXY / NODE_EXTRA_CA_CERTS manualmente ali.`,"claude.firstParty.local":`O ~/.claude/settings.json envia o Claude Code por um proxy local em 127.0.0.1 que o opencodex não consegue confirmar como seu. Se você não o usa mais, remova HTTPS_PROXY dali.`,"claude.firstParty.unknown":`O opencodex não conseguiu determinar se o ~/.claude/settings.json ainda aponta para o seu proxy.`,"claude.firstParty.refusal.interceptDisabled":`O proxy de interceptação está desativado.`,"claude.firstParty.refusal.interceptUnavailable":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local.`,"claude.firstParty.refusal.foreignEnv":`Outro programa é dono das configurações de proxy do Claude.`,"claude.firstParty.refusal.caUnavailable":`A autoridade certificadora local está indisponível.`,"claude.firstParty.refusal.unreadable":`Não foi possível ler as configurações do Claude.`,"claude.firstParty.refusal.writeFailed":`Não foi possível gravar as configurações do Claude.`,"claudeDesktop.mode.firstPartyRisk":`Risco para a conta: a primeira parte envia o tráfego da sua assinatura do Claude por um proxy local de interceptação. A Anthropic pode tratar isso como violação dos termos e suspender a conta. O Gateway é o padrão.`,"claudeDesktop.mode.gatewayHint":`O aplicativo inteiro passa a usar o OpenCodex como gateway. O chat roda localmente; os recursos do claude.ai ficam indisponíveis.`,"claudeDesktop.mode.switchNote":`A troca substitui a configuração do outro modo. Depois, feche completamente e reabra o Desktop.`,"claudeDesktop.firstParty.proxyRunning":`Proxy local em 127.0.0.1:{port}`,"claudeDesktop.firstParty.proxyStopped":`Não foi possível iniciar a interceptação. Tente novamente após verificar a configuração do proxy local. ({port})`,"claudeDesktop.firstParty.interceptDisabled":`O proxy de interceptação está desativado na configuração (claudeCode.intercept.enabled)`,"claudeDesktop.picker.title":`Seletor do Claude Desktop`,"claudeDesktop.picker.hint":`Mostra os modelos do OpenCodex no seletor da aba Code do Desktop por meio do proxy local dedicado.`,"claudeDesktop.picker.toggle":`Ativar o seletor do Claude Desktop`,"claudeDesktop.picker.state.active":`O seletor está ativo`,"claudeDesktop.picker.state.restart":`Feche completamente e reabra o Claude Desktop para concluir a aplicação do perfil do seletor.`,"claudeDesktop.picker.state.trustPending":`Aguardando a etapa de confiança do certificado`,"claudeDesktop.picker.state.trustDeclined":`A confiança no certificado foi recusada`,"claudeDesktop.picker.state.proxyUnavailable":`O proxy do seletor não está em execução`,"claudeDesktop.picker.state.unsupported":`O modo seletor não é compatível com este sistema operacional`,"claudeDesktop.picker.state.notFirstParty":`O seletor só está disponível no modo de primeira parte`,"claudeDesktop.picker.state.profileFailed":`Não foi possível aplicar o perfil do seletor`,"claudeDesktop.picker.models":`{count} modelos disponíveis no seletor`,"claudeDesktop.picker.offlineNote":`Com o modo seletor ativado, o Claude Desktop acessa a rede por meio do OpenCodex. Se o OpenCodex parar, o Desktop fica offline até ele reiniciar ou o modo seletor ser desativado.`,"claudeDesktop.firstParty.bindings.title":`Vínculos de modelo da aba Code`,"claudeDesktop.firstParty.bindings.hint":`O Claude Desktop mantém os nomes da Anthropic no seletor da aba Code. Vincule um modelo do seletor a um modelo do OpenCodex e as requisições dessa entrada do seletor serão atendidas pelo modelo vinculado. Somente o tráfego do Claude Code pelo proxy local (a aba Code do Desktop e a CLI claude) usa estes vínculos; o ocx claude não é afetado. Os vínculos valem a partir da próxima requisição — não é preciso fechar e reabrir completamente.`,"claudeDesktop.firstParty.bindings.empty":`Ainda não há vínculos — os modelos do seletor seguem a rota padrão.`,"claudeDesktop.firstParty.bindings.pickerLabel":`Id do modelo no seletor`,"claudeDesktop.firstParty.bindings.pickerPlaceholder":`claude-sonnet-4-6`,"claudeDesktop.firstParty.bindings.routeLabel":`Modelo do OpenCodex`,"claudeDesktop.firstParty.bindings.routePlaceholder":`Escolha um modelo`,"claudeDesktop.firstParty.bindings.add":`Adicionar vínculo`,"claudeDesktop.firstParty.bindings.remove":`Remover vínculo {id}`,"claudeDesktop.firstParty.bindings.saveFailed":`Não foi possível salvar os vínculos de modelo`,"claudeDesktop.health.lastRequest":`Última requisição`,"claudeDesktop.health.stats":`{count} req / {errors} err`,"claudeDesktop.effort.supported":`esforço`,"claudeDesktop.effort.displayOnly":`esforço (apenas exibição)`,"lab.title":`Laboratório de Compatibilidade`,"lab.subtitle":`Matriz de veredictos de compatibilidade somente leitura, a partir de evidências da projeção do laboratório.`,"lab.loadFailed":`Não foi possível carregar os dados do laboratório de compatibilidade`,"lab.projectionUnavailable":`A projeção do laboratório não está disponível. Execute primeiro a conformidade ou as sondagens ao vivo.`,"lab.projectionIncompatible":`O esquema da projeção do laboratório é incompatível. Reconstrua a projeção.`,"lab.statusTitle":`Status da projeção`,"lab.matrixTitle":`Matriz de compatibilidade`,"lab.verdictsTitle":`Registros de veredicto`,"lab.filter.layer":`Camada de evidência`,"lab.filter.verdict":`Veredicto`,"lab.filter.subject":`ID do assunto`,"lab.filter.all":`Todos`,"lab.col.subject":`Assunto`,"lab.col.layer":`Camada`,"lab.col.suite":`Suíte`,"lab.col.verdict":`Veredicto`,"lab.col.asOf":`Data de referência`,"lab.col.protocol":`Conformidade de protocolo`,"lab.col.live":`Compatibilidade de rota ao vivo`,"lab.col.task":`Eficácia na tarefa`,"lab.empty":`Ainda não há veredictos de compatibilidade na projeção.`,"lab.subjectKind":`Tipo`,"lab.observationCount":`Observações`,"lab.eventCount":`Eventos`,"lab.verdictCount":`Veredictos`,"lab.subjectCount":`Assuntos`,"lab.builtAt":`Gerado em`,"lab.loading":`Carregando evidências de compatibilidade…`,"lab.loadMore":`Carregar mais`,"lab.detailTitle":`Detalhe do veredicto`,"lab.detailClose":`Fechar`,"lab.detailSubject":`Assunto`,"lab.detailObservations":`Observações`,"lab.detailEvents":`Eventos contribuintes`,"lab.detailArtifacts":`Metadados dos artefatos`,"lab.production.title":`Tráfego de produção observado`,"lab.production.notVerification":`Não é verificação do Laboratório`,"lab.production.attempts":`Tentativas`,"lab.production.successes":`Sucessos`,"lab.production.routeErrors":`Erros de rota`,"lab.production.lastObserved":`Última observação`,"lab.detailLoadFailed":`Não foi possível carregar o detalhe do veredicto`,"lab.refresh":`Atualizar`,"lab.verdict.UNKNOWN":`Desconhecido`,"lab.verdict.CLAIMED":`Declarado`,"lab.verdict.PROBED":`Sondado`,"lab.verdict.VERIFIED":`Verificado`,"lab.verdict.DEGRADED":`Degradado`,"lab.verdict.BLOCKED":`Bloqueado`,"lab.verdict.UNSUPPORTED":`Sem suporte`,"lab.layer.protocol_conformance":`Conformidade de protocolo`,"lab.layer.live_route_compatibility":`Compatibilidade de rota ao vivo`,"lab.layer.task_effectiveness":`Eficácia na tarefa`,"models.newPolicyGlobal":`Novos modelos começam desativados`,"models.newPolicyProvider":`Política de novos modelos`,"models.fastProvider":`Modo rápido`,"models.fastProviderHint":`Consome créditos de uso a 2x o preço`,"models.fastEnabled":`Modo rápido ativado`,"models.fastDisabled":`Modo rápido desativado`,"models.fastSaveFailed":`Não foi possível salvar o modo Fast`,"models.newPolicy_inherit":`Herdar`,"models.newPolicy_off":`Desativado`,"models.newPolicy_on":`Ativado`,"models.newBadge":`NOVO`,"models.newCount":`{count} novos, desativados`,"models.aliases":`Aliases`,"models.aliasesTable":`Tabela de aliases`,"models.aliasPrompt":`Alias do provedor (deixe vazio para limpar)`,"models.modelAliasPrompt":`Alias do modelo (deixe vazio para limpar)`,"models.aliasSaved":`Alias salvo`,"models.aliasConflict":`Esse alias conflita com um nome existente`,"models.editProviderAlias":`Editar alias do provedor`,"models.editModelAlias":`Editar alias do modelo`,"models.useDefaultAliases":`Usar aliases padrão`,"models.useDefaultAliasesGlobal":`Usar aliases padrão globalmente`,"models.aliasAuto":`auto`,"models.aliasUser":`usuário`,"models.aliasStale":`obsoleto`,"connection.discovering":`Descobrindo destinos locais e compartilhados…`,"connection.machineUnavailable":`O plano da máquina local está indisponível. As requisições compartilhadas não foram redirecionadas para o local.`,"connection.linkManaged":`Gerenciado pelo Home {home} via Remote Link ({linkId}). Este painel mostra as configurações e a cota do Home somente para leitura; faça as alterações no Home.`,"connection.linkManagedUnnamed":`Gerenciado pelo seu Home via Remote Link ({linkId}). Este painel mostra as configurações e a cota do Home somente para leitura; faça as alterações no Home.`,"connection.disconnect":`Desconectar do hub`,"connection.disconnectConfirm":`Desconectar esta máquina do hub e reiniciá-la no modo standalone?`,"connection.pairing.hub":`Hub`,"connection.pairing.getCode":`Execute este comando no hub para este navegador:`,"connection.pairing.askOperator":`Se outra pessoa opera o hub, envie a ela este comando e peça um código de pareamento de uso único.`,"connection.pairing.notApiKey":`Cole aqui um código de pareamento de uso único. Chaves de API de dados e tokens de administrador não devem ser colocados neste campo.`,"connection.pairing.networkError":`Não foi possível alcançar o hub. Verifique a conexão e tente novamente; seu código continua aqui.`,"connection.pairing.requestError":`O hub não conseguiu concluir a solicitação de pareamento. Verifique o status dele e tente novamente.`,"connection.pairing.responseError":`O hub não retornou uma resposta de pareamento válida. Tente novamente ou entre em contato com o operador.`,"dash.authRequired":`É necessária autenticação do navegador para ver este dashboard.`,"dash.permissionDenied":`Este navegador não tem permissão para ler o dashboard. Verifique as configurações de acesso com o operador do servidor.`,"dash.dataUnavailable":`Não foi possível carregar os dados do dashboard. Verifique a conexão e tente novamente.`,"dash.staleData":`Exibindo os últimos dados recebidos; podem estar desatualizados.`,"connection.pairing.title":`Conectar este dashboard ao hub`,"connection.pairing.body":`Cole o código de pareamento de uso único criado no hub.`,"connection.pairing.relayWarning":`Este código é trocado por meio do relay fixo do hub. O relay não pode ser redirecionado para outro host.`,"connection.pairing.code":`Código de pareamento de uso único`,"connection.pairing.retryValidation":`Tentar validar novamente`,"connection.pairing.validationPending":`O código foi trocado, mas a validação da sessão não pôde ser concluída. Mantenha esta página aberta e escolha Tentar validar novamente; não é necessário um novo código.`,"connection.pairing.submit":`Conectar`,"connection.pairing.submitting":`Conectando…`,"connection.pairing.error":`O hub rejeitou o código. Ele pode ter expirado, já ter sido usado ou ter sido criado para outra origem de navegador. Peça ao operador um novo código para este endereço HTTPS exato.`,"connection.pairing.originDenied":`O hub recusou esta solicitação de pareamento (HTTP 403). Peça ao operador para permitir esta origem de navegador e emitir um código para este endereço HTTPS exato.`,"connection.pairing.cloudflareChallenge":`O Cloudflare interceptou a solicitação de pareamento com uma verificação do navegador. Abra o painel no navegador, conclua a verificação do Cloudflare e tente novamente.`,"connection.pairing.sessionNotAuthorized":`O código foi trocado, mas esta sessão ainda não pode gerenciar o Remote Link. Mantenha a página aberta e peça ao operador do hub um código de pareamento para esta origem de navegador exata.`,"connection.machine.title":`Esta máquina`,"connection.machine.shimHealthy":`O shim do Codex está saudável.`,"connection.machine.shimNeedsAttention":`O shim do Codex precisa de atenção.`,"connection.machine.repairShim":`Reparar shim`,"connection.machine.removeShim":`Remover shim`,"connection.clients.title":`Clientes conectados`,"connection.clients.none":`Nenhum status de cliente disponível`,"connection.clients.sync":`Sincronizar agora`,"connection.clients.syncing":`Sincronizando…`,"connection.sessionLogout":`Encerrar sessão remota`,"connection.sessionLoggingOut":`Encerrando sessão remota…`,"connection.sessionLogoutFailed":`Não foi possível encerrar a sessão remota. A sessão atual foi mantida.`,"usage.source.connected":`Fonte: uso do hub`,"usage.source.local":`Fonte: usage.jsonl local`,"usage.scope.label":`Escopo de uso`,"usage.scope.machine":`Esta máquina`,"usage.scope.hub":`Todo o hub`,"usage.hubOffline":`O uso do hub está indisponível. O uso local não foi usado como substituto.`,"models.displayNameSavedRefreshFailed":`A alteração foi salva, mas não foi possível atualizar a lista de modelos. Tente novamente para atualizá-la.`,"models.displayNameOutcomeUnknown":`A requisição não foi concluída. A alteração pode ter sido salva. Tente novamente para verificar o nome atual antes de fazer outra alteração.`,"models.displayNameCurrentUnavailable":`Nome atual indisponível até a atualização`,"models.displayNameReloaded":`Lista de modelos atualizada`,"models.displayNameAction":`Nome`,"models.displayNameActionLabel":`Editar nome amigável de {model}`,"models.displayNameTitle":`Nome amigável`,"models.displayNameModelId":`ID do modelo`,"models.displayNameCurrent":`Nome atual`,"models.displayNameSourceOperator":`Seu nome`,"models.displayNameSourceProvider":`Nome do provedor`,"models.displayNameSourceFallback":`Fallback para o ID do modelo`,"models.displayNameField":`Nome amigável`,"models.displayNamePlaceholder":`ex.: Grok 4.6`,"models.displayNameHelp":`Altera apenas a apresentação. O roteamento continua {model}.`,"models.displayNameReset":`Redefinir nome`,"models.displayNameSaved":`Nome de exibição salvo`,"models.displayNameResetDone":`Nome de exibição redefinido`,"models.displayNameSaveFailed":`Falha ao salvar o nome de exibição`,"models.displayNameRequired":`Informe um nome amigável ou use Redefinir nome.`,"models.displayNameTooLong":`O nome amigável deve ter no máximo 128 caracteres.`,"models.displayNameNoSlash":`O nome amigável não pode conter /.`,"models.displayNameNoControl":`O nome amigável não pode conter caracteres de controle.`,"pricing.override.action":`Preço`,"pricing.override.actionLabel":`Editar preço de {model}`,"pricing.override.badge":`Preço manual`,"pricing.override.title":`Preço do modelo`,"pricing.override.modelId":`ID do modelo`,"pricing.override.promptTitle":`Preço de prompts longos`,"pricing.override.promptHelp":`Os tokens de entrada e de leitura e gravação do cache determinam a faixa; a requisição inteira é cobrada pelas taxas dessa faixa. Tokens de saída nunca contam. As taxas são de velocidade padrão.`,"pricing.override.help":`USD por 1M de tokens. Informe as taxas de entrada e saída; taxas de cache em branco usam 0. Taxas iguais a 0 são permitidas.`,"pricing.override.input":`Entrada`,"pricing.override.output":`Saída`,"pricing.override.cacheRead":`Leitura de cache`,"pricing.override.cacheWrite":`Escrita de cache`,"pricing.override.modeAutomatic":`Automático`,"pricing.override.modeFlat":`Preço fixo`,"pricing.override.modeCustom":`Limite personalizado`,"pricing.override.modeAutomaticHelp":`Usa as regras do catálogo por tamanho do prompt com os preços básicos acima. Os ajustes Fast e Priority continuam valendo.`,"pricing.override.modeFlatHelp":`Usa os preços básicos acima para qualquer tamanho de prompt, substituindo as regras do catálogo. Os ajustes Fast e Priority continuam valendo.`,"pricing.override.threshold":`Limite do prompt (tokens)`,"pricing.override.bandTitle":`Taxas da faixa de prompts longos`,"pricing.override.bandHelp":`Estas são taxas de velocidade padrão. As regras Fast e Priority do catálogo continuam valendo. Os custos são estimativas.`,"pricing.override.comparison":`Comparação do limite`,"pricing.override.comparisonGt":`Maior que (>)`,"pricing.override.comparisonGte":`Maior ou igual a (≥)`,"pricing.override.modeCustomHelp":`Insira quatro preços absolutos por 1 milhão de tokens. O tamanho do prompt inclui a entrada em cache e exclui a saída. Esses preços substituem a regra do catálogo por tamanho de prompt para toda a solicitação. Os ajustes Fast e Priority continuam valendo. Os custos são estimativas.`,"pricing.override.customInvalid":`Insira um limite positivo de tokens que seja um inteiro seguro e quatro preços finitos de 0 a 1.000.000. Os preços podem ser 0.`,"pricing.override.loading":`Carregando preço salvo…`,"pricing.override.loadFailed":`Não foi possível carregar o preço salvo. Recarregue para tentar de novo.`,"pricing.override.outcomeUnknown":`A requisição não terminou de forma confiável. O preço pode ter mudado. Recarregue o preço salvo antes de editar novamente.`,"pricing.override.recoveryFailed":`Não foi possível recuperar o preço salvo. A edição continua bloqueada; recarregue para tentar de novo.`,"pricing.override.recovered":`Último preço salvo carregado. A requisição anterior ou outro cliente ainda pode alterá-lo.`,"pricing.override.refreshFailed":`O preço foi salvo, mas não foi possível atualizar a lista de modelos. Tente atualizar a lista novamente.`,"pricing.override.invalid":`Informe as taxas de entrada e saída. Cada taxa deve ser um número finito de 0 a 1.000.000.`,"pricing.override.reset":`Voltar ao automático`,"pricing.override.save":`Salvar`,"pricing.override.saving":`Salvando…`,"pricing.override.reload":`Recarregar preço`,"pricing.override.refresh":`Atualizar lista`,"pricing.override.cancel":`Cancelar`,"pricing.override.close":`Fechar`,"usage.range.custom":`Intervalo de datas personalizado`,"usage.range.start":`Início (hora local)`,"usage.range.end":`Fim (hora local)`,"usage.range.apply":`Aplicar`,"usage.range.clear":`Limpar`,"usage.range.help":`Hora local. Inclui o minuto final inteiro.`,"usage.range.required":`Informe a data e hora de início e de fim.`,"usage.range.invalid":`Informe datas e horas locais válidas, a partir de 01/01/1970 UTC.`,"usage.range.reversed":`O fim deve ser igual ou posterior ao início.`,"usage.range.applied":`Intervalo selecionado: {start} – {end} (ambos inclusivos).`,"models.pickerOrder.editorHint":`Reordene os modelos roteados e salve seu rascunho. As linhas em destaque são fixas; modelos nativos não são exibidos.`,"models.pickerOrder.nativeLocked":`Esta ordem salva inclui modelos nativos. Aplique um preset roteado ou Padrão antes de editar o Personalizado.`,"models.pickerOrder.unknownChosen":`As escolhas em destaque são desconhecidas. Recarregue antes de editar.`,"models.pickerOrder.changed":`As configurações do seletor mudaram. Seu rascunho foi mantido; recarregue para descartá-lo e usar as configurações atuais.`,"models.pickerOrder.savedReload":`Ordem salva. Recarregue as configurações atuais antes de editar novamente.`,"models.pickerOrder.requestFailed":`A requisição falhou. Seu rascunho foi mantido; tente novamente ou recarregue.`,"models.pickerOrder.empty":`Nenhum modelo roteado disponível.`,"models.pickerOrder.dragModel":`Arrastar {model}`,"models.pickerOrder.featured":`Em destaque`,"models.pickerOrder.upModel":`Mover {model} para cima`,"models.pickerOrder.downModel":`Mover {model} para baixo`,"models.pickerOrder.position":`{model}: posição {position} de {total}`,"models.pickerOrder.saveDraft":`Salvar rascunho`,"models.pickerOrder.reloadDraft":`Recarregar e descartar rascunho`,"models.pickerOrder.catalogRequired":`As identidades dos modelos estão ausentes ou ambíguas. Recarregue a página Modelos para atualizar o catálogo antes de editar o Personalizado.`,"nav.remote":`Remote Link`,"nav.remoteWorkspace":`Workspace remoto`,"link.title":`Remote Link`,"link.subtitle":`Conecte outro computador com OpenCodex por SSH.`,"link.switch":`Vinculação remota`,"link.switchOffHint":`Ative a vinculação para escolher a função deste computador.`,"link.role.title":`Escolha a função deste computador`,"link.role.hint":`O Home compartilha os provedores deste computador com computadores Child. O Child conecta este computador a um Home quando ele roda no modo standalone.`,"link.role.home":`Home`,"link.role.homeHint":`Gerencie computadores Child a partir deste dashboard.`,"link.role.child":`Child`,"link.role.childHint":`Use a configuração do OpenCodex de outro computador.`,"link.continue":`Continuar`,"link.sessionRequired":`Entre na sessão local do dashboard para gerenciar vínculos.`,"link.workspaceUnavailable":`O Remote Workspace não está disponível nesta instalação.`,"link.loading":`Carregando…`,"link.loadFailed":`Não foi possível carregar o status do Remote Link.`,"link.refresh":`Atualizar`,"link.children":`Computadores Child`,"link.addChild":`Adicionar Child`,"link.sheetTitle":`Adicionar um computador Child`,"link.candidates":`Hosts SSH`,"link.setup.relationship":`O Child usará os provedores OpenCodex deste Home por SSH.`,"link.setup.requirements":`Requer SSH por chave do Home ao Child, OpenCodex 2.66.0+ no Child e macOS ou Linux em ambos os computadores.`,"link.setup.emptyHome":`Os aliases vêm de ~/.ssh/config deste Home. Adicione uma entrada Host e busque novamente, ou informe um alias existente abaixo.`,"link.setup.emptyLocal":`Os aliases vêm de ~/.ssh/config deste computador. Adicione uma entrada Host e busque novamente, ou informe um alias existente abaixo.`,"link.setup.guide":`Guia de configuração do Remote Link`,"link.discoveryFailed":`Não foi possível carregar os hosts SSH`,"link.rescan":`Buscar hosts novamente`,"link.aliasRequired":`Selecione ou informe um alias para habilitar Testar conexão.`,"link.probeHelp":`Confira o motivo acima. Para problemas de acesso SSH, execute isto no terminal deste computador, substituindo <alias> pelo alias SSH, e tente novamente.`,"link.noCandidates":`Nenhum host SSH candidato foi encontrado.`,"link.alias":`Alias do host SSH`,"link.aliasPlaceholder":`Informe um alias da sua configuração SSH`,"link.probe":`Testar conexão`,"link.probing":`Testando conexão…`,"link.hostFingerprint":`Impressão digital da chave do host`,"link.confirmFingerprint":`Reconheço esta chave do host`,"link.confirming":`Confirmando…`,"link.confirm":`Confirmar host`,"link.ocxVersion":`Versão do OpenCodex {version}`,"link.apply":`Conectar Child`,"link.applying":`Conectando…`,"link.retry":`Tentar novamente`,"link.disconnect":`Desconectar`,"link.disconnectConfirm":`Desconectar {alias}? A chave de vínculo dele será revogada.`,"link.close":`Fechar`,"link.cancel":`Cancelar`,"remoteLink.childDisabled":`Vínculos Child só podem ser iniciados a partir de um runtime standalone.`,"remoteLink.findHome.title":`Encontrar Home`,"remoteLink.findHome.body":`Escolha o computador Home ao qual conectar este Child.`,"remoteLink.findHome.action":`Encontrar Home`,"remoteLink.findHome.connect":`Conectar como Child`,"remoteLink.findHome.notice":`Conectar reinicia o OpenCodex neste computador. Os turnos do Codex em andamento terminam primeiro, e novas requisições podem falhar por até um minuto. Depois disso, o Codex mantém o mesmo endereço local, e o Home o atende com os próprios provedores e contas.`,"remoteLink.findHome.empty":`Ainda não conectado a um Home.`,"remoteLink.joining":`Entrando no Home…`,"remoteLink.restart.title":`Este computador será reiniciado para se conectar como Child.`,"remoteLink.restart.body":`Os turnos do Codex em execução terminam primeiro; depois o OpenCodex é reiniciado como Child. Esta página recarrega sozinha quando o Child estiver pronto.`,"remoteLink.restart.waiting":`Aguardando este computador se reconectar como Child…`,"remoteLink.restart.slow":`A reinicialização está demorando mais que o normal. Esta página continua verificando e recarrega sozinha assim que o Child responder. Se o OpenCodex parou, inicie-o novamente.`,"remoteLink.error.standalone_required":`Vínculos Child só podem ser iniciados a partir de um runtime standalone.`,"remoteLink.error.join_tunnel_failed":`Não foi possível iniciar o túnel para o Home. Verifique o acesso SSH e tente novamente.`,"remoteLink.error.admission_failed":`O Home não aceitou o novo vínculo. Verifique se ele está em execução e tente novamente.`,"remoteLink.error.join_issue_failed":`O Home não conseguiu emitir um vínculo. Verifique se o OpenCodex está em execução no Home e tente novamente.`,"remoteLink.error.join_in_progress":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.join_port_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.join_port_mismatch":`O OpenCodex não está rodando na porta configurada, por isso não pode reiniciar como Child. Reinicie o OpenCodex na porta configurada e tente novamente.`,"remoteLink.joinDenied.pairing_required":`Emparelhe este computador primeiro para conectá-lo como Child. Abra o painel deste computador pelo endereço de loopback e insira um código de emparelhamento de uso único criado pelo operador.`,"remoteLink.joinDenied.unavailable":`Não é possível conectar como Child nesta sessão do painel. Atualize o status e verifique as configurações de emparelhamento e de runtime deste computador.`,"remoteLink.error.join_rollback_failed":`A entrada falhou e o vínculo no Home não pôde ser removido. Tente a limpeza novamente ou execute ocx link revoke no Home.`,"remoteLink.error.join_restart_failed":`O vínculo está pronto. Reinicie o OpenCodex neste computador para concluir a conexão como Child.`,"remoteLink.error.join_connect_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"link.noChildren":`Nenhum computador Child conectado.`,"remoteLink.status.connecting":`Conectando`,"remoteLink.status.connected":`Conectado`,"remoteLink.status.reconnecting":`Reconectando`,"remoteLink.status.failed":`A conexão precisa de atenção`,"remoteLink.status.idle":`Ocioso`,"remoteLink.role.standalone":`Independente`,"remoteLink.role.home":`Home`,"remoteLink.role.child":`Child`,"remoteLink.direction.hub":`Iniciado pelo hub`,"remoteLink.direction.client":`Iniciado pelo cliente`,"remoteLink.error.admission_timeout":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.compensation_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.fingerprint_failed":`Não foi possível ler a chave do host SSH. Teste a conexão novamente.`,"remoteLink.error.forbidden":`Esta sessão do dashboard não pode gerenciar vínculos remotos. Abra o dashboard neste computador (instalação standalone) ou use uma sessão de Hub pareada.`,"remoteLink.error.host_confirmation_expired":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.host_fingerprint_mismatch":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.host_not_confirmed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.invalid_alias":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.invalid_body":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.invalid_link_id":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.key_issue_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.key_revoke_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_apply_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_exists":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_not_found":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_remove_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.link_unavailable":`O Remote Link não está disponível neste runtime. Reinicie o OpenCodex e tente novamente.`,"remoteLink.error.listener_unavailable":`O listener do Remote Link não pôde ser iniciado neste computador. Verifique se há conflito de porta e tente novamente.`,"remoteLink.error.probe_failed":`Não foi possível conectar ao host SSH. Verifique se ele aceita sua chave SSH e se o auxiliar de ProxyCommand está instalado.`,"remoteLink.error.remote_connect_failed":`O computador remoto não conseguiu se conectar a este Home. Verifique o serviço OpenCodex dele e tente novamente.`,"remoteLink.error.remote_disconnect_failed":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.remote_ocx_missing":`O ocx não foi encontrado no computador remoto. Instale o OpenCodex lá ou garanta que o ocx esteja no PATH das sessões SSH não interativas.`,"remoteLink.error.remote_ocx_outdated":`O OpenCodex no computador remoto é antigo demais para o Remote Link. Execute ocx update lá (2.66.0 ou posterior) e tente novamente.`,"remoteLink.error.remote_ocx_unrecognized":`O computador remoto não informou uma versão do OpenCodex. O Remote Link exige o OpenCodex 2.66.0 ou posterior no macOS ou Linux.`,"remoteLink.error.remote_port_failed":`O computador remoto não conseguiu informar a porta de vínculo. Verifique se o OpenCodex 2.66.0 ou posterior está em execução lá e tente novamente.`,"remoteLink.error.tailscale_session_refused":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.error.version_probe_failed":`Não foi possível executar o ocx no computador remoto por SSH. Verifique o acesso SSH e tente novamente.`,"remoteLink.error.generic":`Não foi possível concluir a solicitação de vínculo remoto.`,"remoteLink.reason.auth":`Falha na autenticação.`,"remoteLink.reason.hostkey":`Não foi possível verificar a chave do host.`,"remoteLink.reason.forward":`Falha no encaminhamento de porta.`,"remoteLink.reason.timeout":`A conexão expirou.`,"remoteLink.reason.bind":`Não foi possível associar a porta local.`,"remoteLink.reason.persist":`Não foi possível salvar o estado do vínculo.`,"remoteLink.reason.compensation_failed":`A limpeza após a vinculação falhou.`,"remoteLink.reason.staleTunnel":`Um túnel obsoleto ainda pode estar mantendo a porta.`,"remoteLink.reason.generic":`Motivo:`,"remoteLink.workspaceMoved.title":`O Remote Workspace agora tem página própria`,"remoteLink.workspaceMoved.body":`Use a página separada do Remote Workspace.`,"remoteLink.workspaceMoved.open":`Abrir Remote Workspace`,"remoteLink.forceRemove.title":`Esta máquina não conseguiu alcançar {alias}`,"remoteLink.forceRemove.body":`Remover o vínculo somente nesta máquina? Depois, execute {cmd} você mesmo em {alias}.`,"remoteLink.forceRemove.confirm":`Remover somente aqui`,"remote.title":`Workspace remoto`,"remote.subtitle":`Execute Codex, Claude Code ou Pi a partir deste Hub enquanto arquivos, comandos, testes e builds permanecem no computador selecionado.`,"remote.loading":`Carregando Remote Workspace…`,"remote.loadFailed":`Não foi possível carregar o Remote Workspace.`,"remote.hubRequired":`Use o modo Hub e inicie o Hub com OCX_REMOTE_WORKSPACE_ENABLED=1 para ativar o Remote Workspace.`,"remote.refresh":`Atualizar`,"remote.addComputer":`Adicionar um computador`,"remote.addComputerHint":`Aprove uma ou mais pastas localmente e mantenha o executor exclusivo do OCX conectado a este Hub.`,"remote.createPairing":`Criar código de pareamento`,"remote.pairingCode":`Código de pareamento de uso único`,"remote.pairingExpires":`Expira às {time}`,"remote.pairingCommand":`Execute no computador que você está adicionando`,"remote.pairingCommandPosix":`Terminal Linux / macOS`,"remote.pairingCommandWindows":`Windows PowerShell`,"remote.copyCommand":`Copiar comando`,"remote.copied":`Copiado`,"remote.devices":`Computadores`,"remote.noDevices":`Nenhum computador pareado ainda.`,"remote.online":`Online`,"remote.offline":`Offline`,"remote.revoke":`Revogar computador`,"remote.revokeConfirm":`Revogar {name}? As sessões ativas neste computador serão interrompidas.`,"remote.newSession":`Nova sessão remota`,"remote.device":`Computador`,"remote.folder":`Pasta do workspace`,"remote.runtime":`Agente de código`,"remote.access":`Acesso ao workspace`,"remote.access.readOnly":`Somente leitura`,"remote.access.workspace":`Editar arquivos e executar comandos`,"remote.access.workspaceFilesOnly":`Somente editar arquivos`,"remote.unavailable":`Indisponível`,"remote.capability.full":`Arquivos + comandos em sandbox`,"remote.capability.files":`Somente ferramentas de arquivo`,"remote.runsOnHub":`O modelo e o login permanecem neste Hub`,"remote.runsReadOnly":`Os arquivos só podem ser lidos neste computador`,"remote.runsFilesCommands":`Arquivos, builds e comandos são executados aqui`,"remote.runsFilesOnly":`As ferramentas de arquivo rodam aqui; sandbox de comandos indisponível`,"remote.execUnavailable":`Este computador pode editar arquivos, mas builds e comandos de terminal estão desativados porque não há um sandbox de SO compatível.`,"remote.notResumable":`Esta sessão parou antes de o agente de código criar um histórico durável. Inicie uma nova sessão remota.`,"remote.startSession":`Iniciar sessão remota`,"remote.sessionStarted":`A sessão remota está pronta.`,"remote.split.hint":`Arraste uma sessão para a borda de um painel para dividir a visualização.`,"remote.split.right":`Dividir à direita`,"remote.split.down":`Dividir abaixo`,"remote.split.close":`Fechar painel`,"remote.split.resize":`Redimensionar painéis`,"remote.split.limit":`Até quatro sessões podem ser exibidas ao mesmo tempo.`,"remote.split.left":`Dividir à esquerda`,"remote.split.up":`Dividir acima`,"remote.split.open":`Abrir sessão`,"remote.split.title":`Visualização dividida`,"remote.sessions":`Sessões`,"remote.noSessions":`Escolha um computador online, uma pasta e um agente de código para começar.`,"remote.events":`Atividade da sessão remota`,"remote.noEvents":`Nenhuma atividade ainda.`,"remote.prompt":`Mensagem`,"remote.promptPlaceholder":`Peça ao agente do Hub para trabalhar dentro da pasta remota selecionada…`,"remote.send":`Enviar`,"remote.stop":`Parar sessão`,"remote.requestFailed":`A requisição do Remote Workspace falhou.`,"remote.submissionUnknown":`O status do envio é desconhecido. Verifique a sessão antes de enviar novamente.`,"remote.status.starting":`Iniciando`,"remote.status.ready":`Pronto`,"remote.status.running":`Em execução`,"remote.status.waiting":`Executor offline`,"remote.status.failed":`Falhou`,"remote.status.stopped":`Parado`,"remote.event.status":`Status`,"remote.event.tool":`Ferramenta remota`,"remote.event.error":`Erro`,"quotaSummary.aria":`Resumo de cota dos provedores`,"quotaSummary.updated":`Atualizado {time}`,"quotaSummary.dataAt":`Dados de {time}`,"quotaSummary.observedAt":`Observado em {time}`,"quotaSummary.warn":`70%+ usado`,"quotaSummary.critical":`90%+ usado`,"quotaSummary.credits":`Créditos`,"quotaSummary.refreshFailed":`A última atualização falhou; exibindo a leitura anterior`,"quotaSummary.scrollPrev":`Rolar provedores para a esquerda`,"quotaSummary.scrollNext":`Rolar provedores para a direita`,"quotaSummary.openAccounts":`Abrir gerenciamento de contas`,"pws.protocol.title":`Wire upstream`,"pws.protocol.note":`O formato de API que o opencodex usa para falar com este provedor. Ele não ativa nem desativa nenhuma API de cliente; a página de API controla isso.`,"pws.protocol.adapterLabel":`Wire upstream que este provedor recebe`,"pws.protocol.source":`Definido por`,"pws.protocol.source.hardPin":`Fixado pelo opencodex para este modelo`,"pws.protocol.source.operator":`Sua configuração`,"pws.protocol.source.registry":`Catálogo de provedores`,"pws.protocol.source.providerDefault":`Padrão do provedor`,"pws.protocol.pending":`Depois de salvar, este provedor receberá {adapter}.`,"pws.protocol.overrides":`Modelos em outro wire`,"pws.protocol.noOverrides":`Todos os modelos usam o wire do provedor.`,"pws.protocol.overridesTruncated":`Exibindo os primeiros {count} modelos.`,"pws.protocol.col.model":`Modelo`,"pws.protocol.col.wire":`Wire`,"pws.protocol.col.source":`Definido por`,"pws.protocol.loadFailed":`Não foi possível carregar o wire upstream.`,"compatProtocol.filter.inbound":`API do cliente`,"compatProtocol.filter.upstream":`Wire upstream`,"compatProtocol.anyProtocol":`qualquer`,"compatProtocol.pair":`{inbound} → {upstream}`,"compatProtocol.loading":`Lendo o par de protocolos de cada subject…`,"compatProtocol.unverified":`Ainda não há evidência do Lab para {pair}. O par não foi verificado, não que tenha falhado.`,"compatProtocol.unresolved":`Não foi possível ler o par de protocolos de {count} subjects; eles ficam fora deste filtro.`,"compatProtocol.axisNote":`Estes são apenas veredictos do Lab. A forma como uma requisição é entregue (nativa ou traduzida) é mostrada na prévia do caminho da requisição, na página de API.`,"protocolLinks.labEvidence":`Evidência do Lab para este par`,"protocolLinks.providerSettings":`Configurações do provedor`,"cws.plan.title":`Caminhos candidatos`,"cws.plan.description":`Pergunta ao proxy como cada destino carregaria uma requisição com todos os recursos que a API do cliente consegue expressar, e quais recursos todos os destinos preservam. Nada é enviado ao upstream.`,"cws.plan.run":`Mostrar caminhos candidatos`,"cws.plan.savedOnly":`Mostra o combo salvo. Salve suas alterações para visualizá-las.`},le={en:{"lab.title":`Compatibility Lab`,"lab.subtitle":`Read-only compatibility verdict matrix from lab projection evidence.`,"lab.loadFailed":`Could not load compatibility lab data`,"lab.projectionUnavailable":`Lab projection is not available. Run conformance or live probes first.`,"lab.projectionIncompatible":`Lab projection schema is incompatible. Rebuild the projection.`,"lab.statusTitle":`Projection status`,"lab.matrixTitle":`Compatibility matrix`,"lab.verdictsTitle":`Verdict records`,"lab.filter.layer":`Evidence layer`,"lab.filter.verdict":`Verdict`,"lab.filter.subject":`Subject ID`,"lab.filter.all":`All`,"lab.col.subject":`Subject`,"lab.col.layer":`Layer`,"lab.col.suite":`Suite`,"lab.col.verdict":`Verdict`,"lab.col.asOf":`As of`,"lab.col.protocol":`Protocol conformance`,"lab.col.live":`Live route compatibility`,"lab.col.task":`Task effectiveness`,"lab.empty":`No compatibility verdicts in the projection yet.`,"lab.subjectKind":`Kind`,"lab.observationCount":`Observations`,"lab.eventCount":`Events`,"lab.verdictCount":`Verdicts`,"lab.subjectCount":`Subjects`,"lab.builtAt":`Built`,"lab.loading":`Loading compatibility evidence…`,"lab.loadMore":`Load more`,"lab.detailTitle":`Verdict detail`,"lab.detailClose":`Close`,"lab.detailSubject":`Subject`,"lab.detailObservations":`Observations`,"lab.detailEvents":`Evidence events`,"lab.detailArtifacts":`Artifact metadata`,"lab.detailLoadFailed":`Could not load verdict detail`,"lab.refresh":`Refresh`,"lab.verdict.UNKNOWN":`Unknown`,"lab.verdict.CLAIMED":`Claimed`,"lab.verdict.PROBED":`Probed`,"lab.verdict.VERIFIED":`Verified`,"lab.verdict.DEGRADED":`Degraded`,"lab.verdict.BLOCKED":`Blocked`,"lab.verdict.UNSUPPORTED":`Unsupported`,"lab.layer.protocol_conformance":`Protocol conformance`,"lab.layer.live_route_compatibility":`Live route compatibility`,"lab.layer.task_effectiveness":`Task effectiveness`},de:{"lab.title":`Kompatibilitäts-Labor`,"lab.subtitle":`Schreibgeschützte Kompatibilitätsmatrix aus den Evidenzen der Lab-Projektion.`,"lab.loadFailed":`Kompatibilitätsdaten konnten nicht geladen werden`,"lab.projectionUnavailable":`Die Lab-Projektion ist nicht verfügbar. Führe zuerst Konformitäts- oder Live-Probes aus.`,"lab.projectionIncompatible":`Das Schema der Lab-Projektion ist inkompatibel. Baue die Projektion neu auf.`,"lab.statusTitle":`Projektionsstatus`,"lab.matrixTitle":`Kompatibilitätsmatrix`,"lab.verdictsTitle":`Urteilsdatensätze`,"lab.filter.layer":`Evidenzschicht`,"lab.filter.verdict":`Urteil`,"lab.filter.subject":`Subjekt-ID`,"lab.filter.all":`Alle`,"lab.col.subject":`Subjekt`,"lab.col.layer":`Schicht`,"lab.col.suite":`Suite`,"lab.col.verdict":`Urteil`,"lab.col.asOf":`Stand`,"lab.col.protocol":`Protokollkonformität`,"lab.col.live":`Live-Route-Kompatibilität`,"lab.col.task":`Aufgabenwirksamkeit`,"lab.empty":`In der Projektion gibt es noch keine Kompatibilitätsurteile.`,"lab.subjectKind":`Art`,"lab.observationCount":`Beobachtungen`,"lab.eventCount":`Ereignisse`,"lab.verdictCount":`Urteile`,"lab.subjectCount":`Subjekte`,"lab.builtAt":`Erstellt`,"lab.loading":`Kompatibilitätsevidenz wird geladen…`,"lab.loadMore":`Mehr laden`,"lab.detailTitle":`Urteilsdetails`,"lab.detailClose":`Schließen`,"lab.detailSubject":`Subjekt`,"lab.detailObservations":`Beobachtungen`,"lab.detailEvents":`Evidenzereignisse`,"lab.detailArtifacts":`Artefakt-Metadaten`,"lab.detailLoadFailed":`Urteilsdetails konnten nicht geladen werden`,"lab.refresh":`Aktualisieren`,"lab.verdict.UNKNOWN":`Unbekannt`,"lab.verdict.CLAIMED":`Behauptet`,"lab.verdict.PROBED":`Geprüft`,"lab.verdict.VERIFIED":`Verifiziert`,"lab.verdict.DEGRADED":`Eingeschränkt`,"lab.verdict.BLOCKED":`Blockiert`,"lab.verdict.UNSUPPORTED":`Nicht unterstützt`,"lab.layer.protocol_conformance":`Protokollkonformität`,"lab.layer.live_route_compatibility":`Live-Route-Kompatibilität`,"lab.layer.task_effectiveness":`Aufgabenwirksamkeit`},fr:{"lab.title":`Laboratoire de compatibilité`,"lab.subtitle":`Matrice en lecture seule des verdicts de compatibilité fondée sur les preuves de la projection du laboratoire.`,"lab.loadFailed":`Impossible de charger les données du laboratoire de compatibilité`,"lab.projectionUnavailable":`La projection du laboratoire n’est pas disponible. Exécutez d’abord les sondes de conformité ou en conditions réelles.`,"lab.projectionIncompatible":`Le schéma de la projection du laboratoire est incompatible. Reconstruisez la projection.`,"lab.statusTitle":`État de la projection`,"lab.matrixTitle":`Matrice de compatibilité`,"lab.verdictsTitle":`Enregistrements des verdicts`,"lab.filter.layer":`Couche de preuves`,"lab.filter.verdict":`Verdict`,"lab.filter.subject":`ID du sujet`,"lab.filter.all":`Tous`,"lab.col.subject":`Sujet`,"lab.col.layer":`Couche`,"lab.col.suite":`Suite`,"lab.col.verdict":`Verdict`,"lab.col.asOf":`Établi le`,"lab.col.protocol":`Conformité au protocole`,"lab.col.live":`Compatibilité du routage en conditions réelles`,"lab.col.task":`Efficacité des tâches`,"lab.empty":`La projection ne contient encore aucun verdict de compatibilité.`,"lab.subjectKind":`Type`,"lab.observationCount":`Observations`,"lab.eventCount":`Événements`,"lab.verdictCount":`Verdicts`,"lab.subjectCount":`Sujets`,"lab.builtAt":`Générée le`,"lab.loading":`Chargement des preuves de compatibilité…`,"lab.loadMore":`Charger plus`,"lab.detailTitle":`Détails du verdict`,"lab.detailClose":`Fermer`,"lab.detailSubject":`Sujet`,"lab.detailObservations":`Observations`,"lab.detailEvents":`Événements probants`,"lab.detailArtifacts":`Métadonnées des artefacts`,"lab.detailLoadFailed":`Impossible de charger les détails du verdict`,"lab.refresh":`Actualiser`,"lab.verdict.UNKNOWN":`Inconnu`,"lab.verdict.CLAIMED":`Déclaré`,"lab.verdict.PROBED":`Sondé`,"lab.verdict.VERIFIED":`Vérifié`,"lab.verdict.DEGRADED":`Dégradé`,"lab.verdict.BLOCKED":`Bloqué`,"lab.verdict.UNSUPPORTED":`Non pris en charge`,"lab.layer.protocol_conformance":`Conformité au protocole`,"lab.layer.live_route_compatibility":`Compatibilité du routage en conditions réelles`,"lab.layer.task_effectiveness":`Efficacité des tâches`},ko:{"lab.title":`호환성 랩`,"lab.subtitle":`랩 프로젝션 증거를 기반으로 한 읽기 전용 호환성 판정 매트릭스입니다.`,"lab.loadFailed":`호환성 랩 데이터를 불러오지 못했습니다`,"lab.projectionUnavailable":`랩 프로젝션을 사용할 수 없습니다. 먼저 적합성 또는 라이브 프로브를 실행하세요.`,"lab.projectionIncompatible":`랩 프로젝션 스키마가 호환되지 않습니다. 프로젝션을 다시 빌드하세요.`,"lab.statusTitle":`프로젝션 상태`,"lab.matrixTitle":`호환성 매트릭스`,"lab.verdictsTitle":`판정 레코드`,"lab.filter.layer":`증거 레이어`,"lab.filter.verdict":`판정`,"lab.filter.subject":`대상 ID`,"lab.filter.all":`전체`,"lab.col.subject":`대상`,"lab.col.layer":`레이어`,"lab.col.suite":`스위트`,"lab.col.verdict":`판정`,"lab.col.asOf":`기준 시각`,"lab.col.protocol":`프로토콜 적합성`,"lab.col.live":`라이브 경로 호환성`,"lab.col.task":`작업 효과성`,"lab.empty":`프로젝션에 아직 호환성 판정이 없습니다.`,"lab.subjectKind":`종류`,"lab.observationCount":`관측`,"lab.eventCount":`이벤트`,"lab.verdictCount":`판정`,"lab.subjectCount":`대상`,"lab.builtAt":`빌드 시각`,"lab.loading":`호환성 증거를 불러오는 중…`,"lab.loadMore":`더 불러오기`,"lab.detailTitle":`판정 상세`,"lab.detailClose":`닫기`,"lab.detailSubject":`대상`,"lab.detailObservations":`관측`,"lab.detailEvents":`증거 이벤트`,"lab.detailArtifacts":`아티팩트 메타데이터`,"lab.detailLoadFailed":`판정 상세를 불러오지 못했습니다`,"lab.refresh":`새로고침`,"lab.verdict.UNKNOWN":`알 수 없음`,"lab.verdict.CLAIMED":`주장됨`,"lab.verdict.PROBED":`프로브됨`,"lab.verdict.VERIFIED":`검증됨`,"lab.verdict.DEGRADED":`저하됨`,"lab.verdict.BLOCKED":`차단됨`,"lab.verdict.UNSUPPORTED":`지원되지 않음`,"lab.layer.protocol_conformance":`프로토콜 적합성`,"lab.layer.live_route_compatibility":`라이브 경로 호환성`,"lab.layer.task_effectiveness":`작업 효과성`},zh:{"lab.title":`兼容性实验室`,"lab.subtitle":`基于实验室投影证据的只读兼容性判定矩阵。`,"lab.loadFailed":`无法加载兼容性实验室数据`,"lab.projectionUnavailable":`实验室投影不可用。请先运行一致性探测或实时探测。`,"lab.projectionIncompatible":`实验室投影架构不兼容。请重新构建投影。`,"lab.statusTitle":`投影状态`,"lab.matrixTitle":`兼容性矩阵`,"lab.verdictsTitle":`判定记录`,"lab.filter.layer":`证据层`,"lab.filter.verdict":`判定`,"lab.filter.subject":`主体 ID`,"lab.filter.all":`全部`,"lab.col.subject":`主体`,"lab.col.layer":`层`,"lab.col.suite":`测试套件`,"lab.col.verdict":`判定`,"lab.col.asOf":`截至`,"lab.col.protocol":`协议一致性`,"lab.col.live":`实时路由兼容性`,"lab.col.task":`任务有效性`,"lab.empty":`投影中还没有兼容性判定。`,"lab.subjectKind":`类型`,"lab.observationCount":`观测`,"lab.eventCount":`事件`,"lab.verdictCount":`判定`,"lab.subjectCount":`主体`,"lab.builtAt":`构建时间`,"lab.loading":`正在加载兼容性证据…`,"lab.loadMore":`加载更多`,"lab.detailTitle":`判定详情`,"lab.detailClose":`关闭`,"lab.detailSubject":`主体`,"lab.detailObservations":`观测`,"lab.detailEvents":`证据事件`,"lab.detailArtifacts":`制品元数据`,"lab.detailLoadFailed":`无法加载判定详情`,"lab.refresh":`刷新`,"lab.verdict.UNKNOWN":`未知`,"lab.verdict.CLAIMED":`已声明`,"lab.verdict.PROBED":`已探测`,"lab.verdict.VERIFIED":`已验证`,"lab.verdict.DEGRADED":`降级`,"lab.verdict.BLOCKED":`已阻止`,"lab.verdict.UNSUPPORTED":`不支持`,"lab.layer.protocol_conformance":`协议一致性`,"lab.layer.live_route_compatibility":`实时路由兼容性`,"lab.layer.task_effectiveness":`任务有效性`},"zh-TW":{"lab.title":`相容性實驗室`,"lab.subtitle":`基於實驗室投影證據的唯讀相容性判定矩陣。`,"lab.loadFailed":`無法載入相容性實驗室資料`,"lab.projectionUnavailable":`實驗室投影不可用。請先執行一致性探測或即時探測。`,"lab.projectionIncompatible":`實驗室投影架構不相容。請重新建置投影。`,"lab.statusTitle":`投影狀態`,"lab.matrixTitle":`相容性矩陣`,"lab.verdictsTitle":`判定記錄`,"lab.filter.layer":`證據層`,"lab.filter.verdict":`判定`,"lab.filter.subject":`主體 ID`,"lab.filter.all":`全部`,"lab.col.subject":`主體`,"lab.col.layer":`層`,"lab.col.suite":`測試套件`,"lab.col.verdict":`判定`,"lab.col.asOf":`截至`,"lab.col.protocol":`協定一致性`,"lab.col.live":`即時路由相容性`,"lab.col.task":`任務有效性`,"lab.empty":`投影中還沒有相容性判定。`,"lab.subjectKind":`類型`,"lab.observationCount":`觀測`,"lab.eventCount":`事件`,"lab.verdictCount":`判定`,"lab.subjectCount":`主體`,"lab.builtAt":`建置時間`,"lab.loading":`正在載入相容性證據…`,"lab.loadMore":`載入更多`,"lab.detailTitle":`判定詳情`,"lab.detailClose":`關閉`,"lab.detailSubject":`主體`,"lab.detailObservations":`觀測`,"lab.detailEvents":`證據事件`,"lab.detailArtifacts":`產物中繼資料`,"lab.detailLoadFailed":`無法載入判定詳情`,"lab.refresh":`重新整理`,"lab.verdict.UNKNOWN":`未知`,"lab.verdict.CLAIMED":`已聲明`,"lab.verdict.PROBED":`已探測`,"lab.verdict.VERIFIED":`已驗證`,"lab.verdict.DEGRADED":`降級`,"lab.verdict.BLOCKED":`已封鎖`,"lab.verdict.UNSUPPORTED":`不支援`,"lab.layer.protocol_conformance":`協定一致性`,"lab.layer.live_route_compatibility":`即時路由相容性`,"lab.layer.task_effectiveness":`任務有效性`},ru:{"lab.title":`Лаборатория совместимости`,"lab.subtitle":`Матрица вердиктов совместимости только для чтения на основе данных проекции лаборатории.`,"lab.loadFailed":`Не удалось загрузить данные лаборатории совместимости`,"lab.projectionUnavailable":`Проекция лаборатории недоступна. Сначала выполните проверки соответствия или live-проверки.`,"lab.projectionIncompatible":`Схема проекции лаборатории несовместима. Перестройте проекцию.`,"lab.statusTitle":`Состояние проекции`,"lab.matrixTitle":`Матрица совместимости`,"lab.verdictsTitle":`Записи вердиктов`,"lab.filter.layer":`Слой доказательств`,"lab.filter.verdict":`Вердикт`,"lab.filter.subject":`ID субъекта`,"lab.filter.all":`Все`,"lab.col.subject":`Субъект`,"lab.col.layer":`Слой`,"lab.col.suite":`Набор`,"lab.col.verdict":`Вердикт`,"lab.col.asOf":`По состоянию на`,"lab.col.protocol":`Соответствие протоколу`,"lab.col.live":`Совместимость live-маршрута`,"lab.col.task":`Эффективность задач`,"lab.empty":`В проекции пока нет вердиктов совместимости.`,"lab.subjectKind":`Тип`,"lab.observationCount":`Наблюдения`,"lab.eventCount":`События`,"lab.verdictCount":`Вердикты`,"lab.subjectCount":`Субъекты`,"lab.builtAt":`Собрано`,"lab.loading":`Загрузка доказательств совместимости…`,"lab.loadMore":`Загрузить ещё`,"lab.detailTitle":`Детали вердикта`,"lab.detailClose":`Закрыть`,"lab.detailSubject":`Субъект`,"lab.detailObservations":`Наблюдения`,"lab.detailEvents":`События доказательств`,"lab.detailArtifacts":`Метаданные артефактов`,"lab.detailLoadFailed":`Не удалось загрузить детали вердикта`,"lab.refresh":`Обновить`,"lab.verdict.UNKNOWN":`Неизвестно`,"lab.verdict.CLAIMED":`Заявлено`,"lab.verdict.PROBED":`Проверено пробой`,"lab.verdict.VERIFIED":`Подтверждено`,"lab.verdict.DEGRADED":`Ограничено`,"lab.verdict.BLOCKED":`Заблокировано`,"lab.verdict.UNSUPPORTED":`Не поддерживается`,"lab.layer.protocol_conformance":`Соответствие протоколу`,"lab.layer.live_route_compatibility":`Совместимость live-маршрута`,"lab.layer.task_effectiveness":`Эффективность задач`},ja:{"lab.title":`互換性ラボ`,"lab.subtitle":`ラボ投影の証拠に基づく読み取り専用の互換性判定マトリクスです。`,"lab.loadFailed":`互換性ラボのデータを読み込めませんでした`,"lab.projectionUnavailable":`ラボ投影を利用できません。先に適合性プローブまたはライブプローブを実行してください。`,"lab.projectionIncompatible":`ラボ投影のスキーマに互換性がありません。投影を再構築してください。`,"lab.statusTitle":`投影ステータス`,"lab.matrixTitle":`互換性マトリクス`,"lab.verdictsTitle":`判定レコード`,"lab.filter.layer":`証拠レイヤー`,"lab.filter.verdict":`判定`,"lab.filter.subject":`サブジェクト ID`,"lab.filter.all":`すべて`,"lab.col.subject":`サブジェクト`,"lab.col.layer":`レイヤー`,"lab.col.suite":`スイート`,"lab.col.verdict":`判定`,"lab.col.asOf":`時点`,"lab.col.protocol":`プロトコル適合性`,"lab.col.live":`ライブ経路互換性`,"lab.col.task":`タスク有効性`,"lab.empty":`投影にはまだ互換性判定がありません。`,"lab.subjectKind":`種類`,"lab.observationCount":`観測`,"lab.eventCount":`イベント`,"lab.verdictCount":`判定`,"lab.subjectCount":`サブジェクト`,"lab.builtAt":`構築日時`,"lab.loading":`互換性の証拠を読み込み中…`,"lab.loadMore":`さらに読み込む`,"lab.detailTitle":`判定の詳細`,"lab.detailClose":`閉じる`,"lab.detailSubject":`サブジェクト`,"lab.detailObservations":`観測`,"lab.detailEvents":`証拠イベント`,"lab.detailArtifacts":`アーティファクトのメタデータ`,"lab.detailLoadFailed":`判定の詳細を読み込めませんでした`,"lab.refresh":`更新`,"lab.verdict.UNKNOWN":`不明`,"lab.verdict.CLAIMED":`申告済み`,"lab.verdict.PROBED":`プローブ済み`,"lab.verdict.VERIFIED":`検証済み`,"lab.verdict.DEGRADED":`低下`,"lab.verdict.BLOCKED":`ブロック`,"lab.verdict.UNSUPPORTED":`未対応`,"lab.layer.protocol_conformance":`プロトコル適合性`,"lab.layer.live_route_compatibility":`ライブ経路互換性`,"lab.layer.task_effectiveness":`タスク有効性`},tr:{"lab.title":`Uyumluluk Laboratuvarı`,"lab.subtitle":`Laboratuvar projeksiyonu kanıtlarından oluşturulan salt okunur uyumluluk karar matrisi.`,"lab.loadFailed":`Uyumluluk laboratuvarı verileri yüklenemedi`,"lab.projectionUnavailable":`Laboratuvar projeksiyonu kullanılamıyor. Önce uygunluk veya canlı probları çalıştırın.`,"lab.projectionIncompatible":`Laboratuvar projeksiyonu şeması uyumsuz. Projeksiyonu yeniden oluşturun.`,"lab.statusTitle":`Projeksiyon durumu`,"lab.matrixTitle":`Uyumluluk matrisi`,"lab.verdictsTitle":`Karar kayıtları`,"lab.filter.layer":`Kanıt katmanı`,"lab.filter.verdict":`Karar`,"lab.filter.subject":`Özne kimliği`,"lab.filter.all":`Tümü`,"lab.col.subject":`Özne`,"lab.col.layer":`Katman`,"lab.col.suite":`Paket`,"lab.col.verdict":`Karar`,"lab.col.asOf":`Tarih`,"lab.col.protocol":`Protokol uygunluğu`,"lab.col.live":`Canlı rota uyumluluğu`,"lab.col.task":`Görev etkinliği`,"lab.empty":`Projeksiyonda henüz uyumluluk kararı yok.`,"lab.subjectKind":`Tür`,"lab.observationCount":`Gözlemler`,"lab.eventCount":`Olaylar`,"lab.verdictCount":`Kararlar`,"lab.subjectCount":`Özneler`,"lab.builtAt":`Oluşturulma`,"lab.loading":`Uyumluluk kanıtları yükleniyor…`,"lab.loadMore":`Daha fazla yükle`,"lab.detailTitle":`Karar ayrıntısı`,"lab.detailClose":`Kapat`,"lab.detailSubject":`Özne`,"lab.detailObservations":`Gözlemler`,"lab.detailEvents":`Kanıt olayları`,"lab.detailArtifacts":`Artefakt meta verileri`,"lab.detailLoadFailed":`Karar ayrıntısı yüklenemedi`,"lab.refresh":`Yenile`,"lab.verdict.UNKNOWN":`Bilinmiyor`,"lab.verdict.CLAIMED":`İddia edildi`,"lab.verdict.PROBED":`Problandı`,"lab.verdict.VERIFIED":`Doğrulandı`,"lab.verdict.DEGRADED":`Kısıtlı`,"lab.verdict.BLOCKED":`Engellendi`,"lab.verdict.UNSUPPORTED":`Desteklenmiyor`,"lab.layer.protocol_conformance":`Protokol uygunluğu`,"lab.layer.live_route_compatibility":`Canlı rota uyumluluğu`,"lab.layer.task_effectiveness":`Görev etkinliği`},vi:{"lab.title":`Phòng thí nghiệm tương thích`,"lab.subtitle":`Ma trận kết quả tương thích chỉ đọc từ bằng chứng phép chiếu của phòng thí nghiệm.`,"lab.loadFailed":`Không thể tải dữ liệu phòng thí nghiệm tương thích`,"lab.projectionUnavailable":`Phép chiếu của phòng thí nghiệm không khả dụng. Hãy chạy kiểm tra tuân thủ hoặc đầu dò trực tiếp trước.`,"lab.projectionIncompatible":`Lược đồ phép chiếu của phòng thí nghiệm không tương thích. Hãy xây dựng lại phép chiếu.`,"lab.statusTitle":`Trạng thái phép chiếu`,"lab.matrixTitle":`Ma trận tương thích`,"lab.verdictsTitle":`Bản ghi kết quả`,"lab.filter.layer":`Lớp bằng chứng`,"lab.filter.verdict":`Kết quả`,"lab.filter.subject":`ID Chủ đề`,"lab.filter.all":`Tất cả`,"lab.col.subject":`Chủ đề`,"lab.col.layer":`Lớp`,"lab.col.suite":`Bộ kiểm thử`,"lab.col.verdict":`Kết quả`,"lab.col.asOf":`Tính đến`,"lab.col.protocol":`Tuân thủ giao thức`,"lab.col.live":`Tương thích tuyến trực tiếp`,"lab.col.task":`Hiệu quả tác vụ`,"lab.empty":`Chưa có kết quả tương thích nào trong phép chiếu.`,"lab.subjectKind":`Loại`,"lab.observationCount":`Số quan sát`,"lab.eventCount":`Số sự kiện`,"lab.verdictCount":`Số kết quả`,"lab.subjectCount":`Số đối tượng`,"lab.builtAt":`Thời điểm xây dựng`,"lab.loading":`Đang tải bằng chứng tương thích…`,"lab.loadMore":`Tải thêm`,"lab.detailTitle":`Chi tiết kết quả`,"lab.detailClose":`Đóng`,"lab.detailSubject":`Chủ đề`,"lab.detailObservations":`Các quan sát`,"lab.detailEvents":`Sự kiện bằng chứng`,"lab.detailArtifacts":`Metadata của artifact`,"lab.detailLoadFailed":`Không thể tải chi tiết kết quả`,"lab.refresh":`Làm mới`,"lab.verdict.UNKNOWN":`Không xác định`,"lab.verdict.CLAIMED":`Đã khai báo`,"lab.verdict.PROBED":`Đã thăm dò`,"lab.verdict.VERIFIED":`Đã xác minh`,"lab.verdict.DEGRADED":`Suy giảm`,"lab.verdict.BLOCKED":`Bị chặn`,"lab.verdict.UNSUPPORTED":`Không được hỗ trợ`,"lab.layer.protocol_conformance":`Tuân thủ giao thức`,"lab.layer.live_route_compatibility":`Tương thích tuyến trực tiếp`,"lab.layer.task_effectiveness":`Hiệu quả tác vụ`},pt:{"lab.title":`Laboratório de Compatibilidade`,"lab.subtitle":`Matriz de vereditos de compatibilidade somente leitura, gerada a partir das evidências da projeção do laboratório.`,"lab.loadFailed":`Não foi possível carregar os dados do laboratório de compatibilidade`,"lab.projectionUnavailable":`A projeção do laboratório não está disponível. Execute primeiro os testes de conformidade ou as sondagens ao vivo.`,"lab.projectionIncompatible":`O esquema da projeção do laboratório é incompatível. Reconstrua a projeção.`,"lab.statusTitle":`Status da projeção`,"lab.matrixTitle":`Matriz de compatibilidade`,"lab.verdictsTitle":`Registros de veredito`,"lab.filter.layer":`Camada de evidência`,"lab.filter.verdict":`Veredito`,"lab.filter.subject":`ID do sujeito`,"lab.filter.all":`Todos`,"lab.col.subject":`Sujeito`,"lab.col.layer":`Camada`,"lab.col.suite":`Suíte`,"lab.col.verdict":`Veredito`,"lab.col.asOf":`Data de referência`,"lab.col.protocol":`Conformidade de protocolo`,"lab.col.live":`Compatibilidade da rota ao vivo`,"lab.col.task":`Eficácia nas tarefas`,"lab.empty":`Ainda não há vereditos de compatibilidade na projeção.`,"lab.subjectKind":`Tipo`,"lab.observationCount":`Observações`,"lab.eventCount":`Eventos`,"lab.verdictCount":`Vereditos`,"lab.subjectCount":`Sujeitos`,"lab.builtAt":`Gerada em`,"lab.loading":`Carregando evidências de compatibilidade…`,"lab.loadMore":`Carregar mais`,"lab.detailTitle":`Detalhes do veredito`,"lab.detailClose":`Fechar`,"lab.detailSubject":`Sujeito`,"lab.detailObservations":`Observações`,"lab.detailEvents":`Eventos de evidência`,"lab.detailArtifacts":`Metadados dos artefatos`,"lab.detailLoadFailed":`Não foi possível carregar os detalhes do veredito`,"lab.refresh":`Atualizar`,"lab.verdict.UNKNOWN":`Desconhecido`,"lab.verdict.CLAIMED":`Declarado`,"lab.verdict.PROBED":`Sondado`,"lab.verdict.VERIFIED":`Verificado`,"lab.verdict.DEGRADED":`Degradado`,"lab.verdict.BLOCKED":`Bloqueado`,"lab.verdict.UNSUPPORTED":`Não suportado`,"lab.layer.protocol_conformance":`Conformidade de protocolo`,"lab.layer.live_route_compatibility":`Compatibilidade da rota ao vivo`,"lab.layer.task_effectiveness":`Eficácia nas tarefas`}},ue={en:{subjectKindUnknown:`Unknown`,"artifact.present":`Present`,"artifact.corrupt":`Corrupt`,"artifact.purged_unavailable":`Purged / unavailable`,selectVerdict:`View verdict for {subject}`,"community.title":`Community evidence`,"community.notLocalVerdict":`Untrusted read-only context. Not included in this local verdict.`,"community.bundles":`Bundles`,"community.activeRecords":`Active records`,"community.revokedRecords":`Revoked records`},de:{subjectKindUnknown:`Unbekannt`,"artifact.present":`Vorhanden`,"artifact.corrupt":`Beschädigt`,"artifact.purged_unavailable":`Gelöscht / nicht verfügbar`,selectVerdict:`Urteil für {subject} anzeigen`,"community.title":`Community-Evidenz`,"community.notLocalVerdict":`Nicht vertrauenswürdiger Nur-Lese-Kontext. Nicht Teil dieses lokalen Urteils.`,"community.bundles":`Pakete`,"community.activeRecords":`Aktive Einträge`,"community.revokedRecords":`Widerrufene Einträge`},fr:{subjectKindUnknown:`Inconnu`,"artifact.present":`Présent`,"artifact.corrupt":`Corrompu`,"artifact.purged_unavailable":`Purgé / indisponible`,selectVerdict:`Afficher le verdict pour {subject}`,"community.title":`Données de la communauté`,"community.notLocalVerdict":`Contexte non fiable en lecture seule. Non inclus dans ce verdict local.`,"community.bundles":`Lots`,"community.activeRecords":`Enregistrements actifs`,"community.revokedRecords":`Enregistrements révoqués`},ko:{subjectKindUnknown:`알 수 없음`,"artifact.present":`있음`,"artifact.corrupt":`손상됨`,"artifact.purged_unavailable":`삭제됨 / 사용할 수 없음`,selectVerdict:`{subject}의 판정 보기`,"community.title":`커뮤니티 증거`,"community.notLocalVerdict":`신뢰되지 않는 읽기 전용 컨텍스트입니다. 이 로컬 판정에는 포함되지 않습니다.`,"community.bundles":`번들`,"community.activeRecords":`활성 레코드`,"community.revokedRecords":`폐기된 레코드`},zh:{subjectKindUnknown:`未知`,"artifact.present":`存在`,"artifact.corrupt":`已损坏`,"artifact.purged_unavailable":`已清除 / 不可用`,selectVerdict:`查看 {subject} 的判定`,"community.title":`社区证据`,"community.notLocalVerdict":`不受信任的只读上下文。不计入此本地判定。`,"community.bundles":`证据包`,"community.activeRecords":`有效记录`,"community.revokedRecords":`已撤销记录`},"zh-TW":{subjectKindUnknown:`未知`,"artifact.present":`存在`,"artifact.corrupt":`已損壞`,"artifact.purged_unavailable":`已清除 / 不可用`,selectVerdict:`查看 {subject} 的判定`,"community.title":`社群證據`,"community.notLocalVerdict":`不受信任的唯讀脈絡。不計入此本地判定。`,"community.bundles":`證據包`,"community.activeRecords":`有效記錄`,"community.revokedRecords":`已撤銷記錄`},ru:{subjectKindUnknown:`Неизвестно`,"artifact.present":`Доступен`,"artifact.corrupt":`Повреждён`,"artifact.purged_unavailable":`Удалён / недоступен`,selectVerdict:`Открыть вердикт для {subject}`,"community.title":`Данные сообщества`,"community.notLocalVerdict":`Недоверенный контекст только для чтения. Не входит в этот локальный вердикт.`,"community.bundles":`Пакеты`,"community.activeRecords":`Активные записи`,"community.revokedRecords":`Отозванные записи`},ja:{subjectKindUnknown:`不明`,"artifact.present":`存在`,"artifact.corrupt":`破損`,"artifact.purged_unavailable":`削除済み / 利用不可`,selectVerdict:`{subject} の判定を表示`,"community.title":`コミュニティ証拠`,"community.notLocalVerdict":`信頼されていない読み取り専用コンテキストです。このローカル判定には含まれません。`,"community.bundles":`バンドル`,"community.activeRecords":`有効なレコード`,"community.revokedRecords":`取り消されたレコード`},tr:{subjectKindUnknown:`Bilinmiyor`,"artifact.present":`Mevcut`,"artifact.corrupt":`Bozuk`,"artifact.purged_unavailable":`Temizlenmiş / kullanılamıyor`,selectVerdict:`{subject} için kararı görüntüle`,"community.title":`Topluluk kanıtı`,"community.notLocalVerdict":`Güvenilmeyen salt okunur bağlam. Bu yerel karara dahil değildir.`,"community.bundles":`Paketler`,"community.activeRecords":`Etkin kayıtlar`,"community.revokedRecords":`Geri çekilen kayıtlar`},vi:{subjectKindUnknown:`Không xác định`,"artifact.present":`Có sẵn`,"artifact.corrupt":`Hỏng`,"artifact.purged_unavailable":`Đã xóa / không khả dụng`,selectVerdict:`Xem kết quả cho {subject}`,"community.title":`Bằng chứng cộng đồng`,"community.notLocalVerdict":`Ngữ cảnh chỉ đọc không đáng tin cậy. Không được đưa vào kết quả cục bộ này.`,"community.bundles":`Gói bằng chứng`,"community.activeRecords":`Bản ghi đang hoạt động`,"community.revokedRecords":`Bản ghi đã thu hồi`},pt:{subjectKindUnknown:`Desconhecido`,"artifact.present":`Presente`,"artifact.corrupt":`Corrompido`,"artifact.purged_unavailable":`Removido / indisponível`,selectVerdict:`Ver veredito de {subject}`,"community.title":`Evidências da comunidade`,"community.notLocalVerdict":`Contexto somente leitura não confiável. Não incluído neste veredito local.`,"community.bundles":`Pacotes`,"community.activeRecords":`Registros ativos`,"community.revokedRecords":`Registros revogados`}};function de(e,t,n){let r=ue[e][t];if(n)for(let[e,t]of Object.entries(n))r=r.split(`{${e}}`).join(String(t));return r}function w(e,t){return{...t,...le[e]}}var T={en:w(`en`,ee),de:w(`de`,S),fr:w(`fr`,C),ko:w(`ko`,te),zh:w(`zh`,ne),"zh-TW":w(`zh-TW`,re),ru:w(`ru`,ie),ja:w(`ja`,ae),tr:w(`tr`,oe),vi:w(`vi`,se),pt:w(`pt`,ce)};function fe(e){return T[e][`lang.nativeName`]}function pe(e,t){return T[e][t]}var me=[{code:`en`,htmlLang:`en`},{code:`de`,htmlLang:`de`},{code:`fr`,htmlLang:`fr`},{code:`ko`,htmlLang:`ko`},{code:`zh`,htmlLang:`zh-CN`},{code:`zh-TW`,htmlLang:`zh-TW`},{code:`ru`,htmlLang:`ru`},{code:`ja`,htmlLang:`ja`},{code:`tr`,htmlLang:`tr`},{code:`vi`,htmlLang:`vi`},{code:`pt`,htmlLang:`pt-BR`}],he=`ocx-lang`,E=null;function D(){try{let e=localStorage.getItem(he);if(e===`en`||e===`de`||e===`fr`||e===`ko`||e===`zh`||e===`zh-TW`||e===`ru`||e===`ja`||e===`tr`||e===`vi`||e===`pt`)return e}catch{}let e=typeof navigator<`u`&&navigator?.language?navigator.language.toLowerCase():`en`;return e.startsWith(`de`)?`de`:e.startsWith(`fr`)?`fr`:e.startsWith(`ko`)?`ko`:e.startsWith(`zh`)?e.includes(`tw`)||e.includes(`hk`)||e.includes(`mo`)||e.includes(`hant`)?`zh-TW`:`zh`:e.startsWith(`ru`)?`ru`:e.startsWith(`ja`)?`ja`:e.startsWith(`tr`)?`tr`:e.startsWith(`vi`)?`vi`:e.startsWith(`pt`)?`pt`:`en`}function ge(){return E??D()}function _e(e){E=e}var ve=(0,_.createContext)(null);function ye(e,t){if(!t)return e;let n=e;for(let e of Object.keys(t))n=n.split(`{${e}}`).join(String(t[e]));return n}function be(){let e=(0,_.useContext)(ve);if(!e)throw Error(`useI18n must be used within LanguageProvider`);return e}function xe(){return be().t}var Se=`opencodex-admin-token-dialog`,Ce=`OpenCodex`,we=`https://opencodex.me/guides/web-dashboard/#finding-the-admin-token`;function Te(e,t=ge()){let n=T[t],r=n[`auth.adminTokenTitle`];return new Promise(t=>{let i=document.activeElement instanceof HTMLElement?document.activeElement:null,a=!1,o=document.createElement(`dialog`);o.id=Se,o.className=`modal-overlay`,o.setAttribute(`aria-labelledby`,`${Se}-title`);let s=document.createElement(`form`);s.className=`modal-card`,s.method=`post`,s.action=window.location.href,s.autocomplete=`on`;let c=document.createElement(`div`);c.className=`modal-head`;let l=document.createElement(`h3`);l.id=`${Se}-title`,l.textContent=r,c.append(l);let u=document.createElement(`div`),d=document.createElement(`label`);d.className=`field-label`,d.htmlFor=`${Se}-username`,d.textContent=n[`auth.adminAccountLabel`];let f=document.createElement(`input`);f.id=d.htmlFor,f.className=`input`,f.type=`text`,f.name=`username`,f.autocomplete=`username`,f.value=Ce,f.readOnly=!0,u.append(d,f);let p=document.createElement(`div`);p.style.marginTop=`var(--space-4)`;let m=document.createElement(`label`);m.className=`field-label`,m.htmlFor=`${Se}-password`,m.textContent=n[`auth.adminTokenFieldLabel`];let h=document.createElement(`input`);h.id=m.htmlFor,h.className=`input`,h.type=`password`,h.name=`password`,h.autocomplete=`current-password`,h.required=!0,h.spellcheck=!1,h.autocapitalize=`none`,p.append(m,h);let g=document.createElement(`p`);g.className=`hint`,g.style.marginTop=`var(--space-2)`,g.textContent=n[`auth.adminTokenHelp`];let _=document.createElement(`a`);_.className=`text-control`,_.href=we,_.target=`_blank`,_.rel=`noreferrer`,_.style.color=`var(--accent)`,_.textContent=n[`auth.adminTokenDocsLink`],g.append(` `,_),p.append(g);let v=document.createElement(`div`);v.className=`notice notice-err`,v.setAttribute(`role`,`alert`),v.hidden=!0;let y=document.createElement(`div`);y.className=`modal-actions`;let b=document.createElement(`button`);b.type=`button`,b.className=`btn btn-ghost`,b.textContent=n[`common.cancel`];let x=document.createElement(`button`);x.type=`submit`,x.className=`btn btn-primary`,x.textContent=n[`common.ok`],y.append(b,x),s.append(c,u,p,v,y),o.append(s);let ee=e=>{v.textContent=e??``,v.hidden=e===null},S=e=>{a||(a=!0,o.open&&o.close(),o.remove(),i?.focus(),t(e))};s.addEventListener(`submit`,t=>{t.preventDefault();let r=h.value.trim();r?(h.disabled=!0,x.disabled=!0,ee(null),e(r).then(e=>{a||(e===`accepted`?S(r):(h.value=``,h.disabled=!1,x.disabled=!1,ee(e===`rejected`?n[`auth.adminTokenRejected`]:n[`auth.adminTokenUnavailable`]),h.focus()))}).catch(()=>{a||(h.value=``,h.disabled=!1,x.disabled=!1,ee(n[`auth.adminTokenUnavailable`]),h.focus())})):(h.value=``,h.reportValidity())}),b.addEventListener(`click`,()=>S(null)),o.addEventListener(`cancel`,e=>{e.preventDefault(),S(null)}),document.body.append(o),typeof o.showModal==`function`?o.showModal():o.setAttribute(`open`,``),queueMicrotask(()=>h.focus())})}function Ee(e){let t=new AbortController;if(typeof AbortSignal<`u`&&typeof AbortSignal.any==`function`&&typeof AbortSignal.timeout==`function`)return{controller:t,signal:AbortSignal.any([t.signal,AbortSignal.timeout(e)]),clear:()=>void 0};let n=setTimeout(()=>t.abort(),e);return{controller:t,signal:t.signal,clear:()=>clearTimeout(n)}}async function De(e,t,n){t?.throwIfAborted();let r=Ee(e),i=()=>r.controller.abort(t?.reason);t?.addEventListener(`abort`,i,{once:!0});let a,o=new Promise((e,t)=>{a=()=>t(r.signal.reason??new DOMException(`Aborted`,`AbortError`)),r.signal.addEventListener(`abort`,a,{once:!0})});try{let e=(async()=>(r.signal.throwIfAborted(),n(r.signal)))(),t=await Promise.race([e,o]);return r.signal.throwIfAborted(),t}finally{r.clear(),t?.removeEventListener(`abort`,i),r.signal.removeEventListener(`abort`,a)}}function Oe(){if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="opencodex-runtime-role"]`)?.getAttribute(`content`)?.trim();return e===`standalone`||e===`hub`||e===`client`?e:null}function ke(){return Oe()===`standalone`}function Ae(){return Oe()===`client`}function je(){if(typeof document<`u`){let e=document.querySelector(`meta[name="opencodex-management-auth-required"]`)?.getAttribute(`content`)?.trim();if(e===`1`)return!0;if(e===`0`)return!1}return Oe()===`hub`}function Me(e){return e.replace(/\/+$/,``)}function Ne(e){return new URL(e||`/`,window.location.href)}function Pe(e){try{let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`||t.username||t.password||t.pathname!==`/`||t.search||t.hash?null:t.origin}catch{return null}}function Fe(e,t,n,r){let i=Me(t);return{id:e,baseUrl:i,serverOrigin:n,bootstrapPath:`${i}/opencodex-session`,transport:r}}function Ie(e){let t=Ne(e),n=Me(e);return{connected:!1,machine:Fe(`machine`,n,t.origin,`same-origin`),shared:Fe(`shared`,n,t.origin,`same-origin`)}}function Le(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return t.mode===`client`&&t.connected===!0&&t.protocolVersion===1&&(t.managementTransport===`direct`||t.managementTransport===`relay`)&&typeof t.machineBase==`string`&&typeof t.sharedBase==`string`&&typeof t.sharedServerOrigin==`string`&&typeof t.apiKeyId==`string`&&t.apiKeyId.trim().length>0&&typeof t.connectedAt==`string`&&(t.catalogSyncedAt===void 0||typeof t.catalogSyncedAt==`string`)}function Re(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e;if(typeof t.linkId!=`string`||!/^lnk_[0-9a-f]{16}$/.test(t.linkId))return;let n=typeof t.home==`string`&&t.home.trim()&&t.home.length<=255?t.home.trim():null;return{linkId:t.linkId,home:n}}function ze(e,t){if(!Le(t))throw TypeError(`machine status response is invalid`);let n=Ie(e),r=Pe(t.machineBase),i=Pe(t.sharedServerOrigin);if(!r||r!==n.machine.serverOrigin||!i)throw TypeError(`machine status target origins are invalid`);let a;try{a=new URL(t.sharedBase)}catch{throw TypeError(`machine status shared target is invalid`)}if(a.username||a.password||a.search||a.hash)throw TypeError(`machine status shared target is invalid`);if(t.managementTransport===`direct`){if(a.origin!==i||a.pathname!==`/`)throw TypeError(`machine status direct target is inconsistent`)}else if(a.origin!==r||a.pathname!==`/api/machine/hub-relay`)throw TypeError(`machine status relay target is inconsistent`);let o=Fe(`machine`,Me(e),r,`same-origin`),s=t.managementTransport===`relay`?Fe(`shared`,`${Me(e)}/api/machine/hub-relay`,i,`relay`):Fe(`shared`,i,i,`direct`),c=Re(t.link);return{connected:!0,machine:o,shared:s,apiKeyId:t.apiKeyId,catalogSyncedAt:t.catalogSyncedAt,...c?{link:c}:{}}}function Be(e,t){return t[e].baseUrl}async function Ve(e,t){let n=Ie(e);if(Oe()!==`client`)return n;let r;try{r=await fetch(`${n.machine.baseUrl}/api/machine/status`,{signal:t,cache:`no-store`})}catch(e){throw Error(`local machine plane unavailable`,{cause:e})}if(r.status===404)return n;if(!r.ok)throw Error(`local machine plane refused discovery (${r.status})`);let i=await r.json().catch(()=>null);if(!Le(i))throw Error(`local machine plane returned invalid status`);return ze(e,i)}var He=`opencodex:session-unavailable`,Ue=`opencodex:session-changed`,We=`opencodex-api-token`,Ge=`/api/combos`,Ke=1e4,qe=15e3,Je=`X-OpenCodex-Machine-Session`,Ye=`X-OpenCodex-Machine-GUI-Origin`,Xe=`X-OpenCodex-Machine-CSRF-Token`,Ze=!1,Qe=null,$e=null,et=Te,tt=Ke,nt=qe,rt=new Map,it=new WeakMap;function at(e,t){if(typeof window>`u`)return;let n=window.CustomEvent??(typeof CustomEvent==`function`?CustomEvent:null);if(n)try{window.dispatchEvent(new n(t,{detail:{plane:e}}))}catch{}}function ot(e){e.generation={},e.resolutionInFlight=null}function st(e){return{state:e,generation:e.generation,token:e.session.token}}function ct(e,t){return rt.get(e)===t.state&&t.state.generation===t.generation}function lt(e){return e.active&&!e.state.logoutBarrier&&ct(e.plane,e)}function ut(e,t,n){if(n&&!lt(n))return;let r=e.session.token!==t.token;ot(e),e.session=t,n&&(n.generation=e.generation),r&&at(e.target.id,Ue)}function dt(){return{token:null,csrfToken:null,browserOrigin:null,serverOrigin:null}}function ft(e,t,n){let r=dt(),i=n??it.get(e.session);i&&it.set(r,i),ut(e,r,t)}function pt(){return $e||ht(Ie(``)),$e}function mt(e,t){return e.baseUrl===t.baseUrl&&e.serverOrigin===t.serverOrigin&&e.transport===t.transport}function ht(e){$e=e;for(let t of[`machine`,`shared`]){let n=rt.get(t);n&&!mt(n.target,e[t])&&ut(n,dt()),n&&mt(n.target,e[t])?(n.target.bootstrapPath!==e[t].bootstrapPath&&(ot(n),n.logoutBarrier=null,it.delete(n.session)),n.target=e[t]):rt.set(t,{target:e[t],session:dt(),generation:{},logoutBarrier:null,resolutionInFlight:null,promptCancelled:!1})}}function O(e){return pt(),rt.get(e)}function k(e,t){let n=O(e);!n.logoutBarrier&&t!==null&&n.session.token===t&&ft(n)}function gt(e,t,n,r,i,a,o){if(a&&!lt(a))return!1;let s=O(e);if(!t?.startsWith(`ocx_session_`)||!n||r!==window.location.origin||i!==s.target.serverOrigin)return ft(s,a,o),!1;let c={token:t,csrfToken:n,browserOrigin:r,serverOrigin:i};return o&&it.set(c,o),a||(s.logoutBarrier=null),ut(s,c,a),a&&!lt(a)?!1:(s.promptCancelled=!1,!0)}function _t(e){return!!O(e).session.token?.startsWith(`ocx_session_`)}async function vt(e){let t=O(e),n=t.logoutBarrier??{pending:0,completed:!1};if(t.logoutBarrier=n,ot(t),it.delete(t.session),!t.session.token?.startsWith(`ocx_session_`))return n.completed=!0,!1;n.pending++;let r=Ee(Ke);try{return(await wt(e,`${t.target.baseUrl}/api/session/logout`,{method:`POST`,signal:r.signal})).ok?(n.completed=!0,rt.get(e)===t&&t.logoutBarrier===n&&(ut(t,dt()),t.promptCancelled=!1),!0):!1}catch{return!1}finally{r.clear(),n.pending--,!n.pending&&!n.completed&&t.logoutBarrier===n&&(t.logoutBarrier=null)}}function yt(e){let t=document.querySelector(`meta[name="${e}"]`),n=t?.content.trim()||null;return t?.remove(),n}function bt(){let e={token:yt(`opencodex-session-token`),csrf:yt(`opencodex-session-csrf`),browser:yt(`opencodex-session-origin`),server:yt(`opencodex-session-server-origin`)};for(let t of[`machine`,`shared`])O(t).target.serverOrigin===e.server&>(t,e.token,e.csrf,e.browser,e.server)}function xt(e,t){for(let n of e.match(/<meta\b[^>]*>/gi)??[])if(n.match(/\bname=["']([^"']+)["']/i)?.[1]===t)return n.match(/\bcontent=["']([^"']*)["']/i)?.[1]?.trim()||null;return null}function St(e,t,n,r){return gt(e,xt(t,`opencodex-session-token`),xt(t,`opencodex-session-csrf`),xt(t,`opencodex-session-origin`),xt(t,`opencodex-session-server-origin`),n,r)}function Ct(e){let t=O(e),n=st(t),r=t.session,i={},a=()=>{let t=O(e);it.get(t.session)===i&&(it.delete(t.session),ot(t)),r=null};return{install(a){return!r||!ct(e,n)?!1:St(e,a,void 0,i)&&rt.get(e)===t&&it.get(t.session)===i},commit:a,rollback(){let n=O(e);r&&mt(n.target,t.target)&&it.get(n.session)===i&&ut(n,r),a()}}}function wt(e,t,n){let[r,i]=At(e,t,n);return(Qe??window.fetch.bind(window))(r,i)}function Tt(){try{sessionStorage.removeItem(We)}catch{}}function Et(e){return new URL(e.baseUrl||`/`,window.location.href)}function Dt(e,t){let n=Et(e);if(t.origin!==n.origin)return!1;let r=n.pathname.replace(/\/$/,``);return r===``||t.pathname===r||t.pathname.startsWith(`${r}/`)}function A(e,t){if(!Dt(e,t))return null;let n=Et(e).pathname.replace(/\/$/,``);return t.pathname.slice(n.length)||`/`}function Ot(e){let t;try{t=new URL(e instanceof Request?e.url:String(e),window.location.href)}catch{return null}let n=pt();return t.href===new URL(n.shared.bootstrapPath,window.location.href).href?{plane:`shared`,bootstrap:!0}:n.shared.transport===`relay`&&Dt(n.shared,t)?{plane:`shared`,bootstrap:!1}:A(n.machine,t)?.startsWith(`/api/machine/`)?{plane:`machine`,bootstrap:!1}:A(n.shared,t)?.startsWith(`/api/`)?{plane:`shared`,bootstrap:!1}:t.href===new URL(n.machine.bootstrapPath,window.location.href).href?{plane:`machine`,bootstrap:!0}:null}function kt(e,t,n,r){let i=O(e),a=new Headers(n?.headers??(t instanceof Request?t.headers:void 0)),o=r===void 0?i.session.token:r,s=(n?.method??(t instanceof Request?t.method:`GET`)).toUpperCase();if(o&&a.set(`X-OpenCodex-API-Key`,o),o?.startsWith(`ocx_session_`)&&i.session.browserOrigin&&i.session.csrfToken&&(a.set(`X-OpenCodex-GUI-Origin`,i.session.browserOrigin),s!==`GET`&&s!==`HEAD`&&a.set(`X-OpenCodex-CSRF-Token`,i.session.csrfToken)),e===`shared`&&i.target.transport===`relay`){let e=O(`machine`).session;e.token&&a.set(Je,e.token),e.browserOrigin&&a.set(Ye,e.browserOrigin),s!==`GET`&&s!==`HEAD`&&e.csrfToken&&a.set(Xe,e.csrfToken)}return a}function At(e,t,n,r){let i=kt(e,t,n,r);return t instanceof Request?[new Request(t,{headers:i}),n?{...n,headers:i}:void 0]:[t,{...n,headers:i}]}async function jt(e,t,n=tt){if(!Qe||!lt(e))return{kind:`failed`};let{plane:r,state:i}=e,a=Qe;try{return await De(n,t,async t=>{let[n,o]=At(r,i.target.bootstrapPath,{cache:`no-store`,signal:t},null),s=await a(n,o);if(t.aborted||!lt(e))return{kind:`failed`};if(!s.ok)return s.status>=400&&s.status<500?{kind:`unavailable`}:{kind:`failed`};let c=await s.text();return t.aborted||!lt(e)?{kind:`failed`}:St(r,c,e)?{kind:`minted`,token:i.session.token}:{kind:`unavailable`}})}catch{return{kind:`failed`}}}async function Mt(e,t){let n=O(e),r={plane:e,state:n,generation:n.generation,active:!0};try{return(await jt(r,t,5e3)).kind===`minted`}finally{r.active=!1}}async function Nt(e,t){if(!Qe)return`unavailable`;try{let[n,r]=At(e,`${O(e).target.baseUrl}${Ge}`,{cache:`no-store`},t),i=await Qe(n,r);return i.status===401?`rejected`:i.ok?`accepted`:`unavailable`}catch{return`unavailable`}}async function Pt(e,t,n){let r=O(e);if(n?.aborted||r.logoutBarrier)return null;if(r.promptCancelled)return st(r);if(!r.resolutionInFlight){let n={plane:e,state:r,generation:r.generation,active:!0},i=(async()=>{let i=r.session.token;if(i&&i!==t)return st(r);let a,o=await Promise.race([jt(n),new Promise(e=>{a=setTimeout(()=>{n.active=!1,e({kind:`failed`})},nt)})]).finally(()=>clearTimeout(a));if(!ct(e,n))return null;if(o.kind===`failed`)return st(r);if(!lt(n))return null;if(o.kind===`minted`)return st(r);if(!je())return r.promptCancelled=!0,st(r);let s=await et(async t=>{if(!lt(n))return`unavailable`;let r=await Nt(e,t);return lt(n)?r:`unavailable`});return lt(n)?s?(ut(r,{token:s,csrfToken:null,browserOrigin:null,serverOrigin:r.target.serverOrigin},n),lt(n)?st(r):null):(r.promptCancelled=!0,st(r)):null})().finally(()=>{n.active=!1,r.resolutionInFlight===i&&(r.resolutionInFlight=null)});r.resolutionInFlight=i}if(!n)return r.resolutionInFlight;let i,a=new Promise(e=>{i=()=>e(null),n.addEventListener(`abort`,i,{once:!0})});return Promise.race([r.resolutionInFlight,a]).finally(()=>{i&&n.removeEventListener(`abort`,i)})}function Ft(){if(Ze)return;Ze=!0,Tt(),pt(),bt();let e=window.fetch.bind(window);Qe=e,window.fetch=async(t,n)=>{let r=Ot(t);if(!r)return e(t,n);let i=O(r.plane),a=i.generation,o=i.session.token,s=(n?.method??(t instanceof Request?t.method:`GET`)).toUpperCase(),c=r.bootstrap&&s===`POST`,[l,u]=At(r.plane,t,n,c?null:void 0),d=await e(l,u);if(r.bootstrap||d.status!==401||rt.get(r.plane)!==i||i.logoutBarrier)return d;let f=i.session.token;if(f&&(f!==o||i.generation!==a)){let a=st(i),[o,s]=At(r.plane,t,n),c=await e(o,s);if(!ct(r.plane,a)||c.status!==401)return c;k(r.plane,f)}else{if(i.generation!==a&&!i.resolutionInFlight)return d;k(r.plane,o)}let p=n?.signal??(t instanceof Request?t.signal:void 0),m=await Pt(r.plane,o,p??void 0);if(!m||!ct(r.plane,m)||p?.aborted)return d;if(!m.token)return!p?.aborted&&!_t(r.plane)&&at(r.plane,He),d;let[h,g]=At(r.plane,t,n,m.token),_=await e(h,g);return _.status===401&&ct(r.plane,m)&&(k(r.plane,m.token),!p?.aborted&&!_t(r.plane)&&at(r.plane,He)),_}}function It(e,t){let n=new URL(e);return![`http:`,`https:`].includes(n.protocol)||n.pathname!==`/v1/audio/transcriptions`||n.username||n.password||n.search||n.hash||t.method!==`POST`?Promise.reject(Error(`Invalid audio upload destination`)):(Qe??fetch)(n.href,{...t,credentials:`omit`,redirect:`error`})}var Lt=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Rt=o(((e,t)=>{t.exports=Lt()})),j=Rt();function zt({children:e}){let[t,n]=(0,_.useState)(()=>{let e=D();return _e(e),e}),r=(0,_.useCallback)(e=>{_e(e),n(e)},[]);(0,_.useEffect)(()=>{let e=me.find(e=>e.code===t)??me[0];document.documentElement.lang=e.htmlLang;try{localStorage.setItem(`ocx-lang`,t)}catch{}},[t]);let i=(0,_.useCallback)((e,n)=>ye(T[t][e]??ee[e]??e,n),[t]),a=(0,_.useMemo)(()=>({locale:t,setLocale:r,t:i}),[t,i]);return(0,j.jsx)(ve.Provider,{value:a,children:e})}function Bt({k:e,cmd:t,vars:n}){let{t:r}=be(),[i,a=``]=r(e,n).split(`{cmd}`);return(0,j.jsxs)(j.Fragment,{children:[i,(0,j.jsx)(`code`,{className:`chip`,children:t}),a]})}var Vt=`modulepreload`,Ht=function(e){return`/`+e},Ut={},Wt=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=Ht(t,n),t=s(t),t in Ut)return;Ut[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Vt,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Gt=window.location.hash.split(`?`)[0]===`#/tray`,Kt=(0,_.lazy)(()=>Wt(Gt?()=>import(`./Tray-DbTNc_88.js`):()=>import(`./App-DgxkE6Md.js`),__vite__mapDeps([0,1,2])));Gt&&Ft(),v.createRoot(document.getElementById(`root`)).render((0,j.jsx)(_.StrictMode,{children:(0,j.jsx)(zt,{children:(0,j.jsx)(_.Suspense,{fallback:null,children:(0,j.jsx)(Kt,{})})})}));export{u as A,be as C,fe as D,pe as E,de as O,ge as S,T,Oe as _,Ct as a,De as b,wt as c,Ft as d,vt as f,ke as g,Ae as h,He as i,c as j,m as k,It as l,Ve as m,Rt as n,Mt as o,Be as p,Ue as r,ht as s,Bt as t,_t as u,Ie as v,xe as w,me as x,Ee as y};
|